+value |
+string |
+
+ Descriptor value.
+
|
No
diff --git a/networking/v1alpha3/virtual_service.proto b/networking/v1alpha3/virtual_service.proto
index 2ff9f2dde7f..e4e7f7a16a8 100644
--- a/networking/v1alpha3/virtual_service.proto
+++ b/networking/v1alpha3/virtual_service.proto
@@ -1261,6 +1261,130 @@ message HTTPRouteDestination {
// Header manipulation rules
Headers headers = 7;
+
+ // Local rate limiting.
+ HTTPLocalRateLimit local_rate_limit = 8;
+
+ // Global rate limiting.
+ HTTPGlobalRateLimit global_rate_limit = 9;
+}
+
+// HTTPGlobalRateLimit used to rate limit the HTTP requests calling the rate limit service.
+message HTTPGlobalRateLimit {
+ // The rate limit domain to use when calling the rate limit service.
+ string domain = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // The timeout in milliseconds for the rate limit service RPC.
+ // If set, it will override the global value from mesh config.
+ google.protobuf.Duration timeout = 2;
+
+ // The filter’s behaviour in case the rate limiting service does not respond back.
+ // When it is set to true, Envoy will allow traffic in case of communication failure
+ // between rate limiting service and the proxy.
+ // If set, it will override the global value from mesh config.
+ bool fail_open = 3;
+
+ // A list of actions that are to be applied for this rate limit configuration.
+ // Order matters as the actions are processed sequentially
+ // and the descriptor is composed by appending descriptor entries in that sequence.
+ repeated RateLimitAction actions = 4 [(google.api.field_behavior) = REQUIRED];
+}
+
+// RateLimitAction describes how to generate descriptor entries.
+message RateLimitAction{
+ oneof action {
+ // Rate limit on request headers.
+ RequestHeader request_header = 1;
+
+ // Rate limit on remote address.
+ // The following descriptor entry is appended to the descriptor and is populated using the trusted address from x-forwarded-for:
+ // `("remote_address", "")`
+ bool remote_address = 2;
+
+ // Rate limit on the existence of request headers.
+ HeaderMatch header_match = 3;
+
+ // Rate limit on a generic key.
+ GenericKey generic_key = 4;
+ }
+
+ // The following descriptor entry is appended when a header contains a key that matches the header_name:
+ // `("", "")`
+ message RequestHeader{
+ // The header name to be queried from the request headers.
+ // The header’s value is used to populate the value of the descriptor entry for the descriptor_key
+ string header_name = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // The key to use in the descriptor entry.
+ string descriptor_key = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // If set to true, Envoy skips the descriptor while calling rate limiting service when header is not present in the request.
+ // By default it is true and skips calling rate limiting service if this header does not exist.
+ string skip_if_absent = 3;
+ }
+
+ // The following descriptor entry is appended to the descriptor:
+ // `("header_match", "")`
+ message HeaderMatch{
+ // The value to use in the descriptor entry.
+ string descriptor_value = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // If set to true, the action will append a descriptor entry when the request matches the headers.
+ // If set to false, the action will append a descriptor entry when the request does not match the headers.
+ // The default value is true.
+ string expect_match = 2;
+
+ // The header name to be queried from the request headers.
+ string header_name = 3 [(google.api.field_behavior) = REQUIRED];
+
+ // Specifies how the header value match will be performed to route the request.
+ oneof match_type {
+ // exact string match on the header value
+ string exact = 4;
+
+ // prefix-based match
+ string prefix = 5;
+
+ // RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
+ string regex = 6;
+ }
+ }
+
+ // The following descriptor entry is appended to the descriptor:
+ // `("generic_key", "")`
+ message GenericKey{
+ // An optional key to use in the descriptor entry.
+ // If not set it defaults to ‘generic_key’ as the descriptor key.
+ string descriptor_key = 1;
+
+ // The value to use in the descriptor entry.
+ string descriptor_value = 2 [(google.api.field_behavior) = REQUIRED];
+ }
+}
+
+// HTTPLocalRateLimit used to rate limit the HTTP requests locally
+message HTTPLocalRateLimit {
+ // StatusCode allows for a custom HTTP response status code to the downstream client
+ // when the request has been rate limited. Defaults to 429 (TooManyRequests).
+ int32 status_code = 1;
+
+ // The token bucket configuration to use for rate limiting requests.
+ TokenBucket token_bucket = 2 [(google.api.field_behavior) = REQUIRED];
+}
+
+// TokenBucket used for local rate limiting
+message TokenBucket {
+ // The maximum tokens that the bucket can hold.
+ uint32 max_tokens = 1;
+
+ // The number of tokens added to the bucket during each fill interval. If not specified, defaults to 1.
+ uint32 tokens_per_fill = 2;
+
+ // The fill interval that tokens are added to the bucket.
+ // During each fill interval tokens_per_fill are added to the bucket.
+ // The bucket will never contain more than max_tokens tokens.
+ // *Note*: It must be >= 50ms to avoid aggressive fills.
+ google.protobuf.Duration interval = 3;
}
// L4 routing rule weighted destination.
@@ -1273,6 +1397,53 @@ message RouteDestination {
// version. If there is only one destination in a rule, all traffic will be
// routed to it irrespective of the weight.
int32 weight = 2;
+
+ // L4 local rate limiting policy.
+ LocalRateLimit local_rate_limit = 3;
+
+ // L4 global rate limiting policy.
+ GlobalRateLimit global_rate_limit = 4;
+}
+
+// LocalRateLimit used to rate limit the L4 connections locally
+message LocalRateLimit {
+ // The token bucket configuration to use for rate limiting requests.
+ TokenBucket token_bucket = 1 [(google.api.field_behavior) = REQUIRED];
+}
+
+// GlobalRateLimit used to rate limit the L4 connections calling the global rate limit service.
+message GlobalRateLimit {
+ // The rate limit domain to use when calling the rate limit service.
+ string domain = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // The timeout for the rate limit service RPC.
+ // If set, it will override the global value from mesh config.
+ google.protobuf.Duration timeout = 2;
+
+ // The filter’s behaviour in case the rate limiting service does not respond back.
+ // When it is set to true, Envoy will allow traffic in case of communication failure
+ // between rate limiting service and the proxy.
+ // If set, it will override the global value from mesh config.
+ bool fail_open = 3;
+
+ // The rate limit descriptor list to use in the rate limit service request.
+ RateLimitDescriptor descriptors = 4 [(google.api.field_behavior) = REQUIRED];
+
+ // A RateLimitDescriptor is a list of hierarchical entries that are used by the service to
+ // determine the final rate limit key and overall allowed limit. Here are some examples of how
+ // they might be used for the domain "envoy".
+ message RateLimitDescriptor{
+ message Entry {
+ // Descriptor key.
+ string key = 1;
+
+ // Descriptor value.
+ string value = 2;
+ }
+
+ // Descriptor entries.
+ repeated Entry entries = 1 [(google.api.field_behavior) = REQUIRED];
+ }
}
// L4 connection match attributes. Note that L4 connection matching support
diff --git a/networking/v1alpha3/virtual_service_deepcopy.gen.go b/networking/v1alpha3/virtual_service_deepcopy.gen.go
index dfca279b6f7..5f0203f89b5 100644
--- a/networking/v1alpha3/virtual_service_deepcopy.gen.go
+++ b/networking/v1alpha3/virtual_service_deepcopy.gen.go
@@ -374,6 +374,153 @@ func (in *HTTPRouteDestination) DeepCopyInterface() interface{} {
return in.DeepCopy()
}
+// DeepCopyInto supports using HTTPGlobalRateLimit within kubernetes types, where deepcopy-gen is used.
+func (in *HTTPGlobalRateLimit) DeepCopyInto(out *HTTPGlobalRateLimit) {
+ p := proto.Clone(in).(*HTTPGlobalRateLimit)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPGlobalRateLimit. Required by controller-gen.
+func (in *HTTPGlobalRateLimit) DeepCopy() *HTTPGlobalRateLimit {
+ if in == nil {
+ return nil
+ }
+ out := new(HTTPGlobalRateLimit)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new HTTPGlobalRateLimit. Required by controller-gen.
+func (in *HTTPGlobalRateLimit) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
+// DeepCopyInto supports using RateLimitAction within kubernetes types, where deepcopy-gen is used.
+func (in *RateLimitAction) DeepCopyInto(out *RateLimitAction) {
+ p := proto.Clone(in).(*RateLimitAction)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RateLimitAction. Required by controller-gen.
+func (in *RateLimitAction) DeepCopy() *RateLimitAction {
+ if in == nil {
+ return nil
+ }
+ out := new(RateLimitAction)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new RateLimitAction. Required by controller-gen.
+func (in *RateLimitAction) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
+// DeepCopyInto supports using RateLimitAction_RequestHeader within kubernetes types, where deepcopy-gen is used.
+func (in *RateLimitAction_RequestHeader) DeepCopyInto(out *RateLimitAction_RequestHeader) {
+ p := proto.Clone(in).(*RateLimitAction_RequestHeader)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RateLimitAction_RequestHeader. Required by controller-gen.
+func (in *RateLimitAction_RequestHeader) DeepCopy() *RateLimitAction_RequestHeader {
+ if in == nil {
+ return nil
+ }
+ out := new(RateLimitAction_RequestHeader)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new RateLimitAction_RequestHeader. Required by controller-gen.
+func (in *RateLimitAction_RequestHeader) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
+// DeepCopyInto supports using RateLimitAction_HeaderMatch within kubernetes types, where deepcopy-gen is used.
+func (in *RateLimitAction_HeaderMatch) DeepCopyInto(out *RateLimitAction_HeaderMatch) {
+ p := proto.Clone(in).(*RateLimitAction_HeaderMatch)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RateLimitAction_HeaderMatch. Required by controller-gen.
+func (in *RateLimitAction_HeaderMatch) DeepCopy() *RateLimitAction_HeaderMatch {
+ if in == nil {
+ return nil
+ }
+ out := new(RateLimitAction_HeaderMatch)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new RateLimitAction_HeaderMatch. Required by controller-gen.
+func (in *RateLimitAction_HeaderMatch) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
+// DeepCopyInto supports using RateLimitAction_GenericKey within kubernetes types, where deepcopy-gen is used.
+func (in *RateLimitAction_GenericKey) DeepCopyInto(out *RateLimitAction_GenericKey) {
+ p := proto.Clone(in).(*RateLimitAction_GenericKey)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RateLimitAction_GenericKey. Required by controller-gen.
+func (in *RateLimitAction_GenericKey) DeepCopy() *RateLimitAction_GenericKey {
+ if in == nil {
+ return nil
+ }
+ out := new(RateLimitAction_GenericKey)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new RateLimitAction_GenericKey. Required by controller-gen.
+func (in *RateLimitAction_GenericKey) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
+// DeepCopyInto supports using HTTPLocalRateLimit within kubernetes types, where deepcopy-gen is used.
+func (in *HTTPLocalRateLimit) DeepCopyInto(out *HTTPLocalRateLimit) {
+ p := proto.Clone(in).(*HTTPLocalRateLimit)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPLocalRateLimit. Required by controller-gen.
+func (in *HTTPLocalRateLimit) DeepCopy() *HTTPLocalRateLimit {
+ if in == nil {
+ return nil
+ }
+ out := new(HTTPLocalRateLimit)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new HTTPLocalRateLimit. Required by controller-gen.
+func (in *HTTPLocalRateLimit) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
+// DeepCopyInto supports using TokenBucket within kubernetes types, where deepcopy-gen is used.
+func (in *TokenBucket) DeepCopyInto(out *TokenBucket) {
+ p := proto.Clone(in).(*TokenBucket)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenBucket. Required by controller-gen.
+func (in *TokenBucket) DeepCopy() *TokenBucket {
+ if in == nil {
+ return nil
+ }
+ out := new(TokenBucket)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new TokenBucket. Required by controller-gen.
+func (in *TokenBucket) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
// DeepCopyInto supports using RouteDestination within kubernetes types, where deepcopy-gen is used.
func (in *RouteDestination) DeepCopyInto(out *RouteDestination) {
p := proto.Clone(in).(*RouteDestination)
@@ -395,6 +542,90 @@ func (in *RouteDestination) DeepCopyInterface() interface{} {
return in.DeepCopy()
}
+// DeepCopyInto supports using LocalRateLimit within kubernetes types, where deepcopy-gen is used.
+func (in *LocalRateLimit) DeepCopyInto(out *LocalRateLimit) {
+ p := proto.Clone(in).(*LocalRateLimit)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalRateLimit. Required by controller-gen.
+func (in *LocalRateLimit) DeepCopy() *LocalRateLimit {
+ if in == nil {
+ return nil
+ }
+ out := new(LocalRateLimit)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new LocalRateLimit. Required by controller-gen.
+func (in *LocalRateLimit) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
+// DeepCopyInto supports using GlobalRateLimit within kubernetes types, where deepcopy-gen is used.
+func (in *GlobalRateLimit) DeepCopyInto(out *GlobalRateLimit) {
+ p := proto.Clone(in).(*GlobalRateLimit)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRateLimit. Required by controller-gen.
+func (in *GlobalRateLimit) DeepCopy() *GlobalRateLimit {
+ if in == nil {
+ return nil
+ }
+ out := new(GlobalRateLimit)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRateLimit. Required by controller-gen.
+func (in *GlobalRateLimit) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
+// DeepCopyInto supports using GlobalRateLimit_RateLimitDescriptor within kubernetes types, where deepcopy-gen is used.
+func (in *GlobalRateLimit_RateLimitDescriptor) DeepCopyInto(out *GlobalRateLimit_RateLimitDescriptor) {
+ p := proto.Clone(in).(*GlobalRateLimit_RateLimitDescriptor)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRateLimit_RateLimitDescriptor. Required by controller-gen.
+func (in *GlobalRateLimit_RateLimitDescriptor) DeepCopy() *GlobalRateLimit_RateLimitDescriptor {
+ if in == nil {
+ return nil
+ }
+ out := new(GlobalRateLimit_RateLimitDescriptor)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRateLimit_RateLimitDescriptor. Required by controller-gen.
+func (in *GlobalRateLimit_RateLimitDescriptor) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
+// DeepCopyInto supports using GlobalRateLimit_RateLimitDescriptor_Entry within kubernetes types, where deepcopy-gen is used.
+func (in *GlobalRateLimit_RateLimitDescriptor_Entry) DeepCopyInto(out *GlobalRateLimit_RateLimitDescriptor_Entry) {
+ p := proto.Clone(in).(*GlobalRateLimit_RateLimitDescriptor_Entry)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRateLimit_RateLimitDescriptor_Entry. Required by controller-gen.
+func (in *GlobalRateLimit_RateLimitDescriptor_Entry) DeepCopy() *GlobalRateLimit_RateLimitDescriptor_Entry {
+ if in == nil {
+ return nil
+ }
+ out := new(GlobalRateLimit_RateLimitDescriptor_Entry)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRateLimit_RateLimitDescriptor_Entry. Required by controller-gen.
+func (in *GlobalRateLimit_RateLimitDescriptor_Entry) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
// DeepCopyInto supports using L4MatchAttributes within kubernetes types, where deepcopy-gen is used.
func (in *L4MatchAttributes) DeepCopyInto(out *L4MatchAttributes) {
p := proto.Clone(in).(*L4MatchAttributes)
diff --git a/networking/v1alpha3/virtual_service_json.gen.go b/networking/v1alpha3/virtual_service_json.gen.go
index 474f22a8e20..581f09754bc 100644
--- a/networking/v1alpha3/virtual_service_json.gen.go
+++ b/networking/v1alpha3/virtual_service_json.gen.go
@@ -276,6 +276,83 @@ func (this *HTTPRouteDestination) UnmarshalJSON(b []byte) error {
return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}
+// MarshalJSON is a custom marshaler for HTTPGlobalRateLimit
+func (this *HTTPGlobalRateLimit) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for HTTPGlobalRateLimit
+func (this *HTTPGlobalRateLimit) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
+// MarshalJSON is a custom marshaler for RateLimitAction
+func (this *RateLimitAction) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for RateLimitAction
+func (this *RateLimitAction) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
+// MarshalJSON is a custom marshaler for RateLimitAction_RequestHeader
+func (this *RateLimitAction_RequestHeader) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for RateLimitAction_RequestHeader
+func (this *RateLimitAction_RequestHeader) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
+// MarshalJSON is a custom marshaler for RateLimitAction_HeaderMatch
+func (this *RateLimitAction_HeaderMatch) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for RateLimitAction_HeaderMatch
+func (this *RateLimitAction_HeaderMatch) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
+// MarshalJSON is a custom marshaler for RateLimitAction_GenericKey
+func (this *RateLimitAction_GenericKey) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for RateLimitAction_GenericKey
+func (this *RateLimitAction_GenericKey) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
+// MarshalJSON is a custom marshaler for HTTPLocalRateLimit
+func (this *HTTPLocalRateLimit) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for HTTPLocalRateLimit
+func (this *HTTPLocalRateLimit) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
+// MarshalJSON is a custom marshaler for TokenBucket
+func (this *TokenBucket) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for TokenBucket
+func (this *TokenBucket) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
// MarshalJSON is a custom marshaler for RouteDestination
func (this *RouteDestination) MarshalJSON() ([]byte, error) {
str, err := VirtualServiceMarshaler.MarshalToString(this)
@@ -287,6 +364,50 @@ func (this *RouteDestination) UnmarshalJSON(b []byte) error {
return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}
+// MarshalJSON is a custom marshaler for LocalRateLimit
+func (this *LocalRateLimit) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for LocalRateLimit
+func (this *LocalRateLimit) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
+// MarshalJSON is a custom marshaler for GlobalRateLimit
+func (this *GlobalRateLimit) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for GlobalRateLimit
+func (this *GlobalRateLimit) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
+// MarshalJSON is a custom marshaler for GlobalRateLimit_RateLimitDescriptor
+func (this *GlobalRateLimit_RateLimitDescriptor) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for GlobalRateLimit_RateLimitDescriptor
+func (this *GlobalRateLimit_RateLimitDescriptor) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
+// MarshalJSON is a custom marshaler for GlobalRateLimit_RateLimitDescriptor_Entry
+func (this *GlobalRateLimit_RateLimitDescriptor_Entry) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for GlobalRateLimit_RateLimitDescriptor_Entry
+func (this *GlobalRateLimit_RateLimitDescriptor_Entry) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
// MarshalJSON is a custom marshaler for L4MatchAttributes
func (this *L4MatchAttributes) MarshalJSON() ([]byte, error) {
str, err := VirtualServiceMarshaler.MarshalToString(this)
diff --git a/networking/v1beta1/virtual_service.gen.json b/networking/v1beta1/virtual_service.gen.json
index 7a3832e682c..98a5fb0ef1b 100644
--- a/networking/v1beta1/virtual_service.gen.json
+++ b/networking/v1beta1/virtual_service.gen.json
@@ -275,6 +275,12 @@
"description": "The proportion of traffic to be forwarded to the service version. (0-100). Sum of weights across destinations SHOULD BE == 100. If there is only one destination in a rule, the weight value is assumed to be 100.",
"type": "integer",
"format": "int32"
+ },
+ "localRateLimit": {
+ "$ref": "#/components/schemas/istio.networking.v1beta1.HTTPLocalRateLimit"
+ },
+ "globalRateLimit": {
+ "$ref": "#/components/schemas/istio.networking.v1beta1.HTTPGlobalRateLimit"
}
}
},
@@ -532,6 +538,12 @@
"description": "The proportion of traffic to be forwarded to the service version. If there is only one destination in a rule, all traffic will be routed to it irrespective of the weight.",
"type": "integer",
"format": "int32"
+ },
+ "localRateLimit": {
+ "$ref": "#/components/schemas/istio.networking.v1beta1.LocalRateLimit"
+ },
+ "globalRateLimit": {
+ "$ref": "#/components/schemas/istio.networking.v1beta1.GlobalRateLimit"
}
}
},
@@ -663,6 +675,355 @@
}
]
},
+ "istio.networking.v1beta1.HTTPLocalRateLimit": {
+ "description": "HTTPLocalRateLimit used to rate limit the HTTP requests locally",
+ "type": "object",
+ "properties": {
+ "statusCode": {
+ "description": "StatusCode allows for a custom HTTP response status code to the downstream client when the request has been rate limited. Defaults to 429 (TooManyRequests).",
+ "type": "integer",
+ "format": "int32"
+ },
+ "tokenBucket": {
+ "$ref": "#/components/schemas/istio.networking.v1beta1.TokenBucket"
+ }
+ }
+ },
+ "istio.networking.v1beta1.HTTPGlobalRateLimit": {
+ "description": "HTTPGlobalRateLimit used to rate limit the HTTP requests calling the rate limit service.",
+ "type": "object",
+ "properties": {
+ "timeout": {
+ "description": "The timeout in milliseconds for the rate limit service RPC. If set, it will override the global value from mesh config.",
+ "type": "string"
+ },
+ "domain": {
+ "description": "The rate limit domain to use when calling the rate limit service.",
+ "type": "string",
+ "format": "string"
+ },
+ "failOpen": {
+ "description": "The filter’s behaviour in case the rate limiting service does not respond back. When it is set to true, Envoy will allow traffic in case of communication failure between rate limiting service and the proxy. If set, it will override the global value from mesh config.",
+ "type": "boolean"
+ },
+ "actions": {
+ "description": "A list of actions that are to be applied for this rate limit configuration. Order matters as the actions are processed sequentially and the descriptor is composed by appending descriptor entries in that sequence.",
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/istio.networking.v1beta1.RateLimitAction"
+ }
+ }
+ }
+ },
+ "istio.networking.v1beta1.RateLimitAction": {
+ "description": "RateLimitAction describes how to generate descriptor entries.",
+ "type": "object",
+ "oneOf": [
+ {
+ "not": {
+ "anyOf": [
+ {
+ "required": [
+ "requestHeader"
+ ],
+ "properties": {
+ "requestHeader": {
+ "$ref": "#/components/schemas/istio.networking.v1beta1.RateLimitAction.RequestHeader"
+ }
+ }
+ },
+ {
+ "required": [
+ "remoteAddress"
+ ],
+ "properties": {
+ "remoteAddress": {
+ "description": "Rate limit on remote address. The following descriptor entry is appended to the descriptor and is populated using the trusted address from x-forwarded-for: `(\"remote_address\", \"\u003ctrusted address from x-forwarded-for\u003e\")`",
+ "type": "boolean"
+ }
+ }
+ },
+ {
+ "required": [
+ "headerMatch"
+ ],
+ "properties": {
+ "headerMatch": {
+ "$ref": "#/components/schemas/istio.networking.v1beta1.RateLimitAction.HeaderMatch"
+ }
+ }
+ },
+ {
+ "required": [
+ "genericKey"
+ ],
+ "properties": {
+ "genericKey": {
+ "$ref": "#/components/schemas/istio.networking.v1beta1.RateLimitAction.GenericKey"
+ }
+ }
+ }
+ ]
+ }
+ },
+ {
+ "required": [
+ "requestHeader"
+ ],
+ "properties": {
+ "requestHeader": {
+ "$ref": "#/components/schemas/istio.networking.v1beta1.RateLimitAction.RequestHeader"
+ }
+ }
+ },
+ {
+ "required": [
+ "remoteAddress"
+ ],
+ "properties": {
+ "remoteAddress": {
+ "description": "Rate limit on remote address. The following descriptor entry is appended to the descriptor and is populated using the trusted address from x-forwarded-for: `(\"remote_address\", \"\u003ctrusted address from x-forwarded-for\u003e\")`",
+ "type": "boolean"
+ }
+ }
+ },
+ {
+ "required": [
+ "headerMatch"
+ ],
+ "properties": {
+ "headerMatch": {
+ "$ref": "#/components/schemas/istio.networking.v1beta1.RateLimitAction.HeaderMatch"
+ }
+ }
+ },
+ {
+ "required": [
+ "genericKey"
+ ],
+ "properties": {
+ "genericKey": {
+ "$ref": "#/components/schemas/istio.networking.v1beta1.RateLimitAction.GenericKey"
+ }
+ }
+ }
+ ]
+ },
+ "istio.networking.v1beta1.RateLimitAction.RequestHeader": {
+ "description": "The following descriptor entry is appended when a header contains a key that matches the header_name: `(\"\u003cdescriptor_key\u003e\", \"\u003cheader_value_queried_from_header\u003e\")`",
+ "type": "object",
+ "properties": {
+ "headerName": {
+ "description": "The header name to be queried from the request headers. The header’s value is used to populate the value of the descriptor entry for the descriptor_key",
+ "type": "string",
+ "format": "string"
+ },
+ "descriptorKey": {
+ "description": "The key to use in the descriptor entry.",
+ "type": "string",
+ "format": "string"
+ },
+ "skipIfAbsent": {
+ "description": "If set to true, Envoy skips the descriptor while calling rate limiting service when header is not present in the request. By default it is true and skips calling rate limiting service if this header does not exist.",
+ "type": "string",
+ "format": "string"
+ }
+ }
+ },
+ "istio.networking.v1beta1.RateLimitAction.HeaderMatch": {
+ "description": "The following descriptor entry is appended to the descriptor: `(\"header_match\", \"\u003cdescriptor_value\u003e\")`",
+ "type": "object",
+ "properties": {
+ "headerName": {
+ "description": "The header name to be queried from the request headers.",
+ "type": "string",
+ "format": "string"
+ },
+ "descriptorValue": {
+ "description": "The value to use in the descriptor entry.",
+ "type": "string",
+ "format": "string"
+ },
+ "expectMatch": {
+ "description": "If set to true, the action will append a descriptor entry when the request matches the headers. If set to false, the action will append a descriptor entry when the request does not match the headers. The default value is true.",
+ "type": "string",
+ "format": "string"
+ }
+ },
+ "oneOf": [
+ {
+ "not": {
+ "anyOf": [
+ {
+ "required": [
+ "exact"
+ ],
+ "properties": {
+ "exact": {
+ "description": "exact string match on the header value",
+ "type": "string",
+ "format": "string"
+ }
+ }
+ },
+ {
+ "required": [
+ "prefix"
+ ],
+ "properties": {
+ "prefix": {
+ "description": "prefix-based match",
+ "type": "string",
+ "format": "string"
+ }
+ }
+ },
+ {
+ "required": [
+ "regex"
+ ],
+ "properties": {
+ "regex": {
+ "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).",
+ "type": "string",
+ "format": "string"
+ }
+ }
+ }
+ ]
+ }
+ },
+ {
+ "required": [
+ "exact"
+ ],
+ "properties": {
+ "exact": {
+ "description": "exact string match on the header value",
+ "type": "string",
+ "format": "string"
+ }
+ }
+ },
+ {
+ "required": [
+ "prefix"
+ ],
+ "properties": {
+ "prefix": {
+ "description": "prefix-based match",
+ "type": "string",
+ "format": "string"
+ }
+ }
+ },
+ {
+ "required": [
+ "regex"
+ ],
+ "properties": {
+ "regex": {
+ "description": "RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).",
+ "type": "string",
+ "format": "string"
+ }
+ }
+ }
+ ]
+ },
+ "istio.networking.v1beta1.RateLimitAction.GenericKey": {
+ "description": "The following descriptor entry is appended to the descriptor: `(\"generic_key\", \"\u003cdescriptor_value\u003e\")`",
+ "type": "object",
+ "properties": {
+ "descriptorKey": {
+ "description": "An optional key to use in the descriptor entry. If not set it defaults to ‘generic_key’ as the descriptor key.",
+ "type": "string",
+ "format": "string"
+ },
+ "descriptorValue": {
+ "description": "The value to use in the descriptor entry.",
+ "type": "string",
+ "format": "string"
+ }
+ }
+ },
+ "istio.networking.v1beta1.TokenBucket": {
+ "description": "TokenBucket used for local rate limiting",
+ "type": "object",
+ "properties": {
+ "interval": {
+ "description": "The fill interval that tokens are added to the bucket. During each fill interval tokens_per_fill are added to the bucket. The bucket will never contain more than max_tokens tokens. *Note*: It must be \u003e= 50ms to avoid aggressive fills.",
+ "type": "string"
+ },
+ "maxTokens": {
+ "description": "The maximum tokens that the bucket can hold.",
+ "type": "integer"
+ },
+ "tokensPerFill": {
+ "description": "The number of tokens added to the bucket during each fill interval. If not specified, defaults to 1.",
+ "type": "integer"
+ }
+ }
+ },
+ "istio.networking.v1beta1.LocalRateLimit": {
+ "description": "LocalRateLimit used to rate limit the L4 connections locally",
+ "type": "object",
+ "properties": {
+ "tokenBucket": {
+ "$ref": "#/components/schemas/istio.networking.v1beta1.TokenBucket"
+ }
+ }
+ },
+ "istio.networking.v1beta1.GlobalRateLimit": {
+ "description": "GlobalRateLimit used to rate limit the L4 connections calling the global rate limit service.",
+ "type": "object",
+ "properties": {
+ "timeout": {
+ "description": "The timeout for the rate limit service RPC. If set, it will override the global value from mesh config.",
+ "type": "string"
+ },
+ "domain": {
+ "description": "The rate limit domain to use when calling the rate limit service.",
+ "type": "string",
+ "format": "string"
+ },
+ "failOpen": {
+ "description": "The filter’s behaviour in case the rate limiting service does not respond back. When it is set to true, Envoy will allow traffic in case of communication failure between rate limiting service and the proxy. If set, it will override the global value from mesh config.",
+ "type": "boolean"
+ },
+ "descriptors": {
+ "$ref": "#/components/schemas/istio.networking.v1beta1.GlobalRateLimit.RateLimitDescriptor"
+ }
+ }
+ },
+ "istio.networking.v1beta1.GlobalRateLimit.RateLimitDescriptor": {
+ "description": "A RateLimitDescriptor is a list of hierarchical entries that are used by the service to determine the final rate limit key and overall allowed limit. Here are some examples of how they might be used for the domain \"envoy\".",
+ "type": "object",
+ "properties": {
+ "entries": {
+ "description": "Descriptor entries.",
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/istio.networking.v1beta1.GlobalRateLimit.RateLimitDescriptor.Entry"
+ }
+ }
+ }
+ },
+ "istio.networking.v1beta1.GlobalRateLimit.RateLimitDescriptor.Entry": {
+ "type": "object",
+ "properties": {
+ "key": {
+ "description": "Descriptor key.",
+ "type": "string",
+ "format": "string"
+ },
+ "value": {
+ "description": "Descriptor value.",
+ "type": "string",
+ "format": "string"
+ }
+ }
+ },
"istio.networking.v1beta1.HTTPFaultInjection.Delay": {
"description": "Delay specification is used to inject latency into the request forwarding path. The following example will introduce a 5 second delay in 1 out of every 1000 requests to the \"v1\" version of the \"reviews\" service from all pods with label env: prod",
"type": "object",
diff --git a/networking/v1beta1/virtual_service.pb.go b/networking/v1beta1/virtual_service.pb.go
index 6da2e7cd3db..399ac04cf8a 100644
--- a/networking/v1beta1/virtual_service.pb.go
+++ b/networking/v1beta1/virtual_service.pb.go
@@ -1858,10 +1858,14 @@ type HTTPRouteDestination struct {
// be 100.
Weight int32 `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty"`
// Header manipulation rules
- Headers *Headers `protobuf:"bytes,7,opt,name=headers,proto3" json:"headers,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+ Headers *Headers `protobuf:"bytes,7,opt,name=headers,proto3" json:"headers,omitempty"`
+ // Local rate limiting.
+ LocalRateLimit *HTTPLocalRateLimit `protobuf:"bytes,8,opt,name=local_rate_limit,json=localRateLimit,proto3" json:"local_rate_limit,omitempty"`
+ // Global rate limiting.
+ GlobalRateLimit *HTTPGlobalRateLimit `protobuf:"bytes,9,opt,name=global_rate_limit,json=globalRateLimit,proto3" json:"global_rate_limit,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
func (m *HTTPRouteDestination) Reset() { *m = HTTPRouteDestination{} }
@@ -1918,32 +1922,53 @@ func (m *HTTPRouteDestination) GetHeaders() *Headers {
return nil
}
-// L4 routing rule weighted destination.
-type RouteDestination struct {
- // Destination uniquely identifies the instances of a service
- // to which the request/connection should be forwarded to.
- Destination *Destination `protobuf:"bytes,1,opt,name=destination,proto3" json:"destination,omitempty"`
- // The proportion of traffic to be forwarded to the service
- // version. If there is only one destination in a rule, all traffic will be
- // routed to it irrespective of the weight.
- Weight int32 `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+func (m *HTTPRouteDestination) GetLocalRateLimit() *HTTPLocalRateLimit {
+ if m != nil {
+ return m.LocalRateLimit
+ }
+ return nil
}
-func (m *RouteDestination) Reset() { *m = RouteDestination{} }
-func (m *RouteDestination) String() string { return proto.CompactTextString(m) }
-func (*RouteDestination) ProtoMessage() {}
-func (*RouteDestination) Descriptor() ([]byte, []int) {
+func (m *HTTPRouteDestination) GetGlobalRateLimit() *HTTPGlobalRateLimit {
+ if m != nil {
+ return m.GlobalRateLimit
+ }
+ return nil
+}
+
+// HTTPGlobalRateLimit used to rate limit the HTTP requests calling the rate limit service.
+type HTTPGlobalRateLimit struct {
+ // The rate limit domain to use when calling the rate limit service.
+ Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain,omitempty"`
+ // The timeout in milliseconds for the rate limit service RPC.
+ // If set, it will override the global value from mesh config.
+ Timeout *types.Duration `protobuf:"bytes,2,opt,name=timeout,proto3" json:"timeout,omitempty"`
+ // The filter’s behaviour in case the rate limiting service does not respond back.
+ // When it is set to true, Envoy will allow traffic in case of communication failure
+ // between rate limiting service and the proxy.
+ // If set, it will override the global value from mesh config.
+ FailOpen bool `protobuf:"varint,3,opt,name=fail_open,json=failOpen,proto3" json:"fail_open,omitempty"`
+ // A list of actions that are to be applied for this rate limit configuration.
+ // Order matters as the actions are processed sequentially
+ // and the descriptor is composed by appending descriptor entries in that sequence.
+ Actions []*RateLimitAction `protobuf:"bytes,4,rep,name=actions,proto3" json:"actions,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *HTTPGlobalRateLimit) Reset() { *m = HTTPGlobalRateLimit{} }
+func (m *HTTPGlobalRateLimit) String() string { return proto.CompactTextString(m) }
+func (*HTTPGlobalRateLimit) ProtoMessage() {}
+func (*HTTPGlobalRateLimit) Descriptor() ([]byte, []int) {
return fileDescriptor_8c56a442a0838fd7, []int{9}
}
-func (m *RouteDestination) XXX_Unmarshal(b []byte) error {
+func (m *HTTPGlobalRateLimit) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
-func (m *RouteDestination) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+func (m *HTTPGlobalRateLimit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
- return xxx_messageInfo_RouteDestination.Marshal(b, m, deterministic)
+ return xxx_messageInfo_HTTPGlobalRateLimit.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
@@ -1953,76 +1978,71 @@ func (m *RouteDestination) XXX_Marshal(b []byte, deterministic bool) ([]byte, er
return b[:n], nil
}
}
-func (m *RouteDestination) XXX_Merge(src proto.Message) {
- xxx_messageInfo_RouteDestination.Merge(m, src)
+func (m *HTTPGlobalRateLimit) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_HTTPGlobalRateLimit.Merge(m, src)
}
-func (m *RouteDestination) XXX_Size() int {
+func (m *HTTPGlobalRateLimit) XXX_Size() int {
return m.Size()
}
-func (m *RouteDestination) XXX_DiscardUnknown() {
- xxx_messageInfo_RouteDestination.DiscardUnknown(m)
+func (m *HTTPGlobalRateLimit) XXX_DiscardUnknown() {
+ xxx_messageInfo_HTTPGlobalRateLimit.DiscardUnknown(m)
}
-var xxx_messageInfo_RouteDestination proto.InternalMessageInfo
+var xxx_messageInfo_HTTPGlobalRateLimit proto.InternalMessageInfo
-func (m *RouteDestination) GetDestination() *Destination {
+func (m *HTTPGlobalRateLimit) GetDomain() string {
if m != nil {
- return m.Destination
+ return m.Domain
+ }
+ return ""
+}
+
+func (m *HTTPGlobalRateLimit) GetTimeout() *types.Duration {
+ if m != nil {
+ return m.Timeout
}
return nil
}
-func (m *RouteDestination) GetWeight() int32 {
+func (m *HTTPGlobalRateLimit) GetFailOpen() bool {
if m != nil {
- return m.Weight
+ return m.FailOpen
}
- return 0
+ return false
}
-// L4 connection match attributes. Note that L4 connection matching support
-// is incomplete.
-type L4MatchAttributes struct {
- // IPv4 or IPv6 ip addresses of destination with optional subnet. E.g.,
- // a.b.c.d/xx form or just a.b.c.d.
- DestinationSubnets []string `protobuf:"bytes,1,rep,name=destination_subnets,json=destinationSubnets,proto3" json:"destination_subnets,omitempty"`
- // Specifies the port on the host that is being addressed. Many services
- // only expose a single port or label ports with the protocols they support,
- // in these cases it is not required to explicitly select the port.
- Port uint32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
- // IPv4 or IPv6 ip address of source with optional subnet. E.g., a.b.c.d/xx
- // form or just a.b.c.d
- // $hide_from_docs
- SourceSubnet string `protobuf:"bytes,3,opt,name=source_subnet,json=sourceSubnet,proto3" json:"source_subnet,omitempty"`
- // One or more labels that constrain the applicability of a rule to
- // workloads with the given labels. If the VirtualService has a list of
- // gateways specified in the top-level `gateways` field, it should include the reserved gateway
- // `mesh` in order for this field to be applicable.
- SourceLabels map[string]string `protobuf:"bytes,4,rep,name=source_labels,json=sourceLabels,proto3" json:"source_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // Names of gateways where the rule should be applied. Gateway names
- // in the top-level `gateways` field of the VirtualService (if any) are overridden. The gateway
- // match is independent of sourceLabels.
- Gateways []string `protobuf:"bytes,5,rep,name=gateways,proto3" json:"gateways,omitempty"`
- // Source namespace constraining the applicability of a rule to workloads in that namespace.
- // If the VirtualService has a list of gateways specified in the top-level `gateways` field,
- // it must include the reserved gateway `mesh` for this field to be applicable.
- SourceNamespace string `protobuf:"bytes,6,opt,name=source_namespace,json=sourceNamespace,proto3" json:"source_namespace,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+func (m *HTTPGlobalRateLimit) GetActions() []*RateLimitAction {
+ if m != nil {
+ return m.Actions
+ }
+ return nil
}
-func (m *L4MatchAttributes) Reset() { *m = L4MatchAttributes{} }
-func (m *L4MatchAttributes) String() string { return proto.CompactTextString(m) }
-func (*L4MatchAttributes) ProtoMessage() {}
-func (*L4MatchAttributes) Descriptor() ([]byte, []int) {
+// RateLimitAction describes how to generate descriptor entries.
+type RateLimitAction struct {
+ // Types that are valid to be assigned to Action:
+ // *RateLimitAction_RequestHeader_
+ // *RateLimitAction_RemoteAddress
+ // *RateLimitAction_HeaderMatch_
+ // *RateLimitAction_GenericKey_
+ Action isRateLimitAction_Action `protobuf_oneof:"action"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *RateLimitAction) Reset() { *m = RateLimitAction{} }
+func (m *RateLimitAction) String() string { return proto.CompactTextString(m) }
+func (*RateLimitAction) ProtoMessage() {}
+func (*RateLimitAction) Descriptor() ([]byte, []int) {
return fileDescriptor_8c56a442a0838fd7, []int{10}
}
-func (m *L4MatchAttributes) XXX_Unmarshal(b []byte) error {
+func (m *RateLimitAction) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
-func (m *L4MatchAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+func (m *RateLimitAction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
- return xxx_messageInfo_L4MatchAttributes.Marshal(b, m, deterministic)
+ return xxx_messageInfo_RateLimitAction.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
@@ -2032,105 +2052,115 @@ func (m *L4MatchAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, e
return b[:n], nil
}
}
-func (m *L4MatchAttributes) XXX_Merge(src proto.Message) {
- xxx_messageInfo_L4MatchAttributes.Merge(m, src)
+func (m *RateLimitAction) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_RateLimitAction.Merge(m, src)
}
-func (m *L4MatchAttributes) XXX_Size() int {
+func (m *RateLimitAction) XXX_Size() int {
return m.Size()
}
-func (m *L4MatchAttributes) XXX_DiscardUnknown() {
- xxx_messageInfo_L4MatchAttributes.DiscardUnknown(m)
+func (m *RateLimitAction) XXX_DiscardUnknown() {
+ xxx_messageInfo_RateLimitAction.DiscardUnknown(m)
}
-var xxx_messageInfo_L4MatchAttributes proto.InternalMessageInfo
+var xxx_messageInfo_RateLimitAction proto.InternalMessageInfo
-func (m *L4MatchAttributes) GetDestinationSubnets() []string {
- if m != nil {
- return m.DestinationSubnets
- }
- return nil
+type isRateLimitAction_Action interface {
+ isRateLimitAction_Action()
+ MarshalTo([]byte) (int, error)
+ Size() int
}
-func (m *L4MatchAttributes) GetPort() uint32 {
- if m != nil {
- return m.Port
- }
- return 0
+type RateLimitAction_RequestHeader_ struct {
+ RequestHeader *RateLimitAction_RequestHeader `protobuf:"bytes,1,opt,name=request_header,json=requestHeader,proto3,oneof"`
+}
+type RateLimitAction_RemoteAddress struct {
+ RemoteAddress bool `protobuf:"varint,2,opt,name=remote_address,json=remoteAddress,proto3,oneof"`
+}
+type RateLimitAction_HeaderMatch_ struct {
+ HeaderMatch *RateLimitAction_HeaderMatch `protobuf:"bytes,3,opt,name=header_match,json=headerMatch,proto3,oneof"`
+}
+type RateLimitAction_GenericKey_ struct {
+ GenericKey *RateLimitAction_GenericKey `protobuf:"bytes,4,opt,name=generic_key,json=genericKey,proto3,oneof"`
}
-func (m *L4MatchAttributes) GetSourceSubnet() string {
+func (*RateLimitAction_RequestHeader_) isRateLimitAction_Action() {}
+func (*RateLimitAction_RemoteAddress) isRateLimitAction_Action() {}
+func (*RateLimitAction_HeaderMatch_) isRateLimitAction_Action() {}
+func (*RateLimitAction_GenericKey_) isRateLimitAction_Action() {}
+
+func (m *RateLimitAction) GetAction() isRateLimitAction_Action {
if m != nil {
- return m.SourceSubnet
+ return m.Action
}
- return ""
+ return nil
}
-func (m *L4MatchAttributes) GetSourceLabels() map[string]string {
- if m != nil {
- return m.SourceLabels
+func (m *RateLimitAction) GetRequestHeader() *RateLimitAction_RequestHeader {
+ if x, ok := m.GetAction().(*RateLimitAction_RequestHeader_); ok {
+ return x.RequestHeader
}
return nil
}
-func (m *L4MatchAttributes) GetGateways() []string {
- if m != nil {
- return m.Gateways
+func (m *RateLimitAction) GetRemoteAddress() bool {
+ if x, ok := m.GetAction().(*RateLimitAction_RemoteAddress); ok {
+ return x.RemoteAddress
+ }
+ return false
+}
+
+func (m *RateLimitAction) GetHeaderMatch() *RateLimitAction_HeaderMatch {
+ if x, ok := m.GetAction().(*RateLimitAction_HeaderMatch_); ok {
+ return x.HeaderMatch
}
return nil
}
-func (m *L4MatchAttributes) GetSourceNamespace() string {
- if m != nil {
- return m.SourceNamespace
+func (m *RateLimitAction) GetGenericKey() *RateLimitAction_GenericKey {
+ if x, ok := m.GetAction().(*RateLimitAction_GenericKey_); ok {
+ return x.GenericKey
}
- return ""
+ return nil
}
-// TLS connection match attributes.
-type TLSMatchAttributes struct {
- // SNI (server name indicator) to match on. Wildcard prefixes
- // can be used in the SNI value, e.g., *.com will match foo.example.com
- // as well as example.com. An SNI value must be a subset (i.e., fall
- // within the domain) of the corresponding virtual serivce's hosts.
- SniHosts []string `protobuf:"bytes,1,rep,name=sni_hosts,json=sniHosts,proto3" json:"sni_hosts,omitempty"`
- // IPv4 or IPv6 ip addresses of destination with optional subnet. E.g.,
- // a.b.c.d/xx form or just a.b.c.d.
- DestinationSubnets []string `protobuf:"bytes,2,rep,name=destination_subnets,json=destinationSubnets,proto3" json:"destination_subnets,omitempty"`
- // Specifies the port on the host that is being addressed. Many services
- // only expose a single port or label ports with the protocols they
- // support, in these cases it is not required to explicitly select the
- // port.
- Port uint32 `protobuf:"varint,3,opt,name=port,proto3" json:"port,omitempty"`
- // One or more labels that constrain the applicability of a rule to
- // workloads with the given labels. If the VirtualService has a list of
- // gateways specified in the top-level `gateways` field, it should include the reserved gateway
- // `mesh` in order for this field to be applicable.
- SourceLabels map[string]string `protobuf:"bytes,5,rep,name=source_labels,json=sourceLabels,proto3" json:"source_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- // Names of gateways where the rule should be applied. Gateway names
- // in the top-level `gateways` field of the VirtualService (if any) are overridden. The gateway
- // match is independent of sourceLabels.
- Gateways []string `protobuf:"bytes,6,rep,name=gateways,proto3" json:"gateways,omitempty"`
- // Source namespace constraining the applicability of a rule to workloads in that namespace.
- // If the VirtualService has a list of gateways specified in the top-level `gateways` field,
- // it must include the reserved gateway `mesh` for this field to be applicable.
- SourceNamespace string `protobuf:"bytes,7,opt,name=source_namespace,json=sourceNamespace,proto3" json:"source_namespace,omitempty"`
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*RateLimitAction) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*RateLimitAction_RequestHeader_)(nil),
+ (*RateLimitAction_RemoteAddress)(nil),
+ (*RateLimitAction_HeaderMatch_)(nil),
+ (*RateLimitAction_GenericKey_)(nil),
+ }
+}
+
+// The following descriptor entry is appended when a header contains a key that matches the header_name:
+// `("", "")`
+type RateLimitAction_RequestHeader struct {
+ // The header name to be queried from the request headers.
+ // The header’s value is used to populate the value of the descriptor entry for the descriptor_key
+ HeaderName string `protobuf:"bytes,1,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"`
+ // The key to use in the descriptor entry.
+ DescriptorKey string `protobuf:"bytes,2,opt,name=descriptor_key,json=descriptorKey,proto3" json:"descriptor_key,omitempty"`
+ // If set to true, Envoy skips the descriptor while calling rate limiting service when header is not present in the request.
+ // By default it is true and skips calling rate limiting service if this header does not exist.
+ SkipIfAbsent string `protobuf:"bytes,3,opt,name=skip_if_absent,json=skipIfAbsent,proto3" json:"skip_if_absent,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
-func (m *TLSMatchAttributes) Reset() { *m = TLSMatchAttributes{} }
-func (m *TLSMatchAttributes) String() string { return proto.CompactTextString(m) }
-func (*TLSMatchAttributes) ProtoMessage() {}
-func (*TLSMatchAttributes) Descriptor() ([]byte, []int) {
- return fileDescriptor_8c56a442a0838fd7, []int{11}
+func (m *RateLimitAction_RequestHeader) Reset() { *m = RateLimitAction_RequestHeader{} }
+func (m *RateLimitAction_RequestHeader) String() string { return proto.CompactTextString(m) }
+func (*RateLimitAction_RequestHeader) ProtoMessage() {}
+func (*RateLimitAction_RequestHeader) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8c56a442a0838fd7, []int{10, 0}
}
-func (m *TLSMatchAttributes) XXX_Unmarshal(b []byte) error {
+func (m *RateLimitAction_RequestHeader) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
-func (m *TLSMatchAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+func (m *RateLimitAction_RequestHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
- return xxx_messageInfo_TLSMatchAttributes.Marshal(b, m, deterministic)
+ return xxx_messageInfo_RateLimitAction_RequestHeader.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
@@ -2140,136 +2170,198 @@ func (m *TLSMatchAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte,
return b[:n], nil
}
}
-func (m *TLSMatchAttributes) XXX_Merge(src proto.Message) {
- xxx_messageInfo_TLSMatchAttributes.Merge(m, src)
+func (m *RateLimitAction_RequestHeader) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_RateLimitAction_RequestHeader.Merge(m, src)
}
-func (m *TLSMatchAttributes) XXX_Size() int {
+func (m *RateLimitAction_RequestHeader) XXX_Size() int {
return m.Size()
}
-func (m *TLSMatchAttributes) XXX_DiscardUnknown() {
- xxx_messageInfo_TLSMatchAttributes.DiscardUnknown(m)
+func (m *RateLimitAction_RequestHeader) XXX_DiscardUnknown() {
+ xxx_messageInfo_RateLimitAction_RequestHeader.DiscardUnknown(m)
}
-var xxx_messageInfo_TLSMatchAttributes proto.InternalMessageInfo
+var xxx_messageInfo_RateLimitAction_RequestHeader proto.InternalMessageInfo
-func (m *TLSMatchAttributes) GetSniHosts() []string {
+func (m *RateLimitAction_RequestHeader) GetHeaderName() string {
if m != nil {
- return m.SniHosts
+ return m.HeaderName
}
- return nil
+ return ""
}
-func (m *TLSMatchAttributes) GetDestinationSubnets() []string {
+func (m *RateLimitAction_RequestHeader) GetDescriptorKey() string {
if m != nil {
- return m.DestinationSubnets
+ return m.DescriptorKey
}
- return nil
+ return ""
}
-func (m *TLSMatchAttributes) GetPort() uint32 {
+func (m *RateLimitAction_RequestHeader) GetSkipIfAbsent() string {
if m != nil {
- return m.Port
+ return m.SkipIfAbsent
}
- return 0
+ return ""
}
-func (m *TLSMatchAttributes) GetSourceLabels() map[string]string {
+// The following descriptor entry is appended to the descriptor:
+// `("header_match", "")`
+type RateLimitAction_HeaderMatch struct {
+ // The value to use in the descriptor entry.
+ DescriptorValue string `protobuf:"bytes,1,opt,name=descriptor_value,json=descriptorValue,proto3" json:"descriptor_value,omitempty"`
+ // If set to true, the action will append a descriptor entry when the request matches the headers.
+ // If set to false, the action will append a descriptor entry when the request does not match the headers.
+ // The default value is true.
+ ExpectMatch string `protobuf:"bytes,2,opt,name=expect_match,json=expectMatch,proto3" json:"expect_match,omitempty"`
+ // The header name to be queried from the request headers.
+ HeaderName string `protobuf:"bytes,3,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"`
+ // Specifies how the header value match will be performed to route the request.
+ //
+ // Types that are valid to be assigned to MatchType:
+ // *RateLimitAction_HeaderMatch_Exact
+ // *RateLimitAction_HeaderMatch_Prefix
+ // *RateLimitAction_HeaderMatch_Regex
+ MatchType isRateLimitAction_HeaderMatch_MatchType `protobuf_oneof:"match_type"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *RateLimitAction_HeaderMatch) Reset() { *m = RateLimitAction_HeaderMatch{} }
+func (m *RateLimitAction_HeaderMatch) String() string { return proto.CompactTextString(m) }
+func (*RateLimitAction_HeaderMatch) ProtoMessage() {}
+func (*RateLimitAction_HeaderMatch) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8c56a442a0838fd7, []int{10, 1}
+}
+func (m *RateLimitAction_HeaderMatch) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *RateLimitAction_HeaderMatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_RateLimitAction_HeaderMatch.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *RateLimitAction_HeaderMatch) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_RateLimitAction_HeaderMatch.Merge(m, src)
+}
+func (m *RateLimitAction_HeaderMatch) XXX_Size() int {
+ return m.Size()
+}
+func (m *RateLimitAction_HeaderMatch) XXX_DiscardUnknown() {
+ xxx_messageInfo_RateLimitAction_HeaderMatch.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RateLimitAction_HeaderMatch proto.InternalMessageInfo
+
+type isRateLimitAction_HeaderMatch_MatchType interface {
+ isRateLimitAction_HeaderMatch_MatchType()
+ MarshalTo([]byte) (int, error)
+ Size() int
+}
+
+type RateLimitAction_HeaderMatch_Exact struct {
+ Exact string `protobuf:"bytes,4,opt,name=exact,proto3,oneof"`
+}
+type RateLimitAction_HeaderMatch_Prefix struct {
+ Prefix string `protobuf:"bytes,5,opt,name=prefix,proto3,oneof"`
+}
+type RateLimitAction_HeaderMatch_Regex struct {
+ Regex string `protobuf:"bytes,6,opt,name=regex,proto3,oneof"`
+}
+
+func (*RateLimitAction_HeaderMatch_Exact) isRateLimitAction_HeaderMatch_MatchType() {}
+func (*RateLimitAction_HeaderMatch_Prefix) isRateLimitAction_HeaderMatch_MatchType() {}
+func (*RateLimitAction_HeaderMatch_Regex) isRateLimitAction_HeaderMatch_MatchType() {}
+
+func (m *RateLimitAction_HeaderMatch) GetMatchType() isRateLimitAction_HeaderMatch_MatchType {
if m != nil {
- return m.SourceLabels
+ return m.MatchType
}
return nil
}
-func (m *TLSMatchAttributes) GetGateways() []string {
+func (m *RateLimitAction_HeaderMatch) GetDescriptorValue() string {
if m != nil {
- return m.Gateways
+ return m.DescriptorValue
}
- return nil
+ return ""
}
-func (m *TLSMatchAttributes) GetSourceNamespace() string {
+func (m *RateLimitAction_HeaderMatch) GetExpectMatch() string {
if m != nil {
- return m.SourceNamespace
+ return m.ExpectMatch
}
return ""
}
-// HTTPRedirect can be used to send a 301 redirect response to the caller,
-// where the Authority/Host and the URI in the response can be swapped with
-// the specified values. For example, the following rule redirects
-// requests for /v1/getProductRatings API on the ratings service to
-// /v1/bookRatings provided by the bookratings service.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - match:
-// - uri:
-// exact: /v1/getProductRatings
-// redirect:
-// uri: /v1/bookRatings
-// authority: newratings.default.svc.cluster.local
-// ...
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - match:
-// - uri:
-// exact: /v1/getProductRatings
-// redirect:
-// uri: /v1/bookRatings
-// authority: newratings.default.svc.cluster.local
-// ...
-// ```
-// {{}}
-// {{}}
-//
-type HTTPRedirect struct {
- // On a redirect, overwrite the Path portion of the URL with this
- // value. Note that the entire path will be replaced, irrespective of the
- // request URI being matched as an exact path or prefix.
- Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"`
- // On a redirect, overwrite the Authority/Host portion of the URL with
- // this value.
- Authority string `protobuf:"bytes,2,opt,name=authority,proto3" json:"authority,omitempty"`
- // On a redirect, Specifies the HTTP status code to use in the redirect
- // response. The default response code is MOVED_PERMANENTLY (301).
- RedirectCode uint32 `protobuf:"varint,3,opt,name=redirect_code,json=redirectCode,proto3" json:"redirect_code,omitempty"`
+func (m *RateLimitAction_HeaderMatch) GetHeaderName() string {
+ if m != nil {
+ return m.HeaderName
+ }
+ return ""
+}
+
+func (m *RateLimitAction_HeaderMatch) GetExact() string {
+ if x, ok := m.GetMatchType().(*RateLimitAction_HeaderMatch_Exact); ok {
+ return x.Exact
+ }
+ return ""
+}
+
+func (m *RateLimitAction_HeaderMatch) GetPrefix() string {
+ if x, ok := m.GetMatchType().(*RateLimitAction_HeaderMatch_Prefix); ok {
+ return x.Prefix
+ }
+ return ""
+}
+
+func (m *RateLimitAction_HeaderMatch) GetRegex() string {
+ if x, ok := m.GetMatchType().(*RateLimitAction_HeaderMatch_Regex); ok {
+ return x.Regex
+ }
+ return ""
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*RateLimitAction_HeaderMatch) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*RateLimitAction_HeaderMatch_Exact)(nil),
+ (*RateLimitAction_HeaderMatch_Prefix)(nil),
+ (*RateLimitAction_HeaderMatch_Regex)(nil),
+ }
+}
+
+// The following descriptor entry is appended to the descriptor:
+// `("generic_key", "")`
+type RateLimitAction_GenericKey struct {
+ // An optional key to use in the descriptor entry.
+ // If not set it defaults to ‘generic_key’ as the descriptor key.
+ DescriptorKey string `protobuf:"bytes,1,opt,name=descriptor_key,json=descriptorKey,proto3" json:"descriptor_key,omitempty"`
+ // The value to use in the descriptor entry.
+ DescriptorValue string `protobuf:"bytes,2,opt,name=descriptor_value,json=descriptorValue,proto3" json:"descriptor_value,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
-func (m *HTTPRedirect) Reset() { *m = HTTPRedirect{} }
-func (m *HTTPRedirect) String() string { return proto.CompactTextString(m) }
-func (*HTTPRedirect) ProtoMessage() {}
-func (*HTTPRedirect) Descriptor() ([]byte, []int) {
- return fileDescriptor_8c56a442a0838fd7, []int{12}
+func (m *RateLimitAction_GenericKey) Reset() { *m = RateLimitAction_GenericKey{} }
+func (m *RateLimitAction_GenericKey) String() string { return proto.CompactTextString(m) }
+func (*RateLimitAction_GenericKey) ProtoMessage() {}
+func (*RateLimitAction_GenericKey) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8c56a442a0838fd7, []int{10, 2}
}
-func (m *HTTPRedirect) XXX_Unmarshal(b []byte) error {
+func (m *RateLimitAction_GenericKey) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
-func (m *HTTPRedirect) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+func (m *RateLimitAction_GenericKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
- return xxx_messageInfo_HTTPRedirect.Marshal(b, m, deterministic)
+ return xxx_messageInfo_RateLimitAction_GenericKey.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
@@ -2279,115 +2371,56 @@ func (m *HTTPRedirect) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
return b[:n], nil
}
}
-func (m *HTTPRedirect) XXX_Merge(src proto.Message) {
- xxx_messageInfo_HTTPRedirect.Merge(m, src)
+func (m *RateLimitAction_GenericKey) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_RateLimitAction_GenericKey.Merge(m, src)
}
-func (m *HTTPRedirect) XXX_Size() int {
+func (m *RateLimitAction_GenericKey) XXX_Size() int {
return m.Size()
}
-func (m *HTTPRedirect) XXX_DiscardUnknown() {
- xxx_messageInfo_HTTPRedirect.DiscardUnknown(m)
+func (m *RateLimitAction_GenericKey) XXX_DiscardUnknown() {
+ xxx_messageInfo_RateLimitAction_GenericKey.DiscardUnknown(m)
}
-var xxx_messageInfo_HTTPRedirect proto.InternalMessageInfo
+var xxx_messageInfo_RateLimitAction_GenericKey proto.InternalMessageInfo
-func (m *HTTPRedirect) GetUri() string {
+func (m *RateLimitAction_GenericKey) GetDescriptorKey() string {
if m != nil {
- return m.Uri
+ return m.DescriptorKey
}
return ""
}
-func (m *HTTPRedirect) GetAuthority() string {
+func (m *RateLimitAction_GenericKey) GetDescriptorValue() string {
if m != nil {
- return m.Authority
+ return m.DescriptorValue
}
return ""
}
-func (m *HTTPRedirect) GetRedirectCode() uint32 {
- if m != nil {
- return m.RedirectCode
- }
- return 0
-}
-
-// HTTPRewrite can be used to rewrite specific parts of a HTTP request
-// before forwarding the request to the destination. Rewrite primitive can
-// be used only with HTTPRouteDestination. The following example
-// demonstrates how to rewrite the URL prefix for api call (/ratings) to
-// ratings service before making the actual API call.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - match:
-// - uri:
-// prefix: /ratings
-// rewrite:
-// uri: /v1/bookRatings
-// route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - match:
-// - uri:
-// prefix: /ratings
-// rewrite:
-// uri: /v1/bookRatings
-// route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// ```
-// {{}}
-// {{}}
-//
-type HTTPRewrite struct {
- // rewrite the path (or the prefix) portion of the URI with this
- // value. If the original URI was matched based on prefix, the value
- // provided in this field will replace the corresponding matched prefix.
- Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"`
- // rewrite the Authority/Host header with this value.
- Authority string `protobuf:"bytes,2,opt,name=authority,proto3" json:"authority,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+// HTTPLocalRateLimit used to rate limit the HTTP requests locally
+type HTTPLocalRateLimit struct {
+ // StatusCode allows for a custom HTTP response status code to the downstream client
+ // when the request has been rate limited. Defaults to 429 (TooManyRequests).
+ StatusCode int32 `protobuf:"varint,1,opt,name=status_code,json=statusCode,proto3" json:"status_code,omitempty"`
+ // The token bucket configuration to use for rate limiting requests.
+ TokenBucket *TokenBucket `protobuf:"bytes,2,opt,name=token_bucket,json=tokenBucket,proto3" json:"token_bucket,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
-func (m *HTTPRewrite) Reset() { *m = HTTPRewrite{} }
-func (m *HTTPRewrite) String() string { return proto.CompactTextString(m) }
-func (*HTTPRewrite) ProtoMessage() {}
-func (*HTTPRewrite) Descriptor() ([]byte, []int) {
- return fileDescriptor_8c56a442a0838fd7, []int{13}
+func (m *HTTPLocalRateLimit) Reset() { *m = HTTPLocalRateLimit{} }
+func (m *HTTPLocalRateLimit) String() string { return proto.CompactTextString(m) }
+func (*HTTPLocalRateLimit) ProtoMessage() {}
+func (*HTTPLocalRateLimit) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8c56a442a0838fd7, []int{11}
}
-func (m *HTTPRewrite) XXX_Unmarshal(b []byte) error {
+func (m *HTTPLocalRateLimit) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
-func (m *HTTPRewrite) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+func (m *HTTPLocalRateLimit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
- return xxx_messageInfo_HTTPRewrite.Marshal(b, m, deterministic)
+ return xxx_messageInfo_HTTPLocalRateLimit.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
@@ -2397,57 +2430,60 @@ func (m *HTTPRewrite) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
return b[:n], nil
}
}
-func (m *HTTPRewrite) XXX_Merge(src proto.Message) {
- xxx_messageInfo_HTTPRewrite.Merge(m, src)
+func (m *HTTPLocalRateLimit) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_HTTPLocalRateLimit.Merge(m, src)
}
-func (m *HTTPRewrite) XXX_Size() int {
+func (m *HTTPLocalRateLimit) XXX_Size() int {
return m.Size()
}
-func (m *HTTPRewrite) XXX_DiscardUnknown() {
- xxx_messageInfo_HTTPRewrite.DiscardUnknown(m)
+func (m *HTTPLocalRateLimit) XXX_DiscardUnknown() {
+ xxx_messageInfo_HTTPLocalRateLimit.DiscardUnknown(m)
}
-var xxx_messageInfo_HTTPRewrite proto.InternalMessageInfo
+var xxx_messageInfo_HTTPLocalRateLimit proto.InternalMessageInfo
-func (m *HTTPRewrite) GetUri() string {
+func (m *HTTPLocalRateLimit) GetStatusCode() int32 {
if m != nil {
- return m.Uri
+ return m.StatusCode
}
- return ""
+ return 0
}
-func (m *HTTPRewrite) GetAuthority() string {
+func (m *HTTPLocalRateLimit) GetTokenBucket() *TokenBucket {
if m != nil {
- return m.Authority
+ return m.TokenBucket
}
- return ""
-}
-
-// Describes how to match a given string in HTTP headers. Match is
-// case-sensitive.
-type StringMatch struct {
- // Types that are valid to be assigned to MatchType:
- // *StringMatch_Exact
- // *StringMatch_Prefix
- // *StringMatch_Regex
- MatchType isStringMatch_MatchType `protobuf_oneof:"match_type"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+ return nil
}
-func (m *StringMatch) Reset() { *m = StringMatch{} }
-func (m *StringMatch) String() string { return proto.CompactTextString(m) }
-func (*StringMatch) ProtoMessage() {}
-func (*StringMatch) Descriptor() ([]byte, []int) {
- return fileDescriptor_8c56a442a0838fd7, []int{14}
+// TokenBucket used for local rate limiting
+type TokenBucket struct {
+ // The maximum tokens that the bucket can hold.
+ MaxTokens uint32 `protobuf:"varint,1,opt,name=max_tokens,json=maxTokens,proto3" json:"max_tokens,omitempty"`
+ // The number of tokens added to the bucket during each fill interval. If not specified, defaults to 1.
+ TokensPerFill uint32 `protobuf:"varint,2,opt,name=tokens_per_fill,json=tokensPerFill,proto3" json:"tokens_per_fill,omitempty"`
+ // The fill interval that tokens are added to the bucket.
+ // During each fill interval tokens_per_fill are added to the bucket.
+ // The bucket will never contain more than max_tokens tokens.
+ // *Note*: It must be >= 50ms to avoid aggressive fills.
+ Interval *types.Duration `protobuf:"bytes,3,opt,name=interval,proto3" json:"interval,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *TokenBucket) Reset() { *m = TokenBucket{} }
+func (m *TokenBucket) String() string { return proto.CompactTextString(m) }
+func (*TokenBucket) ProtoMessage() {}
+func (*TokenBucket) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8c56a442a0838fd7, []int{12}
}
-func (m *StringMatch) XXX_Unmarshal(b []byte) error {
+func (m *TokenBucket) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
-func (m *StringMatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+func (m *TokenBucket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
- return xxx_messageInfo_StringMatch.Marshal(b, m, deterministic)
+ return xxx_messageInfo_TokenBucket.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
@@ -2457,160 +2493,69 @@ func (m *StringMatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
return b[:n], nil
}
}
-func (m *StringMatch) XXX_Merge(src proto.Message) {
- xxx_messageInfo_StringMatch.Merge(m, src)
+func (m *TokenBucket) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TokenBucket.Merge(m, src)
}
-func (m *StringMatch) XXX_Size() int {
+func (m *TokenBucket) XXX_Size() int {
return m.Size()
}
-func (m *StringMatch) XXX_DiscardUnknown() {
- xxx_messageInfo_StringMatch.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_StringMatch proto.InternalMessageInfo
-
-type isStringMatch_MatchType interface {
- isStringMatch_MatchType()
- MarshalTo([]byte) (int, error)
- Size() int
-}
-
-type StringMatch_Exact struct {
- Exact string `protobuf:"bytes,1,opt,name=exact,proto3,oneof"`
-}
-type StringMatch_Prefix struct {
- Prefix string `protobuf:"bytes,2,opt,name=prefix,proto3,oneof"`
-}
-type StringMatch_Regex struct {
- Regex string `protobuf:"bytes,3,opt,name=regex,proto3,oneof"`
+func (m *TokenBucket) XXX_DiscardUnknown() {
+ xxx_messageInfo_TokenBucket.DiscardUnknown(m)
}
-func (*StringMatch_Exact) isStringMatch_MatchType() {}
-func (*StringMatch_Prefix) isStringMatch_MatchType() {}
-func (*StringMatch_Regex) isStringMatch_MatchType() {}
+var xxx_messageInfo_TokenBucket proto.InternalMessageInfo
-func (m *StringMatch) GetMatchType() isStringMatch_MatchType {
+func (m *TokenBucket) GetMaxTokens() uint32 {
if m != nil {
- return m.MatchType
+ return m.MaxTokens
}
- return nil
+ return 0
}
-func (m *StringMatch) GetExact() string {
- if x, ok := m.GetMatchType().(*StringMatch_Exact); ok {
- return x.Exact
+func (m *TokenBucket) GetTokensPerFill() uint32 {
+ if m != nil {
+ return m.TokensPerFill
}
- return ""
+ return 0
}
-func (m *StringMatch) GetPrefix() string {
- if x, ok := m.GetMatchType().(*StringMatch_Prefix); ok {
- return x.Prefix
+func (m *TokenBucket) GetInterval() *types.Duration {
+ if m != nil {
+ return m.Interval
}
- return ""
+ return nil
}
-func (m *StringMatch) GetRegex() string {
- if x, ok := m.GetMatchType().(*StringMatch_Regex); ok {
- return x.Regex
- }
- return ""
+// L4 routing rule weighted destination.
+type RouteDestination struct {
+ // Destination uniquely identifies the instances of a service
+ // to which the request/connection should be forwarded to.
+ Destination *Destination `protobuf:"bytes,1,opt,name=destination,proto3" json:"destination,omitempty"`
+ // The proportion of traffic to be forwarded to the service
+ // version. If there is only one destination in a rule, all traffic will be
+ // routed to it irrespective of the weight.
+ Weight int32 `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty"`
+ // L4 local rate limiting policy.
+ LocalRateLimit *LocalRateLimit `protobuf:"bytes,3,opt,name=local_rate_limit,json=localRateLimit,proto3" json:"local_rate_limit,omitempty"`
+ // L4 global rate limiting policy.
+ GlobalRateLimit *GlobalRateLimit `protobuf:"bytes,4,opt,name=global_rate_limit,json=globalRateLimit,proto3" json:"global_rate_limit,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*StringMatch) XXX_OneofWrappers() []interface{} {
- return []interface{}{
- (*StringMatch_Exact)(nil),
- (*StringMatch_Prefix)(nil),
- (*StringMatch_Regex)(nil),
- }
+func (m *RouteDestination) Reset() { *m = RouteDestination{} }
+func (m *RouteDestination) String() string { return proto.CompactTextString(m) }
+func (*RouteDestination) ProtoMessage() {}
+func (*RouteDestination) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8c56a442a0838fd7, []int{13}
}
-
-// Describes the retry policy to use when a HTTP request fails. For
-// example, the following rule sets the maximum number of retries to 3 when
-// calling ratings:v1 service, with a 2s timeout per retry attempt.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// retries:
-// attempts: 3
-// perTryTimeout: 2s
-// retryOn: gateway-error,connect-failure,refused-stream
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// retries:
-// attempts: 3
-// perTryTimeout: 2s
-// retryOn: gateway-error,connect-failure,refused-stream
-// ```
-// {{}}
-// {{}}
-//
-type HTTPRetry struct {
- // Number of retries to be allowed for a given request. The interval
- // between retries will be determined automatically (25ms+). When request
- // `timeout` of the [HTTP route](https://istio.io/docs/reference/config/networking/virtual-service/#HTTPRoute)
- // or `per_try_timeout` is configured, the actual number of retries attempted also depends on
- // the specified request `timeout` and `per_try_timeout` values.
- Attempts int32 `protobuf:"varint,1,opt,name=attempts,proto3" json:"attempts,omitempty"`
- // Timeout per retry attempt for a given request. format: 1h/1m/1s/1ms. MUST BE >=1ms.
- // Default is same value as request
- // `timeout` of the [HTTP route](https://istio.io/docs/reference/config/networking/virtual-service/#HTTPRoute),
- // which means no timeout.
- PerTryTimeout *types.Duration `protobuf:"bytes,2,opt,name=per_try_timeout,json=perTryTimeout,proto3" json:"per_try_timeout,omitempty"`
- // Specifies the conditions under which retry takes place.
- // One or more policies can be specified using a ‘,’ delimited list.
- // See the [retry policies](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-on)
- // and [gRPC retry policies](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-grpc-on) for more details.
- RetryOn string `protobuf:"bytes,3,opt,name=retry_on,json=retryOn,proto3" json:"retry_on,omitempty"`
- // Flag to specify whether the retries should retry to other localities.
- // See the [retry plugin configuration](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/http/http_connection_management#retry-plugin-configuration) for more details.
- RetryRemoteLocalities *types.BoolValue `protobuf:"bytes,4,opt,name=retry_remote_localities,json=retryRemoteLocalities,proto3" json:"retry_remote_localities,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *HTTPRetry) Reset() { *m = HTTPRetry{} }
-func (m *HTTPRetry) String() string { return proto.CompactTextString(m) }
-func (*HTTPRetry) ProtoMessage() {}
-func (*HTTPRetry) Descriptor() ([]byte, []int) {
- return fileDescriptor_8c56a442a0838fd7, []int{15}
-}
-func (m *HTTPRetry) XXX_Unmarshal(b []byte) error {
+func (m *RouteDestination) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
-func (m *HTTPRetry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+func (m *RouteDestination) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
- return xxx_messageInfo_HTTPRetry.Marshal(b, m, deterministic)
+ return xxx_messageInfo_RouteDestination.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
@@ -2620,153 +2565,67 @@ func (m *HTTPRetry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return b[:n], nil
}
}
-func (m *HTTPRetry) XXX_Merge(src proto.Message) {
- xxx_messageInfo_HTTPRetry.Merge(m, src)
+func (m *RouteDestination) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_RouteDestination.Merge(m, src)
}
-func (m *HTTPRetry) XXX_Size() int {
+func (m *RouteDestination) XXX_Size() int {
return m.Size()
}
-func (m *HTTPRetry) XXX_DiscardUnknown() {
- xxx_messageInfo_HTTPRetry.DiscardUnknown(m)
+func (m *RouteDestination) XXX_DiscardUnknown() {
+ xxx_messageInfo_RouteDestination.DiscardUnknown(m)
}
-var xxx_messageInfo_HTTPRetry proto.InternalMessageInfo
+var xxx_messageInfo_RouteDestination proto.InternalMessageInfo
-func (m *HTTPRetry) GetAttempts() int32 {
+func (m *RouteDestination) GetDestination() *Destination {
if m != nil {
- return m.Attempts
+ return m.Destination
}
- return 0
+ return nil
}
-func (m *HTTPRetry) GetPerTryTimeout() *types.Duration {
+func (m *RouteDestination) GetWeight() int32 {
if m != nil {
- return m.PerTryTimeout
+ return m.Weight
}
- return nil
+ return 0
}
-func (m *HTTPRetry) GetRetryOn() string {
+func (m *RouteDestination) GetLocalRateLimit() *LocalRateLimit {
if m != nil {
- return m.RetryOn
+ return m.LocalRateLimit
}
- return ""
+ return nil
}
-func (m *HTTPRetry) GetRetryRemoteLocalities() *types.BoolValue {
+func (m *RouteDestination) GetGlobalRateLimit() *GlobalRateLimit {
if m != nil {
- return m.RetryRemoteLocalities
+ return m.GlobalRateLimit
}
return nil
}
-// Describes the Cross-Origin Resource Sharing (CORS) policy, for a given
-// service. Refer to [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS)
-// for further details about cross origin resource sharing. For example,
-// the following rule restricts cross origin requests to those originating
-// from example.com domain using HTTP POST/GET, and sets the
-// `Access-Control-Allow-Credentials` header to false. In addition, it only
-// exposes `X-Foo-bar` header and sets an expiry period of 1 day.
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// corsPolicy:
-// allowOrigins:
-// - exact: https://example.com
-// allowMethods:
-// - POST
-// - GET
-// allowCredentials: false
-// allowHeaders:
-// - X-Foo-Bar
-// maxAge: "24h"
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// corsPolicy:
-// allowOrigins:
-// - exact: https://example.com
-// allowMethods:
-// - POST
-// - GET
-// allowCredentials: false
-// allowHeaders:
-// - X-Foo-Bar
-// maxAge: "24h"
-// ```
-// {{}}
-// {{}}
-//
-type CorsPolicy struct {
- // The list of origins that are allowed to perform CORS requests. The
- // content will be serialized into the Access-Control-Allow-Origin
- // header. Wildcard * will allow all origins.
- // $hide_from_docs
- AllowOrigin []string `protobuf:"bytes,1,rep,name=allow_origin,json=allowOrigin,proto3" json:"allow_origin,omitempty"` // Deprecated: Do not use.
- // String patterns that match allowed origins.
- // An origin is allowed if any of the string matchers match.
- // If a match is found, then the outgoing Access-Control-Allow-Origin would be set to the origin as provided by the client.
- AllowOrigins []*StringMatch `protobuf:"bytes,7,rep,name=allow_origins,json=allowOrigins,proto3" json:"allow_origins,omitempty"`
- // List of HTTP methods allowed to access the resource. The content will
- // be serialized into the Access-Control-Allow-Methods header.
- AllowMethods []string `protobuf:"bytes,2,rep,name=allow_methods,json=allowMethods,proto3" json:"allow_methods,omitempty"`
- // List of HTTP headers that can be used when requesting the
- // resource. Serialized to Access-Control-Allow-Headers header.
- AllowHeaders []string `protobuf:"bytes,3,rep,name=allow_headers,json=allowHeaders,proto3" json:"allow_headers,omitempty"`
- // A list of HTTP headers that the browsers are allowed to
- // access. Serialized into Access-Control-Expose-Headers header.
- ExposeHeaders []string `protobuf:"bytes,4,rep,name=expose_headers,json=exposeHeaders,proto3" json:"expose_headers,omitempty"`
- // Specifies how long the results of a preflight request can be
- // cached. Translates to the `Access-Control-Max-Age` header.
- MaxAge *types.Duration `protobuf:"bytes,5,opt,name=max_age,json=maxAge,proto3" json:"max_age,omitempty"`
- // Indicates whether the caller is allowed to send the actual request
- // (not the preflight) using credentials. Translates to
- // `Access-Control-Allow-Credentials` header.
- AllowCredentials *types.BoolValue `protobuf:"bytes,6,opt,name=allow_credentials,json=allowCredentials,proto3" json:"allow_credentials,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+// LocalRateLimit used to rate limit the L4 connections locally
+type LocalRateLimit struct {
+ // The token bucket configuration to use for rate limiting requests.
+ TokenBucket *TokenBucket `protobuf:"bytes,1,opt,name=token_bucket,json=tokenBucket,proto3" json:"token_bucket,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
-func (m *CorsPolicy) Reset() { *m = CorsPolicy{} }
-func (m *CorsPolicy) String() string { return proto.CompactTextString(m) }
-func (*CorsPolicy) ProtoMessage() {}
-func (*CorsPolicy) Descriptor() ([]byte, []int) {
- return fileDescriptor_8c56a442a0838fd7, []int{16}
+func (m *LocalRateLimit) Reset() { *m = LocalRateLimit{} }
+func (m *LocalRateLimit) String() string { return proto.CompactTextString(m) }
+func (*LocalRateLimit) ProtoMessage() {}
+func (*LocalRateLimit) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8c56a442a0838fd7, []int{14}
}
-func (m *CorsPolicy) XXX_Unmarshal(b []byte) error {
+func (m *LocalRateLimit) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
-func (m *CorsPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+func (m *LocalRateLimit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
- return xxx_messageInfo_CorsPolicy.Marshal(b, m, deterministic)
+ return xxx_messageInfo_LocalRateLimit.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
@@ -2776,100 +2635,182 @@ func (m *CorsPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return b[:n], nil
}
}
-func (m *CorsPolicy) XXX_Merge(src proto.Message) {
- xxx_messageInfo_CorsPolicy.Merge(m, src)
+func (m *LocalRateLimit) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_LocalRateLimit.Merge(m, src)
}
-func (m *CorsPolicy) XXX_Size() int {
+func (m *LocalRateLimit) XXX_Size() int {
return m.Size()
}
-func (m *CorsPolicy) XXX_DiscardUnknown() {
- xxx_messageInfo_CorsPolicy.DiscardUnknown(m)
+func (m *LocalRateLimit) XXX_DiscardUnknown() {
+ xxx_messageInfo_LocalRateLimit.DiscardUnknown(m)
}
-var xxx_messageInfo_CorsPolicy proto.InternalMessageInfo
+var xxx_messageInfo_LocalRateLimit proto.InternalMessageInfo
-// Deprecated: Do not use.
-func (m *CorsPolicy) GetAllowOrigin() []string {
+func (m *LocalRateLimit) GetTokenBucket() *TokenBucket {
if m != nil {
- return m.AllowOrigin
+ return m.TokenBucket
}
return nil
}
-func (m *CorsPolicy) GetAllowOrigins() []*StringMatch {
- if m != nil {
- return m.AllowOrigins
+// GlobalRateLimit used to rate limit the L4 connections calling the global rate limit service.
+type GlobalRateLimit struct {
+ // The rate limit domain to use when calling the rate limit service.
+ Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain,omitempty"`
+ // The timeout for the rate limit service RPC.
+ // If set, it will override the global value from mesh config.
+ Timeout *types.Duration `protobuf:"bytes,2,opt,name=timeout,proto3" json:"timeout,omitempty"`
+ // The filter’s behaviour in case the rate limiting service does not respond back.
+ // When it is set to true, Envoy will allow traffic in case of communication failure
+ // between rate limiting service and the proxy.
+ // If set, it will override the global value from mesh config.
+ FailOpen bool `protobuf:"varint,3,opt,name=fail_open,json=failOpen,proto3" json:"fail_open,omitempty"`
+ // The rate limit descriptor list to use in the rate limit service request.
+ Descriptors *GlobalRateLimit_RateLimitDescriptor `protobuf:"bytes,4,opt,name=descriptors,proto3" json:"descriptors,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GlobalRateLimit) Reset() { *m = GlobalRateLimit{} }
+func (m *GlobalRateLimit) String() string { return proto.CompactTextString(m) }
+func (*GlobalRateLimit) ProtoMessage() {}
+func (*GlobalRateLimit) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8c56a442a0838fd7, []int{15}
+}
+func (m *GlobalRateLimit) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GlobalRateLimit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GlobalRateLimit.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
}
- return nil
+}
+func (m *GlobalRateLimit) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GlobalRateLimit.Merge(m, src)
+}
+func (m *GlobalRateLimit) XXX_Size() int {
+ return m.Size()
+}
+func (m *GlobalRateLimit) XXX_DiscardUnknown() {
+ xxx_messageInfo_GlobalRateLimit.DiscardUnknown(m)
}
-func (m *CorsPolicy) GetAllowMethods() []string {
+var xxx_messageInfo_GlobalRateLimit proto.InternalMessageInfo
+
+func (m *GlobalRateLimit) GetDomain() string {
if m != nil {
- return m.AllowMethods
+ return m.Domain
}
- return nil
+ return ""
}
-func (m *CorsPolicy) GetAllowHeaders() []string {
+func (m *GlobalRateLimit) GetTimeout() *types.Duration {
if m != nil {
- return m.AllowHeaders
+ return m.Timeout
}
return nil
}
-func (m *CorsPolicy) GetExposeHeaders() []string {
+func (m *GlobalRateLimit) GetFailOpen() bool {
if m != nil {
- return m.ExposeHeaders
+ return m.FailOpen
}
- return nil
+ return false
}
-func (m *CorsPolicy) GetMaxAge() *types.Duration {
+func (m *GlobalRateLimit) GetDescriptors() *GlobalRateLimit_RateLimitDescriptor {
if m != nil {
- return m.MaxAge
+ return m.Descriptors
}
return nil
}
-func (m *CorsPolicy) GetAllowCredentials() *types.BoolValue {
+// A RateLimitDescriptor is a list of hierarchical entries that are used by the service to
+// determine the final rate limit key and overall allowed limit. Here are some examples of how
+// they might be used for the domain "envoy".
+type GlobalRateLimit_RateLimitDescriptor struct {
+ // Descriptor entries.
+ Entries []*GlobalRateLimit_RateLimitDescriptor_Entry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GlobalRateLimit_RateLimitDescriptor) Reset() { *m = GlobalRateLimit_RateLimitDescriptor{} }
+func (m *GlobalRateLimit_RateLimitDescriptor) String() string { return proto.CompactTextString(m) }
+func (*GlobalRateLimit_RateLimitDescriptor) ProtoMessage() {}
+func (*GlobalRateLimit_RateLimitDescriptor) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8c56a442a0838fd7, []int{15, 0}
+}
+func (m *GlobalRateLimit_RateLimitDescriptor) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GlobalRateLimit_RateLimitDescriptor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GlobalRateLimit_RateLimitDescriptor.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GlobalRateLimit_RateLimitDescriptor) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GlobalRateLimit_RateLimitDescriptor.Merge(m, src)
+}
+func (m *GlobalRateLimit_RateLimitDescriptor) XXX_Size() int {
+ return m.Size()
+}
+func (m *GlobalRateLimit_RateLimitDescriptor) XXX_DiscardUnknown() {
+ xxx_messageInfo_GlobalRateLimit_RateLimitDescriptor.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GlobalRateLimit_RateLimitDescriptor proto.InternalMessageInfo
+
+func (m *GlobalRateLimit_RateLimitDescriptor) GetEntries() []*GlobalRateLimit_RateLimitDescriptor_Entry {
if m != nil {
- return m.AllowCredentials
+ return m.Entries
}
return nil
}
-// HTTPFaultInjection can be used to specify one or more faults to inject
-// while forwarding HTTP requests to the destination specified in a route.
-// Fault specification is part of a VirtualService rule. Faults include
-// aborting the Http request from downstream service, and/or delaying
-// proxying of requests. A fault rule MUST HAVE delay or abort or both.
-//
-// *Note:* Delay and abort faults are independent of one another, even if
-// both are specified simultaneously.
-type HTTPFaultInjection struct {
- // Delay requests before forwarding, emulating various failures such as
- // network issues, overloaded upstream service, etc.
- Delay *HTTPFaultInjection_Delay `protobuf:"bytes,1,opt,name=delay,proto3" json:"delay,omitempty"`
- // Abort Http request attempts and return error codes back to downstream
- // service, giving the impression that the upstream service is faulty.
- Abort *HTTPFaultInjection_Abort `protobuf:"bytes,2,opt,name=abort,proto3" json:"abort,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+type GlobalRateLimit_RateLimitDescriptor_Entry struct {
+ // Descriptor key.
+ Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+ // Descriptor value.
+ Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
-func (m *HTTPFaultInjection) Reset() { *m = HTTPFaultInjection{} }
-func (m *HTTPFaultInjection) String() string { return proto.CompactTextString(m) }
-func (*HTTPFaultInjection) ProtoMessage() {}
-func (*HTTPFaultInjection) Descriptor() ([]byte, []int) {
- return fileDescriptor_8c56a442a0838fd7, []int{17}
+func (m *GlobalRateLimit_RateLimitDescriptor_Entry) Reset() {
+ *m = GlobalRateLimit_RateLimitDescriptor_Entry{}
}
-func (m *HTTPFaultInjection) XXX_Unmarshal(b []byte) error {
+func (m *GlobalRateLimit_RateLimitDescriptor_Entry) String() string {
+ return proto.CompactTextString(m)
+}
+func (*GlobalRateLimit_RateLimitDescriptor_Entry) ProtoMessage() {}
+func (*GlobalRateLimit_RateLimitDescriptor_Entry) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8c56a442a0838fd7, []int{15, 0, 0}
+}
+func (m *GlobalRateLimit_RateLimitDescriptor_Entry) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
-func (m *HTTPFaultInjection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+func (m *GlobalRateLimit_RateLimitDescriptor_Entry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
- return xxx_messageInfo_HTTPFaultInjection.Marshal(b, m, deterministic)
+ return xxx_messageInfo_GlobalRateLimit_RateLimitDescriptor_Entry.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
@@ -2879,120 +2820,76 @@ func (m *HTTPFaultInjection) XXX_Marshal(b []byte, deterministic bool) ([]byte,
return b[:n], nil
}
}
-func (m *HTTPFaultInjection) XXX_Merge(src proto.Message) {
- xxx_messageInfo_HTTPFaultInjection.Merge(m, src)
+func (m *GlobalRateLimit_RateLimitDescriptor_Entry) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GlobalRateLimit_RateLimitDescriptor_Entry.Merge(m, src)
}
-func (m *HTTPFaultInjection) XXX_Size() int {
+func (m *GlobalRateLimit_RateLimitDescriptor_Entry) XXX_Size() int {
return m.Size()
}
-func (m *HTTPFaultInjection) XXX_DiscardUnknown() {
- xxx_messageInfo_HTTPFaultInjection.DiscardUnknown(m)
+func (m *GlobalRateLimit_RateLimitDescriptor_Entry) XXX_DiscardUnknown() {
+ xxx_messageInfo_GlobalRateLimit_RateLimitDescriptor_Entry.DiscardUnknown(m)
}
-var xxx_messageInfo_HTTPFaultInjection proto.InternalMessageInfo
+var xxx_messageInfo_GlobalRateLimit_RateLimitDescriptor_Entry proto.InternalMessageInfo
-func (m *HTTPFaultInjection) GetDelay() *HTTPFaultInjection_Delay {
+func (m *GlobalRateLimit_RateLimitDescriptor_Entry) GetKey() string {
if m != nil {
- return m.Delay
+ return m.Key
}
- return nil
+ return ""
}
-func (m *HTTPFaultInjection) GetAbort() *HTTPFaultInjection_Abort {
+func (m *GlobalRateLimit_RateLimitDescriptor_Entry) GetValue() string {
if m != nil {
- return m.Abort
+ return m.Value
}
- return nil
+ return ""
}
-// Delay specification is used to inject latency into the request
-// forwarding path. The following example will introduce a 5 second delay
-// in 1 out of every 1000 requests to the "v1" version of the "reviews"
-// service from all pods with label env: prod
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: reviews-route
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// http:
-// - match:
-// - sourceLabels:
-// env: prod
-// route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v1
-// fault:
-// delay:
-// percentage:
-// value: 0.1
-// fixedDelay: 5s
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: reviews-route
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// http:
-// - match:
-// - sourceLabels:
-// env: prod
-// route:
-// - destination:
-// host: reviews.prod.svc.cluster.local
-// subset: v1
-// fault:
-// delay:
-// percentage:
-// value: 0.1
-// fixedDelay: 5s
-// ```
-// {{}}
-// {{}}
-//
-// The _fixedDelay_ field is used to indicate the amount of delay in seconds.
-// The optional _percentage_ field can be used to only delay a certain
-// percentage of requests. If left unspecified, all request will be delayed.
-type HTTPFaultInjection_Delay struct {
- // Percentage of requests on which the delay will be injected (0-100).
- // Use of integer `percent` value is deprecated. Use the double `percentage`
- // field instead.
- Percent int32 `protobuf:"varint,1,opt,name=percent,proto3" json:"percent,omitempty"` // Deprecated: Do not use.
- // Types that are valid to be assigned to HttpDelayType:
- // *HTTPFaultInjection_Delay_FixedDelay
- // *HTTPFaultInjection_Delay_ExponentialDelay
- HttpDelayType isHTTPFaultInjection_Delay_HttpDelayType `protobuf_oneof:"http_delay_type"`
- // Percentage of requests on which the delay will be injected.
- Percentage *Percent `protobuf:"bytes,5,opt,name=percentage,proto3" json:"percentage,omitempty"`
+// L4 connection match attributes. Note that L4 connection matching support
+// is incomplete.
+type L4MatchAttributes struct {
+ // IPv4 or IPv6 ip addresses of destination with optional subnet. E.g.,
+ // a.b.c.d/xx form or just a.b.c.d.
+ DestinationSubnets []string `protobuf:"bytes,1,rep,name=destination_subnets,json=destinationSubnets,proto3" json:"destination_subnets,omitempty"`
+ // Specifies the port on the host that is being addressed. Many services
+ // only expose a single port or label ports with the protocols they support,
+ // in these cases it is not required to explicitly select the port.
+ Port uint32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"`
+ // IPv4 or IPv6 ip address of source with optional subnet. E.g., a.b.c.d/xx
+ // form or just a.b.c.d
+ // $hide_from_docs
+ SourceSubnet string `protobuf:"bytes,3,opt,name=source_subnet,json=sourceSubnet,proto3" json:"source_subnet,omitempty"`
+ // One or more labels that constrain the applicability of a rule to
+ // workloads with the given labels. If the VirtualService has a list of
+ // gateways specified in the top-level `gateways` field, it should include the reserved gateway
+ // `mesh` in order for this field to be applicable.
+ SourceLabels map[string]string `protobuf:"bytes,4,rep,name=source_labels,json=sourceLabels,proto3" json:"source_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // Names of gateways where the rule should be applied. Gateway names
+ // in the top-level `gateways` field of the VirtualService (if any) are overridden. The gateway
+ // match is independent of sourceLabels.
+ Gateways []string `protobuf:"bytes,5,rep,name=gateways,proto3" json:"gateways,omitempty"`
+ // Source namespace constraining the applicability of a rule to workloads in that namespace.
+ // If the VirtualService has a list of gateways specified in the top-level `gateways` field,
+ // it must include the reserved gateway `mesh` for this field to be applicable.
+ SourceNamespace string `protobuf:"bytes,6,opt,name=source_namespace,json=sourceNamespace,proto3" json:"source_namespace,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
-func (m *HTTPFaultInjection_Delay) Reset() { *m = HTTPFaultInjection_Delay{} }
-func (m *HTTPFaultInjection_Delay) String() string { return proto.CompactTextString(m) }
-func (*HTTPFaultInjection_Delay) ProtoMessage() {}
-func (*HTTPFaultInjection_Delay) Descriptor() ([]byte, []int) {
- return fileDescriptor_8c56a442a0838fd7, []int{17, 0}
+func (m *L4MatchAttributes) Reset() { *m = L4MatchAttributes{} }
+func (m *L4MatchAttributes) String() string { return proto.CompactTextString(m) }
+func (*L4MatchAttributes) ProtoMessage() {}
+func (*L4MatchAttributes) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8c56a442a0838fd7, []int{16}
}
-func (m *HTTPFaultInjection_Delay) XXX_Unmarshal(b []byte) error {
+func (m *L4MatchAttributes) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
-func (m *HTTPFaultInjection_Delay) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+func (m *L4MatchAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
- return xxx_messageInfo_HTTPFaultInjection_Delay.Marshal(b, m, deterministic)
+ return xxx_messageInfo_L4MatchAttributes.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
@@ -3002,157 +2899,105 @@ func (m *HTTPFaultInjection_Delay) XXX_Marshal(b []byte, deterministic bool) ([]
return b[:n], nil
}
}
-func (m *HTTPFaultInjection_Delay) XXX_Merge(src proto.Message) {
- xxx_messageInfo_HTTPFaultInjection_Delay.Merge(m, src)
+func (m *L4MatchAttributes) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_L4MatchAttributes.Merge(m, src)
}
-func (m *HTTPFaultInjection_Delay) XXX_Size() int {
+func (m *L4MatchAttributes) XXX_Size() int {
return m.Size()
}
-func (m *HTTPFaultInjection_Delay) XXX_DiscardUnknown() {
- xxx_messageInfo_HTTPFaultInjection_Delay.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_HTTPFaultInjection_Delay proto.InternalMessageInfo
-
-type isHTTPFaultInjection_Delay_HttpDelayType interface {
- isHTTPFaultInjection_Delay_HttpDelayType()
- MarshalTo([]byte) (int, error)
- Size() int
-}
-
-type HTTPFaultInjection_Delay_FixedDelay struct {
- FixedDelay *types.Duration `protobuf:"bytes,2,opt,name=fixed_delay,json=fixedDelay,proto3,oneof"`
-}
-type HTTPFaultInjection_Delay_ExponentialDelay struct {
- ExponentialDelay *types.Duration `protobuf:"bytes,3,opt,name=exponential_delay,json=exponentialDelay,proto3,oneof"`
+func (m *L4MatchAttributes) XXX_DiscardUnknown() {
+ xxx_messageInfo_L4MatchAttributes.DiscardUnknown(m)
}
-func (*HTTPFaultInjection_Delay_FixedDelay) isHTTPFaultInjection_Delay_HttpDelayType() {}
-func (*HTTPFaultInjection_Delay_ExponentialDelay) isHTTPFaultInjection_Delay_HttpDelayType() {}
+var xxx_messageInfo_L4MatchAttributes proto.InternalMessageInfo
-func (m *HTTPFaultInjection_Delay) GetHttpDelayType() isHTTPFaultInjection_Delay_HttpDelayType {
+func (m *L4MatchAttributes) GetDestinationSubnets() []string {
if m != nil {
- return m.HttpDelayType
+ return m.DestinationSubnets
}
return nil
}
-// Deprecated: Do not use.
-func (m *HTTPFaultInjection_Delay) GetPercent() int32 {
+func (m *L4MatchAttributes) GetPort() uint32 {
if m != nil {
- return m.Percent
+ return m.Port
}
return 0
}
-func (m *HTTPFaultInjection_Delay) GetFixedDelay() *types.Duration {
- if x, ok := m.GetHttpDelayType().(*HTTPFaultInjection_Delay_FixedDelay); ok {
- return x.FixedDelay
+func (m *L4MatchAttributes) GetSourceSubnet() string {
+ if m != nil {
+ return m.SourceSubnet
}
- return nil
+ return ""
}
-func (m *HTTPFaultInjection_Delay) GetExponentialDelay() *types.Duration {
- if x, ok := m.GetHttpDelayType().(*HTTPFaultInjection_Delay_ExponentialDelay); ok {
- return x.ExponentialDelay
+func (m *L4MatchAttributes) GetSourceLabels() map[string]string {
+ if m != nil {
+ return m.SourceLabels
}
return nil
}
-func (m *HTTPFaultInjection_Delay) GetPercentage() *Percent {
+func (m *L4MatchAttributes) GetGateways() []string {
if m != nil {
- return m.Percentage
+ return m.Gateways
}
return nil
}
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*HTTPFaultInjection_Delay) XXX_OneofWrappers() []interface{} {
- return []interface{}{
- (*HTTPFaultInjection_Delay_FixedDelay)(nil),
- (*HTTPFaultInjection_Delay_ExponentialDelay)(nil),
+func (m *L4MatchAttributes) GetSourceNamespace() string {
+ if m != nil {
+ return m.SourceNamespace
}
+ return ""
}
-// Abort specification is used to prematurely abort a request with a
-// pre-specified error code. The following example will return an HTTP 400
-// error code for 1 out of every 1000 requests to the "ratings" service "v1".
-//
-// {{}}
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// fault:
-// abort:
-// percentage:
-// value: 0.1
-// httpStatus: 400
-// ```
-// {{}}
-//
-// {{}}
-// ```yaml
-// apiVersion: networking.istio.io/v1beta1
-// kind: VirtualService
-// metadata:
-// name: ratings-route
-// spec:
-// hosts:
-// - ratings.prod.svc.cluster.local
-// http:
-// - route:
-// - destination:
-// host: ratings.prod.svc.cluster.local
-// subset: v1
-// fault:
-// abort:
-// percentage:
-// value: 0.1
-// httpStatus: 400
-// ```
-// {{}}
-// {{}}
-//
-// The _httpStatus_ field is used to indicate the HTTP status code to
-// return to the caller. The optional _percentage_ field can be used to only
-// abort a certain percentage of requests. If not specified, all requests are
-// aborted.
-type HTTPFaultInjection_Abort struct {
- // Types that are valid to be assigned to ErrorType:
- // *HTTPFaultInjection_Abort_HttpStatus
- // *HTTPFaultInjection_Abort_GrpcStatus
- // *HTTPFaultInjection_Abort_Http2Error
- ErrorType isHTTPFaultInjection_Abort_ErrorType `protobuf_oneof:"error_type"`
- // Percentage of requests to be aborted with the error code provided.
- Percentage *Percent `protobuf:"bytes,5,opt,name=percentage,proto3" json:"percentage,omitempty"`
+// TLS connection match attributes.
+type TLSMatchAttributes struct {
+ // SNI (server name indicator) to match on. Wildcard prefixes
+ // can be used in the SNI value, e.g., *.com will match foo.example.com
+ // as well as example.com. An SNI value must be a subset (i.e., fall
+ // within the domain) of the corresponding virtual serivce's hosts.
+ SniHosts []string `protobuf:"bytes,1,rep,name=sni_hosts,json=sniHosts,proto3" json:"sni_hosts,omitempty"`
+ // IPv4 or IPv6 ip addresses of destination with optional subnet. E.g.,
+ // a.b.c.d/xx form or just a.b.c.d.
+ DestinationSubnets []string `protobuf:"bytes,2,rep,name=destination_subnets,json=destinationSubnets,proto3" json:"destination_subnets,omitempty"`
+ // Specifies the port on the host that is being addressed. Many services
+ // only expose a single port or label ports with the protocols they
+ // support, in these cases it is not required to explicitly select the
+ // port.
+ Port uint32 `protobuf:"varint,3,opt,name=port,proto3" json:"port,omitempty"`
+ // One or more labels that constrain the applicability of a rule to
+ // workloads with the given labels. If the VirtualService has a list of
+ // gateways specified in the top-level `gateways` field, it should include the reserved gateway
+ // `mesh` in order for this field to be applicable.
+ SourceLabels map[string]string `protobuf:"bytes,5,rep,name=source_labels,json=sourceLabels,proto3" json:"source_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // Names of gateways where the rule should be applied. Gateway names
+ // in the top-level `gateways` field of the VirtualService (if any) are overridden. The gateway
+ // match is independent of sourceLabels.
+ Gateways []string `protobuf:"bytes,6,rep,name=gateways,proto3" json:"gateways,omitempty"`
+ // Source namespace constraining the applicability of a rule to workloads in that namespace.
+ // If the VirtualService has a list of gateways specified in the top-level `gateways` field,
+ // it must include the reserved gateway `mesh` for this field to be applicable.
+ SourceNamespace string `protobuf:"bytes,7,opt,name=source_namespace,json=sourceNamespace,proto3" json:"source_namespace,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
-func (m *HTTPFaultInjection_Abort) Reset() { *m = HTTPFaultInjection_Abort{} }
-func (m *HTTPFaultInjection_Abort) String() string { return proto.CompactTextString(m) }
-func (*HTTPFaultInjection_Abort) ProtoMessage() {}
-func (*HTTPFaultInjection_Abort) Descriptor() ([]byte, []int) {
- return fileDescriptor_8c56a442a0838fd7, []int{17, 1}
+func (m *TLSMatchAttributes) Reset() { *m = TLSMatchAttributes{} }
+func (m *TLSMatchAttributes) String() string { return proto.CompactTextString(m) }
+func (*TLSMatchAttributes) ProtoMessage() {}
+func (*TLSMatchAttributes) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8c56a442a0838fd7, []int{17}
}
-func (m *HTTPFaultInjection_Abort) XXX_Unmarshal(b []byte) error {
+func (m *TLSMatchAttributes) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
-func (m *HTTPFaultInjection_Abort) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+func (m *TLSMatchAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
- return xxx_messageInfo_HTTPFaultInjection_Abort.Marshal(b, m, deterministic)
+ return xxx_messageInfo_TLSMatchAttributes.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
@@ -3162,104 +3007,136 @@ func (m *HTTPFaultInjection_Abort) XXX_Marshal(b []byte, deterministic bool) ([]
return b[:n], nil
}
}
-func (m *HTTPFaultInjection_Abort) XXX_Merge(src proto.Message) {
- xxx_messageInfo_HTTPFaultInjection_Abort.Merge(m, src)
+func (m *TLSMatchAttributes) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TLSMatchAttributes.Merge(m, src)
}
-func (m *HTTPFaultInjection_Abort) XXX_Size() int {
+func (m *TLSMatchAttributes) XXX_Size() int {
return m.Size()
}
-func (m *HTTPFaultInjection_Abort) XXX_DiscardUnknown() {
- xxx_messageInfo_HTTPFaultInjection_Abort.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_HTTPFaultInjection_Abort proto.InternalMessageInfo
-
-type isHTTPFaultInjection_Abort_ErrorType interface {
- isHTTPFaultInjection_Abort_ErrorType()
- MarshalTo([]byte) (int, error)
- Size() int
-}
-
-type HTTPFaultInjection_Abort_HttpStatus struct {
- HttpStatus int32 `protobuf:"varint,2,opt,name=http_status,json=httpStatus,proto3,oneof"`
-}
-type HTTPFaultInjection_Abort_GrpcStatus struct {
- GrpcStatus string `protobuf:"bytes,3,opt,name=grpc_status,json=grpcStatus,proto3,oneof"`
-}
-type HTTPFaultInjection_Abort_Http2Error struct {
- Http2Error string `protobuf:"bytes,4,opt,name=http2_error,json=http2Error,proto3,oneof"`
+func (m *TLSMatchAttributes) XXX_DiscardUnknown() {
+ xxx_messageInfo_TLSMatchAttributes.DiscardUnknown(m)
}
-func (*HTTPFaultInjection_Abort_HttpStatus) isHTTPFaultInjection_Abort_ErrorType() {}
-func (*HTTPFaultInjection_Abort_GrpcStatus) isHTTPFaultInjection_Abort_ErrorType() {}
-func (*HTTPFaultInjection_Abort_Http2Error) isHTTPFaultInjection_Abort_ErrorType() {}
+var xxx_messageInfo_TLSMatchAttributes proto.InternalMessageInfo
-func (m *HTTPFaultInjection_Abort) GetErrorType() isHTTPFaultInjection_Abort_ErrorType {
+func (m *TLSMatchAttributes) GetSniHosts() []string {
if m != nil {
- return m.ErrorType
+ return m.SniHosts
}
return nil
}
-func (m *HTTPFaultInjection_Abort) GetHttpStatus() int32 {
- if x, ok := m.GetErrorType().(*HTTPFaultInjection_Abort_HttpStatus); ok {
- return x.HttpStatus
+func (m *TLSMatchAttributes) GetDestinationSubnets() []string {
+ if m != nil {
+ return m.DestinationSubnets
}
- return 0
+ return nil
}
-func (m *HTTPFaultInjection_Abort) GetGrpcStatus() string {
- if x, ok := m.GetErrorType().(*HTTPFaultInjection_Abort_GrpcStatus); ok {
- return x.GrpcStatus
+func (m *TLSMatchAttributes) GetPort() uint32 {
+ if m != nil {
+ return m.Port
}
- return ""
+ return 0
}
-func (m *HTTPFaultInjection_Abort) GetHttp2Error() string {
- if x, ok := m.GetErrorType().(*HTTPFaultInjection_Abort_Http2Error); ok {
- return x.Http2Error
+func (m *TLSMatchAttributes) GetSourceLabels() map[string]string {
+ if m != nil {
+ return m.SourceLabels
}
- return ""
+ return nil
}
-func (m *HTTPFaultInjection_Abort) GetPercentage() *Percent {
+func (m *TLSMatchAttributes) GetGateways() []string {
if m != nil {
- return m.Percentage
+ return m.Gateways
}
return nil
}
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*HTTPFaultInjection_Abort) XXX_OneofWrappers() []interface{} {
- return []interface{}{
- (*HTTPFaultInjection_Abort_HttpStatus)(nil),
- (*HTTPFaultInjection_Abort_GrpcStatus)(nil),
- (*HTTPFaultInjection_Abort_Http2Error)(nil),
+func (m *TLSMatchAttributes) GetSourceNamespace() string {
+ if m != nil {
+ return m.SourceNamespace
}
+ return ""
}
-// PortSelector specifies the number of a port to be used for
-// matching or selection for final routing.
-type PortSelector struct {
- // Valid port number
- Number uint32 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
+// HTTPRedirect can be used to send a 301 redirect response to the caller,
+// where the Authority/Host and the URI in the response can be swapped with
+// the specified values. For example, the following rule redirects
+// requests for /v1/getProductRatings API on the ratings service to
+// /v1/bookRatings provided by the bookratings service.
+//
+// {{}}
+// {{}}
+// ```yaml
+// apiVersion: networking.istio.io/v1alpha3
+// kind: VirtualService
+// metadata:
+// name: ratings-route
+// spec:
+// hosts:
+// - ratings.prod.svc.cluster.local
+// http:
+// - match:
+// - uri:
+// exact: /v1/getProductRatings
+// redirect:
+// uri: /v1/bookRatings
+// authority: newratings.default.svc.cluster.local
+// ...
+// ```
+// {{}}
+//
+// {{}}
+// ```yaml
+// apiVersion: networking.istio.io/v1beta1
+// kind: VirtualService
+// metadata:
+// name: ratings-route
+// spec:
+// hosts:
+// - ratings.prod.svc.cluster.local
+// http:
+// - match:
+// - uri:
+// exact: /v1/getProductRatings
+// redirect:
+// uri: /v1/bookRatings
+// authority: newratings.default.svc.cluster.local
+// ...
+// ```
+// {{}}
+// {{}}
+//
+type HTTPRedirect struct {
+ // On a redirect, overwrite the Path portion of the URL with this
+ // value. Note that the entire path will be replaced, irrespective of the
+ // request URI being matched as an exact path or prefix.
+ Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"`
+ // On a redirect, overwrite the Authority/Host portion of the URL with
+ // this value.
+ Authority string `protobuf:"bytes,2,opt,name=authority,proto3" json:"authority,omitempty"`
+ // On a redirect, Specifies the HTTP status code to use in the redirect
+ // response. The default response code is MOVED_PERMANENTLY (301).
+ RedirectCode uint32 `protobuf:"varint,3,opt,name=redirect_code,json=redirectCode,proto3" json:"redirect_code,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
-func (m *PortSelector) Reset() { *m = PortSelector{} }
-func (m *PortSelector) String() string { return proto.CompactTextString(m) }
-func (*PortSelector) ProtoMessage() {}
-func (*PortSelector) Descriptor() ([]byte, []int) {
+func (m *HTTPRedirect) Reset() { *m = HTTPRedirect{} }
+func (m *HTTPRedirect) String() string { return proto.CompactTextString(m) }
+func (*HTTPRedirect) ProtoMessage() {}
+func (*HTTPRedirect) Descriptor() ([]byte, []int) {
return fileDescriptor_8c56a442a0838fd7, []int{18}
}
-func (m *PortSelector) XXX_Unmarshal(b []byte) error {
+func (m *HTTPRedirect) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
-func (m *PortSelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+func (m *HTTPRedirect) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
- return xxx_messageInfo_PortSelector.Marshal(b, m, deterministic)
+ return xxx_messageInfo_HTTPRedirect.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
@@ -3269,45 +3146,115 @@ func (m *PortSelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
return b[:n], nil
}
}
-func (m *PortSelector) XXX_Merge(src proto.Message) {
- xxx_messageInfo_PortSelector.Merge(m, src)
+func (m *HTTPRedirect) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_HTTPRedirect.Merge(m, src)
}
-func (m *PortSelector) XXX_Size() int {
+func (m *HTTPRedirect) XXX_Size() int {
return m.Size()
}
-func (m *PortSelector) XXX_DiscardUnknown() {
- xxx_messageInfo_PortSelector.DiscardUnknown(m)
+func (m *HTTPRedirect) XXX_DiscardUnknown() {
+ xxx_messageInfo_HTTPRedirect.DiscardUnknown(m)
}
-var xxx_messageInfo_PortSelector proto.InternalMessageInfo
+var xxx_messageInfo_HTTPRedirect proto.InternalMessageInfo
-func (m *PortSelector) GetNumber() uint32 {
+func (m *HTTPRedirect) GetUri() string {
if m != nil {
- return m.Number
+ return m.Uri
+ }
+ return ""
+}
+
+func (m *HTTPRedirect) GetAuthority() string {
+ if m != nil {
+ return m.Authority
+ }
+ return ""
+}
+
+func (m *HTTPRedirect) GetRedirectCode() uint32 {
+ if m != nil {
+ return m.RedirectCode
}
return 0
}
-// Percent specifies a percentage in the range of [0.0, 100.0].
-type Percent struct {
- Value float64 `protobuf:"fixed64,1,opt,name=value,proto3" json:"value,omitempty"`
+// HTTPRewrite can be used to rewrite specific parts of a HTTP request
+// before forwarding the request to the destination. Rewrite primitive can
+// be used only with HTTPRouteDestination. The following example
+// demonstrates how to rewrite the URL prefix for api call (/ratings) to
+// ratings service before making the actual API call.
+//
+// {{}}
+// {{}}
+// ```yaml
+// apiVersion: networking.istio.io/v1alpha3
+// kind: VirtualService
+// metadata:
+// name: ratings-route
+// spec:
+// hosts:
+// - ratings.prod.svc.cluster.local
+// http:
+// - match:
+// - uri:
+// prefix: /ratings
+// rewrite:
+// uri: /v1/bookRatings
+// route:
+// - destination:
+// host: ratings.prod.svc.cluster.local
+// subset: v1
+// ```
+// {{}}
+//
+// {{}}
+// ```yaml
+// apiVersion: networking.istio.io/v1beta1
+// kind: VirtualService
+// metadata:
+// name: ratings-route
+// spec:
+// hosts:
+// - ratings.prod.svc.cluster.local
+// http:
+// - match:
+// - uri:
+// prefix: /ratings
+// rewrite:
+// uri: /v1/bookRatings
+// route:
+// - destination:
+// host: ratings.prod.svc.cluster.local
+// subset: v1
+// ```
+// {{}}
+// {{}}
+//
+type HTTPRewrite struct {
+ // rewrite the path (or the prefix) portion of the URI with this
+ // value. If the original URI was matched based on prefix, the value
+ // provided in this field will replace the corresponding matched prefix.
+ Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"`
+ // rewrite the Authority/Host header with this value.
+ Authority string `protobuf:"bytes,2,opt,name=authority,proto3" json:"authority,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
-func (m *Percent) Reset() { *m = Percent{} }
-func (m *Percent) String() string { return proto.CompactTextString(m) }
-func (*Percent) ProtoMessage() {}
-func (*Percent) Descriptor() ([]byte, []int) {
+func (m *HTTPRewrite) Reset() { *m = HTTPRewrite{} }
+func (m *HTTPRewrite) String() string { return proto.CompactTextString(m) }
+func (*HTTPRewrite) ProtoMessage() {}
+func (*HTTPRewrite) Descriptor() ([]byte, []int) {
return fileDescriptor_8c56a442a0838fd7, []int{19}
}
-func (m *Percent) XXX_Unmarshal(b []byte) error {
+func (m *HTTPRewrite) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
-func (m *Percent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+func (m *HTTPRewrite) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
- return xxx_messageInfo_Percent.Marshal(b, m, deterministic)
+ return xxx_messageInfo_HTTPRewrite.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
@@ -3317,1032 +3264,1160 @@ func (m *Percent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return b[:n], nil
}
}
-func (m *Percent) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Percent.Merge(m, src)
+func (m *HTTPRewrite) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_HTTPRewrite.Merge(m, src)
}
-func (m *Percent) XXX_Size() int {
+func (m *HTTPRewrite) XXX_Size() int {
return m.Size()
}
-func (m *Percent) XXX_DiscardUnknown() {
- xxx_messageInfo_Percent.DiscardUnknown(m)
+func (m *HTTPRewrite) XXX_DiscardUnknown() {
+ xxx_messageInfo_HTTPRewrite.DiscardUnknown(m)
}
-var xxx_messageInfo_Percent proto.InternalMessageInfo
+var xxx_messageInfo_HTTPRewrite proto.InternalMessageInfo
-func (m *Percent) GetValue() float64 {
+func (m *HTTPRewrite) GetUri() string {
if m != nil {
- return m.Value
+ return m.Uri
}
- return 0
+ return ""
}
-func init() {
- proto.RegisterType((*VirtualService)(nil), "istio.networking.v1beta1.VirtualService")
- proto.RegisterType((*Destination)(nil), "istio.networking.v1beta1.Destination")
- proto.RegisterType((*HTTPRoute)(nil), "istio.networking.v1beta1.HTTPRoute")
- proto.RegisterType((*Delegate)(nil), "istio.networking.v1beta1.Delegate")
- proto.RegisterType((*Headers)(nil), "istio.networking.v1beta1.Headers")
- proto.RegisterType((*Headers_HeaderOperations)(nil), "istio.networking.v1beta1.Headers.HeaderOperations")
- proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1beta1.Headers.HeaderOperations.AddEntry")
- proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1beta1.Headers.HeaderOperations.SetEntry")
- proto.RegisterType((*TLSRoute)(nil), "istio.networking.v1beta1.TLSRoute")
- proto.RegisterType((*TCPRoute)(nil), "istio.networking.v1beta1.TCPRoute")
- proto.RegisterType((*HTTPMatchRequest)(nil), "istio.networking.v1beta1.HTTPMatchRequest")
- proto.RegisterMapType((map[string]*StringMatch)(nil), "istio.networking.v1beta1.HTTPMatchRequest.HeadersEntry")
- proto.RegisterMapType((map[string]*StringMatch)(nil), "istio.networking.v1beta1.HTTPMatchRequest.QueryParamsEntry")
- proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1beta1.HTTPMatchRequest.SourceLabelsEntry")
- proto.RegisterMapType((map[string]*StringMatch)(nil), "istio.networking.v1beta1.HTTPMatchRequest.WithoutHeadersEntry")
- proto.RegisterType((*HTTPRouteDestination)(nil), "istio.networking.v1beta1.HTTPRouteDestination")
- proto.RegisterType((*RouteDestination)(nil), "istio.networking.v1beta1.RouteDestination")
- proto.RegisterType((*L4MatchAttributes)(nil), "istio.networking.v1beta1.L4MatchAttributes")
- proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1beta1.L4MatchAttributes.SourceLabelsEntry")
- proto.RegisterType((*TLSMatchAttributes)(nil), "istio.networking.v1beta1.TLSMatchAttributes")
- proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1beta1.TLSMatchAttributes.SourceLabelsEntry")
- proto.RegisterType((*HTTPRedirect)(nil), "istio.networking.v1beta1.HTTPRedirect")
- proto.RegisterType((*HTTPRewrite)(nil), "istio.networking.v1beta1.HTTPRewrite")
- proto.RegisterType((*StringMatch)(nil), "istio.networking.v1beta1.StringMatch")
- proto.RegisterType((*HTTPRetry)(nil), "istio.networking.v1beta1.HTTPRetry")
- proto.RegisterType((*CorsPolicy)(nil), "istio.networking.v1beta1.CorsPolicy")
- proto.RegisterType((*HTTPFaultInjection)(nil), "istio.networking.v1beta1.HTTPFaultInjection")
- proto.RegisterType((*HTTPFaultInjection_Delay)(nil), "istio.networking.v1beta1.HTTPFaultInjection.Delay")
- proto.RegisterType((*HTTPFaultInjection_Abort)(nil), "istio.networking.v1beta1.HTTPFaultInjection.Abort")
- proto.RegisterType((*PortSelector)(nil), "istio.networking.v1beta1.PortSelector")
- proto.RegisterType((*Percent)(nil), "istio.networking.v1beta1.Percent")
+func (m *HTTPRewrite) GetAuthority() string {
+ if m != nil {
+ return m.Authority
+ }
+ return ""
}
-func init() {
- proto.RegisterFile("networking/v1beta1/virtual_service.proto", fileDescriptor_8c56a442a0838fd7)
+// Describes how to match a given string in HTTP headers. Match is
+// case-sensitive.
+type StringMatch struct {
+ // Types that are valid to be assigned to MatchType:
+ // *StringMatch_Exact
+ // *StringMatch_Prefix
+ // *StringMatch_Regex
+ MatchType isStringMatch_MatchType `protobuf_oneof:"match_type"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
-var fileDescriptor_8c56a442a0838fd7 = []byte{
- // 1987 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0x4f, 0x73, 0x1b, 0x49,
- 0x15, 0x8f, 0xfe, 0x4b, 0x4f, 0x92, 0x2d, 0x77, 0x42, 0x32, 0x6b, 0x52, 0x89, 0x57, 0x21, 0x29,
- 0x03, 0x8b, 0x5c, 0xab, 0x6c, 0x11, 0x6a, 0xb3, 0xd9, 0x5d, 0xff, 0x09, 0xeb, 0x75, 0x39, 0x89,
- 0x77, 0xec, 0x5d, 0xaa, 0x38, 0x30, 0xd5, 0x9a, 0x79, 0x96, 0x86, 0x48, 0xd3, 0x93, 0x9e, 0x1e,
- 0xdb, 0xe2, 0xcc, 0x81, 0x2a, 0x0e, 0x14, 0x07, 0x0e, 0x1c, 0xf9, 0x16, 0x7c, 0x04, 0x8e, 0x5c,
- 0xb8, 0x52, 0x5b, 0xb9, 0x71, 0xe0, 0x23, 0x50, 0x45, 0xf5, 0x9f, 0x91, 0x46, 0x96, 0x6d, 0x49,
- 0x21, 0x61, 0x4f, 0x9a, 0x7e, 0xfd, 0x7e, 0xbf, 0xee, 0x7e, 0xaf, 0xfb, 0xbd, 0xd7, 0x2d, 0x58,
- 0x0f, 0x50, 0x9c, 0x32, 0xfe, 0xd2, 0x0f, 0xba, 0x1b, 0x27, 0x1f, 0x76, 0x50, 0xd0, 0x0f, 0x37,
- 0x4e, 0x7c, 0x2e, 0x62, 0xda, 0x77, 0x22, 0xe4, 0x27, 0xbe, 0x8b, 0xad, 0x90, 0x33, 0xc1, 0x88,
- 0xe5, 0x47, 0xc2, 0x67, 0xad, 0xb1, 0x7e, 0xcb, 0xe8, 0xaf, 0xde, 0xed, 0x32, 0xd6, 0xed, 0xe3,
- 0x06, 0x0d, 0xfd, 0x8d, 0x63, 0x1f, 0xfb, 0x9e, 0xd3, 0xc1, 0x1e, 0x3d, 0xf1, 0x19, 0xd7, 0xd0,
- 0xd5, 0x3b, 0x46, 0x41, 0xb5, 0x3a, 0xf1, 0xf1, 0x86, 0x17, 0x73, 0x2a, 0x7c, 0x16, 0x5c, 0xd6,
- 0x7f, 0xca, 0x69, 0x18, 0x22, 0x8f, 0x74, 0x7f, 0xf3, 0xb7, 0x59, 0x58, 0xfa, 0x46, 0x4f, 0xea,
- 0x50, 0xcf, 0x89, 0xdc, 0x80, 0x42, 0x8f, 0x45, 0x22, 0xb2, 0x32, 0x6b, 0xb9, 0xf5, 0x8a, 0xad,
- 0x1b, 0x64, 0x15, 0xca, 0x5d, 0x2a, 0xf0, 0x94, 0x0e, 0x23, 0x2b, 0xab, 0x3a, 0x46, 0x6d, 0xf2,
- 0x08, 0xf2, 0x3d, 0x21, 0x42, 0x2b, 0xb7, 0x96, 0x5b, 0xaf, 0xb6, 0xef, 0xb5, 0x2e, 0x5b, 0x4e,
- 0x6b, 0xf7, 0xe8, 0xe8, 0xc0, 0x66, 0xb1, 0x40, 0x5b, 0x01, 0xc8, 0x47, 0x90, 0x13, 0xfd, 0xc8,
- 0x2a, 0x28, 0x5c, 0xf3, 0x72, 0xdc, 0xd1, 0xfe, 0xa1, 0x86, 0x49, 0x75, 0x85, 0x72, 0x43, 0x2b,
- 0x3f, 0x13, 0xb5, 0x7d, 0x90, 0xa0, 0xdc, 0x90, 0x7c, 0x1f, 0x2a, 0x78, 0x16, 0x32, 0x2e, 0x1c,
- 0xc1, 0xac, 0xa2, 0x5e, 0x81, 0x16, 0x1c, 0xb1, 0xe6, 0x6f, 0xa0, 0xba, 0x83, 0x91, 0xf0, 0x03,
- 0x65, 0x3b, 0x72, 0x0b, 0xf2, 0x72, 0xd5, 0x56, 0x66, 0x2d, 0xb3, 0x5e, 0xd9, 0xca, 0x7d, 0xbb,
- 0x99, 0xb5, 0x95, 0x80, 0xdc, 0x84, 0x62, 0x14, 0x77, 0x22, 0x14, 0x56, 0x56, 0x76, 0xd9, 0xa6,
- 0x45, 0x3e, 0x86, 0xbc, 0x64, 0xb2, 0x72, 0x6b, 0x99, 0xf5, 0x6a, 0xfb, 0xc1, 0xe5, 0x73, 0x3a,
- 0x60, 0x5c, 0x1c, 0x62, 0x1f, 0x5d, 0xc1, 0xb8, 0xad, 0x30, 0xcd, 0x3f, 0x96, 0xa1, 0x32, 0x32,
- 0x0c, 0x21, 0x90, 0x0f, 0xe8, 0x00, 0xad, 0x15, 0xc5, 0xaf, 0xbe, 0xc9, 0xe7, 0x50, 0x18, 0x50,
- 0xe1, 0xf6, 0x94, 0x47, 0xaa, 0xed, 0x1f, 0x5d, 0x6d, 0xe0, 0x67, 0x52, 0xd5, 0xc6, 0x57, 0x31,
- 0x46, 0xc2, 0xd6, 0x40, 0xb2, 0x03, 0x05, 0x2e, 0xe9, 0x95, 0xeb, 0xaa, 0xed, 0xd6, 0x1c, 0x2e,
- 0x4a, 0xd9, 0xc3, 0xd6, 0x60, 0xb2, 0x05, 0x65, 0x8e, 0x9e, 0xcf, 0xd1, 0x9d, 0x63, 0xa5, 0x8a,
- 0xc8, 0x68, 0xdb, 0x23, 0x1c, 0xf9, 0x14, 0xca, 0x1e, 0xf6, 0x51, 0xee, 0x1d, 0xeb, 0x86, 0xe2,
- 0xb8, 0xc2, 0x83, 0x3b, 0x46, 0xd3, 0x1e, 0x61, 0xc8, 0x67, 0x50, 0xe2, 0x78, 0xca, 0x7d, 0x81,
- 0x56, 0x5e, 0xc1, 0xef, 0xcf, 0x9a, 0x82, 0x52, 0xb6, 0x13, 0x14, 0x79, 0x08, 0x25, 0xe1, 0x0f,
- 0x90, 0xc5, 0xc2, 0x2a, 0x2a, 0x82, 0xf7, 0x5a, 0xfa, 0x8c, 0xb4, 0x92, 0x33, 0xd2, 0xda, 0x31,
- 0x67, 0xc8, 0x4e, 0x34, 0xc9, 0x13, 0x39, 0xaa, 0xe0, 0x3e, 0x46, 0x56, 0x49, 0x81, 0x66, 0x6d,
- 0x72, 0x14, 0x7c, 0x68, 0x27, 0x18, 0xb2, 0x05, 0x85, 0x63, 0x1a, 0xf7, 0x85, 0x55, 0x56, 0xe0,
- 0x0f, 0xae, 0x06, 0xff, 0x5c, 0xaa, 0x7e, 0x19, 0xfc, 0x1a, 0x5d, 0x6d, 0x7c, 0x05, 0x25, 0x4f,
- 0xa0, 0x38, 0xf0, 0x39, 0x67, 0xdc, 0xaa, 0xcc, 0x5a, 0x77, 0xda, 0x75, 0x06, 0x44, 0xbe, 0x80,
- 0x25, 0xfd, 0xe5, 0x84, 0xc8, 0x5d, 0x0c, 0x84, 0x45, 0x14, 0xcd, 0xed, 0xa9, 0xd5, 0x7f, 0xfd,
- 0x65, 0x20, 0x1e, 0xb6, 0xbf, 0xa1, 0xfd, 0x18, 0xb7, 0xb2, 0x56, 0xc6, 0xae, 0x6b, 0xdc, 0x81,
- 0x86, 0x91, 0xe7, 0xb0, 0x32, 0x49, 0x44, 0xbb, 0x68, 0x5d, 0x57, 0x5c, 0xef, 0x5f, 0xb1, 0xef,
- 0xb5, 0xae, 0xdd, 0x98, 0x20, 0xa3, 0x5d, 0x24, 0x4f, 0xa1, 0xea, 0x32, 0x1e, 0x39, 0x21, 0xeb,
- 0xfb, 0xee, 0xd0, 0x02, 0xc5, 0xf4, 0x83, 0xcb, 0x99, 0xb6, 0x19, 0x8f, 0x0e, 0x94, 0xae, 0x0d,
- 0xee, 0xe8, 0x9b, 0x3c, 0x86, 0x52, 0x0f, 0xa9, 0x87, 0x3c, 0xb2, 0x1a, 0xb3, 0x26, 0xb3, 0xab,
- 0x15, 0xed, 0x04, 0xb1, 0x97, 0x2f, 0x17, 0x1a, 0xc5, 0xbd, 0x7c, 0xb9, 0xda, 0x68, 0xd8, 0x2b,
- 0xa7, 0xd8, 0x89, 0x98, 0xfb, 0x12, 0x85, 0x13, 0x87, 0x5d, 0x4e, 0x3d, 0xb4, 0x97, 0x64, 0xc8,
- 0x0c, 0x3c, 0xc7, 0xa8, 0xdb, 0xb7, 0x38, 0x0e, 0xd8, 0x09, 0x3a, 0x1c, 0xa3, 0x90, 0x05, 0x11,
- 0x8e, 0x3b, 0x8c, 0xe2, 0x54, 0xc7, 0xcd, 0x11, 0x42, 0x1d, 0xcb, 0xb1, 0x7c, 0x04, 0x98, 0x90,
- 0x37, 0x3f, 0x81, 0x72, 0xb2, 0xf7, 0x47, 0x11, 0x21, 0x93, 0x8a, 0x08, 0xb7, 0xa1, 0x22, 0x7f,
- 0xa3, 0x90, 0xba, 0x68, 0x42, 0xd1, 0x58, 0xd0, 0x7c, 0x9d, 0x83, 0x92, 0x59, 0x23, 0xd9, 0x97,
- 0x3b, 0x57, 0x91, 0x2b, 0x82, 0x6a, 0xbb, 0x3d, 0xd3, 0x2e, 0xe6, 0xf7, 0x45, 0x88, 0xfa, 0x18,
- 0x44, 0x76, 0x42, 0x41, 0x9e, 0xcb, 0x08, 0xa0, 0xd7, 0xa6, 0x86, 0x7d, 0x33, 0xba, 0x11, 0xc7,
- 0xea, 0x5f, 0xb3, 0xd0, 0x38, 0xdf, 0x4d, 0x9e, 0x41, 0x4e, 0x46, 0x58, 0x1d, 0xec, 0x1e, 0x2f,
- 0xce, 0xdf, 0x3a, 0x44, 0xf1, 0x34, 0x90, 0x07, 0x50, 0xf2, 0x48, 0x3a, 0xea, 0x79, 0x26, 0xf2,
- 0xbd, 0x09, 0xdd, 0xa6, 0xe7, 0x19, 0x3a, 0xea, 0x79, 0x32, 0x05, 0x68, 0x67, 0xaa, 0x74, 0x57,
- 0xb1, 0x4d, 0x6b, 0xf5, 0xa7, 0x50, 0x4e, 0xc6, 0x25, 0x0d, 0xc8, 0xbd, 0xc4, 0xa1, 0xf1, 0x98,
- 0xfc, 0x94, 0x49, 0xf5, 0x44, 0x9e, 0x28, 0xe3, 0x2c, 0xdd, 0xf8, 0x38, 0xfb, 0xb3, 0x8c, 0xc4,
- 0x25, 0x03, 0x2c, 0x82, 0x6b, 0xfe, 0x29, 0x03, 0xe5, 0x24, 0x2f, 0x92, 0x2f, 0x26, 0x33, 0xc4,
- 0x07, 0x57, 0xa6, 0x52, 0x95, 0x20, 0x36, 0x85, 0xe0, 0x7e, 0x27, 0x16, 0x18, 0xe9, 0xfc, 0x66,
- 0x12, 0xc5, 0xe7, 0x93, 0x89, 0xe2, 0x8a, 0x54, 0x73, 0x49, 0x92, 0x68, 0xfe, 0x41, 0xce, 0xcb,
- 0x64, 0x5e, 0xb2, 0x39, 0x39, 0xaf, 0x1f, 0x5f, 0x4e, 0xb7, 0xff, 0xd1, 0xb9, 0x69, 0xbd, 0xbd,
- 0x19, 0xfd, 0xb9, 0x02, 0x8d, 0xf3, 0x89, 0x71, 0x74, 0xaa, 0xaa, 0xa9, 0x53, 0xf5, 0x08, 0x72,
- 0x31, 0xf7, 0xcd, 0x39, 0xb9, 0x22, 0xbe, 0x1e, 0x0a, 0xee, 0x07, 0x5d, 0x4d, 0x27, 0x11, 0x32,
- 0x36, 0x47, 0x6e, 0x0f, 0x07, 0xc9, 0xa1, 0x98, 0x13, 0x6b, 0x40, 0x2a, 0xb4, 0xa3, 0xe8, 0x31,
- 0xcf, 0x64, 0xd5, 0x79, 0xe1, 0x1a, 0x44, 0xb6, 0xa1, 0x42, 0x63, 0xd1, 0x63, 0xdc, 0x17, 0xc3,
- 0xd9, 0x49, 0x31, 0xcd, 0x30, 0xc6, 0x91, 0xaf, 0xc6, 0xf1, 0x53, 0x97, 0x63, 0x8f, 0xe6, 0xaf,
- 0x32, 0x92, 0xa3, 0xa3, 0x4f, 0x49, 0xc2, 0x23, 0x4d, 0xac, 0x8a, 0x22, 0x99, 0x66, 0xeb, 0xba,
- 0xd8, 0x21, 0x14, 0xea, 0x11, 0x8b, 0xb9, 0x8b, 0x4e, 0x9f, 0x76, 0xb0, 0x2f, 0xd3, 0xa9, 0x1c,
- 0xec, 0x93, 0x05, 0x06, 0x3b, 0x54, 0xf8, 0x7d, 0x05, 0xd7, 0x23, 0xd6, 0xa2, 0x94, 0x68, 0xa2,
- 0x52, 0x2d, 0x9f, 0xab, 0x54, 0x7f, 0x05, 0xb5, 0x57, 0x31, 0xf2, 0xa1, 0x13, 0x52, 0x4e, 0x07,
- 0x91, 0x55, 0x99, 0x19, 0x14, 0xce, 0x8f, 0xfe, 0x95, 0x84, 0x1f, 0x28, 0xb4, 0x1e, 0xbc, 0xfa,
- 0x6a, 0x2c, 0x21, 0x0f, 0x60, 0xd9, 0xef, 0x06, 0x8c, 0xa3, 0x13, 0x73, 0xdf, 0x71, 0x69, 0x84,
- 0x2a, 0xa1, 0x95, 0xed, 0xba, 0x16, 0x7f, 0xcd, 0xfd, 0x6d, 0x1a, 0x21, 0xe9, 0xc2, 0xf2, 0xa9,
- 0x2f, 0x7a, 0x2c, 0x1e, 0x85, 0x7c, 0xab, 0xa6, 0xa6, 0xf2, 0xe9, 0x02, 0x53, 0xf9, 0x85, 0x66,
- 0x98, 0x30, 0xfe, 0xd2, 0xe9, 0x84, 0x90, 0xfc, 0x10, 0x1a, 0xc6, 0xde, 0xe3, 0x7c, 0x51, 0x57,
- 0x5b, 0x7e, 0x59, 0xcb, 0x9f, 0x27, 0xe2, 0x55, 0x0a, 0xb5, 0x34, 0xd5, 0x05, 0xc1, 0xe8, 0x71,
- 0x3a, 0x18, 0xcd, 0xbd, 0xc9, 0x52, 0xb1, 0xee, 0x33, 0x58, 0x99, 0xf2, 0xde, 0x42, 0xc1, 0x12,
- 0xa1, 0x71, 0xde, 0x01, 0xef, 0x62, 0x9e, 0x3d, 0xb8, 0x7e, 0x81, 0x71, 0xdf, 0xc1, 0x48, 0xcd,
- 0xbf, 0x64, 0xe1, 0xc6, 0x45, 0x25, 0x37, 0xd9, 0x87, 0xaa, 0x37, 0x6e, 0xce, 0x8e, 0x49, 0x29,
- 0xac, 0x0e, 0xe8, 0x69, 0xb8, 0x4c, 0x5a, 0xa7, 0xe8, 0x77, 0x7b, 0xfa, 0xde, 0x52, 0xb0, 0x4d,
- 0x2b, 0x5d, 0x35, 0x95, 0xde, 0xa0, 0x6a, 0xca, 0x35, 0x4a, 0xff, 0x87, 0x62, 0xe8, 0x0c, 0x1a,
- 0xdf, 0x8d, 0x79, 0x9a, 0xff, 0xca, 0xc2, 0xca, 0x54, 0x62, 0x22, 0x1b, 0x70, 0x3d, 0x05, 0x76,
- 0xa2, 0xb8, 0x13, 0xe0, 0xe8, 0xba, 0x4c, 0x52, 0x5d, 0x87, 0xba, 0x67, 0x14, 0x08, 0xb3, 0xa9,
- 0x40, 0x78, 0x6f, 0x14, 0x08, 0x35, 0x5e, 0x85, 0xfe, 0x4a, 0x12, 0xca, 0x34, 0x92, 0x74, 0xce,
- 0x47, 0x4b, 0x7d, 0xe7, 0x7d, 0xb2, 0x40, 0x1a, 0x5d, 0x28, 0x5c, 0x16, 0xce, 0x85, 0xcb, 0x8b,
- 0xa2, 0x47, 0xf1, 0xe2, 0xe8, 0xf1, 0xbf, 0x1e, 0xed, 0xe6, 0x7f, 0xb2, 0x40, 0xa6, 0x8b, 0x13,
- 0xb2, 0x06, 0x95, 0x28, 0xf0, 0x9d, 0xd4, 0x8b, 0x84, 0xf6, 0x5f, 0x39, 0x0a, 0xfc, 0x5d, 0xf5,
- 0x32, 0x71, 0x89, 0x3b, 0xb2, 0x33, 0xdd, 0x91, 0x4b, 0xb9, 0xc3, 0x3d, 0x6f, 0xe9, 0xc2, 0xac,
- 0x70, 0x3c, 0x3d, 0xd7, 0x85, 0x4c, 0x5d, 0x9c, 0xc3, 0xd4, 0xa5, 0x77, 0x63, 0xea, 0xbd, 0x7c,
- 0x39, 0xdf, 0x28, 0xd8, 0x93, 0xfb, 0xaf, 0xe9, 0x42, 0x2d, 0x7d, 0x65, 0x97, 0x84, 0x49, 0x31,
- 0x54, 0xd1, 0x55, 0xce, 0xed, 0x74, 0x9d, 0x61, 0x2e, 0x1d, 0xe3, 0x02, 0xe2, 0x1e, 0xd4, 0x93,
- 0x4b, 0xbe, 0xe3, 0x32, 0x0f, 0x8d, 0x79, 0x6b, 0x89, 0x70, 0x9b, 0x79, 0xd8, 0x7c, 0x02, 0xd5,
- 0xd4, 0xa5, 0x7c, 0xd1, 0x31, 0x9a, 0x08, 0xd5, 0x54, 0x1c, 0x25, 0x37, 0xa1, 0x80, 0x67, 0xd4,
- 0x35, 0xef, 0x34, 0xbb, 0xd7, 0x6c, 0xdd, 0x24, 0x16, 0x14, 0x43, 0x8e, 0xc7, 0xfe, 0x99, 0x66,
- 0xd8, 0xbd, 0x66, 0x9b, 0xb6, 0x44, 0x70, 0xec, 0xe2, 0x99, 0x3e, 0x6d, 0x12, 0xa1, 0x9a, 0x5b,
- 0x35, 0x00, 0x55, 0x6d, 0x3a, 0x62, 0x18, 0x62, 0xf3, 0x9f, 0x19, 0xf3, 0x22, 0x23, 0x6f, 0xf1,
- 0xe4, 0x2e, 0x94, 0xa9, 0x10, 0x38, 0x08, 0xd5, 0x06, 0xcc, 0xac, 0x17, 0xcc, 0x06, 0x4c, 0x84,
- 0x64, 0x13, 0x96, 0x43, 0xe4, 0x8e, 0xe0, 0x43, 0x27, 0x79, 0x59, 0xc8, 0xce, 0x7a, 0x59, 0xa8,
- 0x87, 0xc8, 0x8f, 0xf8, 0xf0, 0xc8, 0xbc, 0x2f, 0xbc, 0x27, 0xef, 0x55, 0x92, 0x80, 0x05, 0x26,
- 0x10, 0xa8, 0xb7, 0x83, 0xe1, 0x8b, 0x80, 0xd8, 0x70, 0x4b, 0x77, 0xc9, 0xa8, 0x29, 0xd0, 0xe9,
- 0x33, 0x97, 0xf6, 0x7d, 0xe1, 0x63, 0x64, 0x6a, 0xbd, 0xd5, 0xa9, 0x51, 0xb6, 0x18, 0xeb, 0xab,
- 0xfb, 0xbb, 0xfd, 0x3d, 0x05, 0xb5, 0x15, 0x72, 0x7f, 0x04, 0x6c, 0xfe, 0x3b, 0x0b, 0x30, 0xbe,
- 0x47, 0x93, 0xfb, 0x50, 0xa3, 0xfd, 0x3e, 0x3b, 0x75, 0x18, 0xf7, 0xbb, 0x7e, 0x60, 0x8e, 0x99,
- 0xbc, 0xfb, 0x57, 0x95, 0xfc, 0x85, 0x12, 0x93, 0x3d, 0xa8, 0xa7, 0xd5, 0x92, 0xda, 0x6d, 0xce,
- 0xa4, 0x57, 0x4b, 0x51, 0x45, 0x72, 0xb7, 0x68, 0x2e, 0x5d, 0xc3, 0x26, 0xc7, 0x55, 0x2b, 0x3d,
- 0xd3, 0xb2, 0xb1, 0x52, 0x92, 0xa3, 0x72, 0x29, 0xa5, 0xa4, 0xc2, 0xb9, 0x0f, 0x4b, 0x78, 0x16,
- 0xb2, 0x71, 0x7e, 0x51, 0x41, 0xb2, 0x62, 0xd7, 0xb5, 0x34, 0x51, 0x6b, 0x43, 0x69, 0x40, 0xcf,
- 0x1c, 0xda, 0x45, 0xab, 0x30, 0xcb, 0x39, 0xc5, 0x01, 0x3d, 0xdb, 0xec, 0xca, 0x5b, 0xd5, 0x8a,
- 0x1e, 0xdf, 0xe5, 0xe8, 0x61, 0x20, 0x7c, 0xda, 0x8f, 0xcc, 0xa3, 0xd1, 0x55, 0x46, 0x6f, 0x28,
- 0xd0, 0xf6, 0x18, 0xd3, 0xfc, 0x7d, 0x01, 0xc8, 0xf4, 0xcb, 0x0e, 0xd9, 0x85, 0x82, 0x87, 0x7d,
- 0x3a, 0x9c, 0xe3, 0x66, 0x3e, 0x05, 0x6e, 0xed, 0x48, 0xa4, 0xad, 0x09, 0x24, 0x13, 0xed, 0x24,
- 0x29, 0x66, 0x51, 0xa6, 0x4d, 0x89, 0xb4, 0x35, 0xc1, 0xea, 0xef, 0xb2, 0x50, 0x50, 0xd4, 0xe4,
- 0x36, 0x94, 0x92, 0xa7, 0x22, 0xbd, 0xed, 0xe5, 0x86, 0x48, 0x44, 0x64, 0x13, 0xaa, 0xc7, 0xfe,
- 0x19, 0x7a, 0x8e, 0x5e, 0xc1, 0xac, 0x0d, 0xaf, 0xce, 0xcc, 0xee, 0x35, 0x1b, 0x14, 0x68, 0xc7,
- 0x4c, 0x7a, 0x45, 0xfa, 0x28, 0xd0, 0x56, 0x32, 0x44, 0xb9, 0x19, 0x44, 0xbb, 0xd7, 0xec, 0x46,
- 0x0a, 0xa5, 0x99, 0x36, 0x01, 0x52, 0x8f, 0x51, 0x85, 0x79, 0x1f, 0xa3, 0x52, 0xa0, 0xad, 0x15,
- 0x58, 0xee, 0x09, 0x11, 0xea, 0x59, 0xa8, 0x30, 0xb0, 0xfa, 0x8f, 0x0c, 0x14, 0x94, 0x6d, 0xc8,
- 0x03, 0xa8, 0xaa, 0xce, 0x48, 0x50, 0x11, 0x47, 0xba, 0x48, 0x18, 0xad, 0x48, 0xf6, 0x1c, 0xaa,
- 0x0e, 0xf2, 0x3e, 0x54, 0xbb, 0x3c, 0x74, 0x13, 0xbd, 0x24, 0xc8, 0x80, 0x14, 0x8e, 0x55, 0x24,
- 0xa0, 0xed, 0xa0, 0x7a, 0xcb, 0xcb, 0x27, 0x2a, 0x4a, 0xf8, 0x54, 0x3d, 0xd5, 0xbd, 0x85, 0xd5,
- 0xd4, 0x00, 0x14, 0xbf, 0x5a, 0xc8, 0x5e, 0xbe, 0x9c, 0x69, 0x64, 0x47, 0xae, 0x6b, 0xb6, 0xa1,
- 0x96, 0x7e, 0x86, 0x96, 0xd5, 0x4f, 0x10, 0x0f, 0x3a, 0xc8, 0x95, 0x9f, 0xeb, 0xb6, 0x69, 0xed,
- 0xe5, 0xcb, 0xd9, 0x46, 0x4e, 0x5f, 0x8d, 0x9b, 0x77, 0xa1, 0x94, 0x3c, 0x00, 0x8e, 0xf2, 0x8a,
- 0xd4, 0xce, 0x98, 0xbc, 0xb2, 0xf5, 0x93, 0xbf, 0xbd, 0xbe, 0x93, 0xf9, 0xfb, 0xeb, 0x3b, 0x99,
- 0x6f, 0x5f, 0xdf, 0xc9, 0xfc, 0xf2, 0xae, 0x9e, 0xad, 0xcf, 0xd4, 0x3f, 0x17, 0xd3, 0x7f, 0x84,
- 0x74, 0x8a, 0xca, 0xb1, 0x0f, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x15, 0xd7, 0x7f, 0x89, 0x25,
- 0x19, 0x00, 0x00,
+func (m *StringMatch) Reset() { *m = StringMatch{} }
+func (m *StringMatch) String() string { return proto.CompactTextString(m) }
+func (*StringMatch) ProtoMessage() {}
+func (*StringMatch) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8c56a442a0838fd7, []int{20}
}
-
-func (m *VirtualService) Marshal() (dAtA []byte, err error) {
- size := m.Size()
- dAtA = make([]byte, size)
- n, err := m.MarshalToSizedBuffer(dAtA[:size])
- if err != nil {
- return nil, err
+func (m *StringMatch) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *StringMatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_StringMatch.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
}
- return dAtA[:n], nil
+}
+func (m *StringMatch) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_StringMatch.Merge(m, src)
+}
+func (m *StringMatch) XXX_Size() int {
+ return m.Size()
+}
+func (m *StringMatch) XXX_DiscardUnknown() {
+ xxx_messageInfo_StringMatch.DiscardUnknown(m)
}
-func (m *VirtualService) MarshalTo(dAtA []byte) (int, error) {
- size := m.Size()
- return m.MarshalToSizedBuffer(dAtA[:size])
+var xxx_messageInfo_StringMatch proto.InternalMessageInfo
+
+type isStringMatch_MatchType interface {
+ isStringMatch_MatchType()
+ MarshalTo([]byte) (int, error)
+ Size() int
}
-func (m *VirtualService) MarshalToSizedBuffer(dAtA []byte) (int, error) {
- i := len(dAtA)
- _ = i
- var l int
- _ = l
- if m.XXX_unrecognized != nil {
- i -= len(m.XXX_unrecognized)
- copy(dAtA[i:], m.XXX_unrecognized)
+type StringMatch_Exact struct {
+ Exact string `protobuf:"bytes,1,opt,name=exact,proto3,oneof"`
+}
+type StringMatch_Prefix struct {
+ Prefix string `protobuf:"bytes,2,opt,name=prefix,proto3,oneof"`
+}
+type StringMatch_Regex struct {
+ Regex string `protobuf:"bytes,3,opt,name=regex,proto3,oneof"`
+}
+
+func (*StringMatch_Exact) isStringMatch_MatchType() {}
+func (*StringMatch_Prefix) isStringMatch_MatchType() {}
+func (*StringMatch_Regex) isStringMatch_MatchType() {}
+
+func (m *StringMatch) GetMatchType() isStringMatch_MatchType {
+ if m != nil {
+ return m.MatchType
}
- if len(m.ExportTo) > 0 {
- for iNdEx := len(m.ExportTo) - 1; iNdEx >= 0; iNdEx-- {
- i -= len(m.ExportTo[iNdEx])
- copy(dAtA[i:], m.ExportTo[iNdEx])
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.ExportTo[iNdEx])))
- i--
- dAtA[i] = 0x32
- }
+ return nil
+}
+
+func (m *StringMatch) GetExact() string {
+ if x, ok := m.GetMatchType().(*StringMatch_Exact); ok {
+ return x.Exact
}
- if len(m.Tls) > 0 {
- for iNdEx := len(m.Tls) - 1; iNdEx >= 0; iNdEx-- {
- {
- size, err := m.Tls[iNdEx].MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x2a
- }
- }
- if len(m.Tcp) > 0 {
- for iNdEx := len(m.Tcp) - 1; iNdEx >= 0; iNdEx-- {
- {
- size, err := m.Tcp[iNdEx].MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x22
- }
- }
- if len(m.Http) > 0 {
- for iNdEx := len(m.Http) - 1; iNdEx >= 0; iNdEx-- {
- {
- size, err := m.Http[iNdEx].MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x1a
- }
- }
- if len(m.Gateways) > 0 {
- for iNdEx := len(m.Gateways) - 1; iNdEx >= 0; iNdEx-- {
- i -= len(m.Gateways[iNdEx])
- copy(dAtA[i:], m.Gateways[iNdEx])
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Gateways[iNdEx])))
- i--
- dAtA[i] = 0x12
- }
+ return ""
+}
+
+func (m *StringMatch) GetPrefix() string {
+ if x, ok := m.GetMatchType().(*StringMatch_Prefix); ok {
+ return x.Prefix
}
- if len(m.Hosts) > 0 {
- for iNdEx := len(m.Hosts) - 1; iNdEx >= 0; iNdEx-- {
- i -= len(m.Hosts[iNdEx])
- copy(dAtA[i:], m.Hosts[iNdEx])
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Hosts[iNdEx])))
- i--
- dAtA[i] = 0xa
- }
+ return ""
+}
+
+func (m *StringMatch) GetRegex() string {
+ if x, ok := m.GetMatchType().(*StringMatch_Regex); ok {
+ return x.Regex
}
- return len(dAtA) - i, nil
+ return ""
}
-func (m *Destination) Marshal() (dAtA []byte, err error) {
- size := m.Size()
- dAtA = make([]byte, size)
- n, err := m.MarshalToSizedBuffer(dAtA[:size])
- if err != nil {
- return nil, err
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*StringMatch) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*StringMatch_Exact)(nil),
+ (*StringMatch_Prefix)(nil),
+ (*StringMatch_Regex)(nil),
}
- return dAtA[:n], nil
}
-func (m *Destination) MarshalTo(dAtA []byte) (int, error) {
- size := m.Size()
- return m.MarshalToSizedBuffer(dAtA[:size])
+// Describes the retry policy to use when a HTTP request fails. For
+// example, the following rule sets the maximum number of retries to 3 when
+// calling ratings:v1 service, with a 2s timeout per retry attempt.
+//
+// {{}}
+// {{}}
+// ```yaml
+// apiVersion: networking.istio.io/v1alpha3
+// kind: VirtualService
+// metadata:
+// name: ratings-route
+// spec:
+// hosts:
+// - ratings.prod.svc.cluster.local
+// http:
+// - route:
+// - destination:
+// host: ratings.prod.svc.cluster.local
+// subset: v1
+// retries:
+// attempts: 3
+// perTryTimeout: 2s
+// retryOn: gateway-error,connect-failure,refused-stream
+// ```
+// {{}}
+//
+// {{}}
+// ```yaml
+// apiVersion: networking.istio.io/v1beta1
+// kind: VirtualService
+// metadata:
+// name: ratings-route
+// spec:
+// hosts:
+// - ratings.prod.svc.cluster.local
+// http:
+// - route:
+// - destination:
+// host: ratings.prod.svc.cluster.local
+// subset: v1
+// retries:
+// attempts: 3
+// perTryTimeout: 2s
+// retryOn: gateway-error,connect-failure,refused-stream
+// ```
+// {{}}
+// {{}}
+//
+type HTTPRetry struct {
+ // Number of retries to be allowed for a given request. The interval
+ // between retries will be determined automatically (25ms+). When request
+ // `timeout` of the [HTTP route](https://istio.io/docs/reference/config/networking/virtual-service/#HTTPRoute)
+ // or `per_try_timeout` is configured, the actual number of retries attempted also depends on
+ // the specified request `timeout` and `per_try_timeout` values.
+ Attempts int32 `protobuf:"varint,1,opt,name=attempts,proto3" json:"attempts,omitempty"`
+ // Timeout per retry attempt for a given request. format: 1h/1m/1s/1ms. MUST BE >=1ms.
+ // Default is same value as request
+ // `timeout` of the [HTTP route](https://istio.io/docs/reference/config/networking/virtual-service/#HTTPRoute),
+ // which means no timeout.
+ PerTryTimeout *types.Duration `protobuf:"bytes,2,opt,name=per_try_timeout,json=perTryTimeout,proto3" json:"per_try_timeout,omitempty"`
+ // Specifies the conditions under which retry takes place.
+ // One or more policies can be specified using a ‘,’ delimited list.
+ // See the [retry policies](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-on)
+ // and [gRPC retry policies](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-grpc-on) for more details.
+ RetryOn string `protobuf:"bytes,3,opt,name=retry_on,json=retryOn,proto3" json:"retry_on,omitempty"`
+ // Flag to specify whether the retries should retry to other localities.
+ // See the [retry plugin configuration](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/http/http_connection_management#retry-plugin-configuration) for more details.
+ RetryRemoteLocalities *types.BoolValue `protobuf:"bytes,4,opt,name=retry_remote_localities,json=retryRemoteLocalities,proto3" json:"retry_remote_localities,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
-func (m *Destination) MarshalToSizedBuffer(dAtA []byte) (int, error) {
- i := len(dAtA)
- _ = i
- var l int
- _ = l
- if m.XXX_unrecognized != nil {
- i -= len(m.XXX_unrecognized)
- copy(dAtA[i:], m.XXX_unrecognized)
- }
- if m.Port != nil {
- {
- size, err := m.Port.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
+func (m *HTTPRetry) Reset() { *m = HTTPRetry{} }
+func (m *HTTPRetry) String() string { return proto.CompactTextString(m) }
+func (*HTTPRetry) ProtoMessage() {}
+func (*HTTPRetry) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8c56a442a0838fd7, []int{21}
+}
+func (m *HTTPRetry) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *HTTPRetry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_HTTPRetry.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
}
- i--
- dAtA[i] = 0x1a
- }
- if len(m.Subset) > 0 {
- i -= len(m.Subset)
- copy(dAtA[i:], m.Subset)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Subset)))
- i--
- dAtA[i] = 0x12
+ return b[:n], nil
}
- if len(m.Host) > 0 {
- i -= len(m.Host)
- copy(dAtA[i:], m.Host)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Host)))
- i--
- dAtA[i] = 0xa
+}
+func (m *HTTPRetry) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_HTTPRetry.Merge(m, src)
+}
+func (m *HTTPRetry) XXX_Size() int {
+ return m.Size()
+}
+func (m *HTTPRetry) XXX_DiscardUnknown() {
+ xxx_messageInfo_HTTPRetry.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_HTTPRetry proto.InternalMessageInfo
+
+func (m *HTTPRetry) GetAttempts() int32 {
+ if m != nil {
+ return m.Attempts
}
- return len(dAtA) - i, nil
+ return 0
}
-func (m *HTTPRoute) Marshal() (dAtA []byte, err error) {
- size := m.Size()
- dAtA = make([]byte, size)
- n, err := m.MarshalToSizedBuffer(dAtA[:size])
- if err != nil {
- return nil, err
+func (m *HTTPRetry) GetPerTryTimeout() *types.Duration {
+ if m != nil {
+ return m.PerTryTimeout
}
- return dAtA[:n], nil
+ return nil
}
-func (m *HTTPRoute) MarshalTo(dAtA []byte) (int, error) {
- size := m.Size()
- return m.MarshalToSizedBuffer(dAtA[:size])
+func (m *HTTPRetry) GetRetryOn() string {
+ if m != nil {
+ return m.RetryOn
+ }
+ return ""
}
-func (m *HTTPRoute) MarshalToSizedBuffer(dAtA []byte) (int, error) {
- i := len(dAtA)
- _ = i
- var l int
- _ = l
- if m.XXX_unrecognized != nil {
- i -= len(m.XXX_unrecognized)
- copy(dAtA[i:], m.XXX_unrecognized)
+func (m *HTTPRetry) GetRetryRemoteLocalities() *types.BoolValue {
+ if m != nil {
+ return m.RetryRemoteLocalities
}
- if m.Delegate != nil {
- {
- size, err := m.Delegate.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ return nil
+}
+
+// Describes the Cross-Origin Resource Sharing (CORS) policy, for a given
+// service. Refer to [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS)
+// for further details about cross origin resource sharing. For example,
+// the following rule restricts cross origin requests to those originating
+// from example.com domain using HTTP POST/GET, and sets the
+// `Access-Control-Allow-Credentials` header to false. In addition, it only
+// exposes `X-Foo-bar` header and sets an expiry period of 1 day.
+//
+// {{}}
+// {{}}
+// ```yaml
+// apiVersion: networking.istio.io/v1alpha3
+// kind: VirtualService
+// metadata:
+// name: ratings-route
+// spec:
+// hosts:
+// - ratings.prod.svc.cluster.local
+// http:
+// - route:
+// - destination:
+// host: ratings.prod.svc.cluster.local
+// subset: v1
+// corsPolicy:
+// allowOrigins:
+// - exact: https://example.com
+// allowMethods:
+// - POST
+// - GET
+// allowCredentials: false
+// allowHeaders:
+// - X-Foo-Bar
+// maxAge: "24h"
+// ```
+// {{}}
+//
+// {{}}
+// ```yaml
+// apiVersion: networking.istio.io/v1beta1
+// kind: VirtualService
+// metadata:
+// name: ratings-route
+// spec:
+// hosts:
+// - ratings.prod.svc.cluster.local
+// http:
+// - route:
+// - destination:
+// host: ratings.prod.svc.cluster.local
+// subset: v1
+// corsPolicy:
+// allowOrigins:
+// - exact: https://example.com
+// allowMethods:
+// - POST
+// - GET
+// allowCredentials: false
+// allowHeaders:
+// - X-Foo-Bar
+// maxAge: "24h"
+// ```
+// {{}}
+// {{}}
+//
+type CorsPolicy struct {
+ // The list of origins that are allowed to perform CORS requests. The
+ // content will be serialized into the Access-Control-Allow-Origin
+ // header. Wildcard * will allow all origins.
+ // $hide_from_docs
+ AllowOrigin []string `protobuf:"bytes,1,rep,name=allow_origin,json=allowOrigin,proto3" json:"allow_origin,omitempty"` // Deprecated: Do not use.
+ // String patterns that match allowed origins.
+ // An origin is allowed if any of the string matchers match.
+ // If a match is found, then the outgoing Access-Control-Allow-Origin would be set to the origin as provided by the client.
+ AllowOrigins []*StringMatch `protobuf:"bytes,7,rep,name=allow_origins,json=allowOrigins,proto3" json:"allow_origins,omitempty"`
+ // List of HTTP methods allowed to access the resource. The content will
+ // be serialized into the Access-Control-Allow-Methods header.
+ AllowMethods []string `protobuf:"bytes,2,rep,name=allow_methods,json=allowMethods,proto3" json:"allow_methods,omitempty"`
+ // List of HTTP headers that can be used when requesting the
+ // resource. Serialized to Access-Control-Allow-Headers header.
+ AllowHeaders []string `protobuf:"bytes,3,rep,name=allow_headers,json=allowHeaders,proto3" json:"allow_headers,omitempty"`
+ // A list of HTTP headers that the browsers are allowed to
+ // access. Serialized into Access-Control-Expose-Headers header.
+ ExposeHeaders []string `protobuf:"bytes,4,rep,name=expose_headers,json=exposeHeaders,proto3" json:"expose_headers,omitempty"`
+ // Specifies how long the results of a preflight request can be
+ // cached. Translates to the `Access-Control-Max-Age` header.
+ MaxAge *types.Duration `protobuf:"bytes,5,opt,name=max_age,json=maxAge,proto3" json:"max_age,omitempty"`
+ // Indicates whether the caller is allowed to send the actual request
+ // (not the preflight) using credentials. Translates to
+ // `Access-Control-Allow-Credentials` header.
+ AllowCredentials *types.BoolValue `protobuf:"bytes,6,opt,name=allow_credentials,json=allowCredentials,proto3" json:"allow_credentials,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *CorsPolicy) Reset() { *m = CorsPolicy{} }
+func (m *CorsPolicy) String() string { return proto.CompactTextString(m) }
+func (*CorsPolicy) ProtoMessage() {}
+func (*CorsPolicy) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8c56a442a0838fd7, []int{22}
+}
+func (m *CorsPolicy) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *CorsPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_CorsPolicy.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
}
- i--
- dAtA[i] = 0x1
- i--
- dAtA[i] = 0xa2
+ return b[:n], nil
}
- if m.MirrorPercentage != nil {
- {
- size, err := m.MirrorPercentage.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x1
- i--
- dAtA[i] = 0x9a
+}
+func (m *CorsPolicy) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CorsPolicy.Merge(m, src)
+}
+func (m *CorsPolicy) XXX_Size() int {
+ return m.Size()
+}
+func (m *CorsPolicy) XXX_DiscardUnknown() {
+ xxx_messageInfo_CorsPolicy.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CorsPolicy proto.InternalMessageInfo
+
+// Deprecated: Do not use.
+func (m *CorsPolicy) GetAllowOrigin() []string {
+ if m != nil {
+ return m.AllowOrigin
}
- if m.MirrorPercent != nil {
- {
- size, err := m.MirrorPercent.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x1
- i--
- dAtA[i] = 0x92
+ return nil
+}
+
+func (m *CorsPolicy) GetAllowOrigins() []*StringMatch {
+ if m != nil {
+ return m.AllowOrigins
}
- if len(m.Name) > 0 {
- i -= len(m.Name)
- copy(dAtA[i:], m.Name)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Name)))
- i--
- dAtA[i] = 0x1
- i--
- dAtA[i] = 0x8a
+ return nil
+}
+
+func (m *CorsPolicy) GetAllowMethods() []string {
+ if m != nil {
+ return m.AllowMethods
}
- if m.Headers != nil {
- {
- size, err := m.Headers.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x1
- i--
- dAtA[i] = 0x82
+ return nil
+}
+
+func (m *CorsPolicy) GetAllowHeaders() []string {
+ if m != nil {
+ return m.AllowHeaders
}
- if m.CorsPolicy != nil {
- {
- size, err := m.CorsPolicy.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x52
+ return nil
+}
+
+func (m *CorsPolicy) GetExposeHeaders() []string {
+ if m != nil {
+ return m.ExposeHeaders
}
- if m.Mirror != nil {
- {
- size, err := m.Mirror.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x4a
+ return nil
+}
+
+func (m *CorsPolicy) GetMaxAge() *types.Duration {
+ if m != nil {
+ return m.MaxAge
}
- if m.Fault != nil {
- {
- size, err := m.Fault.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x42
+ return nil
+}
+
+func (m *CorsPolicy) GetAllowCredentials() *types.BoolValue {
+ if m != nil {
+ return m.AllowCredentials
}
- if m.Retries != nil {
- {
- size, err := m.Retries.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x3a
- }
- if m.Timeout != nil {
- {
- size, err := m.Timeout.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x32
- }
- if m.Rewrite != nil {
- {
- size, err := m.Rewrite.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x22
- }
- if m.Redirect != nil {
- {
- size, err := m.Redirect.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x1a
- }
- if len(m.Route) > 0 {
- for iNdEx := len(m.Route) - 1; iNdEx >= 0; iNdEx-- {
- {
- size, err := m.Route[iNdEx].MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x12
- }
- }
- if len(m.Match) > 0 {
- for iNdEx := len(m.Match) - 1; iNdEx >= 0; iNdEx-- {
- {
- size, err := m.Match[iNdEx].MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0xa
- }
- }
- return len(dAtA) - i, nil
+ return nil
}
-func (m *Delegate) Marshal() (dAtA []byte, err error) {
- size := m.Size()
- dAtA = make([]byte, size)
- n, err := m.MarshalToSizedBuffer(dAtA[:size])
- if err != nil {
- return nil, err
- }
- return dAtA[:n], nil
+// HTTPFaultInjection can be used to specify one or more faults to inject
+// while forwarding HTTP requests to the destination specified in a route.
+// Fault specification is part of a VirtualService rule. Faults include
+// aborting the Http request from downstream service, and/or delaying
+// proxying of requests. A fault rule MUST HAVE delay or abort or both.
+//
+// *Note:* Delay and abort faults are independent of one another, even if
+// both are specified simultaneously.
+type HTTPFaultInjection struct {
+ // Delay requests before forwarding, emulating various failures such as
+ // network issues, overloaded upstream service, etc.
+ Delay *HTTPFaultInjection_Delay `protobuf:"bytes,1,opt,name=delay,proto3" json:"delay,omitempty"`
+ // Abort Http request attempts and return error codes back to downstream
+ // service, giving the impression that the upstream service is faulty.
+ Abort *HTTPFaultInjection_Abort `protobuf:"bytes,2,opt,name=abort,proto3" json:"abort,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
-func (m *Delegate) MarshalTo(dAtA []byte) (int, error) {
- size := m.Size()
- return m.MarshalToSizedBuffer(dAtA[:size])
+func (m *HTTPFaultInjection) Reset() { *m = HTTPFaultInjection{} }
+func (m *HTTPFaultInjection) String() string { return proto.CompactTextString(m) }
+func (*HTTPFaultInjection) ProtoMessage() {}
+func (*HTTPFaultInjection) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8c56a442a0838fd7, []int{23}
}
-
-func (m *Delegate) MarshalToSizedBuffer(dAtA []byte) (int, error) {
- i := len(dAtA)
- _ = i
- var l int
- _ = l
- if m.XXX_unrecognized != nil {
- i -= len(m.XXX_unrecognized)
- copy(dAtA[i:], m.XXX_unrecognized)
- }
- if len(m.Namespace) > 0 {
- i -= len(m.Namespace)
- copy(dAtA[i:], m.Namespace)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Namespace)))
- i--
- dAtA[i] = 0x12
- }
- if len(m.Name) > 0 {
- i -= len(m.Name)
- copy(dAtA[i:], m.Name)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Name)))
- i--
- dAtA[i] = 0xa
- }
- return len(dAtA) - i, nil
+func (m *HTTPFaultInjection) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
}
-
-func (m *Headers) Marshal() (dAtA []byte, err error) {
- size := m.Size()
- dAtA = make([]byte, size)
- n, err := m.MarshalToSizedBuffer(dAtA[:size])
- if err != nil {
- return nil, err
+func (m *HTTPFaultInjection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_HTTPFaultInjection.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
}
- return dAtA[:n], nil
}
-
-func (m *Headers) MarshalTo(dAtA []byte) (int, error) {
- size := m.Size()
- return m.MarshalToSizedBuffer(dAtA[:size])
+func (m *HTTPFaultInjection) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_HTTPFaultInjection.Merge(m, src)
}
-
-func (m *Headers) MarshalToSizedBuffer(dAtA []byte) (int, error) {
- i := len(dAtA)
- _ = i
- var l int
- _ = l
- if m.XXX_unrecognized != nil {
- i -= len(m.XXX_unrecognized)
- copy(dAtA[i:], m.XXX_unrecognized)
- }
- if m.Response != nil {
- {
- size, err := m.Response.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x12
- }
- if m.Request != nil {
- {
- size, err := m.Request.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0xa
- }
- return len(dAtA) - i, nil
+func (m *HTTPFaultInjection) XXX_Size() int {
+ return m.Size()
+}
+func (m *HTTPFaultInjection) XXX_DiscardUnknown() {
+ xxx_messageInfo_HTTPFaultInjection.DiscardUnknown(m)
}
-func (m *Headers_HeaderOperations) Marshal() (dAtA []byte, err error) {
- size := m.Size()
- dAtA = make([]byte, size)
- n, err := m.MarshalToSizedBuffer(dAtA[:size])
- if err != nil {
- return nil, err
+var xxx_messageInfo_HTTPFaultInjection proto.InternalMessageInfo
+
+func (m *HTTPFaultInjection) GetDelay() *HTTPFaultInjection_Delay {
+ if m != nil {
+ return m.Delay
}
- return dAtA[:n], nil
+ return nil
}
-func (m *Headers_HeaderOperations) MarshalTo(dAtA []byte) (int, error) {
- size := m.Size()
- return m.MarshalToSizedBuffer(dAtA[:size])
+func (m *HTTPFaultInjection) GetAbort() *HTTPFaultInjection_Abort {
+ if m != nil {
+ return m.Abort
+ }
+ return nil
}
-func (m *Headers_HeaderOperations) MarshalToSizedBuffer(dAtA []byte) (int, error) {
- i := len(dAtA)
- _ = i
- var l int
- _ = l
- if m.XXX_unrecognized != nil {
- i -= len(m.XXX_unrecognized)
- copy(dAtA[i:], m.XXX_unrecognized)
- }
- if len(m.Remove) > 0 {
- for iNdEx := len(m.Remove) - 1; iNdEx >= 0; iNdEx-- {
- i -= len(m.Remove[iNdEx])
- copy(dAtA[i:], m.Remove[iNdEx])
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Remove[iNdEx])))
- i--
- dAtA[i] = 0x1a
- }
- }
- if len(m.Add) > 0 {
- for k := range m.Add {
- v := m.Add[k]
- baseI := i
- i -= len(v)
- copy(dAtA[i:], v)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(v)))
- i--
- dAtA[i] = 0x12
- i -= len(k)
- copy(dAtA[i:], k)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(k)))
- i--
- dAtA[i] = 0xa
- i = encodeVarintVirtualService(dAtA, i, uint64(baseI-i))
- i--
- dAtA[i] = 0x12
- }
- }
- if len(m.Set) > 0 {
- for k := range m.Set {
- v := m.Set[k]
- baseI := i
- i -= len(v)
- copy(dAtA[i:], v)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(v)))
- i--
- dAtA[i] = 0x12
- i -= len(k)
- copy(dAtA[i:], k)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(k)))
- i--
- dAtA[i] = 0xa
- i = encodeVarintVirtualService(dAtA, i, uint64(baseI-i))
- i--
- dAtA[i] = 0xa
+// Delay specification is used to inject latency into the request
+// forwarding path. The following example will introduce a 5 second delay
+// in 1 out of every 1000 requests to the "v1" version of the "reviews"
+// service from all pods with label env: prod
+//
+// {{}}
+// {{}}
+// ```yaml
+// apiVersion: networking.istio.io/v1alpha3
+// kind: VirtualService
+// metadata:
+// name: reviews-route
+// spec:
+// hosts:
+// - reviews.prod.svc.cluster.local
+// http:
+// - match:
+// - sourceLabels:
+// env: prod
+// route:
+// - destination:
+// host: reviews.prod.svc.cluster.local
+// subset: v1
+// fault:
+// delay:
+// percentage:
+// value: 0.1
+// fixedDelay: 5s
+// ```
+// {{}}
+//
+// {{}}
+// ```yaml
+// apiVersion: networking.istio.io/v1beta1
+// kind: VirtualService
+// metadata:
+// name: reviews-route
+// spec:
+// hosts:
+// - reviews.prod.svc.cluster.local
+// http:
+// - match:
+// - sourceLabels:
+// env: prod
+// route:
+// - destination:
+// host: reviews.prod.svc.cluster.local
+// subset: v1
+// fault:
+// delay:
+// percentage:
+// value: 0.1
+// fixedDelay: 5s
+// ```
+// {{}}
+// {{}}
+//
+// The _fixedDelay_ field is used to indicate the amount of delay in seconds.
+// The optional _percentage_ field can be used to only delay a certain
+// percentage of requests. If left unspecified, all request will be delayed.
+type HTTPFaultInjection_Delay struct {
+ // Percentage of requests on which the delay will be injected (0-100).
+ // Use of integer `percent` value is deprecated. Use the double `percentage`
+ // field instead.
+ Percent int32 `protobuf:"varint,1,opt,name=percent,proto3" json:"percent,omitempty"` // Deprecated: Do not use.
+ // Types that are valid to be assigned to HttpDelayType:
+ // *HTTPFaultInjection_Delay_FixedDelay
+ // *HTTPFaultInjection_Delay_ExponentialDelay
+ HttpDelayType isHTTPFaultInjection_Delay_HttpDelayType `protobuf_oneof:"http_delay_type"`
+ // Percentage of requests on which the delay will be injected.
+ Percentage *Percent `protobuf:"bytes,5,opt,name=percentage,proto3" json:"percentage,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *HTTPFaultInjection_Delay) Reset() { *m = HTTPFaultInjection_Delay{} }
+func (m *HTTPFaultInjection_Delay) String() string { return proto.CompactTextString(m) }
+func (*HTTPFaultInjection_Delay) ProtoMessage() {}
+func (*HTTPFaultInjection_Delay) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8c56a442a0838fd7, []int{23, 0}
+}
+func (m *HTTPFaultInjection_Delay) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *HTTPFaultInjection_Delay) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_HTTPFaultInjection_Delay.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
}
+ return b[:n], nil
}
- return len(dAtA) - i, nil
+}
+func (m *HTTPFaultInjection_Delay) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_HTTPFaultInjection_Delay.Merge(m, src)
+}
+func (m *HTTPFaultInjection_Delay) XXX_Size() int {
+ return m.Size()
+}
+func (m *HTTPFaultInjection_Delay) XXX_DiscardUnknown() {
+ xxx_messageInfo_HTTPFaultInjection_Delay.DiscardUnknown(m)
}
-func (m *TLSRoute) Marshal() (dAtA []byte, err error) {
- size := m.Size()
- dAtA = make([]byte, size)
- n, err := m.MarshalToSizedBuffer(dAtA[:size])
- if err != nil {
- return nil, err
- }
- return dAtA[:n], nil
+var xxx_messageInfo_HTTPFaultInjection_Delay proto.InternalMessageInfo
+
+type isHTTPFaultInjection_Delay_HttpDelayType interface {
+ isHTTPFaultInjection_Delay_HttpDelayType()
+ MarshalTo([]byte) (int, error)
+ Size() int
}
-func (m *TLSRoute) MarshalTo(dAtA []byte) (int, error) {
- size := m.Size()
- return m.MarshalToSizedBuffer(dAtA[:size])
+type HTTPFaultInjection_Delay_FixedDelay struct {
+ FixedDelay *types.Duration `protobuf:"bytes,2,opt,name=fixed_delay,json=fixedDelay,proto3,oneof"`
+}
+type HTTPFaultInjection_Delay_ExponentialDelay struct {
+ ExponentialDelay *types.Duration `protobuf:"bytes,3,opt,name=exponential_delay,json=exponentialDelay,proto3,oneof"`
}
-func (m *TLSRoute) MarshalToSizedBuffer(dAtA []byte) (int, error) {
- i := len(dAtA)
- _ = i
- var l int
- _ = l
- if m.XXX_unrecognized != nil {
- i -= len(m.XXX_unrecognized)
- copy(dAtA[i:], m.XXX_unrecognized)
- }
- if len(m.Route) > 0 {
- for iNdEx := len(m.Route) - 1; iNdEx >= 0; iNdEx-- {
- {
- size, err := m.Route[iNdEx].MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x12
- }
- }
- if len(m.Match) > 0 {
- for iNdEx := len(m.Match) - 1; iNdEx >= 0; iNdEx-- {
- {
- size, err := m.Match[iNdEx].MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0xa
- }
+func (*HTTPFaultInjection_Delay_FixedDelay) isHTTPFaultInjection_Delay_HttpDelayType() {}
+func (*HTTPFaultInjection_Delay_ExponentialDelay) isHTTPFaultInjection_Delay_HttpDelayType() {}
+
+func (m *HTTPFaultInjection_Delay) GetHttpDelayType() isHTTPFaultInjection_Delay_HttpDelayType {
+ if m != nil {
+ return m.HttpDelayType
}
- return len(dAtA) - i, nil
+ return nil
}
-func (m *TCPRoute) Marshal() (dAtA []byte, err error) {
- size := m.Size()
- dAtA = make([]byte, size)
- n, err := m.MarshalToSizedBuffer(dAtA[:size])
- if err != nil {
- return nil, err
+// Deprecated: Do not use.
+func (m *HTTPFaultInjection_Delay) GetPercent() int32 {
+ if m != nil {
+ return m.Percent
}
- return dAtA[:n], nil
+ return 0
}
-func (m *TCPRoute) MarshalTo(dAtA []byte) (int, error) {
- size := m.Size()
- return m.MarshalToSizedBuffer(dAtA[:size])
+func (m *HTTPFaultInjection_Delay) GetFixedDelay() *types.Duration {
+ if x, ok := m.GetHttpDelayType().(*HTTPFaultInjection_Delay_FixedDelay); ok {
+ return x.FixedDelay
+ }
+ return nil
}
-func (m *TCPRoute) MarshalToSizedBuffer(dAtA []byte) (int, error) {
- i := len(dAtA)
- _ = i
- var l int
- _ = l
- if m.XXX_unrecognized != nil {
- i -= len(m.XXX_unrecognized)
- copy(dAtA[i:], m.XXX_unrecognized)
- }
- if len(m.Route) > 0 {
- for iNdEx := len(m.Route) - 1; iNdEx >= 0; iNdEx-- {
- {
- size, err := m.Route[iNdEx].MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x12
- }
+func (m *HTTPFaultInjection_Delay) GetExponentialDelay() *types.Duration {
+ if x, ok := m.GetHttpDelayType().(*HTTPFaultInjection_Delay_ExponentialDelay); ok {
+ return x.ExponentialDelay
}
- if len(m.Match) > 0 {
- for iNdEx := len(m.Match) - 1; iNdEx >= 0; iNdEx-- {
- {
- size, err := m.Match[iNdEx].MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0xa
- }
+ return nil
+}
+
+func (m *HTTPFaultInjection_Delay) GetPercentage() *Percent {
+ if m != nil {
+ return m.Percentage
}
- return len(dAtA) - i, nil
+ return nil
}
-func (m *HTTPMatchRequest) Marshal() (dAtA []byte, err error) {
- size := m.Size()
- dAtA = make([]byte, size)
- n, err := m.MarshalToSizedBuffer(dAtA[:size])
- if err != nil {
- return nil, err
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*HTTPFaultInjection_Delay) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*HTTPFaultInjection_Delay_FixedDelay)(nil),
+ (*HTTPFaultInjection_Delay_ExponentialDelay)(nil),
}
- return dAtA[:n], nil
}
-func (m *HTTPMatchRequest) MarshalTo(dAtA []byte) (int, error) {
- size := m.Size()
- return m.MarshalToSizedBuffer(dAtA[:size])
+// Abort specification is used to prematurely abort a request with a
+// pre-specified error code. The following example will return an HTTP 400
+// error code for 1 out of every 1000 requests to the "ratings" service "v1".
+//
+// {{}}
+// {{}}
+// ```yaml
+// apiVersion: networking.istio.io/v1alpha3
+// kind: VirtualService
+// metadata:
+// name: ratings-route
+// spec:
+// hosts:
+// - ratings.prod.svc.cluster.local
+// http:
+// - route:
+// - destination:
+// host: ratings.prod.svc.cluster.local
+// subset: v1
+// fault:
+// abort:
+// percentage:
+// value: 0.1
+// httpStatus: 400
+// ```
+// {{}}
+//
+// {{}}
+// ```yaml
+// apiVersion: networking.istio.io/v1beta1
+// kind: VirtualService
+// metadata:
+// name: ratings-route
+// spec:
+// hosts:
+// - ratings.prod.svc.cluster.local
+// http:
+// - route:
+// - destination:
+// host: ratings.prod.svc.cluster.local
+// subset: v1
+// fault:
+// abort:
+// percentage:
+// value: 0.1
+// httpStatus: 400
+// ```
+// {{}}
+// {{}}
+//
+// The _httpStatus_ field is used to indicate the HTTP status code to
+// return to the caller. The optional _percentage_ field can be used to only
+// abort a certain percentage of requests. If not specified, all requests are
+// aborted.
+type HTTPFaultInjection_Abort struct {
+ // Types that are valid to be assigned to ErrorType:
+ // *HTTPFaultInjection_Abort_HttpStatus
+ // *HTTPFaultInjection_Abort_GrpcStatus
+ // *HTTPFaultInjection_Abort_Http2Error
+ ErrorType isHTTPFaultInjection_Abort_ErrorType `protobuf_oneof:"error_type"`
+ // Percentage of requests to be aborted with the error code provided.
+ Percentage *Percent `protobuf:"bytes,5,opt,name=percentage,proto3" json:"percentage,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
-func (m *HTTPMatchRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
- i := len(dAtA)
- _ = i
- var l int
- _ = l
- if m.XXX_unrecognized != nil {
- i -= len(m.XXX_unrecognized)
- copy(dAtA[i:], m.XXX_unrecognized)
+func (m *HTTPFaultInjection_Abort) Reset() { *m = HTTPFaultInjection_Abort{} }
+func (m *HTTPFaultInjection_Abort) String() string { return proto.CompactTextString(m) }
+func (*HTTPFaultInjection_Abort) ProtoMessage() {}
+func (*HTTPFaultInjection_Abort) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8c56a442a0838fd7, []int{23, 1}
+}
+func (m *HTTPFaultInjection_Abort) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *HTTPFaultInjection_Abort) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_HTTPFaultInjection_Abort.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
}
- if len(m.SourceNamespace) > 0 {
- i -= len(m.SourceNamespace)
- copy(dAtA[i:], m.SourceNamespace)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.SourceNamespace)))
- i--
- dAtA[i] = 0x6a
+}
+func (m *HTTPFaultInjection_Abort) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_HTTPFaultInjection_Abort.Merge(m, src)
+}
+func (m *HTTPFaultInjection_Abort) XXX_Size() int {
+ return m.Size()
+}
+func (m *HTTPFaultInjection_Abort) XXX_DiscardUnknown() {
+ xxx_messageInfo_HTTPFaultInjection_Abort.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_HTTPFaultInjection_Abort proto.InternalMessageInfo
+
+type isHTTPFaultInjection_Abort_ErrorType interface {
+ isHTTPFaultInjection_Abort_ErrorType()
+ MarshalTo([]byte) (int, error)
+ Size() int
+}
+
+type HTTPFaultInjection_Abort_HttpStatus struct {
+ HttpStatus int32 `protobuf:"varint,2,opt,name=http_status,json=httpStatus,proto3,oneof"`
+}
+type HTTPFaultInjection_Abort_GrpcStatus struct {
+ GrpcStatus string `protobuf:"bytes,3,opt,name=grpc_status,json=grpcStatus,proto3,oneof"`
+}
+type HTTPFaultInjection_Abort_Http2Error struct {
+ Http2Error string `protobuf:"bytes,4,opt,name=http2_error,json=http2Error,proto3,oneof"`
+}
+
+func (*HTTPFaultInjection_Abort_HttpStatus) isHTTPFaultInjection_Abort_ErrorType() {}
+func (*HTTPFaultInjection_Abort_GrpcStatus) isHTTPFaultInjection_Abort_ErrorType() {}
+func (*HTTPFaultInjection_Abort_Http2Error) isHTTPFaultInjection_Abort_ErrorType() {}
+
+func (m *HTTPFaultInjection_Abort) GetErrorType() isHTTPFaultInjection_Abort_ErrorType {
+ if m != nil {
+ return m.ErrorType
}
- if len(m.WithoutHeaders) > 0 {
- for k := range m.WithoutHeaders {
- v := m.WithoutHeaders[k]
- baseI := i
- if v != nil {
- {
- size, err := v.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x12
- }
- i -= len(k)
- copy(dAtA[i:], k)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(k)))
- i--
- dAtA[i] = 0xa
- i = encodeVarintVirtualService(dAtA, i, uint64(baseI-i))
- i--
- dAtA[i] = 0x62
- }
+ return nil
+}
+
+func (m *HTTPFaultInjection_Abort) GetHttpStatus() int32 {
+ if x, ok := m.GetErrorType().(*HTTPFaultInjection_Abort_HttpStatus); ok {
+ return x.HttpStatus
}
- if len(m.Name) > 0 {
- i -= len(m.Name)
- copy(dAtA[i:], m.Name)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Name)))
- i--
- dAtA[i] = 0x5a
+ return 0
+}
+
+func (m *HTTPFaultInjection_Abort) GetGrpcStatus() string {
+ if x, ok := m.GetErrorType().(*HTTPFaultInjection_Abort_GrpcStatus); ok {
+ return x.GrpcStatus
}
- if m.IgnoreUriCase {
- i--
- if m.IgnoreUriCase {
- dAtA[i] = 1
- } else {
- dAtA[i] = 0
- }
- i--
- dAtA[i] = 0x50
+ return ""
+}
+
+func (m *HTTPFaultInjection_Abort) GetHttp2Error() string {
+ if x, ok := m.GetErrorType().(*HTTPFaultInjection_Abort_Http2Error); ok {
+ return x.Http2Error
}
- if len(m.QueryParams) > 0 {
- for k := range m.QueryParams {
- v := m.QueryParams[k]
- baseI := i
- if v != nil {
- {
- size, err := v.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x12
- }
- i -= len(k)
- copy(dAtA[i:], k)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(k)))
- i--
- dAtA[i] = 0xa
- i = encodeVarintVirtualService(dAtA, i, uint64(baseI-i))
- i--
- dAtA[i] = 0x4a
- }
+ return ""
+}
+
+func (m *HTTPFaultInjection_Abort) GetPercentage() *Percent {
+ if m != nil {
+ return m.Percentage
}
- if len(m.Gateways) > 0 {
- for iNdEx := len(m.Gateways) - 1; iNdEx >= 0; iNdEx-- {
- i -= len(m.Gateways[iNdEx])
- copy(dAtA[i:], m.Gateways[iNdEx])
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Gateways[iNdEx])))
- i--
- dAtA[i] = 0x42
- }
+ return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*HTTPFaultInjection_Abort) XXX_OneofWrappers() []interface{} {
+ return []interface{}{
+ (*HTTPFaultInjection_Abort_HttpStatus)(nil),
+ (*HTTPFaultInjection_Abort_GrpcStatus)(nil),
+ (*HTTPFaultInjection_Abort_Http2Error)(nil),
}
- if len(m.SourceLabels) > 0 {
- for k := range m.SourceLabels {
- v := m.SourceLabels[k]
- baseI := i
- i -= len(v)
- copy(dAtA[i:], v)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(v)))
- i--
- dAtA[i] = 0x12
- i -= len(k)
- copy(dAtA[i:], k)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(k)))
- i--
- dAtA[i] = 0xa
- i = encodeVarintVirtualService(dAtA, i, uint64(baseI-i))
- i--
- dAtA[i] = 0x3a
- }
- }
- if m.Port != 0 {
- i = encodeVarintVirtualService(dAtA, i, uint64(m.Port))
- i--
- dAtA[i] = 0x30
- }
- if len(m.Headers) > 0 {
- for k := range m.Headers {
- v := m.Headers[k]
- baseI := i
- if v != nil {
- {
- size, err := v.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x12
- }
- i -= len(k)
- copy(dAtA[i:], k)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(k)))
- i--
- dAtA[i] = 0xa
- i = encodeVarintVirtualService(dAtA, i, uint64(baseI-i))
- i--
- dAtA[i] = 0x2a
- }
- }
- if m.Authority != nil {
- {
- size, err := m.Authority.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
+}
+
+// PortSelector specifies the number of a port to be used for
+// matching or selection for final routing.
+type PortSelector struct {
+ // Valid port number
+ Number uint32 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PortSelector) Reset() { *m = PortSelector{} }
+func (m *PortSelector) String() string { return proto.CompactTextString(m) }
+func (*PortSelector) ProtoMessage() {}
+func (*PortSelector) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8c56a442a0838fd7, []int{24}
+}
+func (m *PortSelector) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *PortSelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_PortSelector.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
}
- i--
- dAtA[i] = 0x22
+ return b[:n], nil
}
- if m.Method != nil {
- {
- size, err := m.Method.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x1a
+}
+func (m *PortSelector) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PortSelector.Merge(m, src)
+}
+func (m *PortSelector) XXX_Size() int {
+ return m.Size()
+}
+func (m *PortSelector) XXX_DiscardUnknown() {
+ xxx_messageInfo_PortSelector.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PortSelector proto.InternalMessageInfo
+
+func (m *PortSelector) GetNumber() uint32 {
+ if m != nil {
+ return m.Number
}
- if m.Scheme != nil {
- {
- size, err := m.Scheme.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ return 0
+}
+
+// Percent specifies a percentage in the range of [0.0, 100.0].
+type Percent struct {
+ Value float64 `protobuf:"fixed64,1,opt,name=value,proto3" json:"value,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Percent) Reset() { *m = Percent{} }
+func (m *Percent) String() string { return proto.CompactTextString(m) }
+func (*Percent) ProtoMessage() {}
+func (*Percent) Descriptor() ([]byte, []int) {
+ return fileDescriptor_8c56a442a0838fd7, []int{25}
+}
+func (m *Percent) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *Percent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_Percent.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
}
- i--
- dAtA[i] = 0x12
+ return b[:n], nil
}
- if m.Uri != nil {
- {
- size, err := m.Uri.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0xa
+}
+func (m *Percent) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Percent.Merge(m, src)
+}
+func (m *Percent) XXX_Size() int {
+ return m.Size()
+}
+func (m *Percent) XXX_DiscardUnknown() {
+ xxx_messageInfo_Percent.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Percent proto.InternalMessageInfo
+
+func (m *Percent) GetValue() float64 {
+ if m != nil {
+ return m.Value
}
- return len(dAtA) - i, nil
+ return 0
}
-func (m *HTTPRouteDestination) Marshal() (dAtA []byte, err error) {
+func init() {
+ proto.RegisterType((*VirtualService)(nil), "istio.networking.v1beta1.VirtualService")
+ proto.RegisterType((*Destination)(nil), "istio.networking.v1beta1.Destination")
+ proto.RegisterType((*HTTPRoute)(nil), "istio.networking.v1beta1.HTTPRoute")
+ proto.RegisterType((*Delegate)(nil), "istio.networking.v1beta1.Delegate")
+ proto.RegisterType((*Headers)(nil), "istio.networking.v1beta1.Headers")
+ proto.RegisterType((*Headers_HeaderOperations)(nil), "istio.networking.v1beta1.Headers.HeaderOperations")
+ proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1beta1.Headers.HeaderOperations.AddEntry")
+ proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1beta1.Headers.HeaderOperations.SetEntry")
+ proto.RegisterType((*TLSRoute)(nil), "istio.networking.v1beta1.TLSRoute")
+ proto.RegisterType((*TCPRoute)(nil), "istio.networking.v1beta1.TCPRoute")
+ proto.RegisterType((*HTTPMatchRequest)(nil), "istio.networking.v1beta1.HTTPMatchRequest")
+ proto.RegisterMapType((map[string]*StringMatch)(nil), "istio.networking.v1beta1.HTTPMatchRequest.HeadersEntry")
+ proto.RegisterMapType((map[string]*StringMatch)(nil), "istio.networking.v1beta1.HTTPMatchRequest.QueryParamsEntry")
+ proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1beta1.HTTPMatchRequest.SourceLabelsEntry")
+ proto.RegisterMapType((map[string]*StringMatch)(nil), "istio.networking.v1beta1.HTTPMatchRequest.WithoutHeadersEntry")
+ proto.RegisterType((*HTTPRouteDestination)(nil), "istio.networking.v1beta1.HTTPRouteDestination")
+ proto.RegisterType((*HTTPGlobalRateLimit)(nil), "istio.networking.v1beta1.HTTPGlobalRateLimit")
+ proto.RegisterType((*RateLimitAction)(nil), "istio.networking.v1beta1.RateLimitAction")
+ proto.RegisterType((*RateLimitAction_RequestHeader)(nil), "istio.networking.v1beta1.RateLimitAction.RequestHeader")
+ proto.RegisterType((*RateLimitAction_HeaderMatch)(nil), "istio.networking.v1beta1.RateLimitAction.HeaderMatch")
+ proto.RegisterType((*RateLimitAction_GenericKey)(nil), "istio.networking.v1beta1.RateLimitAction.GenericKey")
+ proto.RegisterType((*HTTPLocalRateLimit)(nil), "istio.networking.v1beta1.HTTPLocalRateLimit")
+ proto.RegisterType((*TokenBucket)(nil), "istio.networking.v1beta1.TokenBucket")
+ proto.RegisterType((*RouteDestination)(nil), "istio.networking.v1beta1.RouteDestination")
+ proto.RegisterType((*LocalRateLimit)(nil), "istio.networking.v1beta1.LocalRateLimit")
+ proto.RegisterType((*GlobalRateLimit)(nil), "istio.networking.v1beta1.GlobalRateLimit")
+ proto.RegisterType((*GlobalRateLimit_RateLimitDescriptor)(nil), "istio.networking.v1beta1.GlobalRateLimit.RateLimitDescriptor")
+ proto.RegisterType((*GlobalRateLimit_RateLimitDescriptor_Entry)(nil), "istio.networking.v1beta1.GlobalRateLimit.RateLimitDescriptor.Entry")
+ proto.RegisterType((*L4MatchAttributes)(nil), "istio.networking.v1beta1.L4MatchAttributes")
+ proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1beta1.L4MatchAttributes.SourceLabelsEntry")
+ proto.RegisterType((*TLSMatchAttributes)(nil), "istio.networking.v1beta1.TLSMatchAttributes")
+ proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1beta1.TLSMatchAttributes.SourceLabelsEntry")
+ proto.RegisterType((*HTTPRedirect)(nil), "istio.networking.v1beta1.HTTPRedirect")
+ proto.RegisterType((*HTTPRewrite)(nil), "istio.networking.v1beta1.HTTPRewrite")
+ proto.RegisterType((*StringMatch)(nil), "istio.networking.v1beta1.StringMatch")
+ proto.RegisterType((*HTTPRetry)(nil), "istio.networking.v1beta1.HTTPRetry")
+ proto.RegisterType((*CorsPolicy)(nil), "istio.networking.v1beta1.CorsPolicy")
+ proto.RegisterType((*HTTPFaultInjection)(nil), "istio.networking.v1beta1.HTTPFaultInjection")
+ proto.RegisterType((*HTTPFaultInjection_Delay)(nil), "istio.networking.v1beta1.HTTPFaultInjection.Delay")
+ proto.RegisterType((*HTTPFaultInjection_Abort)(nil), "istio.networking.v1beta1.HTTPFaultInjection.Abort")
+ proto.RegisterType((*PortSelector)(nil), "istio.networking.v1beta1.PortSelector")
+ proto.RegisterType((*Percent)(nil), "istio.networking.v1beta1.Percent")
+}
+
+func init() {
+ proto.RegisterFile("networking/v1beta1/virtual_service.proto", fileDescriptor_8c56a442a0838fd7)
+}
+
+var fileDescriptor_8c56a442a0838fd7 = []byte{
+ // 2571 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xcb, 0x73, 0xdb, 0xc6,
+ 0x19, 0x37, 0xf8, 0x04, 0x3f, 0x90, 0x12, 0xb5, 0x4e, 0x63, 0x84, 0x76, 0xfd, 0x80, 0x1f, 0x55,
+ 0xd2, 0x84, 0x9a, 0xc8, 0x4e, 0xdd, 0x89, 0xe3, 0x24, 0x94, 0xe4, 0x58, 0x56, 0x64, 0x5b, 0x81,
+ 0x64, 0x67, 0x9a, 0x43, 0x51, 0x10, 0x58, 0x91, 0xa8, 0x41, 0x00, 0x5e, 0x2c, 0x25, 0xb1, 0xe7,
+ 0xcc, 0xb4, 0x33, 0x39, 0x74, 0x3a, 0x9d, 0x1e, 0x7a, 0xee, 0xad, 0xfd, 0x07, 0xfa, 0x27, 0xf4,
+ 0xd4, 0xe9, 0xa1, 0xbd, 0x66, 0x32, 0xbe, 0xf5, 0xd0, 0x3f, 0xa1, 0x33, 0x9d, 0x7d, 0x80, 0x00,
+ 0x29, 0x89, 0x8f, 0x38, 0x6e, 0x4e, 0x22, 0xbe, 0xfd, 0x7e, 0xbf, 0xdd, 0xfd, 0x76, 0xf7, 0x7b,
+ 0xec, 0x0a, 0x96, 0x03, 0x4c, 0x0f, 0x43, 0xf2, 0xcc, 0x0b, 0x3a, 0x2b, 0x07, 0xef, 0xb6, 0x31,
+ 0xb5, 0xdf, 0x5d, 0x39, 0xf0, 0x08, 0xed, 0xdb, 0xbe, 0x15, 0x63, 0x72, 0xe0, 0x39, 0xb8, 0x19,
+ 0x91, 0x90, 0x86, 0x48, 0xf7, 0x62, 0xea, 0x85, 0xcd, 0x54, 0xbf, 0x29, 0xf5, 0x1b, 0x97, 0x3a,
+ 0x61, 0xd8, 0xf1, 0xf1, 0x8a, 0x1d, 0x79, 0x2b, 0xfb, 0x1e, 0xf6, 0x5d, 0xab, 0x8d, 0xbb, 0xf6,
+ 0x81, 0x17, 0x12, 0x01, 0x6d, 0x5c, 0x94, 0x0a, 0xfc, 0xab, 0xdd, 0xdf, 0x5f, 0x71, 0xfb, 0xc4,
+ 0xa6, 0x5e, 0x18, 0x9c, 0xd6, 0x7e, 0x48, 0xec, 0x28, 0xc2, 0x24, 0x16, 0xed, 0xc6, 0x97, 0x39,
+ 0x58, 0x78, 0x2a, 0x06, 0xb5, 0x2b, 0xc6, 0x84, 0x5e, 0x83, 0x62, 0x37, 0x8c, 0x69, 0xac, 0x2b,
+ 0x97, 0xf3, 0xcb, 0x15, 0x53, 0x7c, 0xa0, 0x06, 0xa8, 0x1d, 0x9b, 0xe2, 0x43, 0x7b, 0x10, 0xeb,
+ 0x39, 0xde, 0x30, 0xfc, 0x46, 0xb7, 0xa1, 0xd0, 0xa5, 0x34, 0xd2, 0xf3, 0x97, 0xf3, 0xcb, 0xda,
+ 0xea, 0xd5, 0xe6, 0x69, 0xd3, 0x69, 0x6e, 0xee, 0xed, 0xed, 0x98, 0x61, 0x9f, 0x62, 0x93, 0x03,
+ 0xd0, 0x2d, 0xc8, 0x53, 0x3f, 0xd6, 0x8b, 0x1c, 0x67, 0x9c, 0x8e, 0xdb, 0xdb, 0xde, 0x15, 0x30,
+ 0xa6, 0xce, 0x51, 0x4e, 0xa4, 0x17, 0xa6, 0xa2, 0xd6, 0x77, 0x12, 0x94, 0x13, 0xa1, 0xf3, 0x50,
+ 0xc1, 0x47, 0x51, 0x48, 0xa8, 0x45, 0x43, 0xbd, 0x24, 0x66, 0x20, 0x04, 0x7b, 0xa1, 0xf1, 0x2b,
+ 0xd0, 0x36, 0x70, 0x4c, 0xbd, 0x80, 0xdb, 0x0e, 0x9d, 0x83, 0x02, 0x9b, 0xb5, 0xae, 0x5c, 0x56,
+ 0x96, 0x2b, 0x6b, 0xf9, 0x6f, 0x5a, 0x39, 0x93, 0x0b, 0xd0, 0xeb, 0x50, 0x8a, 0xfb, 0xed, 0x18,
+ 0x53, 0x3d, 0xc7, 0x9a, 0x4c, 0xf9, 0x85, 0xde, 0x87, 0x02, 0x63, 0xd2, 0xf3, 0x97, 0x95, 0x65,
+ 0x6d, 0xf5, 0xc6, 0xe9, 0x63, 0xda, 0x09, 0x09, 0xdd, 0xc5, 0x3e, 0x76, 0x68, 0x48, 0x4c, 0x8e,
+ 0x31, 0x7e, 0xa7, 0x42, 0x65, 0x68, 0x18, 0x84, 0xa0, 0x10, 0xd8, 0x3d, 0xac, 0x2f, 0x71, 0x7e,
+ 0xfe, 0x1b, 0x7d, 0x0c, 0xc5, 0x9e, 0x4d, 0x9d, 0x2e, 0x5f, 0x11, 0x6d, 0xf5, 0xad, 0xc9, 0x06,
+ 0x7e, 0xc8, 0x54, 0x4d, 0xfc, 0xbc, 0x8f, 0x63, 0x6a, 0x0a, 0x20, 0xda, 0x80, 0x22, 0x61, 0xf4,
+ 0x7c, 0xe9, 0xb4, 0xd5, 0xe6, 0x0c, 0x4b, 0x94, 0xb1, 0x87, 0x29, 0xc0, 0x68, 0x0d, 0x54, 0x82,
+ 0x5d, 0x8f, 0x60, 0x67, 0x86, 0x99, 0x72, 0x22, 0xa9, 0x6d, 0x0e, 0x71, 0xe8, 0x43, 0x50, 0x5d,
+ 0xec, 0x63, 0xb6, 0x77, 0xf4, 0xd7, 0x38, 0xc7, 0x84, 0x15, 0xdc, 0x90, 0x9a, 0xe6, 0x10, 0x83,
+ 0x3e, 0x82, 0x32, 0xc1, 0x87, 0xc4, 0xa3, 0x58, 0x2f, 0x70, 0xf8, 0xf5, 0x69, 0x43, 0xe0, 0xca,
+ 0x66, 0x82, 0x42, 0x37, 0xa1, 0x4c, 0xbd, 0x1e, 0x0e, 0xfb, 0x54, 0x2f, 0x71, 0x82, 0x37, 0x9a,
+ 0xe2, 0x8c, 0x34, 0x93, 0x33, 0xd2, 0xdc, 0x90, 0x67, 0xc8, 0x4c, 0x34, 0xd1, 0x5d, 0xd6, 0x2b,
+ 0x25, 0x1e, 0x8e, 0xf5, 0x32, 0x07, 0x4d, 0xdb, 0xe4, 0x98, 0x92, 0x81, 0x99, 0x60, 0xd0, 0x1a,
+ 0x14, 0xf7, 0xed, 0xbe, 0x4f, 0x75, 0x95, 0x83, 0xdf, 0x9e, 0x0c, 0xfe, 0x84, 0xa9, 0x3e, 0x08,
+ 0x7e, 0x89, 0x1d, 0x61, 0x7c, 0x0e, 0x45, 0x77, 0xa1, 0xd4, 0xf3, 0x08, 0x09, 0x89, 0x5e, 0x99,
+ 0x36, 0xef, 0xec, 0xd2, 0x49, 0x10, 0xba, 0x0f, 0x0b, 0xe2, 0x97, 0x15, 0x61, 0xe2, 0xe0, 0x80,
+ 0xea, 0x88, 0xd3, 0x5c, 0x38, 0x36, 0xfb, 0x27, 0x0f, 0x02, 0x7a, 0x73, 0xf5, 0xa9, 0xed, 0xf7,
+ 0xf1, 0x5a, 0x4e, 0x57, 0xcc, 0x9a, 0xc0, 0xed, 0x08, 0x18, 0x7a, 0x04, 0x4b, 0xa3, 0x44, 0x76,
+ 0x07, 0xeb, 0x67, 0x39, 0xd7, 0x95, 0x09, 0xfb, 0x5e, 0xe8, 0x9a, 0xf5, 0x11, 0x32, 0xbb, 0x83,
+ 0xd1, 0x3d, 0xd0, 0x9c, 0x90, 0xc4, 0x56, 0x14, 0xfa, 0x9e, 0x33, 0xd0, 0x81, 0x33, 0x5d, 0x3b,
+ 0x9d, 0x69, 0x3d, 0x24, 0xf1, 0x0e, 0xd7, 0x35, 0xc1, 0x19, 0xfe, 0x46, 0x77, 0xa0, 0xdc, 0xc5,
+ 0xb6, 0x8b, 0x49, 0xac, 0xd7, 0xa7, 0x0d, 0x66, 0x53, 0x28, 0x9a, 0x09, 0x62, 0xab, 0xa0, 0x16,
+ 0xeb, 0xa5, 0xad, 0x82, 0xaa, 0xd5, 0xeb, 0xe6, 0xd2, 0x21, 0x6e, 0xc7, 0xa1, 0xf3, 0x0c, 0x53,
+ 0xab, 0x1f, 0x75, 0x88, 0xed, 0x62, 0x73, 0x81, 0xb9, 0xcc, 0xc0, 0xb5, 0xa4, 0xba, 0x79, 0x8e,
+ 0xe0, 0x5e, 0x78, 0x80, 0x2d, 0x82, 0xe3, 0x28, 0x0c, 0x62, 0x9c, 0x36, 0x48, 0xc5, 0x63, 0x0d,
+ 0xaf, 0x0f, 0x11, 0xfc, 0x58, 0xa6, 0xf2, 0x21, 0x60, 0x44, 0x6e, 0x7c, 0x00, 0x6a, 0xb2, 0xf7,
+ 0x87, 0x1e, 0x41, 0xc9, 0x78, 0x84, 0x0b, 0x50, 0x61, 0x7f, 0xe3, 0xc8, 0x76, 0xb0, 0x74, 0x45,
+ 0xa9, 0xc0, 0x78, 0x91, 0x87, 0xb2, 0x9c, 0x23, 0xda, 0x66, 0x3b, 0x97, 0x93, 0x73, 0x02, 0x6d,
+ 0x75, 0x75, 0xaa, 0x5d, 0xe4, 0xdf, 0xc7, 0x11, 0x16, 0xc7, 0x20, 0x36, 0x13, 0x0a, 0xf4, 0x88,
+ 0x79, 0x00, 0x31, 0x37, 0xde, 0xed, 0xb7, 0xa3, 0x1b, 0x72, 0x34, 0xfe, 0x9a, 0x83, 0xfa, 0x78,
+ 0x33, 0x7a, 0x08, 0x79, 0xe6, 0x61, 0x85, 0xb3, 0xbb, 0x33, 0x3f, 0x7f, 0x73, 0x17, 0xd3, 0x7b,
+ 0x01, 0x3b, 0x80, 0x8c, 0x87, 0xd1, 0xd9, 0xae, 0x2b, 0x3d, 0xdf, 0xb7, 0xa1, 0x6b, 0xb9, 0xae,
+ 0xa4, 0xb3, 0x5d, 0x97, 0x85, 0x00, 0xb1, 0x98, 0x3c, 0xdc, 0x55, 0x4c, 0xf9, 0xd5, 0xf8, 0x09,
+ 0xa8, 0x49, 0xbf, 0xa8, 0x0e, 0xf9, 0x67, 0x78, 0x20, 0x57, 0x8c, 0xfd, 0x64, 0x41, 0xf5, 0x80,
+ 0x9d, 0x28, 0xb9, 0x58, 0xe2, 0xe3, 0xfd, 0xdc, 0x4f, 0x15, 0x86, 0x4b, 0x3a, 0x98, 0x07, 0x67,
+ 0xfc, 0x41, 0x01, 0x35, 0x89, 0x8b, 0xe8, 0xfe, 0x68, 0x84, 0x78, 0x7b, 0x62, 0x28, 0xe5, 0x01,
+ 0xa2, 0x45, 0x29, 0xf1, 0xda, 0x7d, 0x8a, 0x63, 0x11, 0xdf, 0x64, 0xa0, 0xf8, 0x78, 0x34, 0x50,
+ 0x4c, 0x08, 0x35, 0xa7, 0x04, 0x09, 0xe3, 0xb7, 0x6c, 0x5c, 0x32, 0xf2, 0xa2, 0xd6, 0xe8, 0xb8,
+ 0x7e, 0x7c, 0x3a, 0xdd, 0xf6, 0xad, 0xb1, 0x61, 0x7d, 0x77, 0x23, 0xfa, 0x63, 0x05, 0xea, 0xe3,
+ 0x81, 0x71, 0x78, 0xaa, 0xb4, 0xcc, 0xa9, 0xba, 0x0d, 0xf9, 0x3e, 0xf1, 0xe4, 0x39, 0x99, 0xe0,
+ 0x5f, 0x77, 0x29, 0xf1, 0x82, 0x8e, 0xa0, 0x63, 0x08, 0xe6, 0x9b, 0x63, 0xa7, 0x8b, 0x7b, 0xc9,
+ 0xa1, 0x98, 0x11, 0x2b, 0x41, 0xdc, 0xb5, 0x63, 0xda, 0x0d, 0x5d, 0x19, 0x55, 0x67, 0x85, 0x0b,
+ 0x10, 0x5a, 0x87, 0x8a, 0xdd, 0xa7, 0xdd, 0x90, 0x78, 0x74, 0x30, 0x3d, 0x28, 0x66, 0x19, 0x52,
+ 0x1c, 0xfa, 0x2c, 0xf5, 0x9f, 0x22, 0x1d, 0xbb, 0x3d, 0x7b, 0x96, 0x91, 0x1c, 0x1d, 0x71, 0x4a,
+ 0x12, 0x1e, 0x66, 0x62, 0x9e, 0x14, 0xb1, 0x30, 0x5b, 0x13, 0xc9, 0x0e, 0xb2, 0xa1, 0x16, 0x87,
+ 0x7d, 0xe2, 0x60, 0xcb, 0xb7, 0xdb, 0xd8, 0x67, 0xe1, 0x94, 0x75, 0xf6, 0xc1, 0x1c, 0x9d, 0xed,
+ 0x72, 0xfc, 0x36, 0x87, 0x8b, 0x1e, 0xab, 0x71, 0x46, 0x34, 0x92, 0xa9, 0xaa, 0x63, 0x99, 0xea,
+ 0xcf, 0xa1, 0xfa, 0xbc, 0x8f, 0xc9, 0xc0, 0x8a, 0x6c, 0x62, 0xf7, 0x62, 0xbd, 0x32, 0xd5, 0x29,
+ 0x8c, 0xf7, 0xfe, 0x19, 0x83, 0xef, 0x70, 0xb4, 0xe8, 0x5c, 0x7b, 0x9e, 0x4a, 0xd0, 0x0d, 0x58,
+ 0xf4, 0x3a, 0x41, 0x48, 0xb0, 0xd5, 0x27, 0x9e, 0xe5, 0xd8, 0x31, 0xe6, 0x01, 0x4d, 0x35, 0x6b,
+ 0x42, 0xfc, 0x84, 0x78, 0xeb, 0x76, 0x8c, 0x51, 0x07, 0x16, 0x0f, 0x3d, 0xda, 0x0d, 0xfb, 0x43,
+ 0x97, 0xaf, 0x57, 0xf9, 0x50, 0x3e, 0x9c, 0x63, 0x28, 0x9f, 0x0b, 0x86, 0x11, 0xe3, 0x2f, 0x1c,
+ 0x8e, 0x08, 0xd1, 0x9b, 0x50, 0x97, 0xf6, 0x4e, 0xe3, 0x45, 0x8d, 0x6f, 0xf9, 0x45, 0x21, 0x7f,
+ 0x94, 0x88, 0x1b, 0x36, 0x54, 0xb3, 0x54, 0x27, 0x38, 0xa3, 0x3b, 0x59, 0x67, 0x34, 0xf3, 0x26,
+ 0xcb, 0xf8, 0xba, 0x8f, 0x60, 0xe9, 0xd8, 0xea, 0xcd, 0xe5, 0x2c, 0x31, 0xd4, 0xc7, 0x17, 0xe0,
+ 0x55, 0x8c, 0xb3, 0x0b, 0x67, 0x4f, 0x30, 0xee, 0x2b, 0xe8, 0xc9, 0xf8, 0x67, 0x1e, 0x5e, 0x3b,
+ 0x29, 0xe5, 0x46, 0xdb, 0xa0, 0xb9, 0xe9, 0xe7, 0x74, 0x9f, 0x94, 0xc1, 0x0a, 0x87, 0x9e, 0x85,
+ 0xb3, 0xa0, 0x75, 0x88, 0xbd, 0x4e, 0x57, 0xd4, 0x2d, 0x45, 0x53, 0x7e, 0x65, 0xb3, 0xa6, 0xf2,
+ 0xbc, 0x59, 0x13, 0x7a, 0x0a, 0x75, 0x3f, 0x74, 0x6c, 0xdf, 0x22, 0x36, 0xc5, 0x96, 0xef, 0xf5,
+ 0xbc, 0x19, 0x13, 0xdc, 0x6d, 0x86, 0x32, 0x6d, 0x8a, 0xb7, 0x19, 0xc6, 0x5c, 0xf0, 0x47, 0xbe,
+ 0xd1, 0xcf, 0x60, 0xa9, 0xe3, 0x87, 0xed, 0x51, 0x62, 0x91, 0xf4, 0xbe, 0x33, 0x99, 0xf8, 0x3e,
+ 0x87, 0xa5, 0xcc, 0x8b, 0x9d, 0x51, 0xc1, 0x56, 0x41, 0xcd, 0xd7, 0xcb, 0xff, 0x87, 0xfc, 0xed,
+ 0xef, 0x0a, 0x9c, 0x3d, 0x61, 0x40, 0xe8, 0x3c, 0x94, 0xdc, 0xb0, 0x67, 0x7b, 0x41, 0xb6, 0xb4,
+ 0x94, 0xa2, 0x6c, 0x65, 0x92, 0x9b, 0xb9, 0x32, 0x39, 0x0f, 0x95, 0x7d, 0xdb, 0xf3, 0xad, 0x30,
+ 0xc2, 0x01, 0x0f, 0x1f, 0xaa, 0xa9, 0x32, 0xc1, 0xe3, 0x08, 0x07, 0x68, 0x13, 0xca, 0x36, 0x2f,
+ 0x22, 0x62, 0x59, 0x2d, 0xbf, 0x39, 0x21, 0x7a, 0x26, 0x83, 0x6c, 0x39, 0xe9, 0x26, 0x4a, 0xe0,
+ 0xc6, 0x5f, 0x4a, 0xb0, 0x38, 0xa6, 0x81, 0x7e, 0x01, 0x0b, 0xa3, 0xf3, 0x96, 0xbb, 0xf4, 0xf6,
+ 0xcc, 0x9d, 0x34, 0xa5, 0x2b, 0x13, 0x5b, 0x6b, 0xf3, 0x8c, 0x59, 0x23, 0x59, 0x01, 0xfa, 0x11,
+ 0xeb, 0xa1, 0x17, 0x52, 0x6c, 0xd9, 0xae, 0x4b, 0x70, 0x1c, 0x73, 0xc3, 0xa8, 0x42, 0x91, 0xc9,
+ 0x5b, 0x42, 0x8c, 0xbe, 0x80, 0xaa, 0x18, 0x82, 0x25, 0xd2, 0x0d, 0x11, 0x47, 0xdf, 0x9b, 0x7d,
+ 0x20, 0xa2, 0x43, 0x7e, 0x3c, 0x37, 0xcf, 0x98, 0x5a, 0x37, 0xfd, 0x44, 0x9f, 0x83, 0xd6, 0xc1,
+ 0x01, 0x26, 0x9e, 0x63, 0xb1, 0xd3, 0x2f, 0x02, 0xec, 0xad, 0xd9, 0xa9, 0xef, 0x0b, 0xf0, 0xa7,
+ 0x78, 0xb0, 0x79, 0xc6, 0x84, 0xce, 0xf0, 0xab, 0xf1, 0x6b, 0x05, 0x6a, 0x23, 0x06, 0x40, 0xd7,
+ 0x40, 0xf6, 0x6c, 0xa5, 0x19, 0xbf, 0x58, 0x08, 0x10, 0x72, 0xe6, 0xad, 0xd1, 0x5b, 0xb0, 0xe0,
+ 0xe2, 0xd8, 0x21, 0x5e, 0x44, 0x43, 0xc2, 0xc7, 0x94, 0x4b, 0x15, 0x6b, 0x69, 0xd3, 0xa7, 0x78,
+ 0x80, 0xae, 0xc1, 0x42, 0xfc, 0xcc, 0x8b, 0x2c, 0x6f, 0xdf, 0xb2, 0xdb, 0x31, 0x2b, 0xfb, 0xf2,
+ 0xdc, 0x7b, 0x55, 0x99, 0xf4, 0xc1, 0x7e, 0x8b, 0xcb, 0x1a, 0x5f, 0x2b, 0xa0, 0x65, 0x2c, 0x80,
+ 0x9a, 0x50, 0xcf, 0xf4, 0x20, 0x3c, 0x5c, 0x66, 0x30, 0x8b, 0x69, 0x23, 0x2f, 0x13, 0xd1, 0x15,
+ 0xa8, 0xe2, 0xa3, 0x08, 0x3b, 0x54, 0x9a, 0x5f, 0xf8, 0x6d, 0x4d, 0xc8, 0x04, 0xe5, 0xd8, 0xd4,
+ 0xf2, 0x27, 0x4f, 0xed, 0x75, 0x28, 0xe2, 0x23, 0xdb, 0xa1, 0xdc, 0xca, 0x95, 0xcd, 0x33, 0xa6,
+ 0xf8, 0x44, 0x3a, 0x94, 0x22, 0x82, 0xf7, 0xbd, 0x23, 0xbd, 0x28, 0x1b, 0xe4, 0x37, 0x43, 0x10,
+ 0xdc, 0xc1, 0x47, 0x3c, 0xcb, 0xe0, 0x08, 0xfe, 0xb9, 0x56, 0x05, 0xe0, 0x63, 0xb1, 0xe8, 0x20,
+ 0xc2, 0x0d, 0x07, 0x20, 0x5d, 0x06, 0x74, 0xfd, 0x98, 0x01, 0x85, 0x4b, 0x1f, 0xb3, 0xdd, 0x49,
+ 0x56, 0xc8, 0x9d, 0x6e, 0x85, 0x35, 0x15, 0x4a, 0xe2, 0xb8, 0x18, 0x5f, 0x2a, 0x80, 0x8e, 0x3b,
+ 0x3a, 0x74, 0x09, 0xb4, 0x98, 0xda, 0xb4, 0x1f, 0x5b, 0x4e, 0xe8, 0x0a, 0x8b, 0x16, 0x4d, 0x10,
+ 0xa2, 0xf5, 0xd0, 0xc5, 0xe8, 0x21, 0x54, 0x69, 0xf8, 0x0c, 0x07, 0x56, 0xbb, 0xcf, 0x0a, 0xd0,
+ 0xe9, 0x51, 0x65, 0x8f, 0x69, 0xaf, 0x71, 0x65, 0xe9, 0xf5, 0x69, 0x2a, 0x31, 0xbe, 0x52, 0x40,
+ 0xcb, 0x68, 0xa0, 0x1f, 0x32, 0x9b, 0x1c, 0x59, 0x5c, 0x25, 0xe6, 0xdd, 0xd7, 0xcc, 0x4a, 0xcf,
+ 0x3e, 0xe2, 0x3a, 0x3c, 0x79, 0x11, 0x4d, 0xac, 0xb2, 0xb7, 0xf6, 0x3d, 0xdf, 0xe7, 0x03, 0xa8,
+ 0x99, 0x35, 0x21, 0xde, 0xc1, 0xe4, 0x13, 0xcf, 0xf7, 0xd1, 0x7b, 0xa0, 0x7a, 0x01, 0xc5, 0xe4,
+ 0xc0, 0xf6, 0xe5, 0x41, 0x9b, 0xe0, 0xa8, 0x86, 0xaa, 0xc6, 0x9f, 0x72, 0x50, 0xff, 0x9e, 0xc2,
+ 0x9c, 0x79, 0x42, 0xa4, 0x12, 0x23, 0x5f, 0x9e, 0x50, 0x91, 0x4c, 0x8e, 0x52, 0x4f, 0x4e, 0x8a,
+ 0x52, 0xc2, 0x39, 0x4c, 0xf0, 0xb2, 0xd3, 0x22, 0x94, 0x61, 0xc1, 0xc2, 0xd8, 0xae, 0x19, 0xdf,
+ 0x14, 0xca, 0xcb, 0x6d, 0x8a, 0xdf, 0xe7, 0x61, 0xf1, 0x7b, 0x0e, 0x4b, 0x2e, 0x5f, 0x74, 0x79,
+ 0x76, 0x62, 0x69, 0xb4, 0xbb, 0x33, 0x1b, 0x2d, 0xf5, 0xb0, 0x1b, 0x43, 0x96, 0x74, 0x33, 0x24,
+ 0xb4, 0x8d, 0x3f, 0x2b, 0x70, 0xf6, 0x04, 0x4d, 0xd4, 0x86, 0x32, 0x0e, 0xc4, 0x5d, 0x9e, 0xa8,
+ 0x4a, 0xd7, 0x5f, 0xaa, 0xe7, 0x26, 0xcf, 0x0d, 0x65, 0xb8, 0x94, 0xc4, 0x8d, 0x15, 0x28, 0xce,
+ 0x95, 0xdc, 0x1a, 0xff, 0xce, 0xc1, 0xd2, 0xb1, 0x12, 0x18, 0xad, 0xc0, 0xd9, 0xcc, 0xf6, 0xb6,
+ 0xe2, 0x7e, 0x3b, 0xc0, 0xc3, 0x8b, 0x79, 0x94, 0x69, 0xda, 0x15, 0x2d, 0xc3, 0x92, 0x2b, 0x97,
+ 0x29, 0xb9, 0xae, 0x0e, 0x4b, 0x2e, 0x81, 0x1f, 0x46, 0x00, 0x2e, 0x14, 0x48, 0xd4, 0x1e, 0xaf,
+ 0xcb, 0x44, 0xbe, 0x70, 0x77, 0x8e, 0x82, 0x7d, 0xae, 0xc2, 0xac, 0x38, 0x56, 0x98, 0x9d, 0x54,
+ 0xa7, 0x94, 0x4e, 0xae, 0x53, 0x5e, 0xb6, 0x88, 0x30, 0xfe, 0x9b, 0x03, 0x74, 0xfc, 0x1a, 0x04,
+ 0x5d, 0x86, 0x4a, 0x1c, 0x78, 0x56, 0xe6, 0xed, 0x43, 0x2c, 0xaa, 0x1a, 0x07, 0xde, 0x26, 0x7f,
+ 0x03, 0x39, 0x65, 0x39, 0x72, 0x53, 0x97, 0x23, 0x9f, 0x59, 0x0e, 0x67, 0xdc, 0xd2, 0xc5, 0x69,
+ 0x85, 0xdf, 0xf1, 0xb1, 0xce, 0x65, 0xea, 0xd2, 0x0c, 0xa6, 0x2e, 0xbf, 0x1a, 0x53, 0x6f, 0x15,
+ 0xd4, 0x42, 0xbd, 0x68, 0x8e, 0xee, 0x3f, 0xc3, 0x81, 0x6a, 0xf6, 0x71, 0x80, 0x11, 0x26, 0xd7,
+ 0x2e, 0x15, 0x71, 0x9f, 0x72, 0x21, 0x7b, 0xa3, 0x21, 0xaf, 0x37, 0xd3, 0xab, 0x8a, 0xab, 0x50,
+ 0x4b, 0x9e, 0x13, 0x44, 0x20, 0x15, 0xe6, 0xad, 0x26, 0x42, 0x16, 0x4a, 0x8d, 0xbb, 0xa0, 0x65,
+ 0xae, 0xff, 0xe7, 0xed, 0xc3, 0xc0, 0xa0, 0x65, 0x2a, 0xb6, 0x34, 0x2f, 0x51, 0x4e, 0xcb, 0x4b,
+ 0x72, 0xa7, 0xe5, 0x25, 0xf9, 0x09, 0x79, 0x89, 0xf1, 0xb5, 0x22, 0xdf, 0x7e, 0x30, 0xb3, 0xec,
+ 0x25, 0x50, 0x6d, 0x4a, 0x71, 0x2f, 0xa2, 0x22, 0x3a, 0x17, 0xe5, 0x06, 0x4c, 0x84, 0xa8, 0x05,
+ 0x8b, 0x2c, 0x34, 0x53, 0x32, 0xb0, 0x66, 0x76, 0xc9, 0xb5, 0x08, 0x93, 0x3d, 0x32, 0xd8, 0x93,
+ 0x8e, 0xf9, 0x0d, 0x50, 0x09, 0xeb, 0xcc, 0x0a, 0x03, 0xe9, 0x08, 0xf8, 0x2b, 0xc5, 0xe0, 0x71,
+ 0x80, 0x4c, 0x38, 0x27, 0x9a, 0x64, 0xce, 0xcd, 0x03, 0x9e, 0x47, 0x99, 0xa3, 0x14, 0x2e, 0xba,
+ 0x71, 0xac, 0x97, 0xb5, 0x30, 0xf4, 0x79, 0xf2, 0x63, 0xfe, 0x80, 0x43, 0x4d, 0x8e, 0xdc, 0x1e,
+ 0x02, 0x8d, 0xff, 0xe4, 0x00, 0xd2, 0x1b, 0x7b, 0x74, 0x1d, 0xaa, 0xb6, 0xef, 0x87, 0x87, 0x56,
+ 0x48, 0xbc, 0x0e, 0x0f, 0x37, 0xec, 0x98, 0xe5, 0x74, 0xc5, 0xd4, 0xb8, 0xfc, 0x31, 0x17, 0xa3,
+ 0x2d, 0xa8, 0x65, 0xd5, 0x92, 0x5b, 0xa2, 0x19, 0xcb, 0xeb, 0x6a, 0x86, 0x2a, 0x66, 0xbb, 0x45,
+ 0x70, 0x89, 0xdb, 0xb2, 0xe4, 0xb8, 0x0a, 0xa5, 0x87, 0x42, 0x96, 0x2a, 0x25, 0xd5, 0x70, 0x3e,
+ 0xa3, 0x94, 0xdc, 0xa5, 0x5c, 0x87, 0x05, 0x7c, 0x14, 0x85, 0x69, 0x59, 0xc8, 0x9d, 0x64, 0xc5,
+ 0xac, 0x09, 0x69, 0xa2, 0xb6, 0x0a, 0x65, 0x96, 0x65, 0xd9, 0x1d, 0xcc, 0x93, 0xd5, 0x89, 0x8b,
+ 0x53, 0xea, 0xd9, 0x47, 0xad, 0x0e, 0x46, 0xf7, 0x61, 0x49, 0xf4, 0xef, 0x10, 0xec, 0xe2, 0x80,
+ 0x7a, 0xb6, 0x1f, 0xcb, 0xe7, 0xa9, 0x49, 0x46, 0xaf, 0x73, 0xd0, 0x7a, 0x8a, 0x31, 0xbe, 0x2a,
+ 0x8a, 0xcc, 0x73, 0xf4, 0x0d, 0x09, 0x6d, 0x42, 0xd1, 0xc5, 0xbe, 0x3d, 0x98, 0xe1, 0x0d, 0xe0,
+ 0x18, 0xb8, 0xb9, 0xc1, 0x90, 0xa6, 0x20, 0x60, 0x4c, 0x76, 0x3b, 0x09, 0x31, 0xf3, 0x32, 0xb5,
+ 0x18, 0xd2, 0x14, 0x04, 0x8d, 0xdf, 0xe4, 0xa0, 0xc8, 0xa9, 0xd1, 0x05, 0x28, 0x27, 0x8f, 0x52,
+ 0x62, 0xdb, 0xb3, 0x0d, 0x91, 0x88, 0x50, 0x0b, 0xb4, 0x7d, 0xef, 0x08, 0xbb, 0x96, 0x98, 0xc1,
+ 0xb4, 0x0d, 0xcf, 0xcf, 0x0c, 0xab, 0xb4, 0x38, 0x68, 0x43, 0x0e, 0x7a, 0x89, 0xad, 0x51, 0x20,
+ 0xac, 0x24, 0x89, 0xa6, 0xa5, 0xae, 0x9b, 0x67, 0xcc, 0x7a, 0x06, 0x25, 0x98, 0x5a, 0x00, 0x99,
+ 0x67, 0xaf, 0xe2, 0xac, 0xcf, 0x5e, 0x19, 0xd0, 0xda, 0x12, 0x2c, 0x76, 0x29, 0x8d, 0xc4, 0x28,
+ 0x44, 0x79, 0xf2, 0x2f, 0x05, 0x8a, 0xdc, 0x36, 0xe8, 0x06, 0x68, 0xbc, 0x51, 0x14, 0x05, 0x22,
+ 0x8d, 0x1d, 0xce, 0x88, 0xb5, 0xec, 0xf2, 0x06, 0x74, 0x05, 0xb4, 0x0e, 0x89, 0x9c, 0x44, 0x2f,
+ 0x71, 0x32, 0xc0, 0x84, 0xa9, 0x0a, 0x03, 0xac, 0x5a, 0x98, 0xbf, 0x1a, 0x26, 0x15, 0x15, 0x67,
+ 0x59, 0xbd, 0xc7, 0x1f, 0x05, 0xbf, 0x83, 0xd9, 0x54, 0x01, 0x38, 0x3f, 0x9f, 0xc8, 0x56, 0x41,
+ 0x55, 0xea, 0xb9, 0xe1, 0xd2, 0x19, 0xab, 0x50, 0xcd, 0x3e, 0x78, 0xb3, 0xfc, 0x3c, 0xe8, 0xf7,
+ 0xda, 0xf2, 0xa6, 0xa0, 0x66, 0xca, 0xaf, 0xad, 0x82, 0x9a, 0xab, 0xe7, 0xc5, 0x25, 0xbc, 0x71,
+ 0x09, 0xca, 0xc9, 0x53, 0xe3, 0x30, 0xae, 0x30, 0x6d, 0x45, 0xc6, 0x95, 0xb5, 0x77, 0xfe, 0xf6,
+ 0xe2, 0xa2, 0xf2, 0x8f, 0x17, 0x17, 0x95, 0x6f, 0x5e, 0x5c, 0x54, 0xbe, 0xb8, 0x24, 0x46, 0xeb,
+ 0x85, 0xfc, 0x7f, 0x24, 0x8e, 0xff, 0xcb, 0x45, 0xbb, 0xc4, 0x17, 0xf6, 0xe6, 0xff, 0x02, 0x00,
+ 0x00, 0xff, 0xff, 0x53, 0xa3, 0x79, 0x58, 0x8f, 0x21, 0x00, 0x00,
+}
+
+func (m *VirtualService) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
@@ -4352,12 +4427,12 @@ func (m *HTTPRouteDestination) Marshal() (dAtA []byte, err error) {
return dAtA[:n], nil
}
-func (m *HTTPRouteDestination) MarshalTo(dAtA []byte) (int, error) {
+func (m *VirtualService) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
-func (m *HTTPRouteDestination) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+func (m *VirtualService) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
@@ -4366,39 +4441,79 @@ func (m *HTTPRouteDestination) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- if m.Headers != nil {
- {
- size, err := m.Headers.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ if len(m.ExportTo) > 0 {
+ for iNdEx := len(m.ExportTo) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.ExportTo[iNdEx])
+ copy(dAtA[i:], m.ExportTo[iNdEx])
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.ExportTo[iNdEx])))
+ i--
+ dAtA[i] = 0x32
}
- i--
- dAtA[i] = 0x3a
- }
- if m.Weight != 0 {
- i = encodeVarintVirtualService(dAtA, i, uint64(m.Weight))
- i--
- dAtA[i] = 0x10
}
- if m.Destination != nil {
- {
- size, err := m.Destination.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ if len(m.Tls) > 0 {
+ for iNdEx := len(m.Tls) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Tls[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ }
+ if len(m.Tcp) > 0 {
+ for iNdEx := len(m.Tcp) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Tcp[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if len(m.Http) > 0 {
+ for iNdEx := len(m.Http) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Http[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if len(m.Gateways) > 0 {
+ for iNdEx := len(m.Gateways) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Gateways[iNdEx])
+ copy(dAtA[i:], m.Gateways[iNdEx])
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Gateways[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Hosts) > 0 {
+ for iNdEx := len(m.Hosts) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Hosts[iNdEx])
+ copy(dAtA[i:], m.Hosts[iNdEx])
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Hosts[iNdEx])))
+ i--
+ dAtA[i] = 0xa
}
- i--
- dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
-func (m *RouteDestination) Marshal() (dAtA []byte, err error) {
+func (m *Destination) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
@@ -4408,12 +4523,12 @@ func (m *RouteDestination) Marshal() (dAtA []byte, err error) {
return dAtA[:n], nil
}
-func (m *RouteDestination) MarshalTo(dAtA []byte) (int, error) {
+func (m *Destination) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
-func (m *RouteDestination) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+func (m *Destination) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
@@ -4422,14 +4537,9 @@ func (m *RouteDestination) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- if m.Weight != 0 {
- i = encodeVarintVirtualService(dAtA, i, uint64(m.Weight))
- i--
- dAtA[i] = 0x10
- }
- if m.Destination != nil {
+ if m.Port != nil {
{
- size, err := m.Destination.MarshalToSizedBuffer(dAtA[:i])
+ size, err := m.Port.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
@@ -4437,12 +4547,26 @@ func (m *RouteDestination) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Subset) > 0 {
+ i -= len(m.Subset)
+ copy(dAtA[i:], m.Subset)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Subset)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Host) > 0 {
+ i -= len(m.Host)
+ copy(dAtA[i:], m.Host)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Host)))
+ i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
-func (m *L4MatchAttributes) Marshal() (dAtA []byte, err error) {
+func (m *HTTPRoute) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
@@ -4452,12 +4576,12 @@ func (m *L4MatchAttributes) Marshal() (dAtA []byte, err error) {
return dAtA[:n], nil
}
-func (m *L4MatchAttributes) MarshalTo(dAtA []byte) (int, error) {
+func (m *HTTPRoute) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
-func (m *L4MatchAttributes) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+func (m *HTTPRoute) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
@@ -4466,143 +4590,179 @@ func (m *L4MatchAttributes) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- if len(m.SourceNamespace) > 0 {
- i -= len(m.SourceNamespace)
- copy(dAtA[i:], m.SourceNamespace)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.SourceNamespace)))
+ if m.Delegate != nil {
+ {
+ size, err := m.Delegate.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
i--
- dAtA[i] = 0x32
+ dAtA[i] = 0x1
+ i--
+ dAtA[i] = 0xa2
}
- if len(m.Gateways) > 0 {
- for iNdEx := len(m.Gateways) - 1; iNdEx >= 0; iNdEx-- {
- i -= len(m.Gateways[iNdEx])
- copy(dAtA[i:], m.Gateways[iNdEx])
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Gateways[iNdEx])))
- i--
- dAtA[i] = 0x2a
+ if m.MirrorPercentage != nil {
+ {
+ size, err := m.MirrorPercentage.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
+ i--
+ dAtA[i] = 0x1
+ i--
+ dAtA[i] = 0x9a
}
- if len(m.SourceLabels) > 0 {
- for k := range m.SourceLabels {
- v := m.SourceLabels[k]
- baseI := i
- i -= len(v)
- copy(dAtA[i:], v)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(v)))
- i--
- dAtA[i] = 0x12
- i -= len(k)
- copy(dAtA[i:], k)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(k)))
- i--
- dAtA[i] = 0xa
- i = encodeVarintVirtualService(dAtA, i, uint64(baseI-i))
- i--
- dAtA[i] = 0x22
+ if m.MirrorPercent != nil {
+ {
+ size, err := m.MirrorPercent.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
- }
- if len(m.SourceSubnet) > 0 {
- i -= len(m.SourceSubnet)
- copy(dAtA[i:], m.SourceSubnet)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.SourceSubnet)))
i--
- dAtA[i] = 0x1a
+ dAtA[i] = 0x1
+ i--
+ dAtA[i] = 0x92
}
- if m.Port != 0 {
- i = encodeVarintVirtualService(dAtA, i, uint64(m.Port))
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Name)))
i--
- dAtA[i] = 0x10
+ dAtA[i] = 0x1
+ i--
+ dAtA[i] = 0x8a
}
- if len(m.DestinationSubnets) > 0 {
- for iNdEx := len(m.DestinationSubnets) - 1; iNdEx >= 0; iNdEx-- {
- i -= len(m.DestinationSubnets[iNdEx])
- copy(dAtA[i:], m.DestinationSubnets[iNdEx])
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.DestinationSubnets[iNdEx])))
- i--
- dAtA[i] = 0xa
+ if m.Headers != nil {
+ {
+ size, err := m.Headers.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
+ i--
+ dAtA[i] = 0x1
+ i--
+ dAtA[i] = 0x82
}
- return len(dAtA) - i, nil
-}
-
-func (m *TLSMatchAttributes) Marshal() (dAtA []byte, err error) {
- size := m.Size()
- dAtA = make([]byte, size)
- n, err := m.MarshalToSizedBuffer(dAtA[:size])
- if err != nil {
- return nil, err
- }
- return dAtA[:n], nil
-}
-
-func (m *TLSMatchAttributes) MarshalTo(dAtA []byte) (int, error) {
- size := m.Size()
- return m.MarshalToSizedBuffer(dAtA[:size])
-}
-
-func (m *TLSMatchAttributes) MarshalToSizedBuffer(dAtA []byte) (int, error) {
- i := len(dAtA)
- _ = i
- var l int
- _ = l
- if m.XXX_unrecognized != nil {
- i -= len(m.XXX_unrecognized)
- copy(dAtA[i:], m.XXX_unrecognized)
- }
- if len(m.SourceNamespace) > 0 {
- i -= len(m.SourceNamespace)
- copy(dAtA[i:], m.SourceNamespace)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.SourceNamespace)))
+ if m.CorsPolicy != nil {
+ {
+ size, err := m.CorsPolicy.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
i--
- dAtA[i] = 0x3a
+ dAtA[i] = 0x52
}
- if len(m.Gateways) > 0 {
- for iNdEx := len(m.Gateways) - 1; iNdEx >= 0; iNdEx-- {
- i -= len(m.Gateways[iNdEx])
- copy(dAtA[i:], m.Gateways[iNdEx])
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Gateways[iNdEx])))
- i--
- dAtA[i] = 0x32
+ if m.Mirror != nil {
+ {
+ size, err := m.Mirror.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
+ i--
+ dAtA[i] = 0x4a
}
- if len(m.SourceLabels) > 0 {
- for k := range m.SourceLabels {
- v := m.SourceLabels[k]
- baseI := i
- i -= len(v)
- copy(dAtA[i:], v)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(v)))
- i--
- dAtA[i] = 0x12
- i -= len(k)
- copy(dAtA[i:], k)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(k)))
- i--
- dAtA[i] = 0xa
- i = encodeVarintVirtualService(dAtA, i, uint64(baseI-i))
- i--
- dAtA[i] = 0x2a
+ if m.Fault != nil {
+ {
+ size, err := m.Fault.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
+ i--
+ dAtA[i] = 0x42
}
- if m.Port != 0 {
- i = encodeVarintVirtualService(dAtA, i, uint64(m.Port))
+ if m.Retries != nil {
+ {
+ size, err := m.Retries.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
i--
- dAtA[i] = 0x18
+ dAtA[i] = 0x3a
}
- if len(m.DestinationSubnets) > 0 {
- for iNdEx := len(m.DestinationSubnets) - 1; iNdEx >= 0; iNdEx-- {
- i -= len(m.DestinationSubnets[iNdEx])
- copy(dAtA[i:], m.DestinationSubnets[iNdEx])
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.DestinationSubnets[iNdEx])))
+ if m.Timeout != nil {
+ {
+ size, err := m.Timeout.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x32
+ }
+ if m.Rewrite != nil {
+ {
+ size, err := m.Rewrite.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Redirect != nil {
+ {
+ size, err := m.Redirect.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Route) > 0 {
+ for iNdEx := len(m.Route) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Route[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
i--
dAtA[i] = 0x12
}
}
- if len(m.SniHosts) > 0 {
- for iNdEx := len(m.SniHosts) - 1; iNdEx >= 0; iNdEx-- {
- i -= len(m.SniHosts[iNdEx])
- copy(dAtA[i:], m.SniHosts[iNdEx])
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.SniHosts[iNdEx])))
+ if len(m.Match) > 0 {
+ for iNdEx := len(m.Match) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Match[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
i--
dAtA[i] = 0xa
}
@@ -4610,7 +4770,7 @@ func (m *TLSMatchAttributes) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
-func (m *HTTPRedirect) Marshal() (dAtA []byte, err error) {
+func (m *Delegate) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
@@ -4620,12 +4780,12 @@ func (m *HTTPRedirect) Marshal() (dAtA []byte, err error) {
return dAtA[:n], nil
}
-func (m *HTTPRedirect) MarshalTo(dAtA []byte) (int, error) {
+func (m *Delegate) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
-func (m *HTTPRedirect) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+func (m *Delegate) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
@@ -4634,29 +4794,24 @@ func (m *HTTPRedirect) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- if m.RedirectCode != 0 {
- i = encodeVarintVirtualService(dAtA, i, uint64(m.RedirectCode))
- i--
- dAtA[i] = 0x18
- }
- if len(m.Authority) > 0 {
- i -= len(m.Authority)
- copy(dAtA[i:], m.Authority)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Authority)))
+ if len(m.Namespace) > 0 {
+ i -= len(m.Namespace)
+ copy(dAtA[i:], m.Namespace)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Namespace)))
i--
dAtA[i] = 0x12
}
- if len(m.Uri) > 0 {
- i -= len(m.Uri)
- copy(dAtA[i:], m.Uri)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Uri)))
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Name)))
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
-func (m *HTTPRewrite) Marshal() (dAtA []byte, err error) {
+func (m *Headers) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
@@ -4666,12 +4821,12 @@ func (m *HTTPRewrite) Marshal() (dAtA []byte, err error) {
return dAtA[:n], nil
}
-func (m *HTTPRewrite) MarshalTo(dAtA []byte) (int, error) {
+func (m *Headers) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
-func (m *HTTPRewrite) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+func (m *Headers) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
@@ -4680,24 +4835,34 @@ func (m *HTTPRewrite) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- if len(m.Authority) > 0 {
- i -= len(m.Authority)
- copy(dAtA[i:], m.Authority)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Authority)))
+ if m.Response != nil {
+ {
+ size, err := m.Response.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
i--
dAtA[i] = 0x12
}
- if len(m.Uri) > 0 {
- i -= len(m.Uri)
- copy(dAtA[i:], m.Uri)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Uri)))
+ if m.Request != nil {
+ {
+ size, err := m.Request.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
-func (m *StringMatch) Marshal() (dAtA []byte, err error) {
+func (m *Headers_HeaderOperations) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
@@ -4707,12 +4872,12 @@ func (m *StringMatch) Marshal() (dAtA []byte, err error) {
return dAtA[:n], nil
}
-func (m *StringMatch) MarshalTo(dAtA []byte) (int, error) {
+func (m *Headers_HeaderOperations) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
-func (m *StringMatch) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+func (m *Headers_HeaderOperations) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
@@ -4721,73 +4886,72 @@ func (m *StringMatch) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- if m.MatchType != nil {
- {
- size := m.MatchType.Size()
- i -= size
- if _, err := m.MatchType.MarshalTo(dAtA[i:]); err != nil {
- return 0, err
- }
+ if len(m.Remove) > 0 {
+ for iNdEx := len(m.Remove) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Remove[iNdEx])
+ copy(dAtA[i:], m.Remove[iNdEx])
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Remove[iNdEx])))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if len(m.Add) > 0 {
+ for k := range m.Add {
+ v := m.Add[k]
+ baseI := i
+ i -= len(v)
+ copy(dAtA[i:], v)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(v)))
+ i--
+ dAtA[i] = 0x12
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVirtualService(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Set) > 0 {
+ for k := range m.Set {
+ v := m.Set[k]
+ baseI := i
+ i -= len(v)
+ copy(dAtA[i:], v)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(v)))
+ i--
+ dAtA[i] = 0x12
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVirtualService(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0xa
}
}
return len(dAtA) - i, nil
}
-func (m *StringMatch_Exact) MarshalTo(dAtA []byte) (int, error) {
- return m.MarshalToSizedBuffer(dAtA[:m.Size()])
+func (m *TLSRoute) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
}
-func (m *StringMatch_Exact) MarshalToSizedBuffer(dAtA []byte) (int, error) {
- i := len(dAtA)
- i -= len(m.Exact)
- copy(dAtA[i:], m.Exact)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Exact)))
- i--
- dAtA[i] = 0xa
- return len(dAtA) - i, nil
-}
-func (m *StringMatch_Prefix) MarshalTo(dAtA []byte) (int, error) {
- return m.MarshalToSizedBuffer(dAtA[:m.Size()])
+func (m *TLSRoute) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
}
-func (m *StringMatch_Prefix) MarshalToSizedBuffer(dAtA []byte) (int, error) {
- i := len(dAtA)
- i -= len(m.Prefix)
- copy(dAtA[i:], m.Prefix)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Prefix)))
- i--
- dAtA[i] = 0x12
- return len(dAtA) - i, nil
-}
-func (m *StringMatch_Regex) MarshalTo(dAtA []byte) (int, error) {
- return m.MarshalToSizedBuffer(dAtA[:m.Size()])
-}
-
-func (m *StringMatch_Regex) MarshalToSizedBuffer(dAtA []byte) (int, error) {
- i := len(dAtA)
- i -= len(m.Regex)
- copy(dAtA[i:], m.Regex)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Regex)))
- i--
- dAtA[i] = 0x1a
- return len(dAtA) - i, nil
-}
-func (m *HTTPRetry) Marshal() (dAtA []byte, err error) {
- size := m.Size()
- dAtA = make([]byte, size)
- n, err := m.MarshalToSizedBuffer(dAtA[:size])
- if err != nil {
- return nil, err
- }
- return dAtA[:n], nil
-}
-
-func (m *HTTPRetry) MarshalTo(dAtA []byte) (int, error) {
- size := m.Size()
- return m.MarshalToSizedBuffer(dAtA[:size])
-}
-
-func (m *HTTPRetry) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+func (m *TLSRoute) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
@@ -4796,46 +4960,38 @@ func (m *HTTPRetry) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- if m.RetryRemoteLocalities != nil {
- {
- size, err := m.RetryRemoteLocalities.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
+ if len(m.Route) > 0 {
+ for iNdEx := len(m.Route) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Route[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0x12
}
- i--
- dAtA[i] = 0x22
- }
- if len(m.RetryOn) > 0 {
- i -= len(m.RetryOn)
- copy(dAtA[i:], m.RetryOn)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.RetryOn)))
- i--
- dAtA[i] = 0x1a
}
- if m.PerTryTimeout != nil {
- {
- size, err := m.PerTryTimeout.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
+ if len(m.Match) > 0 {
+ for iNdEx := len(m.Match) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Match[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ i--
+ dAtA[i] = 0xa
}
- i--
- dAtA[i] = 0x12
- }
- if m.Attempts != 0 {
- i = encodeVarintVirtualService(dAtA, i, uint64(m.Attempts))
- i--
- dAtA[i] = 0x8
}
return len(dAtA) - i, nil
}
-func (m *CorsPolicy) Marshal() (dAtA []byte, err error) {
+func (m *TCPRoute) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
@@ -4845,12 +5001,12 @@ func (m *CorsPolicy) Marshal() (dAtA []byte, err error) {
return dAtA[:n], nil
}
-func (m *CorsPolicy) MarshalTo(dAtA []byte) (int, error) {
+func (m *TCPRoute) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
-func (m *CorsPolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+func (m *TCPRoute) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
@@ -4859,10 +5015,10 @@ func (m *CorsPolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- if len(m.AllowOrigins) > 0 {
- for iNdEx := len(m.AllowOrigins) - 1; iNdEx >= 0; iNdEx-- {
+ if len(m.Route) > 0 {
+ for iNdEx := len(m.Route) - 1; iNdEx >= 0; iNdEx-- {
{
- size, err := m.AllowOrigins[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ size, err := m.Route[iNdEx].MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
@@ -4870,65 +5026,19 @@ func (m *CorsPolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
i--
- dAtA[i] = 0x3a
- }
- }
- if m.AllowCredentials != nil {
- {
- size, err := m.AllowCredentials.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x32
- }
- if m.MaxAge != nil {
- {
- size, err := m.MaxAge.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
- i--
- dAtA[i] = 0x2a
- }
- if len(m.ExposeHeaders) > 0 {
- for iNdEx := len(m.ExposeHeaders) - 1; iNdEx >= 0; iNdEx-- {
- i -= len(m.ExposeHeaders[iNdEx])
- copy(dAtA[i:], m.ExposeHeaders[iNdEx])
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.ExposeHeaders[iNdEx])))
- i--
- dAtA[i] = 0x22
- }
- }
- if len(m.AllowHeaders) > 0 {
- for iNdEx := len(m.AllowHeaders) - 1; iNdEx >= 0; iNdEx-- {
- i -= len(m.AllowHeaders[iNdEx])
- copy(dAtA[i:], m.AllowHeaders[iNdEx])
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.AllowHeaders[iNdEx])))
- i--
- dAtA[i] = 0x1a
- }
- }
- if len(m.AllowMethods) > 0 {
- for iNdEx := len(m.AllowMethods) - 1; iNdEx >= 0; iNdEx-- {
- i -= len(m.AllowMethods[iNdEx])
- copy(dAtA[i:], m.AllowMethods[iNdEx])
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.AllowMethods[iNdEx])))
- i--
dAtA[i] = 0x12
}
}
- if len(m.AllowOrigin) > 0 {
- for iNdEx := len(m.AllowOrigin) - 1; iNdEx >= 0; iNdEx-- {
- i -= len(m.AllowOrigin[iNdEx])
- copy(dAtA[i:], m.AllowOrigin[iNdEx])
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.AllowOrigin[iNdEx])))
+ if len(m.Match) > 0 {
+ for iNdEx := len(m.Match) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Match[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
i--
dAtA[i] = 0xa
}
@@ -4936,7 +5046,7 @@ func (m *CorsPolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
-func (m *HTTPFaultInjection) Marshal() (dAtA []byte, err error) {
+func (m *HTTPMatchRequest) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
@@ -4946,12 +5056,12 @@ func (m *HTTPFaultInjection) Marshal() (dAtA []byte, err error) {
return dAtA[:n], nil
}
-func (m *HTTPFaultInjection) MarshalTo(dAtA []byte) (int, error) {
+func (m *HTTPMatchRequest) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
-func (m *HTTPFaultInjection) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+func (m *HTTPMatchRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
@@ -4960,95 +5070,168 @@ func (m *HTTPFaultInjection) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- if m.Abort != nil {
- {
- size, err := m.Abort.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
+ if len(m.SourceNamespace) > 0 {
+ i -= len(m.SourceNamespace)
+ copy(dAtA[i:], m.SourceNamespace)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.SourceNamespace)))
i--
- dAtA[i] = 0x12
+ dAtA[i] = 0x6a
}
- if m.Delay != nil {
- {
- size, err := m.Delay.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
+ if len(m.WithoutHeaders) > 0 {
+ for k := range m.WithoutHeaders {
+ v := m.WithoutHeaders[k]
+ baseI := i
+ if v != nil {
+ {
+ size, err := v.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
}
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVirtualService(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x62
}
- i--
- dAtA[i] = 0xa
- }
- return len(dAtA) - i, nil
-}
-
-func (m *HTTPFaultInjection_Delay) Marshal() (dAtA []byte, err error) {
- size := m.Size()
- dAtA = make([]byte, size)
- n, err := m.MarshalToSizedBuffer(dAtA[:size])
- if err != nil {
- return nil, err
- }
- return dAtA[:n], nil
-}
-
-func (m *HTTPFaultInjection_Delay) MarshalTo(dAtA []byte) (int, error) {
- size := m.Size()
- return m.MarshalToSizedBuffer(dAtA[:size])
-}
-
-func (m *HTTPFaultInjection_Delay) MarshalToSizedBuffer(dAtA []byte) (int, error) {
- i := len(dAtA)
- _ = i
- var l int
- _ = l
- if m.XXX_unrecognized != nil {
- i -= len(m.XXX_unrecognized)
- copy(dAtA[i:], m.XXX_unrecognized)
}
- if m.Percentage != nil {
- {
- size, err := m.Percentage.MarshalToSizedBuffer(dAtA[:i])
- if err != nil {
- return 0, err
- }
- i -= size
- i = encodeVarintVirtualService(dAtA, i, uint64(size))
- }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Name)))
i--
- dAtA[i] = 0x2a
+ dAtA[i] = 0x5a
}
- if m.HttpDelayType != nil {
- {
- size := m.HttpDelayType.Size()
- i -= size
- if _, err := m.HttpDelayType.MarshalTo(dAtA[i:]); err != nil {
+ if m.IgnoreUriCase {
+ i--
+ if m.IgnoreUriCase {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x50
+ }
+ if len(m.QueryParams) > 0 {
+ for k := range m.QueryParams {
+ v := m.QueryParams[k]
+ baseI := i
+ if v != nil {
+ {
+ size, err := v.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVirtualService(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x4a
+ }
+ }
+ if len(m.Gateways) > 0 {
+ for iNdEx := len(m.Gateways) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Gateways[iNdEx])
+ copy(dAtA[i:], m.Gateways[iNdEx])
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Gateways[iNdEx])))
+ i--
+ dAtA[i] = 0x42
+ }
+ }
+ if len(m.SourceLabels) > 0 {
+ for k := range m.SourceLabels {
+ v := m.SourceLabels[k]
+ baseI := i
+ i -= len(v)
+ copy(dAtA[i:], v)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(v)))
+ i--
+ dAtA[i] = 0x12
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVirtualService(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x3a
+ }
+ }
+ if m.Port != 0 {
+ i = encodeVarintVirtualService(dAtA, i, uint64(m.Port))
+ i--
+ dAtA[i] = 0x30
+ }
+ if len(m.Headers) > 0 {
+ for k := range m.Headers {
+ v := m.Headers[k]
+ baseI := i
+ if v != nil {
+ {
+ size, err := v.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVirtualService(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x2a
+ }
+ }
+ if m.Authority != nil {
+ {
+ size, err := m.Authority.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
return 0, err
}
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
+ i--
+ dAtA[i] = 0x22
}
- if m.Percent != 0 {
- i = encodeVarintVirtualService(dAtA, i, uint64(m.Percent))
+ if m.Method != nil {
+ {
+ size, err := m.Method.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
i--
- dAtA[i] = 0x8
+ dAtA[i] = 0x1a
}
- return len(dAtA) - i, nil
-}
-
-func (m *HTTPFaultInjection_Delay_FixedDelay) MarshalTo(dAtA []byte) (int, error) {
- return m.MarshalToSizedBuffer(dAtA[:m.Size()])
-}
-
-func (m *HTTPFaultInjection_Delay_FixedDelay) MarshalToSizedBuffer(dAtA []byte) (int, error) {
- i := len(dAtA)
- if m.FixedDelay != nil {
+ if m.Scheme != nil {
{
- size, err := m.FixedDelay.MarshalToSizedBuffer(dAtA[:i])
+ size, err := m.Scheme.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
@@ -5058,17 +5241,9 @@ func (m *HTTPFaultInjection_Delay_FixedDelay) MarshalToSizedBuffer(dAtA []byte)
i--
dAtA[i] = 0x12
}
- return len(dAtA) - i, nil
-}
-func (m *HTTPFaultInjection_Delay_ExponentialDelay) MarshalTo(dAtA []byte) (int, error) {
- return m.MarshalToSizedBuffer(dAtA[:m.Size()])
-}
-
-func (m *HTTPFaultInjection_Delay_ExponentialDelay) MarshalToSizedBuffer(dAtA []byte) (int, error) {
- i := len(dAtA)
- if m.ExponentialDelay != nil {
+ if m.Uri != nil {
{
- size, err := m.ExponentialDelay.MarshalToSizedBuffer(dAtA[:i])
+ size, err := m.Uri.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
@@ -5076,11 +5251,12 @@ func (m *HTTPFaultInjection_Delay_ExponentialDelay) MarshalToSizedBuffer(dAtA []
i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
i--
- dAtA[i] = 0x1a
+ dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
-func (m *HTTPFaultInjection_Abort) Marshal() (dAtA []byte, err error) {
+
+func (m *HTTPRouteDestination) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
@@ -5090,12 +5266,12 @@ func (m *HTTPFaultInjection_Abort) Marshal() (dAtA []byte, err error) {
return dAtA[:n], nil
}
-func (m *HTTPFaultInjection_Abort) MarshalTo(dAtA []byte) (int, error) {
+func (m *HTTPRouteDestination) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
-func (m *HTTPFaultInjection_Abort) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+func (m *HTTPRouteDestination) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
@@ -5104,9 +5280,9 @@ func (m *HTTPFaultInjection_Abort) MarshalToSizedBuffer(dAtA []byte) (int, error
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- if m.Percentage != nil {
+ if m.GlobalRateLimit != nil {
{
- size, err := m.Percentage.MarshalToSizedBuffer(dAtA[:i])
+ size, err := m.GlobalRateLimit.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
@@ -5114,58 +5290,53 @@ func (m *HTTPFaultInjection_Abort) MarshalToSizedBuffer(dAtA []byte) (int, error
i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
i--
- dAtA[i] = 0x2a
+ dAtA[i] = 0x4a
}
- if m.ErrorType != nil {
+ if m.LocalRateLimit != nil {
{
- size := m.ErrorType.Size()
+ size, err := m.LocalRateLimit.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
i -= size
- if _, err := m.ErrorType.MarshalTo(dAtA[i:]); err != nil {
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x42
+ }
+ if m.Headers != nil {
+ {
+ size, err := m.Headers.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
return 0, err
}
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
+ i--
+ dAtA[i] = 0x3a
+ }
+ if m.Weight != 0 {
+ i = encodeVarintVirtualService(dAtA, i, uint64(m.Weight))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.Destination != nil {
+ {
+ size, err := m.Destination.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
-func (m *HTTPFaultInjection_Abort_HttpStatus) MarshalTo(dAtA []byte) (int, error) {
- return m.MarshalToSizedBuffer(dAtA[:m.Size()])
-}
-
-func (m *HTTPFaultInjection_Abort_HttpStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
- i := len(dAtA)
- i = encodeVarintVirtualService(dAtA, i, uint64(m.HttpStatus))
- i--
- dAtA[i] = 0x10
- return len(dAtA) - i, nil
-}
-func (m *HTTPFaultInjection_Abort_GrpcStatus) MarshalTo(dAtA []byte) (int, error) {
- return m.MarshalToSizedBuffer(dAtA[:m.Size()])
-}
-
-func (m *HTTPFaultInjection_Abort_GrpcStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
- i := len(dAtA)
- i -= len(m.GrpcStatus)
- copy(dAtA[i:], m.GrpcStatus)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.GrpcStatus)))
- i--
- dAtA[i] = 0x1a
- return len(dAtA) - i, nil
-}
-func (m *HTTPFaultInjection_Abort_Http2Error) MarshalTo(dAtA []byte) (int, error) {
- return m.MarshalToSizedBuffer(dAtA[:m.Size()])
-}
-
-func (m *HTTPFaultInjection_Abort_Http2Error) MarshalToSizedBuffer(dAtA []byte) (int, error) {
- i := len(dAtA)
- i -= len(m.Http2Error)
- copy(dAtA[i:], m.Http2Error)
- i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Http2Error)))
- i--
- dAtA[i] = 0x22
- return len(dAtA) - i, nil
-}
-func (m *PortSelector) Marshal() (dAtA []byte, err error) {
+func (m *HTTPGlobalRateLimit) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
@@ -5175,12 +5346,12 @@ func (m *PortSelector) Marshal() (dAtA []byte, err error) {
return dAtA[:n], nil
}
-func (m *PortSelector) MarshalTo(dAtA []byte) (int, error) {
+func (m *HTTPGlobalRateLimit) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
-func (m *PortSelector) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+func (m *HTTPGlobalRateLimit) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
@@ -5189,15 +5360,53 @@ func (m *PortSelector) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- if m.Number != 0 {
- i = encodeVarintVirtualService(dAtA, i, uint64(m.Number))
+ if len(m.Actions) > 0 {
+ for iNdEx := len(m.Actions) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Actions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if m.FailOpen {
i--
- dAtA[i] = 0x8
+ if m.FailOpen {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
}
- return len(dAtA) - i, nil
-}
-
-func (m *Percent) Marshal() (dAtA []byte, err error) {
+ if m.Timeout != nil {
+ {
+ size, err := m.Timeout.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Domain) > 0 {
+ i -= len(m.Domain)
+ copy(dAtA[i:], m.Domain)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Domain)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RateLimitAction) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
@@ -5207,12 +5416,12 @@ func (m *Percent) Marshal() (dAtA []byte, err error) {
return dAtA[:n], nil
}
-func (m *Percent) MarshalTo(dAtA []byte) (int, error) {
+func (m *RateLimitAction) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
-func (m *Percent) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+func (m *RateLimitAction) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
@@ -5221,804 +5430,1565 @@ func (m *Percent) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
- if m.Value != 0 {
- i -= 8
- encoding_binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Value))))
- i--
- dAtA[i] = 0x9
+ if m.Action != nil {
+ {
+ size := m.Action.Size()
+ i -= size
+ if _, err := m.Action.MarshalTo(dAtA[i:]); err != nil {
+ return 0, err
+ }
+ }
}
return len(dAtA) - i, nil
}
-func encodeVarintVirtualService(dAtA []byte, offset int, v uint64) int {
- offset -= sovVirtualService(v)
- base := offset
- for v >= 1<<7 {
- dAtA[offset] = uint8(v&0x7f | 0x80)
- v >>= 7
- offset++
- }
- dAtA[offset] = uint8(v)
- return base
+func (m *RateLimitAction_RequestHeader_) MarshalTo(dAtA []byte) (int, error) {
+ return m.MarshalToSizedBuffer(dAtA[:m.Size()])
}
-func (m *VirtualService) Size() (n int) {
- if m == nil {
- return 0
- }
- var l int
- _ = l
- if len(m.Hosts) > 0 {
- for _, s := range m.Hosts {
- l = len(s)
- n += 1 + l + sovVirtualService(uint64(l))
- }
- }
- if len(m.Gateways) > 0 {
- for _, s := range m.Gateways {
- l = len(s)
- n += 1 + l + sovVirtualService(uint64(l))
- }
- }
- if len(m.Http) > 0 {
- for _, e := range m.Http {
- l = e.Size()
- n += 1 + l + sovVirtualService(uint64(l))
+
+func (m *RateLimitAction_RequestHeader_) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ if m.RequestHeader != nil {
+ {
+ size, err := m.RequestHeader.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
+ i--
+ dAtA[i] = 0xa
}
- if len(m.Tcp) > 0 {
- for _, e := range m.Tcp {
- l = e.Size()
- n += 1 + l + sovVirtualService(uint64(l))
- }
+ return len(dAtA) - i, nil
+}
+func (m *RateLimitAction_RemoteAddress) MarshalTo(dAtA []byte) (int, error) {
+ return m.MarshalToSizedBuffer(dAtA[:m.Size()])
+}
+
+func (m *RateLimitAction_RemoteAddress) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ i--
+ if m.RemoteAddress {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
}
- if len(m.Tls) > 0 {
- for _, e := range m.Tls {
- l = e.Size()
- n += 1 + l + sovVirtualService(uint64(l))
+ i--
+ dAtA[i] = 0x10
+ return len(dAtA) - i, nil
+}
+func (m *RateLimitAction_HeaderMatch_) MarshalTo(dAtA []byte) (int, error) {
+ return m.MarshalToSizedBuffer(dAtA[:m.Size()])
+}
+
+func (m *RateLimitAction_HeaderMatch_) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ if m.HeaderMatch != nil {
+ {
+ size, err := m.HeaderMatch.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
+ i--
+ dAtA[i] = 0x1a
}
- if len(m.ExportTo) > 0 {
- for _, s := range m.ExportTo {
- l = len(s)
- n += 1 + l + sovVirtualService(uint64(l))
+ return len(dAtA) - i, nil
+}
+func (m *RateLimitAction_GenericKey_) MarshalTo(dAtA []byte) (int, error) {
+ return m.MarshalToSizedBuffer(dAtA[:m.Size()])
+}
+
+func (m *RateLimitAction_GenericKey_) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ if m.GenericKey != nil {
+ {
+ size, err := m.GenericKey.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
+ i--
+ dAtA[i] = 0x22
}
- if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
+ return len(dAtA) - i, nil
+}
+func (m *RateLimitAction_RequestHeader) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
}
- return n
+ return dAtA[:n], nil
}
-func (m *Destination) Size() (n int) {
- if m == nil {
- return 0
- }
+func (m *RateLimitAction_RequestHeader) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RateLimitAction_RequestHeader) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
var l int
_ = l
- l = len(m.Host)
- if l > 0 {
- n += 1 + l + sovVirtualService(uint64(l))
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
}
- l = len(m.Subset)
- if l > 0 {
- n += 1 + l + sovVirtualService(uint64(l))
+ if len(m.SkipIfAbsent) > 0 {
+ i -= len(m.SkipIfAbsent)
+ copy(dAtA[i:], m.SkipIfAbsent)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.SkipIfAbsent)))
+ i--
+ dAtA[i] = 0x1a
}
- if m.Port != nil {
- l = m.Port.Size()
- n += 1 + l + sovVirtualService(uint64(l))
+ if len(m.DescriptorKey) > 0 {
+ i -= len(m.DescriptorKey)
+ copy(dAtA[i:], m.DescriptorKey)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.DescriptorKey)))
+ i--
+ dAtA[i] = 0x12
}
- if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
+ if len(m.HeaderName) > 0 {
+ i -= len(m.HeaderName)
+ copy(dAtA[i:], m.HeaderName)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.HeaderName)))
+ i--
+ dAtA[i] = 0xa
}
- return n
+ return len(dAtA) - i, nil
}
-func (m *HTTPRoute) Size() (n int) {
- if m == nil {
- return 0
+func (m *RateLimitAction_HeaderMatch) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
}
+ return dAtA[:n], nil
+}
+
+func (m *RateLimitAction_HeaderMatch) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RateLimitAction_HeaderMatch) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
var l int
_ = l
- if len(m.Match) > 0 {
- for _, e := range m.Match {
- l = e.Size()
- n += 1 + l + sovVirtualService(uint64(l))
- }
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
}
- if len(m.Route) > 0 {
- for _, e := range m.Route {
- l = e.Size()
- n += 1 + l + sovVirtualService(uint64(l))
+ if m.MatchType != nil {
+ {
+ size := m.MatchType.Size()
+ i -= size
+ if _, err := m.MatchType.MarshalTo(dAtA[i:]); err != nil {
+ return 0, err
+ }
}
}
- if m.Redirect != nil {
- l = m.Redirect.Size()
- n += 1 + l + sovVirtualService(uint64(l))
- }
- if m.Rewrite != nil {
- l = m.Rewrite.Size()
- n += 1 + l + sovVirtualService(uint64(l))
- }
- if m.Timeout != nil {
- l = m.Timeout.Size()
- n += 1 + l + sovVirtualService(uint64(l))
- }
- if m.Retries != nil {
- l = m.Retries.Size()
- n += 1 + l + sovVirtualService(uint64(l))
- }
- if m.Fault != nil {
- l = m.Fault.Size()
- n += 1 + l + sovVirtualService(uint64(l))
- }
- if m.Mirror != nil {
- l = m.Mirror.Size()
- n += 1 + l + sovVirtualService(uint64(l))
- }
- if m.CorsPolicy != nil {
- l = m.CorsPolicy.Size()
- n += 1 + l + sovVirtualService(uint64(l))
- }
- if m.Headers != nil {
- l = m.Headers.Size()
- n += 2 + l + sovVirtualService(uint64(l))
- }
- l = len(m.Name)
- if l > 0 {
- n += 2 + l + sovVirtualService(uint64(l))
- }
- if m.MirrorPercent != nil {
- l = m.MirrorPercent.Size()
- n += 2 + l + sovVirtualService(uint64(l))
+ if len(m.HeaderName) > 0 {
+ i -= len(m.HeaderName)
+ copy(dAtA[i:], m.HeaderName)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.HeaderName)))
+ i--
+ dAtA[i] = 0x1a
}
- if m.MirrorPercentage != nil {
- l = m.MirrorPercentage.Size()
- n += 2 + l + sovVirtualService(uint64(l))
+ if len(m.ExpectMatch) > 0 {
+ i -= len(m.ExpectMatch)
+ copy(dAtA[i:], m.ExpectMatch)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.ExpectMatch)))
+ i--
+ dAtA[i] = 0x12
}
- if m.Delegate != nil {
- l = m.Delegate.Size()
- n += 2 + l + sovVirtualService(uint64(l))
+ if len(m.DescriptorValue) > 0 {
+ i -= len(m.DescriptorValue)
+ copy(dAtA[i:], m.DescriptorValue)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.DescriptorValue)))
+ i--
+ dAtA[i] = 0xa
}
- if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
- }
- return n
+ return len(dAtA) - i, nil
}
-func (m *Delegate) Size() (n int) {
- if m == nil {
- return 0
+func (m *RateLimitAction_HeaderMatch_Exact) MarshalTo(dAtA []byte) (int, error) {
+ return m.MarshalToSizedBuffer(dAtA[:m.Size()])
+}
+
+func (m *RateLimitAction_HeaderMatch_Exact) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ i -= len(m.Exact)
+ copy(dAtA[i:], m.Exact)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Exact)))
+ i--
+ dAtA[i] = 0x22
+ return len(dAtA) - i, nil
+}
+func (m *RateLimitAction_HeaderMatch_Prefix) MarshalTo(dAtA []byte) (int, error) {
+ return m.MarshalToSizedBuffer(dAtA[:m.Size()])
+}
+
+func (m *RateLimitAction_HeaderMatch_Prefix) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ i -= len(m.Prefix)
+ copy(dAtA[i:], m.Prefix)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Prefix)))
+ i--
+ dAtA[i] = 0x2a
+ return len(dAtA) - i, nil
+}
+func (m *RateLimitAction_HeaderMatch_Regex) MarshalTo(dAtA []byte) (int, error) {
+ return m.MarshalToSizedBuffer(dAtA[:m.Size()])
+}
+
+func (m *RateLimitAction_HeaderMatch_Regex) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ i -= len(m.Regex)
+ copy(dAtA[i:], m.Regex)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Regex)))
+ i--
+ dAtA[i] = 0x32
+ return len(dAtA) - i, nil
+}
+func (m *RateLimitAction_GenericKey) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
}
+ return dAtA[:n], nil
+}
+
+func (m *RateLimitAction_GenericKey) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RateLimitAction_GenericKey) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
var l int
_ = l
- l = len(m.Name)
- if l > 0 {
- n += 1 + l + sovVirtualService(uint64(l))
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
}
- l = len(m.Namespace)
- if l > 0 {
- n += 1 + l + sovVirtualService(uint64(l))
+ if len(m.DescriptorValue) > 0 {
+ i -= len(m.DescriptorValue)
+ copy(dAtA[i:], m.DescriptorValue)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.DescriptorValue)))
+ i--
+ dAtA[i] = 0x12
}
- if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
+ if len(m.DescriptorKey) > 0 {
+ i -= len(m.DescriptorKey)
+ copy(dAtA[i:], m.DescriptorKey)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.DescriptorKey)))
+ i--
+ dAtA[i] = 0xa
}
- return n
+ return len(dAtA) - i, nil
}
-func (m *Headers) Size() (n int) {
- if m == nil {
- return 0
+func (m *HTTPLocalRateLimit) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
}
+ return dAtA[:n], nil
+}
+
+func (m *HTTPLocalRateLimit) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *HTTPLocalRateLimit) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
var l int
_ = l
- if m.Request != nil {
- l = m.Request.Size()
- n += 1 + l + sovVirtualService(uint64(l))
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
}
- if m.Response != nil {
- l = m.Response.Size()
- n += 1 + l + sovVirtualService(uint64(l))
+ if m.TokenBucket != nil {
+ {
+ size, err := m.TokenBucket.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
}
- if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
+ if m.StatusCode != 0 {
+ i = encodeVarintVirtualService(dAtA, i, uint64(m.StatusCode))
+ i--
+ dAtA[i] = 0x8
}
- return n
+ return len(dAtA) - i, nil
}
-func (m *Headers_HeaderOperations) Size() (n int) {
- if m == nil {
- return 0
+func (m *TokenBucket) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
}
+ return dAtA[:n], nil
+}
+
+func (m *TokenBucket) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *TokenBucket) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
var l int
_ = l
- if len(m.Set) > 0 {
- for k, v := range m.Set {
- _ = k
- _ = v
- mapEntrySize := 1 + len(k) + sovVirtualService(uint64(len(k))) + 1 + len(v) + sovVirtualService(uint64(len(v)))
- n += mapEntrySize + 1 + sovVirtualService(uint64(mapEntrySize))
- }
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
}
- if len(m.Add) > 0 {
- for k, v := range m.Add {
- _ = k
- _ = v
- mapEntrySize := 1 + len(k) + sovVirtualService(uint64(len(k))) + 1 + len(v) + sovVirtualService(uint64(len(v)))
- n += mapEntrySize + 1 + sovVirtualService(uint64(mapEntrySize))
+ if m.Interval != nil {
+ {
+ size, err := m.Interval.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
+ i--
+ dAtA[i] = 0x1a
}
- if len(m.Remove) > 0 {
- for _, s := range m.Remove {
- l = len(s)
- n += 1 + l + sovVirtualService(uint64(l))
- }
+ if m.TokensPerFill != 0 {
+ i = encodeVarintVirtualService(dAtA, i, uint64(m.TokensPerFill))
+ i--
+ dAtA[i] = 0x10
}
- if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
+ if m.MaxTokens != 0 {
+ i = encodeVarintVirtualService(dAtA, i, uint64(m.MaxTokens))
+ i--
+ dAtA[i] = 0x8
}
- return n
+ return len(dAtA) - i, nil
}
-func (m *TLSRoute) Size() (n int) {
- if m == nil {
- return 0
+func (m *RouteDestination) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
}
+ return dAtA[:n], nil
+}
+
+func (m *RouteDestination) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RouteDestination) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
var l int
_ = l
- if len(m.Match) > 0 {
- for _, e := range m.Match {
- l = e.Size()
- n += 1 + l + sovVirtualService(uint64(l))
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.GlobalRateLimit != nil {
+ {
+ size, err := m.GlobalRateLimit.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
+ i--
+ dAtA[i] = 0x22
}
- if len(m.Route) > 0 {
- for _, e := range m.Route {
- l = e.Size()
- n += 1 + l + sovVirtualService(uint64(l))
+ if m.LocalRateLimit != nil {
+ {
+ size, err := m.LocalRateLimit.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
+ i--
+ dAtA[i] = 0x1a
}
- if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
+ if m.Weight != 0 {
+ i = encodeVarintVirtualService(dAtA, i, uint64(m.Weight))
+ i--
+ dAtA[i] = 0x10
}
- return n
+ if m.Destination != nil {
+ {
+ size, err := m.Destination.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
}
-func (m *TCPRoute) Size() (n int) {
- if m == nil {
- return 0
+func (m *LocalRateLimit) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
}
+ return dAtA[:n], nil
+}
+
+func (m *LocalRateLimit) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *LocalRateLimit) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
var l int
_ = l
- if len(m.Match) > 0 {
- for _, e := range m.Match {
- l = e.Size()
- n += 1 + l + sovVirtualService(uint64(l))
- }
- }
- if len(m.Route) > 0 {
- for _, e := range m.Route {
- l = e.Size()
- n += 1 + l + sovVirtualService(uint64(l))
- }
- }
if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
}
- return n
+ if m.TokenBucket != nil {
+ {
+ size, err := m.TokenBucket.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
}
-func (m *HTTPMatchRequest) Size() (n int) {
- if m == nil {
- return 0
+func (m *GlobalRateLimit) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
}
+ return dAtA[:n], nil
+}
+
+func (m *GlobalRateLimit) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GlobalRateLimit) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
var l int
_ = l
- if m.Uri != nil {
- l = m.Uri.Size()
- n += 1 + l + sovVirtualService(uint64(l))
- }
- if m.Scheme != nil {
- l = m.Scheme.Size()
- n += 1 + l + sovVirtualService(uint64(l))
- }
- if m.Method != nil {
- l = m.Method.Size()
- n += 1 + l + sovVirtualService(uint64(l))
- }
- if m.Authority != nil {
- l = m.Authority.Size()
- n += 1 + l + sovVirtualService(uint64(l))
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
}
- if len(m.Headers) > 0 {
- for k, v := range m.Headers {
- _ = k
- _ = v
- l = 0
- if v != nil {
- l = v.Size()
- l += 1 + sovVirtualService(uint64(l))
+ if m.Descriptors != nil {
+ {
+ size, err := m.Descriptors.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
}
- mapEntrySize := 1 + len(k) + sovVirtualService(uint64(len(k))) + l
- n += mapEntrySize + 1 + sovVirtualService(uint64(mapEntrySize))
- }
- }
- if m.Port != 0 {
- n += 1 + sovVirtualService(uint64(m.Port))
- }
- if len(m.SourceLabels) > 0 {
- for k, v := range m.SourceLabels {
- _ = k
- _ = v
- mapEntrySize := 1 + len(k) + sovVirtualService(uint64(len(k))) + 1 + len(v) + sovVirtualService(uint64(len(v)))
- n += mapEntrySize + 1 + sovVirtualService(uint64(mapEntrySize))
- }
- }
- if len(m.Gateways) > 0 {
- for _, s := range m.Gateways {
- l = len(s)
- n += 1 + l + sovVirtualService(uint64(l))
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
+ i--
+ dAtA[i] = 0x22
}
- if len(m.QueryParams) > 0 {
- for k, v := range m.QueryParams {
- _ = k
- _ = v
- l = 0
- if v != nil {
- l = v.Size()
- l += 1 + sovVirtualService(uint64(l))
- }
- mapEntrySize := 1 + len(k) + sovVirtualService(uint64(len(k))) + l
- n += mapEntrySize + 1 + sovVirtualService(uint64(mapEntrySize))
+ if m.FailOpen {
+ i--
+ if m.FailOpen {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
}
+ i--
+ dAtA[i] = 0x18
}
- if m.IgnoreUriCase {
- n += 2
- }
- l = len(m.Name)
- if l > 0 {
- n += 1 + l + sovVirtualService(uint64(l))
- }
- if len(m.WithoutHeaders) > 0 {
- for k, v := range m.WithoutHeaders {
- _ = k
- _ = v
- l = 0
- if v != nil {
- l = v.Size()
- l += 1 + sovVirtualService(uint64(l))
+ if m.Timeout != nil {
+ {
+ size, err := m.Timeout.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
}
- mapEntrySize := 1 + len(k) + sovVirtualService(uint64(len(k))) + l
- n += mapEntrySize + 1 + sovVirtualService(uint64(mapEntrySize))
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
+ i--
+ dAtA[i] = 0x12
}
- l = len(m.SourceNamespace)
- if l > 0 {
- n += 1 + l + sovVirtualService(uint64(l))
- }
- if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
+ if len(m.Domain) > 0 {
+ i -= len(m.Domain)
+ copy(dAtA[i:], m.Domain)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Domain)))
+ i--
+ dAtA[i] = 0xa
}
- return n
+ return len(dAtA) - i, nil
}
-func (m *HTTPRouteDestination) Size() (n int) {
- if m == nil {
- return 0
+func (m *GlobalRateLimit_RateLimitDescriptor) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
}
+ return dAtA[:n], nil
+}
+
+func (m *GlobalRateLimit_RateLimitDescriptor) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GlobalRateLimit_RateLimitDescriptor) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
var l int
_ = l
- if m.Destination != nil {
- l = m.Destination.Size()
- n += 1 + l + sovVirtualService(uint64(l))
- }
- if m.Weight != 0 {
- n += 1 + sovVirtualService(uint64(m.Weight))
- }
- if m.Headers != nil {
- l = m.Headers.Size()
- n += 1 + l + sovVirtualService(uint64(l))
- }
if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
}
- return n
+ if len(m.Entries) > 0 {
+ for iNdEx := len(m.Entries) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Entries[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
}
-func (m *RouteDestination) Size() (n int) {
- if m == nil {
- return 0
+func (m *GlobalRateLimit_RateLimitDescriptor_Entry) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
}
+ return dAtA[:n], nil
+}
+
+func (m *GlobalRateLimit_RateLimitDescriptor_Entry) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GlobalRateLimit_RateLimitDescriptor_Entry) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
var l int
_ = l
- if m.Destination != nil {
- l = m.Destination.Size()
- n += 1 + l + sovVirtualService(uint64(l))
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
}
- if m.Weight != 0 {
- n += 1 + sovVirtualService(uint64(m.Weight))
+ if len(m.Value) > 0 {
+ i -= len(m.Value)
+ copy(dAtA[i:], m.Value)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Value)))
+ i--
+ dAtA[i] = 0x12
}
- if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
+ if len(m.Key) > 0 {
+ i -= len(m.Key)
+ copy(dAtA[i:], m.Key)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Key)))
+ i--
+ dAtA[i] = 0xa
}
- return n
+ return len(dAtA) - i, nil
}
-func (m *L4MatchAttributes) Size() (n int) {
- if m == nil {
- return 0
+func (m *L4MatchAttributes) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
}
+ return dAtA[:n], nil
+}
+
+func (m *L4MatchAttributes) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *L4MatchAttributes) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
var l int
_ = l
- if len(m.DestinationSubnets) > 0 {
- for _, s := range m.DestinationSubnets {
- l = len(s)
- n += 1 + l + sovVirtualService(uint64(l))
- }
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
}
- if m.Port != 0 {
- n += 1 + sovVirtualService(uint64(m.Port))
+ if len(m.SourceNamespace) > 0 {
+ i -= len(m.SourceNamespace)
+ copy(dAtA[i:], m.SourceNamespace)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.SourceNamespace)))
+ i--
+ dAtA[i] = 0x32
}
- l = len(m.SourceSubnet)
- if l > 0 {
- n += 1 + l + sovVirtualService(uint64(l))
+ if len(m.Gateways) > 0 {
+ for iNdEx := len(m.Gateways) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Gateways[iNdEx])
+ copy(dAtA[i:], m.Gateways[iNdEx])
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Gateways[iNdEx])))
+ i--
+ dAtA[i] = 0x2a
+ }
}
if len(m.SourceLabels) > 0 {
- for k, v := range m.SourceLabels {
- _ = k
- _ = v
- mapEntrySize := 1 + len(k) + sovVirtualService(uint64(len(k))) + 1 + len(v) + sovVirtualService(uint64(len(v)))
- n += mapEntrySize + 1 + sovVirtualService(uint64(mapEntrySize))
+ for k := range m.SourceLabels {
+ v := m.SourceLabels[k]
+ baseI := i
+ i -= len(v)
+ copy(dAtA[i:], v)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(v)))
+ i--
+ dAtA[i] = 0x12
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVirtualService(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x22
}
}
- if len(m.Gateways) > 0 {
- for _, s := range m.Gateways {
- l = len(s)
- n += 1 + l + sovVirtualService(uint64(l))
- }
+ if len(m.SourceSubnet) > 0 {
+ i -= len(m.SourceSubnet)
+ copy(dAtA[i:], m.SourceSubnet)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.SourceSubnet)))
+ i--
+ dAtA[i] = 0x1a
}
- l = len(m.SourceNamespace)
- if l > 0 {
- n += 1 + l + sovVirtualService(uint64(l))
+ if m.Port != 0 {
+ i = encodeVarintVirtualService(dAtA, i, uint64(m.Port))
+ i--
+ dAtA[i] = 0x10
}
- if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
+ if len(m.DestinationSubnets) > 0 {
+ for iNdEx := len(m.DestinationSubnets) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.DestinationSubnets[iNdEx])
+ copy(dAtA[i:], m.DestinationSubnets[iNdEx])
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.DestinationSubnets[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
}
- return n
+ return len(dAtA) - i, nil
}
-func (m *TLSMatchAttributes) Size() (n int) {
- if m == nil {
- return 0
+func (m *TLSMatchAttributes) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
}
+ return dAtA[:n], nil
+}
+
+func (m *TLSMatchAttributes) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *TLSMatchAttributes) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
var l int
_ = l
- if len(m.SniHosts) > 0 {
- for _, s := range m.SniHosts {
- l = len(s)
- n += 1 + l + sovVirtualService(uint64(l))
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.SourceNamespace) > 0 {
+ i -= len(m.SourceNamespace)
+ copy(dAtA[i:], m.SourceNamespace)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.SourceNamespace)))
+ i--
+ dAtA[i] = 0x3a
+ }
+ if len(m.Gateways) > 0 {
+ for iNdEx := len(m.Gateways) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Gateways[iNdEx])
+ copy(dAtA[i:], m.Gateways[iNdEx])
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Gateways[iNdEx])))
+ i--
+ dAtA[i] = 0x32
}
}
- if len(m.DestinationSubnets) > 0 {
- for _, s := range m.DestinationSubnets {
- l = len(s)
- n += 1 + l + sovVirtualService(uint64(l))
+ if len(m.SourceLabels) > 0 {
+ for k := range m.SourceLabels {
+ v := m.SourceLabels[k]
+ baseI := i
+ i -= len(v)
+ copy(dAtA[i:], v)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(v)))
+ i--
+ dAtA[i] = 0x12
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVirtualService(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x2a
}
}
if m.Port != 0 {
- n += 1 + sovVirtualService(uint64(m.Port))
+ i = encodeVarintVirtualService(dAtA, i, uint64(m.Port))
+ i--
+ dAtA[i] = 0x18
}
- if len(m.SourceLabels) > 0 {
- for k, v := range m.SourceLabels {
- _ = k
- _ = v
- mapEntrySize := 1 + len(k) + sovVirtualService(uint64(len(k))) + 1 + len(v) + sovVirtualService(uint64(len(v)))
- n += mapEntrySize + 1 + sovVirtualService(uint64(mapEntrySize))
+ if len(m.DestinationSubnets) > 0 {
+ for iNdEx := len(m.DestinationSubnets) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.DestinationSubnets[iNdEx])
+ copy(dAtA[i:], m.DestinationSubnets[iNdEx])
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.DestinationSubnets[iNdEx])))
+ i--
+ dAtA[i] = 0x12
}
}
- if len(m.Gateways) > 0 {
- for _, s := range m.Gateways {
- l = len(s)
- n += 1 + l + sovVirtualService(uint64(l))
+ if len(m.SniHosts) > 0 {
+ for iNdEx := len(m.SniHosts) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.SniHosts[iNdEx])
+ copy(dAtA[i:], m.SniHosts[iNdEx])
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.SniHosts[iNdEx])))
+ i--
+ dAtA[i] = 0xa
}
}
- l = len(m.SourceNamespace)
- if l > 0 {
- n += 1 + l + sovVirtualService(uint64(l))
- }
- if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
- }
- return n
+ return len(dAtA) - i, nil
}
-func (m *HTTPRedirect) Size() (n int) {
- if m == nil {
- return 0
+func (m *HTTPRedirect) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
}
+ return dAtA[:n], nil
+}
+
+func (m *HTTPRedirect) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *HTTPRedirect) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
var l int
_ = l
- l = len(m.Uri)
- if l > 0 {
- n += 1 + l + sovVirtualService(uint64(l))
- }
- l = len(m.Authority)
- if l > 0 {
- n += 1 + l + sovVirtualService(uint64(l))
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
}
if m.RedirectCode != 0 {
- n += 1 + sovVirtualService(uint64(m.RedirectCode))
+ i = encodeVarintVirtualService(dAtA, i, uint64(m.RedirectCode))
+ i--
+ dAtA[i] = 0x18
}
- if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
+ if len(m.Authority) > 0 {
+ i -= len(m.Authority)
+ copy(dAtA[i:], m.Authority)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Authority)))
+ i--
+ dAtA[i] = 0x12
}
- return n
+ if len(m.Uri) > 0 {
+ i -= len(m.Uri)
+ copy(dAtA[i:], m.Uri)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Uri)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
}
-func (m *HTTPRewrite) Size() (n int) {
- if m == nil {
- return 0
- }
- var l int
- _ = l
- l = len(m.Uri)
- if l > 0 {
- n += 1 + l + sovVirtualService(uint64(l))
- }
- l = len(m.Authority)
- if l > 0 {
- n += 1 + l + sovVirtualService(uint64(l))
- }
- if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
+func (m *HTTPRewrite) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
}
- return n
+ return dAtA[:n], nil
}
-func (m *StringMatch) Size() (n int) {
- if m == nil {
- return 0
- }
+func (m *HTTPRewrite) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *HTTPRewrite) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
var l int
_ = l
- if m.MatchType != nil {
- n += m.MatchType.Size()
- }
if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
}
- return n
-}
-
-func (m *StringMatch_Exact) Size() (n int) {
- if m == nil {
- return 0
+ if len(m.Authority) > 0 {
+ i -= len(m.Authority)
+ copy(dAtA[i:], m.Authority)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Authority)))
+ i--
+ dAtA[i] = 0x12
}
- var l int
- _ = l
- l = len(m.Exact)
- n += 1 + l + sovVirtualService(uint64(l))
- return n
-}
-func (m *StringMatch_Prefix) Size() (n int) {
- if m == nil {
- return 0
+ if len(m.Uri) > 0 {
+ i -= len(m.Uri)
+ copy(dAtA[i:], m.Uri)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Uri)))
+ i--
+ dAtA[i] = 0xa
}
- var l int
- _ = l
- l = len(m.Prefix)
- n += 1 + l + sovVirtualService(uint64(l))
- return n
+ return len(dAtA) - i, nil
}
-func (m *StringMatch_Regex) Size() (n int) {
- if m == nil {
- return 0
+
+func (m *StringMatch) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
}
+ return dAtA[:n], nil
+}
+
+func (m *StringMatch) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StringMatch) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
var l int
_ = l
- l = len(m.Regex)
- n += 1 + l + sovVirtualService(uint64(l))
- return n
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.MatchType != nil {
+ {
+ size := m.MatchType.Size()
+ i -= size
+ if _, err := m.MatchType.MarshalTo(dAtA[i:]); err != nil {
+ return 0, err
+ }
+ }
+ }
+ return len(dAtA) - i, nil
}
-func (m *HTTPRetry) Size() (n int) {
- if m == nil {
- return 0
+
+func (m *StringMatch_Exact) MarshalTo(dAtA []byte) (int, error) {
+ return m.MarshalToSizedBuffer(dAtA[:m.Size()])
+}
+
+func (m *StringMatch_Exact) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ i -= len(m.Exact)
+ copy(dAtA[i:], m.Exact)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Exact)))
+ i--
+ dAtA[i] = 0xa
+ return len(dAtA) - i, nil
+}
+func (m *StringMatch_Prefix) MarshalTo(dAtA []byte) (int, error) {
+ return m.MarshalToSizedBuffer(dAtA[:m.Size()])
+}
+
+func (m *StringMatch_Prefix) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ i -= len(m.Prefix)
+ copy(dAtA[i:], m.Prefix)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Prefix)))
+ i--
+ dAtA[i] = 0x12
+ return len(dAtA) - i, nil
+}
+func (m *StringMatch_Regex) MarshalTo(dAtA []byte) (int, error) {
+ return m.MarshalToSizedBuffer(dAtA[:m.Size()])
+}
+
+func (m *StringMatch_Regex) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ i -= len(m.Regex)
+ copy(dAtA[i:], m.Regex)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Regex)))
+ i--
+ dAtA[i] = 0x1a
+ return len(dAtA) - i, nil
+}
+func (m *HTTPRetry) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
}
+ return dAtA[:n], nil
+}
+
+func (m *HTTPRetry) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *HTTPRetry) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
var l int
_ = l
- if m.Attempts != 0 {
- n += 1 + sovVirtualService(uint64(m.Attempts))
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
}
- if m.PerTryTimeout != nil {
- l = m.PerTryTimeout.Size()
- n += 1 + l + sovVirtualService(uint64(l))
+ if m.RetryRemoteLocalities != nil {
+ {
+ size, err := m.RetryRemoteLocalities.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
}
- l = len(m.RetryOn)
- if l > 0 {
- n += 1 + l + sovVirtualService(uint64(l))
+ if len(m.RetryOn) > 0 {
+ i -= len(m.RetryOn)
+ copy(dAtA[i:], m.RetryOn)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.RetryOn)))
+ i--
+ dAtA[i] = 0x1a
}
- if m.RetryRemoteLocalities != nil {
- l = m.RetryRemoteLocalities.Size()
- n += 1 + l + sovVirtualService(uint64(l))
+ if m.PerTryTimeout != nil {
+ {
+ size, err := m.PerTryTimeout.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
}
- if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
+ if m.Attempts != 0 {
+ i = encodeVarintVirtualService(dAtA, i, uint64(m.Attempts))
+ i--
+ dAtA[i] = 0x8
}
- return n
+ return len(dAtA) - i, nil
}
-func (m *CorsPolicy) Size() (n int) {
- if m == nil {
- return 0
+func (m *CorsPolicy) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
}
+ return dAtA[:n], nil
+}
+
+func (m *CorsPolicy) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *CorsPolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
var l int
_ = l
- if len(m.AllowOrigin) > 0 {
- for _, s := range m.AllowOrigin {
- l = len(s)
- n += 1 + l + sovVirtualService(uint64(l))
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.AllowOrigins) > 0 {
+ for iNdEx := len(m.AllowOrigins) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.AllowOrigins[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x3a
}
}
- if len(m.AllowMethods) > 0 {
- for _, s := range m.AllowMethods {
- l = len(s)
- n += 1 + l + sovVirtualService(uint64(l))
+ if m.AllowCredentials != nil {
+ {
+ size, err := m.AllowCredentials.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
+ i--
+ dAtA[i] = 0x32
}
- if len(m.AllowHeaders) > 0 {
- for _, s := range m.AllowHeaders {
- l = len(s)
- n += 1 + l + sovVirtualService(uint64(l))
+ if m.MaxAge != nil {
+ {
+ size, err := m.MaxAge.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
}
+ i--
+ dAtA[i] = 0x2a
}
if len(m.ExposeHeaders) > 0 {
- for _, s := range m.ExposeHeaders {
- l = len(s)
- n += 1 + l + sovVirtualService(uint64(l))
+ for iNdEx := len(m.ExposeHeaders) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.ExposeHeaders[iNdEx])
+ copy(dAtA[i:], m.ExposeHeaders[iNdEx])
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.ExposeHeaders[iNdEx])))
+ i--
+ dAtA[i] = 0x22
}
}
- if m.MaxAge != nil {
- l = m.MaxAge.Size()
- n += 1 + l + sovVirtualService(uint64(l))
- }
- if m.AllowCredentials != nil {
- l = m.AllowCredentials.Size()
- n += 1 + l + sovVirtualService(uint64(l))
+ if len(m.AllowHeaders) > 0 {
+ for iNdEx := len(m.AllowHeaders) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.AllowHeaders[iNdEx])
+ copy(dAtA[i:], m.AllowHeaders[iNdEx])
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.AllowHeaders[iNdEx])))
+ i--
+ dAtA[i] = 0x1a
+ }
}
- if len(m.AllowOrigins) > 0 {
- for _, e := range m.AllowOrigins {
- l = e.Size()
- n += 1 + l + sovVirtualService(uint64(l))
+ if len(m.AllowMethods) > 0 {
+ for iNdEx := len(m.AllowMethods) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.AllowMethods[iNdEx])
+ copy(dAtA[i:], m.AllowMethods[iNdEx])
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.AllowMethods[iNdEx])))
+ i--
+ dAtA[i] = 0x12
}
}
- if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
+ if len(m.AllowOrigin) > 0 {
+ for iNdEx := len(m.AllowOrigin) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.AllowOrigin[iNdEx])
+ copy(dAtA[i:], m.AllowOrigin[iNdEx])
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.AllowOrigin[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
}
- return n
+ return len(dAtA) - i, nil
}
-func (m *HTTPFaultInjection) Size() (n int) {
- if m == nil {
- return 0
+func (m *HTTPFaultInjection) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
}
+ return dAtA[:n], nil
+}
+
+func (m *HTTPFaultInjection) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *HTTPFaultInjection) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
var l int
_ = l
- if m.Delay != nil {
- l = m.Delay.Size()
- n += 1 + l + sovVirtualService(uint64(l))
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
}
if m.Abort != nil {
- l = m.Abort.Size()
- n += 1 + l + sovVirtualService(uint64(l))
+ {
+ size, err := m.Abort.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
}
- if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
+ if m.Delay != nil {
+ {
+ size, err := m.Delay.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
}
- return n
+ return len(dAtA) - i, nil
}
-func (m *HTTPFaultInjection_Delay) Size() (n int) {
- if m == nil {
- return 0
+func (m *HTTPFaultInjection_Delay) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
}
+ return dAtA[:n], nil
+}
+
+func (m *HTTPFaultInjection_Delay) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *HTTPFaultInjection_Delay) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
var l int
_ = l
- if m.Percent != 0 {
- n += 1 + sovVirtualService(uint64(m.Percent))
- }
- if m.HttpDelayType != nil {
- n += m.HttpDelayType.Size()
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
}
if m.Percentage != nil {
- l = m.Percentage.Size()
- n += 1 + l + sovVirtualService(uint64(l))
+ {
+ size, err := m.Percentage.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
}
- if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
+ if m.HttpDelayType != nil {
+ {
+ size := m.HttpDelayType.Size()
+ i -= size
+ if _, err := m.HttpDelayType.MarshalTo(dAtA[i:]); err != nil {
+ return 0, err
+ }
+ }
}
- return n
+ if m.Percent != 0 {
+ i = encodeVarintVirtualService(dAtA, i, uint64(m.Percent))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
}
-func (m *HTTPFaultInjection_Delay_FixedDelay) Size() (n int) {
- if m == nil {
- return 0
- }
- var l int
- _ = l
+func (m *HTTPFaultInjection_Delay_FixedDelay) MarshalTo(dAtA []byte) (int, error) {
+ return m.MarshalToSizedBuffer(dAtA[:m.Size()])
+}
+
+func (m *HTTPFaultInjection_Delay_FixedDelay) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
if m.FixedDelay != nil {
- l = m.FixedDelay.Size()
- n += 1 + l + sovVirtualService(uint64(l))
+ {
+ size, err := m.FixedDelay.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
}
- return n
+ return len(dAtA) - i, nil
}
-func (m *HTTPFaultInjection_Delay_ExponentialDelay) Size() (n int) {
- if m == nil {
- return 0
- }
- var l int
- _ = l
+func (m *HTTPFaultInjection_Delay_ExponentialDelay) MarshalTo(dAtA []byte) (int, error) {
+ return m.MarshalToSizedBuffer(dAtA[:m.Size()])
+}
+
+func (m *HTTPFaultInjection_Delay_ExponentialDelay) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
if m.ExponentialDelay != nil {
- l = m.ExponentialDelay.Size()
- n += 1 + l + sovVirtualService(uint64(l))
+ {
+ size, err := m.ExponentialDelay.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
}
- return n
+ return len(dAtA) - i, nil
}
-func (m *HTTPFaultInjection_Abort) Size() (n int) {
- if m == nil {
- return 0
+func (m *HTTPFaultInjection_Abort) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
}
+ return dAtA[:n], nil
+}
+
+func (m *HTTPFaultInjection_Abort) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *HTTPFaultInjection_Abort) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
var l int
_ = l
- if m.ErrorType != nil {
- n += m.ErrorType.Size()
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
}
if m.Percentage != nil {
- l = m.Percentage.Size()
- n += 1 + l + sovVirtualService(uint64(l))
+ {
+ size, err := m.Percentage.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVirtualService(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
}
- if m.XXX_unrecognized != nil {
- n += len(m.XXX_unrecognized)
+ if m.ErrorType != nil {
+ {
+ size := m.ErrorType.Size()
+ i -= size
+ if _, err := m.ErrorType.MarshalTo(dAtA[i:]); err != nil {
+ return 0, err
+ }
+ }
}
- return n
+ return len(dAtA) - i, nil
}
-func (m *HTTPFaultInjection_Abort_HttpStatus) Size() (n int) {
- if m == nil {
- return 0
- }
- var l int
- _ = l
- n += 1 + sovVirtualService(uint64(m.HttpStatus))
- return n
+func (m *HTTPFaultInjection_Abort_HttpStatus) MarshalTo(dAtA []byte) (int, error) {
+ return m.MarshalToSizedBuffer(dAtA[:m.Size()])
}
-func (m *HTTPFaultInjection_Abort_GrpcStatus) Size() (n int) {
+
+func (m *HTTPFaultInjection_Abort_HttpStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ i = encodeVarintVirtualService(dAtA, i, uint64(m.HttpStatus))
+ i--
+ dAtA[i] = 0x10
+ return len(dAtA) - i, nil
+}
+func (m *HTTPFaultInjection_Abort_GrpcStatus) MarshalTo(dAtA []byte) (int, error) {
+ return m.MarshalToSizedBuffer(dAtA[:m.Size()])
+}
+
+func (m *HTTPFaultInjection_Abort_GrpcStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ i -= len(m.GrpcStatus)
+ copy(dAtA[i:], m.GrpcStatus)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.GrpcStatus)))
+ i--
+ dAtA[i] = 0x1a
+ return len(dAtA) - i, nil
+}
+func (m *HTTPFaultInjection_Abort_Http2Error) MarshalTo(dAtA []byte) (int, error) {
+ return m.MarshalToSizedBuffer(dAtA[:m.Size()])
+}
+
+func (m *HTTPFaultInjection_Abort_Http2Error) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ i -= len(m.Http2Error)
+ copy(dAtA[i:], m.Http2Error)
+ i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Http2Error)))
+ i--
+ dAtA[i] = 0x22
+ return len(dAtA) - i, nil
+}
+func (m *PortSelector) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PortSelector) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *PortSelector) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Number != 0 {
+ i = encodeVarintVirtualService(dAtA, i, uint64(m.Number))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Percent) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Percent) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Percent) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Value != 0 {
+ i -= 8
+ encoding_binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Value))))
+ i--
+ dAtA[i] = 0x9
+ }
+ return len(dAtA) - i, nil
+}
+
+func encodeVarintVirtualService(dAtA []byte, offset int, v uint64) int {
+ offset -= sovVirtualService(v)
+ base := offset
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return base
+}
+func (m *VirtualService) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
- l = len(m.GrpcStatus)
- n += 1 + l + sovVirtualService(uint64(l))
+ if len(m.Hosts) > 0 {
+ for _, s := range m.Hosts {
+ l = len(s)
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if len(m.Gateways) > 0 {
+ for _, s := range m.Gateways {
+ l = len(s)
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if len(m.Http) > 0 {
+ for _, e := range m.Http {
+ l = e.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if len(m.Tcp) > 0 {
+ for _, e := range m.Tcp {
+ l = e.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if len(m.Tls) > 0 {
+ for _, e := range m.Tls {
+ l = e.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if len(m.ExportTo) > 0 {
+ for _, s := range m.ExportTo {
+ l = len(s)
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
return n
}
-func (m *HTTPFaultInjection_Abort_Http2Error) Size() (n int) {
+
+func (m *Destination) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
- l = len(m.Http2Error)
- n += 1 + l + sovVirtualService(uint64(l))
+ l = len(m.Host)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ l = len(m.Subset)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.Port != nil {
+ l = m.Port.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
return n
}
-func (m *PortSelector) Size() (n int) {
+
+func (m *HTTPRoute) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
- if m.Number != 0 {
- n += 1 + sovVirtualService(uint64(m.Number))
+ if len(m.Match) > 0 {
+ for _, e := range m.Match {
+ l = e.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if len(m.Route) > 0 {
+ for _, e := range m.Route {
+ l = e.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if m.Redirect != nil {
+ l = m.Redirect.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.Rewrite != nil {
+ l = m.Rewrite.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.Timeout != nil {
+ l = m.Timeout.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.Retries != nil {
+ l = m.Retries.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.Fault != nil {
+ l = m.Fault.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.Mirror != nil {
+ l = m.Mirror.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.CorsPolicy != nil {
+ l = m.CorsPolicy.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.Headers != nil {
+ l = m.Headers.Size()
+ n += 2 + l + sovVirtualService(uint64(l))
+ }
+ l = len(m.Name)
+ if l > 0 {
+ n += 2 + l + sovVirtualService(uint64(l))
+ }
+ if m.MirrorPercent != nil {
+ l = m.MirrorPercent.Size()
+ n += 2 + l + sovVirtualService(uint64(l))
+ }
+ if m.MirrorPercentage != nil {
+ l = m.MirrorPercentage.Size()
+ n += 2 + l + sovVirtualService(uint64(l))
+ }
+ if m.Delegate != nil {
+ l = m.Delegate.Size()
+ n += 2 + l + sovVirtualService(uint64(l))
}
if m.XXX_unrecognized != nil {
n += len(m.XXX_unrecognized)
@@ -6026,14 +6996,19 @@ func (m *PortSelector) Size() (n int) {
return n
}
-func (m *Percent) Size() (n int) {
+func (m *Delegate) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
- if m.Value != 0 {
- n += 9
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ l = len(m.Namespace)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
}
if m.XXX_unrecognized != nil {
n += len(m.XXX_unrecognized)
@@ -6041,13 +7016,2761 @@ func (m *Percent) Size() (n int) {
return n
}
-func sovVirtualService(x uint64) (n int) {
- return (math_bits.Len64(x|1) + 6) / 7
-}
-func sozVirtualService(x uint64) (n int) {
- return sovVirtualService(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+func (m *Headers) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Request != nil {
+ l = m.Request.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.Response != nil {
+ l = m.Response.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Headers_HeaderOperations) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Set) > 0 {
+ for k, v := range m.Set {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovVirtualService(uint64(len(k))) + 1 + len(v) + sovVirtualService(uint64(len(v)))
+ n += mapEntrySize + 1 + sovVirtualService(uint64(mapEntrySize))
+ }
+ }
+ if len(m.Add) > 0 {
+ for k, v := range m.Add {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovVirtualService(uint64(len(k))) + 1 + len(v) + sovVirtualService(uint64(len(v)))
+ n += mapEntrySize + 1 + sovVirtualService(uint64(mapEntrySize))
+ }
+ }
+ if len(m.Remove) > 0 {
+ for _, s := range m.Remove {
+ l = len(s)
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *TLSRoute) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Match) > 0 {
+ for _, e := range m.Match {
+ l = e.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if len(m.Route) > 0 {
+ for _, e := range m.Route {
+ l = e.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *TCPRoute) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Match) > 0 {
+ for _, e := range m.Match {
+ l = e.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if len(m.Route) > 0 {
+ for _, e := range m.Route {
+ l = e.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *HTTPMatchRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Uri != nil {
+ l = m.Uri.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.Scheme != nil {
+ l = m.Scheme.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.Method != nil {
+ l = m.Method.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.Authority != nil {
+ l = m.Authority.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if len(m.Headers) > 0 {
+ for k, v := range m.Headers {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.Size()
+ l += 1 + sovVirtualService(uint64(l))
+ }
+ mapEntrySize := 1 + len(k) + sovVirtualService(uint64(len(k))) + l
+ n += mapEntrySize + 1 + sovVirtualService(uint64(mapEntrySize))
+ }
+ }
+ if m.Port != 0 {
+ n += 1 + sovVirtualService(uint64(m.Port))
+ }
+ if len(m.SourceLabels) > 0 {
+ for k, v := range m.SourceLabels {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovVirtualService(uint64(len(k))) + 1 + len(v) + sovVirtualService(uint64(len(v)))
+ n += mapEntrySize + 1 + sovVirtualService(uint64(mapEntrySize))
+ }
+ }
+ if len(m.Gateways) > 0 {
+ for _, s := range m.Gateways {
+ l = len(s)
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if len(m.QueryParams) > 0 {
+ for k, v := range m.QueryParams {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.Size()
+ l += 1 + sovVirtualService(uint64(l))
+ }
+ mapEntrySize := 1 + len(k) + sovVirtualService(uint64(len(k))) + l
+ n += mapEntrySize + 1 + sovVirtualService(uint64(mapEntrySize))
+ }
+ }
+ if m.IgnoreUriCase {
+ n += 2
+ }
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if len(m.WithoutHeaders) > 0 {
+ for k, v := range m.WithoutHeaders {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.Size()
+ l += 1 + sovVirtualService(uint64(l))
+ }
+ mapEntrySize := 1 + len(k) + sovVirtualService(uint64(len(k))) + l
+ n += mapEntrySize + 1 + sovVirtualService(uint64(mapEntrySize))
+ }
+ }
+ l = len(m.SourceNamespace)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *HTTPRouteDestination) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Destination != nil {
+ l = m.Destination.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.Weight != 0 {
+ n += 1 + sovVirtualService(uint64(m.Weight))
+ }
+ if m.Headers != nil {
+ l = m.Headers.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.LocalRateLimit != nil {
+ l = m.LocalRateLimit.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.GlobalRateLimit != nil {
+ l = m.GlobalRateLimit.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *HTTPGlobalRateLimit) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Domain)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.Timeout != nil {
+ l = m.Timeout.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.FailOpen {
+ n += 2
+ }
+ if len(m.Actions) > 0 {
+ for _, e := range m.Actions {
+ l = e.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RateLimitAction) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Action != nil {
+ n += m.Action.Size()
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RateLimitAction_RequestHeader_) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.RequestHeader != nil {
+ l = m.RequestHeader.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ return n
+}
+func (m *RateLimitAction_RemoteAddress) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ n += 2
+ return n
+}
+func (m *RateLimitAction_HeaderMatch_) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.HeaderMatch != nil {
+ l = m.HeaderMatch.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ return n
+}
+func (m *RateLimitAction_GenericKey_) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.GenericKey != nil {
+ l = m.GenericKey.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ return n
+}
+func (m *RateLimitAction_RequestHeader) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.HeaderName)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ l = len(m.DescriptorKey)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ l = len(m.SkipIfAbsent)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RateLimitAction_HeaderMatch) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.DescriptorValue)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ l = len(m.ExpectMatch)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ l = len(m.HeaderName)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.MatchType != nil {
+ n += m.MatchType.Size()
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RateLimitAction_HeaderMatch_Exact) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Exact)
+ n += 1 + l + sovVirtualService(uint64(l))
+ return n
+}
+func (m *RateLimitAction_HeaderMatch_Prefix) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Prefix)
+ n += 1 + l + sovVirtualService(uint64(l))
+ return n
+}
+func (m *RateLimitAction_HeaderMatch_Regex) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Regex)
+ n += 1 + l + sovVirtualService(uint64(l))
+ return n
+}
+func (m *RateLimitAction_GenericKey) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.DescriptorKey)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ l = len(m.DescriptorValue)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *HTTPLocalRateLimit) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.StatusCode != 0 {
+ n += 1 + sovVirtualService(uint64(m.StatusCode))
+ }
+ if m.TokenBucket != nil {
+ l = m.TokenBucket.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *TokenBucket) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.MaxTokens != 0 {
+ n += 1 + sovVirtualService(uint64(m.MaxTokens))
+ }
+ if m.TokensPerFill != 0 {
+ n += 1 + sovVirtualService(uint64(m.TokensPerFill))
+ }
+ if m.Interval != nil {
+ l = m.Interval.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RouteDestination) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Destination != nil {
+ l = m.Destination.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.Weight != 0 {
+ n += 1 + sovVirtualService(uint64(m.Weight))
+ }
+ if m.LocalRateLimit != nil {
+ l = m.LocalRateLimit.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.GlobalRateLimit != nil {
+ l = m.GlobalRateLimit.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *LocalRateLimit) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.TokenBucket != nil {
+ l = m.TokenBucket.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GlobalRateLimit) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Domain)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.Timeout != nil {
+ l = m.Timeout.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.FailOpen {
+ n += 2
+ }
+ if m.Descriptors != nil {
+ l = m.Descriptors.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GlobalRateLimit_RateLimitDescriptor) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Entries) > 0 {
+ for _, e := range m.Entries {
+ l = e.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GlobalRateLimit_RateLimitDescriptor_Entry) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Key)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ l = len(m.Value)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *L4MatchAttributes) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.DestinationSubnets) > 0 {
+ for _, s := range m.DestinationSubnets {
+ l = len(s)
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if m.Port != 0 {
+ n += 1 + sovVirtualService(uint64(m.Port))
+ }
+ l = len(m.SourceSubnet)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if len(m.SourceLabels) > 0 {
+ for k, v := range m.SourceLabels {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovVirtualService(uint64(len(k))) + 1 + len(v) + sovVirtualService(uint64(len(v)))
+ n += mapEntrySize + 1 + sovVirtualService(uint64(mapEntrySize))
+ }
+ }
+ if len(m.Gateways) > 0 {
+ for _, s := range m.Gateways {
+ l = len(s)
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ l = len(m.SourceNamespace)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *TLSMatchAttributes) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.SniHosts) > 0 {
+ for _, s := range m.SniHosts {
+ l = len(s)
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if len(m.DestinationSubnets) > 0 {
+ for _, s := range m.DestinationSubnets {
+ l = len(s)
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if m.Port != 0 {
+ n += 1 + sovVirtualService(uint64(m.Port))
+ }
+ if len(m.SourceLabels) > 0 {
+ for k, v := range m.SourceLabels {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovVirtualService(uint64(len(k))) + 1 + len(v) + sovVirtualService(uint64(len(v)))
+ n += mapEntrySize + 1 + sovVirtualService(uint64(mapEntrySize))
+ }
+ }
+ if len(m.Gateways) > 0 {
+ for _, s := range m.Gateways {
+ l = len(s)
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ l = len(m.SourceNamespace)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *HTTPRedirect) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Uri)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ l = len(m.Authority)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.RedirectCode != 0 {
+ n += 1 + sovVirtualService(uint64(m.RedirectCode))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *HTTPRewrite) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Uri)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ l = len(m.Authority)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StringMatch) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.MatchType != nil {
+ n += m.MatchType.Size()
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StringMatch_Exact) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Exact)
+ n += 1 + l + sovVirtualService(uint64(l))
+ return n
+}
+func (m *StringMatch_Prefix) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Prefix)
+ n += 1 + l + sovVirtualService(uint64(l))
+ return n
+}
+func (m *StringMatch_Regex) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Regex)
+ n += 1 + l + sovVirtualService(uint64(l))
+ return n
+}
+func (m *HTTPRetry) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Attempts != 0 {
+ n += 1 + sovVirtualService(uint64(m.Attempts))
+ }
+ if m.PerTryTimeout != nil {
+ l = m.PerTryTimeout.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ l = len(m.RetryOn)
+ if l > 0 {
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.RetryRemoteLocalities != nil {
+ l = m.RetryRemoteLocalities.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *CorsPolicy) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.AllowOrigin) > 0 {
+ for _, s := range m.AllowOrigin {
+ l = len(s)
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if len(m.AllowMethods) > 0 {
+ for _, s := range m.AllowMethods {
+ l = len(s)
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if len(m.AllowHeaders) > 0 {
+ for _, s := range m.AllowHeaders {
+ l = len(s)
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if len(m.ExposeHeaders) > 0 {
+ for _, s := range m.ExposeHeaders {
+ l = len(s)
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if m.MaxAge != nil {
+ l = m.MaxAge.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.AllowCredentials != nil {
+ l = m.AllowCredentials.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if len(m.AllowOrigins) > 0 {
+ for _, e := range m.AllowOrigins {
+ l = e.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *HTTPFaultInjection) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Delay != nil {
+ l = m.Delay.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.Abort != nil {
+ l = m.Abort.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *HTTPFaultInjection_Delay) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Percent != 0 {
+ n += 1 + sovVirtualService(uint64(m.Percent))
+ }
+ if m.HttpDelayType != nil {
+ n += m.HttpDelayType.Size()
+ }
+ if m.Percentage != nil {
+ l = m.Percentage.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *HTTPFaultInjection_Delay_FixedDelay) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.FixedDelay != nil {
+ l = m.FixedDelay.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ return n
+}
+func (m *HTTPFaultInjection_Delay_ExponentialDelay) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.ExponentialDelay != nil {
+ l = m.ExponentialDelay.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ return n
+}
+func (m *HTTPFaultInjection_Abort) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.ErrorType != nil {
+ n += m.ErrorType.Size()
+ }
+ if m.Percentage != nil {
+ l = m.Percentage.Size()
+ n += 1 + l + sovVirtualService(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *HTTPFaultInjection_Abort_HttpStatus) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ n += 1 + sovVirtualService(uint64(m.HttpStatus))
+ return n
+}
+func (m *HTTPFaultInjection_Abort_GrpcStatus) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.GrpcStatus)
+ n += 1 + l + sovVirtualService(uint64(l))
+ return n
+}
+func (m *HTTPFaultInjection_Abort_Http2Error) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Http2Error)
+ n += 1 + l + sovVirtualService(uint64(l))
+ return n
+}
+func (m *PortSelector) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Number != 0 {
+ n += 1 + sovVirtualService(uint64(m.Number))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Percent) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Value != 0 {
+ n += 9
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func sovVirtualService(x uint64) (n int) {
+ return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozVirtualService(x uint64) (n int) {
+ return sovVirtualService(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *VirtualService) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VirtualService: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VirtualService: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Hosts", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Hosts = append(m.Hosts, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Gateways", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Gateways = append(m.Gateways, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Http", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Http = append(m.Http, &HTTPRoute{})
+ if err := m.Http[len(m.Http)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tcp", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Tcp = append(m.Tcp, &TCPRoute{})
+ if err := m.Tcp[len(m.Tcp)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tls", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Tls = append(m.Tls, &TLSRoute{})
+ if err := m.Tls[len(m.Tls)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ExportTo", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ExportTo = append(m.ExportTo, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVirtualService(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Destination) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Destination: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Destination: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Host", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Host = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Subset", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Subset = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Port == nil {
+ m.Port = &PortSelector{}
+ }
+ if err := m.Port.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVirtualService(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *HTTPRoute) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: HTTPRoute: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: HTTPRoute: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Match", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Match = append(m.Match, &HTTPMatchRequest{})
+ if err := m.Match[len(m.Match)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Route", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Route = append(m.Route, &HTTPRouteDestination{})
+ if err := m.Route[len(m.Route)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Redirect", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Redirect == nil {
+ m.Redirect = &HTTPRedirect{}
+ }
+ if err := m.Redirect.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Rewrite", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Rewrite == nil {
+ m.Rewrite = &HTTPRewrite{}
+ }
+ if err := m.Rewrite.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Timeout", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Timeout == nil {
+ m.Timeout = &types.Duration{}
+ }
+ if err := m.Timeout.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Retries", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Retries == nil {
+ m.Retries = &HTTPRetry{}
+ }
+ if err := m.Retries.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Fault", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Fault == nil {
+ m.Fault = &HTTPFaultInjection{}
+ }
+ if err := m.Fault.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 9:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Mirror", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Mirror == nil {
+ m.Mirror = &Destination{}
+ }
+ if err := m.Mirror.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 10:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CorsPolicy", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.CorsPolicy == nil {
+ m.CorsPolicy = &CorsPolicy{}
+ }
+ if err := m.CorsPolicy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 16:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Headers", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Headers == nil {
+ m.Headers = &Headers{}
+ }
+ if err := m.Headers.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 17:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 18:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MirrorPercent", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.MirrorPercent == nil {
+ m.MirrorPercent = &types.UInt32Value{}
+ }
+ if err := m.MirrorPercent.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 19:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MirrorPercentage", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.MirrorPercentage == nil {
+ m.MirrorPercentage = &Percent{}
+ }
+ if err := m.MirrorPercentage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 20:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Delegate", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Delegate == nil {
+ m.Delegate = &Delegate{}
+ }
+ if err := m.Delegate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVirtualService(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Delegate) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Delegate: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Delegate: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Namespace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVirtualService(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Headers) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Headers: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Headers: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Request", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Request == nil {
+ m.Request = &Headers_HeaderOperations{}
+ }
+ if err := m.Request.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Response", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Response == nil {
+ m.Response = &Headers_HeaderOperations{}
+ }
+ if err := m.Response.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVirtualService(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: HeaderOperations: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: HeaderOperations: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Set", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Set == nil {
+ m.Set = make(map[string]string)
+ }
+ var mapkey string
+ var mapvalue string
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVirtualService(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.Set[mapkey] = mapvalue
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Add", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Add == nil {
+ m.Add = make(map[string]string)
+ }
+ var mapkey string
+ var mapvalue string
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVirtualService(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.Add[mapkey] = mapvalue
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Remove", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Remove = append(m.Remove, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVirtualService(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *TLSRoute) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TLSRoute: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TLSRoute: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Match", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Match = append(m.Match, &TLSMatchAttributes{})
+ if err := m.Match[len(m.Match)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Route", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Route = append(m.Route, &RouteDestination{})
+ if err := m.Route[len(m.Route)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVirtualService(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *TCPRoute) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TCPRoute: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TCPRoute: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Match", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Match = append(m.Match, &L4MatchAttributes{})
+ if err := m.Match[len(m.Match)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Route", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Route = append(m.Route, &RouteDestination{})
+ if err := m.Route[len(m.Route)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVirtualService(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
}
-func (m *VirtualService) Unmarshal(dAtA []byte) error {
+func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
@@ -6070,17 +9793,17 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error {
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
- return fmt.Errorf("proto: VirtualService: wiretype end group for non-group")
+ return fmt.Errorf("proto: HTTPMatchRequest: wiretype end group for non-group")
}
if fieldNum <= 0 {
- return fmt.Errorf("proto: VirtualService: illegal tag %d (wire type %d)", fieldNum, wire)
+ return fmt.Errorf("proto: HTTPMatchRequest: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Hosts", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Uri", wireType)
}
- var stringLen uint64
+ var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -6090,59 +9813,31 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- stringLen |= uint64(b&0x7F) << shift
+ msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
- intStringLen := int(stringLen)
- if intStringLen < 0 {
+ if msglen < 0 {
return ErrInvalidLengthVirtualService
}
- postIndex := iNdEx + intStringLen
+ postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthVirtualService
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
- m.Hosts = append(m.Hosts, string(dAtA[iNdEx:postIndex]))
- iNdEx = postIndex
- case 2:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Gateways", wireType)
- }
- var stringLen uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- stringLen |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- intStringLen := int(stringLen)
- if intStringLen < 0 {
- return ErrInvalidLengthVirtualService
- }
- postIndex := iNdEx + intStringLen
- if postIndex < 0 {
- return ErrInvalidLengthVirtualService
+ if m.Uri == nil {
+ m.Uri = &StringMatch{}
}
- if postIndex > l {
- return io.ErrUnexpectedEOF
+ if err := m.Uri.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
}
- m.Gateways = append(m.Gateways, string(dAtA[iNdEx:postIndex]))
iNdEx = postIndex
- case 3:
+ case 2:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Http", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Scheme", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@@ -6169,14 +9864,16 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- m.Http = append(m.Http, &HTTPRoute{})
- if err := m.Http[len(m.Http)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ if m.Scheme == nil {
+ m.Scheme = &StringMatch{}
+ }
+ if err := m.Scheme.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
- case 4:
+ case 3:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Tcp", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Method", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@@ -6203,14 +9900,16 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- m.Tcp = append(m.Tcp, &TCPRoute{})
- if err := m.Tcp[len(m.Tcp)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ if m.Method == nil {
+ m.Method = &StringMatch{}
+ }
+ if err := m.Method.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
- case 5:
+ case 4:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Tls", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@@ -6237,16 +9936,18 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- m.Tls = append(m.Tls, &TLSRoute{})
- if err := m.Tls[len(m.Tls)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ if m.Authority == nil {
+ m.Authority = &StringMatch{}
+ }
+ if err := m.Authority.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
- case 6:
+ case 5:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field ExportTo", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Headers", wireType)
}
- var stringLen uint64
+ var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -6256,115 +9957,126 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- stringLen |= uint64(b&0x7F) << shift
+ msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
- intStringLen := int(stringLen)
- if intStringLen < 0 {
+ if msglen < 0 {
return ErrInvalidLengthVirtualService
}
- postIndex := iNdEx + intStringLen
+ postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthVirtualService
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
- m.ExportTo = append(m.ExportTo, string(dAtA[iNdEx:postIndex]))
- iNdEx = postIndex
- default:
- iNdEx = preIndex
- skippy, err := skipVirtualService(dAtA[iNdEx:])
- if err != nil {
- return err
- }
- if skippy < 0 {
- return ErrInvalidLengthVirtualService
- }
- if (iNdEx + skippy) < 0 {
- return ErrInvalidLengthVirtualService
- }
- if (iNdEx + skippy) > l {
- return io.ErrUnexpectedEOF
- }
- m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
- iNdEx += skippy
- }
- }
-
- if iNdEx > l {
- return io.ErrUnexpectedEOF
- }
- return nil
-}
-func (m *Destination) Unmarshal(dAtA []byte) error {
- l := len(dAtA)
- iNdEx := 0
- for iNdEx < l {
- preIndex := iNdEx
- var wire uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- wire |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- fieldNum := int32(wire >> 3)
- wireType := int(wire & 0x7)
- if wireType == 4 {
- return fmt.Errorf("proto: Destination: wiretype end group for non-group")
- }
- if fieldNum <= 0 {
- return fmt.Errorf("proto: Destination: illegal tag %d (wire type %d)", fieldNum, wire)
- }
- switch fieldNum {
- case 1:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Host", wireType)
+ if m.Headers == nil {
+ m.Headers = make(map[string]*StringMatch)
}
- var stringLen uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
+ var mapkey string
+ var mapvalue *StringMatch
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
}
- b := dAtA[iNdEx]
- iNdEx++
- stringLen |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &StringMatch{}
+ if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVirtualService(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
}
}
- intStringLen := int(stringLen)
- if intStringLen < 0 {
- return ErrInvalidLengthVirtualService
- }
- postIndex := iNdEx + intStringLen
- if postIndex < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- m.Host = string(dAtA[iNdEx:postIndex])
+ m.Headers[mapkey] = mapvalue
iNdEx = postIndex
- case 2:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Subset", wireType)
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType)
}
- var stringLen uint64
+ m.Port = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -6374,27 +10086,14 @@ func (m *Destination) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- stringLen |= uint64(b&0x7F) << shift
+ m.Port |= uint32(b&0x7F) << shift
if b < 0x80 {
break
}
}
- intStringLen := int(stringLen)
- if intStringLen < 0 {
- return ErrInvalidLengthVirtualService
- }
- postIndex := iNdEx + intStringLen
- if postIndex < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- m.Subset = string(dAtA[iNdEx:postIndex])
- iNdEx = postIndex
- case 3:
+ case 7:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field SourceLabels", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@@ -6421,106 +10120,109 @@ func (m *Destination) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- if m.Port == nil {
- m.Port = &PortSelector{}
- }
- if err := m.Port.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
- iNdEx = postIndex
- default:
- iNdEx = preIndex
- skippy, err := skipVirtualService(dAtA[iNdEx:])
- if err != nil {
- return err
- }
- if skippy < 0 {
- return ErrInvalidLengthVirtualService
- }
- if (iNdEx + skippy) < 0 {
- return ErrInvalidLengthVirtualService
- }
- if (iNdEx + skippy) > l {
- return io.ErrUnexpectedEOF
- }
- m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
- iNdEx += skippy
- }
- }
-
- if iNdEx > l {
- return io.ErrUnexpectedEOF
- }
- return nil
-}
-func (m *HTTPRoute) Unmarshal(dAtA []byte) error {
- l := len(dAtA)
- iNdEx := 0
- for iNdEx < l {
- preIndex := iNdEx
- var wire uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- wire |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- fieldNum := int32(wire >> 3)
- wireType := int(wire & 0x7)
- if wireType == 4 {
- return fmt.Errorf("proto: HTTPRoute: wiretype end group for non-group")
- }
- if fieldNum <= 0 {
- return fmt.Errorf("proto: HTTPRoute: illegal tag %d (wire type %d)", fieldNum, wire)
- }
- switch fieldNum {
- case 1:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Match", wireType)
+ if m.SourceLabels == nil {
+ m.SourceLabels = make(map[string]string)
}
- var msglen int
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
+ var mapkey string
+ var mapvalue string
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
}
- b := dAtA[iNdEx]
- iNdEx++
- msglen |= int(b&0x7F) << shift
- if b < 0x80 {
- break
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVirtualService(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
}
}
- if msglen < 0 {
- return ErrInvalidLengthVirtualService
- }
- postIndex := iNdEx + msglen
- if postIndex < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- m.Match = append(m.Match, &HTTPMatchRequest{})
- if err := m.Match[len(m.Match)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
+ m.SourceLabels[mapkey] = mapvalue
iNdEx = postIndex
- case 2:
+ case 8:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Route", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Gateways", wireType)
}
- var msglen int
+ var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -6530,29 +10232,27 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- msglen |= int(b&0x7F) << shift
+ stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
- if msglen < 0 {
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
return ErrInvalidLengthVirtualService
}
- postIndex := iNdEx + msglen
+ postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthVirtualService
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
- m.Route = append(m.Route, &HTTPRouteDestination{})
- if err := m.Route[len(m.Route)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
+ m.Gateways = append(m.Gateways, string(dAtA[iNdEx:postIndex]))
iNdEx = postIndex
- case 3:
+ case 9:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Redirect", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field QueryParams", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@@ -6579,18 +10279,111 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- if m.Redirect == nil {
- m.Redirect = &HTTPRedirect{}
+ if m.QueryParams == nil {
+ m.QueryParams = make(map[string]*StringMatch)
}
- if err := m.Redirect.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
+ var mapkey string
+ var mapvalue *StringMatch
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &StringMatch{}
+ if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVirtualService(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
}
+ m.QueryParams[mapkey] = mapvalue
iNdEx = postIndex
- case 4:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Rewrite", wireType)
+ case 10:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field IgnoreUriCase", wireType)
}
- var msglen int
+ var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -6600,33 +10393,17 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- msglen |= int(b&0x7F) << shift
+ v |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
- if msglen < 0 {
- return ErrInvalidLengthVirtualService
- }
- postIndex := iNdEx + msglen
- if postIndex < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- if m.Rewrite == nil {
- m.Rewrite = &HTTPRewrite{}
- }
- if err := m.Rewrite.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
- iNdEx = postIndex
- case 6:
+ m.IgnoreUriCase = bool(v != 0)
+ case 11:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Timeout", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
}
- var msglen int
+ var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -6636,31 +10413,27 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- msglen |= int(b&0x7F) << shift
+ stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
- if msglen < 0 {
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
return ErrInvalidLengthVirtualService
}
- postIndex := iNdEx + msglen
+ postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthVirtualService
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
- if m.Timeout == nil {
- m.Timeout = &types.Duration{}
- }
- if err := m.Timeout.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
+ m.Name = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
- case 7:
+ case 12:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Retries", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field WithoutHeaders", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@@ -6687,54 +10460,111 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- if m.Retries == nil {
- m.Retries = &HTTPRetry{}
- }
- if err := m.Retries.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
- iNdEx = postIndex
- case 8:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Fault", wireType)
+ if m.WithoutHeaders == nil {
+ m.WithoutHeaders = make(map[string]*StringMatch)
}
- var msglen int
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
+ var mapkey string
+ var mapvalue *StringMatch
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
}
- b := dAtA[iNdEx]
- iNdEx++
- msglen |= int(b&0x7F) << shift
- if b < 0x80 {
- break
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &StringMatch{}
+ if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVirtualService(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
}
}
- if msglen < 0 {
- return ErrInvalidLengthVirtualService
- }
- postIndex := iNdEx + msglen
- if postIndex < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- if m.Fault == nil {
- m.Fault = &HTTPFaultInjection{}
- }
- if err := m.Fault.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
+ m.WithoutHeaders[mapkey] = mapvalue
iNdEx = postIndex
- case 9:
+ case 13:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Mirror", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field SourceNamespace", wireType)
}
- var msglen int
+ var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -6744,67 +10574,81 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- msglen |= int(b&0x7F) << shift
+ stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
- if msglen < 0 {
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
return ErrInvalidLengthVirtualService
}
- postIndex := iNdEx + msglen
+ postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthVirtualService
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
- if m.Mirror == nil {
- m.Mirror = &Destination{}
- }
- if err := m.Mirror.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
+ m.SourceNamespace = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
- case 10:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field CorsPolicy", wireType)
- }
- var msglen int
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- msglen |= int(b&0x7F) << shift
- if b < 0x80 {
- break
- }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVirtualService(dAtA[iNdEx:])
+ if err != nil {
+ return err
}
- if msglen < 0 {
+ if skippy < 0 {
return ErrInvalidLengthVirtualService
}
- postIndex := iNdEx + msglen
- if postIndex < 0 {
+ if (iNdEx + skippy) < 0 {
return ErrInvalidLengthVirtualService
}
- if postIndex > l {
+ if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
- if m.CorsPolicy == nil {
- m.CorsPolicy = &CorsPolicy{}
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
}
- if err := m.CorsPolicy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
}
- iNdEx = postIndex
- case 16:
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: HTTPRouteDestination: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: HTTPRouteDestination: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Headers", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Destination", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@@ -6831,18 +10675,18 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- if m.Headers == nil {
- m.Headers = &Headers{}
+ if m.Destination == nil {
+ m.Destination = &Destination{}
}
- if err := m.Headers.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ if err := m.Destination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
- case 17:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Weight", wireType)
}
- var stringLen uint64
+ m.Weight = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -6852,27 +10696,14 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- stringLen |= uint64(b&0x7F) << shift
+ m.Weight |= int32(b&0x7F) << shift
if b < 0x80 {
break
}
}
- intStringLen := int(stringLen)
- if intStringLen < 0 {
- return ErrInvalidLengthVirtualService
- }
- postIndex := iNdEx + intStringLen
- if postIndex < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- m.Name = string(dAtA[iNdEx:postIndex])
- iNdEx = postIndex
- case 18:
+ case 7:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field MirrorPercent", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Headers", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@@ -6899,16 +10730,16 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- if m.MirrorPercent == nil {
- m.MirrorPercent = &types.UInt32Value{}
+ if m.Headers == nil {
+ m.Headers = &Headers{}
}
- if err := m.MirrorPercent.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ if err := m.Headers.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
- case 19:
+ case 8:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field MirrorPercentage", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field LocalRateLimit", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@@ -6935,16 +10766,16 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- if m.MirrorPercentage == nil {
- m.MirrorPercentage = &Percent{}
+ if m.LocalRateLimit == nil {
+ m.LocalRateLimit = &HTTPLocalRateLimit{}
}
- if err := m.MirrorPercentage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ if err := m.LocalRateLimit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
- case 20:
+ case 9:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Delegate", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field GlobalRateLimit", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@@ -6971,10 +10802,10 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- if m.Delegate == nil {
- m.Delegate = &Delegate{}
+ if m.GlobalRateLimit == nil {
+ m.GlobalRateLimit = &HTTPGlobalRateLimit{}
}
- if err := m.Delegate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ if err := m.GlobalRateLimit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
@@ -7003,7 +10834,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error {
}
return nil
}
-func (m *Delegate) Unmarshal(dAtA []byte) error {
+func (m *HTTPGlobalRateLimit) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
@@ -7026,15 +10857,15 @@ func (m *Delegate) Unmarshal(dAtA []byte) error {
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
- return fmt.Errorf("proto: Delegate: wiretype end group for non-group")
+ return fmt.Errorf("proto: HTTPGlobalRateLimit: wiretype end group for non-group")
}
if fieldNum <= 0 {
- return fmt.Errorf("proto: Delegate: illegal tag %d (wire type %d)", fieldNum, wire)
+ return fmt.Errorf("proto: HTTPGlobalRateLimit: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Domain", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
@@ -7062,13 +10893,13 @@ func (m *Delegate) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- m.Name = string(dAtA[iNdEx:postIndex])
+ m.Domain = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Timeout", wireType)
}
- var stringLen uint64
+ var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -7078,83 +10909,33 @@ func (m *Delegate) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- stringLen |= uint64(b&0x7F) << shift
+ msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
- intStringLen := int(stringLen)
- if intStringLen < 0 {
+ if msglen < 0 {
return ErrInvalidLengthVirtualService
}
- postIndex := iNdEx + intStringLen
+ postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthVirtualService
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
- m.Namespace = string(dAtA[iNdEx:postIndex])
- iNdEx = postIndex
- default:
- iNdEx = preIndex
- skippy, err := skipVirtualService(dAtA[iNdEx:])
- if err != nil {
- return err
- }
- if skippy < 0 {
- return ErrInvalidLengthVirtualService
- }
- if (iNdEx + skippy) < 0 {
- return ErrInvalidLengthVirtualService
- }
- if (iNdEx + skippy) > l {
- return io.ErrUnexpectedEOF
- }
- m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
- iNdEx += skippy
- }
- }
-
- if iNdEx > l {
- return io.ErrUnexpectedEOF
- }
- return nil
-}
-func (m *Headers) Unmarshal(dAtA []byte) error {
- l := len(dAtA)
- iNdEx := 0
- for iNdEx < l {
- preIndex := iNdEx
- var wire uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
+ if m.Timeout == nil {
+ m.Timeout = &types.Duration{}
}
- b := dAtA[iNdEx]
- iNdEx++
- wire |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
+ if err := m.Timeout.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
}
- }
- fieldNum := int32(wire >> 3)
- wireType := int(wire & 0x7)
- if wireType == 4 {
- return fmt.Errorf("proto: Headers: wiretype end group for non-group")
- }
- if fieldNum <= 0 {
- return fmt.Errorf("proto: Headers: illegal tag %d (wire type %d)", fieldNum, wire)
- }
- switch fieldNum {
- case 1:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Request", wireType)
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field FailOpen", wireType)
}
- var msglen int
+ var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -7164,31 +10945,15 @@ func (m *Headers) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- msglen |= int(b&0x7F) << shift
+ v |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
- if msglen < 0 {
- return ErrInvalidLengthVirtualService
- }
- postIndex := iNdEx + msglen
- if postIndex < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- if m.Request == nil {
- m.Request = &Headers_HeaderOperations{}
- }
- if err := m.Request.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
- iNdEx = postIndex
- case 2:
+ m.FailOpen = bool(v != 0)
+ case 4:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Response", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Actions", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@@ -7215,10 +10980,8 @@ func (m *Headers) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- if m.Response == nil {
- m.Response = &Headers_HeaderOperations{}
- }
- if err := m.Response.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ m.Actions = append(m.Actions, &RateLimitAction{})
+ if err := m.Actions[len(m.Actions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
@@ -7247,7 +11010,7 @@ func (m *Headers) Unmarshal(dAtA []byte) error {
}
return nil
}
-func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error {
+func (m *RateLimitAction) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
@@ -7270,142 +11033,15 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error {
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
- return fmt.Errorf("proto: HeaderOperations: wiretype end group for non-group")
+ return fmt.Errorf("proto: RateLimitAction: wiretype end group for non-group")
}
if fieldNum <= 0 {
- return fmt.Errorf("proto: HeaderOperations: illegal tag %d (wire type %d)", fieldNum, wire)
+ return fmt.Errorf("proto: RateLimitAction: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Set", wireType)
- }
- var msglen int
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- msglen |= int(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- if msglen < 0 {
- return ErrInvalidLengthVirtualService
- }
- postIndex := iNdEx + msglen
- if postIndex < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- if m.Set == nil {
- m.Set = make(map[string]string)
- }
- var mapkey string
- var mapvalue string
- for iNdEx < postIndex {
- entryPreIndex := iNdEx
- var wire uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- wire |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- fieldNum := int32(wire >> 3)
- if fieldNum == 1 {
- var stringLenmapkey uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- stringLenmapkey |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- intStringLenmapkey := int(stringLenmapkey)
- if intStringLenmapkey < 0 {
- return ErrInvalidLengthVirtualService
- }
- postStringIndexmapkey := iNdEx + intStringLenmapkey
- if postStringIndexmapkey < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postStringIndexmapkey > l {
- return io.ErrUnexpectedEOF
- }
- mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
- iNdEx = postStringIndexmapkey
- } else if fieldNum == 2 {
- var stringLenmapvalue uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- stringLenmapvalue |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- intStringLenmapvalue := int(stringLenmapvalue)
- if intStringLenmapvalue < 0 {
- return ErrInvalidLengthVirtualService
- }
- postStringIndexmapvalue := iNdEx + intStringLenmapvalue
- if postStringIndexmapvalue < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postStringIndexmapvalue > l {
- return io.ErrUnexpectedEOF
- }
- mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
- iNdEx = postStringIndexmapvalue
- } else {
- iNdEx = entryPreIndex
- skippy, err := skipVirtualService(dAtA[iNdEx:])
- if err != nil {
- return err
- }
- if skippy < 0 {
- return ErrInvalidLengthVirtualService
- }
- if (iNdEx + skippy) > postIndex {
- return io.ErrUnexpectedEOF
- }
- iNdEx += skippy
- }
- }
- m.Set[mapkey] = mapvalue
- iNdEx = postIndex
- case 2:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Add", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field RequestHeader", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@@ -7432,109 +11068,38 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- if m.Add == nil {
- m.Add = make(map[string]string)
- }
- var mapkey string
- var mapvalue string
- for iNdEx < postIndex {
- entryPreIndex := iNdEx
- var wire uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- wire |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- fieldNum := int32(wire >> 3)
- if fieldNum == 1 {
- var stringLenmapkey uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- stringLenmapkey |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- intStringLenmapkey := int(stringLenmapkey)
- if intStringLenmapkey < 0 {
- return ErrInvalidLengthVirtualService
- }
- postStringIndexmapkey := iNdEx + intStringLenmapkey
- if postStringIndexmapkey < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postStringIndexmapkey > l {
- return io.ErrUnexpectedEOF
- }
- mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
- iNdEx = postStringIndexmapkey
- } else if fieldNum == 2 {
- var stringLenmapvalue uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- stringLenmapvalue |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- intStringLenmapvalue := int(stringLenmapvalue)
- if intStringLenmapvalue < 0 {
- return ErrInvalidLengthVirtualService
- }
- postStringIndexmapvalue := iNdEx + intStringLenmapvalue
- if postStringIndexmapvalue < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postStringIndexmapvalue > l {
- return io.ErrUnexpectedEOF
- }
- mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
- iNdEx = postStringIndexmapvalue
- } else {
- iNdEx = entryPreIndex
- skippy, err := skipVirtualService(dAtA[iNdEx:])
- if err != nil {
- return err
- }
- if skippy < 0 {
- return ErrInvalidLengthVirtualService
- }
- if (iNdEx + skippy) > postIndex {
- return io.ErrUnexpectedEOF
- }
- iNdEx += skippy
- }
+ v := &RateLimitAction_RequestHeader{}
+ if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
}
- m.Add[mapkey] = mapvalue
+ m.Action = &RateLimitAction_RequestHeader_{v}
iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RemoteAddress", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ b := bool(v != 0)
+ m.Action = &RateLimitAction_RemoteAddress{b}
case 3:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Remove", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field HeaderMatch", wireType)
}
- var stringLen uint64
+ var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -7544,23 +11109,61 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- stringLen |= uint64(b&0x7F) << shift
+ msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
- intStringLen := int(stringLen)
- if intStringLen < 0 {
+ if msglen < 0 {
return ErrInvalidLengthVirtualService
}
- postIndex := iNdEx + intStringLen
+ postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthVirtualService
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
- m.Remove = append(m.Remove, string(dAtA[iNdEx:postIndex]))
+ v := &RateLimitAction_HeaderMatch{}
+ if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ m.Action = &RateLimitAction_HeaderMatch_{v}
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field GenericKey", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ v := &RateLimitAction_GenericKey{}
+ if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ m.Action = &RateLimitAction_GenericKey_{v}
iNdEx = postIndex
default:
iNdEx = preIndex
@@ -7587,7 +11190,7 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error {
}
return nil
}
-func (m *TLSRoute) Unmarshal(dAtA []byte) error {
+func (m *RateLimitAction_RequestHeader) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
@@ -7610,17 +11213,17 @@ func (m *TLSRoute) Unmarshal(dAtA []byte) error {
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
- return fmt.Errorf("proto: TLSRoute: wiretype end group for non-group")
+ return fmt.Errorf("proto: RequestHeader: wiretype end group for non-group")
}
if fieldNum <= 0 {
- return fmt.Errorf("proto: TLSRoute: illegal tag %d (wire type %d)", fieldNum, wire)
+ return fmt.Errorf("proto: RequestHeader: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Match", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field HeaderName", wireType)
}
- var msglen int
+ var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -7630,31 +11233,29 @@ func (m *TLSRoute) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- msglen |= int(b&0x7F) << shift
+ stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
- if msglen < 0 {
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
return ErrInvalidLengthVirtualService
}
- postIndex := iNdEx + msglen
+ postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthVirtualService
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
- m.Match = append(m.Match, &TLSMatchAttributes{})
- if err := m.Match[len(m.Match)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
+ m.HeaderName = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Route", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field DescriptorKey", wireType)
}
- var msglen int
+ var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -7664,25 +11265,55 @@ func (m *TLSRoute) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- msglen |= int(b&0x7F) << shift
+ stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
- if msglen < 0 {
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
return ErrInvalidLengthVirtualService
}
- postIndex := iNdEx + msglen
+ postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthVirtualService
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
- m.Route = append(m.Route, &RouteDestination{})
- if err := m.Route[len(m.Route)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
+ m.DescriptorKey = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SkipIfAbsent", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
}
+ m.SkipIfAbsent = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
@@ -7709,7 +11340,7 @@ func (m *TLSRoute) Unmarshal(dAtA []byte) error {
}
return nil
}
-func (m *TCPRoute) Unmarshal(dAtA []byte) error {
+func (m *RateLimitAction_HeaderMatch) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
@@ -7732,17 +11363,17 @@ func (m *TCPRoute) Unmarshal(dAtA []byte) error {
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
- return fmt.Errorf("proto: TCPRoute: wiretype end group for non-group")
+ return fmt.Errorf("proto: HeaderMatch: wiretype end group for non-group")
}
if fieldNum <= 0 {
- return fmt.Errorf("proto: TCPRoute: illegal tag %d (wire type %d)", fieldNum, wire)
+ return fmt.Errorf("proto: HeaderMatch: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Match", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field DescriptorValue", wireType)
}
- var msglen int
+ var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -7752,31 +11383,157 @@ func (m *TCPRoute) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- msglen |= int(b&0x7F) << shift
+ stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
- if msglen < 0 {
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.DescriptorValue = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ExpectMatch", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ExpectMatch = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field HeaderName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.HeaderName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Exact", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.MatchType = &RateLimitAction_HeaderMatch_Exact{string(dAtA[iNdEx:postIndex])}
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Prefix", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
return ErrInvalidLengthVirtualService
}
- postIndex := iNdEx + msglen
+ postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthVirtualService
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
- m.Match = append(m.Match, &L4MatchAttributes{})
- if err := m.Match[len(m.Match)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
+ m.MatchType = &RateLimitAction_HeaderMatch_Prefix{string(dAtA[iNdEx:postIndex])}
iNdEx = postIndex
- case 2:
+ case 6:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Route", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Regex", wireType)
}
- var msglen int
+ var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -7786,25 +11543,23 @@ func (m *TCPRoute) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- msglen |= int(b&0x7F) << shift
+ stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
- if msglen < 0 {
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
return ErrInvalidLengthVirtualService
}
- postIndex := iNdEx + msglen
+ postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthVirtualService
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
- m.Route = append(m.Route, &RouteDestination{})
- if err := m.Route[len(m.Route)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
+ m.MatchType = &RateLimitAction_HeaderMatch_Regex{string(dAtA[iNdEx:postIndex])}
iNdEx = postIndex
default:
iNdEx = preIndex
@@ -7831,7 +11586,7 @@ func (m *TCPRoute) Unmarshal(dAtA []byte) error {
}
return nil
}
-func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error {
+func (m *RateLimitAction_GenericKey) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
@@ -7854,17 +11609,17 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error {
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
- return fmt.Errorf("proto: HTTPMatchRequest: wiretype end group for non-group")
+ return fmt.Errorf("proto: GenericKey: wiretype end group for non-group")
}
if fieldNum <= 0 {
- return fmt.Errorf("proto: HTTPMatchRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ return fmt.Errorf("proto: GenericKey: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Uri", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field DescriptorKey", wireType)
}
- var msglen int
+ var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -7874,33 +11629,29 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- msglen |= int(b&0x7F) << shift
+ stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
- if msglen < 0 {
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
return ErrInvalidLengthVirtualService
}
- postIndex := iNdEx + msglen
+ postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthVirtualService
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
- if m.Uri == nil {
- m.Uri = &StringMatch{}
- }
- if err := m.Uri.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
+ m.DescriptorKey = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Scheme", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field DescriptorValue", wireType)
}
- var msglen int
+ var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -7910,69 +11661,83 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- msglen |= int(b&0x7F) << shift
+ stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
- if msglen < 0 {
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
return ErrInvalidLengthVirtualService
}
- postIndex := iNdEx + msglen
+ postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthVirtualService
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
- if m.Scheme == nil {
- m.Scheme = &StringMatch{}
- }
- if err := m.Scheme.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
+ m.DescriptorValue = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
- case 3:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Method", wireType)
- }
- var msglen int
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- msglen |= int(b&0x7F) << shift
- if b < 0x80 {
- break
- }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVirtualService(dAtA[iNdEx:])
+ if err != nil {
+ return err
}
- if msglen < 0 {
+ if skippy < 0 {
return ErrInvalidLengthVirtualService
}
- postIndex := iNdEx + msglen
- if postIndex < 0 {
+ if (iNdEx + skippy) < 0 {
return ErrInvalidLengthVirtualService
}
- if postIndex > l {
+ if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
- if m.Method == nil {
- m.Method = &StringMatch{}
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *HTTPLocalRateLimit) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
}
- if err := m.Method.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
}
- iNdEx = postIndex
- case 4:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType)
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
}
- var msglen int
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: HTTPLocalRateLimit: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: HTTPLocalRateLimit: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field StatusCode", wireType)
+ }
+ m.StatusCode = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -7982,31 +11747,14 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- msglen |= int(b&0x7F) << shift
+ m.StatusCode |= int32(b&0x7F) << shift
if b < 0x80 {
break
}
}
- if msglen < 0 {
- return ErrInvalidLengthVirtualService
- }
- postIndex := iNdEx + msglen
- if postIndex < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- if m.Authority == nil {
- m.Authority = &StringMatch{}
- }
- if err := m.Authority.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
- iNdEx = postIndex
- case 5:
+ case 2:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Headers", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field TokenBucket", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@@ -8030,114 +11778,75 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error {
if postIndex < 0 {
return ErrInvalidLengthVirtualService
}
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- if m.Headers == nil {
- m.Headers = make(map[string]*StringMatch)
- }
- var mapkey string
- var mapvalue *StringMatch
- for iNdEx < postIndex {
- entryPreIndex := iNdEx
- var wire uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- wire |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- fieldNum := int32(wire >> 3)
- if fieldNum == 1 {
- var stringLenmapkey uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- stringLenmapkey |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- intStringLenmapkey := int(stringLenmapkey)
- if intStringLenmapkey < 0 {
- return ErrInvalidLengthVirtualService
- }
- postStringIndexmapkey := iNdEx + intStringLenmapkey
- if postStringIndexmapkey < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postStringIndexmapkey > l {
- return io.ErrUnexpectedEOF
- }
- mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
- iNdEx = postStringIndexmapkey
- } else if fieldNum == 2 {
- var mapmsglen int
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- mapmsglen |= int(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- if mapmsglen < 0 {
- return ErrInvalidLengthVirtualService
- }
- postmsgIndex := iNdEx + mapmsglen
- if postmsgIndex < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postmsgIndex > l {
- return io.ErrUnexpectedEOF
- }
- mapvalue = &StringMatch{}
- if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
- return err
- }
- iNdEx = postmsgIndex
- } else {
- iNdEx = entryPreIndex
- skippy, err := skipVirtualService(dAtA[iNdEx:])
- if err != nil {
- return err
- }
- if skippy < 0 {
- return ErrInvalidLengthVirtualService
- }
- if (iNdEx + skippy) > postIndex {
- return io.ErrUnexpectedEOF
- }
- iNdEx += skippy
- }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TokenBucket == nil {
+ m.TokenBucket = &TokenBucket{}
+ }
+ if err := m.TokenBucket.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
}
- m.Headers[mapkey] = mapvalue
iNdEx = postIndex
- case 6:
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVirtualService(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *TokenBucket) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TokenBucket: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TokenBucket: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
if wireType != 0 {
- return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field MaxTokens", wireType)
}
- m.Port = 0
+ m.MaxTokens = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -8147,14 +11856,33 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- m.Port |= uint32(b&0x7F) << shift
+ m.MaxTokens |= uint32(b&0x7F) << shift
if b < 0x80 {
break
}
}
- case 7:
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TokensPerFill", wireType)
+ }
+ m.TokensPerFill = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TokensPerFill |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field SourceLabels", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Interval", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@@ -8181,109 +11909,127 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- if m.SourceLabels == nil {
- m.SourceLabels = make(map[string]string)
+ if m.Interval == nil {
+ m.Interval = &types.Duration{}
}
- var mapkey string
- var mapvalue string
- for iNdEx < postIndex {
- entryPreIndex := iNdEx
- var wire uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- wire |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
- }
+ if err := m.Interval.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVirtualService(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RouteDestination) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RouteDestination: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RouteDestination: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Destination", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
}
- fieldNum := int32(wire >> 3)
- if fieldNum == 1 {
- var stringLenmapkey uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- stringLenmapkey |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- intStringLenmapkey := int(stringLenmapkey)
- if intStringLenmapkey < 0 {
- return ErrInvalidLengthVirtualService
- }
- postStringIndexmapkey := iNdEx + intStringLenmapkey
- if postStringIndexmapkey < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postStringIndexmapkey > l {
- return io.ErrUnexpectedEOF
- }
- mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
- iNdEx = postStringIndexmapkey
- } else if fieldNum == 2 {
- var stringLenmapvalue uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- stringLenmapvalue |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- intStringLenmapvalue := int(stringLenmapvalue)
- if intStringLenmapvalue < 0 {
- return ErrInvalidLengthVirtualService
- }
- postStringIndexmapvalue := iNdEx + intStringLenmapvalue
- if postStringIndexmapvalue < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postStringIndexmapvalue > l {
- return io.ErrUnexpectedEOF
- }
- mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
- iNdEx = postStringIndexmapvalue
- } else {
- iNdEx = entryPreIndex
- skippy, err := skipVirtualService(dAtA[iNdEx:])
- if err != nil {
- return err
- }
- if skippy < 0 {
- return ErrInvalidLengthVirtualService
- }
- if (iNdEx + skippy) > postIndex {
- return io.ErrUnexpectedEOF
- }
- iNdEx += skippy
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
}
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Destination == nil {
+ m.Destination = &Destination{}
+ }
+ if err := m.Destination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
}
- m.SourceLabels[mapkey] = mapvalue
iNdEx = postIndex
- case 8:
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Weight", wireType)
+ }
+ m.Weight = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Weight |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Gateways", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field LocalRateLimit", wireType)
}
- var stringLen uint64
+ var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -8293,27 +12039,31 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- stringLen |= uint64(b&0x7F) << shift
+ msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
- intStringLen := int(stringLen)
- if intStringLen < 0 {
+ if msglen < 0 {
return ErrInvalidLengthVirtualService
}
- postIndex := iNdEx + intStringLen
+ postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthVirtualService
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
- m.Gateways = append(m.Gateways, string(dAtA[iNdEx:postIndex]))
+ if m.LocalRateLimit == nil {
+ m.LocalRateLimit = &LocalRateLimit{}
+ }
+ if err := m.LocalRateLimit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
iNdEx = postIndex
- case 9:
+ case 4:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field QueryParams", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field GlobalRateLimit", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@@ -8340,111 +12090,72 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- if m.QueryParams == nil {
- m.QueryParams = make(map[string]*StringMatch)
+ if m.GlobalRateLimit == nil {
+ m.GlobalRateLimit = &GlobalRateLimit{}
}
- var mapkey string
- var mapvalue *StringMatch
- for iNdEx < postIndex {
- entryPreIndex := iNdEx
- var wire uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- wire |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- fieldNum := int32(wire >> 3)
- if fieldNum == 1 {
- var stringLenmapkey uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- stringLenmapkey |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- intStringLenmapkey := int(stringLenmapkey)
- if intStringLenmapkey < 0 {
- return ErrInvalidLengthVirtualService
- }
- postStringIndexmapkey := iNdEx + intStringLenmapkey
- if postStringIndexmapkey < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postStringIndexmapkey > l {
- return io.ErrUnexpectedEOF
- }
- mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
- iNdEx = postStringIndexmapkey
- } else if fieldNum == 2 {
- var mapmsglen int
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- mapmsglen |= int(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- if mapmsglen < 0 {
- return ErrInvalidLengthVirtualService
- }
- postmsgIndex := iNdEx + mapmsglen
- if postmsgIndex < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postmsgIndex > l {
- return io.ErrUnexpectedEOF
- }
- mapvalue = &StringMatch{}
- if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
- return err
- }
- iNdEx = postmsgIndex
- } else {
- iNdEx = entryPreIndex
- skippy, err := skipVirtualService(dAtA[iNdEx:])
- if err != nil {
- return err
- }
- if skippy < 0 {
- return ErrInvalidLengthVirtualService
- }
- if (iNdEx + skippy) > postIndex {
- return io.ErrUnexpectedEOF
- }
- iNdEx += skippy
- }
+ if err := m.GlobalRateLimit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
}
- m.QueryParams[mapkey] = mapvalue
iNdEx = postIndex
- case 10:
- if wireType != 0 {
- return fmt.Errorf("proto: wrong wireType = %d for field IgnoreUriCase", wireType)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVirtualService(dAtA[iNdEx:])
+ if err != nil {
+ return err
}
- var v int
+ if skippy < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *LocalRateLimit) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: LocalRateLimit: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: LocalRateLimit: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TokenBucket", wireType)
+ }
+ var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -8454,15 +12165,85 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- v |= int(b&0x7F) << shift
+ msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
- m.IgnoreUriCase = bool(v != 0)
- case 11:
+ if msglen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TokenBucket == nil {
+ m.TokenBucket = &TokenBucket{}
+ }
+ if err := m.TokenBucket.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVirtualService(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GlobalRateLimit) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GlobalRateLimit: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GlobalRateLimit: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Domain", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
@@ -8490,11 +12271,11 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- m.Name = string(dAtA[iNdEx:postIndex])
+ m.Domain = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
- case 12:
+ case 2:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field WithoutHeaders", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Timeout", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@@ -8521,111 +12302,38 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- if m.WithoutHeaders == nil {
- m.WithoutHeaders = make(map[string]*StringMatch)
+ if m.Timeout == nil {
+ m.Timeout = &types.Duration{}
}
- var mapkey string
- var mapvalue *StringMatch
- for iNdEx < postIndex {
- entryPreIndex := iNdEx
- var wire uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- wire |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
- }
+ if err := m.Timeout.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field FailOpen", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVirtualService
}
- fieldNum := int32(wire >> 3)
- if fieldNum == 1 {
- var stringLenmapkey uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- stringLenmapkey |= uint64(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- intStringLenmapkey := int(stringLenmapkey)
- if intStringLenmapkey < 0 {
- return ErrInvalidLengthVirtualService
- }
- postStringIndexmapkey := iNdEx + intStringLenmapkey
- if postStringIndexmapkey < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postStringIndexmapkey > l {
- return io.ErrUnexpectedEOF
- }
- mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
- iNdEx = postStringIndexmapkey
- } else if fieldNum == 2 {
- var mapmsglen int
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- mapmsglen |= int(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- if mapmsglen < 0 {
- return ErrInvalidLengthVirtualService
- }
- postmsgIndex := iNdEx + mapmsglen
- if postmsgIndex < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postmsgIndex > l {
- return io.ErrUnexpectedEOF
- }
- mapvalue = &StringMatch{}
- if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
- return err
- }
- iNdEx = postmsgIndex
- } else {
- iNdEx = entryPreIndex
- skippy, err := skipVirtualService(dAtA[iNdEx:])
- if err != nil {
- return err
- }
- if skippy < 0 {
- return ErrInvalidLengthVirtualService
- }
- if (iNdEx + skippy) > postIndex {
- return io.ErrUnexpectedEOF
- }
- iNdEx += skippy
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
}
}
- m.WithoutHeaders[mapkey] = mapvalue
- iNdEx = postIndex
- case 13:
+ m.FailOpen = bool(v != 0)
+ case 4:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field SourceNamespace", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Descriptors", wireType)
}
- var stringLen uint64
+ var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -8635,23 +12343,27 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- stringLen |= uint64(b&0x7F) << shift
+ msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
- intStringLen := int(stringLen)
- if intStringLen < 0 {
+ if msglen < 0 {
return ErrInvalidLengthVirtualService
}
- postIndex := iNdEx + intStringLen
+ postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthVirtualService
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
- m.SourceNamespace = string(dAtA[iNdEx:postIndex])
+ if m.Descriptors == nil {
+ m.Descriptors = &GlobalRateLimit_RateLimitDescriptor{}
+ }
+ if err := m.Descriptors.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
iNdEx = postIndex
default:
iNdEx = preIndex
@@ -8678,7 +12390,7 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error {
}
return nil
}
-func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error {
+func (m *GlobalRateLimit_RateLimitDescriptor) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
@@ -8701,70 +12413,15 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error {
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
- return fmt.Errorf("proto: HTTPRouteDestination: wiretype end group for non-group")
+ return fmt.Errorf("proto: RateLimitDescriptor: wiretype end group for non-group")
}
if fieldNum <= 0 {
- return fmt.Errorf("proto: HTTPRouteDestination: illegal tag %d (wire type %d)", fieldNum, wire)
+ return fmt.Errorf("proto: RateLimitDescriptor: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Destination", wireType)
- }
- var msglen int
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- msglen |= int(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- if msglen < 0 {
- return ErrInvalidLengthVirtualService
- }
- postIndex := iNdEx + msglen
- if postIndex < 0 {
- return ErrInvalidLengthVirtualService
- }
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- if m.Destination == nil {
- m.Destination = &Destination{}
- }
- if err := m.Destination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
- iNdEx = postIndex
- case 2:
- if wireType != 0 {
- return fmt.Errorf("proto: wrong wireType = %d for field Weight", wireType)
- }
- m.Weight = 0
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowVirtualService
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- m.Weight |= int32(b&0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- case 7:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Headers", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Entries", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@@ -8791,10 +12448,8 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
- if m.Headers == nil {
- m.Headers = &Headers{}
- }
- if err := m.Headers.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ m.Entries = append(m.Entries, &GlobalRateLimit_RateLimitDescriptor_Entry{})
+ if err := m.Entries[len(m.Entries)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
@@ -8823,7 +12478,7 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error {
}
return nil
}
-func (m *RouteDestination) Unmarshal(dAtA []byte) error {
+func (m *GlobalRateLimit_RateLimitDescriptor_Entry) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
@@ -8846,17 +12501,17 @@ func (m *RouteDestination) Unmarshal(dAtA []byte) error {
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
- return fmt.Errorf("proto: RouteDestination: wiretype end group for non-group")
+ return fmt.Errorf("proto: Entry: wiretype end group for non-group")
}
if fieldNum <= 0 {
- return fmt.Errorf("proto: RouteDestination: illegal tag %d (wire type %d)", fieldNum, wire)
+ return fmt.Errorf("proto: Entry: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field Destination", wireType)
+ return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType)
}
- var msglen int
+ var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -8866,33 +12521,29 @@ func (m *RouteDestination) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- msglen |= int(b&0x7F) << shift
+ stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
- if msglen < 0 {
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
return ErrInvalidLengthVirtualService
}
- postIndex := iNdEx + msglen
+ postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthVirtualService
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
- if m.Destination == nil {
- m.Destination = &Destination{}
- }
- if err := m.Destination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
- return err
- }
+ m.Key = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
- if wireType != 0 {
- return fmt.Errorf("proto: wrong wireType = %d for field Weight", wireType)
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
}
- m.Weight = 0
+ var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowVirtualService
@@ -8902,11 +12553,24 @@ func (m *RouteDestination) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
- m.Weight |= int32(b&0x7F) << shift
+ stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVirtualService
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Value = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipVirtualService(dAtA[iNdEx:])
diff --git a/networking/v1beta1/virtual_service.proto b/networking/v1beta1/virtual_service.proto
index 9ef36f6cc5f..538d8178b35 100644
--- a/networking/v1beta1/virtual_service.proto
+++ b/networking/v1beta1/virtual_service.proto
@@ -1255,6 +1255,130 @@ message HTTPRouteDestination {
// Header manipulation rules
Headers headers = 7;
+
+ // Local rate limiting.
+ HTTPLocalRateLimit local_rate_limit = 8;
+
+ // Global rate limiting.
+ HTTPGlobalRateLimit global_rate_limit = 9;
+}
+
+// HTTPGlobalRateLimit used to rate limit the HTTP requests calling the rate limit service.
+message HTTPGlobalRateLimit {
+ // The rate limit domain to use when calling the rate limit service.
+ string domain = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // The timeout in milliseconds for the rate limit service RPC.
+ // If set, it will override the global value from mesh config.
+ google.protobuf.Duration timeout = 2;
+
+ // The filter’s behaviour in case the rate limiting service does not respond back.
+ // When it is set to true, Envoy will allow traffic in case of communication failure
+ // between rate limiting service and the proxy.
+ // If set, it will override the global value from mesh config.
+ bool fail_open = 3;
+
+ // A list of actions that are to be applied for this rate limit configuration.
+ // Order matters as the actions are processed sequentially
+ // and the descriptor is composed by appending descriptor entries in that sequence.
+ repeated RateLimitAction actions = 4 [(google.api.field_behavior) = REQUIRED];
+}
+
+// RateLimitAction describes how to generate descriptor entries.
+message RateLimitAction{
+ oneof action {
+ // Rate limit on request headers.
+ RequestHeader request_header = 1;
+
+ // Rate limit on remote address.
+ // The following descriptor entry is appended to the descriptor and is populated using the trusted address from x-forwarded-for:
+ // `("remote_address", "")`
+ bool remote_address = 2;
+
+ // Rate limit on the existence of request headers.
+ HeaderMatch header_match = 3;
+
+ // Rate limit on a generic key.
+ GenericKey generic_key = 4;
+ }
+
+ // The following descriptor entry is appended when a header contains a key that matches the header_name:
+ // `("", "")`
+ message RequestHeader{
+ // The header name to be queried from the request headers.
+ // The header’s value is used to populate the value of the descriptor entry for the descriptor_key
+ string header_name = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // The key to use in the descriptor entry.
+ string descriptor_key = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // If set to true, Envoy skips the descriptor while calling rate limiting service when header is not present in the request.
+ // By default it is true and skips calling rate limiting service if this header does not exist.
+ string skip_if_absent = 3;
+ }
+
+ // The following descriptor entry is appended to the descriptor:
+ // `("header_match", "")`
+ message HeaderMatch{
+ // The value to use in the descriptor entry.
+ string descriptor_value = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // If set to true, the action will append a descriptor entry when the request matches the headers.
+ // If set to false, the action will append a descriptor entry when the request does not match the headers.
+ // The default value is true.
+ string expect_match = 2;
+
+ // The header name to be queried from the request headers.
+ string header_name = 3 [(google.api.field_behavior) = REQUIRED];
+
+ // Specifies how the header value match will be performed to route the request.
+ oneof match_type {
+ // exact string match on the header value
+ string exact = 4;
+
+ // prefix-based match
+ string prefix = 5;
+
+ // RE2 style regex-based match (https://github.com/google/re2/wiki/Syntax).
+ string regex = 6;
+ }
+ }
+
+ // The following descriptor entry is appended to the descriptor:
+ // `("generic_key", "")`
+ message GenericKey{
+ // An optional key to use in the descriptor entry.
+ // If not set it defaults to ‘generic_key’ as the descriptor key.
+ string descriptor_key = 1;
+
+ // The value to use in the descriptor entry.
+ string descriptor_value = 2 [(google.api.field_behavior) = REQUIRED];
+ }
+}
+
+// HTTPLocalRateLimit used to rate limit the HTTP requests locally
+message HTTPLocalRateLimit {
+ // StatusCode allows for a custom HTTP response status code to the downstream client
+ // when the request has been rate limited. Defaults to 429 (TooManyRequests).
+ int32 status_code = 1;
+
+ // The token bucket configuration to use for rate limiting requests.
+ TokenBucket token_bucket = 2 [(google.api.field_behavior) = REQUIRED];
+}
+
+// TokenBucket used for local rate limiting
+message TokenBucket {
+ // The maximum tokens that the bucket can hold.
+ uint32 max_tokens = 1;
+
+ // The number of tokens added to the bucket during each fill interval. If not specified, defaults to 1.
+ uint32 tokens_per_fill = 2;
+
+ // The fill interval that tokens are added to the bucket.
+ // During each fill interval tokens_per_fill are added to the bucket.
+ // The bucket will never contain more than max_tokens tokens.
+ // *Note*: It must be >= 50ms to avoid aggressive fills.
+ google.protobuf.Duration interval = 3;
}
// L4 routing rule weighted destination.
@@ -1267,6 +1391,53 @@ message RouteDestination {
// version. If there is only one destination in a rule, all traffic will be
// routed to it irrespective of the weight.
int32 weight = 2;
+
+ // L4 local rate limiting policy.
+ LocalRateLimit local_rate_limit = 3;
+
+ // L4 global rate limiting policy.
+ GlobalRateLimit global_rate_limit = 4;
+}
+
+// LocalRateLimit used to rate limit the L4 connections locally
+message LocalRateLimit {
+ // The token bucket configuration to use for rate limiting requests.
+ TokenBucket token_bucket = 1 [(google.api.field_behavior) = REQUIRED];
+}
+
+// GlobalRateLimit used to rate limit the L4 connections calling the global rate limit service.
+message GlobalRateLimit {
+ // The rate limit domain to use when calling the rate limit service.
+ string domain = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // The timeout for the rate limit service RPC.
+ // If set, it will override the global value from mesh config.
+ google.protobuf.Duration timeout = 2;
+
+ // The filter’s behaviour in case the rate limiting service does not respond back.
+ // When it is set to true, Envoy will allow traffic in case of communication failure
+ // between rate limiting service and the proxy.
+ // If set, it will override the global value from mesh config.
+ bool fail_open = 3;
+
+ // The rate limit descriptor list to use in the rate limit service request.
+ RateLimitDescriptor descriptors = 4 [(google.api.field_behavior) = REQUIRED];
+
+ // A RateLimitDescriptor is a list of hierarchical entries that are used by the service to
+ // determine the final rate limit key and overall allowed limit. Here are some examples of how
+ // they might be used for the domain "envoy".
+ message RateLimitDescriptor{
+ message Entry {
+ // Descriptor key.
+ string key = 1;
+
+ // Descriptor value.
+ string value = 2;
+ }
+
+ // Descriptor entries.
+ repeated Entry entries = 1 [(google.api.field_behavior) = REQUIRED];
+ }
}
// L4 connection match attributes. Note that L4 connection matching support
diff --git a/networking/v1beta1/virtual_service_deepcopy.gen.go b/networking/v1beta1/virtual_service_deepcopy.gen.go
index fb2e57deb28..093b68dc06b 100644
--- a/networking/v1beta1/virtual_service_deepcopy.gen.go
+++ b/networking/v1beta1/virtual_service_deepcopy.gen.go
@@ -374,6 +374,153 @@ func (in *HTTPRouteDestination) DeepCopyInterface() interface{} {
return in.DeepCopy()
}
+// DeepCopyInto supports using HTTPGlobalRateLimit within kubernetes types, where deepcopy-gen is used.
+func (in *HTTPGlobalRateLimit) DeepCopyInto(out *HTTPGlobalRateLimit) {
+ p := proto.Clone(in).(*HTTPGlobalRateLimit)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPGlobalRateLimit. Required by controller-gen.
+func (in *HTTPGlobalRateLimit) DeepCopy() *HTTPGlobalRateLimit {
+ if in == nil {
+ return nil
+ }
+ out := new(HTTPGlobalRateLimit)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new HTTPGlobalRateLimit. Required by controller-gen.
+func (in *HTTPGlobalRateLimit) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
+// DeepCopyInto supports using RateLimitAction within kubernetes types, where deepcopy-gen is used.
+func (in *RateLimitAction) DeepCopyInto(out *RateLimitAction) {
+ p := proto.Clone(in).(*RateLimitAction)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RateLimitAction. Required by controller-gen.
+func (in *RateLimitAction) DeepCopy() *RateLimitAction {
+ if in == nil {
+ return nil
+ }
+ out := new(RateLimitAction)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new RateLimitAction. Required by controller-gen.
+func (in *RateLimitAction) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
+// DeepCopyInto supports using RateLimitAction_RequestHeader within kubernetes types, where deepcopy-gen is used.
+func (in *RateLimitAction_RequestHeader) DeepCopyInto(out *RateLimitAction_RequestHeader) {
+ p := proto.Clone(in).(*RateLimitAction_RequestHeader)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RateLimitAction_RequestHeader. Required by controller-gen.
+func (in *RateLimitAction_RequestHeader) DeepCopy() *RateLimitAction_RequestHeader {
+ if in == nil {
+ return nil
+ }
+ out := new(RateLimitAction_RequestHeader)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new RateLimitAction_RequestHeader. Required by controller-gen.
+func (in *RateLimitAction_RequestHeader) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
+// DeepCopyInto supports using RateLimitAction_HeaderMatch within kubernetes types, where deepcopy-gen is used.
+func (in *RateLimitAction_HeaderMatch) DeepCopyInto(out *RateLimitAction_HeaderMatch) {
+ p := proto.Clone(in).(*RateLimitAction_HeaderMatch)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RateLimitAction_HeaderMatch. Required by controller-gen.
+func (in *RateLimitAction_HeaderMatch) DeepCopy() *RateLimitAction_HeaderMatch {
+ if in == nil {
+ return nil
+ }
+ out := new(RateLimitAction_HeaderMatch)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new RateLimitAction_HeaderMatch. Required by controller-gen.
+func (in *RateLimitAction_HeaderMatch) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
+// DeepCopyInto supports using RateLimitAction_GenericKey within kubernetes types, where deepcopy-gen is used.
+func (in *RateLimitAction_GenericKey) DeepCopyInto(out *RateLimitAction_GenericKey) {
+ p := proto.Clone(in).(*RateLimitAction_GenericKey)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RateLimitAction_GenericKey. Required by controller-gen.
+func (in *RateLimitAction_GenericKey) DeepCopy() *RateLimitAction_GenericKey {
+ if in == nil {
+ return nil
+ }
+ out := new(RateLimitAction_GenericKey)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new RateLimitAction_GenericKey. Required by controller-gen.
+func (in *RateLimitAction_GenericKey) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
+// DeepCopyInto supports using HTTPLocalRateLimit within kubernetes types, where deepcopy-gen is used.
+func (in *HTTPLocalRateLimit) DeepCopyInto(out *HTTPLocalRateLimit) {
+ p := proto.Clone(in).(*HTTPLocalRateLimit)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPLocalRateLimit. Required by controller-gen.
+func (in *HTTPLocalRateLimit) DeepCopy() *HTTPLocalRateLimit {
+ if in == nil {
+ return nil
+ }
+ out := new(HTTPLocalRateLimit)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new HTTPLocalRateLimit. Required by controller-gen.
+func (in *HTTPLocalRateLimit) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
+// DeepCopyInto supports using TokenBucket within kubernetes types, where deepcopy-gen is used.
+func (in *TokenBucket) DeepCopyInto(out *TokenBucket) {
+ p := proto.Clone(in).(*TokenBucket)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenBucket. Required by controller-gen.
+func (in *TokenBucket) DeepCopy() *TokenBucket {
+ if in == nil {
+ return nil
+ }
+ out := new(TokenBucket)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new TokenBucket. Required by controller-gen.
+func (in *TokenBucket) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
// DeepCopyInto supports using RouteDestination within kubernetes types, where deepcopy-gen is used.
func (in *RouteDestination) DeepCopyInto(out *RouteDestination) {
p := proto.Clone(in).(*RouteDestination)
@@ -395,6 +542,90 @@ func (in *RouteDestination) DeepCopyInterface() interface{} {
return in.DeepCopy()
}
+// DeepCopyInto supports using LocalRateLimit within kubernetes types, where deepcopy-gen is used.
+func (in *LocalRateLimit) DeepCopyInto(out *LocalRateLimit) {
+ p := proto.Clone(in).(*LocalRateLimit)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalRateLimit. Required by controller-gen.
+func (in *LocalRateLimit) DeepCopy() *LocalRateLimit {
+ if in == nil {
+ return nil
+ }
+ out := new(LocalRateLimit)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new LocalRateLimit. Required by controller-gen.
+func (in *LocalRateLimit) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
+// DeepCopyInto supports using GlobalRateLimit within kubernetes types, where deepcopy-gen is used.
+func (in *GlobalRateLimit) DeepCopyInto(out *GlobalRateLimit) {
+ p := proto.Clone(in).(*GlobalRateLimit)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRateLimit. Required by controller-gen.
+func (in *GlobalRateLimit) DeepCopy() *GlobalRateLimit {
+ if in == nil {
+ return nil
+ }
+ out := new(GlobalRateLimit)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRateLimit. Required by controller-gen.
+func (in *GlobalRateLimit) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
+// DeepCopyInto supports using GlobalRateLimit_RateLimitDescriptor within kubernetes types, where deepcopy-gen is used.
+func (in *GlobalRateLimit_RateLimitDescriptor) DeepCopyInto(out *GlobalRateLimit_RateLimitDescriptor) {
+ p := proto.Clone(in).(*GlobalRateLimit_RateLimitDescriptor)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRateLimit_RateLimitDescriptor. Required by controller-gen.
+func (in *GlobalRateLimit_RateLimitDescriptor) DeepCopy() *GlobalRateLimit_RateLimitDescriptor {
+ if in == nil {
+ return nil
+ }
+ out := new(GlobalRateLimit_RateLimitDescriptor)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRateLimit_RateLimitDescriptor. Required by controller-gen.
+func (in *GlobalRateLimit_RateLimitDescriptor) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
+// DeepCopyInto supports using GlobalRateLimit_RateLimitDescriptor_Entry within kubernetes types, where deepcopy-gen is used.
+func (in *GlobalRateLimit_RateLimitDescriptor_Entry) DeepCopyInto(out *GlobalRateLimit_RateLimitDescriptor_Entry) {
+ p := proto.Clone(in).(*GlobalRateLimit_RateLimitDescriptor_Entry)
+ *out = *p
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRateLimit_RateLimitDescriptor_Entry. Required by controller-gen.
+func (in *GlobalRateLimit_RateLimitDescriptor_Entry) DeepCopy() *GlobalRateLimit_RateLimitDescriptor_Entry {
+ if in == nil {
+ return nil
+ }
+ out := new(GlobalRateLimit_RateLimitDescriptor_Entry)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInterface is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRateLimit_RateLimitDescriptor_Entry. Required by controller-gen.
+func (in *GlobalRateLimit_RateLimitDescriptor_Entry) DeepCopyInterface() interface{} {
+ return in.DeepCopy()
+}
+
// DeepCopyInto supports using L4MatchAttributes within kubernetes types, where deepcopy-gen is used.
func (in *L4MatchAttributes) DeepCopyInto(out *L4MatchAttributes) {
p := proto.Clone(in).(*L4MatchAttributes)
diff --git a/networking/v1beta1/virtual_service_json.gen.go b/networking/v1beta1/virtual_service_json.gen.go
index 03e0fe10c6e..a962345d018 100644
--- a/networking/v1beta1/virtual_service_json.gen.go
+++ b/networking/v1beta1/virtual_service_json.gen.go
@@ -276,6 +276,83 @@ func (this *HTTPRouteDestination) UnmarshalJSON(b []byte) error {
return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}
+// MarshalJSON is a custom marshaler for HTTPGlobalRateLimit
+func (this *HTTPGlobalRateLimit) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for HTTPGlobalRateLimit
+func (this *HTTPGlobalRateLimit) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
+// MarshalJSON is a custom marshaler for RateLimitAction
+func (this *RateLimitAction) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for RateLimitAction
+func (this *RateLimitAction) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
+// MarshalJSON is a custom marshaler for RateLimitAction_RequestHeader
+func (this *RateLimitAction_RequestHeader) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for RateLimitAction_RequestHeader
+func (this *RateLimitAction_RequestHeader) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
+// MarshalJSON is a custom marshaler for RateLimitAction_HeaderMatch
+func (this *RateLimitAction_HeaderMatch) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for RateLimitAction_HeaderMatch
+func (this *RateLimitAction_HeaderMatch) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
+// MarshalJSON is a custom marshaler for RateLimitAction_GenericKey
+func (this *RateLimitAction_GenericKey) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for RateLimitAction_GenericKey
+func (this *RateLimitAction_GenericKey) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
+// MarshalJSON is a custom marshaler for HTTPLocalRateLimit
+func (this *HTTPLocalRateLimit) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for HTTPLocalRateLimit
+func (this *HTTPLocalRateLimit) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
+// MarshalJSON is a custom marshaler for TokenBucket
+func (this *TokenBucket) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for TokenBucket
+func (this *TokenBucket) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
// MarshalJSON is a custom marshaler for RouteDestination
func (this *RouteDestination) MarshalJSON() ([]byte, error) {
str, err := VirtualServiceMarshaler.MarshalToString(this)
@@ -287,6 +364,50 @@ func (this *RouteDestination) UnmarshalJSON(b []byte) error {
return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}
+// MarshalJSON is a custom marshaler for LocalRateLimit
+func (this *LocalRateLimit) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for LocalRateLimit
+func (this *LocalRateLimit) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
+// MarshalJSON is a custom marshaler for GlobalRateLimit
+func (this *GlobalRateLimit) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for GlobalRateLimit
+func (this *GlobalRateLimit) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
+// MarshalJSON is a custom marshaler for GlobalRateLimit_RateLimitDescriptor
+func (this *GlobalRateLimit_RateLimitDescriptor) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for GlobalRateLimit_RateLimitDescriptor
+func (this *GlobalRateLimit_RateLimitDescriptor) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
+// MarshalJSON is a custom marshaler for GlobalRateLimit_RateLimitDescriptor_Entry
+func (this *GlobalRateLimit_RateLimitDescriptor_Entry) MarshalJSON() ([]byte, error) {
+ str, err := VirtualServiceMarshaler.MarshalToString(this)
+ return []byte(str), err
+}
+
+// UnmarshalJSON is a custom unmarshaler for GlobalRateLimit_RateLimitDescriptor_Entry
+func (this *GlobalRateLimit_RateLimitDescriptor_Entry) UnmarshalJSON(b []byte) error {
+ return VirtualServiceUnmarshaler.Unmarshal(bytes.NewReader(b), this)
+}
+
// MarshalJSON is a custom marshaler for L4MatchAttributes
func (this *L4MatchAttributes) MarshalJSON() ([]byte, error) {
str, err := VirtualServiceMarshaler.MarshalToString(this)
diff --git a/python/istio_api/mesh/v1alpha1/config_pb2.py b/python/istio_api/mesh/v1alpha1/config_pb2.py
index 69a42ddfa0c..d6a43732e8b 100644
--- a/python/istio_api/mesh/v1alpha1/config_pb2.py
+++ b/python/istio_api/mesh/v1alpha1/config_pb2.py
@@ -14,6 +14,7 @@
_sym_db = _symbol_database.Default()
+from google.api import field_behavior_pb2 as google_dot_api_dot_field__behavior__pb2
from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2
from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2
from mesh.v1alpha1 import proxy_pb2 as mesh_dot_v1alpha1_dot_proxy__pb2
@@ -25,9 +26,9 @@
package='istio.mesh.v1alpha1',
syntax='proto3',
serialized_options=_b('Z\032istio.io/api/mesh/v1alpha1'),
- serialized_pb=_b('\n\x1amesh/v1alpha1/config.proto\x12\x13istio.mesh.v1alpha1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x19mesh/v1alpha1/proxy.proto\x1a*networking/v1alpha3/destination_rule.proto\"\x85\x1e\n\nMeshConfig\x12\x19\n\x11proxy_listen_port\x18\x04 \x01(\x05\x12\x17\n\x0fproxy_http_port\x18\x05 \x01(\x05\x12\x32\n\x0f\x63onnect_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12=\n\x1aprotocol_detection_timeout\x18* \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x61\n\rtcp_keepalive\x18\x1c \x01(\x0b\x32J.istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings.TcpKeepalive\x12\x15\n\ringress_class\x18\x07 \x01(\t\x12\x17\n\x0fingress_service\x18\x08 \x01(\t\x12V\n\x17ingress_controller_mode\x18\t \x01(\x0e\x32\x35.istio.mesh.v1alpha1.MeshConfig.IngressControllerMode\x12\x18\n\x10ingress_selector\x18\x34 \x01(\t\x12\x16\n\x0e\x65nable_tracing\x18\x0c \x01(\x08\x12\x17\n\x0f\x61\x63\x63\x65ss_log_file\x18\r \x01(\t\x12\x19\n\x11\x61\x63\x63\x65ss_log_format\x18\x18 \x01(\t\x12N\n\x13\x61\x63\x63\x65ss_log_encoding\x18\x1b \x01(\x0e\x32\x31.istio.mesh.v1alpha1.MeshConfig.AccessLogEncoding\x12\'\n\x1f\x65nable_envoy_access_log_service\x18( \x01(\x08\x12\"\n\x1a\x64isable_envoy_listener_log\x18\x38 \x01(\x08\x12\x38\n\x0e\x64\x65\x66\x61ult_config\x18\x0e \x01(\x0b\x32 .istio.mesh.v1alpha1.ProxyConfig\x12V\n\x17outbound_traffic_policy\x18\x11 \x01(\x0b\x32\x35.istio.mesh.v1alpha1.MeshConfig.OutboundTrafficPolicy\x12\x39\n\x0e\x63onfig_sources\x18\x16 \x03(\x0b\x32!.istio.mesh.v1alpha1.ConfigSource\x12\x34\n\x10\x65nable_auto_mtls\x18+ \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12\x14\n\x0ctrust_domain\x18\x1a \x01(\t\x12\x1c\n\x14trust_domain_aliases\x18. \x03(\t\x12!\n\x19\x64\x65\x66\x61ult_service_export_to\x18\x1f \x03(\t\x12)\n!default_virtual_service_export_to\x18 \x03(\t\x12*\n\"default_destination_rule_export_to\x18! \x03(\t\x12\x16\n\x0eroot_namespace\x18\" \x01(\t\x12S\n\x13locality_lb_setting\x18# \x01(\x0b\x32\x36.istio.networking.v1alpha3.LocalityLoadBalancerSetting\x12\x33\n\x10\x64ns_refresh_rate\x18$ \x01(\x0b\x32\x19.google.protobuf.Duration\x12J\n\x11h2_upgrade_policy\x18) \x01(\x0e\x32/.istio.mesh.v1alpha1.MeshConfig.H2UpgradePolicy\x12!\n\x19inbound_cluster_stat_name\x18, \x01(\t\x12\"\n\x1aoutbound_cluster_stat_name\x18- \x01(\t\x12\x36\n\x0c\x63\x65rtificates\x18/ \x03(\x0b\x32 .istio.mesh.v1alpha1.Certificate\x12\x43\n\rthrift_config\x18\x31 \x01(\x0b\x32,.istio.mesh.v1alpha1.MeshConfig.ThriftConfig\x12I\n\x10service_settings\x18\x32 \x03(\x0b\x32/.istio.mesh.v1alpha1.MeshConfig.ServiceSettings\x12;\n\x17\x65nable_prometheus_merge\x18\x33 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12@\n\x1cverify_certificate_at_client\x18\x36 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12.\n\x02\x63\x61\x18\x37 \x01(\x0b\x32\".istio.mesh.v1alpha1.MeshConfig.CA\x12N\n\x13\x65xtension_providers\x18\x39 \x03(\x0b\x32\x31.istio.mesh.v1alpha1.MeshConfig.ExtensionProvider\x1a\xa7\x01\n\x15OutboundTrafficPolicy\x12H\n\x04mode\x18\x01 \x01(\x0e\x32:.istio.mesh.v1alpha1.MeshConfig.OutboundTrafficPolicy.Mode\"D\n\x04Mode\x12\x11\n\rREGISTRY_ONLY\x10\x00\x12\r\n\tALLOW_ANY\x10\x01\"\x04\x08\x02\x10\x02*\x14VIRTUAL_SERVICE_ONLY\x1a]\n\x0cThriftConfig\x12\x16\n\x0erate_limit_url\x18\x01 \x01(\t\x12\x35\n\x12rate_limit_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\x8f\x01\n\x0fServiceSettings\x12J\n\x08settings\x18\x01 \x01(\x0b\x32\x38.istio.mesh.v1alpha1.MeshConfig.ServiceSettings.Settings\x12\r\n\x05hosts\x18\x02 \x03(\t\x1a!\n\x08Settings\x12\x15\n\rcluster_local\x18\x01 \x01(\x08\x1a\xa2\x01\n\x02\x43\x41\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12\x42\n\x0ctls_settings\x18\x02 \x01(\x0b\x32,.istio.networking.v1alpha3.ClientTLSSettings\x12\x32\n\x0frequest_timeout\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x13\n\x0bistiod_side\x18\x04 \x01(\x08\x1a\x90\x05\n\x11\x45xtensionProvider\x12\x0c\n\x04name\x18\x01 \x01(\t\x12x\n\x14\x65nvoy_ext_authz_http\x18\x02 \x01(\x0b\x32X.istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationHttpProviderH\x00\x12x\n\x14\x65nvoy_ext_authz_grpc\x18\x03 \x01(\x0b\x32X.istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationGrpcProviderH\x00\x1a\xf7\x01\n&EnvoyExternalAuthorizationHttpProvider\x12\x0f\n\x07service\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\r\x12\x13\n\x0bpath_prefix\x18\x03 \x01(\t\x12\x11\n\tfail_open\x18\x04 \x01(\x08\x12\x17\n\x0fstatus_on_error\x18\x05 \x01(\t\x12 \n\x18include_headers_in_check\x18\x06 \x03(\t\x12$\n\x1cheaders_to_upstream_on_allow\x18\x07 \x03(\t\x12%\n\x1dheaders_to_downstream_on_deny\x18\x08 \x03(\t\x1as\n&EnvoyExternalAuthorizationGrpcProvider\x12\x0f\n\x07service\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\r\x12\x11\n\tfail_open\x18\x03 \x01(\x08\x12\x17\n\x0fstatus_on_error\x18\x04 \x01(\tB\n\n\x08provider\"J\n\x15IngressControllerMode\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x07\n\x03OFF\x10\x01\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x02\x12\n\n\x06STRICT\x10\x03\"&\n\nAuthPolicy\x12\x08\n\x04NONE\x10\x00\x12\x0e\n\nMUTUAL_TLS\x10\x01\"\'\n\x11\x41\x63\x63\x65ssLogEncoding\x12\x08\n\x04TEXT\x10\x00\x12\x08\n\x04JSON\x10\x01\"2\n\x0fH2UpgradePolicy\x12\x12\n\x0e\x44O_NOT_UPGRADE\x10\x00\x12\x0b\n\x07UPGRADE\x10\x01J\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x30\x10\x31J\x04\x08\x19\x10\x1aJ\x04\x08\x1e\x10\x1fJ\x04\x08\n\x10\x0bJ\x04\x08\x0b\x10\x0cJ\x04\x08\x0f\x10\x10J\x04\x08\x10\x10\x11J\x04\x08\x12\x10\x13J\x04\x08\x13\x10\x14J\x04\x08\x14\x10\x15J\x04\x08\x15\x10\x16J\x04\x08\x17\x10\x18J\x04\x08\x1d\x10\x1eJ\x04\x08\x35\x10\x36J\x04\x08%\x10&J\x04\x08&\x10\'J\x04\x08\'\x10(R\x12mixer_check_serverR\x13mixer_report_serverR\x15\x64isable_policy_checksR\x1a\x64isable_mixer_http_reportsR\x16policy_check_fail_openR%sidecar_to_telemetry_session_affinityR\x0b\x61uth_policyR\x11rds_refresh_delayR\rmixer_addressR\x1f\x65nable_client_side_policy_checkR\x0csds_uds_pathR\x11sds_refresh_delayR\x16\x65nable_sds_token_mountR\x12sds_use_k8s_sa_jwtR\x1atermination_drain_durationR\x14\x64isable_report_batchR\x18report_batch_max_entriesR\x15report_batch_max_time\"\xa0\x01\n\x0c\x43onfigSource\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12\x42\n\x0ctls_settings\x18\x02 \x01(\x0b\x32,.istio.networking.v1alpha3.ClientTLSSettings\x12;\n\x14subscribed_resources\x18\x03 \x03(\x0e\x32\x1d.istio.mesh.v1alpha1.Resource\"5\n\x0b\x43\x65rtificate\x12\x13\n\x0bsecret_name\x18\x01 \x01(\t\x12\x11\n\tdns_names\x18\x02 \x03(\t* \n\x08Resource\x12\x14\n\x10SERVICE_REGISTRY\x10\x00\x42\x1cZ\x1aistio.io/api/mesh/v1alpha1b\x06proto3')
+ serialized_pb=_b('\n\x1amesh/v1alpha1/config.proto\x12\x13istio.mesh.v1alpha1\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x19mesh/v1alpha1/proxy.proto\x1a*networking/v1alpha3/destination_rule.proto\"\xbd\x1e\n\nMeshConfig\x12\x19\n\x11proxy_listen_port\x18\x04 \x01(\x05\x12\x17\n\x0fproxy_http_port\x18\x05 \x01(\x05\x12\x32\n\x0f\x63onnect_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12=\n\x1aprotocol_detection_timeout\x18* \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x61\n\rtcp_keepalive\x18\x1c \x01(\x0b\x32J.istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings.TcpKeepalive\x12\x15\n\ringress_class\x18\x07 \x01(\t\x12\x17\n\x0fingress_service\x18\x08 \x01(\t\x12V\n\x17ingress_controller_mode\x18\t \x01(\x0e\x32\x35.istio.mesh.v1alpha1.MeshConfig.IngressControllerMode\x12\x18\n\x10ingress_selector\x18\x34 \x01(\t\x12\x16\n\x0e\x65nable_tracing\x18\x0c \x01(\x08\x12\x17\n\x0f\x61\x63\x63\x65ss_log_file\x18\r \x01(\t\x12\x19\n\x11\x61\x63\x63\x65ss_log_format\x18\x18 \x01(\t\x12N\n\x13\x61\x63\x63\x65ss_log_encoding\x18\x1b \x01(\x0e\x32\x31.istio.mesh.v1alpha1.MeshConfig.AccessLogEncoding\x12\'\n\x1f\x65nable_envoy_access_log_service\x18( \x01(\x08\x12\"\n\x1a\x64isable_envoy_listener_log\x18\x38 \x01(\x08\x12\x38\n\x0e\x64\x65\x66\x61ult_config\x18\x0e \x01(\x0b\x32 .istio.mesh.v1alpha1.ProxyConfig\x12V\n\x17outbound_traffic_policy\x18\x11 \x01(\x0b\x32\x35.istio.mesh.v1alpha1.MeshConfig.OutboundTrafficPolicy\x12\x39\n\x0e\x63onfig_sources\x18\x16 \x03(\x0b\x32!.istio.mesh.v1alpha1.ConfigSource\x12\x34\n\x10\x65nable_auto_mtls\x18+ \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12\x14\n\x0ctrust_domain\x18\x1a \x01(\t\x12\x1c\n\x14trust_domain_aliases\x18. \x03(\t\x12!\n\x19\x64\x65\x66\x61ult_service_export_to\x18\x1f \x03(\t\x12)\n!default_virtual_service_export_to\x18 \x03(\t\x12*\n\"default_destination_rule_export_to\x18! \x03(\t\x12\x16\n\x0eroot_namespace\x18\" \x01(\t\x12S\n\x13locality_lb_setting\x18# \x01(\x0b\x32\x36.istio.networking.v1alpha3.LocalityLoadBalancerSetting\x12\x33\n\x10\x64ns_refresh_rate\x18$ \x01(\x0b\x32\x19.google.protobuf.Duration\x12J\n\x11h2_upgrade_policy\x18) \x01(\x0e\x32/.istio.mesh.v1alpha1.MeshConfig.H2UpgradePolicy\x12!\n\x19inbound_cluster_stat_name\x18, \x01(\t\x12\"\n\x1aoutbound_cluster_stat_name\x18- \x01(\t\x12\x36\n\x0c\x63\x65rtificates\x18/ \x03(\x0b\x32 .istio.mesh.v1alpha1.Certificate\x12\x43\n\rthrift_config\x18\x31 \x01(\x0b\x32,.istio.mesh.v1alpha1.MeshConfig.ThriftConfig\x12I\n\x10service_settings\x18\x32 \x03(\x0b\x32/.istio.mesh.v1alpha1.MeshConfig.ServiceSettings\x12;\n\x17\x65nable_prometheus_merge\x18\x33 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12@\n\x1cverify_certificate_at_client\x18\x36 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12.\n\x02\x63\x61\x18\x37 \x01(\x0b\x32\".istio.mesh.v1alpha1.MeshConfig.CA\x12N\n\x13\x65xtension_providers\x18\x39 \x03(\x0b\x32\x31.istio.mesh.v1alpha1.MeshConfig.ExtensionProvider\x12\x36\n\x07service\x18: \x01(\x0b\x32%.istio.mesh.v1alpha1.RateLimitService\x1a\xa7\x01\n\x15OutboundTrafficPolicy\x12H\n\x04mode\x18\x01 \x01(\x0e\x32:.istio.mesh.v1alpha1.MeshConfig.OutboundTrafficPolicy.Mode\"D\n\x04Mode\x12\x11\n\rREGISTRY_ONLY\x10\x00\x12\r\n\tALLOW_ANY\x10\x01\"\x04\x08\x02\x10\x02*\x14VIRTUAL_SERVICE_ONLY\x1a]\n\x0cThriftConfig\x12\x16\n\x0erate_limit_url\x18\x01 \x01(\t\x12\x35\n\x12rate_limit_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\x8f\x01\n\x0fServiceSettings\x12J\n\x08settings\x18\x01 \x01(\x0b\x32\x38.istio.mesh.v1alpha1.MeshConfig.ServiceSettings.Settings\x12\r\n\x05hosts\x18\x02 \x03(\t\x1a!\n\x08Settings\x12\x15\n\rcluster_local\x18\x01 \x01(\x08\x1a\xa2\x01\n\x02\x43\x41\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12\x42\n\x0ctls_settings\x18\x02 \x01(\x0b\x32,.istio.networking.v1alpha3.ClientTLSSettings\x12\x32\n\x0frequest_timeout\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x13\n\x0bistiod_side\x18\x04 \x01(\x08\x1a\x90\x05\n\x11\x45xtensionProvider\x12\x0c\n\x04name\x18\x01 \x01(\t\x12x\n\x14\x65nvoy_ext_authz_http\x18\x02 \x01(\x0b\x32X.istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationHttpProviderH\x00\x12x\n\x14\x65nvoy_ext_authz_grpc\x18\x03 \x01(\x0b\x32X.istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.EnvoyExternalAuthorizationGrpcProviderH\x00\x1a\xf7\x01\n&EnvoyExternalAuthorizationHttpProvider\x12\x0f\n\x07service\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\r\x12\x13\n\x0bpath_prefix\x18\x03 \x01(\t\x12\x11\n\tfail_open\x18\x04 \x01(\x08\x12\x17\n\x0fstatus_on_error\x18\x05 \x01(\t\x12 \n\x18include_headers_in_check\x18\x06 \x03(\t\x12$\n\x1cheaders_to_upstream_on_allow\x18\x07 \x03(\t\x12%\n\x1dheaders_to_downstream_on_deny\x18\x08 \x03(\t\x1as\n&EnvoyExternalAuthorizationGrpcProvider\x12\x0f\n\x07service\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\r\x12\x11\n\tfail_open\x18\x03 \x01(\x08\x12\x17\n\x0fstatus_on_error\x18\x04 \x01(\tB\n\n\x08provider\"J\n\x15IngressControllerMode\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x07\n\x03OFF\x10\x01\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x02\x12\n\n\x06STRICT\x10\x03\"&\n\nAuthPolicy\x12\x08\n\x04NONE\x10\x00\x12\x0e\n\nMUTUAL_TLS\x10\x01\"\'\n\x11\x41\x63\x63\x65ssLogEncoding\x12\x08\n\x04TEXT\x10\x00\x12\x08\n\x04JSON\x10\x01\"2\n\x0fH2UpgradePolicy\x12\x12\n\x0e\x44O_NOT_UPGRADE\x10\x00\x12\x0b\n\x07UPGRADE\x10\x01J\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04J\x04\x08\x30\x10\x31J\x04\x08\x19\x10\x1aJ\x04\x08\x1e\x10\x1fJ\x04\x08\n\x10\x0bJ\x04\x08\x0b\x10\x0cJ\x04\x08\x0f\x10\x10J\x04\x08\x10\x10\x11J\x04\x08\x12\x10\x13J\x04\x08\x13\x10\x14J\x04\x08\x14\x10\x15J\x04\x08\x15\x10\x16J\x04\x08\x17\x10\x18J\x04\x08\x1d\x10\x1eJ\x04\x08\x35\x10\x36J\x04\x08%\x10&J\x04\x08&\x10\'J\x04\x08\'\x10(R\x12mixer_check_serverR\x13mixer_report_serverR\x15\x64isable_policy_checksR\x1a\x64isable_mixer_http_reportsR\x16policy_check_fail_openR%sidecar_to_telemetry_session_affinityR\x0b\x61uth_policyR\x11rds_refresh_delayR\rmixer_addressR\x1f\x65nable_client_side_policy_checkR\x0csds_uds_pathR\x11sds_refresh_delayR\x16\x65nable_sds_token_mountR\x12sds_use_k8s_sa_jwtR\x1atermination_drain_durationR\x14\x64isable_report_batchR\x18report_batch_max_entriesR\x15report_batch_max_time\"\xa0\x01\n\x0c\x43onfigSource\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12\x42\n\x0ctls_settings\x18\x02 \x01(\x0b\x32,.istio.networking.v1alpha3.ClientTLSSettings\x12;\n\x14subscribed_resources\x18\x03 \x03(\x0e\x32\x1d.istio.mesh.v1alpha1.Resource\"5\n\x0b\x43\x65rtificate\x12\x13\n\x0bsecret_name\x18\x01 \x01(\t\x12\x11\n\tdns_names\x18\x02 \x03(\t\"w\n\x10RateLimitService\x12\x11\n\x04host\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x11\n\x04port\x18\x02 \x01(\rB\x03\xe0\x41\x02\x12\x11\n\tfail_open\x18\x03 \x01(\x08\x12*\n\x07timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration* \n\x08Resource\x12\x14\n\x10SERVICE_REGISTRY\x10\x00\x42\x1cZ\x1aistio.io/api/mesh/v1alpha1b\x06proto3')
,
- dependencies=[google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,mesh_dot_v1alpha1_dot_proxy__pb2.DESCRIPTOR,networking_dot_v1alpha3_dot_destination__rule__pb2.DESCRIPTOR,])
+ dependencies=[google_dot_api_dot_field__behavior__pb2.DESCRIPTOR,google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,mesh_dot_v1alpha1_dot_proxy__pb2.DESCRIPTOR,networking_dot_v1alpha3_dot_destination__rule__pb2.DESCRIPTOR,])
_RESOURCE = _descriptor.EnumDescriptor(
name='Resource',
@@ -42,8 +43,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=4252,
- serialized_end=4284,
+ serialized_start=4462,
+ serialized_end=4494,
)
_sym_db.RegisterEnumDescriptor(_RESOURCE)
@@ -68,8 +69,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=2159,
- serialized_end=2227,
+ serialized_start=2248,
+ serialized_end=2316,
)
_sym_db.RegisterEnumDescriptor(_MESHCONFIG_OUTBOUNDTRAFFICPOLICY_MODE)
@@ -98,8 +99,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=3294,
- serialized_end=3368,
+ serialized_start=3383,
+ serialized_end=3457,
)
_sym_db.RegisterEnumDescriptor(_MESHCONFIG_INGRESSCONTROLLERMODE)
@@ -120,8 +121,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=3370,
- serialized_end=3408,
+ serialized_start=3459,
+ serialized_end=3497,
)
_sym_db.RegisterEnumDescriptor(_MESHCONFIG_AUTHPOLICY)
@@ -142,8 +143,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=3410,
- serialized_end=3449,
+ serialized_start=3499,
+ serialized_end=3538,
)
_sym_db.RegisterEnumDescriptor(_MESHCONFIG_ACCESSLOGENCODING)
@@ -164,8 +165,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=3451,
- serialized_end=3501,
+ serialized_start=3540,
+ serialized_end=3590,
)
_sym_db.RegisterEnumDescriptor(_MESHCONFIG_H2UPGRADEPOLICY)
@@ -197,8 +198,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=2060,
- serialized_end=2227,
+ serialized_start=2149,
+ serialized_end=2316,
)
_MESHCONFIG_THRIFTCONFIG = _descriptor.Descriptor(
@@ -234,8 +235,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=2229,
- serialized_end=2322,
+ serialized_start=2318,
+ serialized_end=2411,
)
_MESHCONFIG_SERVICESETTINGS_SETTINGS = _descriptor.Descriptor(
@@ -264,8 +265,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=2435,
- serialized_end=2468,
+ serialized_start=2524,
+ serialized_end=2557,
)
_MESHCONFIG_SERVICESETTINGS = _descriptor.Descriptor(
@@ -301,8 +302,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=2325,
- serialized_end=2468,
+ serialized_start=2414,
+ serialized_end=2557,
)
_MESHCONFIG_CA = _descriptor.Descriptor(
@@ -352,8 +353,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=2471,
- serialized_end=2633,
+ serialized_start=2560,
+ serialized_end=2722,
)
_MESHCONFIG_EXTENSIONPROVIDER_ENVOYEXTERNALAUTHORIZATIONHTTPPROVIDER = _descriptor.Descriptor(
@@ -431,8 +432,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=2916,
- serialized_end=3163,
+ serialized_start=3005,
+ serialized_end=3252,
)
_MESHCONFIG_EXTENSIONPROVIDER_ENVOYEXTERNALAUTHORIZATIONGRPCPROVIDER = _descriptor.Descriptor(
@@ -482,8 +483,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3165,
- serialized_end=3280,
+ serialized_start=3254,
+ serialized_end=3369,
)
_MESHCONFIG_EXTENSIONPROVIDER = _descriptor.Descriptor(
@@ -529,8 +530,8 @@
name='provider', full_name='istio.mesh.v1alpha1.MeshConfig.ExtensionProvider.provider',
index=0, containing_type=None, fields=[]),
],
- serialized_start=2636,
- serialized_end=3292,
+ serialized_start=2725,
+ serialized_end=3381,
)
_MESHCONFIG = _descriptor.Descriptor(
@@ -799,6 +800,13 @@
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='service', full_name='istio.mesh.v1alpha1.MeshConfig.service', index=37,
+ number=58, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
],
extensions=[
],
@@ -815,8 +823,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=187,
- serialized_end=4032,
+ serialized_start=220,
+ serialized_end=4121,
)
@@ -860,8 +868,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4035,
- serialized_end=4195,
+ serialized_start=4124,
+ serialized_end=4284,
)
@@ -898,8 +906,60 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4197,
- serialized_end=4250,
+ serialized_start=4286,
+ serialized_end=4339,
+)
+
+
+_RATELIMITSERVICE = _descriptor.Descriptor(
+ name='RateLimitService',
+ full_name='istio.mesh.v1alpha1.RateLimitService',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='host', full_name='istio.mesh.v1alpha1.RateLimitService.host', index=0,
+ number=1, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='port', full_name='istio.mesh.v1alpha1.RateLimitService.port', index=1,
+ number=2, type=13, cpp_type=3, label=1,
+ has_default_value=False, default_value=0,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='fail_open', full_name='istio.mesh.v1alpha1.RateLimitService.fail_open', index=2,
+ number=3, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='timeout', full_name='istio.mesh.v1alpha1.RateLimitService.timeout', index=3,
+ number=4, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=4341,
+ serialized_end=4460,
)
_MESHCONFIG_OUTBOUNDTRAFFICPOLICY.fields_by_name['mode'].enum_type = _MESHCONFIG_OUTBOUNDTRAFFICPOLICY_MODE
@@ -943,15 +1003,18 @@
_MESHCONFIG.fields_by_name['verify_certificate_at_client'].message_type = google_dot_protobuf_dot_wrappers__pb2._BOOLVALUE
_MESHCONFIG.fields_by_name['ca'].message_type = _MESHCONFIG_CA
_MESHCONFIG.fields_by_name['extension_providers'].message_type = _MESHCONFIG_EXTENSIONPROVIDER
+_MESHCONFIG.fields_by_name['service'].message_type = _RATELIMITSERVICE
_MESHCONFIG_INGRESSCONTROLLERMODE.containing_type = _MESHCONFIG
_MESHCONFIG_AUTHPOLICY.containing_type = _MESHCONFIG
_MESHCONFIG_ACCESSLOGENCODING.containing_type = _MESHCONFIG
_MESHCONFIG_H2UPGRADEPOLICY.containing_type = _MESHCONFIG
_CONFIGSOURCE.fields_by_name['tls_settings'].message_type = networking_dot_v1alpha3_dot_destination__rule__pb2._CLIENTTLSSETTINGS
_CONFIGSOURCE.fields_by_name['subscribed_resources'].enum_type = _RESOURCE
+_RATELIMITSERVICE.fields_by_name['timeout'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION
DESCRIPTOR.message_types_by_name['MeshConfig'] = _MESHCONFIG
DESCRIPTOR.message_types_by_name['ConfigSource'] = _CONFIGSOURCE
DESCRIPTOR.message_types_by_name['Certificate'] = _CERTIFICATE
+DESCRIPTOR.message_types_by_name['RateLimitService'] = _RATELIMITSERVICE
DESCRIPTOR.enum_types_by_name['Resource'] = _RESOURCE
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
@@ -1040,6 +1103,15 @@
})
_sym_db.RegisterMessage(Certificate)
+RateLimitService = _reflection.GeneratedProtocolMessageType('RateLimitService', (_message.Message,), {
+ 'DESCRIPTOR' : _RATELIMITSERVICE,
+ '__module__' : 'mesh.v1alpha1.config_pb2'
+ # @@protoc_insertion_point(class_scope:istio.mesh.v1alpha1.RateLimitService)
+ })
+_sym_db.RegisterMessage(RateLimitService)
+
DESCRIPTOR._options = None
+_RATELIMITSERVICE.fields_by_name['host']._options = None
+_RATELIMITSERVICE.fields_by_name['port']._options = None
# @@protoc_insertion_point(module_scope)
diff --git a/python/istio_api/networking/v1alpha3/virtual_service_pb2.py b/python/istio_api/networking/v1alpha3/virtual_service_pb2.py
index 812886f4f8e..48d50917ba2 100644
--- a/python/istio_api/networking/v1alpha3/virtual_service_pb2.py
+++ b/python/istio_api/networking/v1alpha3/virtual_service_pb2.py
@@ -23,7 +23,7 @@
package='istio.networking.v1alpha3',
syntax='proto3',
serialized_options=_b('Z istio.io/api/networking/v1alpha3'),
- serialized_pb=_b('\n)networking/v1alpha3/virtual_service.proto\x12\x19istio.networking.v1alpha3\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\xdc\x01\n\x0eVirtualService\x12\r\n\x05hosts\x18\x01 \x03(\t\x12\x10\n\x08gateways\x18\x02 \x03(\t\x12\x32\n\x04http\x18\x03 \x03(\x0b\x32$.istio.networking.v1alpha3.HTTPRoute\x12\x30\n\x03tls\x18\x05 \x03(\x0b\x32#.istio.networking.v1alpha3.TLSRoute\x12\x30\n\x03tcp\x18\x04 \x03(\x0b\x32#.istio.networking.v1alpha3.TCPRoute\x12\x11\n\texport_to\x18\x06 \x03(\t\"g\n\x0b\x44\x65stination\x12\x11\n\x04host\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x0e\n\x06subset\x18\x02 \x01(\t\x12\x35\n\x04port\x18\x03 \x01(\x0b\x32\'.istio.networking.v1alpha3.PortSelector\"\x94\x07\n\tHTTPRoute\x12\x0c\n\x04name\x18\x11 \x01(\t\x12:\n\x05match\x18\x01 \x03(\x0b\x32+.istio.networking.v1alpha3.HTTPMatchRequest\x12>\n\x05route\x18\x02 \x03(\x0b\x32/.istio.networking.v1alpha3.HTTPRouteDestination\x12\x39\n\x08redirect\x18\x03 \x01(\x0b\x32\'.istio.networking.v1alpha3.HTTPRedirect\x12\x35\n\x08\x64\x65legate\x18\x14 \x01(\x0b\x32#.istio.networking.v1alpha3.Delegate\x12\x37\n\x07rewrite\x18\x04 \x01(\x0b\x32&.istio.networking.v1alpha3.HTTPRewrite\x12*\n\x07timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x35\n\x07retries\x18\x07 \x01(\x0b\x32$.istio.networking.v1alpha3.HTTPRetry\x12<\n\x05\x66\x61ult\x18\x08 \x01(\x0b\x32-.istio.networking.v1alpha3.HTTPFaultInjection\x12\x36\n\x06mirror\x18\t \x01(\x0b\x32&.istio.networking.v1alpha3.Destination\x12\x38\n\x0emirror_percent\x18\x12 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x02\x18\x01\x12=\n\x11mirror_percentage\x18\x13 \x01(\x0b\x32\".istio.networking.v1alpha3.Percent\x12:\n\x0b\x63ors_policy\x18\n \x01(\x0b\x32%.istio.networking.v1alpha3.CorsPolicy\x12\x33\n\x07headers\x18\x10 \x01(\x0b\x32\".istio.networking.v1alpha3.HeadersJ\x04\x08\x05\x10\x06J\x04\x08\x0b\x10\x10R\x11websocket_upgradeR\x0e\x61ppend_headersR\x17remove_response_headersR\x17\x61ppend_response_headersR\x16remove_request_headersR\x16\x61ppend_request_headers\"+\n\x08\x44\x65legate\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tnamespace\x18\x02 \x01(\t\"\xa9\x03\n\x07Headers\x12\x44\n\x07request\x18\x01 \x01(\x0b\x32\x33.istio.networking.v1alpha3.Headers.HeaderOperations\x12\x45\n\x08response\x18\x02 \x01(\x0b\x32\x33.istio.networking.v1alpha3.Headers.HeaderOperations\x1a\x90\x02\n\x10HeaderOperations\x12I\n\x03set\x18\x01 \x03(\x0b\x32<.istio.networking.v1alpha3.Headers.HeaderOperations.SetEntry\x12I\n\x03\x61\x64\x64\x18\x02 \x03(\x0b\x32<.istio.networking.v1alpha3.Headers.HeaderOperations.AddEntry\x12\x0e\n\x06remove\x18\x03 \x03(\t\x1a*\n\x08SetEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a*\n\x08\x41\x64\x64\x45ntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x89\x01\n\x08TLSRoute\x12\x41\n\x05match\x18\x01 \x03(\x0b\x32-.istio.networking.v1alpha3.TLSMatchAttributesB\x03\xe0\x41\x02\x12:\n\x05route\x18\x02 \x03(\x0b\x32+.istio.networking.v1alpha3.RouteDestination\"\x83\x01\n\x08TCPRoute\x12;\n\x05match\x18\x01 \x03(\x0b\x32,.istio.networking.v1alpha3.L4MatchAttributes\x12:\n\x05route\x18\x02 \x03(\x0b\x32+.istio.networking.v1alpha3.RouteDestination\"\xea\x07\n\x10HTTPMatchRequest\x12\x0c\n\x04name\x18\x0b \x01(\t\x12\x33\n\x03uri\x18\x01 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch\x12\x36\n\x06scheme\x18\x02 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch\x12\x36\n\x06method\x18\x03 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch\x12\x39\n\tauthority\x18\x04 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch\x12I\n\x07headers\x18\x05 \x03(\x0b\x32\x38.istio.networking.v1alpha3.HTTPMatchRequest.HeadersEntry\x12\x0c\n\x04port\x18\x06 \x01(\r\x12T\n\rsource_labels\x18\x07 \x03(\x0b\x32=.istio.networking.v1alpha3.HTTPMatchRequest.SourceLabelsEntry\x12\x10\n\x08gateways\x18\x08 \x03(\t\x12R\n\x0cquery_params\x18\t \x03(\x0b\x32<.istio.networking.v1alpha3.HTTPMatchRequest.QueryParamsEntry\x12\x17\n\x0fignore_uri_case\x18\n \x01(\x08\x12X\n\x0fwithout_headers\x18\x0c \x03(\x0b\x32?.istio.networking.v1alpha3.HTTPMatchRequest.WithoutHeadersEntry\x12\x18\n\x10source_namespace\x18\r \x01(\t\x1aV\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch:\x02\x38\x01\x1a\x33\n\x11SourceLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1aZ\n\x10QueryParamsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch:\x02\x38\x01\x1a]\n\x13WithoutHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch:\x02\x38\x01\"\x85\x02\n\x14HTTPRouteDestination\x12@\n\x0b\x64\x65stination\x18\x01 \x01(\x0b\x32&.istio.networking.v1alpha3.DestinationB\x03\xe0\x41\x02\x12\x0e\n\x06weight\x18\x02 \x01(\x05\x12\x33\n\x07headers\x18\x07 \x01(\x0b\x32\".istio.networking.v1alpha3.HeadersJ\x04\x08\x03\x10\x07R\x17remove_response_headersR\x17\x61ppend_response_headersR\x16remove_request_headersR\x16\x61ppend_request_headers\"d\n\x10RouteDestination\x12@\n\x0b\x64\x65stination\x18\x01 \x01(\x0b\x32&.istio.networking.v1alpha3.DestinationB\x03\xe0\x41\x02\x12\x0e\n\x06weight\x18\x02 \x01(\x05\"\x8d\x02\n\x11L4MatchAttributes\x12\x1b\n\x13\x64\x65stination_subnets\x18\x01 \x03(\t\x12\x0c\n\x04port\x18\x02 \x01(\r\x12\x15\n\rsource_subnet\x18\x03 \x01(\t\x12U\n\rsource_labels\x18\x04 \x03(\x0b\x32>.istio.networking.v1alpha3.L4MatchAttributes.SourceLabelsEntry\x12\x10\n\x08gateways\x18\x05 \x03(\t\x12\x18\n\x10source_namespace\x18\x06 \x01(\t\x1a\x33\n\x11SourceLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xa5\x02\n\x12TLSMatchAttributes\x12\x16\n\tsni_hosts\x18\x01 \x03(\tB\x03\xe0\x41\x02\x12\x1b\n\x13\x64\x65stination_subnets\x18\x02 \x03(\t\x12\x0c\n\x04port\x18\x03 \x01(\r\x12V\n\rsource_labels\x18\x05 \x03(\x0b\x32?.istio.networking.v1alpha3.TLSMatchAttributes.SourceLabelsEntry\x12\x10\n\x08gateways\x18\x06 \x03(\t\x12\x18\n\x10source_namespace\x18\x07 \x01(\t\x1a\x33\n\x11SourceLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01J\x04\x08\x04\x10\x05R\rsource_subnet\"E\n\x0cHTTPRedirect\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x11\n\tauthority\x18\x02 \x01(\t\x12\x15\n\rredirect_code\x18\x03 \x01(\r\"-\n\x0bHTTPRewrite\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x11\n\tauthority\x18\x02 \x01(\t\"O\n\x0bStringMatch\x12\x0f\n\x05\x65xact\x18\x01 \x01(\tH\x00\x12\x10\n\x06prefix\x18\x02 \x01(\tH\x00\x12\x0f\n\x05regex\x18\x03 \x01(\tH\x00\x42\x0c\n\nmatch_type\"\xa5\x01\n\tHTTPRetry\x12\x15\n\x08\x61ttempts\x18\x01 \x01(\x05\x42\x03\xe0\x41\x02\x12\x32\n\x0fper_try_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x10\n\x08retry_on\x18\x03 \x01(\t\x12;\n\x17retry_remote_localities\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\"\x8e\x02\n\nCorsPolicy\x12\x18\n\x0c\x61llow_origin\x18\x01 \x03(\tB\x02\x18\x01\x12=\n\rallow_origins\x18\x07 \x03(\x0b\x32&.istio.networking.v1alpha3.StringMatch\x12\x15\n\rallow_methods\x18\x02 \x03(\t\x12\x15\n\rallow_headers\x18\x03 \x03(\t\x12\x16\n\x0e\x65xpose_headers\x18\x04 \x03(\t\x12*\n\x07max_age\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x35\n\x11\x61llow_credentials\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\"\x9e\x04\n\x12HTTPFaultInjection\x12\x42\n\x05\x64\x65lay\x18\x01 \x01(\x0b\x32\x33.istio.networking.v1alpha3.HTTPFaultInjection.Delay\x12\x42\n\x05\x61\x62ort\x18\x02 \x01(\x0b\x32\x33.istio.networking.v1alpha3.HTTPFaultInjection.Abort\x1a\xd6\x01\n\x05\x44\x65lay\x12\x13\n\x07percent\x18\x01 \x01(\x05\x42\x02\x18\x01\x12\x35\n\x0b\x66ixed_delay\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x02H\x00\x12\x36\n\x11\x65xponential_delay\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x12\x36\n\npercentage\x18\x05 \x01(\x0b\x32\".istio.networking.v1alpha3.PercentB\x11\n\x0fhttp_delay_type\x1a\xa6\x01\n\x05\x41\x62ort\x12\x1a\n\x0bhttp_status\x18\x02 \x01(\x05\x42\x03\xe0\x41\x02H\x00\x12\x15\n\x0bgrpc_status\x18\x03 \x01(\tH\x00\x12\x15\n\x0bhttp2_error\x18\x04 \x01(\tH\x00\x12\x36\n\npercentage\x18\x05 \x01(\x0b\x32\".istio.networking.v1alpha3.PercentB\x0c\n\nerror_typeJ\x04\x08\x01\x10\x02R\x07percent\"*\n\x0cPortSelector\x12\x0e\n\x06number\x18\x01 \x01(\rJ\x04\x08\x02\x10\x03R\x04name\"\x18\n\x07Percent\x12\r\n\x05value\x18\x01 \x01(\x01\x42\"Z istio.io/api/networking/v1alpha3b\x06proto3')
+ serialized_pb=_b('\n)networking/v1alpha3/virtual_service.proto\x12\x19istio.networking.v1alpha3\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\xdc\x01\n\x0eVirtualService\x12\r\n\x05hosts\x18\x01 \x03(\t\x12\x10\n\x08gateways\x18\x02 \x03(\t\x12\x32\n\x04http\x18\x03 \x03(\x0b\x32$.istio.networking.v1alpha3.HTTPRoute\x12\x30\n\x03tls\x18\x05 \x03(\x0b\x32#.istio.networking.v1alpha3.TLSRoute\x12\x30\n\x03tcp\x18\x04 \x03(\x0b\x32#.istio.networking.v1alpha3.TCPRoute\x12\x11\n\texport_to\x18\x06 \x03(\t\"g\n\x0b\x44\x65stination\x12\x11\n\x04host\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x0e\n\x06subset\x18\x02 \x01(\t\x12\x35\n\x04port\x18\x03 \x01(\x0b\x32\'.istio.networking.v1alpha3.PortSelector\"\x94\x07\n\tHTTPRoute\x12\x0c\n\x04name\x18\x11 \x01(\t\x12:\n\x05match\x18\x01 \x03(\x0b\x32+.istio.networking.v1alpha3.HTTPMatchRequest\x12>\n\x05route\x18\x02 \x03(\x0b\x32/.istio.networking.v1alpha3.HTTPRouteDestination\x12\x39\n\x08redirect\x18\x03 \x01(\x0b\x32\'.istio.networking.v1alpha3.HTTPRedirect\x12\x35\n\x08\x64\x65legate\x18\x14 \x01(\x0b\x32#.istio.networking.v1alpha3.Delegate\x12\x37\n\x07rewrite\x18\x04 \x01(\x0b\x32&.istio.networking.v1alpha3.HTTPRewrite\x12*\n\x07timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x35\n\x07retries\x18\x07 \x01(\x0b\x32$.istio.networking.v1alpha3.HTTPRetry\x12<\n\x05\x66\x61ult\x18\x08 \x01(\x0b\x32-.istio.networking.v1alpha3.HTTPFaultInjection\x12\x36\n\x06mirror\x18\t \x01(\x0b\x32&.istio.networking.v1alpha3.Destination\x12\x38\n\x0emirror_percent\x18\x12 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x02\x18\x01\x12=\n\x11mirror_percentage\x18\x13 \x01(\x0b\x32\".istio.networking.v1alpha3.Percent\x12:\n\x0b\x63ors_policy\x18\n \x01(\x0b\x32%.istio.networking.v1alpha3.CorsPolicy\x12\x33\n\x07headers\x18\x10 \x01(\x0b\x32\".istio.networking.v1alpha3.HeadersJ\x04\x08\x05\x10\x06J\x04\x08\x0b\x10\x10R\x11websocket_upgradeR\x0e\x61ppend_headersR\x17remove_response_headersR\x17\x61ppend_response_headersR\x16remove_request_headersR\x16\x61ppend_request_headers\"+\n\x08\x44\x65legate\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tnamespace\x18\x02 \x01(\t\"\xa9\x03\n\x07Headers\x12\x44\n\x07request\x18\x01 \x01(\x0b\x32\x33.istio.networking.v1alpha3.Headers.HeaderOperations\x12\x45\n\x08response\x18\x02 \x01(\x0b\x32\x33.istio.networking.v1alpha3.Headers.HeaderOperations\x1a\x90\x02\n\x10HeaderOperations\x12I\n\x03set\x18\x01 \x03(\x0b\x32<.istio.networking.v1alpha3.Headers.HeaderOperations.SetEntry\x12I\n\x03\x61\x64\x64\x18\x02 \x03(\x0b\x32<.istio.networking.v1alpha3.Headers.HeaderOperations.AddEntry\x12\x0e\n\x06remove\x18\x03 \x03(\t\x1a*\n\x08SetEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a*\n\x08\x41\x64\x64\x45ntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x89\x01\n\x08TLSRoute\x12\x41\n\x05match\x18\x01 \x03(\x0b\x32-.istio.networking.v1alpha3.TLSMatchAttributesB\x03\xe0\x41\x02\x12:\n\x05route\x18\x02 \x03(\x0b\x32+.istio.networking.v1alpha3.RouteDestination\"\x83\x01\n\x08TCPRoute\x12;\n\x05match\x18\x01 \x03(\x0b\x32,.istio.networking.v1alpha3.L4MatchAttributes\x12:\n\x05route\x18\x02 \x03(\x0b\x32+.istio.networking.v1alpha3.RouteDestination\"\xea\x07\n\x10HTTPMatchRequest\x12\x0c\n\x04name\x18\x0b \x01(\t\x12\x33\n\x03uri\x18\x01 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch\x12\x36\n\x06scheme\x18\x02 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch\x12\x36\n\x06method\x18\x03 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch\x12\x39\n\tauthority\x18\x04 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch\x12I\n\x07headers\x18\x05 \x03(\x0b\x32\x38.istio.networking.v1alpha3.HTTPMatchRequest.HeadersEntry\x12\x0c\n\x04port\x18\x06 \x01(\r\x12T\n\rsource_labels\x18\x07 \x03(\x0b\x32=.istio.networking.v1alpha3.HTTPMatchRequest.SourceLabelsEntry\x12\x10\n\x08gateways\x18\x08 \x03(\t\x12R\n\x0cquery_params\x18\t \x03(\x0b\x32<.istio.networking.v1alpha3.HTTPMatchRequest.QueryParamsEntry\x12\x17\n\x0fignore_uri_case\x18\n \x01(\x08\x12X\n\x0fwithout_headers\x18\x0c \x03(\x0b\x32?.istio.networking.v1alpha3.HTTPMatchRequest.WithoutHeadersEntry\x12\x18\n\x10source_namespace\x18\r \x01(\t\x1aV\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch:\x02\x38\x01\x1a\x33\n\x11SourceLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1aZ\n\x10QueryParamsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch:\x02\x38\x01\x1a]\n\x13WithoutHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32&.istio.networking.v1alpha3.StringMatch:\x02\x38\x01\"\x99\x03\n\x14HTTPRouteDestination\x12@\n\x0b\x64\x65stination\x18\x01 \x01(\x0b\x32&.istio.networking.v1alpha3.DestinationB\x03\xe0\x41\x02\x12\x0e\n\x06weight\x18\x02 \x01(\x05\x12\x33\n\x07headers\x18\x07 \x01(\x0b\x32\".istio.networking.v1alpha3.Headers\x12G\n\x10local_rate_limit\x18\x08 \x01(\x0b\x32-.istio.networking.v1alpha3.HTTPLocalRateLimit\x12I\n\x11global_rate_limit\x18\t \x01(\x0b\x32..istio.networking.v1alpha3.HTTPGlobalRateLimitJ\x04\x08\x03\x10\x07R\x17remove_response_headersR\x17\x61ppend_response_headersR\x16remove_request_headersR\x16\x61ppend_request_headers\"\xab\x01\n\x13HTTPGlobalRateLimit\x12\x13\n\x06\x64omain\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12*\n\x07timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x11\n\tfail_open\x18\x03 \x01(\x08\x12@\n\x07\x61\x63tions\x18\x04 \x03(\x0b\x32*.istio.networking.v1alpha3.RateLimitActionB\x03\xe0\x41\x02\"\xed\x04\n\x0fRateLimitAction\x12R\n\x0erequest_header\x18\x01 \x01(\x0b\x32\x38.istio.networking.v1alpha3.RateLimitAction.RequestHeaderH\x00\x12\x18\n\x0eremote_address\x18\x02 \x01(\x08H\x00\x12N\n\x0cheader_match\x18\x03 \x01(\x0b\x32\x36.istio.networking.v1alpha3.RateLimitAction.HeaderMatchH\x00\x12L\n\x0bgeneric_key\x18\x04 \x01(\x0b\x32\x35.istio.networking.v1alpha3.RateLimitAction.GenericKeyH\x00\x1a^\n\rRequestHeader\x12\x18\n\x0bheader_name\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x1b\n\x0e\x64\x65scriptor_key\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12\x16\n\x0eskip_if_absent\x18\x03 \x01(\t\x1a\x9e\x01\n\x0bHeaderMatch\x12\x1d\n\x10\x64\x65scriptor_value\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x14\n\x0c\x65xpect_match\x18\x02 \x01(\t\x12\x18\n\x0bheader_name\x18\x03 \x01(\tB\x03\xe0\x41\x02\x12\x0f\n\x05\x65xact\x18\x04 \x01(\tH\x00\x12\x10\n\x06prefix\x18\x05 \x01(\tH\x00\x12\x0f\n\x05regex\x18\x06 \x01(\tH\x00\x42\x0c\n\nmatch_type\x1a\x43\n\nGenericKey\x12\x16\n\x0e\x64\x65scriptor_key\x18\x01 \x01(\t\x12\x1d\n\x10\x64\x65scriptor_value\x18\x02 \x01(\tB\x03\xe0\x41\x02\x42\x08\n\x06\x61\x63tion\"l\n\x12HTTPLocalRateLimit\x12\x13\n\x0bstatus_code\x18\x01 \x01(\x05\x12\x41\n\x0ctoken_bucket\x18\x02 \x01(\x0b\x32&.istio.networking.v1alpha3.TokenBucketB\x03\xe0\x41\x02\"g\n\x0bTokenBucket\x12\x12\n\nmax_tokens\x18\x01 \x01(\r\x12\x17\n\x0ftokens_per_fill\x18\x02 \x01(\r\x12+\n\x08interval\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xf0\x01\n\x10RouteDestination\x12@\n\x0b\x64\x65stination\x18\x01 \x01(\x0b\x32&.istio.networking.v1alpha3.DestinationB\x03\xe0\x41\x02\x12\x0e\n\x06weight\x18\x02 \x01(\x05\x12\x43\n\x10local_rate_limit\x18\x03 \x01(\x0b\x32).istio.networking.v1alpha3.LocalRateLimit\x12\x45\n\x11global_rate_limit\x18\x04 \x01(\x0b\x32*.istio.networking.v1alpha3.GlobalRateLimit\"S\n\x0eLocalRateLimit\x12\x41\n\x0ctoken_bucket\x18\x01 \x01(\x0b\x32&.istio.networking.v1alpha3.TokenBucketB\x03\xe0\x41\x02\"\xd8\x02\n\x0fGlobalRateLimit\x12\x13\n\x06\x64omain\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12*\n\x07timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x11\n\tfail_open\x18\x03 \x01(\x08\x12X\n\x0b\x64\x65scriptors\x18\x04 \x01(\x0b\x32>.istio.networking.v1alpha3.GlobalRateLimit.RateLimitDescriptorB\x03\xe0\x41\x02\x1a\x96\x01\n\x13RateLimitDescriptor\x12Z\n\x07\x65ntries\x18\x01 \x03(\x0b\x32\x44.istio.networking.v1alpha3.GlobalRateLimit.RateLimitDescriptor.EntryB\x03\xe0\x41\x02\x1a#\n\x05\x45ntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\x8d\x02\n\x11L4MatchAttributes\x12\x1b\n\x13\x64\x65stination_subnets\x18\x01 \x03(\t\x12\x0c\n\x04port\x18\x02 \x01(\r\x12\x15\n\rsource_subnet\x18\x03 \x01(\t\x12U\n\rsource_labels\x18\x04 \x03(\x0b\x32>.istio.networking.v1alpha3.L4MatchAttributes.SourceLabelsEntry\x12\x10\n\x08gateways\x18\x05 \x03(\t\x12\x18\n\x10source_namespace\x18\x06 \x01(\t\x1a\x33\n\x11SourceLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xa5\x02\n\x12TLSMatchAttributes\x12\x16\n\tsni_hosts\x18\x01 \x03(\tB\x03\xe0\x41\x02\x12\x1b\n\x13\x64\x65stination_subnets\x18\x02 \x03(\t\x12\x0c\n\x04port\x18\x03 \x01(\r\x12V\n\rsource_labels\x18\x05 \x03(\x0b\x32?.istio.networking.v1alpha3.TLSMatchAttributes.SourceLabelsEntry\x12\x10\n\x08gateways\x18\x06 \x03(\t\x12\x18\n\x10source_namespace\x18\x07 \x01(\t\x1a\x33\n\x11SourceLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01J\x04\x08\x04\x10\x05R\rsource_subnet\"E\n\x0cHTTPRedirect\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x11\n\tauthority\x18\x02 \x01(\t\x12\x15\n\rredirect_code\x18\x03 \x01(\r\"-\n\x0bHTTPRewrite\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x11\n\tauthority\x18\x02 \x01(\t\"O\n\x0bStringMatch\x12\x0f\n\x05\x65xact\x18\x01 \x01(\tH\x00\x12\x10\n\x06prefix\x18\x02 \x01(\tH\x00\x12\x0f\n\x05regex\x18\x03 \x01(\tH\x00\x42\x0c\n\nmatch_type\"\xa5\x01\n\tHTTPRetry\x12\x15\n\x08\x61ttempts\x18\x01 \x01(\x05\x42\x03\xe0\x41\x02\x12\x32\n\x0fper_try_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x10\n\x08retry_on\x18\x03 \x01(\t\x12;\n\x17retry_remote_localities\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\"\x8e\x02\n\nCorsPolicy\x12\x18\n\x0c\x61llow_origin\x18\x01 \x03(\tB\x02\x18\x01\x12=\n\rallow_origins\x18\x07 \x03(\x0b\x32&.istio.networking.v1alpha3.StringMatch\x12\x15\n\rallow_methods\x18\x02 \x03(\t\x12\x15\n\rallow_headers\x18\x03 \x03(\t\x12\x16\n\x0e\x65xpose_headers\x18\x04 \x03(\t\x12*\n\x07max_age\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x35\n\x11\x61llow_credentials\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\"\x9e\x04\n\x12HTTPFaultInjection\x12\x42\n\x05\x64\x65lay\x18\x01 \x01(\x0b\x32\x33.istio.networking.v1alpha3.HTTPFaultInjection.Delay\x12\x42\n\x05\x61\x62ort\x18\x02 \x01(\x0b\x32\x33.istio.networking.v1alpha3.HTTPFaultInjection.Abort\x1a\xd6\x01\n\x05\x44\x65lay\x12\x13\n\x07percent\x18\x01 \x01(\x05\x42\x02\x18\x01\x12\x35\n\x0b\x66ixed_delay\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x02H\x00\x12\x36\n\x11\x65xponential_delay\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x12\x36\n\npercentage\x18\x05 \x01(\x0b\x32\".istio.networking.v1alpha3.PercentB\x11\n\x0fhttp_delay_type\x1a\xa6\x01\n\x05\x41\x62ort\x12\x1a\n\x0bhttp_status\x18\x02 \x01(\x05\x42\x03\xe0\x41\x02H\x00\x12\x15\n\x0bgrpc_status\x18\x03 \x01(\tH\x00\x12\x15\n\x0bhttp2_error\x18\x04 \x01(\tH\x00\x12\x36\n\npercentage\x18\x05 \x01(\x0b\x32\".istio.networking.v1alpha3.PercentB\x0c\n\nerror_typeJ\x04\x08\x01\x10\x02R\x07percent\"*\n\x0cPortSelector\x12\x0e\n\x06number\x18\x01 \x01(\rJ\x04\x08\x02\x10\x03R\x04name\"\x18\n\x07Percent\x12\r\n\x05value\x18\x01 \x01(\x01\x42\"Z istio.io/api/networking/v1alpha3b\x06proto3')
,
dependencies=[google_dot_api_dot_field__behavior__pb2.DESCRIPTOR,google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,])
@@ -824,6 +824,20 @@
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='local_rate_limit', full_name='istio.networking.v1alpha3.HTTPRouteDestination.local_rate_limit', index=3,
+ number=8, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='global_rate_limit', full_name='istio.networking.v1alpha3.HTTPRouteDestination.global_rate_limit', index=4,
+ number=9, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
],
extensions=[
],
@@ -837,7 +851,346 @@
oneofs=[
],
serialized_start=3169,
- serialized_end=3430,
+ serialized_end=3578,
+)
+
+
+_HTTPGLOBALRATELIMIT = _descriptor.Descriptor(
+ name='HTTPGlobalRateLimit',
+ full_name='istio.networking.v1alpha3.HTTPGlobalRateLimit',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='domain', full_name='istio.networking.v1alpha3.HTTPGlobalRateLimit.domain', index=0,
+ number=1, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='timeout', full_name='istio.networking.v1alpha3.HTTPGlobalRateLimit.timeout', index=1,
+ number=2, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='fail_open', full_name='istio.networking.v1alpha3.HTTPGlobalRateLimit.fail_open', index=2,
+ number=3, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='actions', full_name='istio.networking.v1alpha3.HTTPGlobalRateLimit.actions', index=3,
+ number=4, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=3581,
+ serialized_end=3752,
+)
+
+
+_RATELIMITACTION_REQUESTHEADER = _descriptor.Descriptor(
+ name='RequestHeader',
+ full_name='istio.networking.v1alpha3.RateLimitAction.RequestHeader',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='header_name', full_name='istio.networking.v1alpha3.RateLimitAction.RequestHeader.header_name', index=0,
+ number=1, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='descriptor_key', full_name='istio.networking.v1alpha3.RateLimitAction.RequestHeader.descriptor_key', index=1,
+ number=2, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='skip_if_absent', full_name='istio.networking.v1alpha3.RateLimitAction.RequestHeader.skip_if_absent', index=2,
+ number=3, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=4042,
+ serialized_end=4136,
+)
+
+_RATELIMITACTION_HEADERMATCH = _descriptor.Descriptor(
+ name='HeaderMatch',
+ full_name='istio.networking.v1alpha3.RateLimitAction.HeaderMatch',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='descriptor_value', full_name='istio.networking.v1alpha3.RateLimitAction.HeaderMatch.descriptor_value', index=0,
+ number=1, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='expect_match', full_name='istio.networking.v1alpha3.RateLimitAction.HeaderMatch.expect_match', index=1,
+ number=2, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='header_name', full_name='istio.networking.v1alpha3.RateLimitAction.HeaderMatch.header_name', index=2,
+ number=3, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='exact', full_name='istio.networking.v1alpha3.RateLimitAction.HeaderMatch.exact', index=3,
+ number=4, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='prefix', full_name='istio.networking.v1alpha3.RateLimitAction.HeaderMatch.prefix', index=4,
+ number=5, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='regex', full_name='istio.networking.v1alpha3.RateLimitAction.HeaderMatch.regex', index=5,
+ number=6, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ _descriptor.OneofDescriptor(
+ name='match_type', full_name='istio.networking.v1alpha3.RateLimitAction.HeaderMatch.match_type',
+ index=0, containing_type=None, fields=[]),
+ ],
+ serialized_start=4139,
+ serialized_end=4297,
+)
+
+_RATELIMITACTION_GENERICKEY = _descriptor.Descriptor(
+ name='GenericKey',
+ full_name='istio.networking.v1alpha3.RateLimitAction.GenericKey',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='descriptor_key', full_name='istio.networking.v1alpha3.RateLimitAction.GenericKey.descriptor_key', index=0,
+ number=1, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='descriptor_value', full_name='istio.networking.v1alpha3.RateLimitAction.GenericKey.descriptor_value', index=1,
+ number=2, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=4299,
+ serialized_end=4366,
+)
+
+_RATELIMITACTION = _descriptor.Descriptor(
+ name='RateLimitAction',
+ full_name='istio.networking.v1alpha3.RateLimitAction',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='request_header', full_name='istio.networking.v1alpha3.RateLimitAction.request_header', index=0,
+ number=1, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='remote_address', full_name='istio.networking.v1alpha3.RateLimitAction.remote_address', index=1,
+ number=2, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='header_match', full_name='istio.networking.v1alpha3.RateLimitAction.header_match', index=2,
+ number=3, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='generic_key', full_name='istio.networking.v1alpha3.RateLimitAction.generic_key', index=3,
+ number=4, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[_RATELIMITACTION_REQUESTHEADER, _RATELIMITACTION_HEADERMATCH, _RATELIMITACTION_GENERICKEY, ],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ _descriptor.OneofDescriptor(
+ name='action', full_name='istio.networking.v1alpha3.RateLimitAction.action',
+ index=0, containing_type=None, fields=[]),
+ ],
+ serialized_start=3755,
+ serialized_end=4376,
+)
+
+
+_HTTPLOCALRATELIMIT = _descriptor.Descriptor(
+ name='HTTPLocalRateLimit',
+ full_name='istio.networking.v1alpha3.HTTPLocalRateLimit',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='status_code', full_name='istio.networking.v1alpha3.HTTPLocalRateLimit.status_code', index=0,
+ number=1, type=5, cpp_type=1, label=1,
+ has_default_value=False, default_value=0,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='token_bucket', full_name='istio.networking.v1alpha3.HTTPLocalRateLimit.token_bucket', index=1,
+ number=2, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=4378,
+ serialized_end=4486,
+)
+
+
+_TOKENBUCKET = _descriptor.Descriptor(
+ name='TokenBucket',
+ full_name='istio.networking.v1alpha3.TokenBucket',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='max_tokens', full_name='istio.networking.v1alpha3.TokenBucket.max_tokens', index=0,
+ number=1, type=13, cpp_type=3, label=1,
+ has_default_value=False, default_value=0,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='tokens_per_fill', full_name='istio.networking.v1alpha3.TokenBucket.tokens_per_fill', index=1,
+ number=2, type=13, cpp_type=3, label=1,
+ has_default_value=False, default_value=0,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='interval', full_name='istio.networking.v1alpha3.TokenBucket.interval', index=2,
+ number=3, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=4488,
+ serialized_end=4591,
)
@@ -862,6 +1215,20 @@
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='local_rate_limit', full_name='istio.networking.v1alpha3.RouteDestination.local_rate_limit', index=2,
+ number=3, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='global_rate_limit', full_name='istio.networking.v1alpha3.RouteDestination.global_rate_limit', index=3,
+ number=4, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
],
extensions=[
],
@@ -874,8 +1241,158 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3432,
- serialized_end=3532,
+ serialized_start=4594,
+ serialized_end=4834,
+)
+
+
+_LOCALRATELIMIT = _descriptor.Descriptor(
+ name='LocalRateLimit',
+ full_name='istio.networking.v1alpha3.LocalRateLimit',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='token_bucket', full_name='istio.networking.v1alpha3.LocalRateLimit.token_bucket', index=0,
+ number=1, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=4836,
+ serialized_end=4919,
+)
+
+
+_GLOBALRATELIMIT_RATELIMITDESCRIPTOR_ENTRY = _descriptor.Descriptor(
+ name='Entry',
+ full_name='istio.networking.v1alpha3.GlobalRateLimit.RateLimitDescriptor.Entry',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='key', full_name='istio.networking.v1alpha3.GlobalRateLimit.RateLimitDescriptor.Entry.key', index=0,
+ number=1, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='value', full_name='istio.networking.v1alpha3.GlobalRateLimit.RateLimitDescriptor.Entry.value', index=1,
+ number=2, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=5231,
+ serialized_end=5266,
+)
+
+_GLOBALRATELIMIT_RATELIMITDESCRIPTOR = _descriptor.Descriptor(
+ name='RateLimitDescriptor',
+ full_name='istio.networking.v1alpha3.GlobalRateLimit.RateLimitDescriptor',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='entries', full_name='istio.networking.v1alpha3.GlobalRateLimit.RateLimitDescriptor.entries', index=0,
+ number=1, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[_GLOBALRATELIMIT_RATELIMITDESCRIPTOR_ENTRY, ],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=5116,
+ serialized_end=5266,
+)
+
+_GLOBALRATELIMIT = _descriptor.Descriptor(
+ name='GlobalRateLimit',
+ full_name='istio.networking.v1alpha3.GlobalRateLimit',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='domain', full_name='istio.networking.v1alpha3.GlobalRateLimit.domain', index=0,
+ number=1, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='timeout', full_name='istio.networking.v1alpha3.GlobalRateLimit.timeout', index=1,
+ number=2, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='fail_open', full_name='istio.networking.v1alpha3.GlobalRateLimit.fail_open', index=2,
+ number=3, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='descriptors', full_name='istio.networking.v1alpha3.GlobalRateLimit.descriptors', index=3,
+ number=4, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[_GLOBALRATELIMIT_RATELIMITDESCRIPTOR, ],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=4922,
+ serialized_end=5266,
)
@@ -977,8 +1494,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3535,
- serialized_end=3804,
+ serialized_start=5269,
+ serialized_end=5538,
)
@@ -1080,8 +1597,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3807,
- serialized_end=4100,
+ serialized_start=5541,
+ serialized_end=5834,
)
@@ -1125,8 +1642,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4102,
- serialized_end=4171,
+ serialized_start=5836,
+ serialized_end=5905,
)
@@ -1163,8 +1680,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4173,
- serialized_end=4218,
+ serialized_start=5907,
+ serialized_end=5952,
)
@@ -1211,8 +1728,8 @@
name='match_type', full_name='istio.networking.v1alpha3.StringMatch.match_type',
index=0, containing_type=None, fields=[]),
],
- serialized_start=4220,
- serialized_end=4299,
+ serialized_start=5954,
+ serialized_end=6033,
)
@@ -1263,8 +1780,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4302,
- serialized_end=4467,
+ serialized_start=6036,
+ serialized_end=6201,
)
@@ -1336,8 +1853,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4470,
- serialized_end=4740,
+ serialized_start=6204,
+ serialized_end=6474,
)
@@ -1391,8 +1908,8 @@
name='http_delay_type', full_name='istio.networking.v1alpha3.HTTPFaultInjection.Delay.http_delay_type',
index=0, containing_type=None, fields=[]),
],
- serialized_start=4902,
- serialized_end=5116,
+ serialized_start=6636,
+ serialized_end=6850,
)
_HTTPFAULTINJECTION_ABORT = _descriptor.Descriptor(
@@ -1445,8 +1962,8 @@
name='error_type', full_name='istio.networking.v1alpha3.HTTPFaultInjection.Abort.error_type',
index=0, containing_type=None, fields=[]),
],
- serialized_start=5119,
- serialized_end=5285,
+ serialized_start=6853,
+ serialized_end=7019,
)
_HTTPFAULTINJECTION = _descriptor.Descriptor(
@@ -1482,8 +1999,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4743,
- serialized_end=5285,
+ serialized_start=6477,
+ serialized_end=7019,
)
@@ -1513,8 +2030,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5287,
- serialized_end=5329,
+ serialized_start=7021,
+ serialized_end=7063,
)
@@ -1544,8 +2061,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5331,
- serialized_end=5355,
+ serialized_start=7065,
+ serialized_end=7089,
)
_VIRTUALSERVICE.fields_by_name['http'].message_type = _HTTPROUTE
@@ -1593,7 +2110,48 @@
_HTTPMATCHREQUEST.fields_by_name['without_headers'].message_type = _HTTPMATCHREQUEST_WITHOUTHEADERSENTRY
_HTTPROUTEDESTINATION.fields_by_name['destination'].message_type = _DESTINATION
_HTTPROUTEDESTINATION.fields_by_name['headers'].message_type = _HEADERS
+_HTTPROUTEDESTINATION.fields_by_name['local_rate_limit'].message_type = _HTTPLOCALRATELIMIT
+_HTTPROUTEDESTINATION.fields_by_name['global_rate_limit'].message_type = _HTTPGLOBALRATELIMIT
+_HTTPGLOBALRATELIMIT.fields_by_name['timeout'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION
+_HTTPGLOBALRATELIMIT.fields_by_name['actions'].message_type = _RATELIMITACTION
+_RATELIMITACTION_REQUESTHEADER.containing_type = _RATELIMITACTION
+_RATELIMITACTION_HEADERMATCH.containing_type = _RATELIMITACTION
+_RATELIMITACTION_HEADERMATCH.oneofs_by_name['match_type'].fields.append(
+ _RATELIMITACTION_HEADERMATCH.fields_by_name['exact'])
+_RATELIMITACTION_HEADERMATCH.fields_by_name['exact'].containing_oneof = _RATELIMITACTION_HEADERMATCH.oneofs_by_name['match_type']
+_RATELIMITACTION_HEADERMATCH.oneofs_by_name['match_type'].fields.append(
+ _RATELIMITACTION_HEADERMATCH.fields_by_name['prefix'])
+_RATELIMITACTION_HEADERMATCH.fields_by_name['prefix'].containing_oneof = _RATELIMITACTION_HEADERMATCH.oneofs_by_name['match_type']
+_RATELIMITACTION_HEADERMATCH.oneofs_by_name['match_type'].fields.append(
+ _RATELIMITACTION_HEADERMATCH.fields_by_name['regex'])
+_RATELIMITACTION_HEADERMATCH.fields_by_name['regex'].containing_oneof = _RATELIMITACTION_HEADERMATCH.oneofs_by_name['match_type']
+_RATELIMITACTION_GENERICKEY.containing_type = _RATELIMITACTION
+_RATELIMITACTION.fields_by_name['request_header'].message_type = _RATELIMITACTION_REQUESTHEADER
+_RATELIMITACTION.fields_by_name['header_match'].message_type = _RATELIMITACTION_HEADERMATCH
+_RATELIMITACTION.fields_by_name['generic_key'].message_type = _RATELIMITACTION_GENERICKEY
+_RATELIMITACTION.oneofs_by_name['action'].fields.append(
+ _RATELIMITACTION.fields_by_name['request_header'])
+_RATELIMITACTION.fields_by_name['request_header'].containing_oneof = _RATELIMITACTION.oneofs_by_name['action']
+_RATELIMITACTION.oneofs_by_name['action'].fields.append(
+ _RATELIMITACTION.fields_by_name['remote_address'])
+_RATELIMITACTION.fields_by_name['remote_address'].containing_oneof = _RATELIMITACTION.oneofs_by_name['action']
+_RATELIMITACTION.oneofs_by_name['action'].fields.append(
+ _RATELIMITACTION.fields_by_name['header_match'])
+_RATELIMITACTION.fields_by_name['header_match'].containing_oneof = _RATELIMITACTION.oneofs_by_name['action']
+_RATELIMITACTION.oneofs_by_name['action'].fields.append(
+ _RATELIMITACTION.fields_by_name['generic_key'])
+_RATELIMITACTION.fields_by_name['generic_key'].containing_oneof = _RATELIMITACTION.oneofs_by_name['action']
+_HTTPLOCALRATELIMIT.fields_by_name['token_bucket'].message_type = _TOKENBUCKET
+_TOKENBUCKET.fields_by_name['interval'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION
_ROUTEDESTINATION.fields_by_name['destination'].message_type = _DESTINATION
+_ROUTEDESTINATION.fields_by_name['local_rate_limit'].message_type = _LOCALRATELIMIT
+_ROUTEDESTINATION.fields_by_name['global_rate_limit'].message_type = _GLOBALRATELIMIT
+_LOCALRATELIMIT.fields_by_name['token_bucket'].message_type = _TOKENBUCKET
+_GLOBALRATELIMIT_RATELIMITDESCRIPTOR_ENTRY.containing_type = _GLOBALRATELIMIT_RATELIMITDESCRIPTOR
+_GLOBALRATELIMIT_RATELIMITDESCRIPTOR.fields_by_name['entries'].message_type = _GLOBALRATELIMIT_RATELIMITDESCRIPTOR_ENTRY
+_GLOBALRATELIMIT_RATELIMITDESCRIPTOR.containing_type = _GLOBALRATELIMIT
+_GLOBALRATELIMIT.fields_by_name['timeout'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION
+_GLOBALRATELIMIT.fields_by_name['descriptors'].message_type = _GLOBALRATELIMIT_RATELIMITDESCRIPTOR
_L4MATCHATTRIBUTES_SOURCELABELSENTRY.containing_type = _L4MATCHATTRIBUTES
_L4MATCHATTRIBUTES.fields_by_name['source_labels'].message_type = _L4MATCHATTRIBUTES_SOURCELABELSENTRY
_TLSMATCHATTRIBUTES_SOURCELABELSENTRY.containing_type = _TLSMATCHATTRIBUTES
@@ -1644,7 +2202,13 @@
DESCRIPTOR.message_types_by_name['TCPRoute'] = _TCPROUTE
DESCRIPTOR.message_types_by_name['HTTPMatchRequest'] = _HTTPMATCHREQUEST
DESCRIPTOR.message_types_by_name['HTTPRouteDestination'] = _HTTPROUTEDESTINATION
+DESCRIPTOR.message_types_by_name['HTTPGlobalRateLimit'] = _HTTPGLOBALRATELIMIT
+DESCRIPTOR.message_types_by_name['RateLimitAction'] = _RATELIMITACTION
+DESCRIPTOR.message_types_by_name['HTTPLocalRateLimit'] = _HTTPLOCALRATELIMIT
+DESCRIPTOR.message_types_by_name['TokenBucket'] = _TOKENBUCKET
DESCRIPTOR.message_types_by_name['RouteDestination'] = _ROUTEDESTINATION
+DESCRIPTOR.message_types_by_name['LocalRateLimit'] = _LOCALRATELIMIT
+DESCRIPTOR.message_types_by_name['GlobalRateLimit'] = _GLOBALRATELIMIT
DESCRIPTOR.message_types_by_name['L4MatchAttributes'] = _L4MATCHATTRIBUTES
DESCRIPTOR.message_types_by_name['TLSMatchAttributes'] = _TLSMATCHATTRIBUTES
DESCRIPTOR.message_types_by_name['HTTPRedirect'] = _HTTPREDIRECT
@@ -1776,6 +2340,58 @@
})
_sym_db.RegisterMessage(HTTPRouteDestination)
+HTTPGlobalRateLimit = _reflection.GeneratedProtocolMessageType('HTTPGlobalRateLimit', (_message.Message,), {
+ 'DESCRIPTOR' : _HTTPGLOBALRATELIMIT,
+ '__module__' : 'networking.v1alpha3.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.HTTPGlobalRateLimit)
+ })
+_sym_db.RegisterMessage(HTTPGlobalRateLimit)
+
+RateLimitAction = _reflection.GeneratedProtocolMessageType('RateLimitAction', (_message.Message,), {
+
+ 'RequestHeader' : _reflection.GeneratedProtocolMessageType('RequestHeader', (_message.Message,), {
+ 'DESCRIPTOR' : _RATELIMITACTION_REQUESTHEADER,
+ '__module__' : 'networking.v1alpha3.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.RateLimitAction.RequestHeader)
+ })
+ ,
+
+ 'HeaderMatch' : _reflection.GeneratedProtocolMessageType('HeaderMatch', (_message.Message,), {
+ 'DESCRIPTOR' : _RATELIMITACTION_HEADERMATCH,
+ '__module__' : 'networking.v1alpha3.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.RateLimitAction.HeaderMatch)
+ })
+ ,
+
+ 'GenericKey' : _reflection.GeneratedProtocolMessageType('GenericKey', (_message.Message,), {
+ 'DESCRIPTOR' : _RATELIMITACTION_GENERICKEY,
+ '__module__' : 'networking.v1alpha3.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.RateLimitAction.GenericKey)
+ })
+ ,
+ 'DESCRIPTOR' : _RATELIMITACTION,
+ '__module__' : 'networking.v1alpha3.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.RateLimitAction)
+ })
+_sym_db.RegisterMessage(RateLimitAction)
+_sym_db.RegisterMessage(RateLimitAction.RequestHeader)
+_sym_db.RegisterMessage(RateLimitAction.HeaderMatch)
+_sym_db.RegisterMessage(RateLimitAction.GenericKey)
+
+HTTPLocalRateLimit = _reflection.GeneratedProtocolMessageType('HTTPLocalRateLimit', (_message.Message,), {
+ 'DESCRIPTOR' : _HTTPLOCALRATELIMIT,
+ '__module__' : 'networking.v1alpha3.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.HTTPLocalRateLimit)
+ })
+_sym_db.RegisterMessage(HTTPLocalRateLimit)
+
+TokenBucket = _reflection.GeneratedProtocolMessageType('TokenBucket', (_message.Message,), {
+ 'DESCRIPTOR' : _TOKENBUCKET,
+ '__module__' : 'networking.v1alpha3.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.TokenBucket)
+ })
+_sym_db.RegisterMessage(TokenBucket)
+
RouteDestination = _reflection.GeneratedProtocolMessageType('RouteDestination', (_message.Message,), {
'DESCRIPTOR' : _ROUTEDESTINATION,
'__module__' : 'networking.v1alpha3.virtual_service_pb2'
@@ -1783,6 +2399,36 @@
})
_sym_db.RegisterMessage(RouteDestination)
+LocalRateLimit = _reflection.GeneratedProtocolMessageType('LocalRateLimit', (_message.Message,), {
+ 'DESCRIPTOR' : _LOCALRATELIMIT,
+ '__module__' : 'networking.v1alpha3.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.LocalRateLimit)
+ })
+_sym_db.RegisterMessage(LocalRateLimit)
+
+GlobalRateLimit = _reflection.GeneratedProtocolMessageType('GlobalRateLimit', (_message.Message,), {
+
+ 'RateLimitDescriptor' : _reflection.GeneratedProtocolMessageType('RateLimitDescriptor', (_message.Message,), {
+
+ 'Entry' : _reflection.GeneratedProtocolMessageType('Entry', (_message.Message,), {
+ 'DESCRIPTOR' : _GLOBALRATELIMIT_RATELIMITDESCRIPTOR_ENTRY,
+ '__module__' : 'networking.v1alpha3.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.GlobalRateLimit.RateLimitDescriptor.Entry)
+ })
+ ,
+ 'DESCRIPTOR' : _GLOBALRATELIMIT_RATELIMITDESCRIPTOR,
+ '__module__' : 'networking.v1alpha3.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.GlobalRateLimit.RateLimitDescriptor)
+ })
+ ,
+ 'DESCRIPTOR' : _GLOBALRATELIMIT,
+ '__module__' : 'networking.v1alpha3.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1alpha3.GlobalRateLimit)
+ })
+_sym_db.RegisterMessage(GlobalRateLimit)
+_sym_db.RegisterMessage(GlobalRateLimit.RateLimitDescriptor)
+_sym_db.RegisterMessage(GlobalRateLimit.RateLimitDescriptor.Entry)
+
L4MatchAttributes = _reflection.GeneratedProtocolMessageType('L4MatchAttributes', (_message.Message,), {
'SourceLabelsEntry' : _reflection.GeneratedProtocolMessageType('SourceLabelsEntry', (_message.Message,), {
@@ -1897,7 +2543,19 @@
_HTTPMATCHREQUEST_QUERYPARAMSENTRY._options = None
_HTTPMATCHREQUEST_WITHOUTHEADERSENTRY._options = None
_HTTPROUTEDESTINATION.fields_by_name['destination']._options = None
+_HTTPGLOBALRATELIMIT.fields_by_name['domain']._options = None
+_HTTPGLOBALRATELIMIT.fields_by_name['actions']._options = None
+_RATELIMITACTION_REQUESTHEADER.fields_by_name['header_name']._options = None
+_RATELIMITACTION_REQUESTHEADER.fields_by_name['descriptor_key']._options = None
+_RATELIMITACTION_HEADERMATCH.fields_by_name['descriptor_value']._options = None
+_RATELIMITACTION_HEADERMATCH.fields_by_name['header_name']._options = None
+_RATELIMITACTION_GENERICKEY.fields_by_name['descriptor_value']._options = None
+_HTTPLOCALRATELIMIT.fields_by_name['token_bucket']._options = None
_ROUTEDESTINATION.fields_by_name['destination']._options = None
+_LOCALRATELIMIT.fields_by_name['token_bucket']._options = None
+_GLOBALRATELIMIT_RATELIMITDESCRIPTOR.fields_by_name['entries']._options = None
+_GLOBALRATELIMIT.fields_by_name['domain']._options = None
+_GLOBALRATELIMIT.fields_by_name['descriptors']._options = None
_L4MATCHATTRIBUTES_SOURCELABELSENTRY._options = None
_TLSMATCHATTRIBUTES_SOURCELABELSENTRY._options = None
_TLSMATCHATTRIBUTES.fields_by_name['sni_hosts']._options = None
diff --git a/python/istio_api/networking/v1beta1/virtual_service_pb2.py b/python/istio_api/networking/v1beta1/virtual_service_pb2.py
index 7eb00c7d347..52cdb5ae0f6 100644
--- a/python/istio_api/networking/v1beta1/virtual_service_pb2.py
+++ b/python/istio_api/networking/v1beta1/virtual_service_pb2.py
@@ -23,7 +23,7 @@
package='istio.networking.v1beta1',
syntax='proto3',
serialized_options=_b('Z\037istio.io/api/networking/v1beta1'),
- serialized_pb=_b('\n(networking/v1beta1/virtual_service.proto\x12\x18istio.networking.v1beta1\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\xd9\x01\n\x0eVirtualService\x12\r\n\x05hosts\x18\x01 \x03(\t\x12\x10\n\x08gateways\x18\x02 \x03(\t\x12\x31\n\x04http\x18\x03 \x03(\x0b\x32#.istio.networking.v1beta1.HTTPRoute\x12/\n\x03tls\x18\x05 \x03(\x0b\x32\".istio.networking.v1beta1.TLSRoute\x12/\n\x03tcp\x18\x04 \x03(\x0b\x32\".istio.networking.v1beta1.TCPRoute\x12\x11\n\texport_to\x18\x06 \x03(\t\"f\n\x0b\x44\x65stination\x12\x11\n\x04host\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x0e\n\x06subset\x18\x02 \x01(\t\x12\x34\n\x04port\x18\x03 \x01(\x0b\x32&.istio.networking.v1beta1.PortSelector\"\x89\x07\n\tHTTPRoute\x12\x0c\n\x04name\x18\x11 \x01(\t\x12\x39\n\x05match\x18\x01 \x03(\x0b\x32*.istio.networking.v1beta1.HTTPMatchRequest\x12=\n\x05route\x18\x02 \x03(\x0b\x32..istio.networking.v1beta1.HTTPRouteDestination\x12\x38\n\x08redirect\x18\x03 \x01(\x0b\x32&.istio.networking.v1beta1.HTTPRedirect\x12\x34\n\x08\x64\x65legate\x18\x14 \x01(\x0b\x32\".istio.networking.v1beta1.Delegate\x12\x36\n\x07rewrite\x18\x04 \x01(\x0b\x32%.istio.networking.v1beta1.HTTPRewrite\x12*\n\x07timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x34\n\x07retries\x18\x07 \x01(\x0b\x32#.istio.networking.v1beta1.HTTPRetry\x12;\n\x05\x66\x61ult\x18\x08 \x01(\x0b\x32,.istio.networking.v1beta1.HTTPFaultInjection\x12\x35\n\x06mirror\x18\t \x01(\x0b\x32%.istio.networking.v1beta1.Destination\x12\x38\n\x0emirror_percent\x18\x12 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x02\x18\x01\x12<\n\x11mirror_percentage\x18\x13 \x01(\x0b\x32!.istio.networking.v1beta1.Percent\x12\x39\n\x0b\x63ors_policy\x18\n \x01(\x0b\x32$.istio.networking.v1beta1.CorsPolicy\x12\x32\n\x07headers\x18\x10 \x01(\x0b\x32!.istio.networking.v1beta1.HeadersJ\x04\x08\x05\x10\x06J\x04\x08\x0b\x10\x10R\x11websocket_upgradeR\x0e\x61ppend_headersR\x17remove_response_headersR\x17\x61ppend_response_headersR\x16remove_request_headersR\x16\x61ppend_request_headers\"+\n\x08\x44\x65legate\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tnamespace\x18\x02 \x01(\t\"\xa5\x03\n\x07Headers\x12\x43\n\x07request\x18\x01 \x01(\x0b\x32\x32.istio.networking.v1beta1.Headers.HeaderOperations\x12\x44\n\x08response\x18\x02 \x01(\x0b\x32\x32.istio.networking.v1beta1.Headers.HeaderOperations\x1a\x8e\x02\n\x10HeaderOperations\x12H\n\x03set\x18\x01 \x03(\x0b\x32;.istio.networking.v1beta1.Headers.HeaderOperations.SetEntry\x12H\n\x03\x61\x64\x64\x18\x02 \x03(\x0b\x32;.istio.networking.v1beta1.Headers.HeaderOperations.AddEntry\x12\x0e\n\x06remove\x18\x03 \x03(\t\x1a*\n\x08SetEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a*\n\x08\x41\x64\x64\x45ntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x87\x01\n\x08TLSRoute\x12@\n\x05match\x18\x01 \x03(\x0b\x32,.istio.networking.v1beta1.TLSMatchAttributesB\x03\xe0\x41\x02\x12\x39\n\x05route\x18\x02 \x03(\x0b\x32*.istio.networking.v1beta1.RouteDestination\"\x81\x01\n\x08TCPRoute\x12:\n\x05match\x18\x01 \x03(\x0b\x32+.istio.networking.v1beta1.L4MatchAttributes\x12\x39\n\x05route\x18\x02 \x03(\x0b\x32*.istio.networking.v1beta1.RouteDestination\"\xdf\x07\n\x10HTTPMatchRequest\x12\x0c\n\x04name\x18\x0b \x01(\t\x12\x32\n\x03uri\x18\x01 \x01(\x0b\x32%.istio.networking.v1beta1.StringMatch\x12\x35\n\x06scheme\x18\x02 \x01(\x0b\x32%.istio.networking.v1beta1.StringMatch\x12\x35\n\x06method\x18\x03 \x01(\x0b\x32%.istio.networking.v1beta1.StringMatch\x12\x38\n\tauthority\x18\x04 \x01(\x0b\x32%.istio.networking.v1beta1.StringMatch\x12H\n\x07headers\x18\x05 \x03(\x0b\x32\x37.istio.networking.v1beta1.HTTPMatchRequest.HeadersEntry\x12\x0c\n\x04port\x18\x06 \x01(\r\x12S\n\rsource_labels\x18\x07 \x03(\x0b\x32<.istio.networking.v1beta1.HTTPMatchRequest.SourceLabelsEntry\x12\x10\n\x08gateways\x18\x08 \x03(\t\x12Q\n\x0cquery_params\x18\t \x03(\x0b\x32;.istio.networking.v1beta1.HTTPMatchRequest.QueryParamsEntry\x12\x17\n\x0fignore_uri_case\x18\n \x01(\x08\x12W\n\x0fwithout_headers\x18\x0c \x03(\x0b\x32>.istio.networking.v1beta1.HTTPMatchRequest.WithoutHeadersEntry\x12\x18\n\x10source_namespace\x18\r \x01(\t\x1aU\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32%.istio.networking.v1beta1.StringMatch:\x02\x38\x01\x1a\x33\n\x11SourceLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1aY\n\x10QueryParamsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32%.istio.networking.v1beta1.StringMatch:\x02\x38\x01\x1a\\\n\x13WithoutHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32%.istio.networking.v1beta1.StringMatch:\x02\x38\x01\"\x83\x02\n\x14HTTPRouteDestination\x12?\n\x0b\x64\x65stination\x18\x01 \x01(\x0b\x32%.istio.networking.v1beta1.DestinationB\x03\xe0\x41\x02\x12\x0e\n\x06weight\x18\x02 \x01(\x05\x12\x32\n\x07headers\x18\x07 \x01(\x0b\x32!.istio.networking.v1beta1.HeadersJ\x04\x08\x03\x10\x07R\x17remove_response_headersR\x17\x61ppend_response_headersR\x16remove_request_headersR\x16\x61ppend_request_headers\"c\n\x10RouteDestination\x12?\n\x0b\x64\x65stination\x18\x01 \x01(\x0b\x32%.istio.networking.v1beta1.DestinationB\x03\xe0\x41\x02\x12\x0e\n\x06weight\x18\x02 \x01(\x05\"\x8c\x02\n\x11L4MatchAttributes\x12\x1b\n\x13\x64\x65stination_subnets\x18\x01 \x03(\t\x12\x0c\n\x04port\x18\x02 \x01(\r\x12\x15\n\rsource_subnet\x18\x03 \x01(\t\x12T\n\rsource_labels\x18\x04 \x03(\x0b\x32=.istio.networking.v1beta1.L4MatchAttributes.SourceLabelsEntry\x12\x10\n\x08gateways\x18\x05 \x03(\t\x12\x18\n\x10source_namespace\x18\x06 \x01(\t\x1a\x33\n\x11SourceLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xa4\x02\n\x12TLSMatchAttributes\x12\x16\n\tsni_hosts\x18\x01 \x03(\tB\x03\xe0\x41\x02\x12\x1b\n\x13\x64\x65stination_subnets\x18\x02 \x03(\t\x12\x0c\n\x04port\x18\x03 \x01(\r\x12U\n\rsource_labels\x18\x05 \x03(\x0b\x32>.istio.networking.v1beta1.TLSMatchAttributes.SourceLabelsEntry\x12\x10\n\x08gateways\x18\x06 \x03(\t\x12\x18\n\x10source_namespace\x18\x07 \x01(\t\x1a\x33\n\x11SourceLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01J\x04\x08\x04\x10\x05R\rsource_subnet\"E\n\x0cHTTPRedirect\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x11\n\tauthority\x18\x02 \x01(\t\x12\x15\n\rredirect_code\x18\x03 \x01(\r\"-\n\x0bHTTPRewrite\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x11\n\tauthority\x18\x02 \x01(\t\"O\n\x0bStringMatch\x12\x0f\n\x05\x65xact\x18\x01 \x01(\tH\x00\x12\x10\n\x06prefix\x18\x02 \x01(\tH\x00\x12\x0f\n\x05regex\x18\x03 \x01(\tH\x00\x42\x0c\n\nmatch_type\"\xa5\x01\n\tHTTPRetry\x12\x15\n\x08\x61ttempts\x18\x01 \x01(\x05\x42\x03\xe0\x41\x02\x12\x32\n\x0fper_try_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x10\n\x08retry_on\x18\x03 \x01(\t\x12;\n\x17retry_remote_localities\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\"\x8d\x02\n\nCorsPolicy\x12\x18\n\x0c\x61llow_origin\x18\x01 \x03(\tB\x02\x18\x01\x12<\n\rallow_origins\x18\x07 \x03(\x0b\x32%.istio.networking.v1beta1.StringMatch\x12\x15\n\rallow_methods\x18\x02 \x03(\t\x12\x15\n\rallow_headers\x18\x03 \x03(\t\x12\x16\n\x0e\x65xpose_headers\x18\x04 \x03(\t\x12*\n\x07max_age\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x35\n\x11\x61llow_credentials\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\"\x9a\x04\n\x12HTTPFaultInjection\x12\x41\n\x05\x64\x65lay\x18\x01 \x01(\x0b\x32\x32.istio.networking.v1beta1.HTTPFaultInjection.Delay\x12\x41\n\x05\x61\x62ort\x18\x02 \x01(\x0b\x32\x32.istio.networking.v1beta1.HTTPFaultInjection.Abort\x1a\xd5\x01\n\x05\x44\x65lay\x12\x13\n\x07percent\x18\x01 \x01(\x05\x42\x02\x18\x01\x12\x35\n\x0b\x66ixed_delay\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x02H\x00\x12\x36\n\x11\x65xponential_delay\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x12\x35\n\npercentage\x18\x05 \x01(\x0b\x32!.istio.networking.v1beta1.PercentB\x11\n\x0fhttp_delay_type\x1a\xa5\x01\n\x05\x41\x62ort\x12\x1a\n\x0bhttp_status\x18\x02 \x01(\x05\x42\x03\xe0\x41\x02H\x00\x12\x15\n\x0bgrpc_status\x18\x03 \x01(\tH\x00\x12\x15\n\x0bhttp2_error\x18\x04 \x01(\tH\x00\x12\x35\n\npercentage\x18\x05 \x01(\x0b\x32!.istio.networking.v1beta1.PercentB\x0c\n\nerror_typeJ\x04\x08\x01\x10\x02R\x07percent\"*\n\x0cPortSelector\x12\x0e\n\x06number\x18\x01 \x01(\rJ\x04\x08\x02\x10\x03R\x04name\"\x18\n\x07Percent\x12\r\n\x05value\x18\x01 \x01(\x01\x42!Z\x1fistio.io/api/networking/v1beta1b\x06proto3')
+ serialized_pb=_b('\n(networking/v1beta1/virtual_service.proto\x12\x18istio.networking.v1beta1\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\xd9\x01\n\x0eVirtualService\x12\r\n\x05hosts\x18\x01 \x03(\t\x12\x10\n\x08gateways\x18\x02 \x03(\t\x12\x31\n\x04http\x18\x03 \x03(\x0b\x32#.istio.networking.v1beta1.HTTPRoute\x12/\n\x03tls\x18\x05 \x03(\x0b\x32\".istio.networking.v1beta1.TLSRoute\x12/\n\x03tcp\x18\x04 \x03(\x0b\x32\".istio.networking.v1beta1.TCPRoute\x12\x11\n\texport_to\x18\x06 \x03(\t\"f\n\x0b\x44\x65stination\x12\x11\n\x04host\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x0e\n\x06subset\x18\x02 \x01(\t\x12\x34\n\x04port\x18\x03 \x01(\x0b\x32&.istio.networking.v1beta1.PortSelector\"\x89\x07\n\tHTTPRoute\x12\x0c\n\x04name\x18\x11 \x01(\t\x12\x39\n\x05match\x18\x01 \x03(\x0b\x32*.istio.networking.v1beta1.HTTPMatchRequest\x12=\n\x05route\x18\x02 \x03(\x0b\x32..istio.networking.v1beta1.HTTPRouteDestination\x12\x38\n\x08redirect\x18\x03 \x01(\x0b\x32&.istio.networking.v1beta1.HTTPRedirect\x12\x34\n\x08\x64\x65legate\x18\x14 \x01(\x0b\x32\".istio.networking.v1beta1.Delegate\x12\x36\n\x07rewrite\x18\x04 \x01(\x0b\x32%.istio.networking.v1beta1.HTTPRewrite\x12*\n\x07timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x34\n\x07retries\x18\x07 \x01(\x0b\x32#.istio.networking.v1beta1.HTTPRetry\x12;\n\x05\x66\x61ult\x18\x08 \x01(\x0b\x32,.istio.networking.v1beta1.HTTPFaultInjection\x12\x35\n\x06mirror\x18\t \x01(\x0b\x32%.istio.networking.v1beta1.Destination\x12\x38\n\x0emirror_percent\x18\x12 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x02\x18\x01\x12<\n\x11mirror_percentage\x18\x13 \x01(\x0b\x32!.istio.networking.v1beta1.Percent\x12\x39\n\x0b\x63ors_policy\x18\n \x01(\x0b\x32$.istio.networking.v1beta1.CorsPolicy\x12\x32\n\x07headers\x18\x10 \x01(\x0b\x32!.istio.networking.v1beta1.HeadersJ\x04\x08\x05\x10\x06J\x04\x08\x0b\x10\x10R\x11websocket_upgradeR\x0e\x61ppend_headersR\x17remove_response_headersR\x17\x61ppend_response_headersR\x16remove_request_headersR\x16\x61ppend_request_headers\"+\n\x08\x44\x65legate\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tnamespace\x18\x02 \x01(\t\"\xa5\x03\n\x07Headers\x12\x43\n\x07request\x18\x01 \x01(\x0b\x32\x32.istio.networking.v1beta1.Headers.HeaderOperations\x12\x44\n\x08response\x18\x02 \x01(\x0b\x32\x32.istio.networking.v1beta1.Headers.HeaderOperations\x1a\x8e\x02\n\x10HeaderOperations\x12H\n\x03set\x18\x01 \x03(\x0b\x32;.istio.networking.v1beta1.Headers.HeaderOperations.SetEntry\x12H\n\x03\x61\x64\x64\x18\x02 \x03(\x0b\x32;.istio.networking.v1beta1.Headers.HeaderOperations.AddEntry\x12\x0e\n\x06remove\x18\x03 \x03(\t\x1a*\n\x08SetEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a*\n\x08\x41\x64\x64\x45ntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x87\x01\n\x08TLSRoute\x12@\n\x05match\x18\x01 \x03(\x0b\x32,.istio.networking.v1beta1.TLSMatchAttributesB\x03\xe0\x41\x02\x12\x39\n\x05route\x18\x02 \x03(\x0b\x32*.istio.networking.v1beta1.RouteDestination\"\x81\x01\n\x08TCPRoute\x12:\n\x05match\x18\x01 \x03(\x0b\x32+.istio.networking.v1beta1.L4MatchAttributes\x12\x39\n\x05route\x18\x02 \x03(\x0b\x32*.istio.networking.v1beta1.RouteDestination\"\xdf\x07\n\x10HTTPMatchRequest\x12\x0c\n\x04name\x18\x0b \x01(\t\x12\x32\n\x03uri\x18\x01 \x01(\x0b\x32%.istio.networking.v1beta1.StringMatch\x12\x35\n\x06scheme\x18\x02 \x01(\x0b\x32%.istio.networking.v1beta1.StringMatch\x12\x35\n\x06method\x18\x03 \x01(\x0b\x32%.istio.networking.v1beta1.StringMatch\x12\x38\n\tauthority\x18\x04 \x01(\x0b\x32%.istio.networking.v1beta1.StringMatch\x12H\n\x07headers\x18\x05 \x03(\x0b\x32\x37.istio.networking.v1beta1.HTTPMatchRequest.HeadersEntry\x12\x0c\n\x04port\x18\x06 \x01(\r\x12S\n\rsource_labels\x18\x07 \x03(\x0b\x32<.istio.networking.v1beta1.HTTPMatchRequest.SourceLabelsEntry\x12\x10\n\x08gateways\x18\x08 \x03(\t\x12Q\n\x0cquery_params\x18\t \x03(\x0b\x32;.istio.networking.v1beta1.HTTPMatchRequest.QueryParamsEntry\x12\x17\n\x0fignore_uri_case\x18\n \x01(\x08\x12W\n\x0fwithout_headers\x18\x0c \x03(\x0b\x32>.istio.networking.v1beta1.HTTPMatchRequest.WithoutHeadersEntry\x12\x18\n\x10source_namespace\x18\r \x01(\t\x1aU\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32%.istio.networking.v1beta1.StringMatch:\x02\x38\x01\x1a\x33\n\x11SourceLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1aY\n\x10QueryParamsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32%.istio.networking.v1beta1.StringMatch:\x02\x38\x01\x1a\\\n\x13WithoutHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32%.istio.networking.v1beta1.StringMatch:\x02\x38\x01\"\x95\x03\n\x14HTTPRouteDestination\x12?\n\x0b\x64\x65stination\x18\x01 \x01(\x0b\x32%.istio.networking.v1beta1.DestinationB\x03\xe0\x41\x02\x12\x0e\n\x06weight\x18\x02 \x01(\x05\x12\x32\n\x07headers\x18\x07 \x01(\x0b\x32!.istio.networking.v1beta1.Headers\x12\x46\n\x10local_rate_limit\x18\x08 \x01(\x0b\x32,.istio.networking.v1beta1.HTTPLocalRateLimit\x12H\n\x11global_rate_limit\x18\t \x01(\x0b\x32-.istio.networking.v1beta1.HTTPGlobalRateLimitJ\x04\x08\x03\x10\x07R\x17remove_response_headersR\x17\x61ppend_response_headersR\x16remove_request_headersR\x16\x61ppend_request_headers\"\xaa\x01\n\x13HTTPGlobalRateLimit\x12\x13\n\x06\x64omain\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12*\n\x07timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x11\n\tfail_open\x18\x03 \x01(\x08\x12?\n\x07\x61\x63tions\x18\x04 \x03(\x0b\x32).istio.networking.v1beta1.RateLimitActionB\x03\xe0\x41\x02\"\xea\x04\n\x0fRateLimitAction\x12Q\n\x0erequest_header\x18\x01 \x01(\x0b\x32\x37.istio.networking.v1beta1.RateLimitAction.RequestHeaderH\x00\x12\x18\n\x0eremote_address\x18\x02 \x01(\x08H\x00\x12M\n\x0cheader_match\x18\x03 \x01(\x0b\x32\x35.istio.networking.v1beta1.RateLimitAction.HeaderMatchH\x00\x12K\n\x0bgeneric_key\x18\x04 \x01(\x0b\x32\x34.istio.networking.v1beta1.RateLimitAction.GenericKeyH\x00\x1a^\n\rRequestHeader\x12\x18\n\x0bheader_name\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x1b\n\x0e\x64\x65scriptor_key\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12\x16\n\x0eskip_if_absent\x18\x03 \x01(\t\x1a\x9e\x01\n\x0bHeaderMatch\x12\x1d\n\x10\x64\x65scriptor_value\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x14\n\x0c\x65xpect_match\x18\x02 \x01(\t\x12\x18\n\x0bheader_name\x18\x03 \x01(\tB\x03\xe0\x41\x02\x12\x0f\n\x05\x65xact\x18\x04 \x01(\tH\x00\x12\x10\n\x06prefix\x18\x05 \x01(\tH\x00\x12\x0f\n\x05regex\x18\x06 \x01(\tH\x00\x42\x0c\n\nmatch_type\x1a\x43\n\nGenericKey\x12\x16\n\x0e\x64\x65scriptor_key\x18\x01 \x01(\t\x12\x1d\n\x10\x64\x65scriptor_value\x18\x02 \x01(\tB\x03\xe0\x41\x02\x42\x08\n\x06\x61\x63tion\"k\n\x12HTTPLocalRateLimit\x12\x13\n\x0bstatus_code\x18\x01 \x01(\x05\x12@\n\x0ctoken_bucket\x18\x02 \x01(\x0b\x32%.istio.networking.v1beta1.TokenBucketB\x03\xe0\x41\x02\"g\n\x0bTokenBucket\x12\x12\n\nmax_tokens\x18\x01 \x01(\r\x12\x17\n\x0ftokens_per_fill\x18\x02 \x01(\r\x12+\n\x08interval\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xed\x01\n\x10RouteDestination\x12?\n\x0b\x64\x65stination\x18\x01 \x01(\x0b\x32%.istio.networking.v1beta1.DestinationB\x03\xe0\x41\x02\x12\x0e\n\x06weight\x18\x02 \x01(\x05\x12\x42\n\x10local_rate_limit\x18\x03 \x01(\x0b\x32(.istio.networking.v1beta1.LocalRateLimit\x12\x44\n\x11global_rate_limit\x18\x04 \x01(\x0b\x32).istio.networking.v1beta1.GlobalRateLimit\"R\n\x0eLocalRateLimit\x12@\n\x0ctoken_bucket\x18\x01 \x01(\x0b\x32%.istio.networking.v1beta1.TokenBucketB\x03\xe0\x41\x02\"\xd6\x02\n\x0fGlobalRateLimit\x12\x13\n\x06\x64omain\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12*\n\x07timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x11\n\tfail_open\x18\x03 \x01(\x08\x12W\n\x0b\x64\x65scriptors\x18\x04 \x01(\x0b\x32=.istio.networking.v1beta1.GlobalRateLimit.RateLimitDescriptorB\x03\xe0\x41\x02\x1a\x95\x01\n\x13RateLimitDescriptor\x12Y\n\x07\x65ntries\x18\x01 \x03(\x0b\x32\x43.istio.networking.v1beta1.GlobalRateLimit.RateLimitDescriptor.EntryB\x03\xe0\x41\x02\x1a#\n\x05\x45ntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\x8c\x02\n\x11L4MatchAttributes\x12\x1b\n\x13\x64\x65stination_subnets\x18\x01 \x03(\t\x12\x0c\n\x04port\x18\x02 \x01(\r\x12\x15\n\rsource_subnet\x18\x03 \x01(\t\x12T\n\rsource_labels\x18\x04 \x03(\x0b\x32=.istio.networking.v1beta1.L4MatchAttributes.SourceLabelsEntry\x12\x10\n\x08gateways\x18\x05 \x03(\t\x12\x18\n\x10source_namespace\x18\x06 \x01(\t\x1a\x33\n\x11SourceLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xa4\x02\n\x12TLSMatchAttributes\x12\x16\n\tsni_hosts\x18\x01 \x03(\tB\x03\xe0\x41\x02\x12\x1b\n\x13\x64\x65stination_subnets\x18\x02 \x03(\t\x12\x0c\n\x04port\x18\x03 \x01(\r\x12U\n\rsource_labels\x18\x05 \x03(\x0b\x32>.istio.networking.v1beta1.TLSMatchAttributes.SourceLabelsEntry\x12\x10\n\x08gateways\x18\x06 \x03(\t\x12\x18\n\x10source_namespace\x18\x07 \x01(\t\x1a\x33\n\x11SourceLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01J\x04\x08\x04\x10\x05R\rsource_subnet\"E\n\x0cHTTPRedirect\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x11\n\tauthority\x18\x02 \x01(\t\x12\x15\n\rredirect_code\x18\x03 \x01(\r\"-\n\x0bHTTPRewrite\x12\x0b\n\x03uri\x18\x01 \x01(\t\x12\x11\n\tauthority\x18\x02 \x01(\t\"O\n\x0bStringMatch\x12\x0f\n\x05\x65xact\x18\x01 \x01(\tH\x00\x12\x10\n\x06prefix\x18\x02 \x01(\tH\x00\x12\x0f\n\x05regex\x18\x03 \x01(\tH\x00\x42\x0c\n\nmatch_type\"\xa5\x01\n\tHTTPRetry\x12\x15\n\x08\x61ttempts\x18\x01 \x01(\x05\x42\x03\xe0\x41\x02\x12\x32\n\x0fper_try_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x10\n\x08retry_on\x18\x03 \x01(\t\x12;\n\x17retry_remote_localities\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\"\x8d\x02\n\nCorsPolicy\x12\x18\n\x0c\x61llow_origin\x18\x01 \x03(\tB\x02\x18\x01\x12<\n\rallow_origins\x18\x07 \x03(\x0b\x32%.istio.networking.v1beta1.StringMatch\x12\x15\n\rallow_methods\x18\x02 \x03(\t\x12\x15\n\rallow_headers\x18\x03 \x03(\t\x12\x16\n\x0e\x65xpose_headers\x18\x04 \x03(\t\x12*\n\x07max_age\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x35\n\x11\x61llow_credentials\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\"\x9a\x04\n\x12HTTPFaultInjection\x12\x41\n\x05\x64\x65lay\x18\x01 \x01(\x0b\x32\x32.istio.networking.v1beta1.HTTPFaultInjection.Delay\x12\x41\n\x05\x61\x62ort\x18\x02 \x01(\x0b\x32\x32.istio.networking.v1beta1.HTTPFaultInjection.Abort\x1a\xd5\x01\n\x05\x44\x65lay\x12\x13\n\x07percent\x18\x01 \x01(\x05\x42\x02\x18\x01\x12\x35\n\x0b\x66ixed_delay\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x02H\x00\x12\x36\n\x11\x65xponential_delay\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x12\x35\n\npercentage\x18\x05 \x01(\x0b\x32!.istio.networking.v1beta1.PercentB\x11\n\x0fhttp_delay_type\x1a\xa5\x01\n\x05\x41\x62ort\x12\x1a\n\x0bhttp_status\x18\x02 \x01(\x05\x42\x03\xe0\x41\x02H\x00\x12\x15\n\x0bgrpc_status\x18\x03 \x01(\tH\x00\x12\x15\n\x0bhttp2_error\x18\x04 \x01(\tH\x00\x12\x35\n\npercentage\x18\x05 \x01(\x0b\x32!.istio.networking.v1beta1.PercentB\x0c\n\nerror_typeJ\x04\x08\x01\x10\x02R\x07percent\"*\n\x0cPortSelector\x12\x0e\n\x06number\x18\x01 \x01(\rJ\x04\x08\x02\x10\x03R\x04name\"\x18\n\x07Percent\x12\r\n\x05value\x18\x01 \x01(\x01\x42!Z\x1fistio.io/api/networking/v1beta1b\x06proto3')
,
dependencies=[google_dot_api_dot_field__behavior__pb2.DESCRIPTOR,google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,])
@@ -824,6 +824,20 @@
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='local_rate_limit', full_name='istio.networking.v1beta1.HTTPRouteDestination.local_rate_limit', index=3,
+ number=8, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='global_rate_limit', full_name='istio.networking.v1beta1.HTTPRouteDestination.global_rate_limit', index=4,
+ number=9, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
],
extensions=[
],
@@ -837,7 +851,346 @@
oneofs=[
],
serialized_start=3133,
- serialized_end=3392,
+ serialized_end=3538,
+)
+
+
+_HTTPGLOBALRATELIMIT = _descriptor.Descriptor(
+ name='HTTPGlobalRateLimit',
+ full_name='istio.networking.v1beta1.HTTPGlobalRateLimit',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='domain', full_name='istio.networking.v1beta1.HTTPGlobalRateLimit.domain', index=0,
+ number=1, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='timeout', full_name='istio.networking.v1beta1.HTTPGlobalRateLimit.timeout', index=1,
+ number=2, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='fail_open', full_name='istio.networking.v1beta1.HTTPGlobalRateLimit.fail_open', index=2,
+ number=3, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='actions', full_name='istio.networking.v1beta1.HTTPGlobalRateLimit.actions', index=3,
+ number=4, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=3541,
+ serialized_end=3711,
+)
+
+
+_RATELIMITACTION_REQUESTHEADER = _descriptor.Descriptor(
+ name='RequestHeader',
+ full_name='istio.networking.v1beta1.RateLimitAction.RequestHeader',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='header_name', full_name='istio.networking.v1beta1.RateLimitAction.RequestHeader.header_name', index=0,
+ number=1, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='descriptor_key', full_name='istio.networking.v1beta1.RateLimitAction.RequestHeader.descriptor_key', index=1,
+ number=2, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='skip_if_absent', full_name='istio.networking.v1beta1.RateLimitAction.RequestHeader.skip_if_absent', index=2,
+ number=3, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=3998,
+ serialized_end=4092,
+)
+
+_RATELIMITACTION_HEADERMATCH = _descriptor.Descriptor(
+ name='HeaderMatch',
+ full_name='istio.networking.v1beta1.RateLimitAction.HeaderMatch',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='descriptor_value', full_name='istio.networking.v1beta1.RateLimitAction.HeaderMatch.descriptor_value', index=0,
+ number=1, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='expect_match', full_name='istio.networking.v1beta1.RateLimitAction.HeaderMatch.expect_match', index=1,
+ number=2, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='header_name', full_name='istio.networking.v1beta1.RateLimitAction.HeaderMatch.header_name', index=2,
+ number=3, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='exact', full_name='istio.networking.v1beta1.RateLimitAction.HeaderMatch.exact', index=3,
+ number=4, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='prefix', full_name='istio.networking.v1beta1.RateLimitAction.HeaderMatch.prefix', index=4,
+ number=5, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='regex', full_name='istio.networking.v1beta1.RateLimitAction.HeaderMatch.regex', index=5,
+ number=6, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ _descriptor.OneofDescriptor(
+ name='match_type', full_name='istio.networking.v1beta1.RateLimitAction.HeaderMatch.match_type',
+ index=0, containing_type=None, fields=[]),
+ ],
+ serialized_start=4095,
+ serialized_end=4253,
+)
+
+_RATELIMITACTION_GENERICKEY = _descriptor.Descriptor(
+ name='GenericKey',
+ full_name='istio.networking.v1beta1.RateLimitAction.GenericKey',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='descriptor_key', full_name='istio.networking.v1beta1.RateLimitAction.GenericKey.descriptor_key', index=0,
+ number=1, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='descriptor_value', full_name='istio.networking.v1beta1.RateLimitAction.GenericKey.descriptor_value', index=1,
+ number=2, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=4255,
+ serialized_end=4322,
+)
+
+_RATELIMITACTION = _descriptor.Descriptor(
+ name='RateLimitAction',
+ full_name='istio.networking.v1beta1.RateLimitAction',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='request_header', full_name='istio.networking.v1beta1.RateLimitAction.request_header', index=0,
+ number=1, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='remote_address', full_name='istio.networking.v1beta1.RateLimitAction.remote_address', index=1,
+ number=2, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='header_match', full_name='istio.networking.v1beta1.RateLimitAction.header_match', index=2,
+ number=3, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='generic_key', full_name='istio.networking.v1beta1.RateLimitAction.generic_key', index=3,
+ number=4, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[_RATELIMITACTION_REQUESTHEADER, _RATELIMITACTION_HEADERMATCH, _RATELIMITACTION_GENERICKEY, ],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ _descriptor.OneofDescriptor(
+ name='action', full_name='istio.networking.v1beta1.RateLimitAction.action',
+ index=0, containing_type=None, fields=[]),
+ ],
+ serialized_start=3714,
+ serialized_end=4332,
+)
+
+
+_HTTPLOCALRATELIMIT = _descriptor.Descriptor(
+ name='HTTPLocalRateLimit',
+ full_name='istio.networking.v1beta1.HTTPLocalRateLimit',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='status_code', full_name='istio.networking.v1beta1.HTTPLocalRateLimit.status_code', index=0,
+ number=1, type=5, cpp_type=1, label=1,
+ has_default_value=False, default_value=0,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='token_bucket', full_name='istio.networking.v1beta1.HTTPLocalRateLimit.token_bucket', index=1,
+ number=2, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=4334,
+ serialized_end=4441,
+)
+
+
+_TOKENBUCKET = _descriptor.Descriptor(
+ name='TokenBucket',
+ full_name='istio.networking.v1beta1.TokenBucket',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='max_tokens', full_name='istio.networking.v1beta1.TokenBucket.max_tokens', index=0,
+ number=1, type=13, cpp_type=3, label=1,
+ has_default_value=False, default_value=0,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='tokens_per_fill', full_name='istio.networking.v1beta1.TokenBucket.tokens_per_fill', index=1,
+ number=2, type=13, cpp_type=3, label=1,
+ has_default_value=False, default_value=0,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='interval', full_name='istio.networking.v1beta1.TokenBucket.interval', index=2,
+ number=3, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=4443,
+ serialized_end=4546,
)
@@ -862,6 +1215,20 @@
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='local_rate_limit', full_name='istio.networking.v1beta1.RouteDestination.local_rate_limit', index=2,
+ number=3, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='global_rate_limit', full_name='istio.networking.v1beta1.RouteDestination.global_rate_limit', index=3,
+ number=4, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
],
extensions=[
],
@@ -874,8 +1241,158 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3394,
- serialized_end=3493,
+ serialized_start=4549,
+ serialized_end=4786,
+)
+
+
+_LOCALRATELIMIT = _descriptor.Descriptor(
+ name='LocalRateLimit',
+ full_name='istio.networking.v1beta1.LocalRateLimit',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='token_bucket', full_name='istio.networking.v1beta1.LocalRateLimit.token_bucket', index=0,
+ number=1, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=4788,
+ serialized_end=4870,
+)
+
+
+_GLOBALRATELIMIT_RATELIMITDESCRIPTOR_ENTRY = _descriptor.Descriptor(
+ name='Entry',
+ full_name='istio.networking.v1beta1.GlobalRateLimit.RateLimitDescriptor.Entry',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='key', full_name='istio.networking.v1beta1.GlobalRateLimit.RateLimitDescriptor.Entry.key', index=0,
+ number=1, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='value', full_name='istio.networking.v1beta1.GlobalRateLimit.RateLimitDescriptor.Entry.value', index=1,
+ number=2, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=5180,
+ serialized_end=5215,
+)
+
+_GLOBALRATELIMIT_RATELIMITDESCRIPTOR = _descriptor.Descriptor(
+ name='RateLimitDescriptor',
+ full_name='istio.networking.v1beta1.GlobalRateLimit.RateLimitDescriptor',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='entries', full_name='istio.networking.v1beta1.GlobalRateLimit.RateLimitDescriptor.entries', index=0,
+ number=1, type=11, cpp_type=10, label=3,
+ has_default_value=False, default_value=[],
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[_GLOBALRATELIMIT_RATELIMITDESCRIPTOR_ENTRY, ],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=5066,
+ serialized_end=5215,
+)
+
+_GLOBALRATELIMIT = _descriptor.Descriptor(
+ name='GlobalRateLimit',
+ full_name='istio.networking.v1beta1.GlobalRateLimit',
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name='domain', full_name='istio.networking.v1beta1.GlobalRateLimit.domain', index=0,
+ number=1, type=9, cpp_type=9, label=1,
+ has_default_value=False, default_value=_b("").decode('utf-8'),
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='timeout', full_name='istio.networking.v1beta1.GlobalRateLimit.timeout', index=1,
+ number=2, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='fail_open', full_name='istio.networking.v1beta1.GlobalRateLimit.fail_open', index=2,
+ number=3, type=8, cpp_type=7, label=1,
+ has_default_value=False, default_value=False,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=None, file=DESCRIPTOR),
+ _descriptor.FieldDescriptor(
+ name='descriptors', full_name='istio.networking.v1beta1.GlobalRateLimit.descriptors', index=3,
+ number=4, type=11, cpp_type=10, label=1,
+ has_default_value=False, default_value=None,
+ message_type=None, enum_type=None, containing_type=None,
+ is_extension=False, extension_scope=None,
+ serialized_options=_b('\340A\002'), file=DESCRIPTOR),
+ ],
+ extensions=[
+ ],
+ nested_types=[_GLOBALRATELIMIT_RATELIMITDESCRIPTOR, ],
+ enum_types=[
+ ],
+ serialized_options=None,
+ is_extendable=False,
+ syntax='proto3',
+ extension_ranges=[],
+ oneofs=[
+ ],
+ serialized_start=4873,
+ serialized_end=5215,
)
@@ -977,8 +1494,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3496,
- serialized_end=3764,
+ serialized_start=5218,
+ serialized_end=5486,
)
@@ -1080,8 +1597,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=3767,
- serialized_end=4059,
+ serialized_start=5489,
+ serialized_end=5781,
)
@@ -1125,8 +1642,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4061,
- serialized_end=4130,
+ serialized_start=5783,
+ serialized_end=5852,
)
@@ -1163,8 +1680,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4132,
- serialized_end=4177,
+ serialized_start=5854,
+ serialized_end=5899,
)
@@ -1211,8 +1728,8 @@
name='match_type', full_name='istio.networking.v1beta1.StringMatch.match_type',
index=0, containing_type=None, fields=[]),
],
- serialized_start=4179,
- serialized_end=4258,
+ serialized_start=5901,
+ serialized_end=5980,
)
@@ -1263,8 +1780,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4261,
- serialized_end=4426,
+ serialized_start=5983,
+ serialized_end=6148,
)
@@ -1336,8 +1853,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4429,
- serialized_end=4698,
+ serialized_start=6151,
+ serialized_end=6420,
)
@@ -1391,8 +1908,8 @@
name='http_delay_type', full_name='istio.networking.v1beta1.HTTPFaultInjection.Delay.http_delay_type',
index=0, containing_type=None, fields=[]),
],
- serialized_start=4858,
- serialized_end=5071,
+ serialized_start=6580,
+ serialized_end=6793,
)
_HTTPFAULTINJECTION_ABORT = _descriptor.Descriptor(
@@ -1445,8 +1962,8 @@
name='error_type', full_name='istio.networking.v1beta1.HTTPFaultInjection.Abort.error_type',
index=0, containing_type=None, fields=[]),
],
- serialized_start=5074,
- serialized_end=5239,
+ serialized_start=6796,
+ serialized_end=6961,
)
_HTTPFAULTINJECTION = _descriptor.Descriptor(
@@ -1482,8 +1999,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=4701,
- serialized_end=5239,
+ serialized_start=6423,
+ serialized_end=6961,
)
@@ -1513,8 +2030,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5241,
- serialized_end=5283,
+ serialized_start=6963,
+ serialized_end=7005,
)
@@ -1544,8 +2061,8 @@
extension_ranges=[],
oneofs=[
],
- serialized_start=5285,
- serialized_end=5309,
+ serialized_start=7007,
+ serialized_end=7031,
)
_VIRTUALSERVICE.fields_by_name['http'].message_type = _HTTPROUTE
@@ -1593,7 +2110,48 @@
_HTTPMATCHREQUEST.fields_by_name['without_headers'].message_type = _HTTPMATCHREQUEST_WITHOUTHEADERSENTRY
_HTTPROUTEDESTINATION.fields_by_name['destination'].message_type = _DESTINATION
_HTTPROUTEDESTINATION.fields_by_name['headers'].message_type = _HEADERS
+_HTTPROUTEDESTINATION.fields_by_name['local_rate_limit'].message_type = _HTTPLOCALRATELIMIT
+_HTTPROUTEDESTINATION.fields_by_name['global_rate_limit'].message_type = _HTTPGLOBALRATELIMIT
+_HTTPGLOBALRATELIMIT.fields_by_name['timeout'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION
+_HTTPGLOBALRATELIMIT.fields_by_name['actions'].message_type = _RATELIMITACTION
+_RATELIMITACTION_REQUESTHEADER.containing_type = _RATELIMITACTION
+_RATELIMITACTION_HEADERMATCH.containing_type = _RATELIMITACTION
+_RATELIMITACTION_HEADERMATCH.oneofs_by_name['match_type'].fields.append(
+ _RATELIMITACTION_HEADERMATCH.fields_by_name['exact'])
+_RATELIMITACTION_HEADERMATCH.fields_by_name['exact'].containing_oneof = _RATELIMITACTION_HEADERMATCH.oneofs_by_name['match_type']
+_RATELIMITACTION_HEADERMATCH.oneofs_by_name['match_type'].fields.append(
+ _RATELIMITACTION_HEADERMATCH.fields_by_name['prefix'])
+_RATELIMITACTION_HEADERMATCH.fields_by_name['prefix'].containing_oneof = _RATELIMITACTION_HEADERMATCH.oneofs_by_name['match_type']
+_RATELIMITACTION_HEADERMATCH.oneofs_by_name['match_type'].fields.append(
+ _RATELIMITACTION_HEADERMATCH.fields_by_name['regex'])
+_RATELIMITACTION_HEADERMATCH.fields_by_name['regex'].containing_oneof = _RATELIMITACTION_HEADERMATCH.oneofs_by_name['match_type']
+_RATELIMITACTION_GENERICKEY.containing_type = _RATELIMITACTION
+_RATELIMITACTION.fields_by_name['request_header'].message_type = _RATELIMITACTION_REQUESTHEADER
+_RATELIMITACTION.fields_by_name['header_match'].message_type = _RATELIMITACTION_HEADERMATCH
+_RATELIMITACTION.fields_by_name['generic_key'].message_type = _RATELIMITACTION_GENERICKEY
+_RATELIMITACTION.oneofs_by_name['action'].fields.append(
+ _RATELIMITACTION.fields_by_name['request_header'])
+_RATELIMITACTION.fields_by_name['request_header'].containing_oneof = _RATELIMITACTION.oneofs_by_name['action']
+_RATELIMITACTION.oneofs_by_name['action'].fields.append(
+ _RATELIMITACTION.fields_by_name['remote_address'])
+_RATELIMITACTION.fields_by_name['remote_address'].containing_oneof = _RATELIMITACTION.oneofs_by_name['action']
+_RATELIMITACTION.oneofs_by_name['action'].fields.append(
+ _RATELIMITACTION.fields_by_name['header_match'])
+_RATELIMITACTION.fields_by_name['header_match'].containing_oneof = _RATELIMITACTION.oneofs_by_name['action']
+_RATELIMITACTION.oneofs_by_name['action'].fields.append(
+ _RATELIMITACTION.fields_by_name['generic_key'])
+_RATELIMITACTION.fields_by_name['generic_key'].containing_oneof = _RATELIMITACTION.oneofs_by_name['action']
+_HTTPLOCALRATELIMIT.fields_by_name['token_bucket'].message_type = _TOKENBUCKET
+_TOKENBUCKET.fields_by_name['interval'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION
_ROUTEDESTINATION.fields_by_name['destination'].message_type = _DESTINATION
+_ROUTEDESTINATION.fields_by_name['local_rate_limit'].message_type = _LOCALRATELIMIT
+_ROUTEDESTINATION.fields_by_name['global_rate_limit'].message_type = _GLOBALRATELIMIT
+_LOCALRATELIMIT.fields_by_name['token_bucket'].message_type = _TOKENBUCKET
+_GLOBALRATELIMIT_RATELIMITDESCRIPTOR_ENTRY.containing_type = _GLOBALRATELIMIT_RATELIMITDESCRIPTOR
+_GLOBALRATELIMIT_RATELIMITDESCRIPTOR.fields_by_name['entries'].message_type = _GLOBALRATELIMIT_RATELIMITDESCRIPTOR_ENTRY
+_GLOBALRATELIMIT_RATELIMITDESCRIPTOR.containing_type = _GLOBALRATELIMIT
+_GLOBALRATELIMIT.fields_by_name['timeout'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION
+_GLOBALRATELIMIT.fields_by_name['descriptors'].message_type = _GLOBALRATELIMIT_RATELIMITDESCRIPTOR
_L4MATCHATTRIBUTES_SOURCELABELSENTRY.containing_type = _L4MATCHATTRIBUTES
_L4MATCHATTRIBUTES.fields_by_name['source_labels'].message_type = _L4MATCHATTRIBUTES_SOURCELABELSENTRY
_TLSMATCHATTRIBUTES_SOURCELABELSENTRY.containing_type = _TLSMATCHATTRIBUTES
@@ -1644,7 +2202,13 @@
DESCRIPTOR.message_types_by_name['TCPRoute'] = _TCPROUTE
DESCRIPTOR.message_types_by_name['HTTPMatchRequest'] = _HTTPMATCHREQUEST
DESCRIPTOR.message_types_by_name['HTTPRouteDestination'] = _HTTPROUTEDESTINATION
+DESCRIPTOR.message_types_by_name['HTTPGlobalRateLimit'] = _HTTPGLOBALRATELIMIT
+DESCRIPTOR.message_types_by_name['RateLimitAction'] = _RATELIMITACTION
+DESCRIPTOR.message_types_by_name['HTTPLocalRateLimit'] = _HTTPLOCALRATELIMIT
+DESCRIPTOR.message_types_by_name['TokenBucket'] = _TOKENBUCKET
DESCRIPTOR.message_types_by_name['RouteDestination'] = _ROUTEDESTINATION
+DESCRIPTOR.message_types_by_name['LocalRateLimit'] = _LOCALRATELIMIT
+DESCRIPTOR.message_types_by_name['GlobalRateLimit'] = _GLOBALRATELIMIT
DESCRIPTOR.message_types_by_name['L4MatchAttributes'] = _L4MATCHATTRIBUTES
DESCRIPTOR.message_types_by_name['TLSMatchAttributes'] = _TLSMATCHATTRIBUTES
DESCRIPTOR.message_types_by_name['HTTPRedirect'] = _HTTPREDIRECT
@@ -1776,6 +2340,58 @@
})
_sym_db.RegisterMessage(HTTPRouteDestination)
+HTTPGlobalRateLimit = _reflection.GeneratedProtocolMessageType('HTTPGlobalRateLimit', (_message.Message,), {
+ 'DESCRIPTOR' : _HTTPGLOBALRATELIMIT,
+ '__module__' : 'networking.v1beta1.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1beta1.HTTPGlobalRateLimit)
+ })
+_sym_db.RegisterMessage(HTTPGlobalRateLimit)
+
+RateLimitAction = _reflection.GeneratedProtocolMessageType('RateLimitAction', (_message.Message,), {
+
+ 'RequestHeader' : _reflection.GeneratedProtocolMessageType('RequestHeader', (_message.Message,), {
+ 'DESCRIPTOR' : _RATELIMITACTION_REQUESTHEADER,
+ '__module__' : 'networking.v1beta1.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1beta1.RateLimitAction.RequestHeader)
+ })
+ ,
+
+ 'HeaderMatch' : _reflection.GeneratedProtocolMessageType('HeaderMatch', (_message.Message,), {
+ 'DESCRIPTOR' : _RATELIMITACTION_HEADERMATCH,
+ '__module__' : 'networking.v1beta1.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1beta1.RateLimitAction.HeaderMatch)
+ })
+ ,
+
+ 'GenericKey' : _reflection.GeneratedProtocolMessageType('GenericKey', (_message.Message,), {
+ 'DESCRIPTOR' : _RATELIMITACTION_GENERICKEY,
+ '__module__' : 'networking.v1beta1.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1beta1.RateLimitAction.GenericKey)
+ })
+ ,
+ 'DESCRIPTOR' : _RATELIMITACTION,
+ '__module__' : 'networking.v1beta1.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1beta1.RateLimitAction)
+ })
+_sym_db.RegisterMessage(RateLimitAction)
+_sym_db.RegisterMessage(RateLimitAction.RequestHeader)
+_sym_db.RegisterMessage(RateLimitAction.HeaderMatch)
+_sym_db.RegisterMessage(RateLimitAction.GenericKey)
+
+HTTPLocalRateLimit = _reflection.GeneratedProtocolMessageType('HTTPLocalRateLimit', (_message.Message,), {
+ 'DESCRIPTOR' : _HTTPLOCALRATELIMIT,
+ '__module__' : 'networking.v1beta1.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1beta1.HTTPLocalRateLimit)
+ })
+_sym_db.RegisterMessage(HTTPLocalRateLimit)
+
+TokenBucket = _reflection.GeneratedProtocolMessageType('TokenBucket', (_message.Message,), {
+ 'DESCRIPTOR' : _TOKENBUCKET,
+ '__module__' : 'networking.v1beta1.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1beta1.TokenBucket)
+ })
+_sym_db.RegisterMessage(TokenBucket)
+
RouteDestination = _reflection.GeneratedProtocolMessageType('RouteDestination', (_message.Message,), {
'DESCRIPTOR' : _ROUTEDESTINATION,
'__module__' : 'networking.v1beta1.virtual_service_pb2'
@@ -1783,6 +2399,36 @@
})
_sym_db.RegisterMessage(RouteDestination)
+LocalRateLimit = _reflection.GeneratedProtocolMessageType('LocalRateLimit', (_message.Message,), {
+ 'DESCRIPTOR' : _LOCALRATELIMIT,
+ '__module__' : 'networking.v1beta1.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1beta1.LocalRateLimit)
+ })
+_sym_db.RegisterMessage(LocalRateLimit)
+
+GlobalRateLimit = _reflection.GeneratedProtocolMessageType('GlobalRateLimit', (_message.Message,), {
+
+ 'RateLimitDescriptor' : _reflection.GeneratedProtocolMessageType('RateLimitDescriptor', (_message.Message,), {
+
+ 'Entry' : _reflection.GeneratedProtocolMessageType('Entry', (_message.Message,), {
+ 'DESCRIPTOR' : _GLOBALRATELIMIT_RATELIMITDESCRIPTOR_ENTRY,
+ '__module__' : 'networking.v1beta1.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1beta1.GlobalRateLimit.RateLimitDescriptor.Entry)
+ })
+ ,
+ 'DESCRIPTOR' : _GLOBALRATELIMIT_RATELIMITDESCRIPTOR,
+ '__module__' : 'networking.v1beta1.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1beta1.GlobalRateLimit.RateLimitDescriptor)
+ })
+ ,
+ 'DESCRIPTOR' : _GLOBALRATELIMIT,
+ '__module__' : 'networking.v1beta1.virtual_service_pb2'
+ # @@protoc_insertion_point(class_scope:istio.networking.v1beta1.GlobalRateLimit)
+ })
+_sym_db.RegisterMessage(GlobalRateLimit)
+_sym_db.RegisterMessage(GlobalRateLimit.RateLimitDescriptor)
+_sym_db.RegisterMessage(GlobalRateLimit.RateLimitDescriptor.Entry)
+
L4MatchAttributes = _reflection.GeneratedProtocolMessageType('L4MatchAttributes', (_message.Message,), {
'SourceLabelsEntry' : _reflection.GeneratedProtocolMessageType('SourceLabelsEntry', (_message.Message,), {
@@ -1897,7 +2543,19 @@
_HTTPMATCHREQUEST_QUERYPARAMSENTRY._options = None
_HTTPMATCHREQUEST_WITHOUTHEADERSENTRY._options = None
_HTTPROUTEDESTINATION.fields_by_name['destination']._options = None
+_HTTPGLOBALRATELIMIT.fields_by_name['domain']._options = None
+_HTTPGLOBALRATELIMIT.fields_by_name['actions']._options = None
+_RATELIMITACTION_REQUESTHEADER.fields_by_name['header_name']._options = None
+_RATELIMITACTION_REQUESTHEADER.fields_by_name['descriptor_key']._options = None
+_RATELIMITACTION_HEADERMATCH.fields_by_name['descriptor_value']._options = None
+_RATELIMITACTION_HEADERMATCH.fields_by_name['header_name']._options = None
+_RATELIMITACTION_GENERICKEY.fields_by_name['descriptor_value']._options = None
+_HTTPLOCALRATELIMIT.fields_by_name['token_bucket']._options = None
_ROUTEDESTINATION.fields_by_name['destination']._options = None
+_LOCALRATELIMIT.fields_by_name['token_bucket']._options = None
+_GLOBALRATELIMIT_RATELIMITDESCRIPTOR.fields_by_name['entries']._options = None
+_GLOBALRATELIMIT.fields_by_name['domain']._options = None
+_GLOBALRATELIMIT.fields_by_name['descriptors']._options = None
_L4MATCHATTRIBUTES_SOURCELABELSENTRY._options = None
_TLSMATCHATTRIBUTES_SOURCELABELSENTRY._options = None
_TLSMATCHATTRIBUTES.fields_by_name['sni_hosts']._options = None
|