diff --git a/.circleci/config.yml b/.circleci/config.yml index a3edfcf89f0..c43aa5f7655 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 defaults: &defaults working_directory: /src/istio.io/api docker: - - image: gcr.io/istio-testing/api-build-tools:2018-10-31 + - image: gcr.io/istio-testing/api-build-tools:2019-02-25 environment: GOPATH: /go OUT_PATH: /src diff --git a/Makefile b/Makefile index 4c9536a5f75..819042c0db8 100644 --- a/Makefile +++ b/Makefile @@ -13,9 +13,9 @@ out_path = $(OUT_PATH) docker_lock = protolock docker_tool = prototool else -gen_img := gcr.io/istio-testing/protoc:2018-06-12 +gen_img := gcr.io/istio-testing/protoc:2019-02-25 lock_img := gcr.io/istio-testing/protolock:2018-10-23 -all_img := gcr.io/istio-testing/api-build-tools:2018-10-31 +all_img := gcr.io/istio-testing/api-build-tools:2019-02-25 pwd := $(shell pwd) mount_dir := /src repo_dir := istio.io/api @@ -70,7 +70,8 @@ gogoslick_plugin := $(gogoslick_plugin_prefix)$(gogo_mapping):$(out_path) # protoc_gen_docs ######################## -protoc_gen_docs_plugin := --docs_out=warnings=true,mode=html_fragment_with_front_matter:$(repo_dir)/ +protoc_gen_docs_plugin := --docs_out=warnings=true,dictionary=$(repo_dir)/dictionaries/en-US,custom_word_list=$(repo_dir)/dictionaries/custom.txt,mode=html_fragment_with_front_matter:$(repo_dir)/ +protoc_gen_docs_plugin_for_networking := --docs_out=warnings=true,dictionary=$(repo_dir)/dictionaries/en-US,custom_word_list=$(repo_dir)/dictionaries/custom.txt,per_file=true,mode=html_fragment_with_front_matter:$(repo_dir)/ ##################### # Generation Rules @@ -240,14 +241,14 @@ routing_v1alpha3_path := networking/v1alpha3 routing_v1alpha3_protos := $(shell find networking/v1alpha3 -type f -name '*.proto' | sort) routing_v1alpha3_pb_gos := $(routing_v1alpha3_protos:.proto=.pb.go) routing_v1alpha3_pb_pythons := $(routing_v1alpha3_protos:.proto=_pb2.py) -routing_v1alpha3_pb_doc := $(routing_v1alpha3_path)/istio.routing.v1alpha3.pb.html +routing_v1alpha3_pb_docs := $(routing_v1alpha3_protos:.proto=.pb.html) -generate-routing-go: $(routing_v1alpha3_pb_gos) $(routing_v1alpha3_pb_doc) +generate-routing-go: $(routing_v1alpha3_pb_gos) $(routing_v1alpha3_pb_docs) -$(routing_v1alpha3_pb_gos) $(routing_v1alpha3_pb_doc): $(routing_v1alpha3_protos) +$(routing_v1alpha3_pb_gos) $(routing_v1alpha3_pb_docs): $(routing_v1alpha3_protos) ## Generate networking/v1alpha3/*.pb.go @$(docker_lock) status - @$(docker_gen) $(gogofast_plugin) $(protoc_gen_docs_plugin)$(routing_v1alpha3_path) $^ + @$(docker_gen) $(gogofast_plugin) $(protoc_gen_docs_plugin_for_networking)$(routing_v1alpha3_path) $^ generate-routing-python: $(routing_v1alpha3_pb_pythons) @@ -258,7 +259,7 @@ $(routing_v1alpha3_pb_pythons): $(routing_v1alpha3_protos) clean-routing: rm -f $(routing_v1alpha3_pb_gos) - rm -f $(routing_v1alpha3_pb_doc) + rm -f $(routing_v1alpha3_pb_docs) ##################### # rbac/... @@ -329,10 +330,10 @@ envoy_pb_pythons := $(envoy_protos:.proto=_pb2.py) generate-envoy-go: $(envoy_pb_gos) $(envoy_pb_doc) # Envoy APIs is internal APIs, documents is not required. -$(envoy_pb_gos): $(envoy_protos) +$(envoy_pb_gos): %.pb.go : %.proto ## Generate envoy/*/*.pb.go @$(docker_lock) status - @$(docker_gen) $(gogofast_plugin) $^ + @$(docker_gen) $(gogofast_plugin) $< generate-envoy-python: $(envoy_pb_pythons) diff --git a/authentication/v1alpha1/istio.authentication.v1alpha1.pb.html b/authentication/v1alpha1/istio.authentication.v1alpha1.pb.html index 40f76ccde80..7a469d34143 100644 --- a/authentication/v1alpha1/istio.authentication.v1alpha1.pb.html +++ b/authentication/v1alpha1/istio.authentication.v1alpha1.pb.html @@ -11,7 +11,7 @@

Jwt

JSON Web Token (JWT) token format for authentication as defined by -https://tools.ietf.org/html/rfc7519. See OAuth +RFC 7519. See OAuth 2.0 and OIDC 1.0 for how this is used in the whole authentication flow.

@@ -347,12 +347,13 @@

Policy

Examples:

-

Policy to enable mTLS for all services in namespace frod

+

Policy to enable mTLS for all services in namespace frod. The policy name must be +default, and it contains no rule for targets.

apiVersion: authentication.istio.io/v1alpha1
 kind: Policy
 metadata:
-  name: mTLS_enable
+  name: default
   namespace: frod
 spec:
   peers:
@@ -364,7 +365,7 @@ 

Policy

apiVersion: authentication.istio.io/v1alpha1
 kind: Policy
 metadata:
-  name: mTLS_disable
+  name: productpage_mTLS_disable
   namespace: frod
 spec:
   targets:
@@ -377,7 +378,7 @@ 

Policy

apiVersion: authentication.istio.io/v1alpha1
 kind: Policy
 metadata:
-  name: mTLS_enable
+  name: productpage_mTLS_with_JWT
   namespace: frod
 spec:
   targets:
diff --git a/authentication/v1alpha1/policy.pb.go b/authentication/v1alpha1/policy.pb.go
index bcd89427ed9..9774aa4acec 100644
--- a/authentication/v1alpha1/policy.pb.go
+++ b/authentication/v1alpha1/policy.pb.go
@@ -1,31 +1,16 @@
 // Code generated by protoc-gen-gogo. DO NOT EDIT.
 // source: authentication/v1alpha1/policy.proto
 
-/*
-	Package v1alpha1 is a generated protocol buffer package.
-
-	This package defines user-facing authentication policy.
-
-	It is generated from these files:
-		authentication/v1alpha1/policy.proto
-
-	It has these top-level messages:
-		StringMatch
-		MutualTls
-		Jwt
-		PeerAuthenticationMethod
-		OriginAuthenticationMethod
-		Policy
-		TargetSelector
-		PortSelector
-*/
-package v1alpha1
+// This package defines user-facing authentication policy.
 
-import proto "github.com/gogo/protobuf/proto"
-import fmt "fmt"
-import math "math"
+package v1alpha1
 
-import io "io"
+import (
+	fmt "fmt"
+	proto "github.com/gogo/protobuf/proto"
+	io "io"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -52,6 +37,7 @@ var PrincipalBinding_name = map[int32]string{
 	0: "USE_PEER",
 	1: "USE_ORIGIN",
 }
+
 var PrincipalBinding_value = map[string]int32{
 	"USE_PEER":   0,
 	"USE_ORIGIN": 1,
@@ -60,7 +46,10 @@ var PrincipalBinding_value = map[string]int32{
 func (x PrincipalBinding) String() string {
 	return proto.EnumName(PrincipalBinding_name, int32(x))
 }
-func (PrincipalBinding) EnumDescriptor() ([]byte, []int) { return fileDescriptorPolicy, []int{0} }
+
+func (PrincipalBinding) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_30ec3f7cef93301a, []int{0}
+}
 
 // Defines the acceptable connection TLS mode.
 type MutualTls_Mode int32
@@ -76,6 +65,7 @@ var MutualTls_Mode_name = map[int32]string{
 	0: "STRICT",
 	1: "PERMISSIVE",
 }
+
 var MutualTls_Mode_value = map[string]int32{
 	"STRICT":     0,
 	"PERMISSIVE": 1,
@@ -84,7 +74,10 @@ var MutualTls_Mode_value = map[string]int32{
 func (x MutualTls_Mode) String() string {
 	return proto.EnumName(MutualTls_Mode_name, int32(x))
 }
-func (MutualTls_Mode) EnumDescriptor() ([]byte, []int) { return fileDescriptorPolicy, []int{1, 0} }
+
+func (MutualTls_Mode) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_30ec3f7cef93301a, []int{1, 0}
+}
 
 // Describes how to match a given string. Match is case-sensitive.
 type StringMatch struct {
@@ -93,13 +86,44 @@ type StringMatch struct {
 	//	*StringMatch_Prefix
 	//	*StringMatch_Suffix
 	//	*StringMatch_Regex
-	MatchType isStringMatch_MatchType `protobuf_oneof:"match_type"`
+	MatchType            isStringMatch_MatchType `protobuf_oneof:"match_type"`
+	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
+	XXX_unrecognized     []byte                  `json:"-"`
+	XXX_sizecache        int32                   `json:"-"`
+}
+
+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_30ec3f7cef93301a, []int{0}
+}
+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.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[: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 *StringMatch) Reset()                    { *m = StringMatch{} }
-func (m *StringMatch) String() string            { return proto.CompactTextString(m) }
-func (*StringMatch) ProtoMessage()               {}
-func (*StringMatch) Descriptor() ([]byte, []int) { return fileDescriptorPolicy, []int{0} }
+var xxx_messageInfo_StringMatch proto.InternalMessageInfo
 
 type isStringMatch_MatchType interface {
 	isStringMatch_MatchType()
@@ -234,19 +258,19 @@ func _StringMatch_OneofSizer(msg proto.Message) (n int) {
 	// match_type
 	switch x := m.MatchType.(type) {
 	case *StringMatch_Exact:
-		n += proto.SizeVarint(1<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(len(x.Exact)))
 		n += len(x.Exact)
 	case *StringMatch_Prefix:
-		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(len(x.Prefix)))
 		n += len(x.Prefix)
 	case *StringMatch_Suffix:
-		n += proto.SizeVarint(3<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(len(x.Suffix)))
 		n += len(x.Suffix)
 	case *StringMatch_Regex:
-		n += proto.SizeVarint(4<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(len(x.Regex)))
 		n += len(x.Regex)
 	case nil:
@@ -266,13 +290,44 @@ type MutualTls struct {
 	// When the flag is false (default), request must have client certificate.
 	AllowTls bool `protobuf:"varint,1,opt,name=allow_tls,json=allowTls,proto3" json:"allow_tls,omitempty"`
 	// Defines the mode of mTLS authentication.
-	Mode MutualTls_Mode `protobuf:"varint,2,opt,name=mode,proto3,enum=istio.authentication.v1alpha1.MutualTls_Mode" json:"mode,omitempty"`
+	Mode                 MutualTls_Mode `protobuf:"varint,2,opt,name=mode,proto3,enum=istio.authentication.v1alpha1.MutualTls_Mode" json:"mode,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
+	XXX_unrecognized     []byte         `json:"-"`
+	XXX_sizecache        int32          `json:"-"`
+}
+
+func (m *MutualTls) Reset()         { *m = MutualTls{} }
+func (m *MutualTls) String() string { return proto.CompactTextString(m) }
+func (*MutualTls) ProtoMessage()    {}
+func (*MutualTls) Descriptor() ([]byte, []int) {
+	return fileDescriptor_30ec3f7cef93301a, []int{1}
+}
+func (m *MutualTls) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *MutualTls) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_MutualTls.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *MutualTls) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MutualTls.Merge(m, src)
+}
+func (m *MutualTls) XXX_Size() int {
+	return m.Size()
+}
+func (m *MutualTls) XXX_DiscardUnknown() {
+	xxx_messageInfo_MutualTls.DiscardUnknown(m)
 }
 
-func (m *MutualTls) Reset()                    { *m = MutualTls{} }
-func (m *MutualTls) String() string            { return proto.CompactTextString(m) }
-func (*MutualTls) ProtoMessage()               {}
-func (*MutualTls) Descriptor() ([]byte, []int) { return fileDescriptorPolicy, []int{1} }
+var xxx_messageInfo_MutualTls proto.InternalMessageInfo
 
 func (m *MutualTls) GetAllowTls() bool {
 	if m != nil {
@@ -289,7 +344,7 @@ func (m *MutualTls) GetMode() MutualTls_Mode {
 }
 
 // JSON Web Token (JWT) token format for authentication as defined by
-// https://tools.ietf.org/html/rfc7519. See [OAuth
+// [RFC 7519](https://tools.ietf.org/html/rfc7519). See [OAuth
 // 2.0](https://tools.ietf.org/html/rfc6749) and [OIDC
 // 1.0](http://openid.net/connect) for how this is used in the whole
 // authentication flow.
@@ -365,7 +420,7 @@ type Jwt struct {
 	// - bookstore_android.apps.googleusercontent.com
 	//   bookstore_web.apps.googleusercontent.com
 	// ```
-	Audiences []string `protobuf:"bytes,2,rep,name=audiences" json:"audiences,omitempty"`
+	Audiences []string `protobuf:"bytes,2,rep,name=audiences,proto3" json:"audiences,omitempty"`
 	// URL of the provider's public key set to validate signature of the
 	// JWT. See [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
 	//
@@ -389,24 +444,55 @@ type Jwt struct {
 	//
 	// For example, if `header=x-goog-iap-jwt-assertion`, the header
 	// format will be x-goog-iap-jwt-assertion: .
-	JwtHeaders []string `protobuf:"bytes,6,rep,name=jwt_headers,json=jwtHeaders" json:"jwt_headers,omitempty"`
+	JwtHeaders []string `protobuf:"bytes,6,rep,name=jwt_headers,json=jwtHeaders,proto3" json:"jwt_headers,omitempty"`
 	// JWT is sent in a query parameter. `query` represents the
 	// query parameter name.
 	//
 	// For example, `query=jwt_token`.
-	JwtParams []string `protobuf:"bytes,7,rep,name=jwt_params,json=jwtParams" json:"jwt_params,omitempty"`
+	JwtParams []string `protobuf:"bytes,7,rep,name=jwt_params,json=jwtParams,proto3" json:"jwt_params,omitempty"`
 	// List of trigger rules to decide if this JWT should be used to validate the
 	// request. The JWT validation happens if any one of the rules matched.
 	// If the list is not empty and none of the rules matched, authentication will
 	// skip the JWT validation.
 	// Leave this empty to always trigger the JWT validation.
-	TriggerRules []*Jwt_TriggerRule `protobuf:"bytes,9,rep,name=trigger_rules,json=triggerRules" json:"trigger_rules,omitempty"`
+	TriggerRules         []*Jwt_TriggerRule `protobuf:"bytes,9,rep,name=trigger_rules,json=triggerRules,proto3" json:"trigger_rules,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
+	XXX_unrecognized     []byte             `json:"-"`
+	XXX_sizecache        int32              `json:"-"`
+}
+
+func (m *Jwt) Reset()         { *m = Jwt{} }
+func (m *Jwt) String() string { return proto.CompactTextString(m) }
+func (*Jwt) ProtoMessage()    {}
+func (*Jwt) Descriptor() ([]byte, []int) {
+	return fileDescriptor_30ec3f7cef93301a, []int{2}
+}
+func (m *Jwt) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *Jwt) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_Jwt.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *Jwt) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Jwt.Merge(m, src)
+}
+func (m *Jwt) XXX_Size() int {
+	return m.Size()
+}
+func (m *Jwt) XXX_DiscardUnknown() {
+	xxx_messageInfo_Jwt.DiscardUnknown(m)
 }
 
-func (m *Jwt) Reset()                    { *m = Jwt{} }
-func (m *Jwt) String() string            { return proto.CompactTextString(m) }
-func (*Jwt) ProtoMessage()               {}
-func (*Jwt) Descriptor() ([]byte, []int) { return fileDescriptorPolicy, []int{2} }
+var xxx_messageInfo_Jwt proto.InternalMessageInfo
 
 func (m *Jwt) GetIssuer() string {
 	if m != nil {
@@ -462,17 +548,48 @@ func (m *Jwt) GetTriggerRules() []*Jwt_TriggerRule {
 type Jwt_TriggerRule struct {
 	// List of paths to be excluded from the request. The rule is satisfied if
 	// request path does not match to any of the path in this list.
-	ExcludedPaths []*StringMatch `protobuf:"bytes,1,rep,name=excluded_paths,json=excludedPaths" json:"excluded_paths,omitempty"`
+	ExcludedPaths []*StringMatch `protobuf:"bytes,1,rep,name=excluded_paths,json=excludedPaths,proto3" json:"excluded_paths,omitempty"`
 	// List of paths that the request must include. If the list is not empty, the
 	// rule is satisfied if request path matches at least one of the path in the list.
 	// If the list is empty, the rule is ignored, in other words the rule is always satisfied.
-	IncludedPaths []*StringMatch `protobuf:"bytes,2,rep,name=included_paths,json=includedPaths" json:"included_paths,omitempty"`
+	IncludedPaths        []*StringMatch `protobuf:"bytes,2,rep,name=included_paths,json=includedPaths,proto3" json:"included_paths,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
+	XXX_unrecognized     []byte         `json:"-"`
+	XXX_sizecache        int32          `json:"-"`
+}
+
+func (m *Jwt_TriggerRule) Reset()         { *m = Jwt_TriggerRule{} }
+func (m *Jwt_TriggerRule) String() string { return proto.CompactTextString(m) }
+func (*Jwt_TriggerRule) ProtoMessage()    {}
+func (*Jwt_TriggerRule) Descriptor() ([]byte, []int) {
+	return fileDescriptor_30ec3f7cef93301a, []int{2, 0}
+}
+func (m *Jwt_TriggerRule) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *Jwt_TriggerRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_Jwt_TriggerRule.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *Jwt_TriggerRule) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Jwt_TriggerRule.Merge(m, src)
+}
+func (m *Jwt_TriggerRule) XXX_Size() int {
+	return m.Size()
+}
+func (m *Jwt_TriggerRule) XXX_DiscardUnknown() {
+	xxx_messageInfo_Jwt_TriggerRule.DiscardUnknown(m)
 }
 
-func (m *Jwt_TriggerRule) Reset()                    { *m = Jwt_TriggerRule{} }
-func (m *Jwt_TriggerRule) String() string            { return proto.CompactTextString(m) }
-func (*Jwt_TriggerRule) ProtoMessage()               {}
-func (*Jwt_TriggerRule) Descriptor() ([]byte, []int) { return fileDescriptorPolicy, []int{2, 0} }
+var xxx_messageInfo_Jwt_TriggerRule proto.InternalMessageInfo
 
 func (m *Jwt_TriggerRule) GetExcludedPaths() []*StringMatch {
 	if m != nil {
@@ -497,13 +614,44 @@ type PeerAuthenticationMethod struct {
 	// Types that are valid to be assigned to Params:
 	//	*PeerAuthenticationMethod_Mtls
 	//	*PeerAuthenticationMethod_Jwt
-	Params isPeerAuthenticationMethod_Params `protobuf_oneof:"params"`
+	Params               isPeerAuthenticationMethod_Params `protobuf_oneof:"params"`
+	XXX_NoUnkeyedLiteral struct{}                          `json:"-"`
+	XXX_unrecognized     []byte                            `json:"-"`
+	XXX_sizecache        int32                             `json:"-"`
+}
+
+func (m *PeerAuthenticationMethod) Reset()         { *m = PeerAuthenticationMethod{} }
+func (m *PeerAuthenticationMethod) String() string { return proto.CompactTextString(m) }
+func (*PeerAuthenticationMethod) ProtoMessage()    {}
+func (*PeerAuthenticationMethod) Descriptor() ([]byte, []int) {
+	return fileDescriptor_30ec3f7cef93301a, []int{3}
+}
+func (m *PeerAuthenticationMethod) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *PeerAuthenticationMethod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_PeerAuthenticationMethod.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *PeerAuthenticationMethod) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PeerAuthenticationMethod.Merge(m, src)
+}
+func (m *PeerAuthenticationMethod) XXX_Size() int {
+	return m.Size()
+}
+func (m *PeerAuthenticationMethod) XXX_DiscardUnknown() {
+	xxx_messageInfo_PeerAuthenticationMethod.DiscardUnknown(m)
 }
 
-func (m *PeerAuthenticationMethod) Reset()                    { *m = PeerAuthenticationMethod{} }
-func (m *PeerAuthenticationMethod) String() string            { return proto.CompactTextString(m) }
-func (*PeerAuthenticationMethod) ProtoMessage()               {}
-func (*PeerAuthenticationMethod) Descriptor() ([]byte, []int) { return fileDescriptorPolicy, []int{3} }
+var xxx_messageInfo_PeerAuthenticationMethod proto.InternalMessageInfo
 
 type isPeerAuthenticationMethod_Params interface {
 	isPeerAuthenticationMethod_Params()
@@ -512,10 +660,10 @@ type isPeerAuthenticationMethod_Params interface {
 }
 
 type PeerAuthenticationMethod_Mtls struct {
-	Mtls *MutualTls `protobuf:"bytes,1,opt,name=mtls,oneof"`
+	Mtls *MutualTls `protobuf:"bytes,1,opt,name=mtls,proto3,oneof"`
 }
 type PeerAuthenticationMethod_Jwt struct {
-	Jwt *Jwt `protobuf:"bytes,2,opt,name=jwt,oneof"`
+	Jwt *Jwt `protobuf:"bytes,2,opt,name=jwt,proto3,oneof"`
 }
 
 func (*PeerAuthenticationMethod_Mtls) isPeerAuthenticationMethod_Params() {}
@@ -601,12 +749,12 @@ func _PeerAuthenticationMethod_OneofSizer(msg proto.Message) (n int) {
 	switch x := m.Params.(type) {
 	case *PeerAuthenticationMethod_Mtls:
 		s := proto.Size(x.Mtls)
-		n += proto.SizeVarint(1<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *PeerAuthenticationMethod_Jwt:
 		s := proto.Size(x.Jwt)
-		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case nil:
@@ -621,13 +769,44 @@ func _PeerAuthenticationMethod_OneofSizer(msg proto.Message) (n int) {
 // Currently, only JWT is supported for origin authentication.
 type OriginAuthenticationMethod struct {
 	// Jwt params for the method.
-	Jwt *Jwt `protobuf:"bytes,1,opt,name=jwt" json:"jwt,omitempty"`
+	Jwt                  *Jwt     `protobuf:"bytes,1,opt,name=jwt,proto3" json:"jwt,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OriginAuthenticationMethod) Reset()         { *m = OriginAuthenticationMethod{} }
+func (m *OriginAuthenticationMethod) String() string { return proto.CompactTextString(m) }
+func (*OriginAuthenticationMethod) ProtoMessage()    {}
+func (*OriginAuthenticationMethod) Descriptor() ([]byte, []int) {
+	return fileDescriptor_30ec3f7cef93301a, []int{4}
+}
+func (m *OriginAuthenticationMethod) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *OriginAuthenticationMethod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_OriginAuthenticationMethod.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *OriginAuthenticationMethod) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OriginAuthenticationMethod.Merge(m, src)
+}
+func (m *OriginAuthenticationMethod) XXX_Size() int {
+	return m.Size()
+}
+func (m *OriginAuthenticationMethod) XXX_DiscardUnknown() {
+	xxx_messageInfo_OriginAuthenticationMethod.DiscardUnknown(m)
 }
 
-func (m *OriginAuthenticationMethod) Reset()                    { *m = OriginAuthenticationMethod{} }
-func (m *OriginAuthenticationMethod) String() string            { return proto.CompactTextString(m) }
-func (*OriginAuthenticationMethod) ProtoMessage()               {}
-func (*OriginAuthenticationMethod) Descriptor() ([]byte, []int) { return fileDescriptorPolicy, []int{4} }
+var xxx_messageInfo_OriginAuthenticationMethod proto.InternalMessageInfo
 
 func (m *OriginAuthenticationMethod) GetJwt() *Jwt {
 	if m != nil {
@@ -653,13 +832,14 @@ func (m *OriginAuthenticationMethod) GetJwt() *Jwt {
 //
 // Examples:
 //
-// Policy to enable mTLS for all services in namespace frod
+// Policy to enable mTLS for all services in namespace frod. The policy name must be
+// `default`, and it contains no rule for `targets`.
 //
 // ```yaml
 // apiVersion: authentication.istio.io/v1alpha1
 // kind: Policy
 // metadata:
-//   name: mTLS_enable
+//   name: default
 //   namespace: frod
 // spec:
 //   peers:
@@ -671,7 +851,7 @@ func (m *OriginAuthenticationMethod) GetJwt() *Jwt {
 // apiVersion: authentication.istio.io/v1alpha1
 // kind: Policy
 // metadata:
-//   name: mTLS_disable
+//   name: productpage_mTLS_disable
 //   namespace: frod
 // spec:
 //   targets:
@@ -684,7 +864,7 @@ func (m *OriginAuthenticationMethod) GetJwt() *Jwt {
 // apiVersion: authentication.istio.io/v1alpha1
 // kind: Policy
 // metadata:
-//   name: mTLS_enable
+//   name: productpage_mTLS_with_JWT
 //   namespace: frod
 // spec:
 //   targets:
@@ -709,13 +889,13 @@ func (m *OriginAuthenticationMethod) GetJwt() *Jwt {
 type Policy struct {
 	// List rules to select workloads that the policy should be applied on.
 	// If empty, policy will be used on all workloads in the same namespace.
-	Targets []*TargetSelector `protobuf:"bytes,1,rep,name=targets" json:"targets,omitempty"`
+	Targets []*TargetSelector `protobuf:"bytes,1,rep,name=targets,proto3" json:"targets,omitempty"`
 	// List of authentication methods that can be used for peer authentication.
 	// They will be evaluated in order; the first validate one will be used to
 	// set peer identity (source.user) and other peer attributes. If none of
 	// these methods pass, request will be rejected with authentication failed error (401).
 	// Leave the list empty if peer authentication is not required
-	Peers []*PeerAuthenticationMethod `protobuf:"bytes,2,rep,name=peers" json:"peers,omitempty"`
+	Peers []*PeerAuthenticationMethod `protobuf:"bytes,2,rep,name=peers,proto3" json:"peers,omitempty"`
 	// Set this flag to true to accept request (for peer authentication perspective),
 	// even when none of the peer authentication methods defined above satisfied.
 	// Typically, this is used to delay the rejection decision to next layer (e.g
@@ -730,7 +910,7 @@ type Policy struct {
 	// A method may be skipped, depends on its trigger rule. If all of these methods
 	// are skipped, origin authentication will be ignored, as if it is not defined.
 	// Leave the list empty if origin authentication is not required.
-	Origins []*OriginAuthenticationMethod `protobuf:"bytes,4,rep,name=origins" json:"origins,omitempty"`
+	Origins []*OriginAuthenticationMethod `protobuf:"bytes,4,rep,name=origins,proto3" json:"origins,omitempty"`
 	// Set this flag to true to accept request (for origin authentication perspective),
 	// even when none of the origin authentication methods defined above satisfied.
 	// Typically, this is used to delay the rejection decision to next layer (e.g
@@ -743,13 +923,44 @@ type Policy struct {
 	// authentication is not defined, or failed, principal will be left unset.
 	// In other words, binding rule does not affect the decision to accept or
 	// reject request.
-	PrincipalBinding PrincipalBinding `protobuf:"varint,6,opt,name=principal_binding,json=principalBinding,proto3,enum=istio.authentication.v1alpha1.PrincipalBinding" json:"principal_binding,omitempty"`
+	PrincipalBinding     PrincipalBinding `protobuf:"varint,6,opt,name=principal_binding,json=principalBinding,proto3,enum=istio.authentication.v1alpha1.PrincipalBinding" json:"principal_binding,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
+}
+
+func (m *Policy) Reset()         { *m = Policy{} }
+func (m *Policy) String() string { return proto.CompactTextString(m) }
+func (*Policy) ProtoMessage()    {}
+func (*Policy) Descriptor() ([]byte, []int) {
+	return fileDescriptor_30ec3f7cef93301a, []int{5}
+}
+func (m *Policy) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *Policy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_Policy.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *Policy) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Policy.Merge(m, src)
+}
+func (m *Policy) XXX_Size() int {
+	return m.Size()
+}
+func (m *Policy) XXX_DiscardUnknown() {
+	xxx_messageInfo_Policy.DiscardUnknown(m)
 }
 
-func (m *Policy) Reset()                    { *m = Policy{} }
-func (m *Policy) String() string            { return proto.CompactTextString(m) }
-func (*Policy) ProtoMessage()               {}
-func (*Policy) Descriptor() ([]byte, []int) { return fileDescriptorPolicy, []int{5} }
+var xxx_messageInfo_Policy proto.InternalMessageInfo
 
 func (m *Policy) GetTargets() []*TargetSelector {
 	if m != nil {
@@ -803,7 +1014,7 @@ type TargetSelector struct {
 	// $not-implemented-hide
 	// Select workload by labels.
 	// Once implemented, this is a prefer way over using service name.
-	Labels map[string]string `protobuf:"bytes,3,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
 	// Specifies the ports. Note that this is the port(s) exposed by the service, not workload ports.
 	// For example, if a service is defined as below, then `8000` should be used, not `9000`.
 	// ```yaml
@@ -818,14 +1029,45 @@ type TargetSelector struct {
 	//   selector:
 	//     app: backend
 	// ```
-	// Leave empty to match all ports that are exposed.
-	Ports []*PortSelector `protobuf:"bytes,2,rep,name=ports" json:"ports,omitempty"`
+	//Leave empty to match all ports that are exposed.
+	Ports                []*PortSelector `protobuf:"bytes,2,rep,name=ports,proto3" json:"ports,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
+}
+
+func (m *TargetSelector) Reset()         { *m = TargetSelector{} }
+func (m *TargetSelector) String() string { return proto.CompactTextString(m) }
+func (*TargetSelector) ProtoMessage()    {}
+func (*TargetSelector) Descriptor() ([]byte, []int) {
+	return fileDescriptor_30ec3f7cef93301a, []int{6}
+}
+func (m *TargetSelector) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *TargetSelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_TargetSelector.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *TargetSelector) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TargetSelector.Merge(m, src)
+}
+func (m *TargetSelector) XXX_Size() int {
+	return m.Size()
+}
+func (m *TargetSelector) XXX_DiscardUnknown() {
+	xxx_messageInfo_TargetSelector.DiscardUnknown(m)
 }
 
-func (m *TargetSelector) Reset()                    { *m = TargetSelector{} }
-func (m *TargetSelector) String() string            { return proto.CompactTextString(m) }
-func (*TargetSelector) ProtoMessage()               {}
-func (*TargetSelector) Descriptor() ([]byte, []int) { return fileDescriptorPolicy, []int{6} }
+var xxx_messageInfo_TargetSelector proto.InternalMessageInfo
 
 func (m *TargetSelector) GetName() string {
 	if m != nil {
@@ -855,13 +1097,44 @@ type PortSelector struct {
 	// Types that are valid to be assigned to Port:
 	//	*PortSelector_Number
 	//	*PortSelector_Name
-	Port isPortSelector_Port `protobuf_oneof:"port"`
+	Port                 isPortSelector_Port `protobuf_oneof:"port"`
+	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_30ec3f7cef93301a, []int{7}
+}
+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.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+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)
 }
 
-func (m *PortSelector) Reset()                    { *m = PortSelector{} }
-func (m *PortSelector) String() string            { return proto.CompactTextString(m) }
-func (*PortSelector) ProtoMessage()               {}
-func (*PortSelector) Descriptor() ([]byte, []int) { return fileDescriptorPolicy, []int{7} }
+var xxx_messageInfo_PortSelector proto.InternalMessageInfo
 
 type isPortSelector_Port interface {
 	isPortSelector_Port()
@@ -952,10 +1225,10 @@ func _PortSelector_OneofSizer(msg proto.Message) (n int) {
 	// port
 	switch x := m.Port.(type) {
 	case *PortSelector_Number:
-		n += proto.SizeVarint(1<<3 | proto.WireVarint)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(x.Number))
 	case *PortSelector_Name:
-		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(len(x.Name)))
 		n += len(x.Name)
 	case nil:
@@ -966,6 +1239,8 @@ func _PortSelector_OneofSizer(msg proto.Message) (n int) {
 }
 
 func init() {
+	proto.RegisterEnum("istio.authentication.v1alpha1.PrincipalBinding", PrincipalBinding_name, PrincipalBinding_value)
+	proto.RegisterEnum("istio.authentication.v1alpha1.MutualTls_Mode", MutualTls_Mode_name, MutualTls_Mode_value)
 	proto.RegisterType((*StringMatch)(nil), "istio.authentication.v1alpha1.StringMatch")
 	proto.RegisterType((*MutualTls)(nil), "istio.authentication.v1alpha1.MutualTls")
 	proto.RegisterType((*Jwt)(nil), "istio.authentication.v1alpha1.Jwt")
@@ -974,10 +1249,71 @@ func init() {
 	proto.RegisterType((*OriginAuthenticationMethod)(nil), "istio.authentication.v1alpha1.OriginAuthenticationMethod")
 	proto.RegisterType((*Policy)(nil), "istio.authentication.v1alpha1.Policy")
 	proto.RegisterType((*TargetSelector)(nil), "istio.authentication.v1alpha1.TargetSelector")
+	proto.RegisterMapType((map[string]string)(nil), "istio.authentication.v1alpha1.TargetSelector.LabelsEntry")
 	proto.RegisterType((*PortSelector)(nil), "istio.authentication.v1alpha1.PortSelector")
-	proto.RegisterEnum("istio.authentication.v1alpha1.PrincipalBinding", PrincipalBinding_name, PrincipalBinding_value)
-	proto.RegisterEnum("istio.authentication.v1alpha1.MutualTls_Mode", MutualTls_Mode_name, MutualTls_Mode_value)
 }
+
+func init() {
+	proto.RegisterFile("authentication/v1alpha1/policy.proto", fileDescriptor_30ec3f7cef93301a)
+}
+
+var fileDescriptor_30ec3f7cef93301a = []byte{
+	// 847 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x55, 0xc1, 0x6e, 0x23, 0x45,
+	0x10, 0xcd, 0x64, 0xec, 0x89, 0x5d, 0x4e, 0x2c, 0xd3, 0x5a, 0xad, 0x86, 0xc0, 0x86, 0x68, 0xb4,
+	0x07, 0x6b, 0x81, 0x31, 0x6b, 0x10, 0xb0, 0x1c, 0x90, 0x62, 0x64, 0x36, 0x5e, 0x61, 0xe2, 0x6d,
+	0x7b, 0x39, 0x20, 0xa4, 0x51, 0xc7, 0xee, 0xb5, 0xdb, 0xdb, 0x9e, 0x19, 0x75, 0xf7, 0xac, 0xe3,
+	0x13, 0x9f, 0xc0, 0x0f, 0xf0, 0x07, 0x1c, 0x11, 0xff, 0xc0, 0x91, 0x4f, 0x40, 0xf9, 0x07, 0xee,
+	0xa8, 0xbb, 0x67, 0x88, 0xbd, 0x22, 0x4c, 0xb8, 0xd5, 0xab, 0x9a, 0x7a, 0x55, 0xf3, 0xba, 0xba,
+	0x1a, 0x1e, 0x92, 0x4c, 0x2d, 0x68, 0xac, 0xd8, 0x94, 0x28, 0x96, 0xc4, 0x9d, 0xd7, 0x8f, 0x09,
+	0x4f, 0x17, 0xe4, 0x71, 0x27, 0x4d, 0x38, 0x9b, 0x6e, 0xc2, 0x54, 0x24, 0x2a, 0x41, 0x0f, 0x98,
+	0x54, 0x2c, 0x09, 0x77, 0xbf, 0x0d, 0x8b, 0x6f, 0x83, 0x1f, 0xa1, 0x31, 0x56, 0x82, 0xc5, 0xf3,
+	0x21, 0x51, 0xd3, 0x05, 0xba, 0x0f, 0x55, 0x7a, 0x45, 0xa6, 0xca, 0x77, 0x4e, 0x9d, 0x76, 0xfd,
+	0x7c, 0x0f, 0x5b, 0x88, 0x7c, 0xf0, 0x52, 0x41, 0x5f, 0xb2, 0x2b, 0x7f, 0x3f, 0x0f, 0xe4, 0x58,
+	0x47, 0x64, 0xf6, 0x52, 0x47, 0xdc, 0x22, 0x62, 0xb1, 0xe6, 0x12, 0x74, 0x4e, 0xaf, 0xfc, 0x4a,
+	0xc1, 0x65, 0x60, 0xef, 0x10, 0x60, 0xa5, 0x8b, 0x45, 0x6a, 0x93, 0xd2, 0xe0, 0x27, 0x07, 0xea,
+	0xc3, 0x4c, 0x65, 0x84, 0x4f, 0xb8, 0x44, 0xef, 0x40, 0x9d, 0x70, 0x9e, 0xac, 0x23, 0xc5, 0xa5,
+	0xe9, 0xa1, 0x86, 0x6b, 0xc6, 0xa1, 0x83, 0x67, 0x50, 0x59, 0x25, 0x33, 0x6a, 0x5a, 0x68, 0x76,
+	0x3f, 0x0c, 0xff, 0xf3, 0xcf, 0xc2, 0x7f, 0x48, 0xc3, 0x61, 0x32, 0xa3, 0xd8, 0xa4, 0x06, 0x01,
+	0x54, 0x34, 0x42, 0x00, 0xde, 0x78, 0x82, 0x07, 0x5f, 0x4d, 0x5a, 0x7b, 0xa8, 0x09, 0x30, 0xea,
+	0xe3, 0xe1, 0x60, 0x3c, 0x1e, 0x7c, 0xd7, 0x6f, 0x39, 0xc1, 0x6f, 0x2e, 0xb8, 0xcf, 0xd6, 0x0a,
+	0xdd, 0x07, 0x8f, 0x49, 0x99, 0x51, 0x61, 0xc5, 0xc0, 0x39, 0x42, 0xef, 0x42, 0x9d, 0x64, 0x33,
+	0x46, 0xe3, 0x29, 0x95, 0xfe, 0xfe, 0xa9, 0xdb, 0xae, 0xe3, 0x1b, 0x07, 0x7a, 0x1b, 0x6a, 0xcb,
+	0xf5, 0x2b, 0x19, 0x65, 0x82, 0x59, 0x45, 0xf0, 0x81, 0xc6, 0x2f, 0x04, 0x43, 0x08, 0x2a, 0xda,
+	0xf4, 0xc1, 0xb8, 0x8d, 0x8d, 0xde, 0x83, 0xc6, 0x72, 0xad, 0xa2, 0x05, 0x25, 0x33, 0x2a, 0xa4,
+	0xef, 0x19, 0x3a, 0x58, 0xae, 0xd5, 0xb9, 0xf5, 0xa0, 0x07, 0xa0, 0x51, 0x94, 0x12, 0x41, 0x56,
+	0xd2, 0x3f, 0xb0, 0xe5, 0x96, 0x6b, 0x35, 0x32, 0x0e, 0x34, 0x86, 0x23, 0x25, 0xd8, 0x7c, 0x4e,
+	0x45, 0x24, 0x32, 0x4e, 0xa5, 0x5f, 0x3f, 0x75, 0xdb, 0x8d, 0x6e, 0x58, 0x22, 0xce, 0xb3, 0xb5,
+	0x0a, 0x27, 0x36, 0x0f, 0x67, 0x9c, 0xe2, 0x43, 0x75, 0x03, 0xe4, 0xf1, 0xaf, 0x0e, 0x34, 0xb6,
+	0xa2, 0xe8, 0x39, 0x34, 0xe9, 0xd5, 0x94, 0x67, 0x33, 0x3a, 0x8b, 0x52, 0xa2, 0x16, 0xfa, 0x68,
+	0x74, 0x95, 0x47, 0x25, 0x55, 0xb6, 0x26, 0x0b, 0x1f, 0x15, 0x0c, 0x23, 0x4d, 0xa0, 0x29, 0x59,
+	0xbc, 0x43, 0xb9, 0xff, 0xff, 0x29, 0x0b, 0x06, 0x43, 0x19, 0xfc, 0xec, 0x80, 0x3f, 0xa2, 0x54,
+	0x9c, 0xed, 0xa4, 0x0e, 0xa9, 0x5a, 0x24, 0x33, 0xf4, 0x25, 0x54, 0x56, 0xc5, 0x4c, 0x35, 0xba,
+	0xed, 0xbb, 0xce, 0xce, 0xf9, 0x1e, 0x36, 0x79, 0xe8, 0x53, 0x70, 0x97, 0x6b, 0x65, 0x46, 0xaf,
+	0xd1, 0x0d, 0xca, 0xd5, 0x3d, 0xdf, 0xc3, 0x3a, 0xa1, 0x57, 0x03, 0xcf, 0x1e, 0x5d, 0x80, 0xe1,
+	0xf8, 0x42, 0xb0, 0x39, 0x8b, 0xff, 0xb5, 0xbf, 0x4f, 0x2c, 0xbf, 0x73, 0x57, 0x7e, 0xc3, 0x1e,
+	0xfc, 0xe2, 0x82, 0x37, 0x32, 0xb7, 0x1d, 0x3d, 0x85, 0x03, 0x45, 0xc4, 0x9c, 0xaa, 0xe2, 0x70,
+	0xca, 0xee, 0xc7, 0xc4, 0x7c, 0x3d, 0xa6, 0x9c, 0x4e, 0x55, 0x22, 0x70, 0x91, 0x8d, 0x86, 0x50,
+	0x4d, 0xa9, 0x9e, 0x45, 0x7b, 0x20, 0x9f, 0x95, 0xd0, 0xdc, 0xa6, 0x38, 0xb6, 0x2c, 0xa8, 0x0d,
+	0x2d, 0x6d, 0x44, 0x4c, 0x46, 0x49, 0xaa, 0xc3, 0x84, 0x9b, 0x7b, 0x51, 0xc3, 0x4d, 0xed, 0x1f,
+	0xc8, 0x8b, 0xdc, 0x8b, 0xc6, 0x70, 0x90, 0x18, 0x81, 0xa4, 0x5f, 0x31, 0xa5, 0x9f, 0x94, 0x94,
+	0xbe, 0x5d, 0x4e, 0x5c, 0x30, 0xa1, 0x0f, 0x00, 0x59, 0x73, 0xa7, 0x81, 0xaa, 0x69, 0xa0, 0x65,
+	0x23, 0x5b, 0x2d, 0xfc, 0x00, 0x6f, 0xa5, 0x82, 0xc5, 0x53, 0x96, 0x12, 0x1e, 0x5d, 0xb2, 0x78,
+	0xc6, 0xe2, 0xb9, 0xef, 0x99, 0x75, 0xd3, 0x29, 0xd3, 0xa1, 0xc8, 0xeb, 0xd9, 0x34, 0xdc, 0x4a,
+	0xdf, 0xf0, 0x04, 0x7f, 0x39, 0xd0, 0xdc, 0x55, 0x5d, 0xaf, 0x84, 0x98, 0xac, 0x68, 0xbe, 0x61,
+	0x8c, 0x8d, 0x9e, 0x83, 0xc7, 0xc9, 0x25, 0xe5, 0xd2, 0x77, 0xef, 0x24, 0xc3, 0x2e, 0x65, 0xf8,
+	0x8d, 0xc9, 0xed, 0xc7, 0x4a, 0x6c, 0x70, 0x4e, 0x84, 0xce, 0xa0, 0x9a, 0x26, 0x42, 0x15, 0x67,
+	0xfa, 0x7e, 0xd9, 0xbf, 0x24, 0xe2, 0x66, 0x30, 0x6c, 0xe6, 0xf1, 0x13, 0x68, 0x6c, 0x31, 0xa3,
+	0x16, 0xb8, 0xaf, 0xe8, 0x26, 0xef, 0x5b, 0x9b, 0xe8, 0x1e, 0x54, 0x5f, 0x13, 0x9e, 0xd9, 0xf5,
+	0x5c, 0xc7, 0x16, 0x7c, 0xb1, 0xff, 0xb9, 0x13, 0x7c, 0x0d, 0x87, 0xdb, 0x8c, 0xfa, 0xc9, 0x88,
+	0xb3, 0xd5, 0x65, 0xbe, 0x58, 0x8f, 0xf4, 0x93, 0x61, 0x31, 0xba, 0x97, 0xcb, 0x51, 0x3c, 0x32,
+	0x06, 0xf5, 0x3c, 0xa8, 0xe8, 0x1e, 0x1e, 0x7d, 0x04, 0xad, 0x37, 0x55, 0x46, 0x87, 0x50, 0x7b,
+	0x31, 0xee, 0x47, 0xa3, 0x7e, 0x1f, 0xdb, 0x55, 0xae, 0xd1, 0x05, 0x1e, 0x3c, 0x1d, 0x7c, 0xdb,
+	0x72, 0x7a, 0xdd, 0xdf, 0xaf, 0x4f, 0x9c, 0x3f, 0xae, 0x4f, 0x9c, 0x3f, 0xaf, 0x4f, 0x9c, 0xef,
+	0x1f, 0xda, 0xbf, 0x66, 0x49, 0x87, 0xa4, 0xac, 0x73, 0xcb, 0xeb, 0x79, 0xe9, 0x99, 0x77, 0xf3,
+	0xe3, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xc9, 0x44, 0x8e, 0xc6, 0x5f, 0x07, 0x00, 0x00,
+}
+
 func (m *StringMatch) Marshal() (dAtA []byte, err error) {
 	size := m.Size()
 	dAtA = make([]byte, size)
@@ -1000,6 +1336,9 @@ func (m *StringMatch) MarshalTo(dAtA []byte) (int, error) {
 		}
 		i += nn1
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1065,6 +1404,9 @@ func (m *MutualTls) MarshalTo(dAtA []byte) (int, error) {
 		i++
 		i = encodeVarintPolicy(dAtA, i, uint64(m.Mode))
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1158,6 +1500,9 @@ func (m *Jwt) MarshalTo(dAtA []byte) (int, error) {
 		i = encodeVarintPolicy(dAtA, i, uint64(len(m.Jwks)))
 		i += copy(dAtA[i:], m.Jwks)
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1200,6 +1545,9 @@ func (m *Jwt_TriggerRule) MarshalTo(dAtA []byte) (int, error) {
 			i += n
 		}
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1225,6 +1573,9 @@ func (m *PeerAuthenticationMethod) MarshalTo(dAtA []byte) (int, error) {
 		}
 		i += nn2
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1281,6 +1632,9 @@ func (m *OriginAuthenticationMethod) MarshalTo(dAtA []byte) (int, error) {
 		}
 		i += n5
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1360,6 +1714,9 @@ func (m *Policy) MarshalTo(dAtA []byte) (int, error) {
 		i++
 		i = encodeVarintPolicy(dAtA, i, uint64(m.PrincipalBinding))
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1413,6 +1770,9 @@ func (m *TargetSelector) MarshalTo(dAtA []byte) (int, error) {
 			i += copy(dAtA[i:], v)
 		}
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1438,6 +1798,9 @@ func (m *PortSelector) MarshalTo(dAtA []byte) (int, error) {
 		}
 		i += nn6
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1466,15 +1829,24 @@ func encodeVarintPolicy(dAtA []byte, offset int, v uint64) int {
 	return offset + 1
 }
 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)
@@ -1482,6 +1854,9 @@ func (m *StringMatch_Exact) Size() (n int) {
 	return n
 }
 func (m *StringMatch_Prefix) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.Prefix)
@@ -1489,6 +1864,9 @@ func (m *StringMatch_Prefix) Size() (n int) {
 	return n
 }
 func (m *StringMatch_Suffix) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.Suffix)
@@ -1496,6 +1874,9 @@ func (m *StringMatch_Suffix) Size() (n int) {
 	return n
 }
 func (m *StringMatch_Regex) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.Regex)
@@ -1503,6 +1884,9 @@ func (m *StringMatch_Regex) Size() (n int) {
 	return n
 }
 func (m *MutualTls) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	if m.AllowTls {
@@ -1511,10 +1895,16 @@ func (m *MutualTls) Size() (n int) {
 	if m.Mode != 0 {
 		n += 1 + sovPolicy(uint64(m.Mode))
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *Jwt) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.Issuer)
@@ -1553,10 +1943,16 @@ func (m *Jwt) Size() (n int) {
 	if l > 0 {
 		n += 1 + l + sovPolicy(uint64(l))
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *Jwt_TriggerRule) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	if len(m.ExcludedPaths) > 0 {
@@ -1571,19 +1967,31 @@ func (m *Jwt_TriggerRule) Size() (n int) {
 			n += 1 + l + sovPolicy(uint64(l))
 		}
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *PeerAuthenticationMethod) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	if m.Params != nil {
 		n += m.Params.Size()
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *PeerAuthenticationMethod_Mtls) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	if m.Mtls != nil {
@@ -1593,6 +2001,9 @@ func (m *PeerAuthenticationMethod_Mtls) Size() (n int) {
 	return n
 }
 func (m *PeerAuthenticationMethod_Jwt) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	if m.Jwt != nil {
@@ -1602,16 +2013,25 @@ func (m *PeerAuthenticationMethod_Jwt) Size() (n int) {
 	return n
 }
 func (m *OriginAuthenticationMethod) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	if m.Jwt != nil {
 		l = m.Jwt.Size()
 		n += 1 + l + sovPolicy(uint64(l))
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *Policy) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	if len(m.Targets) > 0 {
@@ -1641,10 +2061,16 @@ func (m *Policy) Size() (n int) {
 	if m.PrincipalBinding != 0 {
 		n += 1 + sovPolicy(uint64(m.PrincipalBinding))
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *TargetSelector) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.Name)
@@ -1665,25 +2091,40 @@ func (m *TargetSelector) Size() (n int) {
 			n += mapEntrySize + 1 + sovPolicy(uint64(mapEntrySize))
 		}
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *PortSelector) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	if m.Port != nil {
 		n += m.Port.Size()
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *PortSelector_Number) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	n += 1 + sovPolicy(uint64(m.Number))
 	return n
 }
 func (m *PortSelector_Name) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.Name)
@@ -1719,7 +2160,7 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -1747,7 +2188,7 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1757,6 +2198,9 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1776,7 +2220,7 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1786,6 +2230,9 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1805,7 +2252,7 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1815,6 +2262,9 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1834,7 +2284,7 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1844,6 +2294,9 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1858,9 +2311,13 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthPolicy
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -1885,7 +2342,7 @@ func (m *MutualTls) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -1913,7 +2370,7 @@ func (m *MutualTls) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= (int(b) & 0x7F) << shift
+				v |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1933,7 +2390,7 @@ func (m *MutualTls) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Mode |= (MutualTls_Mode(b) & 0x7F) << shift
+				m.Mode |= MutualTls_Mode(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1947,9 +2404,13 @@ func (m *MutualTls) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthPolicy
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -1974,7 +2435,7 @@ func (m *Jwt) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -2002,7 +2463,7 @@ func (m *Jwt) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2012,6 +2473,9 @@ func (m *Jwt) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2031,7 +2495,7 @@ func (m *Jwt) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2041,6 +2505,9 @@ func (m *Jwt) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2060,7 +2527,7 @@ func (m *Jwt) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2070,6 +2537,9 @@ func (m *Jwt) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2089,7 +2559,7 @@ func (m *Jwt) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2099,6 +2569,9 @@ func (m *Jwt) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2118,7 +2591,7 @@ func (m *Jwt) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2128,6 +2601,9 @@ func (m *Jwt) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2147,7 +2623,7 @@ func (m *Jwt) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2156,6 +2632,9 @@ func (m *Jwt) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2178,7 +2657,7 @@ func (m *Jwt) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2188,6 +2667,9 @@ func (m *Jwt) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2202,9 +2684,13 @@ func (m *Jwt) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthPolicy
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -2229,7 +2715,7 @@ func (m *Jwt_TriggerRule) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -2257,7 +2743,7 @@ func (m *Jwt_TriggerRule) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2266,6 +2752,9 @@ func (m *Jwt_TriggerRule) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2288,7 +2777,7 @@ func (m *Jwt_TriggerRule) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2297,6 +2786,9 @@ func (m *Jwt_TriggerRule) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2314,9 +2806,13 @@ func (m *Jwt_TriggerRule) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthPolicy
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -2341,7 +2837,7 @@ func (m *PeerAuthenticationMethod) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -2369,7 +2865,7 @@ func (m *PeerAuthenticationMethod) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2378,6 +2874,9 @@ func (m *PeerAuthenticationMethod) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2401,7 +2900,7 @@ func (m *PeerAuthenticationMethod) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2410,6 +2909,9 @@ func (m *PeerAuthenticationMethod) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2428,9 +2930,13 @@ func (m *PeerAuthenticationMethod) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthPolicy
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -2455,7 +2961,7 @@ func (m *OriginAuthenticationMethod) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -2483,7 +2989,7 @@ func (m *OriginAuthenticationMethod) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2492,6 +2998,9 @@ func (m *OriginAuthenticationMethod) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2511,9 +3020,13 @@ func (m *OriginAuthenticationMethod) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthPolicy
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -2538,7 +3051,7 @@ func (m *Policy) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -2566,7 +3079,7 @@ func (m *Policy) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2575,6 +3088,9 @@ func (m *Policy) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2597,7 +3113,7 @@ func (m *Policy) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2606,6 +3122,9 @@ func (m *Policy) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2628,7 +3147,7 @@ func (m *Policy) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= (int(b) & 0x7F) << shift
+				v |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2648,7 +3167,7 @@ func (m *Policy) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2657,6 +3176,9 @@ func (m *Policy) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2679,7 +3201,7 @@ func (m *Policy) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= (int(b) & 0x7F) << shift
+				v |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2699,7 +3221,7 @@ func (m *Policy) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.PrincipalBinding |= (PrincipalBinding(b) & 0x7F) << shift
+				m.PrincipalBinding |= PrincipalBinding(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2713,9 +3235,13 @@ func (m *Policy) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthPolicy
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -2740,7 +3266,7 @@ func (m *TargetSelector) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -2768,7 +3294,7 @@ func (m *TargetSelector) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2778,6 +3304,9 @@ func (m *TargetSelector) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2797,7 +3326,7 @@ func (m *TargetSelector) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2806,6 +3335,9 @@ func (m *TargetSelector) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2828,7 +3360,7 @@ func (m *TargetSelector) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2837,6 +3369,9 @@ func (m *TargetSelector) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2857,7 +3392,7 @@ func (m *TargetSelector) Unmarshal(dAtA []byte) error {
 					}
 					b := dAtA[iNdEx]
 					iNdEx++
-					wire |= (uint64(b) & 0x7F) << shift
+					wire |= uint64(b&0x7F) << shift
 					if b < 0x80 {
 						break
 					}
@@ -2874,7 +3409,7 @@ func (m *TargetSelector) Unmarshal(dAtA []byte) error {
 						}
 						b := dAtA[iNdEx]
 						iNdEx++
-						stringLenmapkey |= (uint64(b) & 0x7F) << shift
+						stringLenmapkey |= uint64(b&0x7F) << shift
 						if b < 0x80 {
 							break
 						}
@@ -2884,6 +3419,9 @@ func (m *TargetSelector) Unmarshal(dAtA []byte) error {
 						return ErrInvalidLengthPolicy
 					}
 					postStringIndexmapkey := iNdEx + intStringLenmapkey
+					if postStringIndexmapkey < 0 {
+						return ErrInvalidLengthPolicy
+					}
 					if postStringIndexmapkey > l {
 						return io.ErrUnexpectedEOF
 					}
@@ -2900,7 +3438,7 @@ func (m *TargetSelector) Unmarshal(dAtA []byte) error {
 						}
 						b := dAtA[iNdEx]
 						iNdEx++
-						stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+						stringLenmapvalue |= uint64(b&0x7F) << shift
 						if b < 0x80 {
 							break
 						}
@@ -2910,6 +3448,9 @@ func (m *TargetSelector) Unmarshal(dAtA []byte) error {
 						return ErrInvalidLengthPolicy
 					}
 					postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+					if postStringIndexmapvalue < 0 {
+						return ErrInvalidLengthPolicy
+					}
 					if postStringIndexmapvalue > l {
 						return io.ErrUnexpectedEOF
 					}
@@ -2941,9 +3482,13 @@ func (m *TargetSelector) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthPolicy
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -2968,7 +3513,7 @@ func (m *PortSelector) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -2996,7 +3541,7 @@ func (m *PortSelector) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= (uint32(b) & 0x7F) << shift
+				v |= uint32(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -3016,7 +3561,7 @@ func (m *PortSelector) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -3026,6 +3571,9 @@ func (m *PortSelector) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthPolicy
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -3040,9 +3588,13 @@ func (m *PortSelector) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthPolicy
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthPolicy
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -3106,10 +3658,13 @@ func skipPolicy(dAtA []byte) (n int, err error) {
 					break
 				}
 			}
-			iNdEx += length
 			if length < 0 {
 				return 0, ErrInvalidLengthPolicy
 			}
+			iNdEx += length
+			if iNdEx < 0 {
+				return 0, ErrInvalidLengthPolicy
+			}
 			return iNdEx, nil
 		case 3:
 			for {
@@ -3138,6 +3693,9 @@ func skipPolicy(dAtA []byte) (n int, err error) {
 					return 0, err
 				}
 				iNdEx = start + next
+				if iNdEx < 0 {
+					return 0, ErrInvalidLengthPolicy
+				}
 			}
 			return iNdEx, nil
 		case 4:
@@ -3156,62 +3714,3 @@ var (
 	ErrInvalidLengthPolicy = fmt.Errorf("proto: negative length found during unmarshaling")
 	ErrIntOverflowPolicy   = fmt.Errorf("proto: integer overflow")
 )
-
-func init() { proto.RegisterFile("authentication/v1alpha1/policy.proto", fileDescriptorPolicy) }
-
-var fileDescriptorPolicy = []byte{
-	// 847 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x55, 0xdd, 0x6e, 0xe3, 0x44,
-	0x14, 0xae, 0xeb, 0xc4, 0x4d, 0x4e, 0xda, 0x28, 0x8c, 0x56, 0x2b, 0x53, 0xd8, 0x52, 0x59, 0x7b,
-	0x11, 0x2d, 0xe0, 0xb0, 0x01, 0x01, 0xcb, 0x05, 0x52, 0x83, 0xc2, 0x36, 0x2b, 0x42, 0xb3, 0x93,
-	0x2c, 0x17, 0x08, 0xc9, 0x9a, 0x26, 0xb3, 0xc9, 0x64, 0x27, 0xb6, 0x35, 0x33, 0xde, 0x34, 0x57,
-	0x3c, 0x02, 0x2f, 0xc0, 0x1b, 0x70, 0x89, 0x78, 0x07, 0x2e, 0x79, 0x04, 0xd4, 0x77, 0xe0, 0x1e,
-	0xcd, 0x8c, 0x4d, 0x93, 0x15, 0xc5, 0xe5, 0x6e, 0xbe, 0x73, 0xfc, 0x7d, 0xe7, 0xf8, 0x3b, 0xf3,
-	0x03, 0x0f, 0x49, 0xa6, 0x16, 0x34, 0x56, 0x6c, 0x4a, 0x14, 0x4b, 0xe2, 0xce, 0xeb, 0xc7, 0x84,
-	0xa7, 0x0b, 0xf2, 0xb8, 0x93, 0x26, 0x9c, 0x4d, 0x37, 0x61, 0x2a, 0x12, 0x95, 0xa0, 0x07, 0x4c,
-	0x2a, 0x96, 0x84, 0xbb, 0xdf, 0x86, 0xc5, 0xb7, 0xc1, 0x8f, 0xd0, 0x18, 0x2b, 0xc1, 0xe2, 0xf9,
-	0x90, 0xa8, 0xe9, 0x02, 0xdd, 0x87, 0x2a, 0xbd, 0x22, 0x53, 0xe5, 0x3b, 0xa7, 0x4e, 0xbb, 0x7e,
-	0xbe, 0x87, 0x2d, 0x44, 0x3e, 0x78, 0xa9, 0xa0, 0x2f, 0xd9, 0x95, 0xbf, 0x9f, 0x27, 0x72, 0xac,
-	0x33, 0x32, 0x7b, 0xa9, 0x33, 0x6e, 0x91, 0xb1, 0x58, 0x6b, 0x09, 0x3a, 0xa7, 0x57, 0x7e, 0xa5,
-	0xd0, 0x32, 0xb0, 0x77, 0x08, 0xb0, 0xd2, 0xc5, 0x22, 0xb5, 0x49, 0x69, 0xf0, 0x93, 0x03, 0xf5,
-	0x61, 0xa6, 0x32, 0xc2, 0x27, 0x5c, 0xa2, 0x77, 0xa0, 0x4e, 0x38, 0x4f, 0xd6, 0x91, 0xe2, 0xd2,
-	0xf4, 0x50, 0xc3, 0x35, 0x13, 0xd0, 0xc9, 0x33, 0xa8, 0xac, 0x92, 0x19, 0x35, 0x2d, 0x34, 0xbb,
-	0x1f, 0x86, 0xff, 0xf9, 0x67, 0xe1, 0x3f, 0xa2, 0xe1, 0x30, 0x99, 0x51, 0x6c, 0xa8, 0x41, 0x00,
-	0x15, 0x8d, 0x10, 0x80, 0x37, 0x9e, 0xe0, 0xc1, 0x57, 0x93, 0xd6, 0x1e, 0x6a, 0x02, 0x8c, 0xfa,
-	0x78, 0x38, 0x18, 0x8f, 0x07, 0xdf, 0xf5, 0x5b, 0x4e, 0xf0, 0x9b, 0x0b, 0xee, 0xb3, 0xb5, 0x42,
-	0xf7, 0xc1, 0x63, 0x52, 0x66, 0x54, 0x58, 0x33, 0x70, 0x8e, 0xd0, 0xbb, 0x50, 0x27, 0xd9, 0x8c,
-	0xd1, 0x78, 0x4a, 0xa5, 0xbf, 0x7f, 0xea, 0xb6, 0xeb, 0xf8, 0x26, 0x80, 0xde, 0x86, 0xda, 0x72,
-	0xfd, 0x4a, 0x46, 0x99, 0x60, 0xd6, 0x11, 0x7c, 0xa0, 0xf1, 0x0b, 0xc1, 0xd0, 0x7b, 0xd0, 0x58,
-	0xae, 0x55, 0xb4, 0xa0, 0x64, 0x46, 0x85, 0xf4, 0x3d, 0x43, 0x85, 0xe5, 0x5a, 0x9d, 0xdb, 0x08,
-	0x7a, 0x00, 0x1a, 0x45, 0x29, 0x11, 0x64, 0x25, 0xfd, 0x03, 0x2b, 0xbd, 0x5c, 0xab, 0x91, 0x09,
-	0xa0, 0x31, 0x1c, 0x29, 0xc1, 0xe6, 0x73, 0x2a, 0x22, 0x91, 0x71, 0x2a, 0xfd, 0xfa, 0xa9, 0xdb,
-	0x6e, 0x74, 0xc3, 0x12, 0x23, 0x9e, 0xad, 0x55, 0x38, 0xb1, 0x3c, 0x9c, 0x71, 0x8a, 0x0f, 0xd5,
-	0x0d, 0x90, 0x08, 0x41, 0x45, 0xf7, 0xe7, 0x83, 0xe9, 0xd5, 0xac, 0x8f, 0x7f, 0x75, 0xa0, 0xb1,
-	0xc5, 0x40, 0xcf, 0xa1, 0x49, 0xaf, 0xa6, 0x3c, 0x9b, 0xd1, 0x59, 0x94, 0x12, 0xb5, 0xd0, 0xa3,
-	0xd1, 0x95, 0x1f, 0x95, 0x54, 0xde, 0xda, 0x59, 0xf8, 0xa8, 0x50, 0x18, 0x69, 0x01, 0x2d, 0xc9,
-	0xe2, 0x1d, 0xc9, 0xfd, 0xff, 0x2f, 0x59, 0x28, 0x18, 0xc9, 0xe0, 0x67, 0x07, 0xfc, 0x11, 0xa5,
-	0xe2, 0x6c, 0x87, 0x3a, 0xa4, 0x6a, 0x91, 0xcc, 0xd0, 0x97, 0x50, 0x59, 0x15, 0x7b, 0xaa, 0xd1,
-	0x6d, 0xdf, 0x75, 0xef, 0x9c, 0xef, 0x61, 0xc3, 0x43, 0x9f, 0x82, 0xbb, 0x5c, 0x2b, 0xb3, 0xf5,
-	0x1a, 0xdd, 0xa0, 0xdc, 0xf1, 0xf3, 0x3d, 0xac, 0x09, 0xbd, 0x1a, 0x78, 0x76, 0x9c, 0x01, 0x86,
-	0xe3, 0x0b, 0xc1, 0xe6, 0x2c, 0xfe, 0xd7, 0xfe, 0x3e, 0xb1, 0xfa, 0xce, 0x5d, 0xf5, 0x8d, 0x7a,
-	0xf0, 0x8b, 0x0b, 0xde, 0xc8, 0x9c, 0x76, 0xf4, 0x14, 0x0e, 0x14, 0x11, 0x73, 0xaa, 0x8a, 0xe1,
-	0x94, 0x9d, 0x8f, 0x89, 0xf9, 0x7a, 0x4c, 0x39, 0x9d, 0xaa, 0x44, 0xe0, 0x82, 0x8d, 0x86, 0x50,
-	0x4d, 0xa9, 0xde, 0x9f, 0x76, 0x20, 0x9f, 0x95, 0xc8, 0xdc, 0xe6, 0x38, 0xb6, 0x2a, 0xa8, 0x0d,
-	0x2d, 0xbd, 0x88, 0x98, 0x8c, 0x92, 0x54, 0xa7, 0x09, 0x37, 0xe7, 0xa2, 0x86, 0x9b, 0x3a, 0x3e,
-	0x90, 0x17, 0x79, 0x14, 0x8d, 0xe1, 0x20, 0x31, 0x06, 0x49, 0xbf, 0x62, 0x4a, 0x3f, 0x29, 0x29,
-	0x7d, 0xbb, 0x9d, 0xb8, 0x50, 0x42, 0x1f, 0x00, 0xb2, 0xcb, 0x9d, 0x06, 0xaa, 0xa6, 0x81, 0x96,
-	0xcd, 0x6c, 0xb5, 0xf0, 0x03, 0xbc, 0x95, 0x0a, 0x16, 0x4f, 0x59, 0x4a, 0x78, 0x74, 0xc9, 0xe2,
-	0x19, 0x8b, 0xe7, 0xbe, 0x67, 0xae, 0x9b, 0x4e, 0x99, 0x0f, 0x05, 0xaf, 0x67, 0x69, 0xb8, 0x95,
-	0xbe, 0x11, 0x09, 0xfe, 0x72, 0xa0, 0xb9, 0xeb, 0xba, 0x3e, 0x7d, 0x31, 0x59, 0xd1, 0xfc, 0x86,
-	0x31, 0x6b, 0x74, 0x06, 0xd5, 0x34, 0x11, 0xaa, 0x18, 0xc0, 0xfb, 0x65, 0x85, 0x13, 0x71, 0x33,
-	0x45, 0xcb, 0x44, 0xcf, 0xc1, 0xe3, 0xe4, 0x92, 0x72, 0xe9, 0xbb, 0x77, 0x72, 0x72, 0xb7, 0xab,
-	0xf0, 0x1b, 0xc3, 0xed, 0xc7, 0x4a, 0x6c, 0x70, 0x2e, 0x74, 0xfc, 0x04, 0x1a, 0x5b, 0x61, 0xd4,
-	0x02, 0xf7, 0x15, 0xdd, 0xe4, 0x7d, 0xeb, 0x25, 0xba, 0x07, 0xd5, 0xd7, 0x84, 0x67, 0xf6, 0x7a,
-	0xae, 0x63, 0x0b, 0xbe, 0xd8, 0xff, 0xdc, 0x09, 0xbe, 0x86, 0xc3, 0xed, 0x26, 0xf5, 0x93, 0x11,
-	0x67, 0xab, 0xcb, 0xfc, 0x62, 0x3d, 0xd2, 0x4f, 0x86, 0xc5, 0xe8, 0x5e, 0x6e, 0x47, 0xf1, 0xc8,
-	0x18, 0xd4, 0xf3, 0xa0, 0xa2, 0x7f, 0xeb, 0xd1, 0x47, 0xd0, 0x7a, 0xd3, 0x65, 0x74, 0x08, 0xb5,
-	0x17, 0xe3, 0x7e, 0x34, 0xea, 0xf7, 0xb1, 0xbd, 0xca, 0x35, 0xba, 0xc0, 0x83, 0xa7, 0x83, 0x6f,
-	0x5b, 0x4e, 0xaf, 0xfb, 0xfb, 0xf5, 0x89, 0xf3, 0xc7, 0xf5, 0x89, 0xf3, 0xe7, 0xf5, 0x89, 0xf3,
-	0xfd, 0x43, 0x6b, 0x02, 0x4b, 0x3a, 0x24, 0x65, 0x9d, 0x5b, 0x5e, 0xcf, 0x4b, 0xcf, 0xbc, 0x9b,
-	0x1f, 0xff, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x8f, 0x62, 0x62, 0x15, 0x5f, 0x07, 0x00, 0x00,
-}
diff --git a/authentication/v1alpha1/policy.proto b/authentication/v1alpha1/policy.proto
index 0ea81858ec6..25c07c3e96e 100644
--- a/authentication/v1alpha1/policy.proto
+++ b/authentication/v1alpha1/policy.proto
@@ -66,7 +66,7 @@ message MutualTls {
 }
 
 // JSON Web Token (JWT) token format for authentication as defined by
-// https://tools.ietf.org/html/rfc7519. See [OAuth
+// [RFC 7519](https://tools.ietf.org/html/rfc7519). See [OAuth
 // 2.0](https://tools.ietf.org/html/rfc6749) and [OIDC
 // 1.0](http://openid.net/connect) for how this is used in the whole
 // authentication flow.
@@ -265,13 +265,14 @@ enum PrincipalBinding {
 //
 // Examples:
 //
-// Policy to enable mTLS for all services in namespace frod
+// Policy to enable mTLS for all services in namespace frod. The policy name must be
+// `default`, and it contains no rule for `targets`.
 //
 // ```yaml
 // apiVersion: authentication.istio.io/v1alpha1
 // kind: Policy
 // metadata:
-//   name: mTLS_enable
+//   name: default
 //   namespace: frod
 // spec:
 //   peers:
@@ -283,7 +284,7 @@ enum PrincipalBinding {
 // apiVersion: authentication.istio.io/v1alpha1
 // kind: Policy
 // metadata:
-//   name: mTLS_disable
+//   name: productpage_mTLS_disable
 //   namespace: frod
 // spec:
 //   targets:
@@ -296,7 +297,7 @@ enum PrincipalBinding {
 // apiVersion: authentication.istio.io/v1alpha1
 // kind: Policy
 // metadata:
-//   name: mTLS_enable
+//   name: productpage_mTLS_with_JWT
 //   namespace: frod
 // spec:
 //   targets:
diff --git a/dictionaries/custom.txt b/dictionaries/custom.txt
new file mode 100644
index 00000000000..14c8b03d73f
--- /dev/null
+++ b/dictionaries/custom.txt
@@ -0,0 +1,37 @@
+ACK
+backend
+balancer
+Bookinfo
+CIDR
+DNS
+FQDN
+Grafana
+HTTP
+HTTP2
+Istio
+jitter
+JSON
+JWT
+Kubernetes
+MCP
+multicluster
+NACK
+namespace
+namespaces
+OIDC
+programmatically
+RBAC
+RPC
+runtime
+scalability
+SDS
+SNI
+SPIFFE
+TCP
+TLS
+UDP
+undiscriminated
+unmanaged
+unterminated
+URI
+URL
diff --git a/dictionaries/en-US.aff b/dictionaries/en-US.aff
new file mode 100644
index 00000000000..9e7cb1e2f1c
--- /dev/null
+++ b/dictionaries/en-US.aff
@@ -0,0 +1,205 @@
+SET UTF-8
+TRY esianrtolcdugmphbyfvkwzESIANRTOLCDUGMPHBYFVKWZ'
+ICONV 1
+ICONV ’ '
+NOSUGGEST !
+
+# ordinal numbers
+COMPOUNDMIN 1
+# only in compounds: 1th, 2th, 3th
+ONLYINCOMPOUND c
+# compound rules:
+# 1. [0-9]*1[0-9]th (10th, 11th, 12th, 56714th, etc.)
+# 2. [0-9]*[02-9](1st|2nd|3rd|[4-9]th) (21st, 22nd, 123rd, 1234th, etc.)
+COMPOUNDRULE 2
+COMPOUNDRULE n*1t
+COMPOUNDRULE n*mp
+WORDCHARS 0123456789
+
+PFX A Y 1
+PFX A   0     re         .
+
+PFX I Y 1
+PFX I   0     in         .
+
+PFX U Y 1
+PFX U   0     un         .
+
+PFX C Y 1
+PFX C   0     de          .
+
+PFX E Y 1
+PFX E   0     dis         .
+
+PFX F Y 1
+PFX F   0     con         .
+
+PFX K Y 1
+PFX K   0     pro         .
+
+SFX V N 2
+SFX V   e     ive        e
+SFX V   0     ive        [^e]
+
+SFX N Y 3
+SFX N   e     ion        e
+SFX N   y     ication    y
+SFX N   0     en         [^ey]
+
+SFX X Y 3
+SFX X   e     ions       e
+SFX X   y     ications   y
+SFX X   0     ens        [^ey]
+
+SFX H N 2
+SFX H   y     ieth       y
+SFX H   0     th         [^y]
+
+SFX Y Y 1
+SFX Y   0     ly         .
+
+SFX G Y 2
+SFX G   e     ing        e
+SFX G   0     ing        [^e]
+
+SFX J Y 2
+SFX J   e     ings       e
+SFX J   0     ings       [^e]
+
+SFX D Y 4
+SFX D   0     d          e
+SFX D   y     ied        [^aeiou]y
+SFX D   0     ed         [^ey]
+SFX D   0     ed         [aeiou]y
+
+SFX T N 4
+SFX T   0     st         e
+SFX T   y     iest       [^aeiou]y
+SFX T   0     est        [aeiou]y
+SFX T   0     est        [^ey]
+
+SFX R Y 4
+SFX R   0     r          e
+SFX R   y     ier        [^aeiou]y
+SFX R   0     er         [aeiou]y
+SFX R   0     er         [^ey]
+
+SFX Z Y 4
+SFX Z   0     rs         e
+SFX Z   y     iers       [^aeiou]y
+SFX Z   0     ers        [aeiou]y
+SFX Z   0     ers        [^ey]
+
+SFX S Y 4
+SFX S   y     ies        [^aeiou]y
+SFX S   0     s          [aeiou]y
+SFX S   0     es         [sxzh]
+SFX S   0     s          [^sxzhy]
+
+SFX P Y 3
+SFX P   y     iness      [^aeiou]y
+SFX P   0     ness       [aeiou]y
+SFX P   0     ness       [^y]
+
+SFX M Y 1
+SFX M   0     's         .
+
+SFX B Y 3
+SFX B   0     able       [^aeiou]
+SFX B   0     able       ee
+SFX B   e     able       [^aeiou]e
+
+SFX L Y 1
+SFX L   0     ment       .
+
+REP 90
+REP a ei
+REP ei a
+REP a ey
+REP ey a
+REP ai ie
+REP ie ai
+REP alot a_lot
+REP are air
+REP are ear
+REP are eir
+REP air are
+REP air ere
+REP ere air
+REP ere ear
+REP ere eir
+REP ear are
+REP ear air
+REP ear ere
+REP eir are
+REP eir ere
+REP ch te
+REP te ch
+REP ch ti
+REP ti ch
+REP ch tu
+REP tu ch
+REP ch s
+REP s ch
+REP ch k
+REP k ch
+REP f ph
+REP ph f
+REP gh f
+REP f gh
+REP i igh
+REP igh i
+REP i uy
+REP uy i
+REP i ee
+REP ee i
+REP j di
+REP di j
+REP j gg
+REP gg j
+REP j ge
+REP ge j
+REP s ti
+REP ti s
+REP s ci
+REP ci s
+REP k cc
+REP cc k
+REP k qu
+REP qu k
+REP kw qu
+REP o eau
+REP eau o
+REP o ew
+REP ew o
+REP oo ew
+REP ew oo
+REP ew ui
+REP ui ew
+REP oo ui
+REP ui oo
+REP ew u
+REP u ew
+REP oo u
+REP u oo
+REP u oe
+REP oe u
+REP u ieu
+REP ieu u
+REP ue ew
+REP ew ue
+REP uff ough
+REP oo ieu
+REP ieu oo
+REP ier ear
+REP ear ier
+REP ear air
+REP air ear
+REP w qu
+REP qu w
+REP z ss
+REP ss z
+REP shun tion
+REP shun sion
+REP shun cion
+REP size cise
diff --git a/dictionaries/en-US.dic b/dictionaries/en-US.dic
new file mode 100644
index 00000000000..8a84a15521c
--- /dev/null
+++ b/dictionaries/en-US.dic
@@ -0,0 +1,48978 @@
+48977
+0/nm
+0th/pt
+1/n1
+1st/p
+1th/tc
+2/nm
+2nd/p
+2th/tc
+3/nm
+3rd/p
+3th/tc
+4/nm
+4th/pt
+5/nm
+5th/pt
+6/nm
+6th/pt
+7/nm
+7th/pt
+8/nm
+8th/pt
+9/nm
+9th/pt
+A/SM
+AA/M
+AAA
+AB/M
+ABA
+ABC/SM
+ABM/SM
+ABS
+AC/M
+ACLU/M
+ACT
+ACTH/M
+AD/M
+ADC
+ADD
+ADM
+ADP/M
+AF
+AFAIK
+AFB
+AFC/M
+AFDC
+AFN
+AFT
+AI/SM
+AIDS/M
+AK
+AL
+AM/M
+AMA
+AMD/M
+ANSI/S
+ANZUS/M
+AOL/M
+AP/M
+APB
+APC
+API
+APO
+APR
+AR
+ARC
+ASAP
+ASCII/SM
+ASL/M
+ASPCA
+ATM/M
+ATP/M
+ATV
+AV
+AVI
+AWACS/M
+AWOL/M
+AZ/M
+AZT/M
+Aachen/M
+Aaliyah/M
+Aaron/M
+Abbas/M
+Abbasid/M
+Abbott/M
+Abby/M
+Abdul/M
+Abe/M
+Abel/M
+Abelard/M
+Abelson/M
+Aberdeen/M
+Abernathy/M
+Abidjan/M
+Abigail/M
+Abilene/M
+Abner/M
+Aborigine/MS
+Abraham/M
+Abram/MS
+Abrams/M
+Absalom/M
+Abuja/M
+Abyssinia/M
+Abyssinian/M
+Ac/M
+Acadia/M
+Acapulco/M
+Accenture/M
+Accra/M
+Acevedo/M
+Achaean/M
+Achebe/M
+Achernar/M
+Acheson/M
+Achilles/M
+Aconcagua/M
+Acosta/M
+Acropolis
+Acrux/M
+Actaeon/M
+Acton/M
+Acts/M
+Acuff/M
+Ada/SM
+Adam/SM
+Adams/M
+Adan/M
+Adana/M
+Adar/M
+Addams/M
+Adderley/M
+Addie/M
+Addison/M
+Adela/M
+Adelaide/M
+Adele/M
+Adeline/M
+Aden/M
+Adenauer/M
+Adhara/M
+Adidas/M
+Adirondack/SM
+Adirondacks/M
+Adkins/M
+Adler/M
+Adm
+Admiralty
+Adolf/M
+Adolfo/M
+Adolph/M
+Adonis/MS
+Adrenalin/MS
+Adrian/M
+Adriana/M
+Adriatic/M
+Adrienne/M
+Advent/MS
+Adventist/MS
+Advil/M
+Aegean/M
+Aelfric/M
+Aeneas/M
+Aeneid/M
+Aeolus/M
+Aeroflot/M
+Aeschylus/M
+Aesculapius/M
+Aesop/M
+Afghan/SM
+Afghani/M
+Afghanistan/M
+Afr
+Africa/M
+African/SM
+Afrikaans/M
+Afrikaner/SM
+Afro/SM
+Afrocentric
+Afrocentrism/M
+Ag/M
+Agamemnon/M
+Agana
+Agassi/M
+Agassiz/M
+Agatha/M
+Aggie/M
+Aglaia/M
+Agnes/M
+Agnew/M
+Agni/M
+Agra/M
+Agricola/M
+Agrippa/M
+Agrippina/M
+Aguascalientes
+Aguilar/M
+Aguinaldo/M
+Aguirre/M
+Agustin/M
+Ahab/M
+Ahmad/M
+Ahmadabad/M
+Ahmadinejad/M
+Ahmed/M
+Ahriman/M
+Aida/M
+Aiken/M
+Aileen/M
+Aimee/M
+Ainu/M
+Airedale/MS
+Aires/M
+Aisha/M
+Ajax/M
+Akbar/M
+Akhmatova/M
+Akihito/M
+Akita/M
+Akiva/M
+Akkad/M
+Akron/M
+Al/M
+Ala/S
+Alabama/M
+Alabaman/MS
+Alabamian/SM
+Aladdin/M
+Alamo/M
+Alamogordo/M
+Alan/M
+Alana/M
+Alar/M
+Alaric/M
+Alaska/M
+Alaskan/MS
+Alba/M
+Albania/M
+Albanian/MS
+Albany/M
+Albee/M
+Alberio/M
+Albert/M
+Alberta/M
+Albertan
+Alberto/M
+Albigensian/M
+Albion/M
+Albireo/M
+Albuquerque/M
+Alcatraz/M
+Alcestis/M
+Alcibiades/M
+Alcindor/M
+Alcmena/M
+Alcoa/M
+Alcott/M
+Alcuin/M
+Alcyone/M
+Aldan/M
+Aldebaran/M
+Alden/M
+Alderamin/M
+Aldo/M
+Aldrin/M
+Alec/M
+Aleichem/M
+Alejandra/M
+Alejandro/M
+Alembert/M
+Aleppo/M
+Aleut/MS
+Aleutian/SM
+Alex/M
+Alexander/MS
+Alexandra/M
+Alexandria/M
+Alexandrian
+Alexei/M
+Alexis/M
+Alfonso/M
+Alfonzo/M
+Alford/M
+Alfred/M
+Alfreda/M
+Alfredo/M
+Algenib/M
+Alger/M
+Algeria/M
+Algerian/SM
+Algieba/M
+Algiers/M
+Algol/M
+Algonquian/SM
+Algonquin/MS
+Alhambra/M
+Alhena/M
+Ali/M
+Alice/M
+Alicia/M
+Alighieri/M
+Aline/M
+Alioth/M
+Alisa/M
+Alisha/M
+Alison/M
+Alissa/M
+Alistair/M
+Alkaid/M
+Allah/M
+Allahabad/M
+Allan/M
+Alleghenies/M
+Allegheny/SM
+Allegra/M
+Allen/M
+Allende/M
+Allentown/M
+Allhallows/M
+Allie/MS
+Allison/M
+Allstate/M
+Allyson/M
+Alma/M
+Almach/M
+Almaty/M
+Almighty/M
+Almohad/M
+Almoravid/M
+Alnilam/M
+Alnitak/M
+Alonzo/M
+Alpert/M
+Alphard/M
+Alphecca/M
+Alpheratz/M
+Alphonse/M
+Alphonso/M
+Alpine/M
+Alpo/M
+Alps/M
+Alsace/M
+Alsatian/SM
+Alsop/M
+Alston/M
+Alta/M
+Altai/M
+Altaic/M
+Altair/M
+Altamira/M
+Althea/M
+Altiplano/M
+Altman/M
+Altoids/M
+Alton/M
+Aludra/M
+Alva/M
+Alvarado/M
+Alvarez/M
+Alvaro/M
+Alvin/M
+Alyce/M
+Alyson/M
+Alyssa/M
+Alzheimer/M
+Am/MNR
+Amadeus/M
+Amado/M
+Amalia/M
+Amanda/M
+Amarillo/M
+Amaru/M
+Amaterasu/M
+Amati/M
+Amazon/SM
+Amazonian
+Amber/M
+Amelia/M
+Amen/M
+Amenhotep/M
+Amerasian/M
+America/SM
+American/MS
+Americana/M
+Americanism/MS
+Americanization/MS
+Americanize/GDS
+Amerind/SM
+Amerindian/MS
+Ameslan/M
+Amharic/M
+Amherst/M
+Amie/M
+Amiga/M
+Amish/M
+Amman/M
+Amoco/M
+Amos/M
+Amparo/M
+Ampere/M
+Amritsar/M
+Amsterdam/M
+Amtrak/M
+Amundsen/M
+Amur/M
+Amway/M
+Amy/M
+Ana/M
+Anabaptist/M
+Anabel/M
+Anacin/M
+Anacreon/M
+Anaheim/M
+Analects/M
+Ananias/M
+Anasazi/M
+Anastasia/M
+Anatole/M
+Anatolia/M
+Anatolian/M
+Anaxagoras/M
+Anchorage/M
+Andalusia/M
+Andalusian/M
+Andaman/M
+Andean/M
+Andersen/M
+Anderson/M
+Andes/M
+Andorra/M
+Andorran/SM
+Andre/MS
+Andrea/M
+Andrei/M
+Andres/M
+Andretti/M
+Andrew/SM
+Andrews/M
+Andrianampoinimerina/M
+Android/M
+Andromache/M
+Andromeda/M
+Andropov/M
+Andy/M
+Angara/M
+Angel/M
+Angela/M
+Angeles/M
+Angelia/M
+Angelica/M
+Angelico/M
+Angelina/M
+Angeline/M
+Angelique/M
+Angelita/M
+Angelo/M
+Angelou/M
+Angevin/M
+Angie/M
+Angkor/M
+Angle/MS
+Anglia/M
+Anglican/SM
+Anglicanism/MS
+Anglicism/MS
+Anglicization
+Anglicize
+Anglo/M
+Anglophile/M
+Anglophobe
+Angola/M
+Angolan/MS
+Angora/SM
+Angstrom/M
+Anguilla/M
+Angus/M
+Aniakchak/M
+Anibal/M
+Anita/M
+Ankara/M
+Ann/M
+Anna/M
+Annabel/M
+Annabelle/M
+Annam/M
+Annapolis/M
+Annapurna/M
+Anne/M
+Annette/M
+Annie/M
+Annmarie/M
+Annunciation/SM
+Anouilh/M
+Anselm/M
+Anselmo/M
+Anshan/M
+Antaeus/M
+Antananarivo/M
+Antarctic/M
+Antarctica/M
+Antares/M
+Anthony/M
+Anthropocene
+Antichrist/SM
+Antietam/M
+Antigone/M
+Antigua/M
+Antillean
+Antilles/M
+Antioch/M
+Antipas/M
+Antipodes
+Antofagasta/M
+Antoine/M
+Antoinette/M
+Anton/M
+Antone/M
+Antonia/M
+Antoninus/M
+Antonio/M
+Antonius/M
+Antony/M
+Antwan/M
+Antwerp/M
+Anubis/M
+Anzac/M
+Apache/SM
+Apalachicola/M
+Apatosaurus
+Apennines/M
+Aphrodite/M
+Apia/M
+Apocalypse/M
+Apocrypha/M
+Apollinaire/M
+Apollo/SM
+Apollonian/M
+Apostle/M
+Appalachia/M
+Appalachian/SM
+Appalachians/M
+Appaloosa/SM
+Apple/M
+Appleseed/M
+Appleton/M
+Appomattox/M
+Apr/M
+April/MS
+Apuleius/M
+Aquafresh/M
+Aquarian
+Aquarius/MS
+Aquila/M
+Aquinas/M
+Aquino/M
+Aquitaine/M
+Ar/M
+Ara/M
+Arab/SM
+Arabia/M
+Arabian/MS
+Arabic/M
+Arabist/MS
+Araby/M
+Araceli/M
+Arafat/M
+Aragon
+Araguaya/M
+Aral/M
+Aramaic/M
+Aramco/M
+Arapaho/MS
+Arapahoes
+Ararat/M
+Araucanian/M
+Arawak/M
+Arawakan/M
+Arbitron/M
+Arcadia/M
+Arcadian/M
+Archean/M
+Archibald/M
+Archie/M
+Archimedes/M
+Arctic/M
+Arcturus/M
+Ardabil
+Arden/M
+Arequipa/M
+Ares/M
+Argentina/M
+Argentine/M
+Argentinean
+Argentinian/MS
+Argo/SM
+Argonaut/MS
+Argonne/M
+Argos/M
+Argus/M
+Ariadne/M
+Arianism/M
+Ariel/M
+Aries/MS
+Ariosto/M
+Aristarchus/M
+Aristides/M
+Aristophanes/M
+Aristotelian/M
+Aristotle/M
+Arius/M
+Ariz
+Arizona/M
+Arizonan/SM
+Arizonian/MS
+Arjuna/M
+Ark/M
+Arkansan/MS
+Arkansas/M
+Arkhangelsk/M
+Arkwright/M
+Arlene/M
+Arline/M
+Arlington/M
+Armageddon/SM
+Armagnac/M
+Armand/M
+Armando/M
+Armani/M
+Armenia/M
+Armenian/SM
+Arminius/M
+Armonk/M
+Armour/M
+Armstrong/M
+Arneb/M
+Arnhem/M
+Arno/M
+Arnold/M
+Arnulfo/M
+Aron/M
+Arrhenius/M
+Arron/M
+Art/M
+Artaxerxes/M
+Artemis/M
+Arthur/M
+Arthurian/M
+Artie/M
+Arturo/M
+Aruba/M
+Aryan/MS
+As/M
+Asama/M
+Ascella/M
+Ascension/M
+Asgard/M
+Ashanti/M
+Ashcroft/M
+Ashe/M
+Ashgabat
+Ashikaga/M
+Ashkenazim/M
+Ashkhabad/M
+Ashlee/M
+Ashley/M
+Ashmolean/M
+Ashurbanipal/M
+Asia/M
+Asiago
+Asian/MS
+Asiatic/SM
+Asimov/M
+Asmara/M
+Asoka/M
+Aspell/M
+Aspen/M
+Asperger/M
+Aspidiske/M
+Asquith/M
+Assad/M
+Assam/M
+Assamese/M
+Assembly
+Assisi/M
+Assyria/M
+Assyrian/SM
+Astaire/M
+Astana/M
+Astarte/M
+Aston/M
+Astor/M
+Astoria/M
+Astrakhan/M
+AstroTurf/M
+Asturias/M
+Asuncion/M
+Aswan/M
+At/SM
+Atacama/M
+Atahualpa/M
+Atalanta/M
+Atari/M
+Ataturk/M
+Athabasca/M
+Athabaskan/SM
+Athanasius
+Athena/M
+Athene/M
+Athenian/SM
+Athens/M
+Atkins/M
+Atkinson/M
+Atlanta/M
+Atlantes
+Atlantic/M
+Atlantis/M
+Atlas/MS
+Atman/M
+Atonement
+Atreus/M
+Atria/M
+Atropos/M
+Attic/M
+Attica/M
+Attila/M
+Attlee/M
+Attn
+Attucks/M
+Atwood/M
+Au/M
+Aubrey/M
+Auckland/M
+Auden/M
+Audi/M
+Audion/M
+Audra/M
+Audrey/M
+Audubon/M
+Aug/M
+Augean/M
+Augsburg/M
+August/MS
+Augusta/M
+Augustan/M
+Augustine/M
+Augustinian/MS
+Augustus/M
+Aurangzeb/M
+Aurelia/M
+Aurelio/M
+Aurelius/M
+Aureomycin/M
+Auriga/M
+Aurora/M
+Auschwitz/M
+Aussie/MS
+Austen/M
+Austerlitz/M
+Austin/MS
+Australasia/M
+Australasian
+Australia/M
+Australian/SM
+Australoid/M
+Australopithecus/M
+Austria/M
+Austrian/SM
+Austronesian/M
+Autumn/M
+Av/M
+Ava/M
+Avalon/M
+Ave/M
+Aventine/M
+Avernus/M
+Averroes/M
+Avery/M
+Avesta/M
+Avicenna/M
+Avignon/M
+Avila/M
+Avior/M
+Avis/M
+Avogadro/M
+Avon/M
+Axis
+Axum/M
+Ayala/M
+Ayers/M
+Aymara/M
+Ayrshire/M
+Ayurveda/M
+Ayyubid/M
+Azana/M
+Azania/M
+Azazel/M
+Azerbaijan/M
+Azerbaijani/MS
+Azores/M
+Azov/M
+Aztec/SM
+Aztecan/M
+Aztlan/M
+B/MNT
+BA/M
+BASIC/SM
+BB/M
+BBB/M
+BBC/M
+BBQ
+BBS
+BBSes
+BC/M
+BFF
+BIA
+BIOS
+BITNET
+BLT/SM
+BM/M
+BMW/M
+BO
+BP/M
+BPOE
+BR
+BS/M
+BSA
+BSD/SM
+BTU
+BTW
+BYOB
+Ba/M
+Baal/SM
+Baath/M
+Baathist/M
+Babbage/M
+Babbitt/M
+Babel/MS
+Babylon/MS
+Babylonia/M
+Babylonian/SM
+Bacall/M
+Bacardi/M
+Bacchanalia/M
+Bacchic
+Bacchus/M
+Bach/M
+Backus/M
+Bacon/M
+Bactria/M
+Baden/M
+Badlands/M
+Baedeker/MS
+Baez/M
+Baffin/M
+Baggies/M
+Baghdad/M
+Baguio/M
+Baha'i/M
+Baha'ullah/M
+Bahama/SM
+Bahamanian
+Bahamas/M
+Bahamian/MS
+Bahia/M
+Bahrain/M
+Baikal/M
+Bailey/M
+Baird/M
+Bakelite/M
+Baker/M
+Bakersfield/M
+Baku/M
+Bakunin/M
+Balanchine/M
+Balaton/M
+Balboa/M
+Balder/M
+Baldwin/SM
+Balearic/M
+Balfour/M
+Bali/M
+Balinese/M
+Balkan/MS
+Balkans/M
+Balkhash/M
+Ball/M
+Ballard/M
+Balthazar/M
+Baltic/M
+Baltimore/M
+Baluchistan/M
+Balzac/M
+Bamako/M
+Bambi/M
+Banach/M
+Bancroft/M
+Bandung/M
+Bangalore/M
+Bangkok/M
+Bangladesh/M
+Bangladeshi/SM
+Bangor/M
+Bangui/M
+Banjarmasin/M
+Banjul/M
+Banks/M
+Banneker/M
+Bannister/M
+Banting/M
+Bantu/MS
+Baotou/M
+Baptist/SM
+Baptiste/M
+Barabbas/M
+Barack/M
+Barbadian/SM
+Barbados/M
+Barbara/M
+Barbarella/M
+Barbarossa/M
+Barbary/M
+Barber/M
+Barbie/M
+Barbour/M
+Barbra/M
+Barbuda/M
+Barcelona/M
+Barclay/SM
+Barclays/M
+Bardeen/M
+Barents/M
+Barker/M
+Barkley/M
+Barlow/M
+Barnabas/M
+Barnaby/M
+Barnard/M
+Barnaul/M
+Barnes/M
+Barnett/M
+Barney/M
+Barnum/M
+Baroda/M
+Barquisimeto/M
+Barr/M
+Barranquilla/M
+Barrera/M
+Barrett/M
+Barrie/M
+Barron/M
+Barry/M
+Barrymore/M
+Bart/M
+Barth/MS
+Bartholdi/M
+Bartholomew/M
+Bartlett/M
+Bartok/M
+Barton/M
+Baruch/M
+Baryshnikov/M
+Basel/M
+Basho/M
+Basie/M
+Basil/M
+Basque/MS
+Basra/M
+Bass/M
+Basseterre/M
+Bastille/M
+Basutoland/M
+Bataan/M
+Bates/M
+Bathsheba/M
+Batista/M
+Batman/M
+Battle/M
+Batu/M
+Baudelaire/M
+Baudouin/M
+Baudrillard/M
+Bauer/M
+Bauhaus/M
+Baum/M
+Bavaria/M
+Bavarian/M
+Baxter/M
+Bayamon
+Bayer/M
+Bayes/M
+Bayesian/M
+Bayeux/M
+Baylor/M
+Bayonne/M
+Bayreuth/M
+Baywatch/M
+Be/MH
+Beach/M
+Beadle/M
+Bean/M
+Beard/M
+Beardmore/M
+Beardsley/M
+Bearnaise/M
+Beasley/M
+Beatlemania/M
+Beatles/M
+Beatrice/M
+Beatrix/M
+Beatriz/M
+Beatty/M
+Beau/M
+Beaufort/M
+Beaujolais/M
+Beaumarchais/M
+Beaumont/M
+Beauregard/M
+Beauvoir/M
+Bechtel/M
+Beck/MR
+Becker/M
+Becket/M
+Beckett/M
+Becky/M
+Becquerel/M
+Bede/M
+Bedouin/SM
+Beebe/M
+Beecher/M
+Beefaroni/M
+Beelzebub/M
+Beerbohm/M
+Beethoven/M
+Beeton/M
+Begin/M
+Behan/M
+Behring/M
+Beiderbecke/M
+Beijing/M
+Beirut/M
+Bekesy/M
+Bela/M
+Belarus/M
+Belau/M
+Belem/M
+Belfast/M
+Belg
+Belgian/SM
+Belgium/M
+Belgrade/M
+Belinda/M
+Belize/M
+Bell/M
+Bella/M
+Bellamy/M
+Bellatrix/M
+Belleek/M
+Bellini/M
+Bellow/M
+Belmont/M
+Belmopan/M
+Belorussian/MS
+Belshazzar/M
+Beltane/M
+Belushi/M
+Ben/M
+Benacerraf/M
+Benchley/M
+Bender/M
+Bendix/M
+Benedict/M
+Benedictine/MS
+Benelux/M
+Benet/M
+Benetton/M
+Bengal/SM
+Bengali/M
+Benghazi/M
+Benin/M
+Beninese/M
+Benita/M
+Benito/M
+Benjamin/M
+Bennett/M
+Bennie/M
+Benny/M
+Benson/M
+Bentham/M
+Bentley/M
+Benton/M
+Benz/M
+Benzedrine/M
+Beowulf/M
+Berber/SM
+Berenice/M
+Beretta/M
+Berg/MNR
+Bergen/M
+Berger/M
+Bergerac/M
+Bergman/M
+Bergson/M
+Beria/M
+Bering/M
+Berkeley/M
+Berkshire/SM
+Berkshires/M
+Berle/M
+Berlin/SZMR
+Berliner/M
+Berlioz/M
+Berlitz/M
+Bermuda/SM
+Bermudan/SM
+Bermudian/SM
+Bern/M
+Bernadette/M
+Bernadine/M
+Bernanke/M
+Bernard/M
+Bernardo/M
+Bernays/M
+Bernbach/M
+Bernese
+Bernhardt/M
+Bernice/M
+Bernie/M
+Bernini/M
+Bernoulli/M
+Bernstein/M
+Berra/M
+Berry/M
+Bert/M
+Berta/M
+Bertelsmann/M
+Bertha/M
+Bertie/M
+Bertillon/M
+Bertram/M
+Bertrand/M
+Beryl/M
+Berzelius/M
+Bess/M
+Bessel/M
+Bessemer/M
+Bessie/M
+Best/M
+Betelgeuse/M
+Beth/M
+Bethany/M
+Bethe/M
+Bethesda/M
+Bethlehem/M
+Bethune/M
+Betsy/M
+Bette/M
+Bettie/M
+Betty/M
+Bettye/M
+Beulah/M
+Beveridge
+Beverley/M
+Beverly/M
+Beyer/M
+Bharat/M
+Bhopal/M
+Bhutan/M
+Bhutanese/M
+Bhutto/M
+Bi/M
+Bialystok/M
+Bianca/M
+Bib
+Bible/MS
+Bic/M
+Biddle/M
+Biden/M
+Bierce/M
+Bigfoot/M
+Biggles/M
+Biko/M
+Bilbao/M
+Bilbo/M
+Bill/MJ
+Billie/M
+Billings/M
+Billy/M
+Bimini/M
+Bioko/M
+Bird/M
+Birdseye/M
+Birkenstock/M
+Birmingham/M
+Biro/M
+Biscay/M
+Biscayne/M
+Bishkek/M
+Bishop/M
+Bismarck/M
+Bismark/M
+Bisquick/M
+Bissau/M
+BitTorrent/M
+Bizet/M
+Bjerknes/M
+Bjork/M
+Bk/M
+BlackBerry/M
+Blackbeard/M
+Blackburn/M
+Blackfeet/M
+Blackfoot/M
+Blackpool/M
+Blackshirt/M
+Blackstone/M
+Blackwell/M
+Blaine/M
+Blair/M
+Blake/M
+Blanca/M
+Blanchard/M
+Blanche/M
+Blankenship/M
+Blantyre/M
+Blatz/M
+Blavatsky/M
+Blenheim/M
+Blevins/M
+Bligh/M
+Bloch/M
+Blockbuster/M
+Bloemfontein/M
+Blondel/M
+Blondie/M
+Bloom/MR
+Bloomer/M
+Bloomfield/M
+Bloomingdale/M
+Bloomsbury/M
+Blu
+Blucher/M
+Bluebeard/M
+Bluetooth/M
+Blvd
+Blythe/M
+Boadicea
+Boas/M
+Bob/M
+Bobbi/M
+Bobbie/M
+Bobbitt/M
+Bobby/M
+Boccaccio/M
+Bodhidharma/M
+Bodhisattva/M
+Bodleian
+Boeing/M
+Boeotia/M
+Boeotian/M
+Boer/SM
+Boethius/M
+Bogart/M
+Bogota/M
+Bohemia/M
+Bohemian/SM
+Bohr/M
+Boise/M
+Bojangles/M
+Boleyn/M
+Bolivar/M
+Bolivia/M
+Bolivian/MS
+Bollywood/M
+Bologna/M
+Bolshevik/SM
+Bolsheviki
+Bolshevism/M
+Bolshevist/M
+Bolshoi/M
+Bolton/M
+Boltzmann/M
+Bombay/M
+Bonaparte/M
+Bonaventure/M
+Bond/M
+Bonhoeffer/M
+Boniface/M
+Bonita/M
+Bonn/MR
+Bonner/M
+Bonneville/M
+Bonnie/M
+Bono/M
+Booker/M
+Boole/M
+Boolean/M
+Boone/M
+Bootes/M
+Booth/M
+Bordeaux/M
+Borden/M
+Bordon/M
+Boreas/M
+Borg/SM
+Borges/M
+Borgia/M
+Borglum/M
+Boris/M
+Bork/M
+Borlaug/M
+Born/M
+Borneo/M
+Borobudur/M
+Borodin/M
+Boru/M
+Bosch/M
+Bose/M
+Bosnia/M
+Bosnian
+Bosporus/M
+Boston/MS
+Bostonian/M
+Boswell/M
+Botox
+Botswana/M
+Botticelli/M
+Boulder/M
+Boulez/M
+Bourbaki/M
+Bourbon/SM
+Bournemouth/M
+Bovary/M
+Bowditch/M
+Bowell/M
+Bowen/M
+Bowers/M
+Bowery/M
+Bowie/M
+Bowman/M
+Boyd/M
+Boyer/M
+Boyle/M
+Br/MT
+Brad/MY
+Bradbury/M
+Braddock/M
+Bradford/M
+Bradley/M
+Bradly/M
+Bradshaw/M
+Bradstreet/M
+Brady/M
+Bragg/M
+Brahe/M
+Brahma/MS
+Brahmagupta/M
+Brahman/MS
+Brahmani
+Brahmanism/SM
+Brahmaputra/M
+Brahms/M
+Braille/MS
+Brain/M
+Brampton/M
+Bran/M
+Branch/M
+Brandeis/M
+Branden/M
+Brandenburg/M
+Brandi/M
+Brandie/M
+Brando/M
+Brandon/M
+Brandt/M
+Brandy/M
+Brant/M
+Braque/M
+Brasilia/M
+Bratislava/M
+Brattain/M
+Bray/M
+Brazil/M
+Brazilian/MS
+Brazos/M
+Brazzaville/M
+Breakspear/M
+Breathalyzer
+Brecht/M
+Breckenridge/M
+Bremen/M
+Brenda/M
+Brendan/M
+Brennan/M
+Brenner/M
+Brent/M
+Brenton/M
+Brest/M
+Bret/M
+Breton/M
+Brett/M
+Brewer/M
+Brewster/M
+Brezhnev/M
+Brian/M
+Briana/M
+Brianna/M
+Brice/M
+Bridalveil/M
+Bridgeport/M
+Bridger/M
+Bridges/M
+Bridget/M
+Bridgetown/M
+Bridgett/M
+Bridgette/M
+Bridgman/M
+Brie/SM
+Brigadoon/M
+Briggs/M
+Brigham/M
+Bright/M
+Brighton/M
+Brigid/M
+Brigitte/M
+Brillo/M
+Brinkley/M
+Brisbane/M
+Bristol/M
+Brit/SM
+Britain/M
+Britannia/M
+Britannic/M
+Britannica/M
+Briticism/SM
+British/MRZ
+Britisher/M
+Britney/M
+Briton/MS
+Britt/MN
+Brittany/SM
+Britten/M
+Brittney/M
+Brno/M
+Broadway/SM
+Brobdingnag/M
+Brobdingnagian/M
+Brock/M
+Brokaw/M
+Bronson/M
+Bronte/M
+Brontosaurus
+Bronx/M
+Brooke/MS
+Brooklyn/M
+Brooks/M
+Bros
+Brown/MG
+Browne/M
+Brownian/M
+Brownie/S
+Browning/M
+Brownshirt/M
+Brownsville/M
+Brubeck/M
+Bruce/M
+Bruckner/M
+Bruegel
+Brummel/M
+Brunei/M
+Bruneian/MS
+Brunelleschi/M
+Brunhilde/M
+Bruno/M
+Brunswick/M
+Brussels/M
+Brut/M
+Brutus/M
+Bryan/M
+Bryant/M
+Bryce/M
+Brynner/M
+Bryon/M
+Brzezinski/M
+Btu/M
+Buber/M
+Buchanan/M
+Bucharest/M
+Buchenwald/M
+Buchwald/M
+Buck/M
+Buckingham/M
+Buckley/M
+Buckner/M
+Bud/M
+Budapest/M
+Buddha/SM
+Buddhism/SM
+Buddhist/SM
+Buddy/M
+Budweiser/M
+Buffalo/M
+Buffy/M
+Buford/M
+Bugatti/M
+Bugzilla/M
+Buick/M
+Bujumbura/M
+Bukhara/M
+Bukharin/M
+Bulawayo/M
+Bulfinch/M
+Bulganin/M
+Bulgar/M
+Bulgari/M
+Bulgaria/M
+Bulgarian/SM
+Bullock/M
+Bullwinkle/M
+Bultmann/M
+Bumppo/M
+Bunche/M
+Bundesbank/M
+Bundestag/M
+Bunin/M
+Bunker/M
+Bunsen/M
+Bunuel/M
+Bunyan/M
+Burbank/M
+Burberry/M
+Burch/M
+Burger/M
+Burgess/M
+Burgoyne/M
+Burgundian/M
+Burgundy/SM
+Burke/M
+Burks/M
+Burl/M
+Burlington/M
+Burma/M
+Burmese/M
+Burnett/M
+Burns/M
+Burnside/M
+Burr/M
+Burris/M
+Burroughs/M
+Bursa/M
+Burt/M
+Burton/M
+Burundi/M
+Burundian/MS
+Busch/M
+Bush/M
+Bushido/M
+Bushnell/M
+Butler/M
+Butterfingers/M
+Buxtehude/M
+Byblos/M
+Byers/M
+Byrd/M
+Byron/M
+Byronic/M
+Byzantine/MS
+Byzantium/M
+C/SM
+CA
+CAD/M
+CAI
+CAM
+CAP
+CARE
+CATV
+CB
+CBC/M
+CBS/M
+CCTV
+CCU
+CD/M
+CDC
+CDT
+CEO/M
+CF
+CFC/M
+CFO
+CGI
+CIA/M
+CID
+CNN/M
+CNS/M
+CO/M
+COBOL/SM
+COD
+COL
+COLA
+CPA/M
+CPI/M
+CPO
+CPR/M
+CPU/M
+CRT/SM
+CST/M
+CT/M
+CV
+CVS/M
+CZ
+Ca/M
+Cabernet/M
+Cabot/M
+Cabral/M
+Cabrera/M
+Cabrini/M
+Cadette
+Cadillac/M
+Cadiz/M
+Caedmon/M
+Caerphilly/M
+Caesar/SM
+Cage/M
+Cagney/M
+Cahokia/M
+Caiaphas/M
+Cain/SM
+Cairo/M
+Caitlin/M
+Cajun/MS
+Cal/M
+Calais/M
+Calcutta/M
+Calder/M
+Calderon/M
+Caldwell/M
+Caleb/M
+Caledonia/M
+Calgary/M
+Calhoun/M
+Cali/M
+Caliban/M
+Calif
+California/M
+Californian/SM
+Caligula/M
+Callaghan/M
+Callahan/M
+Callao/M
+Callas/M
+Callie/M
+Calliope/M
+Callisto/M
+Caloocan/M
+Calvary/M
+Calvert/M
+Calvin/M
+Calvinism/MS
+Calvinist/MS
+Calvinistic
+Camacho/M
+Cambodia/M
+Cambodian/SM
+Cambrian/SM
+Cambridge/M
+Camden/M
+Camel/M
+Camelopardalis/M
+Camelot/MS
+Camembert/MS
+Cameron/M
+Cameroon/SM
+Cameroonian/MS
+Camilla/M
+Camille/M
+Camoens/M
+Campanella/M
+Campbell/M
+Campinas/M
+Campos/M
+Camry/M
+Camus/M
+Can/M
+Canaan/M
+Canaanite/MS
+Canad
+Canada/M
+Canadian/SM
+Canadianism
+Canaletto/M
+Canaries/M
+Canaveral/M
+Canberra/M
+Cancer/SM
+Cancun/M
+Candace/M
+Candice/M
+Candide/M
+Candy/M
+Cannes/M
+Cannon/M
+Canon/M
+Canopus/M
+Cantabrigian/M
+Canterbury/M
+Canton/M
+Cantonese/M
+Cantor/M
+Cantrell/M
+Cantu/M
+Canute/M
+Capablanca/M
+Capek/M
+Capella/M
+Capet/M
+Capetian/M
+Capetown/M
+Caph/M
+Capistrano/M
+Capitol/SM
+Capitoline/M
+Capone/M
+Capote/M
+Capra/M
+Capri/M
+Capricorn/MS
+Capt
+Capuchin/M
+Capulet/M
+Cara/M
+Caracalla/M
+Caracas/M
+Caravaggio/M
+Carboloy/M
+Carboniferous/M
+Carborundum/M
+Cardenas/M
+Cardiff/M
+Cardin/M
+Cardozo/M
+Carey/M
+Carib/MS
+Caribbean/MS
+Carina/M
+Carissa/M
+Carl/M
+Carla/M
+Carlene/M
+Carlin/M
+Carlo/MS
+Carlos/M
+Carlsbad/M
+Carlson/M
+Carlton/M
+Carly/M
+Carlyle/M
+Carmela/M
+Carmella/M
+Carmelo/M
+Carmen/M
+Carmichael/M
+Carmine/M
+Carnap/M
+Carnation/M
+Carnegie/M
+Carney/M
+Carnot/M
+Carol/M
+Carole/M
+Carolina/M
+Caroline/M
+Carolingian/M
+Carolinian/M
+Carolyn/M
+Carpathian/SM
+Carpathians/M
+Carpenter/M
+Carr/M
+Carranza/M
+Carrie/RM
+Carrier/M
+Carrillo/M
+Carroll/M
+Carson/M
+Carter/M
+Cartesian/M
+Carthage/M
+Carthaginian/MS
+Cartier/M
+Cartwright/M
+Caruso/M
+Carver/M
+Cary/M
+Casablanca/M
+Casals/M
+Casandra/M
+Casanova/SM
+Cascades/M
+Case/M
+Casey/M
+Cash/M
+Casio/M
+Caspar/M
+Caspian/M
+Cassandra/SM
+Cassatt/M
+Cassidy/M
+Cassie/M
+Cassiopeia/M
+Cassius/M
+Castaneda/M
+Castilian
+Castillo/M
+Castlereagh/M
+Castor/M
+Castries/M
+Castro/M
+Catalan/SM
+Catalina/M
+Catalonia/M
+Catawba/M
+Caterpillar/M
+Cathay/M
+Cather/M
+Catherine/M
+Cathleen/M
+Catholic/MS
+Catholicism/MS
+Cathryn/M
+Cathy/M
+Catiline/M
+Cato/M
+Catskill/SM
+Catskills/M
+Catt/M
+Catullus/M
+Caucasian/MS
+Caucasoid
+Caucasus/M
+Cauchy/M
+Cavendish/M
+Cavour/M
+Caxton/M
+Cayenne/M
+Cayman/M
+Cayuga/SM
+Cayuse
+Cb
+Cd/M
+Ce/M
+Ceausescu/M
+Cebu/M
+Cebuano/M
+Cecelia/M
+Cecil/M
+Cecile/M
+Cecilia/M
+Cecily/M
+Cedric/M
+Celeste/M
+Celia/M
+Celina/M
+Cellini/M
+Celsius/M
+Celt/SM
+Celtic/SM
+Cenozoic/M
+Centaurus/M
+Centigrade
+Central
+Cepheid/M
+Cepheus/M
+Cerberus/M
+Cerenkov/M
+Ceres/M
+Cerf/M
+Cervantes/M
+Cesar/M
+Cesarean/M
+Cessna/M
+Cetus/M
+Ceylon/M
+Ceylonese
+Cezanne/M
+Cf/M
+Ch'in/M
+Ch/N
+Chablis/M
+Chad/M
+Chadian/MS
+Chadwick/M
+Chagall/M
+Chaitanya/M
+Chaitin/M
+Chaldea
+Chaldean/M
+Challenger/M
+Chalmers
+Chamberlain/M
+Chambers/M
+Champlain/M
+Champollion/M
+Chan/M
+Chance/M
+Chancellorsville/M
+Chandigarh/M
+Chandler/M
+Chandon/M
+Chandra/M
+Chandragupta/M
+Chandrasekhar/M
+Chanel/M
+Chaney/M
+Chang/M
+Changchun/M
+Changsha/M
+Chantilly/M
+Chaplin/M
+Chaplinesque
+Chapman/M
+Chappaquiddick/M
+Chapultepec/M
+Charbray/M
+Chardonnay/M
+Charity/M
+Charlemagne/M
+Charlene/M
+Charles/M
+Charleston/MS
+Charley/M
+Charlie/M
+Charlotte/M
+Charlottetown/M
+Charmaine/M
+Charmin/M
+Charolais/M
+Charon/M
+Chartism/M
+Chartres/M
+Charybdis/M
+Chase/M
+Chasity/M
+Chateaubriand/M
+Chattahoochee/M
+Chattanooga/M
+Chatterley/M
+Chatterton/M
+Chaucer/M
+Chauncey/M
+Chautauqua/M
+Chavez/M
+Chayefsky/M
+Che/M
+Chechen/M
+Chechnya/M
+Cheddar/M
+Cheer/M
+Cheerios/M
+Cheetos/M
+Cheever/M
+Chekhov/M
+Chekhovian
+Chelsea/M
+Chelyabinsk/M
+Chen/M
+Cheney/M
+Chengdu/M
+Chennai/M
+Cheops/M
+Cheri/M
+Cherie/M
+Chernenko/M
+Chernobyl/M
+Chernomyrdin/M
+Cherokee/MS
+Cherry/M
+Cheryl/M
+Chesapeake/M
+Cheshire/M
+Chester/M
+Chesterfield/M
+Chesterton/M
+Chevalier/M
+Cheviot/M
+Chevrolet/M
+Chevron/M
+Chevy/M
+Cheyenne/SM
+Chi/M
+Chianti/MS
+Chiba/M
+Chibcha/M
+Chicago/M
+Chicagoan/M
+Chicana/M
+Chicano/M
+Chickasaw/MS
+Chiclets/M
+Chihuahua/MS
+Chile/M
+Chilean/MS
+Chimborazo/M
+Chimera/MS
+Chimu/M
+Chin/M
+China/M
+Chinatown/M
+Chinese/M
+Chinook/MS
+Chipewyan/M
+Chippendale/M
+Chippewa/SM
+Chiquita/M
+Chirico/M
+Chisholm/M
+Chisinau/M
+Chittagong/M
+Chivas/M
+Chloe/M
+Choctaw/SM
+Chomsky/M
+Chongqing/M
+Chopin/M
+Chopra/M
+Chou/M
+Chretien/M
+Chris/M
+Christ/MS
+Christa/M
+Christchurch/M
+Christendom/MS
+Christensen/M
+Christi/M
+Christian/SM
+Christianity/SM
+Christianize
+Christie/M
+Christina/M
+Christine/M
+Christlike
+Christmas/MS
+Christmastide/MS
+Christmastime/MS
+Christoper/M
+Christopher/M
+Chronicles
+Chrysler/M
+Chrysostom/M
+Chrystal/M
+Chuck/M
+Chukchi/M
+Chumash/M
+Chung/M
+Church/M
+Churchill/M
+Churriguera/M
+Chuvash/M
+Ci/M
+Cicero/M
+Cid/M
+Cimabue/M
+Cincinnati/M
+Cinderella/MS
+Cindy/M
+CinemaScope/M
+Cinerama/M
+Cipro/M
+Circe/M
+Cisco/M
+Citibank/M
+Citigroup/M
+Citroen/M
+Cl/MV
+Claiborne/M
+Clair/M
+Claire/M
+Clairol/M
+Clancy/M
+Clapeyron/M
+Clapton/M
+Clara/M
+Clare/M
+Clarence/M
+Clarendon/M
+Clarice/M
+Clarissa/M
+Clark/M
+Clarke/M
+Claude/M
+Claudette/M
+Claudia/M
+Claudine/M
+Claudio/M
+Claudius/M
+Claus/M
+Clausewitz/M
+Clausius/M
+Clay/M
+Clayton/M
+Clearasil/M
+Clem/XM
+Clemenceau/M
+Clemens/M
+Clement/MS
+Clementine/M
+Clements/M
+Clemons/M
+Clemson/M
+Cleo/M
+Cleopatra/M
+Cleveland/M
+Cliburn/M
+Cliff/M
+Clifford/M
+Clifton/M
+Cline/M
+Clint/M
+Clinton/M
+Clio/M
+Clive/M
+Clorets/M
+Clorox/M
+Closure/M
+Clotho/M
+Clouseau/M
+Clovis/M
+Clyde/M
+Clydesdale/M
+Clytemnestra/M
+Cm/M
+Cmdr
+Co/M
+Cobain/M
+Cobb/M
+Cochabamba/M
+Cochin/M
+Cochise/M
+Cochran/M
+Cockney/M
+Cocteau/M
+Cod
+Cody/M
+Coffey/M
+Cognac/M
+Cohan/M
+Cohen/M
+Coimbatore/M
+Cointreau/M
+Coke/SM
+Col/M
+Colbert/M
+Colby/M
+Cole/M
+Coleen/M
+Coleman/M
+Coleridge/M
+Colette/M
+Colfax/M
+Colgate/M
+Colin/M
+Colleen/M
+Collier/M
+Collin/SM
+Collins/M
+Colo
+Cologne/M
+Colombia/M
+Colombian/MS
+Colombo/M
+Colon/M
+Coloradan/SM
+Colorado/M
+Coloradoan
+Colosseum/M
+Colt/M
+Coltrane/M
+Columbia/M
+Columbine/M
+Columbus/M
+Com
+Comanche/MS
+Combs/M
+Comdr
+Comintern/M
+Commandment
+Commons/M
+Commonwealth
+Communion/SM
+Communism
+Communist/SM
+Como/M
+Comoran
+Comoros/M
+Compaq/M
+Compton/M
+CompuServe/M
+Comte/M
+Conakry/M
+Conan/M
+Concepcion/M
+Concetta/M
+Concord/SM
+Concorde/M
+Condillac/M
+Condorcet/M
+Conestoga/M
+Confederacy/M
+Confederate/MS
+Confucian/SM
+Confucianism/MS
+Confucius/M
+Cong/M
+Congo/M
+Congolese/M
+Congregational
+Congregationalist/MS
+Congress/MS
+Congressional
+Congreve/M
+Conley/M
+Conn/MR
+Connecticut/M
+Connemara/M
+Conner/M
+Connery/M
+Connie/M
+Connolly/M
+Connors/M
+Conrad/M
+Conrail/M
+Conservative
+Constable/M
+Constance/M
+Constantine/M
+Constantinople/M
+Constitution
+Consuelo/M
+Continent/M
+Continental/M
+Contreras/M
+Conway/M
+Cook/M
+Cooke/M
+Cooley/M
+Coolidge/M
+Cooper/M
+Cooperstown/M
+Coors/M
+Copacabana/M
+Copeland/M
+Copenhagen/M
+Copernican/M
+Copernicus/M
+Copland/M
+Copley/M
+Copperfield/M
+Coppertone/M
+Coppola/M
+Coptic/M
+Cora/M
+Cordelia/M
+Cordilleras/M
+Cordoba/M
+Corey/M
+Corfu/M
+Corina/M
+Corine/M
+Corinne/M
+Corinth/M
+Corinthian/MS
+Corinthians/M
+Coriolanus/M
+Coriolis/M
+Cork
+Corleone/M
+Cormack/M
+Corneille/M
+Cornelia/M
+Cornelius/M
+Cornell/M
+Corning/M
+Cornish/MS
+Cornwall/M
+Cornwallis/M
+Coronado/M
+Corot/M
+Corp
+Correggio/M
+Corrine/M
+Corsica/M
+Corsican/M
+Cortes/MS
+Cortland/M
+Corvallis/M
+Corvette/M
+Corvus/M
+Cory/M
+Cosby/M
+Cossack/M
+Costco/M
+Costello/M
+Costner/M
+Cote/M
+Cotonou/M
+Cotopaxi/M
+Cotswold/M
+Cotton/M
+Coulomb/M
+Coulter/M
+Couperin/M
+Courbet/M
+Courtney/M
+Cousteau/M
+Coventry/SM
+Coward/M
+Cowell/M
+Cowley/M
+Cowper/M
+Cox/M
+Coy/M
+Cozumel/M
+Cpl
+Cr/MT
+Crabbe/M
+Craft/M
+Craig/M
+Cranach/M
+Crane/M
+Cranmer/M
+Crater/M
+Crawford/M
+Cray/M
+Crayola/M
+Creation/M
+Creator/M
+Crecy/M
+Cree/DSM
+Creek/SM
+Creighton/M
+Creole/SM
+Creon/M
+Cressida/M
+Crest/M
+Cretaceous/M
+Cretan/SM
+Crete/M
+Crichton/M
+Crick/M
+Crimea/M
+Crimean/M
+Criollo/M
+Crisco/M
+Cristina/M
+Croat/SM
+Croatia/M
+Croatian/MS
+Croce/M
+Crockett/M
+Croesus/M
+Cromwell/M
+Cromwellian/M
+Cronin/M
+Cronkite/M
+Cronus/M
+Crookes/M
+Crosby/M
+Cross/M
+Crow/SM
+Crowley/M
+Crucifixion/MS
+Cruikshank/M
+Cruise/M
+Crusades's
+Crusoe/M
+Crux/M
+Cruz/M
+Cryptozoic/M
+Crystal/M
+Csonka/M
+Ct
+Ctesiphon/M
+Cthulhu/M
+Cu/M
+Cuba/M
+Cuban/SM
+Cuchulain/M
+Cuisinart/M
+Culbertson/M
+Cullen/M
+Cumberland/M
+Cummings/M
+Cunard/M
+Cunningham/M
+Cupid/M
+Curacao/M
+Curie/M
+Curitiba/M
+Currier/M
+Curry/RM
+Curt/M
+Curtis/M
+Custer/M
+Cuvier/M
+Cuzco/M
+Cybele/M
+Cyclades/M
+Cyclopes/M
+Cyclops/M
+Cygnus/M
+Cymbeline/M
+Cynthia/M
+Cyprian/M
+Cypriot/MS
+Cyprus/M
+Cyrano/M
+Cyril/M
+Cyrillic/M
+Cyrus/M
+Czech/M
+Czechia/M
+Czechoslovak
+Czechoslovakia/M
+Czechoslovakian/SM
+Czechs
+Czerny/M
+D/M
+DA/M
+DAR
+DAT/M
+DBMS/M
+DC/M
+DD/M
+DDS/M
+DDT/S
+DE
+DEA
+DEC/SD
+DH
+DHS
+DI
+DJ
+DMCA
+DMD/M
+DMZ
+DNA/M
+DOA
+DOB
+DOD
+DOE
+DOS/M
+DOT
+DP/SM
+DPT
+DST
+DTP
+DUI
+DVD
+DVR/SM
+DWI
+Dachau/M
+Dacron/SM
+Dada/M
+Dadaism/M
+Daedalus/M
+Daguerre/M
+Dagwood/M
+Dahomey/M
+Daimler/M
+Daisy/M
+Dakar/M
+Dakota/SM
+Dakotan/M
+Dalai
+Dale/M
+Daley/M
+Dali/M
+Dalian/M
+Dallas/M
+Dalmatia/M
+Dalmatian/SM
+Dalton/M
+Damascus/M
+Dame/MN
+Damian/M
+Damien/M
+Damion/M
+Damocles/M
+Damon/M
+Dan/M
+Dana/M
+Danae/M
+Dane/SM
+Danelaw/M
+Dangerfield/M
+Danial/M
+Daniel/SM
+Danielle/M
+Daniels/M
+Danish/M
+Dannie/M
+Danny/M
+Danone/M
+Dante/M
+Danton/M
+Danube/M
+Danubian/M
+Daphne/M
+Darby/M
+Darcy/M
+Dardanelles/M
+Dare/M
+Daren/M
+Darfur/M
+Darin/M
+Dario/M
+Darius/M
+Darjeeling/M
+Darla/M
+Darlene/M
+Darling/M
+Darnell/M
+Darrel/M
+Darrell/M
+Darren/M
+Darrin/M
+Darrow/M
+Darryl/M
+Darth/M
+Dartmoor/M
+Dartmouth/M
+Darvon/M
+Darwin/M
+Darwinian/M
+Darwinism/SM
+Darwinist
+Daryl/M
+Datamation
+Daugherty/M
+Daumier/M
+Davao/M
+Dave/M
+Davenport/M
+David/MS
+Davidson/M
+Davies/M
+Davis/M
+Davy/SM
+Dawes/M
+Dawkins
+Dawn/M
+Dawson/M
+Day/M
+Dayan
+Dayton/M
+DeGeneres/M
+Deadhead/M
+Dean/M
+Deana/M
+Deandre/M
+Deann/M
+Deanna/M
+Deanne/M
+Death/M
+Debbie/M
+Debby/M
+Debian/M
+Debora/M
+Deborah/M
+Debouillet/M
+Debra/M
+Debs/M
+Debussy/M
+Dec/M
+Decalogue/M
+Decatur/M
+Decca/M
+Deccan/M
+December/SM
+Decker/M
+Dedekind/M
+Dee/M
+Deena/M
+Deere/M
+Defoe/M
+Degas/M
+Deidre/M
+Deimos/M
+Deirdre/M
+Deity
+Dejesus/M
+Del/M
+Delacroix/M
+Delacruz/M
+Delaney/M
+Delano/M
+Delaware/MS
+Delawarean/SM
+Delbert/M
+Deleon/M
+Delgado/M
+Delhi/M
+Delia/M
+Delibes/M
+Delicious/M
+Delilah/M
+Delilahs
+Delius/M
+Dell/M
+Della/M
+Delmar/M
+Delmarva/M
+Delmer/M
+Delmonico/M
+Delores/M
+Deloris/M
+Delphi/M
+Delphic/M
+Delphinus/M
+Delta/M
+Dem/G
+Demavend/M
+Demerol/M
+Demeter/M
+Demetrius/M
+Deming/M
+Democrat/SM
+Democratic
+Democritus/M
+Demosthenes/M
+Dempsey/M
+Dena/M
+Denali
+Deneb/M
+Denebola/M
+Deng/M
+Denis/M
+Denise/M
+Denmark/M
+Dennis/M
+Denny/M
+Denver/M
+Deon/M
+Depp/M
+Derby/M
+Derek/M
+Derick/M
+Dermot/M
+Derrick/M
+Derrida/M
+Descartes/M
+Desdemona/M
+Desiree/M
+Desmond/M
+Detroit/M
+Deuteronomy/M
+Devanagari/M
+Devi/M
+Devin/M
+Devon/M
+Devonian/M
+Dewar/M
+Dewayne/M
+Dewey/M
+Dewitt/M
+Dexedrine/M
+Dexter/M
+Dhaka/M
+Dhaulagiri/M
+Di/SM
+DiCaprio/M
+DiMaggio/M
+Diaghilev/M
+Dial/M
+Diana/M
+Diane/M
+Diann/M
+Dianna/M
+Dianne/M
+Dias
+Diaspora/MS
+Dick/XM
+Dickens/M
+Dickensian
+Dickerson/M
+Dickinson/M
+Dickson/M
+Dictaphone/SM
+Diderot/M
+Dido/M
+Didrikson/M
+Diefenbaker/M
+Diego/M
+Diem/M
+Dietrich/M
+Dijkstra/M
+Dijon/M
+Dilbert/MS
+Dillard/M
+Dillinger/M
+Dillon/M
+Dina/M
+Dinah/M
+Dino/M
+Diocletian/M
+Diogenes/M
+Dion/M
+Dionne/M
+Dionysian/M
+Dionysus/M
+Diophantine/M
+Dior/M
+Dipper/M
+Dir
+Dirac/M
+Dirichlet/M
+Dirk/M
+Dis/M
+Disney/M
+Disneyland/M
+Disraeli/M
+Divine/M
+Diwali/M
+Dix/M
+Dixie/M
+Dixiecrat/M
+Dixieland/SM
+Dixon/M
+Djibouti/M
+Dmitri/M
+Dnepropetrovsk/M
+Dniester/M
+Dobbin/M
+Doberman/M
+Dobro/M
+Doctor
+Doctorow/M
+Dodge/M
+Dodgson/M
+Dodoma/M
+Dodson/M
+Doe/M
+Doha/M
+Dolby/M
+Dole/M
+Dollie/M
+Dolly/M
+Dolores/M
+Domesday/M
+Domingo/M
+Dominguez/M
+Dominic/M
+Dominica/M
+Dominican/MS
+Dominick/M
+Dominion
+Dominique/M
+Domitian/M
+Don/SM
+Dona/M
+Donahue/M
+Donald/M
+Donaldson/M
+Donatello/M
+Donetsk/M
+Donizetti/M
+Donn/MR
+Donna/M
+Donne/M
+Donnell/M
+Donner/M
+Donnie/M
+Donny/M
+Donovan/M
+Dooley/M
+Doolittle/M
+Doonesbury/M
+Doppler/M
+Dora/M
+Dorcas/M
+Doreen/M
+Dorian/M
+Doric/M
+Doris/M
+Doritos/M
+Dorothea/M
+Dorothy/M
+Dorset/M
+Dorsey/M
+Dorthy/M
+Dortmund/M
+Dostoevsky/M
+Dot/M
+Dotson/M
+Douala/M
+Douay/M
+Doubleday/M
+Doug/M
+Douglas/M
+Douglass/M
+Douro/M
+Dover/M
+Dow/M
+Downs/M
+Downy/M
+Doyle/M
+Dr
+Draco/M
+Draconian/M
+Dracula/M
+Drake/M
+Dramamine/SM
+Drambuie/M
+Drano/M
+Dravidian/M
+Dreiser/M
+Dresden/M
+Drew/M
+Dreyfus/M
+Dristan/M
+Dropbox/M
+Drudge/M
+Dryden/M
+Dschubba/M
+Du
+DuPont/M
+Duane/M
+Dubai/M
+Dubcek/M
+Dubhe/M
+Dublin/M
+Dubrovnik/M
+Duchamp/M
+Dudley/M
+Duffy/M
+Duisburg/M
+Duke/M
+Dulles/M
+Duluth/M
+Dumas/M
+Dumbledore/M
+Dumbo/M
+Dumpster/M
+Dunant/M
+Dunbar/M
+Duncan/M
+Dundee
+Dunedin/M
+Dunkirk/M
+Dunlap/M
+Dunn/M
+Dunne/M
+Duracell/M
+Duran/M
+Durant/M
+Durante/M
+Durban/M
+Durer/M
+Durex/M
+Durham/MS
+Durkheim/M
+Duroc/M
+Durocher/M
+Duse/M
+Dushanbe/M
+Dusseldorf/M
+Dustbuster/M
+Dustin/M
+Dusty/M
+Dutch/M
+Dutchman/M
+Dutchmen/M
+Dutchwoman
+Duvalier/M
+Dvina/M
+Dvorak/M
+Dwayne/M
+Dwight/M
+Dy/M
+Dyer/M
+Dylan/M
+Dyson/M
+Dzerzhinsky/M
+Dzungaria/M
+E/SM
+EC
+ECG/M
+ECMAScript/M
+EDP/M
+EDT
+EEC/M
+EEG/M
+EEO
+EEOC
+EFL
+EFT
+EKG/M
+ELF/M
+EM
+EMT
+ENE/M
+EOE
+EPA/M
+ER
+ERA
+ESE/M
+ESL
+ESP/M
+ESPN/M
+ESR
+EST/M
+ET
+ETA
+ETD
+EU
+EULA/S
+Eakins/M
+Earhart/M
+Earl/M
+Earle/M
+Earlene/M
+Earline/M
+Earnest/M
+Earnestine/M
+Earnhardt/M
+Earp/M
+East/SZMR
+Easter/M
+Eastern/R
+Eastman/M
+Eastwood/M
+Eaton/M
+Eben/M
+Ebeneezer/M
+Ebert/M
+Ebola/M
+Ebonics/M
+Ebony/M
+Ebro/M
+Ecclesiastes/M
+Eco/M
+Ecstasy
+Ecuador/M
+Ecuadoran/SM
+Ecuadorean
+Ecuadorian/SM
+Ed/MNX
+Edam/SM
+Edda/M
+Eddie/M
+Eddington/M
+Eddy/M
+Eden/M
+Edgar/M
+Edgardo/M
+Edinburgh/M
+Edison/M
+Edith/M
+Edmond/M
+Edmonton/M
+Edmund/M
+Edna/M
+Edsel/M
+Eduardo/M
+Edward/SM
+Edwardian/M
+Edwardo/M
+Edwards/M
+Edwin/M
+Edwina/M
+Eeyore/M
+Effie/M
+Efrain/M
+Efren/M
+Eggo/M
+Egypt/M
+Egyptian/MS
+Egyptology/M
+Ehrenberg/M
+Ehrlich/M
+Eichmann/M
+Eiffel/M
+Eileen/M
+Einstein/MS
+Eire/M
+Eisenhower/M
+Eisenstein/M
+Eisner/M
+Elaine/M
+Elam/M
+Elanor/M
+Elastoplast/M
+Elba/M
+Elbe/M
+Elbert/M
+Elbrus/M
+Eldon/M
+Eleanor/M
+Eleazar/M
+Electra/M
+Elena/M
+Elgar/M
+Eli/M
+Elias/M
+Elijah/M
+Elinor/M
+Eliot/M
+Elisa/M
+Elisabeth/M
+Elise/M
+Eliseo/M
+Elisha/M
+Eliza/M
+Elizabeth/M
+Elizabethan/SM
+Ella/M
+Ellen/M
+Ellesmere/M
+Ellie/M
+Ellington/M
+Elliot/M
+Elliott/M
+Ellis/M
+Ellison/M
+Elma/M
+Elmer/M
+Elmo/M
+Elnath/M
+Elnora/M
+Elohim/M
+Eloise/M
+Eloy/M
+Elroy/M
+Elsa/M
+Elsie/M
+Elsinore/M
+Eltanin/M
+Elton/M
+Elul/M
+Elva/M
+Elvia/M
+Elvin/M
+Elvira/M
+Elvis/M
+Elway/M
+Elwood/M
+Elysee/M
+Elysian/M
+Elysium/SM
+Emacs/M
+Emanuel/M
+Emerson/M
+Emery/M
+Emil/M
+Emile/M
+Emilia/M
+Emilio/M
+Emily/M
+Eminem/M
+Eminence
+Emma/M
+Emmanuel/M
+Emmett/M
+Emmy/M
+Emory/M
+Encarta/M
+Endymion/M
+Eng/M
+Engels/M
+England/M
+English/MRS
+Englishman/M
+Englishmen/M
+Englishwoman/M
+Englishwomen/M
+Enid/M
+Enif/M
+Eniwetok/M
+Enkidu/M
+Enoch/M
+Enos/M
+Enrico/M
+Enrique/M
+Enron/M
+Enterprise/M
+Eocene/M
+Epcot/M
+Ephesian/MS
+Ephesus/M
+Ephraim/M
+Epictetus/M
+Epicurean/M
+Epicurus/M
+Epimethius/M
+Epiphany/SM
+Episcopal
+Episcopalian/MS
+Epistle
+Epsom/M
+Epson/M
+Epstein/M
+Equuleus/M
+Er/M
+Erasmus/M
+Erato/M
+Eratosthenes/M
+Erebus/M
+Erector/M
+Erewhon/M
+Erhard/M
+Eric/M
+Erica/M
+Erich/M
+Erick/M
+Ericka/M
+Erickson/M
+Eridanus/M
+Erie/M
+Erik/M
+Erika/M
+Erin/M
+Eris/MS
+Eritrea/M
+Eritrean/SM
+Erlenmeyer/M
+Erma/M
+Erna/M
+Ernest/M
+Ernestine/M
+Ernesto/M
+Ernie/M
+Ernst/M
+Eros/MS
+Errol/M
+Erse/M
+ErvIn/M
+Erwin/M
+Esau/M
+Escher/M
+Escherichia/M
+Escondido
+Eskimo/MS
+Esmeralda/M
+Esperanto/M
+Esperanza/M
+Espinoza/M
+Esq/M
+Esquire/MS
+Essen/M
+Essene/M
+Essequibo/M
+Essex/M
+Essie/M
+Establishment
+Esteban/M
+Estela/M
+Estella/M
+Estelle/M
+Ester/M
+Esterhazy/M
+Estes/M
+Esther/M
+Estonia/M
+Estonian/SM
+Estrada/M
+Ethan/M
+Ethel/M
+Ethelred/M
+Ethernet/M
+Ethiopia/M
+Ethiopian/SM
+Etna/M
+Eton/M
+Etruria/M
+Etruscan/M
+Etta/M
+Eu/M
+Eucharist/MS
+Eucharistic
+Euclid/M
+Eugene/M
+Eugenia/M
+Eugenie/M
+Eugenio/M
+Eula/M
+Euler/M
+Eumenides/M
+Eunice/M
+Euphrates/M
+Eur
+Eurasia/M
+Eurasian/MS
+Euripides/M
+Eurodollar/SM
+Europa/M
+Europe/M
+European/MS
+Eurydice/M
+Eustachian/M
+Euterpe/M
+Eva/M
+Evan/SM
+Evangelical
+Evangelina/M
+Evangeline/M
+Evangelist/M
+Evans/M
+Evansville/M
+Eve/M
+Evelyn/M
+Evenki/M
+EverReady/M
+Everest/M
+Everett/M
+Everette/M
+Everglades/M
+Evert/M
+Evian/M
+Evita/M
+Ewing/M
+Excalibur/M
+Excedrin/M
+Excellency/SM
+Exchequer
+Exercycle/M
+Exocet/M
+Exodus/M
+Exxon/M
+Eyck/M
+Eyre/M
+Eysenck/M
+Ezekiel/M
+Ezra/M
+F/MD
+FAA
+FAQ/SM
+FBI/M
+FCC
+FD
+FDA
+FDIC/M
+FDR/M
+FHA/M
+FICA/M
+FIFO
+FL
+FM/SM
+FNMA/M
+FOFL
+FORTRAN/M
+FPO
+FSF/M
+FSLIC
+FTC
+FUD/S
+FWD
+FWIW
+FY
+FYI
+Faberge/M
+Fabian/MS
+Facebook/M
+Faeroe/M
+Fafnir/M
+Fagin/M
+Fahd/M
+Fahrenheit/M
+Fairbanks/M
+Faisal/M
+Faisalabad/M
+Faith/M
+Falasha/M
+Falkland/SM
+Falklands/M
+Fallopian/M
+Falstaff/M
+Falwell/M
+Fannie/M
+Fanny/M
+Faraday/M
+Fargo/M
+Farley/M
+Farmer/M
+Farragut/M
+Farrakhan/M
+Farrell/M
+Farrow/M
+Farsi/M
+Fassbinder/M
+Fatah/M
+Fates/M
+Father/SM
+Fatima/M
+Fatimid/M
+Faulkner/M
+Faulknerian/M
+Fauntleroy/M
+Faust/M
+Faustian/M
+Faustino/M
+Faustus/M
+Fawkes/M
+Fay/M
+Faye/M
+Fe/M
+Feb/M
+February/SM
+Fed/SM
+FedEx/M
+Federal/MS
+Federalist/M
+Federico/M
+Feds/M
+Felecia/M
+Felice/M
+Felicia/M
+Felicity/M
+Felipe/M
+Felix/M
+Fellini/M
+Fenian/M
+Ferber/M
+Ferdinand/M
+Fergus/M
+Ferguson/M
+Ferlinghetti/M
+Fermat/M
+Fermi/M
+Fern/M
+Fernandez/M
+Fernando/M
+Ferrari/M
+Ferraro/M
+Ferrell/M
+Ferris/M
+Feynman/M
+Fez/M
+Fiat/M
+Fiberglas/M
+Fibonacci/M
+Fichte/M
+Fidel/M
+Fido/M
+Fielding/M
+Fields/M
+Figaro/M
+Figueroa/M
+Fiji/M
+Fijian/MS
+Filipino/MS
+Fillmore/M
+Filofax/M
+Finch/M
+Finland/M
+Finley/M
+Finn/SM
+Finnbogadottir/M
+Finnegan/M
+Finnish/M
+Fiona/M
+Firefox/M
+Firestone/M
+Fischer/M
+Fisher/M
+Fisk/M
+Fitch/M
+Fitzgerald/M
+Fitzpatrick/M
+Fitzroy/M
+Fizeau/M
+Fla
+Flanagan/M
+Flanders/M
+Flathead
+Flatt/M
+Flaubert/M
+Fleischer/M
+Fleming/M
+Flemish/M
+Fletcher/M
+Flint/M
+Flintstones/M
+Flo/M
+Flora/M
+Florence/M
+Florentine/M
+Flores/M
+Florida/M
+Floridan/M
+Floridian/SM
+Florine/M
+Florsheim/M
+Flory/M
+Flossie/M
+Flowers/M
+Floyd/M
+Flynn/M
+Fm/M
+Foch/M
+Fokker/M
+Foley/M
+Folgers/M
+Folsom/M
+Fomalhaut/M
+Fonda/M
+Foosball/M
+Forbes/M
+Ford/M
+Foreman/M
+Forest/MR
+Forester/M
+Formica/MS
+Formosa/M
+Formosan/M
+Forrest/M
+Forster/M
+Fortaleza/M
+Fosse/M
+Foster/M
+Fotomat/M
+Foucault/M
+Fourier/M
+Fourneyron/M
+Fourth
+Fowler/M
+Fox/MS
+Fr/MD
+Fragonard/M
+Fran/M
+France/SM
+Frances/M
+Francesca/M
+Francine/M
+Francis/M
+Francisca/M
+Franciscan/MS
+Francisco/M
+Franck/M
+Franco/M
+Francois/M
+Francoise/M
+Francophile
+Franglais/M
+Frank/SM
+Frankel/M
+Frankenstein/M
+Frankfort/M
+Frankfurt/MR
+Frankfurter/M
+Frankie/M
+Frankish
+Franklin/M
+Franks/M
+Franny/M
+Franz/M
+Fraser/M
+Frau/MN
+Fraulein
+Frazier/M
+Fred/M
+Freda/M
+Freddie/M
+Freddy/M
+Frederic/M
+Frederick/M
+Fredericton/M
+Fredric/M
+Fredrick/M
+Freeman/M
+Freemason/SM
+Freemasonry/SM
+Freetown/M
+Freida/M
+Fremont/M
+French/MS
+Frenchman/M
+Frenchmen/M
+Frenchwoman/M
+Frenchwomen/M
+Freon/M
+Fresnel/M
+Fresno/M
+Freud/M
+Freudian/M
+Frey/M
+Freya/M
+Fri/M
+Friday/SM
+Frieda/M
+Friedan/M
+Friedman/M
+Friend/SM
+Frigga/M
+Frigidaire/M
+Frisbee/M
+Frisco/M
+Frisian/MS
+Frito/M
+Fritz/M
+Frobisher/M
+Frodo/M
+Froissart/M
+Fromm/M
+Fronde/M
+Frontenac/M
+Frost/M
+Frostbelt/M
+Frunze/M
+Fry/M
+Frye/M
+Fuchs/M
+Fuentes/M
+Fugger/M
+Fuji/M
+Fujitsu/M
+Fujiwara/M
+Fujiyama/M
+Fukuoka/M
+Fukuyama/M
+Fulani/M
+Fulbright/M
+Fuller/M
+Fullerton/M
+Fulton/M
+Funafuti/M
+Fundy/M
+Furies/M
+Furtwangler/M
+Fushun/M
+Fuzhou/M
+Fuzzbuster/M
+G/MNRB
+GA
+GAO
+GATT/M
+GB/M
+GCC/M
+GDP/M
+GE/M
+GED
+GHQ/M
+GHz
+GI
+GIF
+GIGO
+GM/M
+GMAT
+GMO
+GMT/M
+GNP/M
+GNU/M
+GOP/M
+GP/M
+GPA
+GPO
+GPS
+GPU
+GSA
+GTE/M
+GU
+GUI/M
+Ga/M
+Gable/M
+Gabon/M
+Gabonese/M
+Gaborone/M
+Gabriel/M
+Gabriela/M
+Gabrielle/M
+Gacrux/M
+Gadsden/M
+Gaea/M
+Gael/SM
+Gaelic/M
+Gagarin/M
+Gage/M
+Gaia/M
+Gail/M
+Gaiman/M
+Gaines/M
+Gainsborough/M
+Galahad/SM
+Galapagos/M
+Galatea/M
+Galatia/M
+Galatians/M
+Galaxy
+Galbraith/M
+Gale/M
+Galen/M
+Galibi/M
+Galilean/SM
+Galilee/M
+Galileo/M
+Gall/M
+Gallagher/M
+Gallegos/M
+Gallic/M
+Gallicism/SM
+Gallo/M
+Galloway/M
+Gallup/M
+Galois/M
+Galsworthy/M
+Galvani/M
+Galveston/M
+Gama
+Gamay/M
+Gambia/M
+Gambian/SM
+Gamble/M
+Gamow/M
+Gandalf/M
+Gandhi/M
+Gandhian/M
+Ganesha/M
+Ganges/M
+Gangtok/M
+Gantry/M
+Ganymede/M
+Gap/M
+Garbo/M
+Garcia/M
+Gardner/M
+Gareth/M
+Garfield/M
+Garfunkel/M
+Gargantua/M
+Garibaldi/M
+Garland/M
+Garner/M
+Garrett/M
+Garrick/M
+Garrison/M
+Garry/M
+Garth/M
+Garvey/M
+Gary/M
+Garza/M
+Gascony/M
+Gasser/M
+Gastroenterology
+Gates/M
+Gatling/M
+Gatorade/M
+Gatsby/M
+Gatun/M
+Gauguin/M
+Gaul/SM
+Gaulish
+Gauss/M
+Gaussian/M
+Gautama/M
+Gautier/M
+Gavin/M
+Gawain/M
+Gay/M
+Gayle/M
+Gaza/M
+Gaziantep/M
+Gd/M
+Gdansk/M
+Ge/M
+Geffen/M
+Gehenna/M
+Gehrig/M
+Geiger/M
+Gelbvieh/M
+Geller/M
+Gemini/MS
+Gen/M
+Gena/M
+Genaro/M
+Gene/M
+Genesis/M
+Genet/M
+Geneva/M
+Genevieve/M
+Genghis/M
+Genoa/SM
+Gentoo/M
+Gentry/M
+Geo/M
+Geoffrey/M
+George/MS
+Georgetown/M
+Georgette/M
+Georgia/M
+Georgian/MS
+Georgina/M
+Ger/M
+Gerald/M
+Geraldine/M
+Gerard/M
+Gerardo/M
+Gerber/M
+Gere/M
+Geritol/M
+German/MS
+Germanic/M
+Germany/M
+Geronimo/M
+Gerry/M
+Gershwin/M
+Gertrude/M
+Gestapo/SM
+Gethsemane/M
+Getty/M
+Gettysburg/M
+Gewurztraminer/M
+Ghana/M
+Ghanaian
+Ghats/M
+Ghazvanid/M
+Ghent/M
+Ghibelline/M
+Giacometti/M
+Giannini/M
+Giauque/M
+Gibbon/M
+Gibbs/M
+Gibraltar/MS
+Gibson/M
+Gide/M
+Gideon/M
+Gielgud/M
+Gienah/M
+Gil/M
+Gila/M
+Gilbert/M
+Gilberto/M
+Gilchrist/M
+Gilda/M
+Gilead/M
+Giles/M
+Gilgamesh/M
+Gill/M
+Gillespie/M
+Gillette/M
+Gilliam/M
+Gillian/M
+Gilligan/M
+Gilman
+Gilmore/M
+Gina/M
+Ginger/M
+Gingrich/M
+Ginny/M
+Gino/M
+Ginsberg/M
+Ginsburg/M
+Ginsu/M
+Giorgione/M
+Giotto/M
+Giovanni/M
+Giraudoux/M
+Giselle/M
+Gish/M
+GitHub/M
+Giuliani/M
+Giuseppe/M
+Giza/M
+Gk
+Gladstone/MS
+Gladys/M
+Glaser/M
+Glasgow/M
+Glass/M
+Glastonbury/M
+Glaswegian/SM
+Glaxo/M
+Gleason/M
+Glen/M
+Glenda/M
+Glendale
+Glenlivet/M
+Glenn/M
+Glenna/M
+Gloria/M
+Gloucester/M
+Glover/M
+Gnostic/M
+Gnosticism/M
+GnuPG
+Goa/M
+Gobi/M
+God/M
+Godard/M
+Goddard/M
+Godel/M
+Godhead/M
+Godiva/M
+Godot/M
+Godspeed/SM
+Godthaab/M
+Godunov/M
+Godzilla/M
+Goebbels/M
+Goering/M
+Goethals/M
+Goethe/M
+Goff/M
+Gog/M
+Gogol/M
+Goiania/M
+Golan/M
+Golconda/M
+Golda/M
+Goldberg/M
+Golden/M
+Goldie/M
+Goldilocks/M
+Golding/M
+Goldman/M
+Goldsmith/M
+Goldwater/M
+Goldwyn/M
+Golgi/M
+Golgotha/M
+Goliath/M
+Gomez/M
+Gomorrah/M
+Gompers/M
+Gomulka/M
+Gondwanaland/M
+Gonzales/M
+Gonzalez/M
+Gonzalo/M
+Good/M
+Goodall/M
+Goodman/M
+Goodrich/M
+Goodwill/M
+Goodwin/M
+Goodyear/M
+Google/M
+Goolagong/M
+Gopher
+Gorbachev/M
+Gordian/M
+Gordimer/M
+Gordon/M
+Gore/M
+Goren/M
+Gorey/M
+Gorgas/M
+Gorgon/M
+Gorgonzola/M
+Gorky/M
+Gospel/MS
+Goteborg/M
+Goth/M
+Gotham/M
+Gothic/MS
+Goths
+Gouda/SM
+Gould/M
+Gounod/M
+Governor
+Goya/M
+Gr/B
+Grable/M
+Gracchus/M
+Grace/M
+Graceland/M
+Gracie/M
+Graciela/M
+Grady/M
+Graffias/M
+Grafton/M
+Graham/M
+Grahame/M
+Grail/M
+Grammy/M
+Grampians/M
+Granada/M
+Grant/M
+Grass/M
+Graves/M
+Gray/M
+Grecian/M
+Greece/M
+Greek/SM
+Greeley/M
+Green/SM
+Greene/M
+Greenland/M
+Greenlandic
+Greenpeace/M
+Greensboro/M
+Greensleeves/M
+Greenspan/M
+Greenwich/M
+Greer/M
+Greg/M
+Gregg/M
+Gregorian/M
+Gregorio/M
+Gregory/M
+Grenada/M
+Grenadian/MS
+Grenadines/M
+Grendel/M
+Grenoble/M
+Gresham/M
+Greta/M
+Gretchen/M
+Gretel/M
+Gretzky/M
+Grey/M
+Grieg/M
+Griffin/M
+Griffith/M
+Grimes/M
+Grimm/M
+Grinch/M
+Gris/M
+Gromyko/M
+Gropius/M
+Gross/M
+Grosz/M
+Grotius/M
+Grover/M
+Grozny
+Grumman/M
+Grundy/M
+Grunewald/M
+Grus/M
+Gruyere/SM
+Guadalajara/M
+Guadalcanal/M
+Guadalquivir/M
+Guadalupe/M
+Guadeloupe/M
+Guallatiri/M
+Guam/M
+Guamanian
+Guangzhou/M
+Guantanamo/M
+Guarani/M
+Guarnieri/M
+Guatemala/M
+Guatemalan/MS
+Guayaquil/M
+Gucci/M
+Guelph/M
+Guernsey/MS
+Guerra/M
+Guerrero/M
+Guevara/M
+Guggenheim/M
+Guiana/M
+Guido
+Guillermo/M
+Guinea/M
+Guinean/MS
+Guinevere/M
+Guinness/M
+Guiyang/M
+Guizot/M
+Gujarat/M
+Gujarati/M
+Gujranwala/M
+Gullah/M
+Gulliver/M
+Gumbel/M
+Gunther/M
+Guofeng/M
+Gupta/M
+Gurkha/M
+Gus/M
+Gustav/M
+Gustavo/M
+Gustavus/M
+Gutenberg/M
+Guthrie/M
+Gutierrez/M
+Guy/M
+Guyana/M
+Guyanese/M
+Guzman/M
+Gwalior/M
+Gwen/M
+Gwendoline/M
+Gwendolyn/M
+Gwyn/M
+Gypsy/SM
+H/M
+HBO/M
+HDD
+HDMI
+HDTV
+HF/M
+HHS
+HI
+HIV/M
+HM
+HMO/M
+HMS
+HOV
+HP/M
+HPV
+HQ/M
+HR
+HRH
+HS
+HSBC/M
+HST
+HT
+HTML/M
+HTTP
+HUD/M
+Ha/M
+Haas/M
+Habakkuk/M
+Haber/M
+Hadar/M
+Hades/M
+Hadrian/M
+Hafiz/M
+Hagar/M
+Haggai/M
+Hagiographa/M
+Hague/M
+Hahn/M
+Haida/SM
+Haifa/M
+Haiphong/M
+Haiti/M
+Haitian/MS
+Hakka/M
+Hakluyt/M
+Hal/SM
+Haldane/M
+Hale/M
+Haleakala/M
+Haley/M
+Halifax/M
+Hall/M
+Halley/M
+Halliburton/M
+Hallie/M
+Hallmark/M
+Halloween/MS
+Hallstatt/M
+Halon/M
+Hals/M
+Halsey/M
+Ham/M
+Haman/M
+Hamburg/MS
+Hamhung/M
+Hamilcar/M
+Hamill/M
+Hamilton/M
+Hamiltonian/M
+Hamitic/M
+Hamlet/M
+Hamlin/M
+Hammarskjold/M
+Hammerstein/M
+Hammett/M
+Hammond/M
+Hammurabi/M
+Hampshire/M
+Hampton/M
+Hamsun/M
+Han/SM
+Hancock/M
+Handel/M
+Handy/M
+Haney/M
+Hangul/M
+Hangzhou/M
+Hank/M
+Hanna/M
+Hannah/M
+Hannibal/M
+Hanoi/M
+Hanover/M
+Hanoverian/M
+Hans/MN
+Hansel/M
+Hansen/M
+Hanson/M
+Hanuka
+Hanukkah/M
+Hanukkahs
+Hapsburg/M
+Harare/M
+Harbin/M
+Hardin/M
+Harding/M
+Hardy/M
+Hargreaves/M
+Harlan/M
+Harlem/M
+Harlequin/M
+Harley/M
+Harlow/M
+Harmon/M
+Harold/M
+Harper/M
+Harpy/SM
+Harrell/M
+Harriet/M
+Harriett/M
+Harrington/M
+Harris/M
+Harrisburg/M
+Harrison/M
+Harrods/M
+Harry/M
+Hart/M
+Harte/M
+Hartford/M
+Hartline/M
+Hartman/M
+Harvard/M
+Harvey/M
+Hasbro/M
+Hasidim/M
+Haskell/M
+Hastings/M
+Hatfield/M
+Hathaway/M
+Hatsheput/M
+Hatteras/M
+Hattie/M
+Hauptmann/M
+Hausa/M
+Hausdorff/M
+Havana/MS
+Havarti/M
+Havel/M
+Havoline/M
+Haw
+Hawaii/M
+Hawaiian/SM
+Hawking/M
+Hawkins/M
+Hawks
+Hawthorne/M
+Hay/SM
+Hayden/M
+Haydn/M
+Hayek/M
+Hayes/M
+Haynes/M
+Hays/M
+Hayward/M
+Haywood/M
+Hayworth/M
+Hazel/M
+Hazlitt/M
+He/M
+Head/M
+Hearst/M
+Heath/MR
+Heather/M
+Heaviside/M
+Heb
+Hebe/M
+Hebert/M
+Hebraic/M
+Hebraism/SM
+Hebrew/MS
+Hebrews/M
+Hebrides/M
+Hecate/M
+Hector/M
+Hecuba/M
+Heep/M
+Hefner/M
+Hegel/M
+Hegelian/M
+Hegira/M
+Heidegger/M
+Heidelberg/M
+Heidi/M
+Heifetz/M
+Heimlich/M
+Heine/M
+Heineken/M
+Heinlein/M
+Heinrich/M
+Heinz/M
+Heisenberg/M
+Heisman/M
+Helen/M
+Helena/M
+Helene/M
+Helga/M
+Helicon/M
+Heliopolis/M
+Helios/M
+Hellene/SM
+Hellenic/M
+Hellenism/MS
+Hellenist
+Hellenistic/M
+Hellenization/M
+Hellenize/M
+Heller/M
+Hellespont/M
+Hellman/M
+Helmholtz/M
+Heloise/M
+Helsinki/M
+Helvetian
+Helvetius/M
+Hemingway/M
+Hench/M
+Henderson/M
+Hendrick/MS
+Hendricks/M
+Hendrix/M
+Henley/M
+Hennessy/M
+Henri/M
+Henrietta/M
+Henrik/M
+Henry/M
+Hensley/M
+Henson/M
+Hepburn/M
+Hephaestus/M
+Hepplewhite/M
+Hera/M
+Heracles/M
+Heraclitus/M
+Herakles/M
+Herbart/M
+Herbert/M
+Herculaneum/M
+Herculean
+Hercules/M
+Herder/M
+Hereford/SM
+Herero/M
+Heriberto/M
+Herman/M
+Hermaphroditus/M
+Hermes/M
+Herminia/M
+Hermitage/M
+Hermite/M
+Hermosillo/M
+Hernandez/M
+Herod/M
+Herodotus/M
+Herr/MG
+Herrera/M
+Herrick/M
+Herring/M
+Herschel/M
+Hersey/M
+Hershel/M
+Hershey/M
+Hertz/M
+Hertzsprung/M
+Herzegovina/M
+Herzl/M
+Heshvan/M
+Hesiod/M
+Hesperus/M
+Hess/M
+Hesse/M
+Hessian/M
+Hester/M
+Heston/M
+Hettie/M
+Hewitt/M
+Hewlett/M
+Heyerdahl/M
+Heywood/M
+Hezbollah/M
+Hezekiah/M
+Hf/M
+Hg/M
+Hialeah/M
+Hiawatha/M
+Hibernia/M
+Hibernian
+Hickman/M
+Hickok/M
+Hicks/M
+Hieronymus/M
+Higashiosaka
+Higgins/M
+Highlander/SM
+Highlands
+Highness/M
+Hilario/M
+Hilary/M
+Hilbert/M
+Hilda/M
+Hildebrand/M
+Hilfiger/M
+Hill/M
+Hillary/M
+Hillel/M
+Hilton/M
+Himalaya/SM
+Himalayan
+Himalayas/M
+Himmler/M
+Hinayana/M
+Hindemith/M
+Hindenburg/M
+Hindi/M
+Hindu/SM
+Hinduism/SM
+Hindustan/M
+Hindustani/SM
+Hines/M
+Hinton/M
+Hipparchus/M
+Hippocrates/M
+Hippocratic/M
+Hiram/M
+Hirobumi/M
+Hirohito/M
+Hiroshima/M
+Hispanic/SM
+Hispaniola/M
+Hiss/M
+Hitachi/M
+Hitchcock/M
+Hitler/MS
+Hittite/SM
+Hmong/M
+Ho/M
+Hobart/M
+Hobbes/M
+Hobbs/M
+Hockney/M
+Hodge/SM
+Hodges/M
+Hodgkin/M
+Hoff/M
+Hoffa/M
+Hoffman/M
+Hofstadter/M
+Hogan/M
+Hogarth/M
+Hogwarts/M
+Hohenlohe/M
+Hohenstaufen/M
+Hohenzollern/M
+Hohhot/M
+Hohokam/M
+Hokkaido/M
+Hokusai/M
+Holbein/M
+Holcomb/M
+Holden/M
+Holder/M
+Holiday/M
+Holiness
+Holland/ZSMR
+Hollander/M
+Hollerith/M
+Holley/M
+Hollie/M
+Hollis/M
+Holloway/M
+Holly/M
+Hollywood/M
+Holman/M
+Holmes/M
+Holocaust/M
+Holocene/M
+Holst/M
+Holstein/SM
+Holt/M
+Homer/M
+Homeric/M
+Hon
+Honda/M
+Honduran/MS
+Honduras/M
+Honecker/M
+Honeywell/M
+Hong
+Honiara/M
+Honolulu/M
+Honorable
+Honshu/M
+Hood/M
+Hooke/RM
+Hooker/M
+Hooper/M
+Hoosier/MS
+Hooters/M
+Hoover/MS
+Hope/M
+Hopewell/M
+Hopi/SM
+Hopkins/M
+Hopper/M
+Horace/M
+Horacio/M
+Horatio/M
+Hormel/M
+Hormuz/M
+Horn/M
+Hornblower/M
+Horne/M
+Horowitz/M
+Horthy/M
+Horton/M
+Horus/M
+Hosea/M
+Host/SM
+Hotpoint/M
+Hottentot/SM
+Houdini/M
+House/M
+Housman/M
+Houston/M
+Houyhnhnm/M
+Hovhaness/M
+Howard/M
+Howe/M
+Howell/MS
+Howells/M
+Howrah
+Hoyle/M
+Hrothgar/M
+Hts
+Huang/M
+Hubbard/M
+Hubble/M
+Huber/M
+Hubert/M
+Huck/M
+Huddersfield
+Hudson/M
+Huerta/M
+Huey/M
+Huff/M
+Huffman/M
+Huggins/M
+Hugh/MS
+Hughes/M
+Hugo/M
+Huguenot/MS
+Hui/M
+Huitzilopotchli/M
+Hull/M
+Humberto/M
+Humboldt/M
+Hume/M
+Hummer/M
+Humphrey/SM
+Humvee/M
+Hun/SM
+Hung/M
+Hungarian/SM
+Hungary/M
+Hunspell/M
+Hunt/MR
+Hunter/M
+Huntington/M
+Huntley/M
+Huntsville/M
+Hurley/M
+Huron/M
+Hurst/M
+Hus/M
+Hussein/M
+Husserl/M
+Hussite/M
+Huston/M
+Hutchinson/M
+Hutton/M
+Hutu/M
+Huxley/M
+Huygens/M
+Hyades/M
+Hyde/M
+Hyderabad/M
+Hydra/M
+Hymen/M
+Hyperion/M
+Hyundai/M
+Hz/M
+I'd
+I'll
+I'm
+I've
+I/M
+IA
+IBM/M
+ICBM/SM
+ICC
+ICU
+ID/SM
+IDE
+IE
+IED
+IEEE
+IKEA/M
+IL
+IMF/M
+IMHO
+IMNSHO
+IMO
+IN
+ING/M
+INRI
+INS
+IOU/M
+IP
+IPA
+IPO
+IQ/M
+IRA/SM
+IRC
+IRS/M
+ISBN
+ISIS
+ISO/M
+ISP
+ISS
+IT
+IUD
+IV/SM
+IVF
+Ia
+Iaccoca/M
+Iago/M
+Ian/M
+Iapetus/M
+Ibadan/M
+Iberia/M
+Iberian/M
+Ibiza/M
+Iblis/M
+Ibo/M
+Ibsen/M
+Icahn/M
+Icarus/M
+Ice
+Iceland/MRZ
+Icelander/M
+Icelandic/M
+Ida/M
+Idaho/SM
+Idahoan/MS
+Idahoes
+Ieyasu/M
+Ignacio/M
+Ignatius/M
+Igor/M
+Iguassu/M
+Ijsselmeer/M
+Ike/M
+Ikhnaton/M
+Ila/M
+Ilene/M
+Iliad/SM
+Ill
+Illinois/M
+Illinoisan/MS
+Illuminati/M
+Ilyushin/M
+Imelda/M
+Imhotep/M
+Imodium/M
+Imogene/M
+Imus/M
+In/M
+Ina/M
+Inc
+Inca/SM
+Inchon/M
+Incorporated
+Ind
+Independence/M
+India/M
+Indian/MS
+Indiana/M
+Indianan/SM
+Indianapolis/M
+Indianian
+Indies/M
+Indira/M
+Indochina/M
+Indochinese/M
+Indonesia/M
+Indonesian/SM
+Indore/M
+Indra/M
+Indus/M
+Indy/SM
+Ines/M
+Inez/M
+Inge/M
+Inglewood
+Ingram/M
+Ingres/M
+Ingrid/M
+Innocent/M
+Innsbruck
+Inonu/M
+Inquisition/M
+Inst
+Instagram/M
+Instamatic/M
+Intel/M
+Intelsat/M
+Internationale/M
+Internet/SM
+Interpol/M
+Inuit/MS
+Inuktitut/M
+Invar/M
+Io/M
+Ionesco/M
+Ionian/MS
+Ionic/SM
+Iowa/SM
+Iowan/MS
+Iphigenia/M
+Ipswich
+Iqaluit/M
+Iqbal/M
+Iquitos/M
+Ir/M
+Ira/M
+Iran/M
+Iranian/SM
+Iraq/M
+Iraqi/MS
+Ireland/M
+Irene/M
+Iris/M
+Irish/MR
+Irishman/M
+Irishmen/M
+Irishwoman/M
+Irishwomen/M
+Irkutsk/M
+Irma/M
+Iroquoian/SM
+Iroquois/M
+Irrawaddy/M
+Irtish/M
+Irvin/M
+Irvine/M
+Irving/M
+Irwin/M
+Isaac/M
+Isabel/M
+Isabella/M
+Isabelle/M
+Isaiah/M
+Iscariot/M
+Isfahan/M
+Isherwood/M
+Ishim/M
+Ishmael/M
+Ishtar/M
+Isiah/M
+Isidro/M
+Isis/M
+Islam/MS
+Islamabad/M
+Islamic/M
+Islamism/M
+Islamist/M
+Islamophobia
+Islamophobic
+Ismael/M
+Ismail/M
+Isolde/M
+Ispell/M
+Israel/SM
+Israeli/SM
+Israelite/M
+Issac/M
+Issachar/M
+Istanbul/M
+Isuzu/M
+It
+Itaipu/M
+Ital
+Italian/SM
+Italianate
+Italy/M
+Itasca/M
+Ithaca/M
+Ithacan/M
+Ito/M
+Iva/M
+Ivan/M
+Ivanhoe/M
+Ives/M
+Ivorian
+Ivory/M
+Ivy/M
+Iyar/M
+Izaak/M
+Izanagi/M
+Izanami/M
+Izhevsk/M
+Izmir/M
+Izod/M
+Izvestia/M
+J/MD
+JCS
+JD
+JFK/M
+JP
+JPEG
+JV
+Jack/M
+Jackie/M
+Jacklyn/M
+Jackson/M
+Jacksonian/M
+Jacksonville/M
+Jacky/M
+Jaclyn/M
+Jacob/SM
+Jacobean/M
+Jacobi/M
+Jacobin/M
+Jacobite/M
+Jacobs/M
+Jacobson/M
+Jacquard/M
+Jacqueline/M
+Jacquelyn/M
+Jacques/M
+Jacuzzi/M
+Jagger/M
+Jagiellon/M
+Jaguar/M
+Jahangir/M
+Jaime/M
+Jain/M
+Jainism/M
+Jaipur/M
+Jakarta/M
+Jake/M
+Jamaal/M
+Jamaica/M
+Jamaican/SM
+Jamal/M
+Jamar/M
+Jame/SM
+Jamel/M
+James/M
+Jamestown/M
+Jami/M
+Jamie/M
+Jan/M
+Jana/M
+Janacek/M
+Jane/M
+Janell/M
+Janelle/M
+Janet/M
+Janette/M
+Janice/M
+Janie/M
+Janine/M
+Janis/M
+Janissary/M
+Janjaweed/M
+Janna/M
+Jannie/M
+Jansen/M
+Jansenist/M
+January/SM
+Janus/M
+Jap/SM
+Japan/M
+Japanese/MS
+Japura/M
+Jared/M
+Jarlsberg/M
+Jarred/M
+Jarrett/M
+Jarrod/M
+Jarvis/M
+Jasmine/M
+Jason/M
+Jasper/M
+Jataka/M
+Java/SM
+JavaScript/M
+Javanese/M
+Javier/M
+Jaxartes/M
+Jay/M
+Jayapura/M
+Jayawardene/M
+Jaycee/MS
+Jaycees/M
+Jayne/M
+Jayson/M
+Jean/M
+Jeanette/M
+Jeanie/M
+Jeanine/M
+Jeanne/M
+Jeannette/M
+Jeannie/M
+Jeannine/M
+Jed/M
+Jedi/M
+Jeep/M
+Jeeves/M
+Jeff/M
+Jefferey/M
+Jefferson/M
+Jeffersonian/M
+Jeffery/M
+Jeffrey/M
+Jeffry/M
+Jehoshaphat/M
+Jehovah/M
+Jekyll/M
+Jenifer/M
+Jenkins/M
+Jenna/M
+Jenner/M
+Jennie/M
+Jennifer/M
+Jennings/M
+Jenny/M
+Jensen/M
+Jephthah/M
+Jerald/M
+Jeremiah/M
+Jeremiahs
+Jeremy/M
+Jeri/M
+Jericho/M
+Jermaine/M
+Jeroboam/M
+Jerold/M
+Jerome/M
+Jerri/M
+Jerrod/M
+Jerrold/M
+Jerry/M
+Jersey/MS
+Jerusalem/M
+Jess/M
+Jesse/M
+Jessica/M
+Jessie/M
+Jesuit/MS
+Jesus/M
+Jetway/M
+Jew/SM
+Jewel/M
+Jewell/M
+Jewess/MS
+Jewish/PM
+Jewry/M
+Jezebel/SM
+Jidda/M
+Jilin/M
+Jill/M
+Jillian/M
+Jim/M
+Jimenez/M
+Jimmie/M
+Jimmy/M
+Jinan/M
+Jinnah/M
+Jinny/M
+Jivaro/M
+Jo/M
+Joan/M
+Joann/M
+Joanna/M
+Joanne/M
+Joaquin/M
+Job/SM
+Jobs/M
+Jocasta/M
+Jocelyn/M
+Jock/M
+Jockey/M
+Jodi/M
+Jodie/M
+Jody/M
+Joe/M
+Joel/M
+Joey/M
+Jogjakarta/M
+Johann/M
+Johanna/M
+Johannes/M
+Johannesburg/M
+John/SM
+Johnathan/M
+Johnathon/M
+Johnie/M
+Johnnie/M
+Johnny/M
+Johns/M
+Johnson/M
+Johnston/M
+Jolene/M
+Jolson/M
+Jon/M
+Jonah/M
+Jonahs
+Jonas/M
+Jonathan/M
+Jonathon/M
+Jones/M
+Joni/M
+Jonson/M
+Joplin/M
+Jordan/M
+Jordanian/MS
+Jorge/M
+Jose/M
+Josef/M
+Josefa/M
+Josefina/M
+Joseph/M
+Josephine/M
+Josephs
+Josephson/M
+Josephus/M
+Josh/M
+Joshua/M
+Josiah/M
+Josie/M
+Josue/M
+Joule/M
+Jove/M
+Jovian/M
+Joy/M
+Joyce/M
+Joycean/M
+Joyner/M
+Jpn
+Jr/M
+Juan/M
+Juana/M
+Juanita/M
+Juarez/M
+Jubal/M
+Judaeo
+Judah/M
+Judaic
+Judaical
+Judaism/MS
+Judas/MS
+Judd/M
+Jude/M
+Judea/M
+Judges
+Judith/M
+Judson/M
+Judy/M
+Juggernaut/M
+Jul
+Jules/M
+Julia/M
+Julian/M
+Juliana/M
+Julianne/M
+Julie/M
+Juliet/M
+Juliette/M
+Julio/M
+Julius/M
+Julliard/M
+July/SM
+Jun/M
+June/SM
+Juneau/M
+Jung/M
+Jungfrau/M
+Jungian/M
+Junior/SM
+Junker/SM
+Juno/M
+Jupiter/M
+Jurassic/M
+Jurua/M
+Justice/M
+Justin/M
+Justine/M
+Justinian/M
+Jutland/M
+Juvenal/M
+K/SMNGJ
+KB/M
+KC
+KFC/M
+KGB/M
+KIA
+KKK/M
+KO/M
+KP
+KS
+KY
+Kaaba/M
+Kabul/M
+Kafka/M
+Kafkaesque/M
+Kagoshima/M
+Kahlua/M
+Kaifeng/M
+Kaiser/MS
+Kaitlin/M
+Kalahari/M
+Kalamazoo/M
+Kalashnikov/M
+Kalb/M
+Kalevala/M
+Kalgoorlie/M
+Kali/M
+Kalmyk/M
+Kama/M
+Kamchatka/M
+Kamehameha/M
+Kampala/M
+Kampuchea/M
+Kan/SM
+Kanchenjunga/M
+Kandahar/M
+Kandinsky/M
+Kane/M
+Kannada/M
+Kano/M
+Kanpur/M
+Kansan/MS
+Kansas/M
+Kant/M
+Kantian/M
+Kaohsiung/M
+Kaposi/M
+Kara/M
+Karachi/M
+Karaganda/M
+Karakorum/M
+Karamazov/M
+Kareem/M
+Karen/M
+Karenina/M
+Kari/M
+Karin/M
+Karina/M
+Karl/M
+Karla/M
+Karloff/M
+Karo/M
+Karol/M
+Karroo/M
+Karyn/M
+Kasai/M
+Kasey/M
+Kashmir/SM
+Kasparov/M
+Kate/M
+Katelyn/M
+Katharine/M
+Katherine/M
+Katheryn/M
+Kathiawar/M
+Kathie/M
+Kathleen/M
+Kathmandu/M
+Kathrine/M
+Kathryn/M
+Kathy/M
+Katie/M
+Katina/M
+Katmai/M
+Katowice/M
+Katrina/M
+Katy/M
+Kauai/M
+Kaufman/M
+Kaunas/M
+Kaunda/M
+Kawabata/M
+Kawasaki/M
+Kay/M
+Kaye/M
+Kayla/M
+Kazakh/M
+Kazakhs
+Kazakhstan/M
+Kazan/M
+Kazantzakis/M
+Kb/M
+Keaton/M
+Keats/M
+Keck/M
+Keenan/M
+Keewatin/M
+Keillor/M
+Keisha/M
+Keith/M
+Keller/M
+Kelley/M
+Kelli/M
+Kellie/M
+Kellogg/M
+Kelly/M
+Kelsey/M
+Kelvin/M
+Kemerovo/M
+Kemp/M
+Kempis/M
+Ken/M
+Kendall/M
+Kendra/M
+Kendrick/M
+Kenmore/M
+Kennan/M
+Kennedy/M
+Kenneth/M
+Kennith/M
+Kenny/M
+Kent/M
+Kenton/M
+Kentuckian/MS
+Kentucky/M
+Kenya/M
+Kenyan/SM
+Kenyatta/M
+Kenyon/M
+Keogh/M
+Keokuk/M
+Kepler/M
+Kerensky/M
+Keri/M
+Kermit/M
+Kern/M
+Kerouac/M
+Kerr/M
+Kerri/M
+Kerry/M
+Kettering/M
+Keven/M
+Kevin/M
+Kevlar/M
+Kevorkian/M
+Kewpie/M
+Key/M
+Keynes/M
+Keynesian/M
+Khabarovsk/M
+Khachaturian/M
+Khalid/M
+Khan/M
+Kharkov/M
+Khartoum/M
+Khayyam/M
+Khazar/M
+Khmer/M
+Khoikhoi/M
+Khoisan/M
+Khomeini/M
+Khorana/M
+Khrushchev/M
+Khufu/M
+Khulna/M
+Khwarizmi/M
+Khyber/M
+Kickapoo/M
+Kidd/M
+Kiel/M
+Kierkegaard/M
+Kieth/M
+Kiev/M
+Kigali/M
+Kikuyu/M
+Kilauea/M
+Kilimanjaro/M
+Kilroy/M
+Kim/M
+Kimberley/M
+Kimberly/M
+King/M
+Kingston/M
+Kingstown/M
+Kinko's
+Kinney/M
+Kinsey/M
+Kinshasa/M
+Kiowa/MS
+Kip/M
+Kipling/M
+Kirby/M
+Kirchhoff/M
+Kirchner/M
+Kirghistan/M
+Kirghiz/M
+Kirghizia/M
+Kiribati/M
+Kirinyaga/M
+Kirk/M
+Kirkland/M
+Kirkpatrick/M
+Kirov/M
+Kirsten/M
+Kisangani/M
+Kishinev/M
+Kislev/M
+Kissinger/M
+Kit/M
+Kitakyushu/M
+Kitchener/M
+Kitty/M
+Kiwanis/M
+Klan/M
+Klansman/M
+Klaus/M
+Klee/M
+Kleenex/MS
+Klein/M
+Klimt/M
+Kline/M
+Klingon/M
+Klondike/MS
+Kmart/M
+Knapp/M
+Knesset/M
+Kngwarreye/M
+Knickerbocker/M
+Knievel/M
+Knight/M
+Knopf/M
+Knossos/M
+Knowles/M
+Knox/M
+Knoxville/M
+Knudsen/M
+Knuth/M
+Knuths
+Kobe/M
+Koch/M
+Kochab/M
+Kodachrome/M
+Kodak/M
+Kodaly/M
+Kodiak/M
+Koestler/M
+Kohinoor/M
+Kohl/M
+Koizumi/M
+Kojak/M
+Kolyma/M
+Kommunizma/M
+Kong/M
+Kongo/M
+Konrad/M
+Koontz/M
+Koppel/M
+Koran/MS
+Koranic
+Korea/M
+Korean/SM
+Kornberg/M
+Kory/M
+Korzybski/M
+Kosciusko/M
+Kossuth/M
+Kosygin/M
+Koufax/M
+Kowloon/M
+Kr/M
+Kraft/M
+Krakatoa/M
+Krakow/M
+Kramer/M
+Krasnodar/M
+Krasnoyarsk/M
+Krebs/M
+Kremlin/M
+Kremlinologist
+Kremlinology
+Kresge/M
+Kringle/M
+Kris/M
+Krishna/M
+Krishnamurti/M
+Krista/M
+Kristen/M
+Kristi/M
+Kristie/M
+Kristin/M
+Kristina/M
+Kristine/M
+Kristopher/M
+Kristy/M
+Kroc/M
+Kroger/M
+Kronecker/M
+Kropotkin/M
+Kruger/M
+Krugerrand/M
+Krupp/M
+Krystal/M
+Kshatriya/M
+Kublai/M
+Kubrick/M
+Kuhn/M
+Kuibyshev/M
+Kulthumm/M
+Kunming/M
+Kuomintang/M
+Kurd/M
+Kurdish/M
+Kurdistan/M
+Kurosawa/M
+Kurt/M
+Kurtis/M
+Kusch/M
+Kutuzov/M
+Kuwait/M
+Kuwaiti/SM
+Kuznets/M
+Kuznetsk/M
+Kwakiutl/M
+Kwan/M
+Kwangju/M
+Kwanzaa/MS
+Ky/MH
+Kyle/M
+Kyoto/M
+Kyrgyzstan/M
+Kyushu/M
+L'Amour/M
+L'Enfant
+L'Oreal/M
+L'Ouverture/M
+L/MN
+LA
+LAN/M
+LBJ/M
+LC
+LCD/M
+LCM
+LDC
+LED/M
+LG/M
+LGBT
+LIFO
+LL
+LLB/M
+LLD/M
+LNG
+LOGO
+LP/M
+LPG
+LPN/SM
+LSAT
+LSD/M
+LVN
+La/SM
+Lab
+Laban/M
+Labrador/SM
+Labradorean
+Lacey/M
+Lachesis/M
+Lacy/M
+Ladoga/M
+Ladonna/M
+Lady/M
+Ladyship/MS
+Lafayette/M
+Lafitte/M
+Lagos/M
+Lagrange/M
+Lagrangian/M
+Lahore/M
+Laius/M
+Lajos/M
+Lakeisha/M
+Lakewood
+Lakisha/M
+Lakota/M
+Lakshmi/M
+Lamaism/SM
+Lamar/M
+Lamarck/M
+Lamaze/M
+Lamb/M
+Lambert/M
+Lamborghini/M
+Lambrusco/M
+Lamentations
+Lamont/M
+Lana/M
+Lanai/M
+Lancashire/M
+Lancaster/M
+Lance/M
+Lancelot/M
+Land/M
+Landon/M
+Landry/M
+Landsat/M
+Landsteiner/M
+Lane/M
+Lang/M
+Langerhans/M
+Langland/M
+Langley/M
+Langmuir/M
+Lanka/M
+Lankan/M
+Lanny/M
+Lansing/M
+Lanzhou/M
+Lao/SM
+Laocoon/M
+Laos/M
+Laotian/SM
+Laplace/M
+Lapland/MR
+Lapp/SM
+Lara/M
+Laramie/M
+Lardner/M
+Laredo/M
+Larousse/M
+Larry/M
+Lars/MN
+Larsen/M
+Larson/M
+Lascaux/M
+Lassa/M
+Lassen/M
+Lassie/M
+Lat/M
+Latasha/M
+Lateran/M
+Latham/M
+Latin/MRS
+Latina
+Latino/SM
+Latisha/M
+Latonya/M
+Latoya/M
+Latrobe/M
+Latvia/M
+Latvian/MS
+Laud/MR
+Lauder/M
+Laue/M
+Laundromat/M
+Laura/M
+Laurasia/M
+Laurel/M
+Lauren/M
+Laurence/M
+Laurent/M
+Lauri/M
+Laurie/M
+Laval/M
+Lavern/M
+Laverne/M
+Lavoisier/M
+Lavonne/M
+Lawanda/M
+Lawrence/M
+Lawson/M
+Layamon/M
+Layla/M
+Lazaro/M
+Lazarus/M
+Le/SM
+Lea/M
+Leach/M
+Leadbelly/M
+Leah/M
+Leakey/M
+Lean/M
+Leander/M
+Leann/M
+Leanna/M
+Leanne/M
+Lear/M
+Learjet/M
+Leary/M
+Leavenworth/M
+Lebanese/M
+Lebanon/M
+Lebesgue/M
+Leblanc/M
+Leda/M
+Lederberg/M
+Lee/M
+Leeds/M
+Leeuwenhoek/M
+Leeward/M
+Left
+Legendre/M
+Leger/M
+Leghorn/M
+Lego/M
+Legree/M
+Lehman/M
+Leibniz/M
+Leicester/SM
+Leiden/M
+Leif/M
+Leigh/M
+Leila/M
+Leipzig/M
+Lela/M
+Leland/M
+Lelia/M
+Lemaitre/M
+Lemuel/M
+Lemuria/M
+Len/M
+Lena/M
+Lenard/M
+Lenin/M
+Leningrad/M
+Leninism/M
+Leninist/M
+Lennon/M
+Lenny/M
+Leno/M
+Lenoir/M
+Lenora/M
+Lenore/M
+Lent/SMN
+Lenten/M
+Leo/SM
+Leola/M
+Leon/M
+Leona/M
+Leonard/M
+Leonardo/M
+Leoncavallo/M
+Leonel/M
+Leonid/M
+Leonidas/M
+Leonor/M
+Leopold/M
+Leopoldo/M
+Lepidus/M
+Lepke/M
+Lepus/M
+Lerner/M
+Leroy/M
+Les/M
+Lesa/M
+Lesley/M
+Leslie/M
+Lesotho/M
+Lesseps/M
+Lessie/M
+Lester/M
+Lestrade/M
+Leta/M
+Letha/M
+Lethe/M
+Leticia/M
+Letitia/M
+Letterman/M
+Levant/M
+Levesque/M
+Levi/SM
+Leviathan/M
+Levine/M
+Leviticus/M
+Levitt/M
+Levy/M
+Lew/M
+Lewinsky/M
+Lewis/M
+Lexington/M
+Lexus/M
+Lhasa/MS
+Lhotse/M
+Li/MY
+Libby/M
+Liberace/M
+Liberal
+Liberia/M
+Liberian/SM
+Libra/MS
+LibreOffice/M
+Libreville/M
+Librium/M
+Libya/M
+Libyan/SM
+Lichtenstein/M
+Lidia/M
+Lie/M
+Lieberman/M
+Liebfraumilch/M
+Liechtenstein/ZMR
+Liechtensteiner/M
+Liege/M
+Lieut
+Lila/M
+Lilia/M
+Lilian/M
+Liliana/M
+Lilith/M
+Liliuokalani/M
+Lille/M
+Lillian/M
+Lillie/M
+Lilliput/M
+Lilliputian/MS
+Lilly/M
+Lilongwe/M
+Lily/M
+Lima/M
+Limbaugh/M
+Limbo
+Limburger/M
+Limoges/M
+Limousin/M
+Limpopo/M
+Lin/M
+Lina/M
+Lincoln/MS
+Lind/M
+Linda/M
+Lindbergh/M
+Lindsay/M
+Lindsey/M
+Lindy/M
+Linnaeus/M
+Linotype/M
+Linton/M
+Linus/M
+Linux/MS
+Linwood/M
+Lionel/M
+Lipizzaner/M
+Lippi/M
+Lippmann/M
+Lipscomb/M
+Lipton/M
+Lisa/M
+Lisbon/M
+Lissajous/M
+Lister/M
+Listerine/M
+Liston/M
+Liszt/M
+Lithuania/M
+Lithuanian/MS
+Little/M
+Litton/M
+Liverpool/M
+Liverpudlian/SM
+Livia/M
+Livingston/M
+Livingstone/M
+Livonia/M
+Livy/M
+Liz/M
+Liza/M
+Lizzie/M
+Lizzy/M
+Ljubljana/M
+Llewellyn/M
+Lloyd/M
+Ln
+Loafer/SM
+Lobachevsky/M
+Lochinvar/M
+Locke/M
+Lockean/M
+Lockheed/M
+Lockwood/M
+Lodge/M
+Lodz/M
+Loewe/M
+Loewi/M
+Loews/M
+Logan/M
+Lohengrin/M
+Loire/M
+Lois/M
+Loki/M
+Lola/M
+Lolita/M
+Lollard/M
+Lollobrigida/M
+Lombard/M
+Lombardi/M
+Lombardy/M
+Lome/M
+Lon/M
+London/MRZ
+Londoner/M
+Long/M
+Longfellow/M
+Longstreet/M
+Longueuil
+Lonnie/M
+Lopez/M
+Lora/M
+Loraine/M
+Lord/SM
+Lordship/SM
+Lorelei/M
+Loren/M
+Lorena/M
+Lorene/M
+Lorentz/M
+Lorenz/M
+Lorenzo/M
+Loretta/M
+Lori/M
+Lorie/M
+Lorna/M
+Lorraine/M
+Lorre/M
+Lorrie/M
+Los
+Lot/M
+Lothario/SM
+Lott/M
+Lottie/M
+Lou/M
+Louella/M
+Louie/M
+Louis/M
+Louisa/M
+Louise/M
+Louisiana/M
+Louisianan/MS
+Louisianian/MS
+Louisville/M
+Lourdes/M
+Louvre/M
+Love/M
+Lovecraft/M
+Lovelace/M
+Lowe/M
+Lowell/M
+Lowenbrau/M
+Lowery/M
+Lowlands
+Loyang/M
+Loyd/M
+Loyola/M
+Lr
+Lt
+Ltd
+Lu/M
+Luanda/M
+Luann/M
+Lubavitcher/M
+Lubbock/M
+Lubumbashi/M
+Lucas/M
+Luce/M
+Lucia/M
+Lucian/M
+Luciano/M
+Lucien/M
+Lucifer/M
+Lucile/M
+Lucille/M
+Lucinda/M
+Lucio/M
+Lucite/SM
+Lucius/M
+Lucknow/M
+Lucretia/M
+Lucretius/M
+Lucy/M
+Luddite/MS
+Ludhiana/M
+Ludwig/M
+Luella/M
+Lufthansa/M
+Luftwaffe/M
+Luger/M
+Lugosi/M
+Luigi/M
+Luis/M
+Luisa/M
+Luke/M
+Lula/M
+Lully/M
+Lulu/M
+Lumiere/M
+Luna/M
+Lupe/M
+Lupercalia/M
+Lupus/M
+Luria/M
+Lusaka/M
+Lusitania/M
+Luther/M
+Lutheran/SM
+Lutheranism/MS
+Luvs/M
+Luxembourg/ZMR
+Luxembourger/M
+Luxembourgian
+Luz/M
+Luzon/M
+Lvov/M
+LyX/M
+Lyallpur
+Lycra/M
+Lycurgus/M
+Lydia/M
+Lydian/SM
+Lyell/M
+Lyle/M
+Lyly/M
+Lyman/M
+Lyme/M
+Lynch/M
+Lynda/M
+Lyndon/M
+Lynette/M
+Lynn/M
+Lynne/M
+Lynnette/M
+Lyon/SM
+Lyons/M
+Lyra/M
+Lysenko/M
+Lysistrata/M
+Lysol/M
+M/SMGB
+MA/M
+MASH
+MB/M
+MBA/M
+MC
+MCI/M
+MD/M
+MDT
+ME
+MEGO/S
+MFA/M
+MGM/M
+MHz
+MI/M
+MIA
+MIDI/M
+MIPS
+MIRV
+MIT/M
+MM
+MN
+MO
+MOOC
+MP/M
+MPEG
+MRI/M
+MS/M
+MSG/M
+MST/M
+MSW
+MT/M
+MTV/M
+MVP/M
+MW
+Maalox/M
+Mabel/M
+Mable/M
+Mac/M
+MacArthur/M
+MacBride/M
+MacDonald/M
+MacLeish/M
+Macao/M
+Macaulay/M
+Macbeth/M
+Maccabees
+Maccabeus/M
+Mace/M
+Macedon/M
+Macedonia/M
+Macedonian/SM
+Mach/M
+Machiavelli/M
+Machiavellian/M
+Macias/M
+Macintosh/M
+Mack/M
+Mackenzie/M
+Mackinac/M
+Mackinaw/M
+Macmillan/M
+Macon/M
+Macumba/M
+Macy/M
+Madagascan/SM
+Madagascar/M
+Madam
+Madden/M
+Maddox/M
+Madeira/SM
+Madeleine/M
+Madeline/M
+Madelyn/M
+Madge/M
+Madison/M
+Madonna/SM
+Madras/M
+Madrid/M
+Madurai/M
+Mae/M
+Maeterlinck/M
+Mafia/MS
+Mafioso/M
+Magdalena/M
+Magdalene/M
+Magellan/M
+Magellanic/M
+Maggie/M
+Maghreb/M
+Magi
+Maginot/M
+Magnitogorsk/M
+Magog/M
+Magoo/M
+Magritte/M
+Magsaysay/M
+Magus
+Magyar/SM
+Mahabharata/M
+Maharashtra/M
+Mahavira/M
+Mahayana/M
+Mahayanist/M
+Mahdi/M
+Mahfouz/M
+Mahican/SM
+Mahler/M
+Mai/M
+Maidenform/M
+Maigret/M
+Mailer/M
+Maillol/M
+Maiman/M
+Maimonides/M
+Maine/MZR
+Mainer/M
+Maisie/M
+Maitreya/M
+Maj
+Majesty
+Major/M
+Majorca/M
+Majuro/M
+Makarios/M
+Maker/M
+Malabar/M
+Malabo/M
+Malacca/M
+Malachi/M
+Malagasy/M
+Malamud/M
+Malaprop/M
+Malawi/M
+Malawian/SM
+Malay/MS
+Malaya/M
+Malayalam/M
+Malayan/MS
+Malaysia/M
+Malaysian/MS
+Malcolm/M
+Maldive/MS
+Maldives/M
+Maldivian/MS
+Maldonado/M
+Male/M
+Mali/M
+Malian/SM
+Malibu/M
+Malinda/M
+Malinowski/M
+Mallarme/M
+Mallomars/M
+Mallory/M
+Malone/M
+Malory/M
+Malplaquet/M
+Malraux/M
+Malta/M
+Maltese/M
+Malthus/M
+Malthusian/SM
+Mameluke/M
+Mamet/M
+Mamie/M
+Mamore/M
+Man/M
+Managua/M
+Manama/M
+Manasseh/M
+Manchester/M
+Manchu/SM
+Manchuria/M
+Manchurian/M
+Mancini/M
+Mancunian/MS
+Mandalay/M
+Mandarin/M
+Mandela/M
+Mandelbrot/M
+Mandingo/M
+Mandrell/M
+Mandy/M
+Manet/M
+Manfred/M
+Manhattan/SM
+Mani/M
+Manichean/M
+Manila/SM
+Manitoba/M
+Manitoulin/M
+Manley/M
+Mann/GM
+Mannheim/M
+Manning/M
+Mansfield/M
+Manson/M
+Mantegna/M
+Mantle/M
+Manuel/M
+Manuela/M
+Manx/M
+Mao/M
+Maoism/SM
+Maoist/SM
+Maori/MS
+Mapplethorpe/M
+Maputo/M
+Mar/SM
+Mara/M
+Maracaibo/M
+Marat/M
+Maratha/M
+Marathi/M
+Marathon/M
+Marc/M
+Marceau/M
+Marcel/M
+Marcelino/M
+Marcella/M
+Marcelo/M
+March/MS
+Marci/M
+Marcia/M
+Marciano/M
+Marcie/M
+Marco/MS
+Marconi/M
+Marcos/M
+Marcus/M
+Marcuse
+Marcy/M
+Marduk/M
+Margaret/M
+Margarita/M
+Margarito/M
+Marge/M
+Margery/M
+Margie/M
+Margo/M
+Margot
+Margret/M
+Margrethe/M
+Marguerite/M
+Mari/SM
+Maria/M
+Marian/M
+Mariana/SM
+Marianas/M
+Marianne/M
+Mariano/M
+Maribel/M
+Maricela/M
+Marie/M
+Marietta/M
+Marilyn/M
+Marin/M
+Marina/M
+Marine/SM
+Mario/M
+Marion/M
+Maris/M
+Marisa/M
+Marisol/M
+Marissa/M
+Maritain/M
+Maritza/M
+Mariupol
+Marius/M
+Marjorie/M
+Marjory/M
+Mark/SM
+Markab/M
+Markham/M
+Markov/M
+Marks/M
+Marla/M
+Marlboro/M
+Marlborough/M
+Marlene/M
+Marley/M
+Marlin/M
+Marlon/M
+Marlowe/M
+Marmara/M
+Marne/M
+Maronite/M
+Marple/M
+Marquesas/M
+Marquette/M
+Marquez/M
+Marquis/M
+Marquita/M
+Marrakesh/M
+Marriott/M
+Mars/MS
+Marsala/M
+Marseillaise/MS
+Marseilles/M
+Marsh/M
+Marsha/M
+Marshall/M
+Marta/M
+Martel/M
+Martha/M
+Martial/M
+Martian/SM
+Martin/M
+Martina/M
+Martinez/M
+Martinique/M
+Marty/M
+Marva/M
+Marvell/M
+Marvin/M
+Marx/M
+Marxian
+Marxism/SM
+Marxist/SM
+Mary/M
+Maryann/M
+Maryanne/M
+Maryellen/M
+Maryland/MR
+Marylander/M
+Marylou/M
+Masada/M
+Masai/M
+Masaryk/M
+Mascagni/M
+Masefield/M
+Maserati/M
+Maseru/M
+Mashhad/M
+Mason/MS
+Masonic/M
+Masonite/M
+Mass/MS
+Massachusetts/M
+Massasoit/M
+Massenet/M
+Massey/M
+Master/S
+MasterCard/M
+Masters/M
+Mather/M
+Mathew/SM
+Mathews/M
+Mathewson/M
+Mathias/M
+Mathis/M
+Matilda/M
+Matisse/M
+Matt/M
+Mattel/M
+Matterhorn/M
+Matthew/SM
+Matthews/M
+Matthias/M
+Mattie/M
+Maud/M
+Maude/M
+Maugham/M
+Maui/M
+Maupassant/M
+Maura/M
+Maureen/M
+Mauriac/M
+Maurice/M
+Mauricio/M
+Maurine/M
+Mauritania/M
+Mauritanian/SM
+Mauritian/SM
+Mauritius/M
+Mauro/M
+Maurois/M
+Mauryan/M
+Mauser/M
+Mavis/M
+Max/M
+Maximilian/M
+Maxine/M
+Maxwell/M
+May/SMR
+Maya/SM
+Mayan/MS
+Mayer/M
+Mayfair/M
+Mayflower/M
+Maynard/M
+Mayo/M
+Maypole
+Mayra/M
+Mays/M
+Maytag/M
+Mazama/M
+Mazarin/M
+Mazatlan/M
+Mazda/M
+Mazola/M
+Mazzini/M
+Mb/M
+Mbabane/M
+Mbini/M
+McAdam/M
+McBride/M
+McCain/M
+McCall/M
+McCarthy/M
+McCarthyism/M
+McCartney/M
+McCarty/M
+McClain/M
+McClellan/M
+McClure/M
+McConnell/M
+McCormick/M
+McCoy/M
+McCray/M
+McCullough/M
+McDaniel/M
+McDonald/M
+McDonnell/M
+McDowell/M
+McEnroe/M
+McFadden/M
+McFarland/M
+McGee/M
+McGovern/M
+McGowan/M
+McGuffey/M
+McGuire/M
+McIntosh/M
+McIntyre/M
+McKay/M
+McKee/M
+McKenzie/M
+McKinley/M
+McKinney/M
+McKnight/M
+McLaughlin/M
+McLean/M
+McLeod/M
+McLuhan/M
+McMahon/M
+McMillan/M
+McNamara/M
+McNaughton/M
+McNeil/M
+McPherson/M
+McQueen/M
+McVeigh/M
+Md/M
+Me
+Mead/M
+Meade/M
+Meadows/M
+Meagan/M
+Meany/M
+Mecca/MS
+Medan/M
+Medea/M
+Medellin/M
+Media/M
+Medicaid/SM
+Medicare/SM
+Medici/M
+Medina/M
+Mediterranean/MS
+Medusa/M
+Meg/M
+Megan/M
+Meghan/M
+Meier/M
+Meighen/M
+Meiji/M
+Meir/M
+Mejia/M
+Mekong/M
+Mel/M
+Melanesia/M
+Melanesian/M
+Melanie/M
+Melba/M
+Melbourne/M
+Melchior/M
+Melchizedek/M
+Melendez/M
+Melinda/M
+Melisa/M
+Melisande/M
+Melissa/M
+Mellon/M
+Melody/M
+Melpomene/M
+Melton/M
+Melva/M
+Melville/M
+Melvin/M
+Memling/M
+Memphis/M
+Menander/M
+Mencius/M
+Mencken/M
+Mendel/M
+Mendeleev/M
+Mendelian/M
+Mendelssohn/M
+Mendez/M
+Mendocino/M
+Mendoza/M
+Menelaus/M
+Menelik/M
+Menes/M
+Mengzi
+Menkalinan/M
+Menkar/M
+Menkent/M
+Mennen/M
+Mennonite/MS
+Menominee/M
+Menotti/M
+Mensa/M
+Mentholatum/M
+Menuhin/M
+Menzies/M
+Mephisto
+Mephistopheles/M
+Merak/M
+Mercado/M
+Mercator/M
+Mercedes/M
+Mercer/M
+Mercia/M
+Merck/M
+Mercurochrome/M
+Mercury/SM
+Meredith/M
+Merino/M
+Merle/M
+Merlin/M
+Merlot/M
+Merovingian/M
+Merriam/M
+Merrick/M
+Merrill/M
+Merrimack/M
+Merritt/M
+Merthiolate/M
+Merton/M
+Mervin/M
+Mesa/M
+Mesabi/M
+Mesmer/M
+Mesolithic/M
+Mesopotamia/M
+Mesopotamian
+Mesozoic/M
+Messerschmidt/M
+Messiaen/M
+Messiah/M
+Messiahs
+Messianic
+Messieurs
+Metallica/M
+Metamucil/M
+Methodism/SM
+Methodist/SM
+Methuselah/M
+Metternich/M
+Meuse/M
+Mex
+Mexicali/M
+Mexican/MS
+Mexico/M
+Meyer/MS
+Meyerbeer/M
+Meyers/M
+Mfume/M
+Mg/M
+Mgr
+MiG/M
+Mia/M
+Miami/MS
+Miaplacidus/M
+Micah/M
+Micawber/M
+Mich/M
+Michael/M
+Michaelmas/MS
+Micheal/M
+Michel/M
+Michelangelo/M
+Michele/M
+Michelin/M
+Michelle/M
+Michelob/M
+Michelson/M
+Michigan/M
+Michigander/MS
+Michiganite
+Mick/M
+Mickey/M
+Mickie/M
+Micky/M
+Micmac/SM
+Micronesia/M
+Micronesian/M
+Microsoft/M
+Midas/M
+Middleton/M
+Mideast
+Mideastern
+Midland/MS
+Midway/M
+Midwest/M
+Midwestern/MR
+Miguel/M
+Mike/M
+Mikhail/M
+Mikoyan/M
+Milagros/M
+Milan/M
+Milanese
+Mildred/M
+Miles/M
+Milford/M
+Milken/M
+Mill/SMR
+Millard/M
+Millay/M
+Miller/M
+Millet/M
+Millicent/M
+Millie/M
+Millikan/M
+Mills/M
+Milne/M
+Milo/M
+Milosevic/M
+Milquetoast/M
+Miltiades/M
+Milton/M
+Miltonic/M
+Miltown/M
+Milwaukee/M
+Mimi/M
+Mimosa/M
+Min/M
+Minamoto/M
+Mindanao/M
+Mindoro/M
+Mindy/M
+Minerva/M
+Ming/M
+Mingus/M
+Minn
+Minneapolis/M
+Minnelli/M
+Minnesota/M
+Minnesotan/SM
+Minnie/M
+Minoan/MS
+Minolta/M
+Minos/M
+Minot/M
+Minotaur/M
+Minsk/M
+Minsky/M
+Mintaka/M
+Minuit/M
+Minuteman/M
+Miocene/M
+Mir/M
+Mira/M
+Mirabeau/M
+Mirach/M
+Miranda/M
+Mirfak/M
+Miriam/M
+Miro/M
+Mirzam/M
+Miskito/M
+Miss
+Mississauga/M
+Mississippi/M
+Mississippian/SM
+Missouri/M
+Missourian/MS
+Missy/M
+Mistassini/M
+Mister
+Mistress
+Misty/M
+Mitch/M
+Mitchel/M
+Mitchell/M
+Mitford/M
+Mithra/M
+Mithridates/M
+Mitsubishi/M
+Mitterrand/M
+Mitty/M
+Mitzi/M
+Mixtec/M
+Mizar/M
+Mk
+Mlle
+Mme/S
+Mn/M
+Mnemosyne/M
+Mo/M
+Mobil/M
+Mobile/M
+Mobutu/M
+Modesto/M
+Modigliani/M
+Moe/M
+Moet/M
+Mogadishu/M
+Mogul/MS
+Mohacs/M
+Mohamed/M
+Mohammad/M
+Mohammedan/SM
+Mohammedanism/SM
+Mohave/SM
+Mohawk/SM
+Mohegan
+Moho/M
+Mohorovicic/M
+Moira/M
+Moises/M
+Moiseyev/M
+Mojave/SM
+Moldavia/M
+Moldavian
+Moldova/M
+Moldovan
+Moliere/M
+Molina/M
+Moll/M
+Mollie/M
+Molly/M
+Molnar/M
+Moloch/M
+Molokai/M
+Molotov/M
+Moluccas/M
+Mombasa/M
+Mon/SM
+Mona/M
+Monacan
+Monaco/M
+Mondale/M
+Monday/SM
+Mondrian/M
+Monegasque/SM
+Monera/M
+Monet/M
+Mongol/SM
+Mongolia/M
+Mongolian/SM
+Mongolic/M
+Mongoloid
+Monica/M
+Monique/M
+Monk/M
+Monmouth/M
+Monongahela/M
+Monroe/M
+Monrovia/M
+Monsanto/M
+Monsieur/M
+Monsignor/SM
+Mont/M
+Montague/M
+Montaigne/M
+Montana/M
+Montanan/SM
+Montcalm/M
+Monte/M
+Montenegrin/M
+Montenegro/M
+Monterrey/M
+Montesquieu/M
+Montessori/M
+Monteverdi/M
+Montevideo/M
+Montezuma/M
+Montgolfier/M
+Montgomery/M
+Monticello/M
+Montoya/M
+Montpelier/M
+Montrachet/M
+Montreal/M
+Montserrat/M
+Monty/M
+Moody/M
+Moog/M
+Moon/M
+Mooney/M
+Moor/SM
+Moore/M
+Moorish/M
+Morales/M
+Moran/M
+Moravia/M
+Moravian/M
+Mordred/M
+More/M
+Moreno/M
+Morgan/SM
+Moriarty/M
+Morin/M
+Morison/M
+Morita/M
+Morley/M
+Mormon/SM
+Mormonism/SM
+Moro/M
+Moroccan/SM
+Morocco/M
+Moroni/M
+Morpheus/M
+Morphy/M
+Morris/M
+Morrison/M
+Morrow/M
+Morse/M
+Mort/M
+Mortimer/M
+Morton/M
+Mosaic/M
+Moscow/M
+Moseley/M
+Moselle/M
+Moses/M
+Mosley/M
+Moss/M
+Mosul/M
+Motorola/M
+Motown/M
+Motrin/M
+Mott/M
+Moulton/M
+Mount/M
+Mountbatten/M
+Mountie/MS
+Moussorgsky/M
+Mouthe/M
+Mouton/M
+Mowgli/M
+Mozambican/SM
+Mozambique/M
+Mozart/M
+Mozilla/M
+Mr/SM
+Ms/S
+Msgr
+Mt
+Muawiya/M
+Mubarak/M
+Mueller/M
+Muenster/MS
+Mugabe/M
+Muhammad/M
+Muhammadan/MS
+Muhammadanism/SM
+Muir/M
+Mujib/M
+Mulder/M
+Mullen/M
+Muller/M
+Mulligan/M
+Mullikan/M
+Mullins/M
+Mulroney/M
+Multan/M
+Multics
+Mumbai/M
+Mumford/M
+Munch/M
+Munchhausen/M
+Munich/M
+Munoz/M
+Munro/M
+Munster/M
+Muppet/M
+Murasaki/M
+Murat/M
+Murchison/M
+Murcia
+Murdoch/M
+Muriel/M
+Murillo/M
+Murine/M
+Murmansk/M
+Murphy/M
+Murray/M
+Murrow/M
+Murrumbidgee/M
+Muscat/M
+Muscovite/M
+Muscovy/M
+Muse/M
+Musharraf/M
+Musial/M
+Muskogee/M
+Muslim/MS
+Mussolini/M
+Mussorgsky/M
+Mutsuhito/M
+Muzak/M
+MySpace/M
+Myanmar/M
+Mycenae/M
+Mycenaean/M
+Myers/M
+Mylar/MS
+Myles/M
+Myra/M
+Myrdal/M
+Myrna/M
+Myron/M
+Myrtle/M
+Mysore/M
+Myst/M
+N'Djamena
+N/MD
+NAACP/M
+NAFTA/M
+NASA/M
+NASCAR/M
+NASDAQ/M
+NATO/M
+NB
+NBA/M
+NBC/M
+NBS
+NC
+NCAA/M
+NCO
+ND
+NE/M
+NEH
+NF
+NFC
+NFL/M
+NH
+NHL/M
+NIH
+NIMBY
+NJ
+NLRB
+NM
+NORAD/M
+NOW
+NP
+NPR/M
+NR
+NRA
+NRC
+NS
+NSA/M
+NSC
+NSF
+NSFW
+NT
+NV
+NW/M
+NWT
+NY
+NYC
+NYSE
+NZ
+Na/M
+Nabisco/M
+Nabokov/M
+Nader/M
+Nadia/M
+Nadine/M
+Nagasaki/M
+Nagoya/M
+Nagpur/M
+Nagy/M
+Nahuatl/MS
+Nahum/M
+Naipaul/M
+Nair/M
+Nairobi/M
+Naismith/M
+Nam/M
+Namath/M
+Namibia/M
+Namibian/MS
+Nan/M
+Nanak/M
+Nanchang/M
+Nancy/M
+Nanette/M
+Nanjing/M
+Nannie/M
+Nanook/M
+Nansen/M
+Nantes/M
+Nantucket/M
+Naomi/M
+Naphtali/M
+Napier/M
+Naples/M
+Napoleon/MS
+Napoleonic/M
+Napster/M
+Narcissus/M
+Narmada/M
+Narnia/M
+Narraganset
+Narragansett/M
+Nash/M
+Nashua/M
+Nashville/M
+Nassau/M
+Nasser/M
+Nat/M
+Natalia/M
+Natalie/M
+Natasha/M
+Natchez/M
+Nate/MN
+Nathan/SM
+Nathaniel/M
+Nathans/M
+Nation/M
+Nationwide/M
+Nativity/M
+Naugahyde/M
+Nauru/M
+Nautilus/M
+Navajo/SM
+Navajoes
+Navarre/M
+Navarro/M
+Navratilova/M
+Navy
+Nazarene/M
+Nazareth/M
+Nazca/M
+Nazi/SM
+Nazism/MS
+Nb/M
+Nd/M
+Ndjamena/M
+Ne/M
+NeWS
+NeWSes
+Neal/M
+Neanderthal/SM
+Neapolitan/M
+Neb
+Nebr
+Nebraska/M
+Nebraskan/MS
+Nebuchadnezzar/M
+Ned/M
+Nefertiti/M
+Negev/M
+Negress/MS
+Negritude
+Negro/MS
+Negroes
+Negroid/SM
+Negros/M
+Nehemiah/M
+Nehru/M
+Neil/M
+Nelda/M
+Nell/M
+Nellie/M
+Nelly/M
+Nelsen/M
+Nelson/M
+Nembutal/M
+Nemesis/M
+Neogene/M
+Neolithic
+Nepal/M
+Nepalese/M
+Nepali/MS
+Neptune/M
+Nereid/M
+Nerf/M
+Nero/M
+Neruda/M
+Nescafe/M
+Nesselrode/M
+Nestle/M
+Nestor/M
+Nestorius/M
+Netflix/M
+Netherlander/SM
+Netherlands/M
+Netscape/M
+Nettie/M
+Netzahualcoyotl/M
+Nev/M
+Neva/M
+Nevada/M
+Nevadan/SM
+Nevadian
+Nevis/M
+Nevsky/M
+Newark/M
+Newcastle/M
+Newfoundland/MRS
+Newman/M
+Newport/M
+Newsweek/M
+Newton/M
+Newtonian/M
+Nexis/M
+Ngaliema/M
+Nguyen/M
+Ni/M
+Niagara/M
+Niamey/M
+Nibelung/M
+Nicaea/M
+Nicaragua/M
+Nicaraguan/SM
+Niccolo/M
+Nice/M
+Nicene/M
+Nichiren/M
+Nicholas/M
+Nichole/M
+Nichols/M
+Nicholson/M
+Nick/M
+Nickelodeon/M
+Nicklaus/M
+Nickolas/M
+Nicobar/M
+Nicodemus/M
+Nicola/SM
+Nicolas/M
+Nicole/M
+Nicosia/M
+Niebuhr/M
+Nielsen/M
+Nietzsche/M
+Nieves/M
+Nigel/M
+Niger/M
+Nigeria/M
+Nigerian/MS
+Nigerien/M
+Nightingale/M
+Nijinsky/M
+Nike/M
+Nikita/M
+Nikkei/M
+Nikki/M
+Nikolai/M
+Nikon/M
+Nile/M
+Nimitz/M
+Nimrod/M
+Nina/M
+Nineveh/M
+Nintendo/M
+Niobe/M
+Nippon/M
+Nipponese/M
+Nirenberg/M
+Nirvana/M
+Nisan/M
+Nisei/M
+Nissan/M
+Nita/M
+Nivea/M
+Nixon/M
+Nkrumah/M
+No/SM
+NoDoz/M
+Noah/M
+Nobel/M
+Nobelist/MS
+Noble/M
+Noe/M
+Noel/SM
+Noelle/M
+Noemi/M
+Nokia/M
+Nola/M
+Nolan/M
+Nome/M
+Nona/M
+Nootka/M
+Nora/M
+Norbert/M
+Norberto/M
+Nordic/MS
+Noreen/M
+Norfolk/M
+Noriega/M
+Norma/M
+Norman/MS
+Normand/M
+Normandy/M
+Norplant/M
+Norris/M
+Norse/M
+Norseman/M
+Norsemen/M
+North/M
+Northampton/M
+Northeast/MS
+Northerner/M
+Northrop/M
+Northrup/M
+Norths
+Northwest/SM
+Norton/M
+Norw
+Norway/M
+Norwegian/SM
+Norwich/M
+Nosferatu/M
+Nostradamus/M
+Nottingham/M
+Nouakchott/M
+Noumea/M
+Nov/M
+Nova/M
+Novartis/M
+November/MS
+Novgorod/M
+Novocain/MS
+Novocaine
+Novokuznetsk/M
+Novosibirsk/M
+Noxzema/M
+Noyce/M
+Noyes/M
+Np/M
+Nubia/M
+Nubian/M
+Nukualofa/M
+Numbers/M
+Nunavut/M
+Nunez/M
+Nunki/M
+Nuremberg/M
+Nureyev/M
+NutraSweet/M
+NyQuil/M
+Nyasa/M
+Nyerere/M
+O'Brien/M
+O'Casey/M
+O'Connell/M
+O'Connor/M
+O'Donnell/M
+O'Hara/M
+O'Higgins/M
+O'Keeffe/M
+O'Neil/M
+O'Neill/M
+O'Rourke/M
+O'Toole/M
+O/SM
+OAS/M
+OB
+OCR
+OD/SM
+OE
+OED
+OH
+OHSA/M
+OJ
+OK/SMDG
+OMB/M
+ON
+OPEC/M
+OR
+OS/M
+OSHA/M
+OSes
+OT
+OTB
+OTC
+OTOH
+Oahu/M
+Oakland/M
+Oakley/M
+Oates/M
+Oaxaca/M
+Ob/M
+Obadiah/M
+Obama/M
+Obamacare
+Oberlin/M
+Oberon/M
+Occam/M
+Occident
+Occidental/MS
+Oceania/M
+Oceanside
+Oceanus/M
+Ochoa/M
+Oct/M
+Octavia/M
+Octavian/M
+Octavio/M
+October/SM
+Odell/M
+Oder/M
+Odessa/M
+Odets/M
+Odin/M
+Odis/M
+Odom/M
+Odysseus/M
+Odyssey/M
+Oedipal/M
+Oedipus/M
+Oersted/M
+Ofelia/M
+Offenbach/M
+OfficeMax/M
+Ogbomosho/M
+Ogden/M
+Ogilvy/M
+Oglethorpe/M
+Ohio/M
+Ohioan/SM
+Oise/M
+Ojibwa/SM
+Okayama
+Okeechobee/M
+Okefenokee/M
+Okhotsk/M
+Okinawa/M
+Okinawan
+Okla
+Oklahoma/M
+Oklahoman/M
+Oktoberfest/M
+Ola/M
+Olaf/M
+Olajuwon/M
+Olav/M
+Oldenburg/M
+Oldfield/M
+Oldsmobile/M
+Olduvai/M
+Olen/M
+Olenek/M
+Olga/M
+Oligocene/M
+Olin/M
+Olive/MR
+Oliver/M
+Olivetti/M
+Olivia/M
+Olivier/M
+Ollie/M
+Olmec/M
+Olmsted/M
+Olsen/M
+Olson/M
+Olympia/SM
+Olympiad/MS
+Olympian/MS
+Olympic/SM
+Olympics/M
+Olympus/M
+Omaha/MS
+Oman/M
+Omani/MS
+Omar/M
+Omayyad/M
+Omdurman/M
+Omnipotent
+Omsk/M
+Onassis/M
+Oneal/M
+Onega/M
+Onegin/M
+Oneida/MS
+Onion/M
+Ono/M
+Onondaga/MS
+Onsager/M
+Ont
+Ontarian
+Ontario/M
+Oort/M
+Opal/M
+Opel/M
+OpenOffice/M
+Ophelia/M
+Ophiuchus/M
+Oppenheimer/M
+Opposition
+Oprah/M
+Ora/M
+Oracle/M
+Oran/M
+Orange/M
+Oranjestad/M
+Orbison/M
+Ordovician/M
+Ore/N
+Oreg
+Oregon/M
+Oregonian/SM
+Oreo/M
+Orestes/M
+Orient/M
+Oriental/MS
+Orientalism
+Orin/M
+Orinoco/M
+Orion/M
+Oriya/M
+Orizaba/M
+Orkney/M
+Orlando/M
+Orleans/M
+Orlon/MS
+Orly/M
+Orpheus/M
+Orphic/M
+Orr/M
+Ortega/M
+Orthodox
+Ortiz/M
+Orval/M
+Orville/M
+Orwell/M
+Orwellian/M
+Os/M
+Osage/MS
+Osaka/M
+Osbert/M
+Osborn/M
+Osborne/M
+Oscar/MS
+Osceola/M
+Osgood/M
+Oshawa/M
+Oshkosh/M
+Osiris/M
+Oslo/M
+Osman/M
+Ostrogoth/M
+Ostwald/M
+Osvaldo/M
+Oswald/M
+Othello/M
+Otis/M
+Ottawa/SM
+Otto/M
+Ottoman/M
+Ouagadougou/M
+Ouija/MS
+Ovid/M
+Owen/SM
+Owens/M
+Oxford/SM
+Oxnard/M
+Oxonian/M
+Oxus/M
+Oxycontin/M
+Oz/M
+Ozark/MS
+Ozarks/M
+Ozymandias/M
+Ozzie/M
+P/MN
+PA/M
+PAC/M
+PARC/S
+PASCAL
+PBS/M
+PBX
+PC/SM
+PCB
+PCMCIA
+PCP/M
+PD
+PDF
+PDQ
+PDT
+PE
+PET/M
+PFC
+PG
+PGP
+PIN
+PJ's
+PLO/M
+PM/SMDG
+PMS/M
+PO
+POW/M
+PP
+PPS
+PR
+PRC/M
+PRO
+PS/M
+PST/M
+PT
+PTA/M
+PTO
+PVC/M
+PW
+PX
+Pa/M
+Paar/M
+Pablo/M
+Pablum/M
+Pabst/M
+Pace/M
+Pacheco/M
+Pacific/M
+Pacino/M
+Packard/M
+Padang
+Paderewski/M
+Padilla/M
+Paganini/M
+Page/M
+Paglia/M
+Pahlavi/M
+Paige/M
+Paine/M
+Paiute/SM
+Pakistan/M
+Pakistani/SM
+Palembang/M
+Paleocene/M
+Paleogene/M
+Paleolithic/M
+Paleozoic/M
+Palermo/M
+Palestine/M
+Palestinian/SM
+Palestrina/M
+Paley/M
+Palikir/M
+Palisades/M
+Palladio/M
+Palmer/M
+Palmerston/M
+Palmolive/M
+Palmyra/M
+Palomar/M
+Pam/M
+Pamela/M
+Pamirs/M
+Pampers/M
+Pan/M
+Panama/SM
+Panamanian/MS
+Panasonic/M
+Pandora/M
+Pangaea/M
+Pankhurst/M
+Panmunjom/M
+Pansy/M
+Pantagruel/M
+Pantaloon/M
+Pantheon/M
+Panza/M
+Paracelsus/M
+Paraclete/M
+Paradise
+Paraguay/M
+Paraguayan/MS
+Paralympic/S
+Paramaribo/M
+Paramount/M
+Parana/M
+Parcheesi/M
+Pareto/M
+Paris/M
+Parisian/MS
+Park/SMR
+Parker/M
+Parkinson/M
+Parkinsonism
+Parkman/M
+Parks/M
+Parliament/M
+Parmenides
+Parmesan/MS
+Parnassus/MS
+Parnell/M
+Parr/M
+Parrish/M
+Parsifal/M
+Parsons/M
+Parthenon/M
+Parthia/M
+Pasadena/M
+Pascal/SM
+Pasquale/M
+Passion/SM
+Passover/MS
+Pasternak/M
+Pasteur/M
+Pat/M
+Patagonia/M
+Patagonian/M
+Pate/M
+Patel/M
+Paterson/M
+Patna/M
+Patrica/M
+Patrice/M
+Patricia/M
+Patrick/M
+Patsy/M
+Patterson/M
+Patti/M
+Patton/M
+Patty/M
+Paul/GM
+Paula/M
+Paulette/M
+Pauli/M
+Pauline/M
+Pauling/M
+Pavarotti/M
+Pavlov/M
+Pavlova/M
+Pavlovian/M
+Pawnee/SM
+PayPal/M
+Payne/M
+Pb/M
+Pd/M
+Peabody/M
+Peace/M
+Peale/M
+Pearl/M
+Pearlie/M
+Pearson/M
+Peary/M
+Pechora/M
+Peck/M
+Peckinpah/M
+Pecos/M
+Pedro/M
+Peel/M
+Peg/M
+Pegasus/MS
+Peggy/M
+Pei/M
+Peiping/M
+Peking/SM
+Pekingese/SM
+Pele/M
+Pelee/M
+Peloponnese/M
+Pembroke/M
+Pen/M
+Pena/M
+Penderecki/M
+Penelope/M
+Penn/M
+Penna
+Penney/M
+Pennington/M
+Pennsylvania/M
+Pennsylvanian/MS
+Penny/M
+Pennzoil/M
+Pensacola/M
+Pentagon/M
+Pentateuch/M
+Pentax/M
+Pentecost/SM
+Pentecostal/MS
+Pentecostalism
+Pentium/SM
+Peoria/M
+Pepin/M
+Pepsi/M
+Pepys/M
+Pequot/M
+Percheron/M
+Percival/M
+Percy/M
+Perelman/M
+Perez/M
+Periclean/M
+Pericles/M
+Perkins/M
+Perl/SM
+Perm/M
+Permalloy/M
+Permian/M
+Pernod/M
+Peron/M
+Perot/M
+Perrier/M
+Perry/RM
+Perseid/M
+Persephone/M
+Persepolis/M
+Perseus/M
+Pershing/M
+Persia/M
+Persian/SM
+Perth/M
+Peru/M
+Peruvian/MS
+Peshawar/M
+Petain/M
+Pete/RMZ
+Peter/M
+Peters/MN
+Petersen/M
+Peterson/M
+Petra/M
+Petrarch/M
+Petty/M
+Peugeot/M
+Pfc
+Pfizer/M
+PhD/M
+Phaedra/M
+Phaethon/M
+Phanerozoic/M
+Pharaoh/M
+Pharaohs
+Pharisaic
+Pharisaical
+Pharisee/MS
+Phekda/M
+Phelps/M
+Phidias/M
+Phil/MY
+Philadelphia/M
+Philby/M
+Philemon/M
+Philip/MS
+Philippe/M
+Philippians/M
+Philippine/SM
+Philippines/M
+Philips/M
+Philistine/M
+Phillip/SM
+Phillipa/M
+Phillips/M
+Philly/M
+Phipps/M
+Phobos/M
+Phoebe/M
+Phoenicia/M
+Phoenician/SM
+Phoenix/M
+Photostat/MS
+Photostatted
+Photostatting
+Phrygia/M
+Phyllis/M
+Piaf/M
+Piaget/M
+Pianola/M
+Picasso/M
+Piccadilly/M
+Pickering/M
+Pickett/M
+Pickford/M
+Pickwick/M
+Pict/M
+Piedmont/M
+Pierce/M
+Pierre/M
+Pierrot/M
+Pike/M
+Pilate/MS
+Pilates/M
+Pilcomayo/M
+Pilgrim/SM
+Pillsbury/M
+Pinatubo/M
+Pincus/M
+Pindar/M
+Pinkerton/M
+Pinocchio/M
+Pinochet/M
+Pinter/M
+Pinyin
+Pippin/M
+Piraeus/M
+Pirandello/M
+Pisa/M
+Pisces/M
+Pisistratus/M
+Pissaro/M
+Pitcairn/M
+Pitt/SM
+Pittman/M
+Pitts/M
+Pittsburgh/M
+Pius/M
+Pizarro/M
+Pkwy
+Pl
+Planck/M
+Plano
+Plantagenet/M
+Plasticine/M
+Plataea/M
+Plath/M
+Plato/M
+Platonic
+Platonism/M
+Platonist/M
+Platte/M
+Plautus/M
+PlayStation/M
+Playboy/M
+Playtex/M
+Pleiades/M
+Pleistocene/M
+Plexiglas/MS
+Pliny/M
+Pliocene/SM
+Plutarch/M
+Pluto/M
+Plymouth/M
+Pm/M
+Po/M
+Pocahontas/M
+Pocono/SM
+Poconos/M
+Podgorica/M
+Podhoretz/M
+Podunk/M
+Poe/M
+Pogo/M
+Poincare/M
+Poiret/M
+Poirot/M
+Poisson/M
+Poitier/M
+Pokemon/M
+Pol/MY
+Poland/M
+Polanski/M
+Polaris/M
+Polaroid/MS
+Pole/SM
+Polish/M
+Politburo/M
+Polk/M
+Pollard/M
+Pollock/M
+Pollux/M
+Polly/M
+Pollyanna/M
+Polo/M
+Poltava/M
+Polyhymnia/M
+Polynesia/M
+Polynesian/MS
+Polyphemus/M
+Pomerania/M
+Pomeranian/M
+Pomona/M
+Pompadour/M
+Pompeian
+Pompeii/M
+Pompey/M
+Ponce/M
+Pontchartrain/M
+Pontiac/M
+Pontianak/M
+Pooh/M
+Poole/M
+Poona/M
+Pope/M
+Popeye/M
+Popocatepetl/M
+Popper/M
+Poppins/M
+Popsicle/M
+Porfirio/M
+Porrima/M
+Porsche/M
+Port/MR
+Porter/M
+Portia/M
+Portland/M
+Porto/M
+Portsmouth/M
+Portugal/M
+Portuguese/M
+Poseidon/M
+Post/M
+Potemkin/M
+Potomac/M
+Potsdam/M
+Pottawatomie/M
+Potter/M
+Potts/M
+Pound/M
+Poussin/M
+Powell/M
+PowerPC/M
+PowerPoint/M
+Powers/M
+Powhatan/M
+Poznan/M
+Pr/M
+Prada/M
+Prado/M
+Praetorian/M
+Prague/M
+Praia/M
+Prakrit/M
+Pratchett/M
+Pratt/M
+Pravda/M
+Praxiteles/M
+Preakness/M
+Precambrian/M
+Preminger/M
+Premyslid/M
+Prensa/M
+Prentice/M
+Pres
+Presbyterian/SM
+Presbyterianism/MS
+Prescott/M
+Presley/M
+Preston/M
+Pretoria/M
+Priam/M
+Pribilof/M
+Price/M
+Priestley/M
+Prince/M
+Princeton/M
+Principe/M
+Priscilla/M
+Prius/M
+Private
+Procrustean/M
+Procrustes/M
+Procter/M
+Procyon/M
+Prof
+Prohibition
+Prokofiev/M
+Promethean/M
+Prometheus/M
+Prophets
+Proserpina/M
+Proserpine/M
+Protagoras/M
+Proterozoic/M
+Protestant/MS
+Protestantism/SM
+Proteus/M
+Proudhon/M
+Proust/M
+Provencal/MS
+Provence/M
+Proverbs
+Providence/SM
+Provo/M
+Prozac/MS
+Prudence/M
+Prudential/M
+Pruitt/M
+Prussia/M
+Prussian/MS
+Prut/M
+Pryor/M
+Psalms/M
+Psalter/MS
+Psyche/M
+Pt/M
+Ptah/M
+Ptolemaic/M
+Ptolemy/SM
+Pu/M
+Puccini/M
+Puck/M
+Puckett/M
+Puebla/M
+Pueblo/M
+Puerto
+Puget/M
+Pugh/M
+Pulaski/M
+Pulitzer/M
+Pullman/MS
+Punch/M
+Punic/M
+Punjab/M
+Punjabi/M
+Purana/M
+Purcell/M
+Purdue/M
+Purim/MS
+Purina/M
+Puritan/M
+Puritanism/MS
+Purus/M
+Pusan/M
+Pusey/M
+Pushkin/M
+Pushtu/M
+Putin/M
+Putnam/M
+Puzo/M
+Pvt
+Pygmalion/M
+Pygmy/SM
+Pyle/M
+Pym/M
+Pynchon/M
+Pyongyang/M
+Pyotr/M
+Pyrenees/M
+Pyrex/MS
+Pyrrhic/M
+Pythagoras/M
+Pythagorean/M
+Pythias/M
+Python/M
+Q
+QA
+QB
+QC
+QED
+QM
+QWERTY
+Qaddafi/M
+Qantas/M
+Qatar/M
+Qatari/MS
+Qingdao/M
+Qiqihar/M
+Qom/M
+Quaalude/M
+Quaker/MS
+Quakerism/SM
+Quaoar/M
+Quasimodo/M
+Quaternary/M
+Quayle/M
+Que
+Quebec/M
+Quebecois/M
+Quechua/M
+Queen/MS
+Queens/M
+Queensland/M
+Quentin/M
+Quetzalcoatl/M
+Quezon/M
+Quincy/M
+Quinn/M
+Quintilian/M
+Quinton/M
+Quirinal/M
+Quisling/M
+Quito/M
+Quixote/M
+Quixotism/M
+Qumran/M
+Quonset/M
+R/M
+RAF/M
+RAM/SM
+RBI
+RC
+RCA/M
+RCMP
+RD
+RDA
+REIT
+REM/SM
+RF
+RFC/S
+RFD
+RI
+RIF
+RIP
+RISC
+RN/M
+RNA/M
+ROFL
+ROM/M
+ROTC/M
+RP
+RR
+RSFSR
+RSI
+RSV
+RSVP
+RTFM
+RV/SM
+Ra/M
+Rabat/M
+Rabelais/M
+Rabelaisian/M
+Rabin/M
+Rachael/M
+Rachel/M
+Rachelle/M
+Rachmaninoff/M
+Racine/M
+Radcliffe/M
+Rae/M
+Rafael/M
+Raffles/M
+Ragnarok/M
+Rainier/M
+Raleigh/M
+Ralph/M
+Rama/M
+Ramada/M
+Ramadan/MS
+Ramakrishna/M
+Ramanujan/M
+Ramayana/M
+Rambo/M
+Ramirez/M
+Ramiro/M
+Ramon/M
+Ramona/M
+Ramos/M
+Ramsay/M
+Ramses/M
+Ramsey/M
+Rand/M
+Randal/M
+Randall/M
+Randell/M
+Randi/M
+Randolph/M
+Randy/M
+Rangoon/M
+Rankin/M
+Rankine/M
+Raoul/M
+Raphael/M
+Rappaport/M
+Rapunzel/M
+Raquel/M
+Rasalgethi/M
+Rasalhague/M
+Rasmussen/M
+Rasputin/M
+Rasta
+Rastaban/M
+Rastafarian/MS
+Rastafarianism
+Rather/M
+Ratliff/M
+Raul/M
+Ravel/M
+Rawalpindi/M
+Ray/M
+RayBan/M
+Rayburn/M
+Rayleigh/M
+Raymond/M
+Raymundo/M
+Rb/M
+Rd
+Re/M
+Reading/M
+Reagan/M
+Reaganomics/M
+Realtor/M
+Reasoner/M
+Reba/M
+Rebekah/M
+Recife/M
+Reconstruction/M
+Redeemer/M
+Redford/M
+Redgrave/M
+Redmond/M
+Reebok/M
+Reed/M
+Reese/M
+Reeves/M
+Reformation/MS
+Refugio/M
+Reggie/M
+Regina/M
+Reginae/M
+Reginald/M
+Regor/M
+Regulus/M
+Rehnquist/M
+Reich/M
+Reichstag's
+Reid/M
+Reilly/M
+Reinaldo/M
+Reinhardt/M
+Reinhold/M
+Remarque/M
+Rembrandt/M
+Remington/M
+Remus/M
+Rena/M
+Renaissance/SM
+Renascence
+Renault/M
+Rene/M
+Renee/M
+Reno/M
+Renoir/M
+Rep
+Representative
+Republican/SM
+Republicanism
+Requiem/MS
+Resistance
+Restoration/M
+Resurrection
+Reuben/M
+Reunion/M
+Reuters/M
+Reuther/M
+Rev
+Reva/M
+Revelation/SM
+Revelations/M
+Revere/M
+Reverend/M
+Revlon/M
+Rex/M
+Reyes/M
+Reykjavik/M
+Reyna/M
+Reynaldo/M
+Reynolds/M
+Rf/M
+Rh/M
+Rhea/M
+Rhee/M
+Rheingau/M
+Rhenish/M
+Rhiannon/M
+Rhine/M
+Rhineland/M
+Rhoda/M
+Rhode/S
+Rhodes/M
+Rhodesia/M
+Rhodesian
+Rhonda/M
+Rhone/M
+Ribbentrop/M
+Ricardo/M
+Rice/M
+Rich/M
+Richard/MS
+Richards/M
+Richardson/M
+Richelieu/M
+Richie/M
+Richmond/M
+Richter/M
+Richthofen/M
+Rick/M
+Rickenbacker/M
+Rickey/M
+Rickie/M
+Rickover/M
+Ricky/M
+Rico/M
+Riddle/M
+Ride/M
+Riefenstahl/M
+Riel/M
+Riemann/M
+Riesling/MS
+Riga/M
+Rigel/M
+Riggs/M
+Right
+Rigoberto/M
+Rigoletto/M
+Riley/M
+Rilke/M
+Rimbaud/M
+Ringling/M
+Ringo/M
+Rio/SM
+Rios/M
+Ripley/M
+Risorgimento/M
+Rita/M
+Ritalin/M
+Ritz/M
+Rivas/M
+Rivera/M
+Rivers/M
+Riverside
+Riviera/MS
+Riyadh/M
+Rizal/M
+Rn/M
+Roach/M
+Roanoke/M
+Rob/M
+Robbie/M
+Robbin/MS
+Robbins/M
+Robby/M
+Roberson/M
+Robert/MS
+Roberta/M
+Roberto/M
+Roberts/M
+Robertson/M
+Robeson/M
+Robespierre/M
+Robin/M
+Robinson/M
+Robitussin/M
+Robles/M
+Robson/M
+Robt/M
+Robyn/M
+Rocco/M
+Rocha/M
+Rochambeau/M
+Roche/M
+Rochelle/M
+Rochester/M
+Rock/M
+Rockefeller/M
+Rockford/M
+Rockies/M
+Rockne/M
+Rockwell/M
+Rocky/SM
+Rod/M
+Roddenberry/M
+Roderick/M
+Rodger/MS
+Rodgers/M
+Rodin/M
+Rodney/M
+Rodolfo/M
+Rodrick/M
+Rodrigo/M
+Rodriguez/M
+Rodriquez/M
+Roeg/M
+Roentgen
+Rogelio/M
+Roger/MS
+Rogers/M
+Roget/M
+Rojas/M
+Roku/M
+Rolaids/M
+Roland/M
+Rolando/M
+Rolex/M
+Rolland/M
+Rollerblade/M
+Rollins/M
+Rolodex/M
+Rolvaag/M
+Rom
+Roman/MS
+Romanesque/MS
+Romania/M
+Romanian/MS
+Romano/M
+Romanov/M
+Romans/M
+Romansh/M
+Romanticism
+Romany/SM
+Rome/SM
+Romeo/M
+Romero/M
+Rommel/M
+Romney/M
+Romulus/M
+Ron/M
+Ronald/M
+Ronda/M
+Ronnie/M
+Ronny/M
+Ronstadt/M
+Rontgen
+Rooney/M
+Roosevelt/M
+Root/M
+Roquefort/SM
+Rorschach/M
+Rory/M
+Rosa/M
+Rosales/M
+Rosalie/M
+Rosalind/M
+Rosalinda/M
+Rosalyn/M
+Rosanna/M
+Rosanne/M
+Rosario/M
+Roscoe/M
+Rose/M
+Roseann/M
+Roseau/M
+Rosecrans/M
+Rosella/M
+Rosemarie/M
+Rosemary/M
+Rosenberg/M
+Rosendo/M
+Rosenzweig/M
+Rosetta/M
+Rosicrucian/M
+Rosie/M
+Roslyn/M
+Ross/M
+Rossetti/M
+Rossini/M
+Rostand/M
+Rostov/M
+Rostropovich/M
+Roswell/M
+Rotarian/M
+Roth/M
+Rothko/M
+Rothschild/M
+Rotterdam/M
+Rottweiler/M
+Rouault/M
+Rourke/M
+Rousseau/M
+Rove/RM
+Rover/M
+Rowe/M
+Rowena/M
+Rowland/M
+Rowling/M
+Roxanne/M
+Roxie/M
+Roxy/M
+Roy/M
+Royal/M
+Royce/M
+Rozelle/M
+Rte
+Ru/MH
+Rubaiyat/M
+Rubbermaid/M
+Ruben/SM
+Rubens/M
+Rubicon/MS
+Rubik/M
+Rubin/M
+Rubinstein/M
+Ruby/M
+Ruchbah/M
+Rudolf/M
+Rudolph/M
+Rudy/M
+Rudyard/M
+Rufus/M
+Ruhr/M
+Ruiz/M
+Rukeyser/M
+Rumpelstiltskin/M
+Rumsfeld/M
+Runnymede/M
+Runyon/M
+Rupert/M
+Rush/M
+Rushdie/M
+Rushmore/M
+Ruskin/M
+Russ/M
+Russel/M
+Russell/M
+Russia/M
+Russian/SM
+Russo/M
+Rustbelt/M
+Rusty/M
+Rutan/M
+Rutgers/M
+Ruth/M
+Rutherford/M
+Ruthie/M
+Rutledge/M
+Rwanda/MS
+Rwandan/SM
+Rwy
+Rx
+Ry
+Ryan/M
+Rydberg/M
+Ryder/M
+Ryukyu/M
+S/MN
+SA
+SAC
+SALT/M
+SAM/M
+SAP/M
+SARS/M
+SASE
+SAT
+SBA
+SC/M
+SCSI/M
+SD
+SDI
+SE/M
+SEATO
+SEC/M
+SF
+SGML/M
+SIDS/M
+SJ
+SJW
+SK
+SLR
+SO/S
+SOB/M
+SOP/M
+SOS/M
+SOSes
+SPCA
+SPF
+SQL
+SRO
+SS
+SSA
+SSE/M
+SSS
+SST
+SSW/M
+ST
+STD
+STOL
+SUSE/M
+SUV
+SVN/M
+SW/M
+SWAK
+SWAT
+Saab/M
+Saar/M
+Saarinen/M
+Saatchi/M
+Sabbath/M
+Sabbaths
+Sabik/M
+Sabin/M
+Sabina/M
+Sabine/M
+Sabre/M
+Sabrina/M
+Sacajawea/M
+Sacco/M
+Sachs/M
+Sacramento/M
+Sadat/M
+Saddam/M
+Sadducee/M
+Sade/M
+Sadie/M
+Sadr/M
+Safavid/M
+Safeway/M
+Sagan/M
+Saginaw/M
+Sagittarius/MS
+Sahara/M
+Saharan/M
+Sahel/M
+Saigon/M
+Saiph/M
+Sakai/M
+Sakha/M
+Sakhalin/M
+Sakharov/M
+Saki/M
+Saks/M
+Sal/MY
+Saladin/M
+Salado/M
+Salamis/M
+Salas/M
+Salazar/M
+Salem/M
+Salerno/M
+Salinas/M
+Salinger/M
+Salisbury/M
+Salish/M
+Salk/M
+Sallie/M
+Sallust/M
+Sally/M
+Salome/M
+Salonika/M
+Salton/M
+Salvador/M
+Salvadoran/SM
+Salvadorean/MS
+Salvadorian/MS
+Salvatore/M
+Salween/M
+Salyut/M
+Sam/M
+Samantha/M
+Samar/M
+Samara/M
+Samaritan/MS
+Samarkand/M
+Sammie/M
+Sammy/M
+Samoa/M
+Samoan/SM
+Samoset/M
+Samoyed/M
+Sampson/M
+Samson/M
+Samsonite/M
+Samsung/M
+Samuel/M
+Samuelson/M
+San'a
+San/M
+Sana/M
+Sanchez/M
+Sancho/M
+Sand/ZM
+Sandburg/M
+Sanders/M
+Sandinista/M
+Sandoval/M
+Sandra/M
+Sandy/M
+Sanford/M
+Sanforized/M
+Sang/MR
+Sanger/M
+Sanhedrin/M
+Sanka/M
+Sankara/M
+Sanskrit/M
+Santa/M
+Santana/M
+Santayana/M
+Santeria/M
+Santiago/M
+Santos/M
+Sappho/M
+Sapporo/M
+Sara/M
+Saracen/MS
+Saragossa/M
+Sarah/M
+Sarajevo/M
+Saran/M
+Sarasota/M
+Saratov/M
+Sarawak/M
+Sardinia/M
+Sargasso/M
+Sargent/M
+Sargon/M
+Sarnoff/M
+Saroyan/M
+Sarto/M
+Sartre/M
+Sasha/M
+Sask
+Saskatchewan/M
+Saskatoon/M
+Sasquatch/MS
+Sassanian/M
+Sassoon/M
+Sat/M
+Satan/M
+Satanism/M
+Satanist/M
+Saturday/MS
+Saturn/M
+Saturnalia/M
+Saudi/MS
+Saul/M
+Saunders/M
+Saundra/M
+Saussure/M
+Sauternes
+Savage/M
+Savannah/M
+Savior/M
+Savonarola/M
+Savoy/M
+Savoyard/M
+Sawyer/M
+Saxon/MS
+Saxony/M
+Sayers/M
+Sb/M
+Sc/M
+Scala/M
+Scan
+Scandinavia/M
+Scandinavian/MS
+Scaramouch/M
+Scarborough/M
+Scarlatti/M
+Scheat/M
+Schedar/M
+Scheherazade/M
+Schelling/M
+Schenectady/M
+Schiaparelli/M
+Schick/M
+Schiller/M
+Schindler/M
+Schlesinger/M
+Schliemann/M
+Schlitz/M
+Schmidt/M
+Schnabel/M
+Schnauzer/M
+Schneider/M
+Schoenberg/M
+Schopenhauer/M
+Schrieffer/M
+Schrodinger/M
+Schroeder/M
+Schubert/M
+Schultz/M
+Schulz/M
+Schumann/M
+Schumpeter/M
+Schuyler/M
+Schuylkill/M
+Schwartz/M
+Schwarzenegger/M
+Schwarzkopf/M
+Schweitzer/M
+Schweppes/M
+Schwinger/M
+Schwinn/M
+Scientologist/SM
+Scientology/M
+Scipio/M
+Scopes/M
+Scorpio/SM
+Scorpius/M
+Scorsese/M
+Scot/SM
+Scotch/MS
+Scotchman/M
+Scotchmen/M
+Scotchwoman/M
+Scotchwomen/M
+Scotia/M
+Scotland/M
+Scotsman/M
+Scotsmen/M
+Scotswoman/M
+Scotswomen/M
+Scott/M
+Scottie/SM
+Scottish/M
+Scottsdale/M
+Scrabble/MS
+Scranton/M
+Scriabin/M
+Scribner/M
+Scripture/SM
+Scrooge/M
+Scruggs/M
+Scud/M
+Sculley/M
+Scylla/M
+Scythia/M
+Scythian/M
+Se/MH
+Seaborg/M
+Seagram/M
+Sean/M
+Sears/M
+Seattle/M
+Sebastian/M
+Sec
+Seconal/M
+Secretariat/M
+Secretary
+Seder/MS
+Sedna/M
+Seebeck/M
+Seeger/M
+Sega/M
+Segovia/M
+Segre/M
+Segundo/M
+Seiko/M
+Seine/M
+Seinfeld/M
+Sejong/M
+Selassie/M
+Selectric/M
+Selena/M
+Seleucid/M
+Seleucus/M
+Selim/M
+Seljuk/M
+Selkirk/M
+Sellers/M
+Selma/M
+Selznick/M
+Semarang/M
+Seminole/MS
+Semiramis/M
+Semite/MS
+Semitic/SM
+Semtex/M
+Senate/MS
+Sendai/M
+Seneca/MS
+Senegal/M
+Senegalese/M
+Senghor/M
+Senior/M
+Sennacherib/M
+Sennett/M
+Sensurround/M
+Seoul/M
+Sep
+Sephardi/M
+Sepoy/M
+Sept/M
+September/MS
+Septuagint/MS
+Sequoya/M
+Serb/SM
+Serbia/M
+Serbian/MS
+Serena/M
+Serengeti/M
+Sergei/M
+Sergio/M
+Serpens/M
+Serra/M
+Serrano/M
+Set/M
+Seth/M
+Seton/M
+Seurat/M
+Seuss/M
+Sevastopol/M
+Severn/M
+Severus/M
+Seville/M
+Sevres/M
+Seward/M
+Sextans/M
+Sexton/M
+Seychelles/M
+Seyfert/M
+Seymour/M
+Sgt
+Shackleton/M
+Shaffer/M
+Shah/M
+Shaka/M
+Shaker
+Shakespeare/M
+Shakespearean/M
+Shana/M
+Shane/M
+Shanghai/M
+Shankara/M
+Shanna/M
+Shannon/M
+Shantung/M
+Shapiro/M
+Shari'a/M
+Shari/M
+Sharif/M
+Sharlene/M
+Sharon/M
+Sharp/M
+Sharpe/M
+Sharron/M
+Shasta/M
+Shaula/M
+Shaun/M
+Shauna/M
+Shavian/M
+Shavuot/M
+Shaw/M
+Shawn/M
+Shawna/M
+Shawnee/SM
+Shcharansky/M
+Shea/M
+Sheba/M
+Shebeli/M
+Sheena/M
+Sheetrock/M
+Sheffield/M
+Sheila/M
+Shelby/M
+Sheldon/M
+Shelia/M
+Shell/M
+Shelley/M
+Shelly/M
+Shelton/M
+Shenandoah/M
+Shenyang/M
+Sheol/M
+Shepard/M
+Shepherd/M
+Sheppard/M
+Sheratan/M
+Sheraton/M
+Sheree/M
+Sheri/M
+Sheridan/M
+Sherlock/M
+Sherman/M
+Sherpa/M
+Sherri/M
+Sherrie/M
+Sherry/M
+Sherwood/M
+Sheryl/M
+Shetland/SM
+Shetlands/M
+Shevardnadze/M
+Shevat/M
+Shi'ite/M
+Shields/M
+Shiite/MS
+Shijiazhuang/M
+Shikoku/M
+Shillong/M
+Shiloh/M
+Shinto/MS
+Shintoism/MS
+Shintoist/MS
+Shiraz/M
+Shirley/M
+Shiva/M
+Shockley/M
+Short/M
+Shorthorn/M
+Shoshone/SM
+Shostakovitch/M
+Shrek/M
+Shreveport/M
+Shriner/M
+Shropshire/M
+Shula/M
+Shylock/M
+Shylockian/M
+Si/M
+Siam/M
+Siamese/M
+Sibelius/M
+Siberia/M
+Siberian/MS
+Sibyl/M
+Sicilian/SM
+Sicily/M
+Sid/M
+Siddhartha/M
+Sidney/M
+Siegfried/M
+Siemens/M
+Sierpinski/M
+Sierras
+Sigismund/M
+Sigmund/M
+Sigurd/M
+Sihanouk/M
+Sikh/M
+Sikhism
+Sikhs
+Sikkim/M
+Sikkimese/M
+Sikorsky/M
+Silas/M
+Silesia/M
+Silurian/SM
+Silva/M
+Silvia/M
+Simenon/M
+Simmental/M
+Simmons/M
+Simon/M
+Simone/M
+Simpson/SM
+Simpsons/M
+Sims/M
+Sinai/M
+Sinatra/M
+Sinbad/M
+Sinclair/M
+Sindbad/M
+Sindhi/M
+Singapore/M
+Singaporean/SM
+Singer/M
+Singh/M
+Singleton/M
+Sinhalese/M
+Sinkiang/M
+Sioux/M
+Sir/SM
+Sirius/M
+Sistine/M
+Sisyphean/M
+Sisyphus/M
+Siva/M
+Sivan/M
+Sjaelland/M
+Skinner/M
+Skippy/M
+Skopje/M
+Skye/M
+Skylab/M
+Skype/M
+Slackware/M
+Slashdot/M
+Slater/M
+Slav/SM
+Slavic/M
+Slavonic/M
+Slinky/M
+Sloan/M
+Sloane/M
+Slocum/M
+Slovak/SM
+Slovakia/M
+Slovakian
+Slovene/SM
+Slovenia/M
+Slovenian/MS
+Slurpee/M
+Sm/M
+Small/M
+Smetana/M
+Smirnoff/M
+Smith/M
+Smithson/M
+Smithsonian/M
+Smokey/M
+Smolensk/M
+Smollett/M
+Smuts/M
+Smyrna
+Sn/M
+Snake/M
+Snapple/M
+Snead/M
+Snell/M
+Snickers/M
+Snider/M
+Snoopy/M
+Snow/M
+Snowbelt/M
+Snyder/M
+Soave/M
+Soc
+Socorro/M
+Socrates/M
+Socratic/M
+Soddy/M
+Sodom/M
+Sofia/M
+Soho/M
+Sol/M
+Solis/M
+Solomon/M
+Solon/M
+Solzhenitsyn/M
+Somali/SM
+Somalia/M
+Somalian/MS
+Somme/M
+Somoza/M
+Son/M
+Sondheim/M
+Sondra/M
+Songhai/M
+Songhua/M
+Sonia/M
+Sonja/M
+Sonny/M
+Sonora/M
+Sontag/M
+Sony/M
+Sonya/M
+Sophia/M
+Sophie/M
+Sophoclean/M
+Sophocles/M
+Sopwith/M
+Sorbonne/M
+Sosa/M
+Soto/M
+Souphanouvong/M
+Sourceforge/M
+Sousa/M
+South/M
+Southampton/M
+Southeast/MS
+Southerner/SM
+Southey/M
+Souths
+Southwest/MS
+Soviet/M
+Soweto/M
+Soyinka/M
+Soyuz/M
+Sp
+Spaatz/M
+Spackle/M
+Spahn/M
+Spain/M
+Spam/M
+Span
+Spanglish
+Spaniard/SM
+Spanish/M
+Sparks/M
+Sparta/M
+Spartacus/M
+Spartan/MS
+Spears/M
+Speer/M
+Spence/RM
+Spencer/M
+Spencerian/M
+Spengler/M
+Spenglerian/M
+Spenser/M
+Spenserian/M
+Sperry/M
+Sphinx/M
+Spica/M
+Spielberg/M
+Spillane/M
+Spinoza/M
+Spinx/M
+Spiro/M
+Spirograph/M
+Spitsbergen/M
+Spitz/M
+Spock/M
+Spokane/M
+Springfield/M
+Springsteen/M
+Sprint/M
+Sprite/M
+Sputnik/M
+Sq
+Squanto/M
+Squibb/M
+Sr/M
+Srinagar/M
+Srivijaya/M
+St
+Sta
+Stacey/M
+Staci/M
+Stacie/M
+Stacy/M
+Stael/M
+Stafford/M
+StairMaster/M
+Stalin/M
+Stalingrad/M
+Stalinist/M
+Stallone/M
+Stamford/M
+Stan/M
+Standish/M
+Stanford/M
+Stanislavsky/M
+Stanley/M
+Stanton/M
+Staples/M
+Starbucks/M
+Stark/M
+Starkey/M
+Starr/M
+Staten/M
+States
+Staubach/M
+Ste
+Steadicam/M
+Steele/M
+Stefan/M
+Stefanie/M
+Stein/MR
+Steinbeck/M
+Steinem/M
+Steiner/M
+Steinmetz/M
+Steinway/M
+Stella/M
+Stendhal/M
+Stengel/M
+Stephan/M
+Stephanie/M
+Stephen/MS
+Stephens/M
+Stephenson/M
+Sterling/M
+Stern/M
+Sterne/M
+Sterno/M
+Stetson/M
+Steuben/M
+Steve/M
+Steven/MS
+Stevens/M
+Stevenson/M
+Stevie/M
+Stewart/M
+Stieglitz/M
+Stilton/SM
+Stimson/M
+Stine/M
+Stirling/M
+Stockhausen/M
+Stockholm/M
+Stockton/M
+Stoic/SM
+Stoicism/MS
+Stokes/M
+Stolichnaya/M
+Stolypin/M
+Stone/M
+Stonehenge/M
+Stoppard/M
+Stout/M
+Stowe/M
+Strabo/M
+Stradivari
+Stradivarius/M
+Strasbourg/M
+Strauss/M
+Stravinsky/M
+Streisand/M
+Strickland/M
+Strindberg/M
+Stromboli/M
+Strong/M
+Stu/M
+Stuart/MS
+Studebaker/M
+Stuttgart/M
+Stuyvesant/M
+Stygian/M
+Styrofoam/SM
+Styron/M
+Styx/M
+Suarez/M
+Subaru/M
+Sucre/M
+Sucrets/M
+Sudan/M
+Sudanese/M
+Sudetenland/M
+Sudoku/M
+Sudra/M
+Sue/M
+Suetonius/M
+Suez/M
+Suffolk/M
+Sufi/M
+Sufism/M
+Suharto/M
+Sui/M
+Sukarno/M
+Sukkot
+Sulawesi/M
+Suleiman/M
+Sulla/M
+Sullivan/M
+Sumatra/M
+Sumatran/SM
+Sumeria/M
+Sumerian/SM
+Summer/MS
+Summers/M
+Sumner/M
+Sumter/M
+Sun/SM
+Sunbeam/M
+Sunbelt/M
+Sundanese/M
+Sundas/M
+Sunday/MS
+Sung/M
+Sunkist/M
+Sunni/SM
+Sunnite/MS
+Sunnyvale/M
+Superbowl/M
+Superfund/M
+Superglue/M
+Superior/M
+Superman/M
+Supt
+Surabaya/M
+Surat/M
+Suriname/M
+Surinamese
+Surya/M
+Susan/M
+Susana/M
+Susanna/M
+Susanne/M
+Susie/M
+Susquehanna/M
+Sussex/M
+Sutherland/M
+Sutton/M
+Suva/M
+Suwanee/M
+Suzanne/M
+Suzette/M
+Suzhou/M
+Suzuki/M
+Suzy/M
+Svalbard/M
+Sven/M
+Svengali/M
+Sverdlovsk
+Swahili/SM
+Swammerdam/M
+Swanee/M
+Swansea/M
+Swanson/M
+Swazi/SM
+Swaziland/M
+Swed/N
+Swede/SM
+Sweden/M
+Swedenborg/M
+Swedish/M
+Sweeney/M
+Sweet/M
+Swift/M
+Swinburne/M
+Swiss/MS
+Swissair/M
+Switz
+Switzerland/M
+Sybil/M
+Sydney/M
+Sykes/M
+Sylvester/M
+Sylvia/M
+Sylvie/M
+Synge/M
+Syracuse/M
+Syria/M
+Syriac/M
+Syrian/MS
+Szilard/M
+Szymborska/M
+T'ang/M
+T/MDG
+TA
+TARP
+TB/M
+TBA
+TD
+TDD
+TEFL
+TELNET/S
+TELNETTed
+TELNETTing
+TESL
+TESOL
+TGIF
+THC
+TKO/M
+TLC/M
+TM
+TN
+TNT/M
+TOEFL
+TQM
+TV/SM
+TVA
+TWA/M
+TWX
+TX
+Ta/M
+Tabasco/SM
+Tabatha/M
+Tabernacle/MS
+Tabitha/M
+Tabriz/MS
+Tacitus/M
+Tacoma/M
+Tad/M
+Tadzhik/M
+Taegu/M
+Taejon/M
+Taft/M
+Tagalog/SM
+Tagore/M
+Tagus/M
+Tahiti/M
+Tahitian/MS
+Tahoe/M
+Taichung/M
+Tainan
+Taine/M
+Taipei/M
+Taiping/M
+Taiwan/M
+Taiwanese/M
+Taiyuan/M
+Tajikistan/M
+Taklamakan/M
+Talbot/M
+Taliban/M
+Taliesin/M
+Tallahassee/M
+Tallchief/M
+Talley/M
+Talleyrand/M
+Tallinn/M
+Talmud/MS
+Talmudic
+Talmudist
+Tamara/M
+Tameka/M
+Tamera/M
+Tamerlane/M
+Tami/M
+Tamika/M
+Tamil/MS
+Tammany/M
+Tammi/M
+Tammie/M
+Tammuz/M
+Tammy/M
+Tampa/M
+Tampax/M
+Tamra/M
+Tamworth/M
+Tancred/M
+Taney/M
+Tanganyika/M
+Tangier/MS
+Tangshan/M
+Tania/M
+Tanisha/M
+Tanner/M
+Tannhauser/M
+Tantalus/M
+Tanya/M
+Tanzania/M
+Tanzanian/SM
+Tao/M
+Taoism/MS
+Taoist/MS
+Tara/M
+Tarantino/M
+Tarawa/M
+Tarazed/M
+Tarbell/M
+Target/M
+Tarim/M
+Tarkenton/M
+Tarkington/M
+Tartary/M
+Tartuffe/M
+Tarzan/M
+Tasha/M
+Tashkent/M
+Tasman/M
+Tasmania/M
+Tasmanian/M
+Tass/M
+Tatar/MS
+Tate/M
+Tatum/M
+Taurus/MS
+Tawney/M
+Taylor/M
+Tb/M
+Tbilisi/M
+Tc/M
+Tchaikovsky/M
+Te/M
+TeX
+TeXes
+Teasdale/M
+Technicolor/M
+Tecumseh/M
+Ted/M
+Teddy/M
+Teflon/MS
+Tegucigalpa/M
+Tehran
+TelePrompTer
+TelePrompter/M
+Telemachus/M
+Telemann/M
+Teletype
+Tell/MR
+Teller/M
+Telugu/M
+Tempe
+Templar/M
+Tenn/M
+Tennessean/SM
+Tennessee/M
+Tennyson/M
+Tenochtitlan/M
+Teotihuacan/M
+Terence/M
+Teresa/M
+Tereshkova/M
+Teri/M
+Terkel/M
+Terpsichore/M
+Terr/M
+Terra/M
+Terran/M
+Terrance/M
+Terrell/M
+Terrence/M
+Terri/M
+Terrie/M
+Terry/M
+Tertiary/M
+Tesla/M
+Tess/M
+Tessa/M
+Tessie/M
+Tet/M
+Tethys/M
+Tetons/M
+Teuton/MS
+Teutonic/M
+Tevet/M
+Tex/M
+Texaco/M
+Texan/MS
+Texas/M
+Th/M
+Thackeray/M
+Thad/M
+Thaddeus/M
+Thai/SM
+Thailand/M
+Thales/M
+Thalia/M
+Thames/M
+Thanh/M
+Thanksgiving/MS
+Thant/M
+Thar/M
+Tharp/M
+Thatcher/M
+Thea/M
+Thebes/M
+Theiler/M
+Thelma/M
+Themistocles/M
+Theocritus/M
+Theodora/M
+Theodore/M
+Theodoric/M
+Theodosius/M
+Theosophy/M
+Theravada/M
+Theresa/M
+Therese/M
+Thermopylae/M
+Thermos
+Theron/M
+Theseus/M
+Thespian/M
+Thespis/M
+Thessalonian/SM
+Thessaloniki/M
+Thessaly/M
+Thieu/M
+Thimbu/M
+Thimphu
+Thomas/M
+Thomism/M
+Thomistic/M
+Thompson/M
+Thomson/M
+Thor/M
+Thorazine/M
+Thoreau/M
+Thornton/M
+Thoroughbred/M
+Thorpe/M
+Thoth/M
+Thrace/M
+Thracian/M
+Thu
+Thucydides/M
+Thule/M
+Thunderbird/M
+Thur/S
+Thurber/M
+Thurman/M
+Thurmond/M
+Thursday/SM
+Thutmose/M
+Ti/M
+Tia/M
+Tianjin/M
+Tiber/M
+Tiberius/M
+Tibet/M
+Tibetan/MS
+Ticketmaster/M
+Ticonderoga/M
+Tide/M
+Tienanmen/M
+Tiffany/M
+Tigris/M
+Tijuana/M
+Tillich/M
+Tillman/M
+Tilsit/M
+Tim/M
+Timbuktu/M
+Timex/M
+Timmy/M
+Timon/M
+Timor/M
+Timothy/M
+Timur/M
+Timurid/M
+Tina/M
+Ting/M
+Tinkerbell/M
+Tinkertoy/M
+Tinseltown/M
+Tintoretto/M
+Tippecanoe/M
+Tipperary/M
+Tirane
+Tiresias/M
+Tirol/M
+Tirolean
+Tisha/M
+Tishri/M
+Titan/SM
+Titania/M
+Titanic/M
+Titian/M
+Titicaca/M
+Tito/M
+Titus/M
+Tl/M
+Tlaloc/M
+Tlingit/M
+Tm/M
+Tobago/M
+Tobit/M
+Toby/M
+Tocantins/M
+Tocqueville/M
+Tod/M
+Todd/M
+Togo/M
+Togolese/M
+Tojo/M
+Tokay/M
+Tokugawa/M
+Tokyo/M
+Tokyoite
+Toledo/MS
+Tolkien/M
+Tolstoy/M
+Toltec/M
+Tolyatti/M
+Tom/M
+Tomas/M
+Tombaugh/M
+Tomlin/M
+Tommie/M
+Tommy/M
+Tompkins/M
+Tomsk/M
+Tonga/M
+Tongan/MS
+Toni/M
+Tonia/M
+Tonto/M
+Tony/M
+Tonya/M
+Topeka/M
+Topsy/M
+Torah/M
+Torahs
+Toronto/M
+Torquemada/M
+Torrance/M
+Torrens/M
+Torres/M
+Torricelli/M
+Tortola/M
+Tortuga/M
+Torvalds/M
+Tory/SM
+Tosca/M
+Toscanini/M
+Toshiba/M
+Toto/M
+Toulouse/M
+Townes/M
+Townsend/M
+Toynbee/M
+Toyoda/M
+Toyota/M
+Tracey/M
+Traci/M
+Tracie/M
+Tracy/M
+Trafalgar/M
+Trailways/M
+Trajan/M
+Tran/M
+Transcaucasia/M
+Transvaal/M
+Transylvania/M
+Transylvanian/M
+Trappist/SM
+Travis/M
+Travolta/M
+Treasury/SM
+Treblinka/M
+Trekkie/M
+Trent/M
+Trenton/M
+Trevelyan/M
+Trevino/M
+Trevor/M
+Trey/M
+Triangulum/M
+Triassic/M
+Tricia/M
+Trident/M
+Trieste/M
+Trimurti/M
+Trina/M
+Trinidad/M
+Trinidadian/MS
+Trinity/SM
+Tripitaka/M
+Tripoli/M
+Trippe/M
+Trisha/M
+Tristan/M
+Triton/M
+Trobriand/M
+Troilus/M
+Trojan/MS
+Trollope/M
+Trondheim/M
+Tropicana/M
+Trotsky/M
+Troy/M
+Troyes
+Truckee/M
+Trudeau/M
+Trudy/M
+Truffaut/M
+Trujillo/M
+Truman/M
+Trumbull/M
+Trump/M
+Truth/M
+Tsimshian/M
+Tsiolkovsky/M
+Tsitsihar/M
+Tsongkhapa/M
+Tswana/M
+Tu/M
+Tuamotu/M
+Tuareg/M
+Tubman/M
+Tucker/M
+Tucson/M
+Tucuman/M
+Tudor/SM
+Tue/S
+Tues/M
+Tuesday/MS
+Tulane/M
+Tull/M
+Tulsa/M
+Tulsidas/M
+Tums/M
+Tungus/M
+Tunguska/M
+Tunis/M
+Tunisia/M
+Tunisian/MS
+Tunney/M
+Tupi/M
+Tupperware/M
+Tupungato/M
+Turgenev/M
+Turin/M
+Turing/M
+Turk/SM
+Turkestan/M
+Turkey/M
+Turkic/MS
+Turkish/M
+Turkmenistan/M
+Turner/M
+Turpin/M
+Tuscaloosa/M
+Tuscan/M
+Tuscany/M
+Tuscarora/MS
+Tuscon/M
+Tuskegee/M
+Tussaud/M
+Tut/M
+Tutankhamen/M
+Tutsi/M
+Tutu/M
+Tuvalu/M
+Tuvaluan
+Twain/M
+Tweed/M
+Tweedledee/M
+Tweedledum/M
+Twila/M
+Twinkies/M
+Twitter/M
+Twizzlers/M
+Twp
+Ty/M
+Tycho/M
+Tylenol/M
+Tyler/M
+Tyndale/M
+Tyndall/M
+Tyre/M
+Tyree/M
+Tyrolean
+Tyrone/M
+Tyson/M
+U/M
+UAR
+UAW
+UBS/M
+UCLA/M
+UFO/SM
+UHF/M
+UK/M
+UL
+UN/M
+UNESCO/M
+UNICEF/M
+UNIX/M
+UPC
+UPI/M
+UPS/M
+URL/S
+US/M
+USA/M
+USAF
+USB
+USCG
+USDA/M
+USIA
+USMC
+USN
+USO
+USP
+USPS
+USS
+USSR/M
+UT/M
+UTC
+UV/M
+Ubangi/M
+Ubuntu/M
+Ucayali/M
+Uccello/M
+Udall/M
+Ufa/M
+Uganda/M
+Ugandan/MS
+Uighur/M
+Ujungpandang/M
+Ukraine/M
+Ukrainian/SM
+Ulster/M
+Ultrasuede/M
+Ulyanovsk/M
+Ulysses/M
+Umbriel/M
+Underwood/M
+Ungava/M
+Unicode/M
+Unilever/M
+Union/SM
+Unionist
+Uniroyal/M
+Unitarian/MS
+Unitarianism/MS
+Unitas/M
+Unix/S
+Unukalhai/M
+Upanishads/M
+Updike/M
+Upjohn/M
+Upton/M
+Ur/M
+Ural/SM
+Urals/M
+Urania/M
+Uranus/M
+Urban/M
+Urdu/M
+Urey/M
+Uriah/M
+Uriel/M
+Uris/M
+Urquhart/M
+Ursa/M
+Ursula/M
+Ursuline/M
+Uruguay/M
+Uruguayan/MS
+Urumqi/M
+Usenet/MS
+Ustinov/M
+Ut
+Utah/M
+Utahan/MS
+Ute/SM
+Utopia/SM
+Utopian/SM
+Utrecht/M
+Utrillo/M
+Uzbek/M
+Uzbekistan/M
+Uzi/SM
+V/M
+VA
+VAT/M
+VAX
+VAXes
+VCR/M
+VD/M
+VDT
+VDU
+VF
+VFW/M
+VG
+VGA
+VHF/M
+VHS
+VI/M
+VIP/SM
+VISTA
+VJ
+VLF/M
+VOA
+VP
+VT
+VTOL
+Va/M
+Vader/M
+Vaduz/M
+Val/M
+Valarie/M
+Valdez/M
+Valencia/SM
+Valenti/M
+Valentin/M
+Valentine/M
+Valentino/M
+Valenzuela/M
+Valeria/M
+Valerian/M
+Valerie/M
+Valery/M
+Valhalla/M
+Valium/MS
+Valkyrie/SM
+Vallejo
+Valletta/M
+Valois/M
+Valparaiso/M
+Valvoline/M
+Van/M
+Vance/M
+Vancouver/M
+Vandal/MS
+Vanderbilt/M
+Vandyke/M
+Vanessa/M
+Vang/M
+Vanuatu/M
+Vanzetti/M
+Varanasi/M
+Varese/M
+Vargas/M
+Vaseline/SM
+Vasquez/M
+Vassar/M
+Vatican/M
+Vauban/M
+Vaughan/M
+Vaughn/M
+Vazquez/M
+Veblen/M
+Veda/SM
+Vedanta/M
+Vega/SM
+Vegas/M
+Vegemite/M
+Vela/M
+Velasquez/M
+Velazquez/M
+Velcro/MS
+Velez/M
+Velma/M
+Velveeta/M
+Venetian/SM
+Venezuela/M
+Venezuelan/SM
+Venice/M
+Venn/M
+Ventolin/M
+Venus/MS
+Venusian/M
+Vera/M
+Veracruz/M
+Verde/M
+Verdi/M
+Verdun/M
+Verizon/M
+Verlaine/M
+Vermeer/M
+Vermont/ZMR
+Vermonter/M
+Vern/M
+Verna/M
+Verne/M
+Vernon/M
+Verona/M
+Veronese/M
+Veronica/M
+Versailles/M
+Vesalius/M
+Vespasian/M
+Vespucci/M
+Vesta/M
+Vesuvius/M
+Viacom/M
+Viagra/M
+Vic/M
+Vicente/M
+Vichy/M
+Vicki/M
+Vickie/M
+Vicksburg/M
+Vicky/M
+Victor/M
+Victoria/M
+Victorian/MS
+Victorianism
+Victrola/M
+Vidal/M
+Vienna/M
+Viennese/M
+Vientiane/M
+Vietcong/M
+Vietminh/M
+Vietnam/M
+Vietnamese/M
+Vijayanagar/M
+Vijayawada/M
+Viking/MS
+Vila/M
+Villa/M
+Villarreal/M
+Villon/M
+Vilma/M
+Vilnius/M
+Vilyui/M
+Vince/M
+Vincent/M
+Vindemiatrix/M
+Vinson/M
+Viola/M
+Violet/M
+Virgie/M
+Virgil/M
+Virginia/M
+Virginian/SM
+Virgo/SM
+Visa/M
+Visayans/M
+Vishnu/M
+Visigoth/M
+Visigoths
+Vistula/M
+Vitim/M
+Vito/M
+Vitus/M
+Vivaldi/M
+Vivekananda/M
+Vivian/M
+Vivienne/M
+Vlad/M
+Vladimir/M
+Vladivostok/M
+Vlaminck/M
+Vlasic/M
+VoIP
+Vogue/M
+Volcker/M
+Voldemort/M
+Volga/M
+Volgograd/M
+Volkswagen/M
+Volstead/M
+Volta/M
+Voltaire/M
+Volvo/M
+Vonda/M
+Vonnegut/M
+Voronezh/M
+Vorster/M
+Voyager/M
+Vt
+Vuitton/M
+Vulcan/M
+Vulg
+Vulgate/SM
+W/MDT
+WA
+WAC
+WASP/M
+WATS/M
+WC
+WHO/M
+WI
+WMD
+WNW/M
+WP
+WSW/M
+WTO
+WV
+WW
+WWI
+WWII
+WWW/M
+WY
+WYSIWYG
+Wabash/M
+Wac
+Waco/M
+Wade/M
+Wagner/M
+Wagnerian/M
+Wahhabi/M
+Waikiki/M
+Waite/M
+Wake/M
+Waksman/M
+Wald/MN
+Waldemar/M
+Walden/M
+Waldensian/M
+Waldheim/M
+Waldo/M
+Waldorf/M
+Wales/M
+Walesa/M
+Walgreen/M
+Walker/M
+Walkman/M
+Wall/SMR
+Wallace/M
+Wallenstein/M
+Waller/M
+Wallis/M
+Walloon/M
+Walls/M
+Walmart/M
+Walpole/M
+Walpurgisnacht/M
+Walsh/M
+Walt/MRZ
+Walter/M
+Walters/M
+Walton/M
+Wanamaker/M
+Wanda/M
+Wang/M
+Wankel/M
+Ward/M
+Ware/MG
+Warhol/M
+Waring/M
+Warner/M
+Warren/M
+Warsaw/M
+Warwick/M
+Wasatch/M
+Wash/M
+Washington/M
+Washingtonian/MS
+Wassermann/M
+Waterbury/M
+Waterford/M
+Watergate/M
+Waterloo/MS
+Waters/M
+Watkins/M
+Watson/M
+Watt/SM
+Watteau/M
+Watts/M
+Watusi/M
+Waugh/M
+Wave
+Wayne/M
+Weaver/M
+Web/MR
+Webb/M
+Weber/M
+Webern/M
+Webster/MS
+Wed/M
+Weddell/M
+Wedgwood/M
+Wednesday/MS
+Weeks/M
+Wehrmacht/M
+Wei/M
+Weierstrass/M
+Weill/M
+Weinberg/M
+Weiss/M
+Weissmuller/M
+Weizmann/M
+Weldon/M
+Welland/M
+Weller/M
+Welles/M
+Wellington/SM
+Wells/M
+Welsh/M
+Welshman/M
+Welshmen/M
+Welshwoman
+Wendell/M
+Wendi/M
+Wendy/M
+Wesak/M
+Wesley/M
+Wesleyan/M
+Wessex/M
+Wesson/M
+West/SM
+Western/MRS
+Westinghouse/M
+Westminster/M
+Weston/M
+Westphalia/M
+Weyden/M
+Wezen/M
+Wharton/M
+Wheaties/M
+Wheatstone/M
+Wheeler/M
+Wheeling/M
+Whig/SM
+Whipple/M
+Whirlpool/M
+Whistler/M
+Whitaker/M
+White/SM
+Whitefield/M
+Whitehall/M
+Whitehead/M
+Whitehorse/M
+Whiteley/M
+Whitfield/M
+Whitley/M
+Whitman/M
+Whitney/M
+Whitsunday/MS
+Whittier/M
+WiFi
+Wicca/M
+Wichita/M
+Wiemar/M
+Wiesel/M
+Wiesenthal/M
+Wiggins/M
+Wigner/M
+Wii/M
+Wikileaks
+Wikipedia/M
+Wilberforce/M
+Wilbert/M
+Wilbur/M
+Wilburn/M
+Wilcox/M
+Wilda/M
+Wilde/MR
+Wilder/M
+Wiles/M
+Wiley/M
+Wilford/M
+Wilfred/M
+Wilfredo/M
+Wilhelm/M
+Wilhelmina/M
+Wilkerson/M
+Wilkes/M
+Wilkins/M
+Wilkinson/M
+Will/M
+Willa/M
+Willamette/M
+Willard/M
+Willemstad/M
+William/SM
+Williams/M
+Williamson/M
+Willie/M
+Willis/M
+Willy/M
+Wilma/M
+Wilmer/M
+Wilmington/M
+Wilson/M
+Wilsonian/M
+Wilton/M
+Wimbledon/M
+Wimsey/M
+Winchell/M
+Winchester/MS
+Windbreaker/M
+Windex/M
+Windhoek/M
+Windows/M
+Windsor/SM
+Windward/M
+Winesap/M
+Winfred/M
+Winfrey/M
+Winifred/M
+Winkle/M
+Winnebago/M
+Winnie/M
+Winnipeg/M
+Winston/M
+Winters/M
+Winthrop/M
+Wis
+Wisc
+Wisconsin/M
+Wisconsinite/MS
+Wise/M
+Witt/M
+Wittgenstein/M
+Witwatersrand/M
+Wm/M
+Wobegon/M
+Wodehouse/M
+Wolf/M
+Wolfe/M
+Wolff/M
+Wolfgang/M
+Wollongong/M
+Wollstonecraft/M
+Wolsey/M
+Wolverhampton
+Wonder/M
+Wonderbra/M
+Wong/M
+Wood/SM
+Woodard/M
+Woodhull/M
+Woodrow/M
+Woods/M
+Woodstock/M
+Woodward/M
+Woolf/M
+Woolite/M
+Woolongong/M
+Woolworth/M
+Wooster/M
+Wooten/M
+Worcester/SM
+Worcestershire/M
+Wordsworth/M
+Workman/M
+Worms/M
+Wotan/M
+Wovoka/M
+Wozniak/M
+Wozzeck/M
+Wrangell/M
+Wren/M
+Wright/M
+Wrigley/M
+Wroclaw/M
+Wu/M
+Wuhan/M
+Wurlitzer/M
+Wyatt/M
+Wycherley/M
+Wycliffe/M
+Wyeth/M
+Wylie/M
+Wynn/M
+Wyo
+Wyoming/M
+Wyomingite/SM
+X/M
+XEmacs/M
+XL/M
+XML
+XS
+XXL
+Xanadu/M
+Xanthippe/M
+Xavier/M
+Xe/SM
+Xenakis/M
+Xenia/M
+Xenophon/M
+Xerox/MS
+Xerxes/M
+Xhosa/M
+Xi'an/M
+Xian/SM
+Xiaoping/M
+Ximenes/M
+Xingu/M
+Xiongnu/M
+Xmas/MS
+Xochipilli/M
+Xuzhou/M
+Y/M
+YMCA/M
+YMHA
+YMMV
+YT
+YWCA/M
+YWHA
+Yacc/M
+Yahoo/M
+Yahtzee/M
+Yahweh/M
+Yakima/M
+Yakut/M
+Yakutsk/M
+Yale/M
+Yalow/M
+Yalta/M
+Yalu/M
+Yamagata/M
+Yamaha/M
+Yamoussoukro/M
+Yang/M
+Yangon/M
+Yangtze/M
+Yank/SM
+Yankee/SM
+Yaobang/M
+Yaounde/M
+Yaqui/M
+Yaren
+Yaroslavl/M
+Yataro/M
+Yates/M
+Yb/M
+Yeager/M
+Yeats/M
+Yekaterinburg/M
+Yellowknife/M
+Yellowstone/M
+Yeltsin/M
+Yemen/M
+Yemeni/SM
+Yemenite
+Yenisei/M
+Yerevan/M
+Yerkes/M
+Yesenia/M
+Yevtushenko/M
+Yggdrasil/M
+Yiddish/M
+Ymir/M
+Yoda/M
+Yoknapatawpha/M
+Yoko/M
+Yokohama/M
+Yolanda/M
+Yong/M
+Yonkers/M
+York/M
+Yorkie/M
+Yorkshire/MS
+Yorktown/M
+Yoruba/M
+Yosemite/M
+Yossarian/M
+YouTube/M
+Young/M
+Youngstown/M
+Ypres/M
+Ypsilanti/M
+Yuan/M
+Yucatan/M
+Yugo/M
+Yugoslav/MS
+Yugoslavia/M
+Yugoslavian/SM
+Yukon/M
+Yule/SM
+Yuletide/MS
+Yuma/SM
+Yunnan/M
+Yuri/M
+Yves/M
+Yvette/M
+Yvonne/M
+Z/SMNXT
+Zachariah/M
+Zachary/M
+Zachery/M
+Zagreb/M
+Zaire/M
+Zairian
+Zambezi/M
+Zambia/M
+Zambian/SM
+Zamboni/M
+Zamenhof/M
+Zamora/M
+Zane/M
+Zanuck/M
+Zanzibar/M
+Zapata/M
+Zaporozhye/M
+Zapotec/M
+Zappa/M
+Zara/M
+Zarathustra/M
+Zealand/M
+Zebedee/M
+Zechariah/M
+Zedekiah/M
+Zedong/M
+Zeffirelli/M
+Zeke/M
+Zelig/M
+Zelma/M
+Zen/M
+Zenger/M
+Zeno/M
+Zephaniah/M
+Zephyrus/M
+Zest/M
+Zeus/M
+Zhdanov
+Zhengzhou/M
+Zhivago/M
+Zhukov/M
+Zibo/M
+Ziegfeld/M
+Ziegler/M
+Ziggy/M
+Zika
+Zimbabwe/M
+Zimbabwean/SM
+Zimmerman/M
+Zinfandel/M
+Zion/SM
+Zionism/SM
+Zionist/SM
+Ziploc/M
+Zn/M
+Zoe/M
+Zola/M
+Zollverein/M
+Zoloft/M
+Zomba/M
+Zorn/M
+Zoroaster/M
+Zoroastrian/MS
+Zoroastrianism/SM
+Zorro/M
+Zosma/M
+Zr/M
+Zsigmondy/M
+Zubenelgenubi/M
+Zubeneschamali/M
+Zukor/M
+Zulu/SM
+Zululand
+Zuni/M
+Zurich/M
+Zwingli/M
+Zworykin/M
+Zyrtec/M
+Zyuganov/M
+Zzz
+a/S
+aah
+aardvark/SM
+ab/SDY
+aback
+abacus/MS
+abaft
+abalone/SM
+abandon/LSDG
+abandonment/M
+abase/LGDS
+abasement/M
+abash/GLDS
+abashed/UY
+abashment/M
+abate/LGDS
+abated/U
+abatement/M
+abattoir/MS
+abbe/SM
+abbess/MS
+abbey/MS
+abbot/MS
+abbr
+abbrev/S
+abbreviate/DSGNX
+abbreviation/M
+abdicate/GNDSX
+abdication/M
+abdomen/SM
+abdominal
+abduct/DSG
+abductee/MS
+abduction/SM
+abductor/MS
+abeam
+aberrant
+aberration/MS
+aberrational
+abet/S
+abetted
+abetting
+abettor/SM
+abeyance/M
+abhor/S
+abhorred
+abhorrence/M
+abhorrent/Y
+abhorring
+abidance/M
+abide/GS
+abiding/Y
+ability/IEMS
+abject/YP
+abjection/M
+abjectness/M
+abjuration/SM
+abjuratory
+abjure/ZGDRS
+abjurer/M
+ablate/XGNVDS
+ablation/M
+ablative/MS
+ablaze
+able/UT
+abler
+abloom
+ablution/SM
+abnegate/GNDS
+abnegation/M
+abnormal/Y
+abnormality/SM
+aboard
+abode/MS
+abolish/GDS
+abolition/M
+abolitionism/M
+abolitionist/SM
+abominable
+abominably
+abominate/DSGNX
+abomination/M
+aboriginal/MS
+aborigine/SM
+aborning
+abort/GVDS
+abortion/MS
+abortionist/MS
+abortive/Y
+abound/DSG
+about
+above/M
+aboveboard
+abracadabra/M
+abrade/GDS
+abrasion/MS
+abrasive/MYPS
+abrasiveness/M
+abreast
+abridge/DSG
+abridgment/MS
+abroad
+abrogate/XGNDS
+abrogation/M
+abrogator/MS
+abrupt/TPRY
+abruptness/M
+abs/M
+abscess/MDSG
+abscissa/SM
+abscission/M
+abscond/ZGSDR
+absconder/M
+abseil/MDSG
+absence/SM
+absent/DYSG
+absentee/MS
+absenteeism/M
+absentminded/YP
+absentmindedness/M
+absinthe/M
+absolute/PMYTNS
+absoluteness/M
+absolution/M
+absolutism/M
+absolutist/MS
+absolve/DSG
+absorb/AGDS
+absorbance
+absorbency/M
+absorbent/SM
+absorbing/Y
+absorption/M
+absorptive
+abstain/DRZGS
+abstainer/M
+abstemious/PY
+abstemiousness/M
+abstention/MS
+abstinence/M
+abstinent
+abstract/GSPMDY
+abstracted/YP
+abstractedness/M
+abstraction/SM
+abstractness/MS
+abstruse/YP
+abstruseness/M
+absurd/TPRY
+absurdist/MS
+absurdity/SM
+absurdness/M
+abundance/SM
+abundant/Y
+abuse's
+abuse/EGVDS
+abuser/MS
+abusive/YP
+abusiveness/M
+abut/SL
+abutment/MS
+abutted
+abutting
+abuzz
+abysmal/Y
+abyss/MS
+abyssal
+ac
+acacia/MS
+academe/M
+academia/M
+academic/SM
+academical/Y
+academician/MS
+academy/SM
+acanthus/MS
+accede/GDS
+accelerate/GNXDS
+acceleration/M
+accelerator/SM
+accent/MDSG
+accented/U
+accentual
+accentuate/GNDS
+accentuation/M
+accept/DSBG
+acceptability/M
+acceptableness/M
+acceptably/U
+acceptance/SM
+acceptation/MS
+accepted/U
+access/MDSG
+accessibility/IM
+accessible/I
+accessibly/I
+accession/MDGS
+accessorize/DSG
+accessory/SM
+accident/MS
+accidental/SMY
+acclaim/MDGS
+acclamation/M
+acclimate/DSGN
+acclimation/M
+acclimatization/M
+acclimatize/DSG
+acclivity/SM
+accolade/SM
+accommodate/XGNDS
+accommodating/Y
+accommodation/M
+accompanied/U
+accompaniment/MS
+accompanist/SM
+accompany/DSG
+accomplice/SM
+accomplish/DSLG
+accomplished/U
+accomplishment/MS
+accord/GMDS
+accordance/M
+accordant
+according/Y
+accordion/MS
+accordionist/MS
+accost/GMDS
+account/MDSBG
+accountability/M
+accountable/U
+accountancy/M
+accountant/MS
+accounted/U
+accounting/M
+accouter/SGD
+accouterments/M
+accredit/SGD
+accreditation/M
+accredited/U
+accretion/MS
+accrual/MS
+accrue/GDS
+acct
+acculturate/DSGN
+acculturation/M
+accumulate/XGNVDS
+accumulation/M
+accumulator/MS
+accuracy/IM
+accurate/IY
+accurateness/M
+accursed/P
+accursedness/M
+accusation/MS
+accusative/MS
+accusatory
+accuse/ZGDRS
+accuser/M
+accusing/Y
+accustom/DSG
+accustomed/U
+ace/DSMG
+acerbate/DSG
+acerbic
+acerbically
+acerbity/M
+acetaminophen/M
+acetate/MS
+acetic
+acetone/M
+acetonic
+acetyl
+acetylene/M
+ache/DSMG
+achene/MS
+achieve/BLZGDRS
+achievement/SM
+achiever/M
+aching/Y
+achoo/M
+achromatic
+achy/TR
+acid/SMY
+acidic
+acidify/GDS
+acidity/M
+acidosis/M
+acidulous
+acknowledge/DSG
+acknowledged/U
+acknowledgment/SM
+acme/SM
+acne/M
+acolyte/MS
+aconite/MS
+acorn/MS
+acoustic/S
+acoustical/Y
+acoustics/M
+acquaint/AGSD
+acquaintance/SM
+acquaintanceship/M
+acquainted/U
+acquiesce/DSG
+acquiescence/M
+acquiescent/Y
+acquire/ZGBDRSL
+acquirement/M
+acquisition/MS
+acquisitive/YP
+acquisitiveness/M
+acquit/S
+acquittal/MS
+acquitted
+acquitting
+acre/SM
+acreage/MS
+acrid/PTRY
+acridity/M
+acridness/M
+acrimonious/YP
+acrimoniousness/M
+acrimony/M
+acrobat/MS
+acrobatic/S
+acrobatically
+acrobatics/M
+acronym/MS
+acrophobia/M
+acropolis/MS
+across
+acrostic/SM
+acrylamide
+acrylic/MS
+act's
+act/ASDGV
+acting/M
+actinium/M
+action/ASM
+actionable
+activate/ICANGSD
+activation/ICAM
+activator/MS
+active's
+active/IKY
+activeness/M
+actives
+activism/M
+activist/MS
+activities
+activity/IM
+actor/AMS
+actress/MS
+actual/Y
+actuality/SM
+actualization/M
+actualize/GDS
+actuarial
+actuary/SM
+actuate/GNDS
+actuation/M
+actuator/SM
+acuity/M
+acumen/M
+acupressure/M
+acupuncture/M
+acupuncturist/SM
+acute/PMYTRS
+acuteness/M
+acyclovir/M
+acyl
+ad/SM
+adage/MS
+adagio/MS
+adamant/MY
+adapt/BZGVDRS
+adaptability/M
+adaptation/MS
+adapter/M
+adaption/S
+add/SDRBZG
+addend/MS
+addenda
+addendum/M
+adder/M
+addict/GVMDS
+addiction/SM
+addition/SM
+additional/Y
+additive/SM
+addle/GDS
+address's
+address/AGDS
+addressable
+addressed/U
+addressee/SM
+adduce/GDS
+adenine/M
+adenocarcinoma
+adenoid/SM
+adenoidal
+adept/MYPS
+adeptness/M
+adequacy/IM
+adequate/IY
+adequateness/M
+adhere/GDS
+adherence/M
+adherent/SM
+adhesion/M
+adhesive/PSM
+adhesiveness/M
+adiabatic
+adieu/MS
+adios
+adipose
+adj
+adjacency/M
+adjacent/Y
+adjectival/Y
+adjective/MS
+adjoin/GDS
+adjourn/DGLS
+adjournment/SM
+adjudge/GDS
+adjudicate/GNVXDS
+adjudication/M
+adjudicator/SM
+adjudicatory
+adjunct/MS
+adjuration/MS
+adjure/GDS
+adjust/AGDSL
+adjustable
+adjuster/SM
+adjustment/AMS
+adjutant/SM
+adman/M
+admen
+admin/S
+administer/DGS
+administrate/XDSGNV
+administration/M
+administrative/Y
+administrator/MS
+admirably
+admiral/MS
+admiralty/M
+admiration/M
+admire/BZGDRS
+admirer/M
+admiring/Y
+admissibility/IM
+admissible/I
+admissibly
+admission/AM
+admissions
+admit/AS
+admittance/M
+admitted/Y
+admitting/A
+admix/GDS
+admixture/SM
+admonish/LDSG
+admonishment/MS
+admonition/MS
+admonitory
+ado/M
+adobe/MS
+adolescence/SM
+adolescent/SM
+adopt/AGVDS
+adoptable
+adopter/MS
+adoption/SM
+adorableness/M
+adorably
+adoration/M
+adore/BZGDRS
+adorer/M
+adoring/Y
+adorn/LGDS
+adorned/U
+adornment/MS
+adrenal/MS
+adrenalin's
+adrenaline/M
+adrenergic
+adrift
+adroit/PY
+adroitness/M
+adsorb/SDG
+adsorbent/MS
+adsorption/SM
+adulate/DSGN
+adulation/M
+adulator/MS
+adulatory
+adult/MS
+adulterant/MS
+adulterate/GNDS
+adulterated/U
+adulteration/M
+adulterer/SM
+adulteress/MS
+adulterous
+adultery/SM
+adulthood/M
+adumbrate/GNDS
+adumbration/M
+adv
+advance/LDSMG
+advancement/SM
+advantage/EDSMG
+advantageous/EY
+advent/SM
+adventitious/Y
+adventure/DRSMZG
+adventurer/M
+adventuresome
+adventuress/MS
+adventurism
+adventurist/S
+adventurous/YP
+adventurousness/M
+adverb/SM
+adverbial/SMY
+adversarial
+adversary/SM
+adverse/PRYT
+adverseness/M
+adversity/SM
+advert/SMDG
+advertise/LZGDRS
+advertised/U
+advertisement/MS
+advertiser/M
+advertising/M
+advertorial/SM
+advice/M
+advisability/IM
+advisable/I
+advisably
+advise/LDRSZGB
+advised/UY
+advisement/M
+adviser/M
+advisory/SM
+advocacy/M
+advocate/MGDS
+advt
+adware
+adze/SM
+aegis/M
+aerate/DSGN
+aeration/M
+aerator/SM
+aerial/SMY
+aerialist/MS
+aerie/MS
+aerobatic/S
+aerobatics/M
+aerobic/S
+aerobically
+aerobics/M
+aerodrome/MS
+aerodynamic/S
+aerodynamically
+aerodynamics/M
+aerogram/S
+aeronautic/S
+aeronautical
+aeronautics/M
+aerosol/MS
+aerospace/M
+aesthete/MS
+aesthetic/S
+aesthetically
+aestheticism/M
+aesthetics/M
+afar
+affability/M
+affable
+affably
+affair/MS
+affect's
+affect/EGDS
+affectation/SM
+affected/UY
+affecting/Y
+affection/EM
+affectionate/Y
+affections
+afferent
+affiance/GDS
+affidavit/SM
+affiliate's
+affiliate/EGNDS
+affiliated/U
+affiliation/EM
+affiliations
+affinity/SM
+affirm/AGDS
+affirmation/AMS
+affirmative/MYS
+affix/GMDS
+afflatus/M
+afflict/GDS
+affliction/SM
+affluence/M
+affluent/Y
+afford/GDSB
+affordability
+affordably
+afforest/EGSD
+afforestation/M
+affray/MS
+affront/GMDS
+afghan/MS
+aficionado/MS
+afield
+afire
+aflame
+afloat
+aflutter
+afoot
+aforementioned
+aforesaid
+aforethought
+afoul
+afraid/U
+afresh
+aft/RZ
+afterbirth/M
+afterbirths
+afterburner/MS
+aftercare/M
+aftereffect/MS
+afterglow/SM
+afterimage/MS
+afterlife/M
+afterlives
+aftermarket/MS
+aftermath/M
+aftermaths
+afternoon/MS
+aftershave/SM
+aftershock/SM
+aftertaste/SM
+afterthought/SM
+afterward/S
+afterword/MS
+again
+against
+agape/M
+agar/M
+agate/MS
+agave/M
+age/DSMGJ
+ageism/M
+ageist/SM
+ageless/YP
+agelessness/M
+agency/SM
+agenda/SM
+agent/AMS
+ageratum/M
+agglomerate/DSMGNX
+agglomeration/M
+agglutinate/DSXGN
+agglutination/M
+aggrandize/GLDS
+aggrandizement/M
+aggravate/GNXDS
+aggravating/Y
+aggravation/M
+aggregate/MGNDSX
+aggregation/M
+aggression/M
+aggressive/PY
+aggressiveness/M
+aggressor/SM
+aggrieve/DSG
+aggro
+aghast
+agile/Y
+agility/M
+aging/M
+agitate/XGNDS
+agitation/M
+agitator/MS
+agitprop/M
+agleam
+aglitter
+aglow
+agnostic/MS
+agnosticism/M
+ago
+agog
+agonist/S
+agonize/GDS
+agonizing/Y
+agony/SM
+agoraphobia/M
+agoraphobic/MS
+agrarian/MS
+agrarianism/M
+agree/EBLDS
+agreeableness/EM
+agreeably/E
+agreeing/E
+agreement/ESM
+agribusiness/MS
+agricultural/Y
+agriculturalist/MS
+agriculture/M
+agriculturist/MS
+agronomic
+agronomist/MS
+agronomy/M
+aground
+ague/M
+ah
+aha
+ahchoo
+ahead
+ahem
+ahoy
+aid/SMDG
+aide/SM
+aided/U
+aigrette/MS
+ail/SDLG
+aileron/SM
+ailment/SM
+aim/SMDG
+aimless/YP
+aimlessness/M
+ain't
+air/SMDJG
+airbag/MS
+airbase/SM
+airbed/S
+airborne
+airbrush/MDSG
+airbus/MS
+aircraft/M
+aircraftman
+aircraftmen
+aircrew/S
+airdrome/S
+airdrop/SM
+airdropped
+airdropping
+airfare/SM
+airfield/SM
+airflow/M
+airfoil/SM
+airfreight/M
+airguns
+airhead/SM
+airily
+airiness/M
+airing/M
+airless/P
+airlessness/M
+airletters
+airlift/SGMD
+airline/RSMZ
+airliner/M
+airlock/SM
+airmail/GSMD
+airman/M
+airmen
+airplane/MS
+airplay/M
+airport/SM
+airship/SM
+airshow/S
+airsick/P
+airsickness/M
+airspace/M
+airspeed
+airstrike/MS
+airstrip/SM
+airtight
+airtime/M
+airwaves/M
+airway/MS
+airwoman
+airwomen
+airworthiness/M
+airworthy/P
+airy/PTR
+aisle/MS
+aitch/MS
+ajar
+aka
+akimbo
+akin
+alabaster/M
+alack
+alacrity/M
+alarm/GMDS
+alarming/Y
+alarmist/SM
+alas
+alb/SM
+albacore/SM
+albatross/MS
+albeit
+albinism/M
+albino/MS
+album/MNS
+albumen/M
+albumin/M
+albuminous
+alchemist/SM
+alchemy/M
+alcohol/SM
+alcoholic/MS
+alcoholically
+alcoholism/M
+alcove/MS
+alder/MS
+alderman/M
+aldermen
+alderwoman/M
+alderwomen
+ale/SMV
+aleatory
+alehouse/SM
+alembic/SM
+alert/GMDYPS
+alertness/M
+alewife/M
+alewives
+alfalfa/M
+alfresco
+alga/M
+algae
+algal
+algebra/SM
+algebraic
+algebraically
+algorithm/SM
+algorithmic
+alias/GMDS
+alibi/GMDS
+alien/BGMDS
+alienable/IU
+alienate/DSGN
+alienation/M
+alienist/SM
+alight/GDS
+align/ALGDS
+aligned/U
+aligner/MS
+alignment/AMS
+alike/U
+aliment/MDSG
+alimentary
+alimony/M
+aliveness/M
+aliyah/M
+aliyahs
+alkali/M
+alkalies
+alkaline
+alkalinity/M
+alkalize/DSG
+alkaloid/SM
+alkyd/MS
+all/M
+allay/GDS
+allegation/MS
+allege/GDS
+alleged/Y
+allegiance/MS
+allegoric
+allegorical/Y
+allegorist/MS
+allegory/SM
+allegretto/MS
+allegro/MS
+allele/MS
+alleluia/SM
+allergen/SM
+allergenic
+allergic
+allergically
+allergist/SM
+allergy/SM
+alleviate/DSGN
+alleviation/M
+alley/MS
+alleyway/SM
+alliance/SM
+alligator/MS
+alliterate/DSXGNV
+alliteration/M
+alliterative/Y
+allocate/ADSGN
+allocation/AM
+allocations
+allot/LS
+allotment/SM
+allotted
+allotting
+allover
+allow/EGDS
+allowable/U
+allowably
+allowance/SM
+alloy/GMDS
+alloyed/U
+allspice/M
+allude/GDS
+allure/MGLDS
+allurement/MS
+alluring/Y
+allusion/SM
+allusive/PY
+allusiveness/M
+alluvial/M
+alluvium/SM
+ally/GDSM
+almanac/SM
+almighty
+almond/MS
+almoner/SM
+almost
+alms/M
+almshouse/MS
+aloe/SM
+aloft
+aloha/MS
+alone
+along
+alongshore
+alongside
+aloof/PY
+aloofness/M
+aloud
+alp/SM
+alpaca/MS
+alpha/MS
+alphabet/SM
+alphabetic
+alphabetical/Y
+alphabetization/SM
+alphabetize/ZGDRS
+alphabetizer/M
+alphanumeric
+alphanumerical/Y
+alpine/S
+already
+alright
+also
+alt/S
+altar/MS
+altarpiece/SM
+alter/GDBS
+alterable/U
+alteration/MS
+altercation/SM
+altered/U
+alternate/DSMYGNVX
+alternation/M
+alternative/MYS
+alternator/SM
+although
+altimeter/MS
+altitude/MS
+alto/SM
+altogether
+altruism/M
+altruist/SM
+altruistic
+altruistically
+alum/SM
+alumina/M
+aluminum/M
+alumna/M
+alumnae
+alumni
+alumnus/M
+alveolar/S
+always
+am/N
+amalgam/SM
+amalgamate/XGNDS
+amalgamation/M
+amanuenses
+amanuensis/M
+amaranth/M
+amaranths
+amaretto/M
+amaryllis/MS
+amass/GDS
+amateur/SM
+amateurish/YP
+amateurishness/M
+amateurism/M
+amatory
+amaze/LMGDS
+amazement/M
+amazing/Y
+amazon/MS
+amazonian
+ambassador/SM
+ambassadorial
+ambassadorship/MS
+ambassadress/MS
+amber/M
+ambergris/M
+ambiance/MS
+ambidexterity/M
+ambidextrous/Y
+ambient
+ambiguity/SM
+ambiguous/UY
+ambit
+ambition/MS
+ambitious/YP
+ambitiousness/M
+ambivalence/M
+ambivalent/Y
+amble/MZGDRS
+ambler/M
+ambrosia/M
+ambrosial
+ambulance/MS
+ambulanceman
+ambulancemen
+ambulancewoman
+ambulancewomen
+ambulant
+ambulate/DSXGN
+ambulation/M
+ambulatory/SM
+ambuscade/MGDS
+ambush/GMDS
+ameliorate/GNVDS
+amelioration/M
+amen/B
+amenability/M
+amenably
+amend/BLGDS
+amendment/SM
+amenity/SM
+amerce/GLDS
+amercement/SM
+americium/M
+amethyst/SM
+amiability/M
+amiable
+amiably
+amicability/M
+amicable
+amicably
+amid
+amide/MS
+amidship/S
+amigo/MS
+amino
+amiss
+amity/M
+ammeter/SM
+ammo/M
+ammonia/M
+ammonium
+ammunition/M
+amnesia/M
+amnesiac/MS
+amnesic/SM
+amnesty/GDSM
+amniocenteses
+amniocentesis/M
+amnion/MS
+amniotic
+amoeba/MS
+amoebae
+amoebic
+amok
+among
+amontillado/SM
+amoral/Y
+amorality/M
+amorous/YP
+amorousness/M
+amorphous/PY
+amorphousness/M
+amortization/SM
+amortize/DSGB
+amount/GMDS
+amour/MS
+amoxicillin
+amp/SMY
+amperage/M
+ampere/MS
+ampersand/MS
+amphetamine/SM
+amphibian/MS
+amphibious/Y
+amphitheater/SM
+amphora/M
+amphorae
+ampicillin
+ample/TR
+amplification/M
+amplifier/M
+amplify/NDRSXZG
+amplitude/SM
+ampule/MS
+amputate/GNDSX
+amputation/M
+amputee/MS
+amt
+amulet/MS
+amuse/LGDS
+amusement/MS
+amusing/Y
+amylase/M
+an/CS
+anabolism/M
+anachronism/SM
+anachronistic
+anachronistically
+anaconda/SM
+anaerobe/SM
+anaerobic
+anaerobically
+anagram/MS
+anal/Y
+analgesia/M
+analgesic/SM
+analog/MS
+analogical/Y
+analogize/GDS
+analogous/YP
+analogousness/M
+analogue/SM
+analogy/SM
+analysand/MS
+analyses/A
+analysis/AM
+analyst/SM
+analytic
+analytical/Y
+analyzable
+analyze/ADSG
+analyzer/SM
+anapest/SM
+anapestic/MS
+anarchic
+anarchically
+anarchism/M
+anarchist/MS
+anarchistic
+anarchy/M
+anathema/SM
+anathematize/DSG
+anatomic
+anatomical/Y
+anatomist/SM
+anatomize/DSG
+anatomy/SM
+ancestor/SM
+ancestral/Y
+ancestress/MS
+ancestry/SM
+anchor/MDGS
+anchorage/MS
+anchorite/MS
+anchorman/M
+anchormen
+anchorpeople
+anchorperson/SM
+anchorwoman/M
+anchorwomen
+anchovy/SM
+ancient/SPMRYT
+ancientness/M
+ancillary/SM
+and
+andante/SM
+andiron/SM
+androgen/M
+androgenic
+androgynous
+androgyny/M
+android/SM
+anecdotal/Y
+anecdote/MS
+anemia/M
+anemic
+anemically
+anemometer/SM
+anemone/SM
+anent
+anesthesia/M
+anesthesiologist/SM
+anesthesiology/M
+anesthetic/SM
+anesthetist/MS
+anesthetization/SM
+anesthetize/GDS
+aneurysm/SM
+anew
+angel/MS
+angelfish/MS
+angelic
+angelica/M
+angelical/Y
+anger/GMDS
+angina/M
+angioplasty/SM
+angiosperm/SM
+angle/MZGDRS
+angler/M
+angleworm/MS
+anglicism/S
+anglicize/GDS
+angling/M
+anglophile/S
+anglophone/S
+angora/MS
+angostura
+angrily
+angry/TR
+angst/M
+angstrom/MS
+anguish/GMDS
+angular
+angularity/SM
+angulation
+anhydrous
+aniline/M
+animadversion/MS
+animadvert/GSD
+animal/MS
+animalcule/SM
+animate/ADSGN
+animated/Y
+animation/AM
+animations
+animator/MS
+anime/M
+animism/M
+animist/SM
+animistic
+animosity/SM
+animus/M
+anion/MS
+anionic
+anise/M
+aniseed/M
+anisette/M
+ankh/M
+ankhs
+ankle/MS
+anklebone/MS
+anklet/MS
+annalist/SM
+annals/M
+anneal/GDS
+annelid/MS
+annex/GMDS
+annexation/MS
+annihilate/DSGN
+annihilation/M
+annihilator/SM
+anniversary/SM
+annotate/DSXGNV
+annotation/M
+annotator/MS
+announce/DRSLZG
+announced/U
+announcement/MS
+announcer/M
+annoy/GDS
+annoyance/MS
+annoying/Y
+annual/MYS
+annualized
+annuitant/SM
+annuity/SM
+annul/LS
+annular
+annulled
+annulling
+annulment/SM
+annunciation/SM
+anode/MS
+anodize/GDS
+anodyne/MS
+anoint/GDLS
+anointment/M
+anomalous/Y
+anomaly/SM
+anon/S
+anonymity/M
+anonymous/Y
+anopheles/M
+anorak/MS
+anorectic/SM
+anorexia/M
+anorexic/MS
+another
+answer/BMDGS
+answerable/U
+answered/U
+answerphone/S
+ant/SMD
+antacid/SM
+antagonism/SM
+antagonist/SM
+antagonistic
+antagonistically
+antagonize/DSG
+antarctic
+ante/SM
+anteater/MS
+antebellum
+antecedence/M
+antecedent/SM
+antechamber/SM
+antedate/GDS
+antediluvian
+anteing
+antelope/MS
+antenatal
+antenna/SM
+antennae
+anterior
+anteroom/MS
+anthem/MS
+anther/MS
+anthill/SM
+anthologist/SM
+anthologize/DSG
+anthology/SM
+anthracite/M
+anthrax/M
+anthropocentric
+anthropoid/MS
+anthropological/Y
+anthropologist/SM
+anthropology/M
+anthropomorphic
+anthropomorphically
+anthropomorphism/M
+anthropomorphize
+anthropomorphous
+anti/SM
+antiabortion
+antiabortionist/MS
+antiaircraft
+antibacterial/MS
+antibiotic/MS
+antibody/SM
+antic/MS
+anticancer
+anticipate/GNXDS
+anticipated/U
+anticipation/M
+anticipatory
+anticked
+anticking
+anticlerical
+anticlimactic
+anticlimactically
+anticlimax/MS
+anticline/SM
+anticlockwise
+anticoagulant/MS
+anticommunism/M
+anticommunist/SM
+anticyclone/SM
+anticyclonic
+antidemocratic
+antidepressant/MS
+antidote/MS
+antifascist/MS
+antifreeze/M
+antigen/SM
+antigenic
+antigenicity/M
+antihero/M
+antiheroes
+antihistamine/SM
+antiknock/M
+antilabor
+antilogarithm/SM
+antimacassar/MS
+antimalarial
+antimatter/M
+antimicrobial
+antimissile
+antimony/M
+antinuclear
+antioxidant/MS
+antiparticle/SM
+antipasti
+antipasto/MS
+antipathetic
+antipathy/SM
+antipersonnel
+antiperspirant/SM
+antiphon/SM
+antiphonal/MYS
+antipodal/S
+antipodean/MS
+antipodes/M
+antipollution
+antipoverty
+antiquarian/SM
+antiquarianism/M
+antiquary/SM
+antiquate/GDS
+antique/DSMG
+antiquity/SM
+antirrhinum/S
+antiscience
+antisemitic
+antisemitism/M
+antisepsis/M
+antiseptic/SM
+antiseptically
+antiserum/MS
+antislavery
+antisocial/Y
+antispasmodic/MS
+antisubmarine
+antitank
+antitheses
+antithesis/M
+antithetic
+antithetical/Y
+antitoxin/MS
+antitrust
+antivenin/MS
+antivenom
+antiviral/MS
+antivirus
+antivivisectionist/MS
+antiwar
+antler/MDS
+antonym/SM
+antonymous
+antrum
+antsy/TR
+anus/MS
+anvil/MS
+anxiety/SM
+anxious/YP
+anxiousness/M
+any
+anybody/SM
+anyhow
+anymore
+anyone/M
+anyplace
+anything/SM
+anytime
+anyway/S
+anywhere
+anywise
+aorta/MS
+aortic
+apace
+apart
+apartheid/M
+apartment/MS
+apathetic
+apathetically
+apathy/M
+apatite/M
+ape/DSMG
+apelike
+aperitif/MS
+aperture/SM
+apex/MS
+aphasia/M
+aphasic/MS
+aphelia
+aphelion/SM
+aphid/MS
+aphorism/MS
+aphoristic
+aphoristically
+aphrodisiac/SM
+apiarist/SM
+apiary/SM
+apical/Y
+apiece
+apish/Y
+aplenty
+aplomb/M
+apocalypse/SM
+apocalyptic
+apocrypha/M
+apocryphal/Y
+apogee/MS
+apolitical/Y
+apologetic/U
+apologetically
+apologia/SM
+apologist/MS
+apologize/GDS
+apology/SM
+apoplectic
+apoplexy/SM
+apoptosis
+apoptotic
+apostasy/SM
+apostate/SM
+apostatize/GDS
+apostle/MS
+apostleship/M
+apostolic
+apostrophe/MS
+apothecary/SM
+apothegm/SM
+apotheoses
+apotheosis/M
+app/SM
+appall/GDS
+appalling/Y
+appaloosa/MS
+apparatchik/S
+apparatus/MS
+apparel/MDGS
+apparent/Y
+apparition/SM
+appeal/GMDS
+appealing/UY
+appear/AESDG
+appearance/EAMS
+appease/LZGDRS
+appeasement/SM
+appeaser/M
+appellant/SM
+appellate/XN
+appellation/M
+append/GDS
+appendage/SM
+appendectomy/SM
+appendices
+appendicitis/M
+appendix/MS
+appertain/GDS
+appetite/SM
+appetizer/MS
+appetizing/Y
+applaud/ZGDRS
+applauder/M
+applause/M
+apple/MS
+applejack/M
+applesauce/M
+applet/MS
+appliance/SM
+applicability/M
+applicable/I
+applicably
+applicant/SM
+application/AM
+applicator/SM
+applier/MS
+applique/DSM
+appliqueing
+apply/ANXGDS
+appoint/AELSVGD
+appointee/SM
+appointment's/A
+appointment/ESM
+apportion/AGDLS
+apportionment/AM
+appose/GDS
+apposite/YNVP
+appositeness/M
+apposition/M
+appositive/SM
+appraisal/AMS
+appraise/ADSG
+appraiser/MS
+appreciable/I
+appreciably/I
+appreciate/DSXGNV
+appreciated/U
+appreciation/M
+appreciative/Y
+appreciator/MS
+appreciatory
+apprehend/GDS
+apprehension/MS
+apprehensive/YP
+apprehensiveness/M
+apprentice/DSMG
+apprenticeship/MS
+apprise/GDS
+approach/GBMDS
+approachable/UI
+approbation/EM
+approbations
+appropriate/PYGNXDS
+appropriated/U
+appropriateness/IM
+appropriation/M
+appropriator/SM
+approval/EM
+approvals
+approve/EGDS
+approved/U
+approving/EY
+approx
+approximate/DSXYGN
+approximation/M
+appurtenance/SM
+appurtenant
+apricot/MS
+apron/MS
+apropos
+apse/SM
+apt/IYPT
+apter
+aptitude/SM
+aptness/IM
+aqua/SM
+aquaculture/M
+aqualung/MS
+aquamarine/SM
+aquanaut/MS
+aquaplane/MGDS
+aquarium/MS
+aquatic/SM
+aquatically
+aquatics/M
+aquatint/S
+aquavit/M
+aqueduct/MS
+aqueous
+aquifer/SM
+aquiline
+arabesque/MS
+arability/M
+arachnid/MS
+arachnophobia
+arbiter/SM
+arbitrage/MZGDRS
+arbitrager/M
+arbitrageur/SM
+arbitrament/SM
+arbitrarily
+arbitrariness/M
+arbitrary/P
+arbitrate/GNDS
+arbitration/M
+arbitrator/MS
+arbor/MS
+arboreal
+arboretum/SM
+arborvitae/SM
+arbutus/MS
+arc/SMDG
+arcade/MS
+arcane
+arch/PZTGVMDRSY
+archaeological/Y
+archaeologist/SM
+archaeology/M
+archaic
+archaically
+archaism/MS
+archaist/MS
+archangel/MS
+archbishop/SM
+archbishopric/SM
+archdeacon/SM
+archdiocesan
+archdiocese/MS
+archduchess/MS
+archduke/MS
+archenemy/SM
+archer/M
+archery/M
+archetypal
+archetype/MS
+archfiend/MS
+archiepiscopal
+archipelago/MS
+architect/SM
+architectonic/S
+architectonics/M
+architectural/Y
+architecture/MS
+architrave/SM
+archival
+archive/DSMG
+archivist/MS
+archness/M
+archway/SM
+arctic/MS
+ardent/Y
+ardor/MS
+arduous/YP
+arduousness/M
+are/SMB
+area/SM
+areal
+aren't
+arena/MS
+argent/M
+arginine
+argon/M
+argosy/SM
+argot/MS
+arguable/IU
+arguably/U
+argue/ZGDRS
+arguer/M
+argument/MS
+argumentation/M
+argumentative/PY
+argumentativeness/M
+argyle/MS
+aria/SM
+arid/Y
+aridity/M
+aright
+arise/GS
+arisen
+aristocracy/SM
+aristocrat/SM
+aristocratic
+aristocratically
+arithmetic/M
+arithmetical/Y
+arithmetician/MS
+ark/SM
+arm's
+arm/EAGDS
+armada/MS
+armadillo/SM
+armament/AEM
+armaments
+armature/MS
+armband/MS
+armchair/MS
+armed/U
+armful/MS
+armhole/SM
+armistice/SM
+armlet/MS
+armload/S
+armor/ZGMDRS
+armored/U
+armorer/M
+armorial
+armory/SM
+armpit/MS
+armrest/SM
+army/SM
+aroma/MS
+aromatherapist/MS
+aromatherapy/M
+aromatic/MS
+aromatically
+arose
+around
+arousal/M
+arouse/GDS
+arpeggio/MS
+arr
+arraign/DGSL
+arraignment/SM
+arrange/AESDLG
+arrangement's/E
+arrangement/ASM
+arranger/SM
+arrant
+arras/MS
+array/EGMDS
+arrears/M
+arrest/AGMDS
+arrhythmia/M
+arrhythmic
+arrhythmical
+arrival/MS
+arrive/GDS
+arrogance/M
+arrogant/Y
+arrogate/GNDS
+arrogation/M
+arrow/MS
+arrowhead/MS
+arrowroot/M
+arroyo/MS
+arsed
+arsenal/MS
+arsenic/M
+arsing
+arson/M
+arsonist/SM
+art/SM
+arterial
+arteriole/MS
+arteriosclerosis/M
+artery/SM
+artful/PY
+artfulness/M
+arthritic/MS
+arthritis/M
+arthropod/MS
+arthroscope/SM
+arthroscopic
+arthroscopy
+artichoke/SM
+article/MDS
+articulacy/I
+articular
+articulate/YGNPDSX
+articulateness/IM
+articulation/M
+artifact/SM
+artifice/RSMZ
+artificer/M
+artificial/Y
+artificiality/M
+artillery/M
+artilleryman/M
+artillerymen
+artiness/M
+artisan/MS
+artist/MS
+artiste/MS
+artistic/I
+artistically
+artistry/M
+artless/PY
+artlessness/M
+artsy/TR
+artwork/MS
+arty/PTR
+arugula
+arum/SM
+asap
+asbestos/M
+ascend/AGDS
+ascendance/M
+ascendancy/M
+ascendant/SM
+ascension/MS
+ascent/MS
+ascertain/GDSBL
+ascertainment/M
+ascetic/MS
+ascetically
+asceticism/M
+ascot/MS
+ascribe/GBDS
+ascription/M
+aseptic
+aseptically
+asexual/Y
+asexuality/M
+ash/MDNSG
+ashamed/UY
+ashcan/MS
+ashlar/MS
+ashore
+ashram/MS
+ashtray/SM
+ashy/TR
+aside/MS
+asinine/Y
+asininity/SM
+ask/SDG
+askance
+asked/U
+askew
+aslant
+asleep
+asocial
+asp/SMNX
+asparagus/M
+aspartame/M
+aspect/MS
+aspen/M
+asperity/SM
+aspersion/MS
+asphalt/MDGS
+asphodel/SM
+asphyxia/M
+asphyxiate/DSXGN
+asphyxiation/M
+aspic/MS
+aspidistra/MS
+aspirant/MS
+aspirate/MGNDSX
+aspiration/M
+aspirator/SM
+aspire/GDS
+aspirin/MS
+ass/MS
+assail/GBDS
+assailable/U
+assailant/SM
+assassin/SM
+assassinate/GNXDS
+assassination/M
+assault/MDRGS
+assay/ZGMDRS
+assayer/M
+assemblage/SM
+assemble/AEGSD
+assembler/MS
+assemblies
+assembly/AM
+assemblyman/M
+assemblymen
+assemblywoman/M
+assemblywomen
+assent/GMDS
+assert/AGVDS
+assertion/AM
+assertions
+assertive/YP
+assertiveness/M
+assess/ALGDS
+assessment/ASM
+assessor/MS
+asset/MS
+asseverate/DSGN
+asseveration/M
+asshole/MS!
+assiduity/M
+assiduous/PY
+assiduousness/M
+assign's
+assign/ALGDS
+assignable
+assignation/MS
+assigned/U
+assignee/M
+assigner/MS
+assignment/AMS
+assignor/MS
+assimilate/DSGN
+assimilation/M
+assist/GMDS
+assistance/M
+assistant/SM
+assisted/U
+assize/MS
+assn
+assoc
+associate's
+associate/EDSGNV
+association/EM
+associations
+assonance/M
+assonant/MS
+assort/GLDS
+assortment/MS
+asst
+assuage/GDS
+assume/BGDS
+assumption/SM
+assumptive
+assurance/ASM
+assure/AGDS
+assured/MYS
+astatine/M
+aster/EMS
+asterisk/GMDS
+astern
+asteroid/MS
+asthma/M
+asthmatic/SM
+asthmatically
+astigmatic
+astigmatism/SM
+astir
+astonish/DSLG
+astonishing/Y
+astonishment/M
+astound/GDS
+astounding/Y
+astraddle
+astrakhan/M
+astral
+astray
+astride
+astringency/M
+astringent/SMY
+astrolabe/SM
+astrologer/SM
+astrological/Y
+astrologist/MS
+astrology/M
+astronaut/MS
+astronautic/S
+astronautical
+astronautics/M
+astronomer/SM
+astronomic
+astronomical/Y
+astronomy/M
+astrophysical
+astrophysicist/MS
+astrophysics/M
+astute/PYTR
+astuteness/M
+asunder
+asylum/SM
+asymmetric
+asymmetrical/Y
+asymmetry/SM
+asymptomatic
+asymptotic
+asymptotically
+asynchronous/Y
+at
+atavism/M
+atavist/SM
+atavistic
+ataxia/M
+ataxic/MS
+ate
+atelier/SM
+atheism/M
+atheist/MS
+atheistic
+atherosclerosis/M
+atherosclerotic
+athirst
+athlete/MS
+athletic/S
+athletically
+athleticism
+athletics/M
+athwart
+atilt
+atishoo
+atlas/MS
+atmosphere/MS
+atmospheric/S
+atmospherically
+atmospherics/M
+atoll/MS
+atom/SM
+atomic
+atomically
+atomize/ZGDRS
+atomizer/M
+atonal/Y
+atonality/M
+atone/LGDS
+atonement/M
+atop
+atria
+atrial
+atrioventricular
+atrium/M
+atrocious/PY
+atrociousness/M
+atrocity/SM
+atrophy/DSMG
+atropine/M
+attach/ALGDS
+attache/BM
+attached/U
+attachment/AM
+attachments
+attack/ZGMDRS
+attacker/M
+attain/AGDS
+attainability/M
+attainable/U
+attainder/M
+attainment/SM
+attar/M
+attempt's
+attempt/ASDG
+attend/SDRZG
+attendance/SM
+attendant/SM
+attended/U
+attendee/SM
+attention/IM
+attentions
+attentive/IPY
+attentiveness/IM
+attenuate/DSGN
+attenuation/M
+attest/SDG
+attestation/SM
+attested/U
+attic/SM
+attire/DSMG
+attitude/SM
+attitudinal
+attitudinize/GDS
+attn
+attorney/MS
+attract/SGVDB
+attractant/MS
+attraction/MS
+attractive/UY
+attractiveness/M
+attribute/DSMGNVBX
+attributed/U
+attribution/M
+attributive/MYS
+attrition/M
+attune/DSG
+atty
+atwitter
+atypical/Y
+aubergine/S
+auburn/M
+auction/MDGS
+auctioneer/SM
+audacious/YP
+audaciousness/M
+audacity/M
+audibility/IM
+audible/MS
+audibly/I
+audience/MS
+audio/MS
+audiological
+audiologist/SM
+audiology/M
+audiometer/SM
+audiophile/SM
+audiotape/SM
+audiovisual/S
+audiovisuals/M
+audit/GMDS
+audition/SMDG
+auditor/MS
+auditorium/SM
+auditory
+auger/MS
+aught/MS
+augment/DRZGS
+augmentation/MS
+augmentative
+augmenter/M
+augur/GMDS
+augury/SM
+august/PTRY
+augustness/M
+auk/SM
+aunt/SM
+auntie/SM
+aura/MS
+aural/Y
+aureole/SM
+aureus
+auricle/SM
+auricular
+aurora/SM
+auscultate/GNDSX
+auscultation/M
+auspice/SM
+auspicious/IY
+auspiciousness/M
+austere/RYT
+austerity/SM
+austral
+authentic/IU
+authentically
+authenticate/XGNDS
+authenticated/U
+authentication/M
+authenticity/M
+author/SMDG
+authoress/MS
+authorial
+authoritarian/MS
+authoritarianism/M
+authoritative/YP
+authoritativeness/M
+authority/SM
+authorization/MS
+authorize/AGDS
+authorized/U
+authorship/M
+autism/M
+autistic
+auto/MS
+autobahn/SM
+autobiographer/SM
+autobiographic
+autobiographical/Y
+autobiography/SM
+autoclave/MS
+autocracy/SM
+autocrat/SM
+autocratic
+autocratically
+autocross
+autodidact/SM
+autograph/MDG
+autographs
+autoimmune
+autoimmunity/M
+automaker/SM
+automate/GNDS
+automatic/SM
+automatically
+automation/M
+automatism/M
+automatize/GDS
+automaton/SM
+automobile/DSMG
+automotive
+autonomic
+autonomous/Y
+autonomy/M
+autopilot/SM
+autopsy/GDSM
+autosuggestion
+autoworker/MS
+autumn/SM
+autumnal
+aux
+auxiliary/SM
+auxin/M
+av/RZ
+avail/BGMDS
+availability/UM
+available/U
+avalanche/SM
+avarice/M
+avaricious/Y
+avast
+avatar/MS
+avaunt
+avdp
+ave
+avenge/ZGDRS
+avenger/M
+avenue/MS
+average/MYGDS
+averred
+averring
+averse/XN
+aversion/M
+avert/GDS
+avg
+avian
+aviary/SM
+aviation/M
+aviator/MS
+aviatrices
+aviatrix/MS
+avid/Y
+avidity/M
+avionic/S
+avionics/M
+avitaminosis/M
+avocado/SM
+avocation/MS
+avocational
+avoid/SDGB
+avoidable/U
+avoidably/U
+avoidance/M
+avoirdupois/M
+avouch/DSG
+avow/EDGS
+avowal/ESM
+avowed/Y
+avuncular/Y
+aw
+await/GDS
+awake/GS
+awaken/AGDS
+awakening/SM
+award/GMDS
+awardee/S
+aware/UP
+awareness/UM
+awash
+away
+awe/DSMG
+aweigh
+awesome/YP
+awesomeness/M
+awestruck
+awful/YP
+awfuller
+awfullest
+awfulness/M
+awhile
+awkward/RYPT
+awkwardness/M
+awl/SM
+awn/GJSM
+awning/M
+awoke
+awoken
+awry
+ax/MDSG
+axial/Y
+axiom/SM
+axiomatic
+axiomatically
+axis/M
+axle/MS
+axletree/SM
+axolotl/SM
+axon/MS
+ayah/M
+ayahs
+ayatollah/M
+ayatollahs
+aye/SM
+azalea/SM
+azimuth/M
+azimuths
+azure/SM
+b/KDT
+baa/SMDG
+babble/MZGDRS
+babbler/M
+babe/SM
+babel/MS
+baboon/MS
+babushka/SM
+baby/TGDRSM
+babyhood/M
+babyish
+babysat
+babysit/S
+babysitter/MS
+babysitting/M
+baccalaureate/SM
+baccarat/M
+bacchanal/MS
+bacchanalia/M
+bacchanalian/MS
+baccy
+bachelor/SM
+bachelorhood/M
+bacillary
+bacilli
+bacillus/M
+back/SJZGMDR
+backache/MS
+backbench/S
+backbit
+backbite/ZGRS
+backbiter/M
+backbitten
+backboard/SM
+backbone/MS
+backbreaking
+backchat
+backcloth
+backcloths
+backcomb/DSG
+backdate/GDS
+backdoor
+backdrop/MS
+backer/M
+backfield/SM
+backfire/MGDS
+backgammon/M
+background/MRZS
+backgrounder/M
+backhand/MDRSZG
+backhanded/Y
+backhander/M
+backhoe/MS
+backing/M
+backlash/MS
+backless
+backlog/MS
+backlogged
+backlogging
+backpack/ZGMDRS
+backpacker/M
+backpacking/M
+backpedal/SDG
+backrest/SM
+backroom/S
+backscratching/M
+backseat/SM
+backside/SM
+backslapper/SM
+backslapping/M
+backslash/MS
+backslid
+backslide/RSZG
+backslider/M
+backspace/DSMG
+backspin/M
+backstabber/MS
+backstabbing
+backstage/M
+backstair/S
+backstop/SM
+backstopped
+backstopping
+backstory/S
+backstreet/S
+backstretch/MS
+backstroke/MGDS
+backtalk/M
+backtrack/SDG
+backup/MS
+backward/PSY
+backwardness/M
+backwash/M
+backwater/SM
+backwoods/M
+backwoodsman/M
+backwoodsmen
+backyard/SM
+bacon/M
+bacteria/M
+bacterial
+bactericidal
+bactericide/SM
+bacteriologic
+bacteriological
+bacteriologist/SM
+bacteriology/M
+bacterium/M
+bad/MYP
+badder
+baddest
+baddie/MS
+bade
+badge/MZRS
+badger/GMD
+badinage/M
+badlands/M
+badman/M
+badmen
+badminton/M
+badmouth/GD
+badmouths
+badness/M
+baffle/MZGDRSL
+bafflement/M
+baffler/M
+bag/SM
+bagatelle/SM
+bagel/MS
+bagful/MS
+baggage/M
+bagged
+baggie/M
+baggily
+bagginess/M
+bagging
+baggy/PTRS
+bagpipe/MZRS
+bagpiper/M
+baguette/MS
+bah
+baht/SM
+bail/SBGMD
+bailey/S
+bailiff/S
+bailiwick/MS
+bailout/SM
+bailsman/M
+bailsmen
+bairn/MS
+bait/SGMD
+baize/M
+bake/DRSMZG
+baked/U
+baker/M
+bakery/SM
+bakeshop/MS
+baklava/M
+baksheesh/M
+balaclava/MS
+balalaika/MS
+balance's
+balance/UDSG
+balboa/SM
+balcony/SM
+bald/STGPDRY
+balderdash/M
+baldfaced
+baldness/M
+baldric/SM
+baldy/S
+bale/DRSMZG
+baleen/M
+baleful/PY
+balefulness/M
+baler/M
+balk/SGMD
+balky/RT
+ball/SGMD
+ballad/SM
+balladeer/MS
+balladry/M
+ballast/GSMD
+ballcock/MS
+ballerina/SM
+ballet/SM
+balletic
+ballgame/MS
+ballgirl/S
+ballgown/S
+ballistic/S
+ballistics/M
+balloon/SGMD
+balloonist/MS
+ballot/SMDG
+ballpark/MS
+ballplayer/MS
+ballpoint/MS
+ballroom/MS
+balls/DSG
+ballsy/RT
+bally
+ballyhoo/SMDG
+balm/SM
+balminess/M
+balmy/RTP
+baloney/M
+balsa/MS
+balsam/SM
+balsamic
+baluster/SM
+balustrade/MS
+bamboo/SM
+bamboozle/DSG
+ban/SM
+banal/Y
+banality/SM
+banana/SM
+band's
+band/ESGD
+bandage/DSMG
+bandanna/MS
+bandbox/MS
+bandeau/M
+bandeaux
+bandit/SM
+banditry/M
+bandleader/S
+bandmaster/SM
+bandoleer/SM
+bandsman/M
+bandsmen
+bandstand/SM
+bandwagon/SM
+bandwidth
+bandwidths
+bandy/DRSTG
+bane/SM
+baneful
+bang/SGMDR
+bangle/SM
+bani
+banish/GLDS
+banishment/M
+banister/SM
+banjo/MS
+banjoist/SM
+bank/SZGBMDR
+bankbook/SM
+bankcard/SM
+banker/M
+banking/M
+banknote/SM
+bankroll/SGMD
+bankrupt/SGMD
+bankruptcy/SM
+banned
+banner/SM
+banning
+bannock/MS
+banns/M
+banquet/ZGMDRS
+banqueter/M
+banquette/SM
+banshee/MS
+bantam/SM
+bantamweight/SM
+banter/GSMD
+bantering/Y
+banyan/SM
+banzai/SM
+baobab/SM
+bap/S
+baptism/MS
+baptismal
+baptist/S
+baptistery/SM
+baptize/ZGDRS
+baptized/U
+baptizer/M
+bar's
+bar/ECUTS
+barb/SZGMDR
+barbacoa
+barbarian/SM
+barbarianism/MS
+barbaric
+barbarically
+barbarism/SM
+barbarity/SM
+barbarize/DSG
+barbarous/Y
+barbecue/DSMG
+barbel/SM
+barbell/MS
+barber/GMD
+barberry/SM
+barbershop/MS
+barbie/S
+barbiturate/SM
+barbwire/M
+barcarole/SM
+bard/SM
+bardic
+bare/DRSPYG
+bareback/D
+barefaced/Y
+barefoot/D
+barehanded
+bareheaded
+barelegged
+bareness/M
+barf/SGMDY
+barfly/SM
+bargain/MDRZGS
+bargainer/M
+barge/MGDS
+bargeman/M
+bargemen
+barhop/S
+barhopped
+barhopping
+barista/MS
+baritone/MS
+barium/M
+bark's
+bark/CSGD
+barkeep/ZMRS
+barkeeper/M
+barker/SM
+barley/M
+barmaid/MS
+barman/M
+barmen
+barmy/RT
+barn/SM
+barnacle/MDS
+barney/S
+barnstorm/SDRZG
+barnstormer/M
+barnyard/SM
+barometer/MS
+barometric
+barometrically
+baron/MS
+baronage/MS
+baroness/MS
+baronet/MS
+baronetcy/SM
+baronial
+barony/SM
+baroque/M
+barque/SM
+barrack/MDGS
+barracuda/SM
+barrage/MGDS
+barre/MGJDS
+barred/UEC
+barrel/GSMD
+barren/TPSMR
+barrenness/M
+barrette/SM
+barricade/MGDS
+barrier/MS
+barring/ECU
+barrio/SM
+barrister/MS
+barroom/MS
+barrow/SM
+bartender/SM
+barter/ZGSMDR
+barterer/M
+baryon/SM
+basal/Y
+basalt/M
+basaltic
+base's
+base/CDSLTG
+baseball/SM
+baseboard/MS
+baseless
+baseline/MS
+basely
+baseman/M
+basemen
+basement/CMS
+baseness/M
+baser
+bash/GMDS
+bashful/PY
+bashfulness/M
+bashing/M
+basic/MS
+basically
+basil/M
+basilica/MS
+basilisk/MS
+basin/MS
+basinful/MS
+basis/M
+bask/SGD
+basket/SM
+basketball/MS
+basketry/M
+basketwork/M
+basque/S
+bass/MS
+basset/SM
+bassinet/MS
+bassist/MS
+basso/MS
+bassoon/MS
+bassoonist/SM
+basswood/MS
+bast/M
+bastard/MS
+bastardization/MS
+bastardize/GDS
+bastardy/M
+baste/ZGNXDRS
+baster/M
+bastion/M
+bat/SM
+batch/MDSG
+bate/KACGSD
+bath/ZGMDRS
+bathe/M
+bather/M
+bathetic
+bathhouse/MS
+bathing/M
+bathmat/MS
+bathos/M
+bathrobe/SM
+bathroom/SM
+baths
+bathtub/MS
+bathwater
+bathyscaphe/SM
+bathysphere/MS
+batik/MS
+batiste/M
+batman/M
+batmen
+baton/MS
+batsman/M
+batsmen
+battalion/SM
+batted
+batten/GSMD
+batter/JZGSMDR
+batterer/M
+battery/SM
+batting/M
+battle/LDRSMZG
+battleaxe/MS
+battledore/SM
+battledress
+battlefield/MS
+battlefront/MS
+battleground/MS
+battlement/SM
+battler/M
+battleship/SM
+batty/RT
+bauble/SM
+baud/SM
+bauxite/M
+bawd/SM
+bawdily
+bawdiness/M
+bawdy/PRT
+bawl/SGMD
+bay/SMDG
+bayberry/SM
+bayonet/SMDG
+bayou/MS
+bazaar/SM
+bazillion/S
+bazooka/SM
+bbl
+bdrm
+be
+beach/MDSG
+beachcomber/SM
+beachfront
+beachhead/MS
+beachwear/M
+beacon/SM
+bead/SGMD
+beading/M
+beadle/SM
+beady/RT
+beagle/SM
+beak/SZMDR
+beaker/M
+beam/SGMD
+bean/SGMD
+beanbag/MS
+beanfeast/S
+beanie/SM
+beanpole/MS
+beansprout/S
+beanstalk/MS
+bear/SZGBJMR
+bearable/U
+bearably/U
+beard/MDGS
+beardless
+bearer/M
+bearing/M
+bearish/PY
+bearishness/M
+bearlike
+bearskin/MS
+beast/MS
+beastliness/M
+beastly/TPRM
+beat/SZGBMNRJ
+beatable/U
+beaten/U
+beater/M
+beatific
+beatifically
+beatification/M
+beatify/GXNDS
+beating/M
+beatitude/SM
+beatnik/MS
+beau/SM
+beaut/MS
+beauteous/Y
+beautician/SM
+beautification/M
+beautifier/M
+beautiful/Y
+beautify/NDRSZG
+beauty/SM
+beaver/SGMD
+bebop/MS
+becalm/GSD
+became
+because
+beck/SM
+beckon/SGD
+becloud/GDS
+become/S
+becoming/UY
+becquerel/S
+bed/SM
+bedaub/GSD
+bedazzle/GDSL
+bedazzlement/M
+bedbug/SM
+bedchamber/S
+bedclothes/M
+bedded
+bedder
+bedding/M
+bedeck/GSD
+bedevil/LGDS
+bedevilment/M
+bedfellow/SM
+bedhead/S
+bedim/S
+bedimmed
+bedimming
+bedizen/GDS
+bedlam/SM
+bedpan/SM
+bedpost/SM
+bedraggle/GDS
+bedridden
+bedrock/SM
+bedroll/SM
+bedroom/SM
+bedside/SM
+bedsit/S
+bedsitter/S
+bedsore/SM
+bedspread/SM
+bedstead/SM
+bedtime/SM
+bee/RSMZGJ
+beebread/M
+beech/MS
+beechnut/MS
+beef/SGMD
+beefburger/SM
+beefcake/MS
+beefiness/M
+beefsteak/MS
+beefy/RPT
+beehive/MS
+beekeeper/MS
+beekeeping/M
+beeline/MS
+been
+beep/SZGMDR
+beeper/M
+beer/M
+beery/TR
+beeswax/M
+beet/SM
+beetle/MGDS
+beetroot/S
+beeves
+befall/SGN
+befell
+befit/S
+befitted
+befitting/Y
+befog/S
+befogged
+befogging
+before
+beforehand
+befoul/DGS
+befriend/SGD
+befuddle/GLDS
+befuddlement/M
+beg/S
+began
+begat
+beget/S
+begetter/S
+begetting
+beggar/MDYGS
+beggary/M
+begged
+begging
+begin/S
+beginner/SM
+beginning/MS
+begone
+begonia/SM
+begot
+begotten
+begrime/DSG
+begrudge/DSG
+begrudging/Y
+beguile/DRSZGL
+beguilement/M
+beguiler/M
+beguiling/Y
+beguine/SM
+begum/MS
+begun
+behalf/M
+behalves
+behave/GDS
+behavior/SM
+behavioral/Y
+behaviorism/M
+behaviorist/MS
+behead/DGS
+beheld
+behemoth/M
+behemoths
+behest/MS
+behind/MS
+behindhand
+behold/NRZGS
+beholder/M
+behoove/DSG
+beige/M
+being/M
+bejewel/SDG
+belabor/SDG
+belated/Y
+belay/GDS
+belch/GMDS
+beleaguer/GSD
+belfry/SM
+belie/DS
+belief/EUM
+beliefs
+believable/U
+believably/U
+believe/EDRSZG
+believer/EUMS
+believing/U
+belittle/LDSG
+belittlement/M
+bell/SGMD
+belladonna/M
+bellboy/SM
+belle/MS
+belled/A
+belletrist/MS
+belletristic
+bellhop/SM
+bellicose
+bellicosity/M
+belligerence/M
+belligerency/M
+belligerent/MYS
+belling/A
+bellman/M
+bellmen
+bellow/MDGS
+bellwether/MS
+belly/GDSM
+bellyache/MGDS
+bellybutton/SM
+bellyful/MS
+belong/JDGS
+belonging/M
+beloved/SM
+below
+belt/SGMD
+beltway/SM
+beluga/MS
+belying
+bemire/GDS
+bemoan/DGS
+bemuse/LGDS
+bemused/Y
+bemusement/M
+bench/GMDS
+benchmark/MS
+bend/BSZGMR
+bender/M
+bendy/TR
+beneath
+benedictine
+benediction/SM
+benedictory
+benefaction/SM
+benefactor/MS
+benefactress/MS
+benefice/SM
+beneficence/M
+beneficent/Y
+beneficial/Y
+beneficiary/SM
+benefit/SMDG
+benevolence/SM
+benevolent/Y
+benighted/Y
+benign/Y
+benignant
+benignity/M
+bent/SM
+bentwood/M
+benumb/DSG
+benzene/M
+benzine/M
+benzyl
+bequeath/DG
+bequeaths
+bequest/MS
+berate/GDS
+bereave/DSLG
+bereavement/MS
+bereft
+beret/MS
+berg/SM
+beriberi/M
+berk/S
+berkelium/M
+berm/SM
+berry/GDSM
+berrylike
+berserk
+berth/GMD
+berths
+beryl/MS
+beryllium/M
+beseech/ZGRS
+beseecher/M
+beseeching/Y
+beseem/DSG
+beset/S
+besetting
+beside/S
+besiege/ZGDRS
+besieger/M
+besmear/DSG
+besmirch/GDS
+besom/MS
+besot/S
+besotted
+besotting
+besought
+bespangle/DSG
+bespatter/GSD
+bespeak/SG
+bespectacled
+bespoke
+bespoken
+best/SGMD
+bestial/Y
+bestiality/M
+bestiary/SM
+bestir/S
+bestirred
+bestirring
+bestow/DGS
+bestowal/SM
+bestrew/SDG
+bestrewn
+bestridden
+bestride/SG
+bestrode
+bestseller/MS
+bestselling
+bet/SM
+beta/SM
+betake/GS
+betaken
+betcha
+betel/M
+bethink/SG
+bethought
+betide/GDS
+betimes
+betoken/GDS
+betook
+betray/DRZGS
+betrayal/SM
+betrayer/M
+betroth/DG
+betrothal/SM
+betrothed/M
+betroths
+better/MDGLS
+betterment/M
+betting
+bettor/MS
+between
+betwixt
+bevel/GMDS
+beverage/SM
+bevvy/S
+bevy/SM
+bewail/DGS
+beware/GDS
+bewhiskered
+bewigged
+bewilder/LSGD
+bewildering/Y
+bewilderment/M
+bewitch/GLDS
+bewitching/Y
+bewitchment/M
+bey/SM
+beyond
+bezel/MS
+bf
+bhaji
+bi/SMRZ
+biannual/Y
+bias/GMDS
+biased/U
+biathlon/SM
+bib/SM
+bible/MS
+biblical
+bibliographer/MS
+bibliographic
+bibliographical/Y
+bibliography/SM
+bibliophile/SM
+bibulous
+bicameral
+bicameralism/M
+bicarb/MS
+bicarbonate/MS
+bicentenary/SM
+bicentennial/SM
+bicep/MS
+biceps/M
+bicker/MDRZGS
+bickerer/M
+biconcave
+biconvex
+bicuspid/MS
+bicycle/DRSMZG
+bicycler/M
+bicyclist/SM
+bid/SMG
+biddable
+bidden/U
+bidder/MS
+bidding/M
+biddy/SM
+bide/S
+bidet/MS
+bidirectional/Y
+biennial/MYS
+biennium/MS
+bier/M
+biff/SGD
+bifocal/S
+bifocals/M
+bifurcate/XDSGN
+bifurcation/M
+big/P
+bigamist/SM
+bigamous
+bigamy/M
+bigger
+biggest
+biggie/MS
+biggish
+bighead/SM
+bighearted/P
+bigheartedness/M
+bighorn/SM
+bight/MS
+bigmouth/M
+bigmouths
+bigness/M
+bigot/MDS
+bigotry/SM
+bigwig/MS
+bijou/M
+bijoux
+bike/DRSMZG
+biker/M
+bikini/MS
+bilabial/MS
+bilateral/Y
+bilberry/S
+bile/M
+bilge/MS
+bilingual/SMY
+bilingualism/M
+bilious/P
+biliousness/M
+bilirubin
+bilk/SZGDR
+bilker/M
+bill/SBJGMD
+billboard/MS
+billet/GMDS
+billfold/SM
+billhook/S
+billiard/S
+billiards/M
+billing/M
+billingsgate/M
+billion/MHS
+billionaire/SM
+billionth/M
+billionths
+billow/GMDS
+billowy
+billy/SM
+billycan/S
+bimbo/MS
+bimetallic/SM
+bimetallism/M
+bimonthly/SM
+bin/SM
+binary/SM
+bind's
+bind/AUGS
+binder/MS
+bindery/SM
+binding/MS
+bindweed/M
+binge/MDS
+bingo/M
+binman
+binmen
+binnacle/SM
+binned
+binning
+binocular/MS
+binomial/SM
+bio/SM
+biochemical/SMY
+biochemist/MS
+biochemistry/M
+biodegradability/M
+biodegrade/DSGB
+biodiversity/M
+bioethics/M
+biofeedback/M
+biog
+biographer/SM
+biographic
+biographical/Y
+biography/SM
+biol
+biologic
+biological/Y
+biologist/MS
+biology/M
+biomass/M
+biomedical
+bionic/S
+bionically
+bionics/M
+biophysical
+biophysicist/MS
+biophysics/M
+biopic/MS
+biopsy/GDSM
+bioreactor/S
+biorhythm/MS
+biosensor/S
+biosphere/SM
+biosynthesis
+biotech
+biotechnological
+biotechnology/M
+biotin/M
+bipartisan
+bipartisanship/M
+bipartite
+biped/MS
+bipedal
+biplane/MS
+bipolar
+bipolarity/M
+biracial
+birch/GMDS
+bird/SZGMDR
+birdbath/M
+birdbaths
+birdbrain/SMD
+birdcage/S
+birder/M
+birdhouse/MS
+birdie/MDS
+birdieing
+birdlike
+birdlime/M
+birdseed/M
+birdsong
+birdwatcher/SM
+birdying
+biretta/SM
+birth/ZGMDR
+birthday/MS
+birther/M
+birthmark/MS
+birthplace/MS
+birthrate/MS
+birthright/MS
+births/A
+birthstone/SM
+biscuit/SM
+bisect/DGS
+bisection/MS
+bisector/SM
+bisexual/MYS
+bisexuality/M
+bishop/MS
+bishopric/SM
+bismuth/M
+bison/M
+bisque/M
+bistro/MS
+bit/CSMG
+bitch/GMDS
+bitchily
+bitchiness/M
+bitchy/PRT
+bitcoin/SM
+bite/RSMZ
+biter/M
+biting/Y
+bitmap/S
+bitten
+bitter/PMRYTS
+bittern/SM
+bitterness/M
+bitters/M
+bittersweet/MS
+bitty/TR
+bitumen/M
+bituminous
+bivalent
+bivalve/SM
+bivouac/MS
+bivouacked
+bivouacking
+biweekly/SM
+biyearly
+biz/M
+bizarre/Y
+bk
+bl/DG
+blab/SM
+blabbed
+blabber/DGS
+blabbermouth/M
+blabbermouths
+blabbing
+black/PXTGMDNRYS
+blackamoor/MS
+blackball/SGMD
+blackberry/GSM
+blackbird/SM
+blackboard/MS
+blackcurrant/S
+blacken/DG
+blackface
+blackguard/SM
+blackhead/MS
+blacking/M
+blackish
+blackjack/MDGS
+blackleg/S
+blacklist/MDSG
+blackmail/MDRSZG
+blackmailer/M
+blackness/M
+blackout/SM
+blacksmith/M
+blacksmiths
+blacksnake/SM
+blackthorn/SM
+blacktop/SM
+blacktopped
+blacktopping
+bladder/MS
+blade/MDS
+blag/S
+blagged
+blagging
+blah/M
+blahs/M
+blame/BMGDRS
+blameless/YP
+blamelessness/M
+blameworthiness/M
+blameworthy/P
+blammo
+blanch/GDS
+blancmange/MS
+bland/PTRY
+blandish/DSLG
+blandishment/SM
+blandness/M
+blank/TGPMDRYS
+blanket/GMDS
+blankness/M
+blare/MGDS
+blarney/SMDG
+blase
+blaspheme/ZGDRS
+blasphemer/M
+blasphemous/Y
+blasphemy/SM
+blast/ZGMDRS
+blaster/M
+blastoff/MS
+blat/S
+blatancy/SM
+blatant/Y
+blather/SMDG
+blaze/MZGDRS
+blazer/M
+blazon/MDGS
+bldg
+bleach/MDRSZG
+bleached/U
+bleacher/M
+bleak/TPRY
+bleakness/M
+blear
+blearily
+bleariness/M
+bleary/PRT
+bleat/GMDS
+bleed/ZGRS
+bleeder/M
+bleeding/M
+bleep/ZGMDRS
+bleeper/M
+blemish/GMDS
+blemished/U
+blench/DSG
+blend/ZGMDRS
+blender/M
+bless/GDSJ
+blessed/YP
+blessedness/M
+blessing/M
+bletch
+blew
+blight/ZGMDRS
+blimey
+blimp/MS
+blimpish
+blind/PZTGMDRYS
+blinder/M
+blindfold/SMDG
+blinding/Y
+blindness/M
+blindside/DSG
+blini/MS
+blink/ZGMDRS
+blinker/MDG
+blintz/MS
+blintze/M
+blip/SM
+bliss/M
+blissful/YP
+blissfulness/M
+blister/GMDS
+blistering/Y
+blistery
+blithe/PYTR
+blitheness/M
+blither/G
+blithesome
+blitz/GMDS
+blitzkrieg/MS
+blivet/S
+blizzard/SM
+bloat/ZGDRS
+bloatware
+blob/SM
+blobbed
+blobbing
+bloc/SM
+block's
+block/UGDS
+blockade/MZGDRS
+blockader/M
+blockage/MS
+blockbuster/SM
+blockbusting/M
+blocker/MS
+blockhead/SM
+blockhouse/MS
+blog/SM
+blogged
+blogger/MS
+blogging
+bloke/MS
+blokish
+blond/PTMRS
+blonde/MS
+blondish
+blondness/M
+blood/GMDS
+bloodbath/M
+bloodbaths
+bloodcurdling
+bloodhound/SM
+bloodily
+bloodiness/M
+bloodless/YP
+bloodlessness/M
+bloodletting/M
+bloodline/SM
+bloodmobile/MS
+bloodshed/M
+bloodshot
+bloodstain/SMD
+bloodstock/M
+bloodstream/SM
+bloodsucker/SM
+bloodsucking
+bloodthirstily
+bloodthirstiness/M
+bloodthirsty/RPT
+bloody/PTGDRS
+bloom/ZGMDRS
+bloomer/M
+bloop/ZGMDRS
+blooper/M
+blossom/GMDS
+blossomy
+blot/SM
+blotch/GMDS
+blotchy/TR
+blotted
+blotter/MS
+blotting
+blotto
+blouse/MGDS
+blow/SZGMR
+blower/M
+blowfly/SM
+blowgun/MS
+blowhard/MS
+blowhole/S
+blowjob/SM
+blowlamp/S
+blown
+blowout/SM
+blowpipe/SM
+blowtorch/MS
+blowup/MS
+blowy/TR
+blowzy/RT
+blubber/GSMD
+blubbery
+bludgeon/MDGS
+blue/DRSPMTG
+bluebell/MS
+blueberry/SM
+bluebird/MS
+bluebonnet/SM
+bluebottle/SM
+bluefish/MS
+bluegill/MS
+bluegrass/M
+blueish
+bluejacket/SM
+bluejeans/M
+blueness/M
+bluenose/MS
+bluepoint/MS
+blueprint/MDGS
+bluestocking/SM
+bluesy/RT
+bluet/MS
+bluff/ZTGPMDRYS
+bluffer/M
+bluffness/M
+bluing/M
+bluish
+blunder/MDRZGS
+blunderbuss/MS
+blunderer/M
+blunt/PTGDRYS
+bluntness/M
+blur/SM
+blurb/MS
+blurred
+blurriness/M
+blurring
+blurry/TRP
+blurt/GDS
+blush/ZGMDRS
+blusher/M
+bluster/MDRSZG
+blusterer/M
+blusterous
+blustery
+blvd
+boa/SM
+boar/SM
+board/ZGMDRS
+boarder/M
+boarding/M
+boardinghouse/MS
+boardroom/MS
+boardwalk/MS
+boast/ZGMDRS
+boaster/M
+boastful/PY
+boastfulness/M
+boat/SZGMDR
+boater/M
+boathouse/MS
+boating/M
+boatload/S
+boatman/M
+boatmen
+boatswain/SM
+boatyard/S
+bob/SM
+bobbed
+bobbin/MS
+bobbing
+bobble/MGDS
+bobby/SM
+bobbysoxer/SM
+bobcat/MS
+bobolink/SM
+bobsled/SM
+bobsledded
+bobsledder/MS
+bobsledding
+bobsleigh/M
+bobsleighs
+bobtail/SM
+bobwhite/MS
+boccie/M
+bock/M
+bod/SMDG
+bodacious
+bode/S
+bodega/MS
+bodge/GDS
+bodice/MS
+bodily
+bodkin/MS
+body/DSM
+bodybuilder/SM
+bodybuilding/M
+bodyguard/MS
+bodysuit/SM
+bodywork/M
+boffin/S
+boffo
+bog/SM
+boga
+bogey/GMDS
+bogeyman/M
+bogeymen
+bogged
+bogging
+boggle/GDS
+boggy/TR
+bogie/MS
+bogon
+bogosity
+bogus
+bogyman/M
+bogymen
+bohemian/SM
+bohemianism/M
+boil/SJZGMDR
+boiler/M
+boilermaker/SM
+boilerplate/M
+boink/GDS
+boisterous/YP
+boisterousness/M
+bola/SM
+bold/PTRY
+boldface/DM
+boldness/M
+bole/SM
+bolero/MS
+bolivar/MS
+bolivares
+boll/SM
+bollard/S
+bollix/GMDS
+bollocking/S
+bollocks
+bologna/M
+bolshie
+bolster/GMDS
+bolt's
+bolt/USGD
+bolthole/S
+bolus/MS
+bomb/SJZGMDR
+bombard/GDLS
+bombardier/MS
+bombardment/SM
+bombast/M
+bombastic
+bombastically
+bomber/M
+bombproof
+bombshell/SM
+bombsite/S
+bonanza/MS
+bonbon/MS
+bonce/S
+bond/SGMD
+bondage/M
+bondholder/MS
+bonding/M
+bondman/M
+bondmen
+bondsman/M
+bondsmen
+bondwoman/M
+bondwomen
+bone/DRSMZG
+bonehead/SMD
+boneless
+boner/M
+boneshaker/S
+boneyard
+bonfire/MS
+bong/SGMD
+bongo/MS
+bonhomie/M
+boniness/M
+bonito/MS
+bonk/SZGD
+bonnet/MS
+bonny/TR
+bonobo/MS
+bonsai/M
+bonus/MS
+bony/PTR
+boo/SMDHG
+boob/SGMD
+booby/SM
+boodle/MS
+booger/S
+boogeyman/M
+boogeymen
+boogie/MDS
+boogieing
+boogieman/M
+boohoo/GMDS
+book/SBJGMD
+bookbinder/SM
+bookbindery/SM
+bookbinding/M
+bookcase/MS
+bookend/MS
+bookie/MS
+booking/M
+bookish
+bookkeeper/MS
+bookkeeping/M
+booklet/MS
+bookmaker/SM
+bookmaking/M
+bookmark/SMDG
+bookmobile/SM
+bookplate/MS
+bookseller/MS
+bookshelf/M
+bookshelves
+bookshop/SM
+bookstall/S
+bookstore/MS
+bookworm/SM
+boom/SZGMDR
+boombox/MS
+boomerang/MDGS
+boon/SM
+boondocks/M
+boondoggle/MZGDRS
+boondoggler/M
+boonies/M
+boor/SM
+boorish/PY
+boorishness/MS
+boost/ZGMDRS
+booster/M
+boot's
+boot/ASGD
+bootblack/SM
+bootee/MS
+booth/M
+booths
+bootlace/S
+bootleg/MS
+bootlegged
+bootlegger/MS
+bootlegging/M
+bootless
+bootstrap/MS
+bootstrapped
+bootstrapping
+booty/SM
+booze/MZGDRS
+boozer/M
+boozy/TR
+bop/SM
+bopped
+bopping
+borax/M
+bordello/MS
+border/GMDS
+borderland/MS
+borderline/MS
+bore/DRSMZG
+boredom/M
+borehole/S
+borer/M
+boring/Y
+born/IAU
+borne
+boron/M
+borough/M
+boroughs
+borrow/SDRZGJ
+borrower/M
+borrowing/M
+borscht/M
+borstal/S
+borzoi/SM
+bosh/M
+bosom's
+bosom/US
+bosomy
+boss/DSGM
+bossily
+bossiness/M
+bossism/M
+bossy/RTP
+bot/S
+botanic
+botanical/Y
+botanist/SM
+botany/M
+botch/DRSZGM
+botcher/M
+both
+bother/SMDG
+botheration
+bothersome
+botnet/SM
+bottle/DRSMZG
+bottleneck/MS
+bottler/M
+bottom/SMDG
+bottomless
+botulinum
+botulism/M
+boudoir/SM
+bouffant/SM
+bougainvillea/MS
+bough/M
+boughs
+bought
+bouillabaisse/SM
+bouillon/MS
+boulder/SM
+boules
+boulevard/SM
+bounce/DRSMZG
+bouncer/M
+bouncily
+bounciness/M
+bouncy/RTP
+bound/ASMGD
+boundary/SM
+bounden
+bounder/SM
+boundless/PY
+boundlessness/M
+bounteous/YP
+bounteousness/M
+bountiful/YP
+bountifulness/M
+bounty/SM
+bouquet/SM
+bourbon/SM
+bourgeois/M
+bourgeoisie/M
+boustrophedon
+bout/MS
+boutique/SM
+boutonniere/MS
+bouzouki/MS
+bovine/SM
+bovver
+bow/ZGSMDR
+bowdlerization/MS
+bowdlerize/DSG
+bowed/U
+bowel/SM
+bower/M
+bowl/MDRZGS
+bowleg/SM
+bowlegged
+bowler/M
+bowlful/SM
+bowline/SM
+bowling/M
+bowman/M
+bowmen
+bowsprit/SM
+bowstring/SM
+bowwow/SM
+box/ZGMDNRS
+boxcar/SM
+boxer/M
+boxing/M
+boxlike
+boxroom/S
+boxwood/M
+boxy/RT
+boy/SM
+boycott/SGMD
+boyfriend/MS
+boyhood/SM
+boyish/YP
+boyishness/M
+boysenberry/SM
+bozo/MS
+bpm
+bps
+bra/SM
+brace/MZGDRS
+bracelet/MS
+bracer/M
+bracero/MS
+bracken/M
+bracket/GMDS
+brackish/P
+brackishness/M
+bract/MS
+brad/SM
+bradawl/S
+bradycardia
+brae/SM
+brag/SM
+braggadocio/SM
+braggart/SM
+bragged
+bragger/MS
+bragging
+braid/GMDS
+braiding/M
+braille/M
+brain/GMDS
+brainchild/M
+brainchildren/M
+braininess/M
+brainless/Y
+brainpower
+brainstorm/SMDG
+brainstorming/M
+brainteaser/SM
+brainwash/DSG
+brainwashing/M
+brainwave/S
+brainy/PTR
+braise/GDS
+brake/MGDS
+brakeman/M
+brakemen
+bramble/MS
+brambly
+bran/M
+branch/GMDS
+branchlike
+brand/ZGMDRS
+branded/U
+brander/M
+brandish/DSG
+brandy/GDSM
+brash/PTRY
+brashness/M
+brass/MS
+brasserie/MS
+brassiere/MS
+brassily
+brassiness/M
+brassy/PTR
+brat/SM
+bratty/RT
+bratwurst/SM
+bravado/M
+brave/GPMYDTRS
+braveness/M
+bravery/M
+bravo/SM
+bravura/SM
+brawl/SDRZGM
+brawler/M
+brawn/M
+brawniness/M
+brawny/RTP
+bray/DGSM
+braze/DRSZG
+brazen/SDYGP
+brazenness/M
+brazer/M
+brazier/SM
+breach/GMDS
+bread/GMDHS
+breadbasket/SM
+breadboard/SM
+breadbox/MS
+breadcrumb/MS
+breadfruit/SM
+breadline/MS
+breadth/M
+breadths
+breadwinner/SM
+break/BMZGRS
+breakable/MS
+breakage/MS
+breakaway/MS
+breakdown/MS
+breaker/M
+breakfast/MDGS
+breakfront/MS
+breakneck
+breakout/MS
+breakpoints
+breakthrough/M
+breakthroughs
+breakup/SM
+breakwater/SM
+bream/MS
+breast/SMDG
+breastbone/MS
+breastfed
+breastfeed/GS
+breastplate/SM
+breaststroke/SM
+breastwork/MS
+breath/MDRSZGB
+breathalyze/ZGDRS
+breathe
+breather/M
+breathing/M
+breathless/PY
+breathlessness/M
+breaths
+breathtaking/Y
+breathy/RT
+bred/I
+breech/MS
+breed/SRZGM
+breeder/M
+breeding/IM
+breeze/DSMG
+breezeway/SM
+breezily
+breeziness/M
+breezy/RTP
+brethren
+breve/SM
+brevet/SM
+brevetted
+brevetting
+breviary/SM
+brevity/M
+brew/MDRZGS
+brewer/M
+brewery/SM
+brewpub/SM
+bribe/DRSMZG
+briber/M
+bribery/M
+brick/SMDG
+brickbat/SM
+brickie/S
+bricklayer/MS
+bricklaying/M
+brickwork/M
+brickyard/S
+bridal/SM
+bride/SM
+bridegroom/SM
+bridesmaid/MS
+bridge/DSMG
+bridgeable/U
+bridgehead/SM
+bridgework/M
+bridle/DSMG
+bridled/U
+bridleway/S
+brie/MZR
+brief's
+brief/CSDTGJ
+briefcase/SM
+briefer
+briefing/CM
+briefly
+briefness/M
+brier/M
+brig/MS
+brigade/SM
+brigadier/MS
+brigand/SM
+brigandage/M
+brigantine/MS
+bright/SPNRYXT
+brighten/DRZG
+brightener/M
+brightness/M
+brights/M
+brill
+brilliance/M
+brilliancy/M
+brilliant/MYS
+brilliantine/M
+brim/MS
+brimful
+brimless
+brimmed
+brimming
+brimstone/M
+brindle/DM
+brine/M
+bring/SRZG
+bringer/M
+brininess/M
+brink/SM
+brinkmanship/M
+briny/RTP
+brioche/SM
+briquette/MS
+brisk/SDRYTGP
+brisket/SM
+briskness/M
+bristle/DSMG
+bristly/TR
+britches/M
+brittle/PRMT
+brittleness/M
+bro/SMH
+broach/MDSG
+broad/SMNRYXTP
+broadband/M
+broadcast/AMGS
+broadcaster/MS
+broadcasting/M
+broadcloth/M
+broaden/DG
+broadloom/M
+broadminded
+broadness/M
+broadsheet/SM
+broadside/MGDS
+broadsword/SM
+brocade/DSMG
+broccoli/M
+brochette/SM
+brochure/MS
+brogan/SM
+brogue/SM
+broil/SMDRZG
+broiler/M
+broke
+broken/YP
+brokenhearted/Y
+brokenness/M
+broker/SMDG
+brokerage/MS
+brolly/S
+bromide/SM
+bromidic
+bromine/M
+bronc/SM
+bronchi
+bronchial
+bronchitic
+bronchitis/M
+bronchus/M
+bronco/SM
+broncobuster/SM
+brontosaur/MS
+brontosaurus/MS
+bronze/DSMG
+brooch/MS
+brood/SMDRZG
+brooder/M
+broodily
+brooding/MY
+broodmare/MS
+broody/RMPT
+brook/SMDG
+brooklet/SM
+broom/SM
+broomstick/MS
+broth/MRZ
+brothel/MS
+brother/MY
+brotherhood/MS
+brotherliness/M
+broths
+brougham/SM
+brought
+brouhaha/SM
+brow/MS
+browbeat/SNG
+brown/SMDRPTG
+brownfield
+brownie/MS
+brownish
+brownness/M
+brownout/SM
+brownstone/MS
+browse/DRSMZG
+browser/M
+brr
+bruin/SM
+bruise/DRSMZG
+bruiser/M
+bruising/M
+bruit/SDG
+brunch/MDSG
+brunet/SM
+brunette/MS
+brunt/M
+brush/MDSG
+brushoff/SM
+brushstroke/S
+brushwood/M
+brushwork/M
+brusque/RPYT
+brusqueness/M
+brutal/Y
+brutality/SM
+brutalization/M
+brutalize/GDS
+brute/SM
+brutish/PY
+brutishness/M
+bu
+bub/SM
+bubble/DSMG
+bubblegum/M
+bubbly/RMT
+bubo/M
+buboes
+buccaneer/SGMD
+buck/MDGS
+buckaroo/SM
+buckboard/MS
+bucket/SGMD
+bucketful/MS
+buckeye/MS
+buckle's
+buckle/UDSG
+buckler/MS
+buckram/M
+bucksaw/MS
+buckshot/M
+buckskin/MS
+buckteeth
+bucktooth/MD
+buckwheat/M
+buckyball/SM
+bucolic/MS
+bucolically
+bud/SM
+budded
+budding/S
+buddy/SM
+budge/DSG
+budgerigar/MS
+budget/SGMD
+budgetary
+budgie/SM
+buff/AMDGS
+buffalo/MDG
+buffaloes
+buffer/SMDG
+buffet/SMDGJ
+buffoon/SM
+buffoonery/M
+buffoonish
+bug's
+bug/CS
+bugaboo/SM
+bugbear/SM
+bugged/C
+bugger/SMDG
+buggery
+bugging/C
+buggy/RSMT
+bugle/DRSMZG
+bugler/M
+build/SMRZGJ
+builder/M
+building/M
+buildup/SM
+built/AI
+builtin
+bulb/MS
+bulbous
+bulge/DSMG
+bulgy/RT
+bulimarexia/M
+bulimia/M
+bulimic/SM
+bulk/MDGS
+bulkhead/MS
+bulkiness/M
+bulky/RTP
+bull/MDGS
+bulldog/SM
+bulldogged
+bulldogging
+bulldoze/ZGDRS
+bulldozer/M
+bullet/SM
+bulletin/MDGS
+bulletproof/SDG
+bullfight/SMRZG
+bullfighter/M
+bullfighting/M
+bullfinch/MS
+bullfrog/MS
+bullhead/MDS
+bullheaded/PY
+bullheadedness/M
+bullhorn/MS
+bullion/M
+bullish/YP
+bullishness/M
+bullock/SM
+bullpen/SM
+bullring/MS
+bullshit/MS!
+bullshitted/!
+bullshitter/SM!
+bullshitting/!
+bullwhip/S
+bully/DSMG
+bulrush/MS
+bulwark/MS
+bum/SM
+bumbag/S
+bumble/DRSZG
+bumblebee/SM
+bumbler/M
+bumf
+bummed
+bummer/SM
+bummest
+bumming
+bump/MDRZGS
+bumper/M
+bumph
+bumpiness/M
+bumpkin/MS
+bumptious/PY
+bumptiousness/M
+bumpy/PRT
+bun/SM
+bunch/MDSG
+bunchy/RT
+bunco/SMDG
+bundle/DSMG
+bung/MDGS
+bungalow/MS
+bungee/SM
+bunghole/MS
+bungle/DRSMZG
+bungler/M
+bunion/SM
+bunk's
+bunk/CDGS
+bunker/SM
+bunkhouse/SM
+bunkum/M
+bunny/SM
+bunt/MDGSJ
+bunting/M
+buoy/MDGS
+buoyancy/M
+buoyant/Y
+bur/SMY
+burble/DSMG
+burbs/M
+burden's
+burden/USGD
+burdensome
+burdock/M
+bureau/SM
+bureaucracy/SM
+bureaucrat/MS
+bureaucratic
+bureaucratically
+bureaucratization/M
+bureaucratize/GDS
+burg/MRZS
+burgeon/DSG
+burger/M
+burgh/MRZ
+burgher/M
+burghs
+burglar/MS
+burglarize/GDS
+burglarproof
+burglary/SM
+burgle/DSG
+burgomaster/SM
+burgundy/SM
+burial/ASM
+burka/SM
+burl/MDS
+burlap/M
+burlesque/MGDS
+burliness/M
+burly/RPT
+burn/MDRZGSB
+burnable/SM
+burner/M
+burnish/ZGMDRS
+burnisher/M
+burnoose/MS
+burnout/MS
+burnt
+burp/MDGS
+burr/MDGS
+burrito/MS
+burro/SM
+burrow/SMDRZG
+burrower/M
+bursa/M
+bursae
+bursar/SM
+bursary/SM
+bursitis/M
+burst/SMG
+bury/ADSG
+bus/AMS
+busboy/SM
+busby/SM
+bused
+busgirl/MS
+bush/MDSGJ
+bushel/SGMD
+bushiness/M
+bushing/M
+bushman/M
+bushmaster/SM
+bushmen
+bushwhack/DRSZG
+bushwhacker/M
+bushy/RPT
+busily
+business/MS
+businesslike
+businessman/M
+businessmen
+businessperson/SM
+businesswoman/M
+businesswomen
+busing/M
+busk/DRZGS
+buskin/SM
+busload/S
+buss/M
+bust/MDRZGS
+buster/M
+bustle/DSMG
+busty/RZT
+busy/DRSTGP
+busybody/SM
+busyness/M
+busywork/M
+but/ACS
+butane/M
+butch/MRSZ
+butcher/MDG
+butchery/SM
+butler/SM
+butt/MDRZGS
+butte/SM
+butted/A
+butter/MDG
+butterball/MS
+buttercream
+buttercup/SM
+butterfat/M
+butterfingered
+butterfingers/M
+butterfly/GDSM
+buttermilk/M
+butternut/SM
+butterscotch/M
+buttery/TRSM
+butting/A
+buttock/SM
+button's
+button/USDG
+buttonhole/DSMG
+buttonwood/MS
+buttress/MDSG
+butty/S
+buxom
+buy/ZGSMR
+buyback/SM
+buyer/M
+buyout/SM
+buzz/MDRSZG
+buzzard/MS
+buzzer/M
+buzzkill/SM
+buzzword/SM
+bx
+bxs
+by/M
+bye/SM
+bygone/SM
+bylaw/SM
+byline/SM
+bypass/GMDS
+bypath/M
+bypaths
+byplay/M
+byproduct/MS
+byre/S
+byroad/SM
+bystander/MS
+byte/MS
+byway/SM
+byword/SM
+byzantine
+c/IES
+ca
+cab/SMRZ
+cabal/MS
+cabala's
+caballero/MS
+cabana/SM
+cabaret/SM
+cabbage/MS
+cabbed
+cabbing
+cabby/SM
+cabdriver/SM
+cabin/MS
+cabinet/SM
+cabinetmaker/MS
+cabinetmaking/M
+cabinetry/M
+cabinetwork/M
+cable/MGDS
+cablecast/GMS
+cablegram/MS
+cabochon/SM
+caboodle/M
+caboose/SM
+cabriolet/SM
+cabstand/SM
+cacao/MS
+cache/MGDS
+cachepot/SM
+cachet/MS
+cackle/MZGDRS
+cackler/M
+cacophonous
+cacophony/SM
+cacti
+cactus/M
+cad/SM
+cadaver/SM
+cadaverous
+caddie/MDS
+caddish/YP
+caddishness/M
+caddying
+cadence/DSM
+cadenza/SM
+cadet/MS
+cadge/ZGDRS
+cadger/M
+cadmium/M
+cadre/MS
+caducei
+caduceus/M
+caesura/SM
+cafe/SM
+cafeteria/MS
+cafetiere/S
+caff/CS
+caffeinated
+caffeine/M
+caftan/MS
+cage/DSMG
+cagey
+cagier
+cagiest
+cagily
+caginess/M
+cagoule/S
+cahoot/MS
+caiman/MS
+cairn/MS
+caisson/SM
+caitiff/SM
+cajole/ZGLDRS
+cajolement/M
+cajoler/M
+cajolery/M
+cake/DSMG
+cakewalk/SM
+cal
+calabash/MS
+calaboose/SM
+calamari/SM
+calamine/M
+calamitous/Y
+calamity/SM
+calcareous
+calciferous
+calcification/M
+calcify/GNDS
+calcimine/DSMG
+calcine/DSG
+calcite/M
+calcium/M
+calculable/I
+calculate/AGNVDSX
+calculated/Y
+calculating/Y
+calculation/AM
+calculator/SM
+calculi
+calculus/M
+caldera/SM
+calendar/MDGS
+calender's
+calf/M
+calfskin/M
+caliber/SM
+calibrate/GNDSX
+calibration/M
+calibrator/SM
+calico/M
+calicoes
+californium/M
+caliper/SGMD
+caliph/M
+caliphate/MS
+caliphs
+calisthenic/S
+calisthenics/M
+calk/SGMD
+call/ASGMD
+calla/MS
+callable
+callback/MS
+called/U
+caller/MS
+calligrapher/SM
+calligraphic
+calligraphist/MS
+calligraphy/M
+calling/SM
+calliope/MS
+callosity/SM
+callous/PGDSY
+callousness/M
+callow/RPT
+callowness/M
+callus/MDSG
+calm/PSTGMDRY
+calmness/M
+caloric
+calorie/MS
+calorific
+calumet/MS
+calumniate/GNDS
+calumniation/M
+calumniator/MS
+calumnious
+calumny/SM
+calve/GDS
+calypso/MS
+calyx/MS
+cam/SM
+camaraderie/M
+camber/MDSG
+cambial
+cambium/SM
+cambric/M
+camcorder/SM
+came
+camel/MS
+camelhair
+camellia/MS
+cameo/MS
+camera/MS
+cameraman/M
+cameramen
+camerawoman/M
+camerawomen
+camerawork
+camiknickers
+camisole/SM
+camouflage/MZGDRS
+camouflager/M
+camp's
+camp/CSGD
+campaign/SMDRZG
+campaigner/M
+campanile/SM
+campanologist/MS
+campanology/M
+camper/MS
+campfire/SM
+campground/SM
+camphor/M
+camping/M
+campsite/SM
+campus/MS
+campy/TR
+camshaft/SM
+can't
+can/SMDRZG
+canal/MS
+canalization/M
+canalize/GDS
+canape/MS
+canard/MS
+canary/SM
+canasta/M
+cancan/MS
+cancel/DRSZG
+canceler/M
+cancellation/SM
+cancer/MS
+cancerous
+candelabra/SM
+candelabrum/M
+candid/YP
+candida
+candidacy/SM
+candidate/MS
+candidature/SM
+candidness/M
+candle/MZGDRS
+candlelight/M
+candlelit
+candlepower/M
+candler/M
+candlestick/MS
+candlewick/SM
+candor/M
+candy/GDSM
+candyfloss
+cane/SM
+canebrake/MS
+caner/M
+canine/MS
+canister/SM
+canker/GMDS
+cankerous
+cannabis/MS
+canned
+cannelloni/M
+cannery/SM
+cannibal/SM
+cannibalism/M
+cannibalistic
+cannibalization/M
+cannibalize/GDS
+cannily/U
+canniness/M
+canning
+cannon/GMDS
+cannonade/MGDS
+cannonball/SM
+cannot
+canny/UTR
+canoe/MDS
+canoeing
+canoeist/SM
+canola/M
+canon/MS
+canonical/Y
+canonization/SM
+canonize/DSG
+canoodle/DSG
+canopy/GDSM
+canst
+cant's
+cant/CZRDGS
+cantabile
+cantaloupe/SM
+cantankerous/PY
+cantankerousness/M
+cantata/MS
+canteen/MS
+canter/CM
+cantered
+cantering
+canticle/MS
+cantilever/MDGS
+canto/MS
+canton/MLS
+cantonal
+cantonment/MS
+cantor/MS
+canvas/MGDS
+canvasback/SM
+canvass/MDRSZG
+canvasser/M
+canyon/MGS
+cap/SMDRBZ
+capabilities
+capability/IM
+capable/I
+capably/I
+capacious/PY
+capaciousness/M
+capacitance/M
+capacities
+capacitor/SM
+capacity/IM
+caparison/MDGS
+cape/SM
+caper/GMD
+capeskin/M
+capillarity/M
+capillary/SM
+capital/MSY
+capitalism/M
+capitalist/SM
+capitalistic
+capitalistically
+capitalization/M
+capitalize/ADSG
+capitation/CSM
+capitol/SM
+capitulate/ADSXGN
+capitulation/AM
+caplet/MS
+capo/SM
+capon/MS
+capped/UA
+capping/UA
+cappuccino/SM
+caprice/SM
+capricious/PY
+capriciousness/M
+capsicum/SM
+capsize/DSG
+capstan/SM
+capstone/MS
+capsular
+capsule/DSMG
+capsulize/DSG
+capt
+captain/SMDG
+captaincy/SM
+caption/SMDG
+captious/YP
+captiousness/M
+captivate/DSGN
+captivation/M
+captivator/SM
+captive/SM
+captivity/SM
+captor/MS
+capture/ADSMG
+car/SMDRZG
+carafe/MS
+caramel/SM
+caramelize/DSG
+carapace/SM
+carat/MS
+caravan/SM
+caravansary/SM
+caravel/SM
+caraway/SM
+carbide/SM
+carbine/SM
+carbohydrate/SM
+carbolic
+carbon/MS
+carbonaceous
+carbonate/MGNDS
+carbonation/M
+carboniferous
+carbonize/GDS
+carborundum/M
+carboy/MS
+carbs
+carbuncle/SM
+carbuncular
+carburetor/SM
+carcass/MS
+carcinogen/SM
+carcinogenic/MS
+carcinogenicity/M
+carcinoma/MS
+card/ESGMD
+cardamom/SM
+cardamon/S
+cardboard/M
+carder/MS
+cardholder/S
+cardiac
+cardie/S
+cardigan/SM
+cardinal/SMY
+cardio
+cardiogram/SM
+cardiograph/M
+cardiographs
+cardiologist/MS
+cardiology/M
+cardiomyopathy
+cardiopulmonary
+cardiovascular
+cardsharp/MRZS
+cardsharper/M
+care/SM
+careen/DGS
+career/MDGS
+careerism
+careerist/SM
+carefree
+careful/YP
+carefuller
+carefullest
+carefulness/M
+caregiver/SM
+careless/PY
+carelessness/M
+carer/M
+caress/MDSG
+caret/MS
+caretaker/MS
+careworn
+carfare/M
+cargo/M
+cargoes
+carhop/MS
+caribou/SM
+caricature/MGDS
+caricaturist/SM
+caries/M
+carillon/SM
+caring/M
+carious
+carjack/JSDRZG
+carjacker/M
+carjacking/M
+carload/SM
+carmine/SM
+carnage/M
+carnal/Y
+carnality/M
+carnation/IMS
+carnelian/MS
+carnival/MS
+carnivora
+carnivore/SM
+carnivorous/PY
+carnivorousness/M
+carny/SM
+carob/MS
+carol/ZGMDRS
+caroler/M
+carom/GMDS
+carotene/M
+carotid/SM
+carousal/SM
+carouse/DRSMZG
+carousel/SM
+carouser/M
+carp/SZGMDR
+carpal/MS
+carpel/MS
+carpenter/MDGS
+carpentry/M
+carper/M
+carpet/MDGS
+carpetbag/MS
+carpetbagged
+carpetbagger/MS
+carpetbagging
+carpeting/M
+carpi
+carpool/SMDG
+carport/SM
+carpus/M
+carrel/MS
+carriage/SM
+carriageway/S
+carrier/M
+carrion/M
+carrot/MS
+carroty
+carry/ZGDRSM
+carryall/SM
+carrycot/S
+carryout
+carryover/MS
+carsick/P
+carsickness/M
+cart/SZGMDR
+cartage/M
+cartel/MS
+carter/M
+carthorse/SM
+cartilage/SM
+cartilaginous
+cartload/SM
+cartographer/SM
+cartographic
+cartography/M
+carton/MS
+cartoon/SMDG
+cartoonist/MS
+cartridge/MS
+cartwheel/GMDS
+carve/JZGDRS
+carver/M
+carvery/S
+carving/M
+caryatid/MS
+casaba/MS
+cascade/DSMG
+cascara/SM
+case/LDSJMG
+casebook/S
+cased/U
+caseharden/DGS
+casein/M
+caseload/MS
+casement/MS
+casework/ZMR
+caseworker/M
+cash/GMDS
+cashback/M
+cashbook/MS
+cashew/MS
+cashier/GSMD
+cashless
+cashmere/M
+casing/M
+casino/MS
+cask/SM
+casket/MS
+cassava/SM
+casserole/DSMG
+cassette/MS
+cassia/MS
+cassock/SM
+cassowary/SM
+cast/ASGM
+castanet/MS
+castaway/MS
+caste/JMZRS
+castellated
+caster/M
+castigate/DSGN
+castigation/M
+castigator/SM
+casting/AM
+castle/MGDS
+castoff/SM
+castor/MS
+castrate/GNXDS
+castration/M
+casual/PMYS
+casualness/M
+casualty/SM
+casuist/SM
+casuistic
+casuistry/M
+cat/SM
+cataclysm/MS
+cataclysmal
+cataclysmic
+catacomb/SM
+catafalque/MS
+catalepsy/M
+cataleptic/MS
+catalog/ZGSMDR
+cataloger/M
+catalpa/SM
+catalyses
+catalysis/M
+catalyst/MS
+catalytic/M
+catalyze/GDS
+catamaran/SM
+catapult/GMDS
+cataract/MS
+catarrh/M
+catastrophe/MS
+catastrophic
+catastrophically
+catatonia/M
+catatonic/SM
+catbird/SM
+catboat/SM
+catcall/GSMD
+catch/ZGJLMRS
+catchall/MS
+catcher/M
+catchment/MS
+catchpenny
+catchphrase/SM
+catchword/MS
+catchy/RT
+catechism/SM
+catechist/SM
+catechize/DSG
+categorical/Y
+categorization/MS
+categorize/GDS
+category/SM
+cater/ZGJDRS
+catercorner
+caterer/M
+caterpillar/MS
+caterwaul/SMDG
+catfish/MS
+catgut/M
+catharses
+catharsis/M
+cathartic/SM
+cathedral/SM
+catheter/SM
+catheterize/DSG
+cathode/SM
+cathodic
+catholic
+catholicity/M
+cation/MS
+catkin/MS
+catlike
+catnap/MS
+catnapped
+catnapping
+catnip/M
+catsuit/S
+cattail/SM
+catted
+cattery/S
+cattily
+cattiness/M
+catting
+cattle/M
+cattleman/M
+cattlemen
+catty/TPR
+catwalk/SM
+caucus/MDSG
+caudal/Y
+caught/U
+cauldron/MS
+cauliflower/SM
+caulk/ZGMDRS
+caulker/M
+causal/Y
+causality/SM
+causation/M
+causative
+cause/MZGDRS
+causeless
+causer/M
+causerie/SM
+causeway/SM
+caustic/SM
+caustically
+causticity/M
+cauterization/M
+cauterize/GDS
+caution/SMDG
+cautionary
+cautious/IY
+cautiousness/M
+cavalcade/MS
+cavalier/SMY
+cavalry/SM
+cavalryman/M
+cavalrymen
+cave/DRSMZG
+caveat/MS
+caveman/M
+cavemen
+cavern/MS
+cavernous/Y
+caviar/M
+cavil/ZGJMDRS
+caviler/M
+caving/M
+cavity/FSM
+cavort/DGS
+caw/SMDG
+cay/CSM
+cayenne/M
+cayuse/MS
+cc
+cease/CMGDS
+ceasefire/MS
+ceaseless/YP
+ceaselessness/M
+ceca
+cecal
+cecum/M
+cedar/MS
+cede/FAGSD
+ceder/MS
+cedilla/SM
+ceilidh
+ceilidhs
+ceiling/MS
+celandine/M
+celeb/S
+celebrant/SM
+celebrate/DSGNX
+celebration/M
+celebrator/SM
+celebratory
+celebrity/SM
+celeriac
+celerity/M
+celery/M
+celesta/MS
+celestial/Y
+celibacy/M
+celibate/MS
+cell/SMD
+cellar/MS
+cellist/SM
+cellmate/SM
+cello/MS
+cellophane/M
+cellphone/MS
+cellular/SM
+cellulite/M
+cellulitis
+celluloid/M
+cellulose/M
+cement/MDRZGS
+cementer/M
+cementum/M
+cemetery/SM
+cenobite/MS
+cenobitic
+cenotaph/M
+cenotaphs
+censer/MS
+censor/MDGS
+censored/U
+censorial
+censorious/PY
+censoriousness/M
+censorship/M
+censure/BDRSMZG
+censurer/M
+census/MDSG
+cent/SZMR
+centaur/SM
+centavo/SM
+centenarian/MS
+centenary/SM
+centennial/MYS
+center/MDG
+centerboard/SM
+centerfold/MS
+centerpiece/MS
+centigrade
+centigram/SM
+centiliter/MS
+centime/SM
+centimeter/MS
+centipede/SM
+central/SMY
+centralism
+centralist
+centrality/M
+centralization/CM
+centralize/CGDS
+centralizer/MS
+centrifugal/Y
+centrifuge/DSMG
+centripetal/Y
+centrism/M
+centrist/MS
+centurion/SM
+century/SM
+cephalic
+ceramic/SM
+ceramicist/SM
+ceramics/M
+ceramist/MS
+cereal/MS
+cerebellar
+cerebellum/SM
+cerebra
+cerebral
+cerebrate/GNDS
+cerebration/M
+cerebrovascular
+cerebrum/MS
+cerement/MS
+ceremonial/SMY
+ceremonious/UY
+ceremoniousness/M
+ceremony/SM
+cerise/M
+cerium/M
+cermet/M
+cert/S
+certain/UY
+certainty/USM
+certifiable
+certifiably
+certificate/MGNXDS
+certification/M
+certify/DSG
+certitude/IM
+certitudes
+cerulean/M
+cervical
+cervices
+cervix/M
+cesarean/MS
+cesium/M
+cessation/MS
+cession/KAFSM
+cesspit/S
+cesspool/MS
+cetacean/MS
+cf
+cg
+ch/IFVT
+chad/S
+chafe/GDS
+chaff/GMDS
+chaffinch/MS
+chagrin/GSMD
+chain's
+chain/UGDS
+chainsaw/MDGS
+chair/GMDS
+chairlift/MS
+chairman/M
+chairmanship/SM
+chairmen
+chairperson/SM
+chairwoman/M
+chairwomen
+chaise/MS
+chalcedony/M
+chalet/MS
+chalice/SM
+chalk/GMDS
+chalkboard/SM
+chalkiness/M
+chalky/PRT
+challenge/DRSMZG
+challenged/U
+challenger/M
+challis/M
+chamber/SMD
+chamberlain/MS
+chambermaid/MS
+chambray/M
+chameleon/SM
+chamois/M
+chamomile/MS
+champ/ZGMDS
+champagne/MS
+champion/GMDS
+championship/MS
+chance/MGDS
+chancel/SM
+chancellery/SM
+chancellor/MS
+chancellorship/M
+chancery/SM
+chanciness/M
+chancre/SM
+chancy/PRT
+chandelier/SM
+chandler/MS
+change/MZGDRS
+changeability/M
+changeable/P
+changeableness/M
+changeably
+changed/U
+changeless/Y
+changeling/SM
+changeover/SM
+changer/M
+changing/U
+channel/GSMD
+channelization/M
+channelize/DSG
+chanson/SM
+chant/ZGMDRS
+chanter/M
+chanteuse/MS
+chantey/SM
+chanticleer/MS
+chaos/M
+chaotic
+chaotically
+chap/SM
+chaparral/SM
+chapati/S
+chapatti/S
+chapbook/MS
+chapeau/SM
+chapel/MS
+chaperon/MDGS
+chaperonage/M
+chaperoned/U
+chaplain/MS
+chaplaincy/SM
+chaplet/SM
+chapped
+chapping
+chappy/S
+chapter/SM
+char/SM
+charabanc/MS
+character/MS
+characterful
+characteristic/SM
+characteristically/U
+characterization/MS
+characterize/DSG
+characterless
+charade/SM
+charbroil/GDS
+charcoal/MS
+chard/M
+chardonnay/SM
+charge/AESDGM
+chargeable/A
+charged/U
+charger/SM
+charily
+chariness/M
+chariot/SM
+charioteer/MS
+charisma/M
+charismatic/MS
+charitable/P
+charitableness/M
+charitably/U
+charity/SM
+charlady/S
+charlatan/SM
+charlatanism/M
+charlatanry/M
+charlie/S
+charm/ZGMDRS
+charmer/M
+charming/Y
+charmless
+charred
+charring
+chart/GMDS
+charted/U
+charter's
+charter/ASGD
+charterer/MS
+chartreuse/M
+charwoman/M
+charwomen
+chary/TRP
+chase/MZGDRS
+chaser/M
+chasm/MS
+chassis/M
+chaste/PYTR
+chasten/DGS
+chasteness/M
+chastise/DRSZGL
+chastisement/SM
+chastiser/M
+chastity/M
+chasuble/SM
+chat/SM
+chateau/SM
+chateaux
+chatelaine/SM
+chatline/S
+chatroom/M
+chatted
+chattel/MS
+chatter/MDRZGS
+chatterbox/MS
+chatterer/M
+chattily
+chattiness/M
+chatting
+chatty/TPR
+chauffeur/GMDS
+chauvinism/M
+chauvinist/SM
+chauvinistic
+chauvinistically
+cheap/PXTNRY
+cheapen/DG
+cheapness/M
+cheapo
+cheapskate/MS
+cheat/ZGMDRS
+cheater/M
+check/AGMDS
+checkbook/SM
+checkbox
+checked/U
+checker/MDGS
+checkerboard/SM
+checkers/M
+checklist/MS
+checkmate/MGDS
+checkoff/SM
+checkout/SM
+checkpoint/SM
+checkroom/MS
+checksum
+checkup/MS
+cheddar/M
+cheek/GMDS
+cheekbone/SM
+cheekily
+cheekiness/M
+cheeky/TPR
+cheep/GMDS
+cheer/ZGMDRS
+cheerer/M
+cheerful/YP
+cheerfuller
+cheerfullest
+cheerfulness/M
+cheerily
+cheeriness/M
+cheerio/MS
+cheerleader/SM
+cheerless/PY
+cheerlessness/M
+cheery/TPR
+cheese/MGDS
+cheeseboard/S
+cheeseburger/SM
+cheesecake/SM
+cheesecloth/M
+cheeseparing/M
+cheesiness/M
+cheesy/TPR
+cheetah/M
+cheetahs
+chef/SM
+chem
+chemical/SMY
+chemise/MS
+chemist/MS
+chemistry/M
+chemo/M
+chemotherapeutic
+chemotherapy/M
+chemurgy/M
+chenille/M
+cherish/DSG
+cheroot/MS
+cherry/SM
+chert/M
+cherub/MS
+cherubic
+cherubim
+chervil/M
+chess/M
+chessboard/MS
+chessman/M
+chessmen
+chest/MDS
+chesterfield/SM
+chestful/SM
+chestnut/SM
+chesty/TR
+chevalier/SM
+cheviot/M
+chevron/MS
+chew/SZGMDR
+chewer/M
+chewiness/M
+chewy/PTR
+chg
+chge
+chi/SM
+chiaroscuro/M
+chic/PTMR
+chicane/MS
+chicanery/SM
+chichi/MS
+chick/XMNS
+chickadee/SM
+chicken/MDG
+chickenfeed/M
+chickenhearted
+chickenpox/M
+chickenshit/S!
+chickpea/SM
+chickweed/M
+chicle/M
+chicness/M
+chicory/SM
+chide/GDS
+chiding/Y
+chief/TMRYS
+chiefdom/M
+chieftain/MS
+chieftainship/SM
+chiffon/M
+chiffonier/MS
+chigger/MS
+chignon/MS
+chihuahua/SM
+chilblain/SM
+child/M
+childbearing/M
+childbirth/M
+childbirths
+childcare/M
+childhood/SM
+childish/YP
+childishness/M
+childless/P
+childlessness/M
+childlike
+childminder/S
+childminding
+childproof/GSD
+children/M
+chili/M
+chilies
+chill/JPZTGMDRS
+chiller/M
+chilliness/M
+chilling/Y
+chillness/M
+chilly/TPR
+chime/MZGDRS
+chimer/M
+chimera/MS
+chimeric
+chimerical
+chimney/MS
+chimp/MS
+chimpanzee/SM
+chin/SM
+china/M
+chinaware/M
+chinchilla/MS
+chine/MS
+chink/GMDS
+chinless
+chinned
+chinning
+chino/MS
+chinstrap/MS
+chintz/M
+chintzy/RT
+chinwag/S
+chip/SM
+chipboard
+chipmunk/SM
+chipolata/S
+chipped
+chipper/MS
+chippie
+chipping/S
+chippy/S
+chirography/M
+chiropodist/MS
+chiropody/M
+chiropractic/SM
+chiropractor/SM
+chirp/GMDS
+chirpily
+chirpy/PTR
+chirrup/GMDS
+chisel/ZGMDRS
+chiseler/M
+chit/SM
+chitchat/SM
+chitchatted
+chitchatting
+chitin/M
+chitinous
+chitosan
+chitterlings/M
+chivalrous/PY
+chivalrousness/M
+chivalry/M
+chive/MS
+chivy/GDS
+chlamydia/MS
+chlamydiae
+chloral/M
+chlordane/M
+chloride/MS
+chlorinate/GNDS
+chlorination/M
+chlorine/M
+chlorofluorocarbon/SM
+chloroform/SGMD
+chlorophyll/M
+chloroplast/MS
+chm
+choc/S
+chock/GMDS
+chockablock
+chocoholic/SM
+chocolate/MS
+chocolaty
+choice/MTRS
+choir/MS
+choirboy/MS
+choirmaster/SM
+choke/MZGDRS
+chokecherry/SM
+choker/M
+cholecystectomy
+cholecystitis
+choler/M
+cholera/M
+choleric
+cholesterol/M
+chomp/ZGMDRS
+choose/ZGRS
+chooser/M
+choosiness/M
+choosy/TPR
+chop/SM
+chophouse/SM
+chopped
+chopper/MDGS
+choppily
+choppiness/M
+chopping
+choppy/TPR
+chopstick/SM
+choral/MYS
+chorale/MS
+chord/MS
+chordal
+chordate/SM
+chore/MS
+chorea/M
+choreograph/DRZG
+choreographer/M
+choreographic
+choreographically
+choreographs
+choreography/M
+chorister/SM
+choroid/MS
+chortle/MZGDRS
+chortler/M
+chorus/GMDS
+chose
+chosen
+chow/SGMD
+chowder/MS
+chrism/M
+christen/ASGD
+christening/MS
+christian/U
+christology
+chromatic
+chromatically
+chromatin/M
+chromatography
+chrome/MGDS
+chromium/M
+chromosomal
+chromosome/MS
+chronic
+chronically
+chronicle/DRSMZG
+chronicler/M
+chronograph/M
+chronographs
+chronological/Y
+chronologist/MS
+chronology/SM
+chronometer/SM
+chrysalis/MS
+chrysanthemum/MS
+chub/SM
+chubbiness/M
+chubby/TPR
+chuck/GMDS
+chuckhole/SM
+chuckle/MGDS
+chuffed
+chug/SM
+chugged
+chugging
+chukka/MS
+chum/SM
+chummed
+chummily
+chumminess/M
+chumming
+chummy/PTR
+chump/MS
+chunder/GDS
+chunk/GMDS
+chunkiness/M
+chunky/PTR
+chunter/DGS
+church/MS
+churchgoer/SM
+churchgoing/M
+churchman/M
+churchmen
+churchwarden/MS
+churchwoman
+churchwomen
+churchyard/SM
+churl/MS
+churlish/PY
+churlishness/M
+churn/ZGMDRS
+churner/M
+chute/MS
+chutney/MS
+chutzpah/M
+chyme/M
+ciabatta/SM
+ciao/S
+cicada/MS
+cicatrices
+cicatrix/M
+cicerone/SM
+ciceroni
+cider's
+cider/S
+cigar/MS
+cigarette/MS
+cigarillo/MS
+cilantro/M
+cilia
+cilium/M
+cinch/GMDS
+cinchona/SM
+cincture/SM
+cinder/GMDS
+cine
+cinema/MS
+cinematic
+cinematographer/MS
+cinematographic
+cinematography/M
+cinnabar/M
+cinnamon/M
+cipher's
+cipher/CGDS
+cir
+circa
+circadian
+circle/MGDS
+circlet/MS
+circuit/MDGS
+circuital
+circuitous/YP
+circuitousness/M
+circuitry/M
+circuity/M
+circular/SMY
+circularity/M
+circularize/DSG
+circulate/ADSG
+circulation/SM
+circulatory
+circumcise/XDSGN
+circumcised/U
+circumcision/M
+circumference/MS
+circumferential
+circumflex/MS
+circumlocution/MS
+circumlocutory
+circumnavigate/XGNDS
+circumnavigation/M
+circumpolar
+circumscribe/GDS
+circumscription/MS
+circumspect/Y
+circumspection/M
+circumstance/MGDS
+circumstantial/Y
+circumvent/DSG
+circumvention/M
+circus/MS
+cirque/MS
+cirrhosis/M
+cirrhotic/SM
+cirri
+cirrus/M
+cistern/MS
+cit
+citadel/MS
+citation/AMS
+cite's
+cite/IAGSD
+citified
+citizen/MS
+citizenry/M
+citizenship/M
+citric
+citron/MS
+citronella/M
+citrus/MS
+city/SM
+citywide
+civet/MS
+civic/S
+civically
+civics/M
+civil/UY
+civilian/MS
+civility/ISM
+civilization/MS
+civilize/GDS
+civilized/U
+civvies/M
+ck
+cl
+clack/GMDS
+clad/U
+cladding/M
+claim's
+claim/CKEAGDS
+claimable/A
+claimant/MS
+claimed/U
+claimer/ECSM
+clairvoyance/M
+clairvoyant/MS
+clam/SM
+clambake/MS
+clamber/ZGMDRS
+clamberer/M
+clammed
+clammily
+clamminess/M
+clamming
+clammy/PTR
+clamor/GMDS
+clamorous
+clamp/GMDS
+clampdown/MS
+clan/SM
+clandestine/Y
+clang/ZGMDRS
+clangor/M
+clangorous/Y
+clank/GMDS
+clannish/P
+clannishness/M
+clansman/M
+clansmen
+clanswoman
+clanswomen
+clap/SM
+clapboard/MDGS
+clapped
+clapper/MS
+clapperboard/S
+clapping/M
+claptrap/M
+claque/MS
+claret/MS
+clarification/M
+clarify/XDSNG
+clarinet/SM
+clarinetist/SM
+clarion/MDGS
+clarity/M
+clash/GMDS
+clasp's
+clasp/UGDS
+class/GMDS
+classic/MS
+classical/MY
+classicism/M
+classicist/MS
+classifiable
+classification/CAM
+classifications
+classified's
+classified/U
+classifieds
+classifier/MS
+classify/ACSDGN
+classiness/M
+classless/P
+classmate/MS
+classroom/MS
+classwork/M
+classy/TRP
+clatter/GMDS
+clausal
+clause/MS
+claustrophobia/M
+claustrophobic
+clavichord/SM
+clavicle/MS
+clavier/MS
+claw's
+claw/CSGD
+clay/M
+clayey
+clayier
+clayiest
+clean/BJPZTGDRYS
+cleaner/M
+cleaning/M
+cleanliness/UM
+cleanly/UTPR
+cleanness/UM
+cleanse/ZGDRS
+cleanser/M
+cleanup/MS
+clear/JPTGMDRYS
+clearance/SM
+clearheaded
+clearing/M
+clearinghouse/SM
+clearness/M
+clearway/S
+cleat/MS
+cleavage/MS
+cleave/ZGDRS
+cleaver/M
+clef/SM
+cleft/MS
+clematis/MS
+clemency/IM
+clement/Y
+clementine/S
+clench/GMDS
+clerestory/SM
+clergy/SM
+clergyman/M
+clergymen
+clergywoman/M
+clergywomen
+cleric/MS
+clerical/Y
+clericalism/M
+clerk/GMDS
+clerkship/M
+clever/PTRY
+cleverness/M
+clevis/MS
+clew/SGMD
+cliche/MDS
+click/BZGMDRS
+clicker/M
+client/MS
+clientele/MS
+cliff/MS
+cliffhanger/SM
+cliffhanging
+clifftop/S
+clii
+climacteric/M
+climactic
+climate/SM
+climatic
+climatically
+climatologist/SM
+climatology/M
+climax/MDSG
+climb/SMDRZGB
+climber/M
+climbing/M
+clime/SM
+clinch/MDRSZG
+clincher/M
+cling/SMRZG
+clinger/M
+clingfilm
+clingy/RT
+clinic/SM
+clinical/Y
+clinician/SM
+clink/SMDRZG
+clinker/M
+cliometric/S
+cliometrician/MS
+cliometrics/M
+clip/SM
+clipboard/MS
+clipped
+clipper/SM
+clipping/SM
+clique/SM
+cliquey
+cliquish/YP
+cliquishness/M
+clit/SM
+clitoral
+clitorides
+clitoris/MS
+clix
+cloaca/M
+cloacae
+cloak's
+cloak/USDG
+cloakroom/MS
+clobber/SMDG
+cloche/SM
+clock/SMDG
+clockwise
+clockwork/SM
+clod/MS
+cloddish
+clodhopper/MS
+clog's
+clog/US
+clogged/U
+clogging/U
+cloisonne/M
+cloister/SMDG
+cloistral
+clomp/SDG
+clonal
+clone/DSMG
+clonk/SMDG
+clop/MS
+clopped
+clopping
+close/DRSMYTGJP
+closefisted
+closemouthed
+closeness/M
+closeout/MS
+closet/SMDG
+closeup/SM
+closing/M
+closure/ESM
+clot/MS
+cloth/M
+clothe/UDSG
+clotheshorse/MS
+clothesline/SM
+clothespin/SM
+clothier/MS
+clothing/M
+cloths
+clotted
+clotting
+cloture/SM
+cloud/SMDG
+cloudburst/SM
+clouded/U
+cloudiness/M
+cloudless
+cloudy/RPT
+clout/SMDG
+clove/RSMZ
+cloven
+clover/M
+cloverleaf/SM
+cloverleaves
+clown/SMDG
+clownish/YP
+clownishness/M
+cloy/DGS
+cloying/Y
+club/MS
+clubbable
+clubbed
+clubber/S
+clubbing
+clubfeet
+clubfoot/MD
+clubhouse/SM
+clubland
+cluck/SMDG
+clue/MGDS
+clueless
+clump/SMDG
+clumpy/TR
+clumsily
+clumsiness/M
+clumsy/TRP
+clung
+clunk/SMDRZG
+clunker/M
+clunky/TR
+cluster/MDSG
+clutch/GMDS
+clutter/MDSG
+cluttered/U
+clvi
+clvii
+clxi
+clxii
+clxiv
+clxix
+clxvi
+clxvii
+cm
+cnidarian/MS
+co/ESD
+coach/MDSG
+coachload/S
+coachman/M
+coachmen
+coachwork
+coadjutor/MS
+coagulant/MS
+coagulate/GNDS
+coagulation/M
+coagulator/MS
+coal/MDGS
+coalesce/GDS
+coalescence/M
+coalescent
+coalface/MS
+coalfield/S
+coalition/MS
+coalitionist/MS
+coalmine/S
+coarse/RYTP
+coarsen/SDG
+coarseness/M
+coast/SMDRZG
+coastal
+coaster/M
+coastguard/S
+coastline/MS
+coat/MDGJS
+coating/M
+coatroom/S
+coattail/SM
+coauthor/MDGS
+coax/DRSZG
+coaxer/M
+coaxial
+coaxing/Y
+cob/SM
+cobalt/M
+cobber/S
+cobble/DRSMZG
+cobbler/M
+cobblestone/SM
+cobnut/S
+cobra/SM
+cobweb/SM
+cobwebbed
+cobwebby/RT
+coca/M
+cocaine/M
+cocci/S
+coccus/M
+coccyges
+coccyx/M
+cochineal/M
+cochlea/SM
+cochleae
+cochlear
+cock/MDGS
+cockade/SM
+cockamamie
+cockatoo/SM
+cockatrice/SM
+cockchafer/S
+cockcrow/SM
+cockerel/SM
+cockeyed
+cockfight/MGS
+cockfighting/M
+cockily
+cockiness/M
+cockle/SM
+cockleshell/SM
+cockney/SM
+cockpit/SM
+cockroach/MS
+cockscomb/SM
+cocksucker/MS!
+cocksure
+cocktail/MS
+cocky/RTP
+coco/MS
+cocoa/SM
+coconut/SM
+cocoon/SMDG
+cod/SM
+coda/MS
+codded
+codding
+coddle/DSG
+code's
+code/CZGDRS
+codeine/M
+codependency/M
+codependent/SM
+coder/CM
+codex/M
+codfish/MS
+codger/SM
+codices
+codicil/SM
+codification/M
+codifier/M
+codify/XDRSNZG
+codon/S
+codpiece/MS
+codswallop
+coed/MS
+coeducation/M
+coeducational
+coefficient/MS
+coelenterate/MS
+coequal/MYS
+coerce/DRSZGNV
+coercer/M
+coercion/M
+coeval/SMY
+coexist/DSG
+coexistence/M
+coexistent
+coextensive
+coffee/SM
+coffeecake/SM
+coffeehouse/MS
+coffeemaker/SM
+coffeepot/MS
+coffer/SM
+cofferdam/MS
+coffin/SMDG
+cog/SM
+cogency/M
+cogent/Y
+cogitate/DSXGNV
+cogitation/M
+cogitator/MS
+cognac/SM
+cognate/MS
+cognition/AM
+cognitional
+cognitive/Y
+cognizable
+cognizance/AM
+cognizant
+cognomen/SM
+cognoscente/M
+cognoscenti
+cogwheel/SM
+cohabit/SGD
+cohabitant/MS
+cohabitation/M
+coheir/SM
+cohere/DSG
+coherence/IM
+coherency/M
+coherent/IY
+cohesion/M
+cohesive/YP
+cohesiveness/M
+coho/MS
+cohort/SM
+coif/MS
+coiffed
+coiffing
+coiffure/DSMG
+coil's/A
+coil/UADGS
+coin/MDRZGS
+coinage/SM
+coincide/DSG
+coincidence/MS
+coincident
+coincidental/Y
+coiner/M
+coinsurance/M
+coir
+coital
+coitus/M
+coke/MGDS
+col/S
+cola/MS
+colander/SM
+cold/MRYTPS
+coldblooded
+coldness/M
+coleslaw/M
+coleus/MS
+coley/S
+colic/M
+colicky
+coliseum/MS
+colitis/M
+coll
+collaborate/DSXGNV
+collaboration/M
+collaborationist
+collaborative/Y
+collaborator/MS
+collage/SM
+collagen
+collapse/MGDS
+collapsible
+collar/SMDG
+collarbone/SM
+collard/SM
+collarless
+collate/DSXGN
+collateral/MY
+collateralize
+collation/M
+collator/MS
+colleague/MS
+collect's
+collect/ASGVD
+collected/U
+collectedly
+collectible/SM
+collection/AMS
+collective/MYS
+collectivism/M
+collectivist/SM
+collectivization/M
+collectivize/DSG
+collector/MS
+colleen/SM
+college/SM
+collegiality/M
+collegian/MS
+collegiate
+collide/DSG
+collie/RSMZ
+collier/M
+colliery/SM
+collision/SM
+collocate/MGNDSX
+collocation/M
+colloid/SM
+colloidal
+colloq
+colloquial/Y
+colloquialism/SM
+colloquies
+colloquium/MS
+colloquy/M
+collude/DSG
+collusion/M
+collusive
+cologne/SM
+colon/SM
+colonel/SM
+colonelcy/M
+colones
+colonial/SMY
+colonialism/M
+colonialist/MS
+colonist/SM
+colonization/ACM
+colonize/CAGSD
+colonizer/MS
+colonnade/MDS
+colonoscopy/SM
+colony/SM
+colophon/SM
+color's
+color/AEGDS
+colorant/SM
+coloration/EM
+coloratura/MS
+colorblind/P
+colorblindness/M
+colored's
+colored/U
+coloreds
+colorfast/P
+colorfastness/M
+colorful/PY
+colorfulness/M
+coloring's
+colorist/S
+colorization/M
+colorize/DSG
+colorless/PY
+colorlessness/M
+colorway/S
+colossal/Y
+colossi
+colossus/M
+colostomy/SM
+colostrum/M
+colt/MS
+coltish
+columbine/SM
+column/SMD
+columnar
+columnist/SM
+com/JL
+coma/MS
+comaker/SM
+comatose
+comb/MDRZGJS
+combat/SMDGV
+combatant/SM
+combativeness/M
+combed/U
+comber/M
+combination/SM
+combine's
+combine/ADSG
+combined/U
+combiner/MS
+combings/M
+combo/SM
+combustibility/M
+combustible/MS
+combustion/M
+combustive
+come/IMZGRS
+comeback/MS
+comedian/MS
+comedic
+comedienne/MS
+comedown/MS
+comedy/SM
+comeliness/M
+comely/RPT
+comer's
+comestible/SM
+comet/SM
+comeuppance/SM
+comfit's
+comfit/ES
+comfort/ESMDG
+comfortable/P
+comfortableness/M
+comfortably/U
+comforter/MS
+comforting/Y
+comfortless
+comfy/RT
+comic/SM
+comical/Y
+comicality/M
+coming/M
+comity/M
+comm
+comma/SM
+command/SMDRLZG
+commandant/MS
+commandeer/GDS
+commander/M
+commandment/MS
+commando/SM
+commemorate/XGNVDS
+commemoration/M
+commemorator/MS
+commence/ADSLG
+commencement/AM
+commencements
+commend/ASDBG
+commendably
+commendation/AMS
+commendatory
+commensurable
+commensurate/IY
+comment/GSMD
+commentary/SM
+commentate/DSG
+commentator/SM
+commerce/M
+commercial/SMY
+commercialism/M
+commercialization/M
+commercialize/GDS
+commie/SM
+commingle/DSG
+commiserate/GNVDSX
+commiseration/M
+commissar/SM
+commissariat/SM
+commissary/SM
+commission's
+commission/ACSGD
+commissionaire/S
+commissioner/SM
+commit/AS
+commitment/MS
+committal/SM
+committed/AU
+committee/SM
+committeeman/M
+committeemen
+committeewoman/M
+committeewomen
+committer/S
+committing/A
+commode's
+commode/EIS
+commodification
+commodious/Y
+commodity/SM
+commodore/SM
+common's
+common/UPRYT
+commonality/S
+commonalty/M
+commoner/MS
+commonness/UM
+commonplace/MS
+commons
+commonsense
+commonweal/MH
+commonwealth/M
+commonwealths
+commotion/SM
+communal/Y
+commune/XDSMGN
+communicability/M
+communicable/I
+communicably
+communicant/MS
+communicate/GNVDSX
+communication/M
+communicative/U
+communicator/SM
+communion/M
+communique/SM
+communism/M
+communist/SM
+communistic
+community/SM
+commutation/MS
+commutative
+commutator/SM
+commute/BDRSMZG
+commuter/M
+comp/MDYGS
+compact/TGSMDRYP
+compaction
+compactness/M
+compactor/SM
+companion/SBM
+companionably
+companionship/M
+companionway/MS
+company/SM
+comparability/M
+comparable/I
+comparably/I
+comparative/MYS
+compare/BDSMG
+comparison/MS
+compartment/SM
+compartmental
+compartmentalization/M
+compartmentalize/DSG
+compass/GMDS
+compassion/M
+compassionate/Y
+compatibility/IM
+compatible/IMS
+compatibly/I
+compatriot/MS
+compeer/SM
+compel/S
+compelled
+compelling/Y
+compendious
+compendium/SM
+compensate/DSXGN
+compensated/U
+compensation/M
+compensatory
+compere/DSG
+compete/DSG
+competence/IM
+competences
+competencies
+competency/IM
+competent/IY
+competition/SM
+competitive/PY
+competitiveness/M
+competitor/SM
+compilation/SM
+compile/DRSZG
+compiler/M
+complacence/M
+complacency/M
+complacent/Y
+complain/DRZGS
+complainant/MS
+complainer/M
+complaint/SM
+complaisance/M
+complaisant/Y
+complected
+complement/SGMD
+complementary
+complete/PYTGNXDRS
+completed/U
+completeness/IM
+completion/M
+complex/MSY
+complexion/MDS
+complexional
+complexity/SM
+compliance/M
+compliant/Y
+complicate/GDS
+complicated/Y
+complication/M
+complicit
+complicity/M
+compliment/MDGS
+complimentary/U
+comply/NDSXG
+compo/S
+component/SM
+comport/LSGD
+comportment/M
+compose/AECGSD
+composedly
+composer/MS
+composite/MYGNXDS
+composition/CM
+compositor/SM
+compost/SGMD
+composure/EM
+compote/SM
+compound/GMDBS
+compounded/U
+comprehend/SDG
+comprehensibility/IM
+comprehensible/I
+comprehensibly/I
+comprehension/IM
+comprehensions
+comprehensive/PMYS
+comprehensiveness/M
+compress's
+compress/CGDS
+compressed/U
+compressible
+compression/CM
+compressor/SM
+comprise/GDS
+compromise/MGDS
+comptroller/MS
+compulsion/MS
+compulsive/YP
+compulsiveness/M
+compulsorily
+compulsory/SM
+compunction/SM
+computation/SM
+computational/Y
+compute/ADSG
+computer/MS
+computerate
+computerization/M
+computerize/GDS
+computing/M
+comrade/SMY
+comradeship/M
+con/GSM
+concatenate/XDSGN
+concatenation/M
+concave/YP
+concaveness/M
+conceal/SDRZGBL
+concealed/U
+concealer/M
+concealment/M
+conceit/SMD
+conceited/PY
+conceitedness/M
+conceivable/I
+conceivably/I
+conceive/DSGB
+concentrate/DSMGNX
+concentration/M
+concentric
+concentrically
+concept/SM
+conception/SM
+conceptional
+conceptual/Y
+conceptualization/MS
+conceptualize/DSG
+concern/UMD
+concerned/UY
+concerning
+concerns
+concert's
+concert/ESDG
+concerted/Y
+concertgoer/S
+concertina/SGMD
+concertize/DSG
+concertmaster/MS
+concerto/SM
+concessionaire/MS
+concessional
+concessionary
+conch/M
+conchie/S
+conchs
+concierge/MS
+conciliate/DSGN
+conciliation/AM
+conciliator/SM
+conciliatory
+concise/RPYTN
+conciseness/M
+concision/M
+conclave/SM
+conclude/DSG
+conclusion/MS
+conclusive/IYP
+conclusiveness/IM
+concoct/SDG
+concoction/MS
+concomitant/MYS
+concord/M
+concordance/SM
+concordant
+concordat/SM
+concourse/SM
+concrete/DSPMYGNX
+concreteness/M
+concretion/M
+concubinage/M
+concubine/MS
+concupiscence/M
+concupiscent
+concur/S
+concurred
+concurrence/SM
+concurrency
+concurring
+concuss/V
+concussion/SM
+condemn/SDRZG
+condemnation/MS
+condemnatory
+condemner/M
+condensate/MNXS
+condensation/M
+condense/DRSZG
+condenser/M
+condescending/Y
+condescension/M
+condign
+condiment/MS
+condition's
+condition/AGSD
+conditional/SMY
+conditioned/U
+conditioner/SM
+conditioning/M
+condo/SM
+condolence/SM
+condom/SM
+condominium/MS
+condone/DSG
+condor/SM
+conduce/DSGV
+conduct/MDGV
+conductance/M
+conductibility/M
+conductible
+conduction/M
+conductivity/M
+conductor/MS
+conductress/MS
+conduit/SM
+cone/M
+coneys
+confab/SM
+confabbed
+confabbing
+confabulate/XDSGN
+confabulation/M
+confection/SZMR
+confectioner/M
+confectionery/SM
+confederacy/SM
+confederate/M
+confer/S
+conferee/SM
+conference/MGS
+conferrable
+conferral/M
+conferred
+conferrer/MS
+conferring
+confessed/Y
+confession/SM
+confessional/SM
+confessor/MS
+confetti/M
+confidant/MS
+confidante/SM
+confide/DRSZG
+confidence/SM
+confident/Y
+confidential/Y
+confidentiality/M
+confider/M
+confiding/Y
+configuration/S
+configure/B
+confined/U
+confinement/MS
+confirm/ASDG
+confirmation/ASM
+confirmatory
+confirmed/U
+confiscate/DSGNX
+confiscation/M
+confiscator/SM
+confiscatory
+conflagration/MS
+conflate/XDSGN
+conflation/M
+conflict/SGMD
+confluence/MS
+confluent
+conform/ZB
+conformable/U
+conformance/M
+conformism/M
+conformist/SM
+conformity/M
+confrere/MS
+confrontation/SM
+confrontational
+confuse/RZ
+confused/Y
+confusing/Y
+confutation/M
+confute/DSG
+conga/SMDG
+congeal/SLDG
+congealment/M
+conger/SM
+congeries/M
+congest/SDGV
+congestion/M
+conglomerate/DSXMGN
+conglomeration/M
+congrats/M
+congratulate/XGNDS
+congratulation/M
+congratulatory
+congregant/MS
+congregate/GNDSX
+congregation/M
+congregational
+congregationalism/M
+congregationalist/MS
+congress/MS
+congressional
+congressman/M
+congressmen
+congresspeople
+congressperson/MS
+congresswoman/M
+congresswomen
+congruence/M
+congruent/Y
+congruity/ISM
+congruous
+conic/SM
+conical/Y
+conifer/SM
+coniferous
+conjectural
+conjecture/MGDS
+conjoint
+conjugal/Y
+conjugate/DSXGN
+conjugation/M
+conjunct/VMS
+conjunctiva/SM
+conjunctive/SM
+conjunctivitis/M
+conjuration/MS
+conjure/DRSZG
+conjurer/M
+conk/MDRZ
+conman
+connect/AEDVGS
+connectable
+connected/U
+connection/EMS
+connective/MS
+connectivity/M
+connector/MS
+conned
+conning
+conniption/MS
+connivance/M
+connive/DRSZG
+conniver/M
+connoisseur/SM
+connotative
+connubial
+conquer/ASDG
+conquerable/U
+conquered/U
+conqueror/MS
+conquest/AM
+conquistador/SM
+cons/DSG
+consanguineous
+consanguinity/M
+conscienceless
+conscientious/PY
+conscientiousness/M
+conscious/UYP
+consciousness/UM
+consciousnesses
+conscription/M
+consecrate/ADSGN
+consecrated/U
+consecration/AM
+consecrations
+consecutive/Y
+consensual
+consensus/MS
+consent/SMDG
+consequence/SM
+consequent/Y
+consequential/IY
+conservancy/SM
+conservation/M
+conservationism/M
+conservationist/SM
+conservatism/M
+conservative/MYS
+conservatoire/S
+conservator/SM
+conservatory/SM
+consider/AGSD
+considerable/I
+considerably
+considerate/IPYN
+considerateness/IM
+consideration/AIM
+considerations
+considered/U
+consign/ASDG
+consignee/MS
+consignment/MS
+consist/SDG
+consistence/MS
+consistency/ISM
+consistent/IY
+consistory/SM
+consolable/I
+consolation/MS
+consolatory
+consolidate/XDSGN
+consolidated/U
+consolidation/M
+consolidator/MS
+consoling/Y
+consomme/M
+consonance/SM
+consonant/SMY
+consortia
+consortium/M
+conspectus/MS
+conspicuous/IPY
+conspicuousness/IM
+conspiracy/SM
+conspirator/MS
+conspiratorial/Y
+conspire/GD
+constable/SM
+constabulary/SM
+constancy/IM
+constant/MYS
+constellation/SM
+consternation/M
+constipate/GNDS
+constipation/M
+constituency/SM
+constituent/SM
+constitute/ADSGNV
+constitution/AM
+constitutional/MYS
+constitutionalism
+constitutionality/UM
+constitutions
+constrained/U
+constraint/SM
+constrict/GVSD
+constriction/SM
+constrictor/SM
+construable
+construct's
+construct/CADVGS
+construction/CAMS
+constructional
+constructionist's
+constructionist/CS
+constructive/YP
+constructiveness/M
+constructor/MS
+construe/GDS
+consul/KSM
+consular/K
+consulate/SM
+consulship/M
+consult/GSD
+consultancy/SM
+consultant/MS
+consultation/MS
+consultative
+consumable/SM
+consume/BDRSZG
+consumed/U
+consumer/M
+consumerism/M
+consumerist/MS
+consummate/YGNXDS
+consummated/U
+consumption/M
+consumptive/SM
+cont
+contact/ASDG
+contactable
+contagion/MS
+contagious/PY
+contagiousness/M
+contain/SBLDRZG
+container/M
+containerization/M
+containerize/DSG
+containment/M
+contaminant/SM
+contaminate/ACDSG
+contaminated/U
+contamination/CM
+contaminator/SM
+contd
+contemn/SDG
+contemplate/DSGNV
+contemplation/M
+contemplative/SMY
+contemporaneity/M
+contemporaneous/Y
+contempt/M
+contemptible
+contemptibly
+contemptuous/YP
+contemptuousness/M
+contender/MS
+content/ESLMDG
+contented/EY
+contentedness/M
+contention/SM
+contentious/YP
+contentiousness/M
+contently
+contentment/EM
+conterminous/Y
+contestable/I
+contestant/MS
+contested/U
+contextualization
+contextualize/DSG
+contiguity/M
+contiguous/Y
+continence/IM
+continent/SM
+continental/SM
+contingency/SM
+contingent/SMY
+continua
+continual/Y
+continuance/EMS
+continuation/EMS
+continue/EGDS
+continuity/ESM
+continuous/EY
+continuum/M
+contort/GD
+contortion/MS
+contortionist/SM
+contraband/M
+contrabassoon/S
+contraception/M
+contraceptive/SM
+contract/MDG
+contractible
+contractile
+contractility
+contraction/S
+contractual/Y
+contradict/SDG
+contradiction/SM
+contradictory
+contradistinction/MS
+contraflow/S
+contrail/MS
+contraindicate/GNXDS
+contraindication/M
+contralto/SM
+contraption/SM
+contrapuntal/Y
+contrarian/SM
+contrarianism
+contrariety/M
+contrarily
+contrariness/M
+contrariwise
+contrary/PSM
+contrast/MDGS
+contravene/GDS
+contravention/SM
+contretemps/M
+contribute/XGND
+contribution/M
+contributor/MS
+contributory
+contrition/M
+contrivance/MS
+contrive/ZGDRS
+contriver/M
+control's
+control/CS
+controllable/U
+controlled/UC
+controller/MS
+controlling/C
+controversial/Y
+controversy/SM
+controvert/DSG
+controvertible/I
+contumacious/Y
+contumacy/M
+contumelious
+contumely/SM
+contuse/XDSGN
+contusion/M
+conundrum/SM
+conurbation/MS
+convalesce/DSG
+convalescence/MS
+convalescent/SM
+convection/M
+convectional
+convective
+convector/S
+convene/ADSG
+convener/MS
+convenience/IMS
+convenient/IY
+convent/SM
+conventicle/MS
+convention/SM
+conventional/UY
+conventionality/UM
+conventionalize/GDS
+conventioneer/S
+convergence/MS
+convergent
+conversant
+conversation/MS
+conversational/Y
+conversationalist/SM
+converse/Y
+convert's
+convert/AGSD
+converted/U
+converter/SM
+convertibility/M
+convertible/SM
+convex/Y
+convexity/M
+convey/SBDG
+conveyance/MGS
+conveyor/MS
+convict/GSMD
+conviction/MS
+convince/GDS
+convinced/U
+convincing/UY
+convivial/Y
+conviviality/M
+convoke/DSG
+convoluted
+convolution/MS
+convoy/SMDG
+convulse/GNVXDS
+convulsion/M
+convulsive/Y
+cony/M
+coo/GSMD
+cook's
+cook/ADGS
+cookbook/MS
+cooked/U
+cooker/SM
+cookery/SM
+cookhouse/S
+cookie/SM
+cooking/M
+cookout/SM
+cookware/SM
+cool/MDRYZTGPS
+coolant/SM
+cooler/M
+coolie/SM
+coolness/M
+coon/MS!
+coonskin/MS
+coop/MDRZGS
+cooper/MDG
+cooperage/M
+cooperate/DSGNV
+cooperation/M
+cooperative/PMYS
+cooperativeness/M
+cooperator/SM
+coordinate/DSMYGN
+coordinated/U
+coordination/M
+coordinator/MS
+coot/MS
+cootie/SM
+cop/GJSMD
+copacetic
+copay/M
+cope/MS
+copier/SM
+copilot/SM
+coping/M
+copious/PY
+copiousness/M
+copped
+copper/SM
+copperhead/SM
+copperplate/M
+coppery
+copping
+copra/M
+copse/SM
+copter/SM
+copula/SM
+copulate/GNVDS
+copulation/M
+copulative/SM
+copy's
+copy/ADSG
+copybook/SM
+copycat/MS
+copycatted
+copycatting
+copyist/MS
+copyleft
+copyright/GSMD
+copywriter/MS
+coquetry/SM
+coquette/DSMG
+coquettish/Y
+cor
+coracle/SM
+coral/SM
+corbel/SM
+cord/EASGDM
+cordage/M
+cordial/SMY
+cordiality/M
+cordillera/MS
+cordite/M
+cordless
+cordon/SMDG
+cordovan/M
+corduroy/MS
+corduroys/M
+core/MZGDRS
+coreligionist/S
+corer/M
+corespondent/MS
+corgi/SM
+coriander/M
+cork's
+cork/UDGS
+corkage
+corker/SM
+corkscrew/SMDG
+corm/MS
+cormorant/SM
+corn/MDRZGS
+cornball/MS
+cornbread/M
+corncob/MS
+corncrake/S
+cornea/SM
+corneal
+corner/GMD
+cornerstone/SM
+cornet/SM
+cornfield/S
+cornflakes/M
+cornflour
+cornflower/SM
+cornice/MS
+cornily
+corniness/M
+cornmeal/M
+cornrow/MDGS
+cornstalk/SM
+cornstarch/M
+cornucopia/MS
+corny/PRT
+corolla/MS
+corollary/SM
+corona/SM
+coronal/MS
+coronary/SM
+coronation/SM
+coroner/MS
+coronet/MS
+corp
+corpora
+corporal/SM
+corporate/XYN
+corporation/IM
+corporatism
+corporeal/Y
+corporeality/M
+corps/MS
+corpse/M
+corpsman/M
+corpsmen
+corpulence/M
+corpulent
+corpus/M
+corpuscle/MS
+corpuscular
+corr
+corral/SM
+corralled
+corralling
+correct/DRYTGVSBP
+corrected/U
+correction/SM
+correctional
+corrective/SM
+correctness/IM
+corrector
+correlate/XDSMGNV
+correlated/U
+correlation/M
+correlative/MS
+correspond/SDG
+correspondence/SM
+correspondent/SM
+corresponding/Y
+corridor/SM
+corrie/S
+corroborate/GNVDSX
+corroborated/U
+corroboration/M
+corroborator/SM
+corroboratory
+corrode/GDS
+corrosion/M
+corrosive/SMY
+corrugate/GNXDS
+corrugation/M
+corrupt/DRYPSTG
+corruptibility/IM
+corruptible/I
+corruption/MS
+corruptness/M
+corsage/MS
+corsair/MS
+corset/SGMD
+cortege/MS
+cortex/M
+cortical
+cortices
+cortisone/M
+corundum/M
+coruscate/GNDS
+coruscation/M
+corvette/SM
+cos/M
+cosh/DSG
+cosign/ZGSDR
+cosignatory/SM
+cosigner/M
+cosine/SM
+cosmetic/SM
+cosmetically
+cosmetician/MS
+cosmetologist/MS
+cosmetology/M
+cosmic
+cosmically
+cosmogonist/SM
+cosmogony/SM
+cosmological
+cosmologist/SM
+cosmology/SM
+cosmonaut/SM
+cosmopolitan/MS
+cosmopolitanism/M
+cosmos/MS
+cosplay
+cosponsor/GSMD
+cosset/SGD
+cossetted
+cossetting
+cost/MDYGSJ
+costar/SM
+costarred
+costarring
+costliness/M
+costly/PTR
+costume/MZGDRS
+costumer/M
+costumier/S
+cot/SM
+cotangent/MS
+cote/MS
+coterie/MS
+coterminous
+cotillion/SM
+cottage/MZGRS
+cottager/M
+cottar/SM
+cotter/SM
+cotton/SGMD
+cottonmouth/M
+cottonmouths
+cottonseed/MS
+cottontail/MS
+cottonwood/SM
+cottony
+cotyledon/MS
+couch/MDSG
+couchette/S
+cougar/SM
+cough/MDG
+coughs
+could
+could've
+couldn't
+coulee/SM
+coulis
+coulomb/MS
+council/MS
+councilman/M
+councilmen
+councilor/MS
+councilperson/SM
+councilwoman/M
+councilwomen
+counsel/JMDGS
+counselor/MS
+count/EASMDG
+countable/U
+countably
+countdown/MS
+counted/U
+countenance's
+countenance/EGDS
+counter/EMS
+counteract/SGVD
+counteraction/MS
+counterargument/S
+counterattack/GMDS
+counterbalance/MGDS
+counterblast/S
+counterclaim/GSMD
+counterclockwise
+counterculture/SM
+countered
+counterespionage/M
+counterexample/S
+counterfactual
+counterfeit/ZGMDRS
+counterfeiter/M
+counterfoil/MS
+countering
+counterinsurgency/SM
+counterintelligence/M
+counterman/M
+countermand/GMDS
+countermeasure/SM
+countermelody/S
+countermen
+countermove/S
+counteroffensive/SM
+counteroffer/SM
+counterpane/SM
+counterpart/SM
+counterpetition
+counterpoint/MDGS
+counterpoise/MGDS
+counterproductive
+counterrevolution/SM
+counterrevolutionary/SM
+countersign/GSMD
+countersignature/MS
+countersink/GSM
+counterspy/SM
+countersunk
+countertenor/MS
+countervail/GSD
+counterweight/MS
+countess/MS
+countless
+countrified
+country/SM
+countryman/M
+countrymen
+countryside/MS
+countrywide
+countrywoman/M
+countrywomen
+county/SM
+countywide
+coup's
+coup/AS
+coupe/SM
+couple's
+couple/UCGSD
+couplet/MS
+coupling/SM
+coupon/SM
+courage/M
+courageous/YP
+courageousness/M
+courgette/S
+courier/MDSG
+course/EDGMS
+coursebook/S
+courser/MS
+coursework
+court/SMDYG
+courteous/EY
+courteousness/M
+courtesan/SM
+courtesy/ESM
+courthouse/MS
+courtier/SM
+courtliness/M
+courtly/PRT
+courtroom/MS
+courtship/MS
+courtyard/MS
+couscous/M
+cousin/SM
+couture/M
+couturier/MS
+cove/MS
+coven/SM
+covenant/MDSG
+cover's
+cover/AEUGDS
+coverage/M
+coverall/MS
+covering's
+coverings
+coverlet/MS
+covert/SPMY
+covertness/M
+covet/SDG
+covetous/YP
+covetousness/M
+covey/SM
+cow/ZGSMDR
+coward/SMY
+cowardice/M
+cowardliness/M
+cowbell/MS
+cowbird/MS
+cowboy/SM
+cowcatcher/MS
+cower/DG
+cowgirl/MS
+cowhand/MS
+cowherd/MS
+cowhide/MS
+cowl/MGSJ
+cowlick/MS
+cowling/M
+cowman/M
+cowmen
+coworker/MS
+cowpat/S
+cowpoke/MS
+cowpox/M
+cowpuncher/SM
+cowrie/SM
+cowshed/S
+cowslip/SM
+cox/GDS
+coxcomb/MS
+coxswain/MS
+coy/TPRY
+coyness/M
+coyote/SM
+coypu/SM
+cozen/SDG
+cozenage/M
+cozily
+coziness/M
+cozy/RSMTP
+cpd
+cpl
+cps
+crab/MS
+crabbed
+crabber/SM
+crabbily
+crabbiness/M
+crabbing
+crabby/PRT
+crabgrass/M
+crablike
+crabwise
+crack/SMDRYZGJ
+crackdown/MS
+cracker/M
+crackerjack/MS
+crackhead/MS
+crackle/DSJMG
+crackling/M
+crackpot/MS
+crackup/SM
+cradle/DSMG
+craft/SMDG
+craftily
+craftiness/M
+craftsman/M
+craftsmanship/M
+craftsmen
+craftspeople
+craftswoman/M
+craftswomen
+crafty/RTP
+crag/MS
+cragginess/M
+craggy/RPT
+cram/S
+crammed
+crammer/S
+cramming
+cramp/SMDG
+cramping/M
+crampon/SM
+cranberry/SM
+crane/DSMG
+cranial
+cranium/SM
+crank/SMDG
+crankcase/SM
+crankily
+crankiness/M
+crankshaft/MS
+cranky/PRT
+cranny/DSM
+crap/MS
+crape/SM
+crapped
+crapper/S
+crappie/RSMT
+crapping
+crappy
+craps/M
+crapshooter/MS
+crash/MDSG
+crass/RYTP
+crassness/M
+crate/DRSMZG
+crater/MDG
+cravat/SM
+crave/DSGJ
+craven/SMYP
+cravenness/M
+craving/M
+craw/MS
+crawdad/SM
+crawl/SMDRZG
+crawler/M
+crawlspace/SM
+crawly/TRSM
+cray/S
+crayfish/MS
+crayola/S
+crayon/GSMD
+craze/DSMG
+crazily
+craziness/M
+crazy/PRSMT
+creak/SMDG
+creakily
+creakiness/M
+creaky/RPT
+cream/SMDRZG
+creamer/M
+creamery/SM
+creamily
+creaminess/M
+creamy/RPT
+crease/ICGMSD
+create/KADSGNV
+creation's/K
+creation/ASM
+creationism/SM
+creationist/SM
+creative/SMYP
+creativeness/M
+creativity/M
+creator/MS
+creature/SM
+creche/SM
+cred
+credence/M
+credential/SGMD
+credenza/SM
+credibility/IM
+credible/I
+credibly/I
+credit/EGSBMD
+creditably/E
+creditor/SM
+creditworthy/P
+credo/SM
+credulity/IM
+credulous/IY
+credulousness/M
+creed/SM
+creek/SM
+creel/SM
+creep/SMRZG
+creeper/M
+creepily
+creepiness/M
+creepy/TPR
+cremains/M
+cremate/GNDSX
+cremation/M
+crematoria
+crematorium/MS
+crematory/SM
+creme/SM
+crenelate/XGNDS
+crenelation/M
+creole/SM
+creosote/MGDS
+crepe/SM
+crept
+crepuscular
+crescendo/CSM
+crescent/MS
+cress/M
+crest/SMDG
+crestfallen
+crestless
+cretaceous
+cretin/SM
+cretinism/M
+cretinous
+cretonne/M
+crevasse/SM
+crevice/MS
+crew/MDGS
+crewel/M
+crewelwork/M
+crewman/M
+crewmen
+crib/MS
+cribbage/M
+cribbed
+cribber/MS
+cribbing
+crick/SMDG
+cricket/MRSZG
+cricketer/M
+crier/M
+crikey
+crime/SM
+criminal/MYS
+criminality/M
+criminalize/CGDS
+criminologist/MS
+criminology/M
+crimp/SMDG
+crimson/SMDG
+cringe/DSMG
+crinkle/DSMG
+crinkly/RT
+crinoline/SM
+cripes
+cripple/DRSMZG
+crippler/M
+crippleware
+crippling/Y
+crises
+crisis/M
+crisp/SMDRYTGP
+crispbread/S
+crispiness/M
+crispness/M
+crispy/PRT
+crisscross/GMDS
+criteria
+criterion/M
+critic/SM
+critical/UY
+criticism/MS
+criticize/ZGDRS
+criticizer/M
+critique/MGDS
+critter/SM
+croak/SMDG
+croaky/RT
+crochet/SMDRZG
+crocheter/M
+crocheting/M
+crock/SMD
+crockery/M
+crocodile/SM
+crocus/MS
+croft/SRZG
+croissant/MS
+crone/SM
+crony/SM
+cronyism/M
+crook/SMDG
+crooked/PTRY
+crookedness/M
+crookneck/SM
+croon/SMDRZG
+crooner/M
+crop/MS
+cropland/SM
+cropped
+cropper/MS
+cropping
+croquet/M
+croquette/SM
+crosier/MS
+cross's
+cross/AUGTSD
+crossbar/SM
+crossbeam/MS
+crossbones/M
+crossbow/SM
+crossbowman/M
+crossbowmen
+crossbred
+crossbreed/SGM
+crosscheck/SMDG
+crosscurrent/MS
+crosscut/SM
+crosscutting
+crosser
+crossfire/MS
+crosshatch/GDS
+crossing/SM
+crossly
+crossness/M
+crossover/MS
+crosspatch/MS
+crosspiece/SM
+crossroad/MS
+crossroads/M
+crosstown
+crosswalk/MS
+crosswind/MS
+crosswise
+crossword/MS
+crotch/MS
+crotchet/SM
+crotchety
+crouch/GMDS
+croup/M
+croupier/M
+croupy/ZTR
+crouton/MS
+crow/MDGS
+crowbar/MS
+crowd/SMDG
+crowded/U
+crowdfund/SDG
+crowfeet
+crowfoot/SM
+crown/SMDG
+crowned/U
+crucial/Y
+crucible/SM
+crucifix/MS
+crucifixion/SM
+cruciform/SM
+crucify/DSG
+crud/M
+cruddy/TR
+crude/RMYTP
+crudeness/M
+crudites/M
+crudity/SM
+cruel/RYPT
+cruelness/M
+cruelty/SM
+cruet/SM
+cruft/SD
+crufty
+cruise/DRSMZG
+cruiser/M
+cruller/MS
+crumb/SMDYG
+crumble/MGDS
+crumbliness/M
+crumbly/TPR
+crumby/TR
+crumminess/M
+crummy/PTR
+crumpet/MS
+crumple/MGDS
+crunch/GMDRS
+crunchiness/M
+crunchy/TRP
+crupper/MS
+crusade/MZGDRS
+crusader/M
+cruse/SM
+crush/MDRSZG
+crusher/M
+crushing/Y
+crust/SMDG
+crustacean/SM
+crustal
+crustily
+crustiness/M
+crusty/TRP
+crutch/MS
+crux/MS
+cry/ZGJDRSM
+crybaby/SM
+cryogenic/S
+cryogenics/M
+cryonics
+cryosurgery/M
+crypt/SM
+cryptic
+cryptically
+cryptogram/SM
+cryptographer/SM
+cryptography/M
+crystal/SM
+crystalline
+crystallization/M
+crystallize/ADSG
+crystallographic
+crystallography
+ct
+ctn
+ctr
+cu
+cub/ZGSMDR
+cubbyhole/MS
+cube/MS
+cuber/M
+cubic
+cubical
+cubicle/MS
+cubism/M
+cubist/SM
+cubit/SM
+cuboid/S
+cuckold/MDSG
+cuckoldry/M
+cuckoo/SM
+cucumber/SM
+cud/SM
+cuddle/DSMG
+cuddly/TR
+cudgel/SGMDJ
+cue/DSMG
+cuff/MDGS
+cuisine/SM
+culinary
+cull/MDGS
+culminate/XDSGN
+culmination/M
+culotte/SM
+culpability/M
+culpable/I
+culpably
+culprit/SM
+cult/MS
+cultism/M
+cultist/MS
+cultivable
+cultivar/SM
+cultivate/BDSGN
+cultivated/U
+cultivation/M
+cultivator/MS
+cultural/Y
+culture/MGDS
+cultured/U
+culvert/MS
+cum/SM
+cumber/SDG
+cumbersome/P
+cumbersomeness/M
+cumbrous
+cumin/M
+cummerbund/MS
+cumming
+cumulative/Y
+cumuli
+cumulonimbi
+cumulonimbus/M
+cumulus/M
+cuneiform/M
+cunnilingus/M
+cunning/MRYT
+cunt/MS!
+cup/SM
+cupboard/SM
+cupcake/MS
+cupful/SM
+cupid/SM
+cupidity/M
+cupola/SMD
+cuppa/S
+cupped
+cupping
+cupric
+cur/SMY
+curability/M
+curacao
+curacy/SM
+curare/M
+curate/DSMGV
+curative/MS
+curator/KMS
+curatorial
+curb/MDGS
+curbing/M
+curbside
+curbstone/SM
+curd/MS
+curdle/DSG
+cure's
+cure/KZGBDRS
+cured/U
+curer/KM
+curettage/M
+curfew/SM
+curia/M
+curiae
+curie/SM
+curio/SM
+curiosity/SM
+curious/YP
+curiousness/M
+curium/M
+curl's
+curl/UDGS
+curler/SM
+curlew/SM
+curlicue/DSMG
+curliness/M
+curling/M
+curly/RPT
+curmudgeon/MYS
+currant/MS
+currency/SM
+current's
+current/FAY
+currents
+curricula
+curricular
+curriculum/M
+curry/DSMG
+currycomb/SGMD
+curse/DSMGV
+cursed/Y
+cursive's
+cursive/EAY
+cursor/SM
+cursorily
+cursoriness/M
+cursory/P
+curt/RYTP
+curtail/GDSL
+curtailment/SM
+curtain/GMDS
+curtness/M
+curtsy/GDSM
+curvaceous/P
+curvaceousness/M
+curvature/SM
+curve/DSMG
+curvy/RT
+cushion/MDSG
+cushy/RT
+cusp/MS
+cuspid/SM
+cuspidor/SM
+cuss's
+cuss/FEGSD
+cussed/PY
+custard/MS
+custodial
+custodian/MS
+custodianship/M
+custody/M
+custom/SZMR
+customarily
+customary/U
+customer/M
+customhouse/SM
+customization/M
+customize/DSG
+cut/TSMR
+cutaneous
+cutaway/MS
+cutback/MS
+cute/YP
+cuteness/M
+cutesy/TR
+cutey/S
+cuticle/MS
+cutie/SM
+cutlass/MS
+cutler/SM
+cutlery/M
+cutlet/SM
+cutoff/SM
+cutout/SM
+cutter/SM
+cutthroat/SM
+cutting/MYS
+cuttlefish/MS
+cutup/SM
+cutworm/MS
+cw
+cwt
+cyan/M
+cyanide/M
+cyberbully/SM
+cybercafe/S
+cybernetic/S
+cybernetics/M
+cyberpunk/SM
+cybersex
+cyberspace/MS
+cyborg/SM
+cyclamen/MS
+cycle/ADSMG
+cyclic
+cyclical/Y
+cyclist/MS
+cyclometer/MS
+cyclone/MS
+cyclonic
+cyclopedia/MS
+cyclopes
+cyclops/M
+cyclotron/MS
+cygnet/MS
+cylinder/MS
+cylindrical
+cymbal/MS
+cymbalist/MS
+cynic/SM
+cynical/Y
+cynicism/M
+cynosure/MS
+cypress/MS
+cyst/MS
+cystic
+cystitis
+cytokines
+cytologist/SM
+cytology/M
+cytoplasm/M
+cytoplasmic
+cytosine/M
+czar/MS
+czarina/SM
+czarism
+czarist/SM
+d'Arezzo/M
+d'Estaing/M
+d/NXGJ
+dB
+dab/SM
+dabbed
+dabber/MS
+dabbing
+dabble/ZGDRS
+dabbler/M
+dace/SM
+dacha/MS
+dachshund/MS
+dactyl/MS
+dactylic/MS
+dad/SM
+dadaism/M
+dadaist/MS
+daddy/SM
+dado/M
+dadoes
+daemon/MS
+daemonic
+daffiness/M
+daffodil/SM
+daffy/PTR
+daft/PTRY
+daftness/M
+dag/S
+dagger/MS
+dago/S
+dagoes
+daguerreotype/DSMG
+dahlia/MS
+dailiness/M
+daily/PSM
+daintily
+daintiness/M
+dainty/RSMTP
+daiquiri/MS
+dairy/GSM
+dairying/M
+dairymaid/MS
+dairyman/M
+dairymen
+dairywoman/M
+dairywomen
+dais/MS
+daisy/SM
+dale/SM
+dalliance/MS
+dallier/M
+dally/ZGDRS
+dalmatian/MS
+dam/SM
+damage/MGDS
+damageable
+damaged/U
+damages/M
+damask/MDGS
+dame/SM
+dammed
+damming
+dammit
+damn/SBGMD
+damnably
+damnation/M
+damned/T
+damp/SPXZTGMDNRY
+dampen/ZGDR
+dampener/M
+damper/M
+dampness/M
+damsel/MS
+damselfly/SM
+damson/MS
+dance/MZGDRS
+dancer/M
+dancing/M
+dandelion/SM
+dander/M
+dandify/GDS
+dandle/GDS
+dandruff/M
+dandy/TRSM
+dang/SZGDR
+danger/M
+dangerous/Y
+dangle/ZGDRS
+dangler/M
+danish/MS
+dank/PTRY
+dankness/M
+danseuse/MS
+dapper/TR
+dapple/MGDS
+dare/DRSMZG
+daredevil/MS
+daredevilry/M
+darer/M
+daresay
+daring/MY
+dark/PXTMNRY
+darken/ZGDR
+darkener/M
+darkie/S
+darkness/M
+darkroom/MS
+darling/MS
+darn/SZGMDR
+darned/TR
+darner/M
+dart/SZGMDR
+dartboard/MS
+darter/M
+dash/ZGMDRS
+dashboard/SM
+dasher/M
+dashiki/MS
+dashing/Y
+dastard/MYS
+dastardliness/M
+data
+database/SM
+datatype
+date/DRSMZGV
+datebook/S
+dated/U
+dateless
+dateline/MGDS
+dater/M
+dative/MS
+datum/M
+daub/SZGMDR
+dauber/M
+daughter/SMY
+daunt/GDS
+daunting/Y
+dauntless/YP
+dauntlessness/M
+dauphin/MS
+davenport/MS
+davit/MS
+dawdle/ZGDRS
+dawdler/M
+dawn/SGMD
+day/SM
+daybed/MS
+daybreak/M
+daycare/M
+daydream/MDRZGS
+daydreamer/M
+daylight/MS
+daylights/M
+daylong
+daytime/M
+daze/DSMG
+dazed/Y
+dazzle/MZGDRS
+dazzler/M
+dazzling/Y
+db
+dbl
+dc
+dd/SDG
+dded/K
+dding/K
+deacon/MS
+deaconess/MS
+dead/XTMNRY
+deadbeat/MS
+deadbolt/SM
+deaden/GD
+deadhead/SDG
+deadline/SM
+deadliness/M
+deadlock/GSMD
+deadly/TPR
+deadpan/MS
+deadpanned
+deadpanning
+deadwood/M
+deaf/PXTNR
+deafen/GD
+deafening/Y
+deafness/M
+deal/SJZGMR
+dealer/M
+dealership/SM
+dealing/M
+dealt
+dean/M
+deanery/SM
+deanship/M
+dear/SPTMRYH
+dearest/S
+dearness/M
+dearth/M
+dearths
+deary/SM
+death/MY
+deathbed/SM
+deathblow/MS
+deathless/Y
+deathlike
+deaths
+deathtrap/MS
+deathwatch/MS
+deaves
+deb/SM
+debacle/MS
+debarkation/M
+debarment/M
+debate/BMZR
+debater/M
+debating/M
+debauch/MDSG
+debauchee/MS
+debauchery/SM
+debenture/MS
+debilitate/DSGN
+debilitation/M
+debility/SM
+debit/D
+debonair/PY
+debonairness/M
+debouch/GDS
+debridement
+debris/M
+debt/SM
+debtor/MS
+debugger/S
+debut/GMD
+debutante/SM
+decade/MS
+decadence/M
+decadency/M
+decadent/MYS
+decaf/MS
+decaffeinate/DSG
+decagon/MS
+decal/MS
+decampment/M
+decapitate/XGNDS
+decapitator/MS
+decathlete/S
+decathlon/SM
+decay/GD
+deceased/M
+decedent/MS
+deceit/MS
+deceitful/YP
+deceitfulness/M
+deceive/UGDS
+deceiver/MS
+deceiving/Y
+decelerate/GNDS
+deceleration/M
+decelerator/SM
+decency/ISM
+decennial/SM
+decent/IY
+deception/MS
+deceptive/YP
+deceptiveness/M
+decibel/MS
+decidable/U
+decide/BZGDRS
+decided/Y
+deciduous
+deciliter/MS
+decimal/SM
+decimalization
+decimate/DSGN
+decimation/M
+decimeter/MS
+decipherable/UI
+decision/IM
+decisions
+decisive/IPY
+decisiveness/IM
+deck/SGMD
+deckchair/S
+deckhand/SM
+deckle/S
+declamation/MS
+declamatory
+declaration/MS
+declarative
+declaratory
+declare/DRSZGB
+declared/U
+declarer/M
+declension/SM
+declination/M
+decline/DRSMZG
+decliner/M
+declivity/SM
+decolletage/SM
+decollete
+decongestant/MS
+deconstructionism
+decor/MS
+decorate/AGNVDS
+decorating/M
+decoration/AM
+decorations
+decorative/Y
+decorator/MS
+decorous/IY
+decorousness/M
+decorum/M
+decoupage/DSMG
+decoy/GMDS
+decreasing/Y
+decree/MDS
+decreeing
+decremented
+decrements
+decrepit
+decrepitude/M
+decriminalization/M
+decry/GDS
+decryption
+dedicate/AGDS
+dedication/SM
+dedicator/SM
+dedicatory
+deduce/GDS
+deducible
+deduct/GVD
+deductible/SM
+deduction/SM
+deductive/Y
+deed/GD
+deejay/MS
+deem/ASGD
+deep/SPXTMNRY
+deepen/GD
+deepness/M
+deer/M
+deerskin/M
+deerstalker/S
+def/Z
+defacement/M
+defacer/SM
+defalcate/DSXGN
+defalcation/M
+defamation/M
+defamatory
+defame/ZGDRS
+defamer/M
+defaulter/SM
+defeat/MDRZGS
+defeated/U
+defeater/M
+defeatism/M
+defeatist/MS
+defecate/GNDS
+defecation/M
+defect/MDGVS
+defection/MS
+defective/MPYS
+defectiveness/M
+defector/MS
+defendant/SM
+defended/U
+defenestration/S
+defense/DSMGV
+defenseless/YP
+defenselessness/M
+defensible/I
+defensibly/I
+defensive/MYP
+defensiveness/M
+deference/M
+deferential/Y
+deferral/MS
+deferred
+deferring
+deffer
+deffest
+defiant/Y
+defibrillation
+defibrillator/S
+deficiency/SM
+deficient
+deficit/SM
+defilement/M
+definable/IU
+define/AGDS
+defined/U
+definer/MS
+definite/IYVP
+definiteness/IM
+definition/AM
+definitions
+definitive/Y
+deflate/GNDS
+deflation/M
+deflationary
+deflect/DGVS
+deflection/MS
+deflector/SM
+defogger/SM
+defoliant/SM
+defoliate/DSGN
+defoliation/M
+defoliator/MS
+deformity/SM
+defraud/DRZGS
+defrauder/M
+defrayal/M
+defrock/DG
+defroster/MS
+deft/PTRY
+deftness/M
+defunct
+defy/GDS
+deg
+degeneracy/M
+degenerate/MV
+degrade/B
+degree/MS
+dehydrator/SM
+dehydrogenase
+deicer/MS
+deification/M
+deify/NGDS
+deign/GDS
+deist/MS
+deistic
+deity/SM
+deject/GDS
+dejected/Y
+dejection/M
+delay/ZDR
+delectable
+delectably
+delectation/M
+delegate/GD
+delete/XGNDS
+deleterious
+deletion/M
+delft/M
+delftware/M
+deli/SM
+deliberate/XYVP
+deliberateness/M
+delicacy/ISM
+delicate/IY
+delicateness/M
+delicatessen/SM
+delicious/PY
+deliciousness/M
+delighted/Y
+delightful/Y
+deliminator
+delineate/GNXDS
+delineation/M
+delinquency/SM
+delinquent/SMY
+deliquesce/DSG
+deliquescent
+delirious/YP
+deliriousness/M
+delirium/SM
+deliver/ADGS
+deliverable
+deliverance/M
+delivered/U
+deliverer/SM
+dell/SM
+delphinium/MS
+delta/MS
+delude/GDS
+deluge/MGDS
+delusion/MS
+delusional
+delusive/Y
+deluxe
+delve/ZGDRS
+delver/M
+demagogic
+demagogically
+demagogue/SM
+demagoguery/M
+demagogy/M
+demand/GMDS
+demanding/U
+demarcate/DSGNX
+demarcation/M
+demean/GDS
+demeanor/M
+demented/Y
+dementia/M
+demesne/MS
+demigod/MS
+demigoddess/MS
+demijohn/SM
+demimondaine/SM
+demimonde/M
+demise/MGDS
+demitasse/MS
+demo/GMD
+democracy/SM
+democrat/MS
+democratic/U
+democratically
+democratization/M
+democratize/GDS
+demode
+demographer/SM
+demographic/SM
+demographically
+demographics/M
+demography/M
+demolish/DSG
+demolition/MS
+demon/MS
+demonetization/M
+demoniac
+demoniacal/Y
+demonic
+demonically
+demonize/GDS
+demonology/SM
+demonstrability
+demonstrable/I
+demonstrably
+demonstrate/XGNVDS
+demonstration/M
+demonstrative/MYSP
+demonstrativeness/M
+demonstrator/MS
+demote/GD
+demotic
+demount
+demulcent/SM
+demur/TMRS
+demure/PY
+demureness/M
+demurral/SM
+demurred
+demurrer/SM
+demurring
+den/M
+denationalization
+denaturation
+denature/DG
+dendrite/SM
+dengue/M
+deniability
+deniable/U
+denial/MS
+denier/M
+denigrate/DSGN
+denigration/M
+denim/MS
+denitrification
+denizen/MS
+denominational
+denotative
+denouement/MS
+denounce/LDSG
+denouncement/SM
+dense/PYTR
+denseness/M
+density/SM
+dent/ISGMD
+dental/Y
+dentifrice/SM
+dentin/M
+dentist/MS
+dentistry/M
+dentition/M
+denture/IMS
+denuclearize/GDS
+denudation/M
+denude/GDS
+denunciation/SM
+deny/ZGDRS
+deodorant/SM
+deodorization/M
+deodorize/DRSZG
+deodorizer/M
+departed/M
+department/MS
+departmental/Y
+departmentalization/M
+departmentalize/GDS
+departure/SM
+dependability/M
+dependable/U
+dependably
+dependence/IM
+dependency/SM
+dependent/IMYS
+depict/GDS
+depiction/MS
+depilatory/SM
+deplete/GNDS
+depletion/M
+deplorably
+deplore/BGDS
+deploy/ALGDS
+deployment/AM
+deployments
+deponent/MS
+deportation/MS
+deportee/MS
+deportment/M
+deposit/AGMDS
+depositor/MS
+depository/SM
+deprave/GDS
+depravity/SM
+deprecate/GNDS
+deprecating/Y
+deprecation/M
+deprecatory
+depreciate/DSGN
+depreciation/M
+depredation/SM
+depressant/SM
+depressing/Y
+depression/SM
+depressive/SM
+depressor/MS
+depressurization
+deprive/GDS
+deprogramming
+depth/M
+depths
+deputation/MS
+depute/DSG
+deputize/DSG
+deputy/SM
+derailleur/SM
+derailment/SM
+derangement/M
+derby/SM
+derelict/MS
+dereliction/M
+deride/GDS
+derision/M
+derisive/PY
+derisiveness/M
+derisory
+derivation/MS
+derivative/MS
+derive/B
+dermal
+dermatitis/M
+dermatological
+dermatologist/SM
+dermatology/M
+dermis/M
+derogate/DSGN
+derogation/M
+derogatorily
+derogatory
+derrick/SM
+derriere/SM
+derringer/SM
+derv
+dervish/MS
+desalinate/GNDS
+desalination/M
+desalinization/M
+desalinize/GDS
+descant/M
+descend/FGDS
+descendant/MS
+descender
+describable/I
+describe/BZGDR
+describer/M
+description/SM
+descriptive/PY
+descriptiveness/M
+descriptor/S
+descry/GDS
+desecrate/DSGN
+desecration/M
+deselection
+desert/SDRZGM
+deserter/M
+desertification
+desertion/SM
+deserved/UY
+deserving/U
+desiccant/SM
+desiccate/DSGN
+desiccation/M
+desiccator/SM
+desiderata
+desideratum/M
+design/ASDG
+designate/DSGNX
+designation/M
+desirability/UM
+desirableness/M
+desirably/U
+desire/B
+desired/U
+desirous
+desist/SDG
+desk/SM
+deskill/G
+desktop/SM
+desolate/PDSYGN
+desolateness/M
+desolation/M
+despair/SMDG
+despairing/Y
+desperado/M
+desperadoes
+desperate/YNP
+desperateness/M
+desperation/M
+despicable
+despicably
+despise/DSG
+despite
+despoilment/M
+despondence/M
+despondency/M
+despondent/Y
+despotic
+despotically
+despotism/M
+dessert/SM
+dessertspoon/S
+dessertspoonful/S
+destination/SM
+destine/DSG
+destiny/SM
+destitute/N
+destitution/M
+destroy/SZGDR
+destroyer/M
+destruct/GVMDS
+destructibility/IM
+destructible/I
+destruction/M
+destructive/PY
+destructiveness/M
+desuetude/M
+desultorily
+desultory
+detach/BLGDS
+detachment/MS
+detain/LGDS
+detainee/MS
+detainment/M
+detect/SDGVB
+detectable/U
+detected/U
+detection/M
+detective/SM
+detector/SM
+detente/SMNX
+detention/M
+deter/SL
+detergent/SM
+deteriorate/DSGN
+deterioration/M
+determent/M
+determinable/I
+determinant/SM
+determinate
+determine/AGDS
+determined/U
+determinedly
+determiner/SM
+determinism/M
+deterministic
+deterred/U
+deterrence/M
+deterrent/MS
+deterring
+detestably
+detestation/M
+dethrone/DSLG
+dethronement/M
+detonate/GNDSX
+detonation/M
+detonator/SM
+detox/MDSG
+detoxification/M
+detoxify/DSGN
+detract/GD
+detriment/SM
+detrimental/Y
+detritus/M
+deuce/SM
+deuterium/M
+devastate/GNDS
+devastating/Y
+devastation/M
+devastator/MS
+develop/ASGDL
+developed/U
+developer/SM
+development/ASM
+developmental/Y
+deviance/M
+deviancy/M
+deviant/SM
+deviate/DSMGNX
+deviating/U
+deviation/M
+devil/SMDGL
+devilish/YP
+devilishness/M
+devilment/M
+devilry/SM
+deviltry/SM
+devious/YP
+deviousness/M
+devoid
+devolution/M
+devolve/DSG
+devoted/Y
+devotee/SM
+devotion/MS
+devotional/SM
+devour/SDG
+devout/PRYT
+devoutness/M
+dew/M
+dewberry/SM
+dewclaw/SM
+dewdrop/SM
+dewiness/M
+dewlap/SM
+dewy/RTP
+dexterity/M
+dexterous/YP
+dexterousness/M
+dextrose/M
+dharma
+dhoti/SM
+dhow/MS
+diabetes/M
+diabetic/SM
+diabolic
+diabolical/Y
+diacritic/MS
+diacritical
+diadem/SM
+diaereses
+diaeresis/M
+diagnose/DSG
+diagnosis/M
+diagnostic/S
+diagnostically
+diagnostician/SM
+diagnostics/M
+diagonal/SMY
+diagram/SM
+diagrammatic
+diagrammatically
+diagrammed
+diagramming
+dial/AMDGS
+dialect/SM
+dialectal
+dialectic/SM
+dialectical
+dialectics/M
+dialing/S
+dialog
+dialogue/SM
+dialyses
+dialysis/M
+dialyzes
+diam
+diamante
+diameter/SM
+diametric
+diametrical/Y
+diamond/SM
+diamondback/MS
+diapason/SM
+diaper/SMDG
+diaphanous
+diaphragm/SM
+diaphragmatic
+diarist/SM
+diarrhea/M
+diary/SM
+diaspora/SM
+diastase/M
+diastole/M
+diastolic
+diathermy/M
+diatom/SM
+diatomic
+diatonic
+diatribe/SM
+dibble/DSMG
+dibs/M
+dice/GDS
+dices/I
+dicey
+dichotomous
+dichotomy/SM
+dicier
+diciest
+dick/MRXZS
+dicker/DG
+dickey/SM
+dickhead/S
+dickybird/S
+dicotyledon/MS
+dicotyledonous
+dict
+dicta
+dictate/DSMGNX
+dictation/M
+dictator/SM
+dictatorial/Y
+dictatorship/SM
+diction/M
+dictionary/SM
+dictum/M
+did/AU
+didactic
+didactically
+diddle/DRSZG
+diddler/M
+diddly
+diddlysquat
+diddums
+didgeridoo/S
+didn't
+dido/M
+didoes
+didst
+die/DSM
+dielectric/MS
+diereses
+dieresis/M
+diesel/SMDG
+diet/MDRZGS
+dietary/SM
+dieter/M
+dietetic/S
+dietetics/M
+dietitian/MS
+diff/DRZGS
+differ/DG
+difference/IM
+differences
+different/IY
+differential/SM
+differentiate/DSGN
+differentiated/U
+differentiation/M
+difficult/Y
+difficulty/SM
+diffidence/M
+diffident/Y
+diffract/GSD
+diffraction/M
+diffuse/DSYGNVP
+diffuseness/M
+diffusion/M
+dig/SM
+digerati/M
+digest/SMDGV
+digested/U
+digestibility/M
+digestible/I
+digestion/IM
+digestions
+digestive/S
+digger/SM
+digging/S
+diggings/M
+digicam/S
+digit/SM
+digital/Y
+digitalis/M
+digitization
+digitize/GDS
+dignified/U
+dignify/DSG
+dignitary/SM
+dignity/ISM
+digraph/M
+digraphs
+digress/GVDS
+digression/MS
+dike/MGDS
+diktat/S
+dilapidated
+dilapidation/M
+dilatation/M
+dilate/DSGN
+dilation/M
+dilator/SM
+dilatory
+dildo/S
+dilemma/MS
+dilettante/SM
+dilettantish
+dilettantism/M
+diligence/M
+diligent/Y
+dill/MS
+dilly/SM
+dillydally/DSG
+dilute/DSGNX
+diluted/U
+dilution/M
+dim/PSRY
+dime/MS
+dimension/SM
+dimensional
+dimensionless
+diminish/GDS
+diminished/U
+diminuendo/SM
+diminution/SM
+diminutive/SM
+dimity/M
+dimmed/U
+dimmer/SM
+dimmest
+dimming
+dimness/M
+dimple/DSMG
+dimply
+dimwit/SM
+dimwitted
+din/ZGSMDR
+dinar/SM
+dine/S
+diner/M
+dinette/MS
+ding/MDG
+dingbat/MS
+dinghy/SM
+dingily
+dinginess/M
+dingle/SM
+dingo/M
+dingoes
+dingus/MS
+dingy/RPT
+dink/R
+dinky/RSMT
+dinned
+dinner/SMDG
+dinnertime/M
+dinnerware/M
+dinning
+dinosaur/SM
+dint/M
+diocesan/MS
+diocese/MS
+diode/SM
+diorama/SM
+dioxide/SM
+dioxin/SM
+dip/SM
+diphtheria/M
+diphthong/SM
+diploid/SM
+diploma/SM
+diplomacy/M
+diplomat/MS
+diplomata
+diplomatic/U
+diplomatically
+diplomatist/MS
+diplopia
+dipole/SM
+dipped
+dipper/SM
+dipping
+dippy/RT
+dipso/S
+dipsomania/M
+dipsomaniac/MS
+dipstick/SM
+dipterous
+diptych/M
+diptychs
+dire/YTR
+direct/ASDGVT
+directer
+direction/IM
+directional
+directionless
+directions
+directive/SM
+directly
+directness/IM
+director/MS
+directorate/SM
+directorial
+directorship/SM
+directory/SM
+direful
+dirge/SM
+dirigible/MS
+dirk/MS
+dirndl/SM
+dirt/M
+dirtball/S
+dirtily
+dirtiness/M
+dirty/DRSTGP
+dis/M
+disable/DSGL
+disablement/M
+disambiguate/N
+disappointing/Y
+disarming/Y
+disassembly
+disastrous/Y
+disbandment/M
+disbarment/M
+disbelieving/Y
+disbursal/M
+disburse/DSGL
+disbursement/MS
+disc/M
+discern/LSDG
+discernible/I
+discernibly
+discerning/Y
+discernment/M
+discharged/U
+disciple/SM
+discipleship/M
+disciplinarian/SM
+disciplinary
+discipline/DSMG
+disciplined/U
+disclose/DSG
+disclosed/U
+disco/MG
+discography/SM
+discoloration/S
+discombobulate/DSGN
+discombobulation/M
+discomfit/DG
+discomfiture/M
+discommode/DG
+disconcerting/Y
+disconnected/PY
+disconnectedness/M
+disconsolate/Y
+discordance/M
+discordant/Y
+discotheque/SM
+discourage/LGDS
+discouragement/SM
+discouraging/Y
+discover/ASDG
+discovered/U
+discoverer/MS
+discovery/ASM
+discreet/PRYT
+discreetness/M
+discrepancy/SM
+discrepant
+discrete/PYN
+discreteness/M
+discretion/IM
+discretionary
+discriminant
+discriminate/GNDS
+discriminating/U
+discrimination/M
+discriminator/MS
+discriminatory
+discursiveness/M
+discus/MS
+discussant/SM
+discussion/SM
+disdain/SMDG
+disdainful/Y
+disembowel/SDLG
+disembowelment/M
+disfigurement/SM
+disfranchisement/M
+disgorgement/M
+disgruntle/LGDS
+disgruntlement/M
+disguise/GD
+disguised/U
+disgusted/Y
+disgusting/Y
+dish/MDSG
+dishabille/M
+disharmonious
+dishcloth/M
+dishcloths
+disheartening/Y
+dishevel/DGLS
+dishevelment/M
+dishpan/SM
+dishrag/SM
+dishtowel/MS
+dishware/M
+dishwasher/MS
+dishwater/M
+dishy
+disillusion/GLD
+disillusionment/M
+disinfectant/MS
+disinfection/M
+disinterested/PY
+disinterestedness/M
+disjointed/YP
+disjointedness/M
+disjunctive
+disjuncture
+disk/MS
+diskette/MS
+dislodge/GDS
+dismal/Y
+dismantlement/M
+dismay/SMDG
+dismayed/U
+dismember/LGD
+dismemberment/M
+dismissive/Y
+disorder/Y
+disorganization/M
+disparage/DSGL
+disparagement/M
+disparaging/Y
+disparate/Y
+dispatcher/MS
+dispel/S
+dispelled
+dispelling
+dispensary/SM
+dispensation/MS
+dispense/BZGDRS
+dispenser/M
+dispersal/M
+disperse/GNDS
+dispersion/M
+dispirit/GDS
+displeasure/M
+disposable/SM
+disposal/SM
+disposed/I
+disposition/ISM
+dispossession/M
+disproof/SM
+disproportional
+disprove/B
+disputable/I
+disputably/I
+disputant/MS
+disputation/SM
+disputatious/Y
+dispute/DRSMZGB
+disputed/U
+disputer/M
+disquiet/GSMD
+disquisition/MS
+disregardful
+disrepair/M
+disrepute/MB
+disrupt/GVSD
+disruption/SM
+disruptive/Y
+dissect/SDG
+dissed
+dissemblance/M
+dissemble/ZGDRS
+dissembler/M
+disseminate/GNDS
+dissemination/M
+dissension/SM
+dissent/SMDRZG
+dissenter/M
+dissertation/SM
+dissidence/M
+dissident/MS
+dissimilar
+dissimilitude/S
+dissing
+dissipate/GNDS
+dissipation/M
+dissociate/GNDS
+dissociation/M
+dissoluble/I
+dissolute/YNP
+dissoluteness/M
+dissolve/AGDS
+dissolved/U
+dissonance/SM
+dissonant
+dissuade/GDS
+dissuasive
+dist
+distaff/SM
+distal/Y
+distance/DSMG
+distant/Y
+distaste/SM
+distemper/M
+distention/SM
+distillate/SMNX
+distillation/M
+distillery/SM
+distinct/IYTVP
+distincter
+distinction/SM
+distinctive/YP
+distinctiveness/M
+distinctness/IM
+distinguish/GDSB
+distinguishable/I
+distinguished/U
+distort/GDR
+distortion/MS
+distract/DG
+distracted/Y
+distraction/S
+distrait
+distraught
+distress/DG
+distressful
+distressing/Y
+distribute/AGNVDS
+distributed/U
+distribution/AM
+distributional
+distributions
+distributive/Y
+distributor's
+distributor/AS
+distributorship/S
+district's
+district/AS
+disturb/ZGSDR
+disturbance/SM
+disturbed/U
+disturber/M
+disturbing/Y
+disunion/M
+disyllabic
+ditch/MDSG
+dither/SMDRZG
+ditherer/M
+ditransitive
+ditsy
+ditto/SMDG
+ditty/SM
+ditz/MS
+diuretic/MS
+diurnal/Y
+div
+diva/MS
+divalent
+divan/SM
+dive/MZTGDRS
+diver/M
+diverge/DSG
+divergence/MS
+divergent
+diverse/XYNP
+diverseness/M
+diversification/M
+diversify/GNDS
+diversion/M
+diversionary
+diversity/SM
+divert/SDG
+diverticulitis/M
+divest/SLDG
+divestiture/MS
+divestment/M
+divide/DRSMZGB
+divided/U
+dividend/MS
+divider/M
+divination/M
+divine/DRSMYZTG
+diviner/M
+diving/M
+divinity/SM
+divisibility/IM
+divisible/I
+division/MS
+divisional
+divisive/PY
+divisiveness/M
+divisor/SM
+divorce/DSLMG
+divorcee/MS
+divorcement/MS
+divot/SM
+divulge/GDS
+divvy/DSMG
+dixieland/M
+dizzily
+dizziness/M
+dizzy/DRSPTG
+djellaba/MS
+do/SJMRHZG
+doable
+dob/S
+dobbed
+dobbin/SM
+dobbing
+doberman/MS
+dobro
+doc/SM
+docent/SM
+docile/Y
+docility/M
+dock/MDRZGS
+docket/SMDG
+dockland/S
+dockside
+dockworker/MS
+dockyard/MS
+doctor/SMDG
+doctoral
+doctorate/MS
+doctrinaire/MS
+doctrinal
+doctrine/MS
+docudrama/SM
+document/GMDS
+documentary/SM
+documentation/SM
+documented/U
+dodder/SMDG
+doddery
+doddle
+dodge/DRSMZG
+dodgem/S
+dodger/M
+dodgy/RT
+dodo/MS
+doe/SM
+doer/M
+does/AU
+doeskin/MS
+doesn't
+doff/DGS
+dog/SM
+dogcart/SM
+dogcatcher/SM
+doge/MS
+dogeared
+dogfight/SM
+dogfish/MS
+dogged/PY
+doggedness/M
+doggerel/M
+dogging
+doggone/TGRS
+doggy/RSMT
+doghouse/SM
+dogie/SM
+dogleg/SM
+doglegged
+doglegging
+doglike
+dogma/SM
+dogmatic
+dogmatically
+dogmatism/M
+dogmatist/SM
+dognapper
+dogsbody/S
+dogsled/S
+dogtrot/MS
+dogtrotted
+dogtrotting
+dogwood/MS
+doily/SM
+doing/USM
+doldrums/M
+dole's
+dole/FGDS
+doleful/YP
+dolefulness/M
+doll/MDGS
+dollar/SM
+dollhouse/SM
+dollop/SGMD
+dolly/SM
+dolmen/SM
+dolomite/M
+dolor/M
+dolorous/Y
+dolphin/MS
+dolt/MS
+doltish/YP
+doltishness/M
+domain/SM
+dome/MGDS
+domestic/SM
+domestically
+domesticate/DSGN
+domesticated/U
+domestication/M
+domesticity/M
+domicile/DSMG
+domiciliary
+dominance/M
+dominant/SMY
+dominate/DSGN
+domination/M
+dominatrices
+dominatrix/M
+domineer/SGD
+domineering/Y
+dominion/SM
+domino/M
+dominoes
+don't
+don/SM
+dona/MS
+donate/DSXGN
+donation/M
+done/FAU
+dong/MDGS
+dongle/SM
+donkey/SM
+donned
+donning
+donnish
+donnybrook/MS
+donor/SM
+donuts
+doodad/SM
+doodah
+doodahs
+doodle/DRSMZG
+doodlebug/SM
+doodler/M
+doohickey/SM
+doolally
+doom/MDGS
+doomsayer/MS
+doomsday/M
+doomster/S
+door's
+door/IS
+doorbell/MS
+doorjamb/S
+doorkeeper/MS
+doorknob/MS
+doorknocker/S
+doorman/M
+doormat/SM
+doormen
+doorplate/SM
+doorpost/S
+doorstep/MS
+doorstepped
+doorstepping
+doorstop/MS
+doorway/SM
+dooryard/MS
+dopa/M
+dopamine
+dope/MZGDRS
+doper/M
+dopey
+dopier
+dopiest
+dopiness/M
+doping/M
+doppelganger/S
+dork/MS
+dorky/RT
+dorm/MRZS
+dormancy/M
+dormant
+dormer/M
+dormice
+dormitory/SM
+dormouse/M
+dorsal/Y
+dory/SM
+dosage/SM
+dose/MGDS
+dosh
+dosimeter/SM
+doss/DRSZG
+dosshouse/S
+dossier/MS
+dost
+dot/ZGSMDR
+dotage/M
+dotard/SM
+dotcom/SM
+dote/S
+doter/M
+doting/Y
+dotted
+dotting
+dotty/RT
+double's
+double/ADSG
+doubleheader/MS
+doublespeak/M
+doublet/MS
+doubloon/SM
+doubly
+doubt/SMDRZG
+doubter/M
+doubtful/PY
+doubtfulness/M
+doubting/Y
+doubtless/Y
+douche/DSMG
+dough/M
+doughnut/SM
+doughty/RT
+doughy/TR
+dour/RYTP
+dourness/M
+douse/DSG
+dove/MS
+dovecot/S
+dovecote/SM
+dovetail/MDSG
+dovish
+dowager/MS
+dowdily
+dowdiness/M
+dowdy/RSPT
+dowel/SMDG
+dower/SMDG
+down/MDRZGS
+downbeat/SM
+downcast
+downdraft/MS
+downer/M
+downfall/SMN
+downfield
+downgrade/DSMG
+downhearted/PY
+downheartedness/M
+downhill/MS
+download/MDBSG
+downmarket
+downplay/DSG
+downpour/MS
+downrange
+downright
+downriver
+downscale
+downshift/SGD
+downside/MS
+downsize/GDS
+downsizing/M
+downspout/MS
+downstage
+downstairs/M
+downstate/M
+downstream
+downswing/MS
+downtime/M
+downtown/M
+downtrend/MS
+downtrodden
+downturn/MS
+downward/S
+downwind
+downy/RT
+dowry/SM
+dowse/DRSZG
+dowser/M
+doxology/SM
+doyen/SM
+doyenne/MS
+doz/XGDNS
+doze/M
+dozen/MH
+dozily
+dozy/RTP
+dpi
+dpt
+drab/MYSP
+drabber
+drabbest
+drabness/M
+drachma/MS
+draconian
+draft's
+draft/ASDG
+draftee/SM
+drafter/SM
+draftily
+draftiness/M
+drafting/M
+draftsman/M
+draftsmanship/M
+draftsmen
+draftswoman/M
+draftswomen
+drafty/RTP
+drag/MS
+dragged
+dragging
+draggy/TR
+dragnet/SM
+dragon/SM
+dragonfly/SM
+dragoon/SMDG
+dragster/S
+drain/SMDRZG
+drainage/M
+drainboard/SM
+drainer/M
+drainpipe/MS
+drake/SM
+dram/MS
+drama/SM
+dramatic/S
+dramatically
+dramatics/M
+dramatist/SM
+dramatization/SM
+dramatize/DSG
+drank
+drape/DRSMZG
+draper/M
+drapery/SM
+drastic
+drastically
+drat
+dratted
+draughtboard/S
+draw/MRZGSJ
+drawback/MS
+drawbridge/MS
+drawer/M
+drawing/M
+drawl/SMDG
+drawn/A
+drawstring/MS
+dray/MS
+dread/SMDG
+dreadful/PY
+dreadfulness/M
+dreadlocks/M
+dreadnought/MS
+dream/SMDRZG
+dreamboat/MS
+dreamed/U
+dreamer/M
+dreamily
+dreaminess/M
+dreamland/M
+dreamless
+dreamlike
+dreamworld/SM
+dreamy/RPT
+drear
+drearily
+dreariness/M
+dreary/RPT
+dredge/DRSMZG
+dredger/M
+dregs/M
+drench/GDS
+dress/AUGSDM
+dressage/M
+dresser/MS
+dressiness/M
+dressing/SM
+dressmaker/SM
+dressmaking/M
+dressy/TPR
+drew/A
+dribble/MZGDRS
+dribbler/M
+driblet/MS
+drier/M
+drift/SMDRZG
+drifter/M
+driftnet/S
+driftwood/M
+drill/SMDRZG
+driller/M
+drillmaster/SM
+drink/SMRBJZG
+drinkable/U
+drinker/M
+drip/MS
+dripped
+dripping/SM
+drippy/TR
+drive/RSMZGJ
+drivel/SZGMDR
+driveler/M
+driven
+driver/M
+driveshaft/SM
+driveway/MS
+drizzle/MGDS
+drizzly
+drogue/SM
+droid/S
+droll/RPT
+drollery/SM
+drollness/M
+drolly
+dromedary/SM
+drone/DSMG
+drool/SMDG
+droop/GSMD
+droopiness/M
+droopy/TPR
+drop/MS
+dropkick/MS
+droplet/SM
+dropout/SM
+dropped
+dropper/SM
+dropping/S
+droppings/M
+dropsical
+dropsy/M
+dross/M
+drought/SM
+drove/RSMZ
+drover/M
+drown/GSJD
+drowning/M
+drowse/MGDS
+drowsily
+drowsiness/M
+drowsy/RTP
+drub/S
+drubbed
+drubber/SM
+drubbing/MS
+drudge/MGDS
+drudgery/M
+drug/MS
+drugged
+druggie/SM
+drugging
+druggist/SM
+druggy
+drugstore/MS
+druid/SM
+druidism/M
+drum/MS
+drumbeat/SM
+drumlin/SM
+drummed
+drummer/SM
+drumming
+drumstick/SM
+drunk/STMNR
+drunkard/MS
+drunken/PY
+drunkenness/M
+drupe/SM
+druthers/M
+dry/ZTGDRSMY
+dryad/SM
+dryer/SM
+dryness/M
+drys
+drywall/M
+dual
+dualism/M
+duality/M
+dub/SM
+dubbed
+dubber/SM
+dubbin/M
+dubbing
+dubiety/M
+dubious/YP
+dubiousness/M
+ducal
+ducat/SM
+duchess/MS
+duchy/SM
+duck/MDGS
+duckbill/SM
+duckboards
+duckling/SM
+duckpins/M
+duckweed/M
+ducky/TRSM
+duct's/K
+duct/CKIFS
+ductile
+ductility/M
+ducting
+ductless
+dud/GSMD
+dude/MS
+dudgeon/M
+due/SM
+duel/MDRJZGS
+dueler/M
+duelist/SM
+duenna/MS
+duet/MS
+duff/MDRZGS
+duffer/M
+dug
+dugout/MS
+duh
+duke/MS
+dukedom/SM
+dulcet
+dulcimer/MS
+dull/DRPTGS
+dullard/SM
+dullness/M
+dully
+duly/U
+dumb/RYPT
+dumbbell/SM
+dumbfound/SDG
+dumbness/M
+dumbo/S
+dumbstruck
+dumbwaiter/SM
+dumdum/MS
+dummy/SM
+dump/MDRZGS
+dumpiness/M
+dumpling/SM
+dumpsite/S
+dumpster/SM
+dumpy/PTR
+dun/SM
+dunce/SM
+dunderhead/MS
+dune/MS
+dung/MDGS
+dungaree/MS
+dungeon/SM
+dunghill/MS
+dunk/MDGS
+dunned
+dunner
+dunnest
+dunning
+dunno
+duo/SM
+duodecimal
+duodena
+duodenal
+duodenum/M
+duopoly/S
+dupe/MZGDRS
+duper/M
+duple
+duplex/MS
+duplicate's
+duplicate/AGNDS
+duplication/AM
+duplicator/MS
+duplicitous
+duplicity/M
+durability/M
+durable
+durably
+durance/M
+duration/M
+duress/M
+during
+durst
+durum/M
+dusk/M
+duskiness/M
+dusky/RTP
+dust/MDRZGS
+dustbin/SM
+dustcart/S
+duster/M
+dustiness/M
+dustless
+dustman
+dustmen
+dustpan/SM
+dustsheet/S
+dusty/RTP
+dutch
+duteous/Y
+dutiable
+dutiful/YP
+dutifulness/M
+duty/SM
+duvet/SM
+dwarf/SGMD
+dwarfish
+dwarfism/M
+dweeb/SM
+dwell/SJZGR
+dweller/M
+dwelling/M
+dwelt/I
+dwindle/DSG
+dyadic
+dybbuk/SM
+dybbukim
+dye/DRSMZG
+dyeing/A
+dyer/M
+dyestuff/M
+dying/M
+dyke/MS
+dynamic/MS
+dynamical/Y
+dynamics/M
+dynamism/M
+dynamite/MZGDRS
+dynamiter/M
+dynamo/SM
+dynastic
+dynasty/SM
+dysentery/M
+dysfunction/MS
+dysfunctional
+dyslectic/SM
+dyslexia/M
+dyslexic/SM
+dyspepsia/M
+dyspeptic/MS
+dysphagia
+dysphoria
+dysphoric
+dysprosium/M
+dystonia
+dz
+e'en
+e'er
+e/FDST
+eBay/M
+eMusic/M
+ea
+each
+eager/PTRY
+eagerness/M
+eagle/MS
+eaglet/MS
+ear/SMDY
+earache/SM
+earbud/SM
+eardrum/SM
+earful/SM
+earl/MS
+earldom/SM
+earliness/M
+earlobe/SM
+early/RTP
+earmark/SMDG
+earmuff/SM
+earn/DRZTGJS
+earned/U
+earner/M
+earnest/SMYP
+earnestness/M
+earnings/M
+earphone/MS
+earpiece/S
+earplug/SM
+earring/SM
+earshot/M
+earsplitting
+earth's
+earth/UDYG
+earthbound
+earthen
+earthenware/M
+earthiness/M
+earthling/MS
+earthly/RT
+earthquake/SM
+earths/U
+earthshaking
+earthward/S
+earthwork/MS
+earthworm/MS
+earthy/RTP
+earwax/M
+earwig/SM
+ease/EDSM
+easel/SM
+easement/SM
+easily/U
+easiness/UM
+easing
+east/M
+eastbound
+easterly/SM
+eastern/ZR
+easterner/M
+easternmost
+eastward/S
+easy/URTP
+easygoing
+eat/ZGBSNR
+eatable/SM
+eaten/U
+eater/M
+eatery/SM
+eave/MS
+eavesdrop/S
+eavesdropped
+eavesdropper/SM
+eavesdropping
+ebb/SMDG
+ebony/SM
+ebullience/M
+ebullient/Y
+ebullition/M
+eccentric/SM
+eccentrically
+eccentricity/SM
+eccl
+ecclesial
+ecclesiastic/SM
+ecclesiastical/Y
+echelon/SM
+echinoderm/SM
+echo's
+echo/ADG
+echoes/A
+echoic
+echolocation/M
+echos
+eclair/SM
+eclat/M
+eclectic/SM
+eclectically
+eclecticism/M
+eclipse/DSMG
+ecliptic/M
+eclogue/SM
+ecocide/M
+ecol
+ecologic
+ecological/Y
+ecologist/MS
+ecology/M
+econ
+econometric
+economic/S
+economical/UY
+economics/M
+economist/SM
+economize/DRSZG
+economizer/M
+economy/SM
+ecosystem/MS
+ecotourism/M
+ecotourist/MS
+ecru/M
+ecstasy/SM
+ecstatic
+ecstatically
+ecu/S
+ecumenical/Y
+ecumenicism/M
+ecumenism/M
+eczema/M
+ed/ACSM
+edamame
+eddy/DSMG
+edelweiss/M
+edema/SM
+edge/MZGJDRS
+edger/M
+edgewise
+edgily
+edginess/M
+edging/M
+edgy/RTP
+edibility/M
+edible/SMP
+edibleness/M
+edict/SM
+edification/M
+edifice/SM
+edifier/M
+edify/DRSZGN
+edifying/U
+edit's
+edit/ADGS
+editable
+edited/U
+edition/MS
+editor/SM
+editorial/SMY
+editorialize/DSG
+editorship/M
+educ
+educability/M
+educable/I
+educate/ADSGNV
+educated/U
+education/AM
+educational/Y
+educationalist/S
+educationist/S
+educations
+educator/MS
+educe/DSGB
+edutainment/M
+eek
+eel/SM
+eerie/RT
+eerily
+eeriness/M
+eff/GSD
+efface/DSLG
+effacement/M
+effect/SMDGV
+effective/IPY
+effectiveness/IM
+effectual/IY
+effectuate/DSG
+effeminacy/M
+effeminate/Y
+effendi/SM
+efferent
+effervesce/GDS
+effervescence/M
+effervescent/Y
+effete/YP
+effeteness/M
+efficacious/Y
+efficacy/IM
+efficiency/ISM
+efficient/IY
+effigy/SM
+efflorescence/M
+efflorescent
+effluence/M
+effluent/MS
+effluvia
+effluvium/M
+effort/SM
+effortless/YP
+effortlessness/M
+effrontery/M
+effulgence/M
+effulgent
+effuse/DSGNVX
+effusion/M
+effusive/YP
+effusiveness/M
+egad
+egalitarian/SM
+egalitarianism/M
+egg/GSMD
+eggbeater/MS
+eggcup/SM
+egghead/SM
+eggnog/M
+eggplant/MS
+eggshell/SM
+eglantine/SM
+ego/SM
+egocentric/MS
+egocentrically
+egocentricity/M
+egoism/M
+egoist/SM
+egoistic
+egoistical/Y
+egomania/M
+egomaniac/MS
+egotism/M
+egotist/SM
+egotistic
+egotistical/Y
+egregious/PY
+egregiousness/M
+egress/MS
+egret/SM
+eh
+eider/SM
+eiderdown/MS
+eigenvalue/S
+eight/SM
+eighteen/MHS
+eighteenth/M
+eighteenths
+eighth/M
+eighths
+eightieth/M
+eightieths
+eighty/SMH
+einsteinium/M
+eisteddfod/S
+either
+ejaculate/GNXDS
+ejaculation/M
+ejaculatory
+eject/SDG
+ejection/MS
+ejector/SM
+eke/DSG
+elaborate/YGNDSPX
+elaborateness/M
+elaboration/M
+elan/M
+eland/SM
+elapse/DSG
+elastic/MS
+elastically
+elasticated
+elasticity/M
+elasticize/DSG
+elate/DSGN
+elated/Y
+elation/M
+elbow/SMDG
+elbowroom/M
+elder/SMY
+elderberry/SM
+eldercare/M
+eldest
+eldritch
+elect's
+elect/ASDGV
+electable
+election/AMS
+electioneer/DGS
+elective/MS
+elector/MS
+electoral/Y
+electorate/MS
+electric/S
+electrical/Y
+electrician/MS
+electricity/M
+electrification/M
+electrifier/M
+electrify/ZGNDRS
+electrocardiogram/MS
+electrocardiograph/M
+electrocardiographs
+electrocardiography/M
+electrocute/DSXGN
+electrocution/M
+electrode/SM
+electrodynamics
+electroencephalogram/MS
+electroencephalograph/M
+electroencephalographic
+electroencephalographs
+electroencephalography/M
+electrologist/SM
+electrolysis/M
+electrolyte/MS
+electrolytic
+electromagnet/MS
+electromagnetic
+electromagnetically
+electromagnetism/M
+electromotive
+electron/MS
+electronic/S
+electronica/M
+electronically
+electronics/M
+electroplate/DSG
+electroscope/SM
+electroscopic
+electroshock/M
+electrostatic/S
+electrostatics/M
+electrotype/MS
+eleemosynary
+elegance/IM
+elegant/IY
+elegiac/MS
+elegiacal
+elegy/SM
+elem
+element/MS
+elemental/Y
+elementary
+elephant/SM
+elephantiasis/M
+elephantine
+elev
+elevate/XDSGN
+elevation/M
+elevator/MS
+eleven/SMH
+elevens/S
+eleventh/M
+elevenths
+elf/M
+elfin
+elfish
+elicit/SDG
+elicitation/M
+elide/DSG
+eligibility/IM
+eligible
+eliminate/XDSGN
+elimination/M
+eliminator/S
+elision/MS
+elite/SM
+elitism/M
+elitist/MS
+elixir/SM
+elk/SM
+ell/SM
+ellipse/MS
+ellipsis/M
+ellipsoid/SM
+ellipsoidal
+elliptic
+elliptical/Y
+elm/SM
+elocution/M
+elocutionary
+elocutionist/SM
+elodea/SM
+elongate/DSGNX
+elongation/M
+elope/DSGL
+elopement/MS
+eloquence/M
+eloquent/Y
+else
+elsewhere
+elucidate/DSGNX
+elucidation/M
+elude/DSG
+elusive/YP
+elusiveness/M
+elver/SM
+elves
+elvish
+em's
+em/S
+emaciate/GNDS
+emaciation/M
+email/SMDG
+emanate/XDSGN
+emanation/M
+emancipate/DSGN
+emancipation/M
+emancipator/MS
+emasculate/GNDS
+emasculation/M
+embalm/SZGDR
+embalmer/M
+embank/SLGD
+embankment/SM
+embargo/MDG
+embargoes
+embark/AEGDS
+embarkation/EM
+embarkations
+embarrass/GLDS
+embarrassed/U
+embarrassing/Y
+embarrassment/SM
+embassy/SM
+embattled
+embed/S
+embedded
+embedding
+embellish/LGDS
+embellishment/SM
+ember/SM
+embezzle/ZGLDRS
+embezzlement/M
+embezzler/M
+embitter/GLDS
+embitterment/M
+emblazon/GDLS
+emblazonment/M
+emblem/SM
+emblematic
+emblematically
+embodiment/EM
+embody/AEGSD
+embolden/DGS
+embolism/MS
+embolization
+emboss/DRSZG
+embosser/M
+embouchure/M
+embower/SGD
+embrace/DSMG
+embraceable
+embrasure/MS
+embrocation/MS
+embroider/SDRZG
+embroiderer/M
+embroidery/SM
+embroil/DGLS
+embroilment/M
+embryo/SM
+embryological
+embryologist/MS
+embryology/M
+embryonic
+emcee/DSM
+emceeing
+emend/SDG
+emendation/MS
+emerald/MS
+emerge/ADSG
+emergence/AM
+emergency/SM
+emergent
+emerita
+emeritus
+emery/M
+emetic/SM
+emf/S
+emigrant/SM
+emigrate/DSXGN
+emigration/M
+emigre/SM
+eminence/MS
+eminent/Y
+emir/MS
+emirate/MS
+emissary/SM
+emission/SM
+emit/S
+emitted
+emitter/MS
+emitting
+emo/SM
+emoji/SM
+emollient/MS
+emolument/MS
+emote/XDSGNV
+emoticon/SM
+emotion/M
+emotional/UY
+emotionalism/M
+emotionalize/GDS
+emotionless
+emotive/Y
+empathetic
+empathize/DSG
+empathy/M
+emperor/MS
+emphases
+emphasis/M
+emphasize/AGDS
+emphatic/U
+emphatically
+emphysema/M
+empire/SM
+empiric
+empirical/Y
+empiricism/M
+empiricist/SM
+emplacement/SM
+employ's
+employ/ADGLS
+employable/U
+employee/SM
+employer/SM
+employment/UAM
+employments
+emporium/SM
+empower/SDGL
+empowerment/M
+empress/MS
+emptily
+emptiness/M
+empty/TGPDRSM
+empyrean/M
+emu/SM
+emulate/DSGNVX
+emulation/M
+emulator/SM
+emulsification/M
+emulsifier/M
+emulsify/NDRSZG
+emulsion/MS
+en/SM
+enable/DRSZG
+enabler/M
+enact/ASLDG
+enactment/ASM
+enamel/JSZGMDR
+enameler/M
+enamelware/M
+enamor/SGD
+enc
+encamp/LSGD
+encampment/MS
+encapsulate/XGNDS
+encapsulation/M
+encase/LDSG
+encasement/M
+encephalitic
+encephalitis/M
+enchain/DGS
+enchant/ELDGS
+enchanter/MS
+enchanting/Y
+enchantment/EM
+enchantments
+enchantress/MS
+enchilada/SM
+encipher/SGD
+encircle/DSGL
+encirclement/M
+encl
+enclave/MS
+enclose/GDS
+enclosed/U
+enclosure/SM
+encode/DRSZG
+encoder/M
+encomium/MS
+encompass/GDS
+encore/DSMG
+encounter/GSMD
+encourage/DSLG
+encouragement/SM
+encouraging/Y
+encroach/GLDS
+encroachment/SM
+encrust/DGS
+encrustation/SM
+encrypt/DGS
+encryption
+encumber/EGSD
+encumbered/U
+encumbrance/MS
+ency
+encyclical/SM
+encyclopedia/MS
+encyclopedic
+encyst/LSGD
+encystment/M
+end/GVSJMD
+endanger/SGDL
+endangerment/M
+endear/SGLD
+endearing/Y
+endearment/SM
+endeavor/GSMD
+endemic/MS
+endemically
+endgame/S
+ending/M
+endive/SM
+endless/PY
+endlessness/M
+endmost
+endocarditis
+endocrine/MS
+endocrinologist/MS
+endocrinology/M
+endogenous/Y
+endometrial
+endometriosis
+endometrium
+endorphin/MS
+endorse/LZGDRS
+endorsement/MS
+endorser/M
+endoscope/MS
+endoscopic
+endoscopy/M
+endothelial
+endothermic
+endow/SDLG
+endowment/MS
+endpoint/SM
+endue/DSG
+endurable/U
+endurance/M
+endure/DSBG
+endways
+enema/SM
+enemy/SM
+energetic
+energetically
+energize/ZGDRS
+energizer/M
+energy/SM
+enervate/GNDS
+enervation/M
+enfeeble/GDSL
+enfeeblement/M
+enfilade/DSMG
+enfold/SGD
+enforce/LZGDRS
+enforceable/U
+enforced/U
+enforcement/M
+enforcer/M
+enfranchise/EGDSL
+enfranchisement/EM
+engage/EADSG
+engagement/EMS
+engagingly
+engender/SGD
+engine/SM
+engineer/MDGS
+engineering/M
+engorge/LGDS
+engorgement/M
+engram/SM
+engrave/ZGJDRS
+engraver/M
+engraving/M
+engross/GLDS
+engrossment/M
+engulf/SLGD
+engulfment/M
+enhance/LZGDRS
+enhancement/SM
+enigma/SM
+enigmatic
+enigmatically
+enjambment/SM
+enjoin/SGD
+enjoy/GBLSD
+enjoyably
+enjoyment/SM
+enlarge/LZGDRS
+enlargeable
+enlargement/MS
+enlarger/M
+enlighten/SGLD
+enlightened/U
+enlightenment/M
+enlist/ADGSL
+enlistee/SM
+enlistment/AM
+enlistments
+enliven/SLDG
+enlivenment/M
+enmesh/DSGL
+enmeshment/M
+enmity/SM
+ennoble/DSGL
+ennoblement/M
+ennui/M
+enormity/SM
+enormous/PY
+enormousness/M
+enough/M
+enplane/DSG
+enquirer/S
+enquiringly
+enrage/GDS
+enrapture/DSG
+enrich/DSLG
+enrichment/M
+enroll/DLSG
+enrollment/MS
+ensconce/DSG
+ensemble/SM
+enshrine/GLDS
+enshrinement/M
+enshroud/DGS
+ensign/MS
+ensilage/M
+enslave/DSGL
+enslavement/M
+ensnare/DSLG
+ensnarement/M
+ensue/DSG
+ensure/ZGDRS
+ensurer/M
+entail/DSGL
+entailment/M
+entangle/EDSLG
+entanglement/EM
+entanglements
+entente/SM
+enter/ASGD
+enteric
+enteritis/M
+enterprise/MGS
+enterprising/Y
+entertain/ZGDRSL
+entertainer/M
+entertaining/MY
+entertainment/MS
+enthrall/GDSL
+enthrallment/M
+enthrone/GDSL
+enthronement/SM
+enthuse/DSG
+enthusiasm/MS
+enthusiast/MS
+enthusiastic/U
+enthusiastically
+entice/GDSL
+enticement/MS
+enticing/Y
+entire/Y
+entirety/M
+entitle/DSGL
+entitlement/SM
+entity/SM
+entomb/DSGL
+entombment/M
+entomological
+entomologist/MS
+entomology/M
+entourage/SM
+entr'acte
+entrails/M
+entrance/LDSMG
+entrancement/M
+entrancing/Y
+entrant/SM
+entrap/LS
+entrapment/M
+entrapped
+entrapping
+entreat/GSD
+entreating/Y
+entreaty/SM
+entree/MS
+entrench/DSGL
+entrenchment/MS
+entrepreneur/SM
+entrepreneurial
+entrepreneurship
+entropy/M
+entrust/SGD
+entry/ASM
+entryphone/S
+entryway/MS
+entwine/DSG
+enumerable
+enumerate/DSGNX
+enumeration/M
+enumerator/SM
+enunciate/DSGN
+enunciation/M
+enuresis/M
+envelop/SLDRZG
+envelope/SM
+enveloper/M
+envelopment/M
+envenom/SDG
+enviable/U
+enviably
+envious/PY
+enviousness/M
+environment/MS
+environmental/Y
+environmentalism/M
+environmentalist/SM
+environs/M
+envisage/GDS
+envision/DGS
+envoy/SM
+envy/DSMG
+envying/Y
+enzymatic
+enzyme/SM
+eolian
+eon/SM
+eosinophil/S
+eosinophilic
+epaulet/SM
+epee/MS
+ephedrine/M
+ephemera/M
+ephemeral/Y
+epic/MS
+epicenter/MS
+epicure/SM
+epicurean/MS
+epidemic/SM
+epidemically
+epidemiological
+epidemiologist/SM
+epidemiology/M
+epidermal
+epidermic
+epidermis/MS
+epidural/S
+epiglottis/MS
+epigram/SM
+epigrammatic
+epigraph/M
+epigraphs
+epigraphy/M
+epilepsy/M
+epileptic/SM
+epilogue/MS
+epinephrine/M
+epiphany/SM
+episcopacy/M
+episcopal
+episcopate/M
+episode/SM
+episodic
+episodically
+epistemic
+epistemological
+epistemology
+epistle/SM
+epistolary
+epitaph/M
+epitaphs
+epithelial
+epithelium/M
+epithet/SM
+epitome/SM
+epitomize/GDS
+epoch/M
+epochal
+epochs
+eponymous
+epoxy/DSMG
+epsilon/SM
+equability/M
+equable
+equably
+equal/SMDYG
+equality/IM
+equalization/M
+equalize/ZGDRS
+equalizer/M
+equanimity/M
+equate/DSGNBX
+equation/M
+equator/SM
+equatorial
+equerry/SM
+equestrian/SM
+equestrianism/M
+equestrienne/SM
+equidistant/Y
+equilateral/SM
+equilibrium/EM
+equine/SM
+equinoctial
+equinox/MS
+equip/AS
+equipage/MS
+equipment/M
+equipoise/M
+equipped/UA
+equipping/A
+equitable/I
+equitably/I
+equitation/M
+equity/ISM
+equiv
+equivalence/MS
+equivalency/SM
+equivalent/MYS
+equivocal/UY
+equivocalness/M
+equivocate/GNXDS
+equivocation/M
+equivocator/SM
+er/C
+era/SM
+eradicable/I
+eradicate/DSGN
+eradication/M
+eradicator/MS
+erase/DRSBZG
+eraser/M
+erasure/SM
+erbium/M
+ere
+erect/PSGDY
+erectile
+erection/SM
+erectness/M
+erector/MS
+erelong
+eremite/MS
+erg/SM
+ergo
+ergonomic/S
+ergonomically
+ergonomics/M
+ergosterol/M
+ergot/M
+ermine/SM
+erode/DSG
+erodible
+erogenous
+erosion/M
+erosive
+erotic/S
+erotica/M
+erotically
+eroticism/M
+err/GSD
+errand/SM
+errant/I
+errata/SM
+erratic
+erratically
+erratum/M
+erroneous/Y
+error/SM
+ersatz/MS
+erst
+erstwhile
+eruct/SDG
+eructation/SM
+erudite/YN
+erudition/M
+erupt/SDGV
+eruption/MS
+erysipelas/M
+erythrocyte/SM
+erythromycin
+escalate/CDSGN
+escalation/CM
+escalations
+escalator/MS
+escallop/SGMD
+escalope/S
+escapade/MS
+escape/LMGDS
+escapee/MS
+escapement/SM
+escapism/M
+escapist/MS
+escapologist/S
+escapology
+escargot/MS
+escarole/MS
+escarpment/MS
+eschatological
+eschatology
+eschew/SDG
+escort/SMDG
+escritoire/MS
+escrow/SM
+escudo/SM
+escutcheon/SM
+esophageal
+esophagi
+esophagus/M
+esoteric
+esoterically
+esp
+espadrille/MS
+espalier/MDSG
+especial/Y
+espionage/M
+esplanade/MS
+espousal/M
+espouse/GDS
+espresso/MS
+esprit/M
+espy/DSG
+esquire/SM
+essay/SMDRZG
+essayer/M
+essayist/SM
+essence/SM
+essential/IMS
+essentially
+establish/AESDGL
+establishment/AEM
+establishments
+estate/SM
+esteem/ESMDG
+ester/SM
+estimable/I
+estimate/MGNDSX
+estimation/M
+estimator/SM
+estoppel
+estrange/LDSG
+estrangement/MS
+estrogen/M
+estrous
+estrus/MS
+estuary/SM
+eta/SM
+etc
+etch/DRSZGJ
+etcher/M
+etching/M
+eternal/YP
+eternalness/M
+eternity/SM
+ethane/M
+ethanol/M
+ether/M
+ethereal/Y
+ethic/SM
+ethical/UY
+ethics/M
+ethnic/SM
+ethnically
+ethnicity/M
+ethnocentric
+ethnocentrism/M
+ethnographer/S
+ethnographic
+ethnographically
+ethnography
+ethnological/Y
+ethnologist/SM
+ethnology/M
+ethological
+ethologist/MS
+ethology/M
+ethos/M
+ethyl/M
+ethylene/M
+etiolated
+etiologic
+etiological
+etiology/SM
+etiquette/M
+etude/SM
+etymological/Y
+etymologist/SM
+etymology/SM
+eucalypti
+eucalyptus/MS
+euchre/DSMG
+euclidean
+eugenic/S
+eugenically
+eugenicist/MS
+eugenics/M
+eulogist/MS
+eulogistic
+eulogize/ZGDRS
+eulogizer/M
+eulogy/SM
+eunuch/M
+eunuchs
+euphemism/SM
+euphemistic
+euphemistically
+euphonious/Y
+euphony/M
+euphoria/M
+euphoric
+euphorically
+eureka
+euro/MS
+europium/M
+eutectic
+euthanasia/M
+euthanize/DSG
+euthenics/M
+evacuate/XDSGN
+evacuation/M
+evacuee/MS
+evade/DRSZG
+evader/M
+evaluate/AGNVDSX
+evaluation/AM
+evanescence/M
+evanescent
+evangelic
+evangelical/SMY
+evangelicalism/M
+evangelism/M
+evangelist/MS
+evangelistic
+evangelize/GDS
+evaporate/GNDS
+evaporation/M
+evaporator/SM
+evasion/SM
+evasive/YP
+evasiveness/M
+eve/ASM
+even/MDRYTGSJP
+evenhanded/Y
+evening/M
+evenness/UM
+evensong/M
+event/SM
+eventful/UY
+eventfulness/M
+eventide/M
+eventual/Y
+eventuality/SM
+eventuate/GDS
+ever
+everglade/SM
+evergreen/SM
+everlasting/MYS
+evermore
+every
+everybody/M
+everyday
+everyone/M
+everyplace
+everything/M
+everywhere
+evict/SDG
+eviction/MS
+evidence/MGDS
+evident/Y
+evil/MRYTSP
+evildoer/SM
+evildoing/M
+eviller
+evillest
+evilness/M
+evince/DSG
+eviscerate/DSGN
+evisceration/M
+evocation/MS
+evocative/Y
+evoke/DSG
+evolution/M
+evolutionary
+evolutionist/SM
+evolve/DSG
+ewe/RSMZ
+ewer/M
+ex/MS
+exabyte/MS
+exacerbate/GNDS
+exacerbation/M
+exact/SPDRYTG
+exacting/Y
+exaction/M
+exactitude/M
+exactness/IM
+exaggerate/XDSGN
+exaggerated/Y
+exaggeration/M
+exaggerator/MS
+exalt/SDG
+exaltation/M
+exam/MS
+examination/AMS
+examine/AGDS
+examiner/MS
+example/MGDS
+exampled/U
+exasperate/DSGN
+exasperated/Y
+exasperating/Y
+exasperation/M
+excavate/GNDSX
+excavation/M
+excavator/SM
+exceed/GSD
+exceeding/Y
+excel/S
+excelled
+excellence/M
+excellency/SM
+excellent/Y
+excelling
+excelsior/M
+except/GSD
+exception/BSM
+exceptionable/U
+exceptional/UY
+exceptionalism
+excerpt/MDGS
+excess/VMS
+excessive/Y
+exchange/DSMG
+exchangeable
+exchequer/SM
+excise/XDSMGN
+excision/M
+excitability/M
+excitably
+excitation/M
+excite/BDRSLZG
+excited/Y
+excitement/SM
+exciter/M
+exciting/Y
+excl
+exclaim/DGS
+exclamation/SM
+exclamatory
+exclude/GDS
+exclusion/MS
+exclusionary
+exclusive/PMYS
+exclusiveness/M
+exclusivity/M
+excommunicate/GNDSX
+excommunication/M
+excoriate/DSGNX
+excoriation/M
+excrement/M
+excremental
+excrescence/MS
+excrescent
+excreta/M
+excrete/XGNDS
+excretion/M
+excretory
+excruciating/Y
+exculpate/DSGN
+exculpation/M
+exculpatory
+excursion/MS
+excursionist/MS
+excursive/YP
+excursiveness/M
+excusable/I
+excusably/I
+excuse/DSBMG
+excused/U
+exec/MS
+execrable
+execrably
+execrate/DSGN
+execration/M
+execute/BXGNVDS
+execution/ZMR
+executioner/M
+executive/SM
+executor/MS
+executrices
+executrix/M
+exegeses
+exegesis/M
+exegetic
+exegetical
+exemplar/SM
+exemplary
+exemplification/M
+exemplify/GDSXN
+exempt/SGD
+exemption/SM
+exercise/DRSMZG
+exerciser/M
+exert/SDG
+exertion/MS
+exeunt
+exfoliate/GNDS
+exhalation/MS
+exhale/DSG
+exhaust/GVMDS
+exhaustible/I
+exhaustion/M
+exhaustive/YP
+exhaustiveness/M
+exhibit/GMDS
+exhibition/MS
+exhibitionism/M
+exhibitionist/MS
+exhibitor/SM
+exhilarate/DSGN
+exhilaration/M
+exhort/SDG
+exhortation/MS
+exhumation/MS
+exhume/DSG
+exigence/MS
+exigency/SM
+exigent
+exiguity/M
+exiguous
+exile/DSMG
+exist/SDG
+existence/MS
+existent
+existential/Y
+existentialism/M
+existentialist/MS
+exit/MDGS
+exobiology/M
+exodus/MS
+exogenous
+exon/MS
+exonerate/GNDS
+exoneration/M
+exoplanet/MS
+exorbitance/M
+exorbitant/Y
+exorcise/DSG
+exorcism/SM
+exorcist/SM
+exoskeleton/SM
+exosphere/SM
+exothermic
+exotic/SM
+exotica
+exotically
+exoticism/M
+exp
+expand/BGSD
+expanse/XMNVS
+expansible
+expansion/M
+expansionary
+expansionism/M
+expansionist/MS
+expansive/YP
+expansiveness/M
+expat/S
+expatiate/GNDS
+expatiation/M
+expatriate/DSMGN
+expatriation/M
+expect/GSD
+expectancy/M
+expectant/Y
+expectation/SM
+expectorant/SM
+expectorate/DSGN
+expectoration/M
+expedience/IM
+expediences
+expediencies
+expediency/IM
+expedient/SMY
+expedite/DRSZGNX
+expediter/M
+expedition/M
+expeditionary
+expeditious/PY
+expeditiousness/M
+expel/S
+expelled
+expelling
+expend/GSBD
+expendable/SM
+expenditure/SM
+expense/MS
+expensive/IYP
+expensiveness/IM
+experience/IMD
+experiences
+experiencing
+experiential
+experiment/MDRSZG
+experimental/Y
+experimentation/M
+experimenter/M
+expert/SPMY
+expertise/M
+expertness/M
+expiate/GNDS
+expiation/M
+expiatory
+expiration/M
+expire/DSG
+expired/U
+expiry/M
+explain/ADGS
+explainable
+explained/U
+explanation/MS
+explanatory
+expletive/MS
+explicable/I
+explicate/XGNDS
+explication/M
+explicit/PY
+explicitness/M
+explode/GDS
+exploit/ZGBMDRS
+exploitation/M
+exploitative
+exploited/U
+exploiter/M
+exploration/MS
+exploratory
+explore/ZGDRS
+explored/U
+explorer/M
+explosion/SM
+explosive/SPMY
+explosiveness/M
+expo/MS
+exponent/MS
+exponential/Y
+exponentiation
+export/BSZGMDR
+exportation/M
+exporter/M
+expose/DSMG
+exposed/U
+exposition/SM
+expositor/SM
+expository
+expostulate/GNXDS
+expostulation/M
+exposure/MS
+expound/ZGDRS
+expounder/M
+express/GVMDSY
+expressed/U
+expressible/I
+expression/SM
+expressionism/M
+expressionist/SM
+expressionistic
+expressionless/Y
+expressive/PY
+expressiveness/M
+expressway/SM
+expropriate/GNXDS
+expropriation/M
+expropriator/SM
+expulsion/MS
+expunge/GDS
+expurgate/DSGNX
+expurgated/U
+expurgation/M
+exquisite/YP
+exquisiteness/M
+ext
+extant
+extemporaneous/PY
+extemporaneousness/M
+extempore
+extemporization/M
+extemporize/GDS
+extend/SZGDRB
+extender/M
+extensible
+extension/SM
+extensional
+extensive/YP
+extensiveness/M
+extent/SM
+extenuate/DSGN
+extenuation/M
+exterior/MS
+exterminate/DSXGN
+extermination/M
+exterminator/MS
+external/MYS
+externalization/SM
+externalize/DSG
+extinct/GDS
+extinction/MS
+extinguish/ZGBDRS
+extinguishable/I
+extinguisher/M
+extirpate/GNDS
+extirpation/M
+extol/S
+extolled
+extolling
+extort/SGD
+extortion/MRZ
+extortionate/Y
+extortioner/M
+extortionist/MS
+extra/SM
+extracellular
+extract/MDGS
+extraction/SM
+extractor/MS
+extracurricular
+extradite/GNBXDS
+extradition/M
+extrajudicial
+extralegal
+extramarital
+extramural
+extraneous/Y
+extraordinaire
+extraordinarily
+extraordinary
+extrapolate/XGNDS
+extrapolation/M
+extrasensory
+extraterrestrial/MS
+extraterritorial
+extraterritoriality/M
+extravagance/MS
+extravagant/Y
+extravaganza/MS
+extravehicular
+extreme/PMYTRS
+extremeness/M
+extremism/M
+extremist/MS
+extremity/SM
+extricable/I
+extricate/GNDS
+extrication/M
+extrinsic
+extrinsically
+extroversion/M
+extrovert/SMD
+extrude/GDS
+extrusion/SM
+extrusive
+exuberance/M
+exuberant/Y
+exudation/M
+exude/DSG
+exult/SDG
+exultant/Y
+exultation/M
+exurb/SM
+exurban
+exurbanite/SM
+exurbia/M
+eye/DSM
+eyeball/GMDS
+eyebrow/SM
+eyedropper/SM
+eyeful/SM
+eyeglass/MS
+eyeing
+eyelash/MS
+eyeless
+eyelet/SM
+eyelid/SM
+eyeliner/MS
+eyeopener/MS
+eyeopening
+eyepiece/MS
+eyesight/M
+eyesore/MS
+eyestrain/M
+eyeteeth
+eyetooth/M
+eyewash/M
+eyewitness/MS
+f/CIAVTR
+fa/M
+fab
+fable/DSM
+fabric/SM
+fabricate/DSGNX
+fabrication/M
+fabricator/SM
+fabulous/Y
+facade/SM
+face's
+face/ACSDG
+facecloth/M
+facecloths
+faceless
+facet/SMDG
+facetious/YP
+facetiousness/M
+facial/SMY
+facile/Y
+facilitate/GNDS
+facilitation/M
+facilitator/MS
+facility/SM
+facing/SM
+facsimile/DSM
+facsimileing
+fact/MS
+faction/SM
+factional
+factionalism/M
+factious
+factitious
+factoid/SM
+factor's
+factor/ASDG
+factorial/MS
+factorization
+factorize/GDS
+factory/SM
+factotum/SM
+factual/Y
+faculty/SM
+fad/GSMD
+faddish/P
+faddist/MS
+faddy/P
+fade/MS
+fading/U
+faerie/SM
+faff/DGS
+fag/SM
+fagged
+fagging
+faggot/SM
+fagot/SMG
+faience/M
+fail/MDGJS
+failing/M
+faille/M
+failure/SM
+fain/RT
+faint/SMDRYTGP
+fainthearted
+faintness/M
+fair/MRYTGJPS
+fairground/MS
+fairing/M
+fairness/UM
+fairway/SM
+fairy/SM
+fairyland/SM
+faith/M
+faithful's
+faithful/UPY
+faithfulness/UM
+faithfuls
+faithless/PY
+faithlessness/M
+faiths
+fajita/SM
+fajitas/M
+fake/MZGDRS
+faker/M
+fakir/SM
+falcon/SMRZ
+falconer/M
+falconry/M
+fall/MNGS
+fallacious/Y
+fallacy/SM
+fallback
+fallibility/IM
+fallible/P
+fallibleness/M
+fallibly/I
+falloff/SM
+fallout/M
+fallow/SMDG
+false/PRYT
+falsehood/SM
+falseness/M
+falsetto/SM
+falsie/SM
+falsifiable
+falsification/M
+falsifier/M
+falsify/DRSZGNX
+falsity/SM
+falter/GSJMD
+faltering/Y
+fame's
+fame/D
+familial
+familiar/MYS
+familiarity/UM
+familiarization/M
+familiarize/GDS
+family/SM
+famine/SM
+famish/DSG
+famous/IY
+fan/SM
+fanatic/SM
+fanatical/Y
+fanaticism/M
+fanboy/SM
+fanciable
+fancier/M
+fanciful/YP
+fancifulness/M
+fancily
+fanciness/M
+fancy/DRSMZTGP
+fancywork/M
+fandango/MS
+fandom
+fanfare/SM
+fang/MDS
+fanlight/SM
+fanned
+fanning
+fanny/SM
+fantail/MS
+fantasia/SM
+fantasist/S
+fantasize/GDS
+fantastic
+fantastical/Y
+fantasy/DSMG
+fanzine/MS
+far
+farad/SM
+faradize/DG
+faraway
+farce/SM
+farcical/Y
+fare/MGDS
+farewell/SM
+farina/M
+farinaceous
+farm/MDRZGSJ
+farmer/M
+farmhand/SM
+farmhouse/SM
+farming/M
+farmland/MS
+farmstead/MS
+farmyard/MS
+faro/M
+farrago/M
+farragoes
+farrier/MS
+farrow/SMDG
+farseeing
+farsighted/P
+farsightedness/M
+fart/MDGS
+farther
+farthermost
+farthest
+farthing/SM
+fascia/SM
+fascicle/SM
+fascinate/GNDSX
+fascinating/Y
+fascination/M
+fascism/M
+fascist/MS
+fascistic
+fashion/ZGBMDRS
+fashionable/U
+fashionably/U
+fashioner/M
+fashionista/MS
+fast/MDRTGSP
+fastback/SM
+fastball/SM
+fasten/UAGDS
+fastener/SM
+fastening/MS
+fastidious/PY
+fastidiousness/M
+fastness/MS
+fat/GSPMD
+fatal/Y
+fatalism/M
+fatalist/SM
+fatalistic
+fatalistically
+fatality/SM
+fatback/M
+fate/MS
+fateful/YP
+fatefulness/M
+fathead/MDS
+father/SGMDY
+fatherhood/M
+fatherland/MS
+fatherless
+fathom/SMDGB
+fathomable/U
+fathomless
+fatigue/MDSG
+fatigues/M
+fatness/M
+fatso/S
+fatten/SDG
+fatter
+fattest
+fattiness/M
+fatty/RSMTP
+fatuity/M
+fatuous/YP
+fatuousness/M
+fatwa/SM
+faucet/SM
+fault/CSMDG
+faultfinder/SM
+faultfinding/M
+faultily
+faultiness/M
+faultless/PY
+faultlessness/M
+faulty/PRT
+faun/MS
+fauna/SM
+fauvism/M
+fauvist/SM
+faux
+fave/S
+favor/ESMDG
+favorable/U
+favorably/U
+favorite/SM
+favoritism/M
+fawn/MDRZGS
+fawner/M
+fax/GMDS
+fay/TSMR
+faze/GDS
+fazed/U
+fealty/M
+fear/MDGS
+fearful/YP
+fearfulness/M
+fearless/PY
+fearlessness/M
+fearsome
+feasibility/M
+feasible/IU
+feasibly
+feast/SMDRZG
+feaster/M
+feat/MS
+feather/SGMD
+featherbedding/M
+featherbrained
+featherless
+featherweight/MS
+feathery/TR
+feature/DSMG
+featureless
+febrile
+fecal
+feces/M
+feckless/PY
+fecund
+fecundate/GNDS
+fecundation/M
+fecundity/M
+fed/SM
+federal/SMY
+federalism/M
+federalist/MS
+federalization/M
+federalize/GDS
+federate/FXDSGN
+federation/FM
+fedora/SM
+fee/SM
+feeble/RTP
+feebleness/M
+feebly
+feed/MRZGSJ
+feedback/M
+feedbag/SM
+feeder/M
+feeding/M
+feedlot/SM
+feel/MRZGSJ
+feeler/M
+feelgood
+feeling/MY
+feet
+feign/SDG
+feigned/U
+feint/SMDG
+feisty/TR
+feldspar/M
+felicitate/GNXDS
+felicitation/M
+felicitous/Y
+felicity/ISM
+feline/SM
+fell/MDRZTGS
+fella/S
+fellatio/M
+fellow/SM
+fellowman/M
+fellowmen
+fellowship/MS
+felon/SM
+felonious
+felony/SM
+felt/MDGS
+fem
+female/PSM
+femaleness/M
+feminine/SMY
+femininity/M
+feminism/M
+feminist/SM
+feminize/DSG
+femoral
+femur/SM
+fen/SM
+fence/DRSMZG
+fencer/M
+fencing/M
+fend/CDRZGS
+fender/CM
+fenestration/M
+fennel/M
+feral
+ferment/FCMS
+fermentation/M
+fermented
+fermenting
+fermium/M
+fern/MS
+ferny/RT
+ferocious/PY
+ferociousness/M
+ferocity/M
+ferret/GSMD
+ferric
+ferromagnetic
+ferrous
+ferrule/MS
+ferry/DSMG
+ferryboat/SM
+ferryman/M
+ferrymen
+fertile/I
+fertility/IM
+fertilization/M
+fertilize/DRSZG
+fertilized/U
+fertilizer/M
+ferule/SM
+fervency/M
+fervent/Y
+fervid/Y
+fervor/M
+fess/FKGSD
+fest/MRZVS
+festal
+fester/GMD
+festival/SM
+festive/YP
+festiveness/M
+festivity/SM
+festoon/GMDS
+feta/M
+fetal
+fetch/DRSZG
+fetcher/M
+fetching/Y
+fete/MGDS
+fetid/P
+fetidness/M
+fetish/MS
+fetishism/M
+fetishist/SM
+fetishistic
+fetlock/MS
+fetter's
+fetter/USGD
+fettle/M
+fettuccine/M
+fetus/MS
+feud/MDGS
+feudal
+feudalism/M
+feudalistic
+fever/SMD
+feverish/YP
+feverishness/M
+few/TPMR
+fewness/M
+fey
+fez/M
+fezzes
+ff
+fiance/CM
+fiancee/MS
+fiances
+fiasco/M
+fiascoes
+fiat/MS
+fib/ZSMR
+fibbed
+fibber/SM
+fibbing
+fiber/M
+fiberboard/M
+fiberfill/M
+fiberglass/M
+fibril/SM
+fibrillate/GNDS
+fibrillation/M
+fibrin/M
+fibroid
+fibrosis/M
+fibrous
+fibula/M
+fibulae
+fibular
+fiche/SM
+fichu/SM
+fickle/RPT
+fickleness/M
+fiction/MS
+fictional/Y
+fictionalization/SM
+fictionalize/DSG
+fictitious/Y
+fictive
+ficus/M
+fiddle/DRSMZG
+fiddler/M
+fiddlesticks
+fiddly/TR
+fidelity/IM
+fidget/SGMD
+fidgety
+fiduciary/SM
+fie
+fief/MS
+fiefdom/MS
+field/ISMRZ
+fielded
+fielder/IM
+fielding
+fieldsman
+fieldsmen
+fieldwork/MRZ
+fieldworker/M
+fiend/SM
+fiendish/Y
+fierce/PRYT
+fierceness/M
+fieriness/M
+fiery/RPT
+fiesta/SM
+fife/MZRS
+fifer/M
+fifteen/MHS
+fifteenth/M
+fifteenths
+fifth/MY
+fifths
+fiftieth/M
+fiftieths
+fifty/SMH
+fig/SLM
+fight/SMRZG
+fightback
+fighter/IMS
+fighting/IM
+figment/MS
+figuration/FM
+figurative/Y
+figure's
+figure/FEGSD
+figurehead/SM
+figurine/MS
+filament/MS
+filamentous
+filbert/MS
+filch/DSG
+file's/KC
+file/CAKGDS
+filename/S
+filer/CSM
+filet
+filial
+filibuster/MDRSZG
+filibusterer/M
+filigree/DSM
+filigreeing
+filing's
+filings
+fill's
+fill/AIDGS
+filled/U
+filler/MS
+fillet/MDGS
+filling/SM
+fillip/MDGS
+filly/SM
+film/MDGS
+filminess/M
+filmmaker/SM
+filmstrip/MS
+filmy/TPR
+filo
+filter/MDRBSZG
+filtered/U
+filterer/M
+filth/M
+filthily
+filthiness/M
+filthy/RPT
+filtrate's
+filtrate/IGNDS
+filtration/IM
+fin/SMR
+finagle/DRSZG
+finagler/M
+final/SMY
+finale/MS
+finalist/SM
+finality/M
+finalization/M
+finalize/DSG
+finance's
+finance/ADSG
+financial/Y
+financier/MS
+financing/M
+finch/MS
+find/JMRZGS
+finder/M
+finding/M
+findings/M
+fine's/F
+fine/CAFTGDS
+finely
+fineness/M
+finery/AM
+finespun
+finesse/DSMG
+finger/MDGSJ
+fingerboard/SM
+fingering/M
+fingerling/SM
+fingermark/S
+fingernail/SM
+fingerprint/SGMD
+fingertip/MS
+finial/MS
+finical
+finickiness/M
+finicky/RPT
+finis/MS
+finish's
+finish/ADSG
+finished/U
+finisher/MS
+finite/IY
+fink/MDGS
+finned
+finny
+fir/ZGSJMDRH
+fire/MS
+firearm/SM
+fireball/MS
+firebomb/MDSJG
+firebox/MS
+firebrand/SM
+firebreak/SM
+firebrick/SM
+firebug/SM
+firecracker/SM
+firedamp/M
+firefight/MRSZG
+firefighter/M
+firefighting/M
+firefly/SM
+fireguard/S
+firehouse/SM
+firelight/ZMR
+fireman/M
+firemen
+fireplace/SM
+fireplug/MS
+firepower/M
+fireproof/DSG
+firer/M
+firescreen/S
+fireside/MS
+firestorm/MS
+firetrap/MS
+firetruck/MS
+firewall/MS
+firewater/M
+firewood/M
+firework/SM
+firm/MDRYPTGS
+firmament/SM
+firmness/M
+firmware/M
+first/SMY
+firstborn/SM
+firsthand
+firth/M
+firths
+fiscal/MYS
+fish/MDRSZG
+fishbowl/SM
+fishcake/SM
+fisher/M
+fisherman/M
+fishermen
+fishery/SM
+fishhook/SM
+fishily
+fishiness/M
+fishing/M
+fishmonger/MS
+fishnet/SM
+fishpond/MS
+fishtail/DGS
+fishwife/M
+fishwives
+fishy/TRP
+fissile
+fission/BM
+fissure/SM
+fist/MS
+fistfight/MS
+fistful/SM
+fisticuffs/M
+fistula/SM
+fistulous/M
+fit/KAMS
+fitful/YP
+fitfulness/M
+fitly
+fitment/S
+fitness/UM
+fitted/UA
+fitter/MS
+fittest
+fitting/SMY
+five/MZRS
+fix/ZGBJMDRS
+fixate/GNVDSX
+fixation/M
+fixative/MS
+fixed/Y
+fixer/M
+fixings/M
+fixity/M
+fixture/MS
+fizz/MDSG
+fizzle/DSMG
+fizzy/RT
+fjord/SM
+fl/JDG
+flab/M
+flabbergast/SGD
+flabbily
+flabbiness/M
+flabby/RPT
+flaccid/Y
+flaccidity/M
+flack/SM
+flag/MS
+flagella
+flagellant/S
+flagellate/GNDS
+flagellation/M
+flagellum/M
+flagged
+flagging/U
+flagman/M
+flagmen
+flagon/MS
+flagpole/SM
+flagrance/M
+flagrancy/M
+flagrant/Y
+flagship/SM
+flagstaff/MS
+flagstone/MS
+flail/SGMD
+flair/SM
+flak/M
+flake/DSMG
+flakiness/M
+flaky/TRP
+flamage
+flambe/MS
+flambeed
+flambeing
+flamboyance/M
+flamboyancy/M
+flamboyant/Y
+flame/DRSJMZG
+flamenco/MS
+flameproof/DGS
+flamethrower/SM
+flamingo/MS
+flammability/IM
+flammable/SM
+flan/MS
+flange/MS
+flank/SZGMDR
+flanker/M
+flannel/SGMD
+flannelette/M
+flap/MS
+flapjack/MS
+flapped
+flapper/SM
+flapping
+flare/DSMG
+flareup/SM
+flash/ZTGMDRS
+flashback/SM
+flashbulb/SM
+flashcard/SM
+flashcube/SM
+flasher/M
+flashgun/SM
+flashily
+flashiness/M
+flashing/M
+flashlight/MS
+flashy/RTP
+flask/SM
+flat/MYPS
+flatbed/SM
+flatboat/SM
+flatbread
+flatcar/SM
+flatfeet
+flatfish/MS
+flatfoot/SMD
+flatiron/SM
+flatland/M
+flatlet/S
+flatmate/S
+flatness/M
+flatted
+flatten/SDG
+flatter/SDRZG
+flatterer/M
+flattering/Y
+flattery/M
+flattest
+flatting
+flattish
+flattop/SM
+flatulence/M
+flatulent
+flatus/M
+flatware/M
+flatworm/SM
+flaunt/MDSG
+flaunting/Y
+flavor/MDSGJ
+flavored/U
+flavorful
+flavoring/M
+flavorless
+flavorsome
+flaw/MDGS
+flawless/PY
+flawlessness/M
+flax/MN
+flay/DGS
+flea/MS
+fleabag/SM
+fleabite/S
+fleapit/S
+fleck/SGMD
+fledged/U
+fledgling/MS
+flee/S
+fleece/MZGDRS
+fleecer/M
+fleeciness/M
+fleecy/RTP
+fleeing
+fleet/STGMDRYP
+fleetingly/M
+fleetingness/M
+fleetness/M
+flesh/GMDSY
+fleshly/TR
+fleshpot/MS
+fleshy/RT
+flew
+flex/AMS
+flexed
+flexibility/IM
+flexible/I
+flexibly/I
+flexing
+flexion
+flextime/M
+flibbertigibbet/SM
+flick/SZGMDR
+flicker/GMD
+flier/M
+flight/MS
+flightiness/M
+flightless
+flighty/PTR
+flimflam/SM
+flimflammed
+flimflamming
+flimsily
+flimsiness/M
+flimsy/TRP
+flinch/GMDS
+fling/GM
+flint/SM
+flintlock/SM
+flinty/TR
+flip/MS
+flippancy/M
+flippant/Y
+flipped
+flipper/MS
+flippest
+flipping
+flippy/S
+flirt/SGMD
+flirtation/MS
+flirtatious/YP
+flirtatiousness/M
+flirty
+flit/MS
+flitted
+flitting
+float/SMDRZG
+floater/M
+flock/SMDG
+flocking/M
+floe/MS
+flog/S
+flogged
+flogger/SM
+flogging/MS
+flood/SMDRG
+floodgate/MS
+floodlight/MDSG
+floodlit
+floodplain/MS
+floodwater/MS
+floor/SMDG
+floorboard/MS
+flooring/M
+floorwalker/SM
+floozy/SM
+flop/MS
+flophouse/MS
+flopped
+floppily
+floppiness/M
+flopping
+floppy/PRSMT
+flora/SM
+floral
+florescence/IM
+florescent/I
+floret/SM
+florid/PY
+floridness/M
+florin/SM
+florist/SM
+floss/MDSG
+flossy/RT
+flotation/SM
+flotilla/MS
+flotsam/M
+flounce/DSMG
+flouncy
+flounder/MDSG
+flour/SMDG
+flourish/GMDS
+floury
+flout/SMDRZG
+flouter/M
+flow/MDGS
+flowchart/SM
+flower's
+flower/CSDG
+flowerbed/MS
+floweriness/M
+flowering/S
+flowerless
+flowerpot/MS
+flowery/PTR
+flown
+flt
+flu/M
+flub/MS
+flubbed
+flubbing
+fluctuate/GNDSX
+fluctuation/M
+flue/MS
+fluency/M
+fluent/Y
+fluff/SMDG
+fluffiness/M
+fluffy/RPT
+fluid/SMY
+fluidity/M
+fluke/SM
+fluky/RT
+flume/SM
+flummox/DSG
+flung
+flunk/SMDG
+flunky/SM
+fluoresce/DSG
+fluorescence/M
+fluorescent
+fluoridate/GNDS
+fluoridation/M
+fluoride/SM
+fluorine/M
+fluorite/M
+fluorocarbon/MS
+fluoroscope/SM
+fluoroscopic
+flurry/GDSM
+flush/MDRSTG
+fluster/MDSG
+flute/DSMG
+fluting/M
+flutist/MS
+flutter/MDSG
+fluttery
+fluvial
+flux/IMS
+fluxed
+fluxing
+fly/ZTGBDRSM
+flyaway
+flyblown
+flyby/M
+flybys
+flycatcher/MS
+flying/M
+flyleaf/M
+flyleaves
+flyover/MS
+flypaper/SM
+flypast/S
+flysheet/S
+flyspeck/GMDS
+flyswatter/MS
+flytrap/S
+flyway/SM
+flyweight/SM
+flywheel/MS
+foal/MDGS
+foam/MDGS
+foaminess/M
+foamy/RTP
+fob/SM
+fobbed
+fobbing
+focal/Y
+focus's
+focus/ADSG
+focused/U
+fodder/SM
+foe/SM
+fog's
+fog/CS
+fogbound
+fogged/C
+foggily
+fogginess/M
+fogging/C
+foggy/RTP
+foghorn/MS
+fogy/SM
+fogyish
+foible/SM
+foil/MDGS
+foist/SDG
+fol
+fold's
+fold/AUSGD
+foldaway
+folder/SM
+foldout/MS
+foliage/M
+folic
+folio/SM
+folk/MS
+folklore/M
+folkloric
+folklorist/MS
+folksiness/M
+folksinger/SM
+folksinging/M
+folksy/PTR
+folktale/MS
+folkway/MS
+foll
+follicle/MS
+follow/SDRZGJ
+follower/M
+following/M
+followup/S
+folly/SM
+foment/SGD
+fomentation/M
+fond/RYTP
+fondant/MS
+fondle/DSG
+fondness/M
+fondue/SM
+font/MS
+fontanel/MS
+foo
+foobar
+food/MS
+foodie/SM
+foodstuff/SM
+fool/MDGS
+foolery/SM
+foolhardily
+foolhardiness/M
+foolhardy/TPR
+foolish/YP
+foolishness/M
+foolproof
+foolscap/M
+foot/MDRZGSJ
+footage/M
+football/MRZGS
+footballer/M
+footbridge/SM
+footfall/MS
+foothill/MS
+foothold/MS
+footie
+footing/M
+footless
+footlights/M
+footling/MS
+footlocker/SM
+footloose
+footman/M
+footmen
+footnote/MGDS
+footpath/M
+footpaths
+footplate/S
+footprint/SM
+footrace/MS
+footrest/MS
+footsie/SM
+footslogging
+footsore
+footstep/MS
+footstool/SM
+footwear/M
+footwork/M
+footy
+fop/SM
+foppery/M
+foppish/P
+foppishness/M
+for/H
+fora
+forage/DRSMZG
+forager/M
+foray/SMDG
+forbade
+forbear/SMG
+forbearance/M
+forbid/S
+forbidden
+forbidding/YS
+forbore
+forborne
+force/DSMG
+forced/U
+forceful/PY
+forcefulness/M
+forceps/M
+forcible
+forcibly
+ford/MDGSB
+fore/MS
+forearm/GSMD
+forebear/MS
+forebode/GJDS
+foreboding/M
+forecast/MRZGS
+forecaster/M
+forecastle/MS
+foreclose/DSG
+foreclosure/MS
+forecourt/SM
+foredoom/DGS
+forefather/MS
+forefeet
+forefinger/SM
+forefoot/M
+forefront/SM
+forego/G
+foregoes
+foregone
+foreground/GMDS
+forehand/MS
+forehead/MS
+foreign/ZRP
+foreigner/M
+foreignness/M
+foreknew
+foreknow/GS
+foreknowledge/M
+foreknown
+foreleg/SM
+forelimb/MS
+forelock/MS
+foreman/M
+foremast/MS
+foremen
+foremost
+forename/MDS
+forenoon/MS
+forensic/MS
+forensically
+forensics/M
+foreordain/GSD
+forepart/MS
+foreperson/SM
+foreplay/M
+forequarter/MS
+forerunner/MS
+foresail/MS
+foresaw
+foresee/RSBZ
+foreseeable/U
+foreseeing
+foreseen/U
+foreseer/M
+foreshadow/GDS
+foreshore/S
+foreshorten/DSG
+foresight/MD
+foresightedness/M
+foreskin/MS
+forest's
+forest/ACGDS
+forestall/SGD
+forestation/ACM
+forester/MS
+forestland/M
+forestry/M
+foretaste/DSMG
+foretell/GS
+forethought/M
+foretold
+forever/M
+forevermore
+forewarn/DSG
+forewent
+forewoman/M
+forewomen
+foreword/MS
+forfeit/GSMD
+forfeiture/SM
+forgather/SDG
+forgave
+forge/DRSMZGVJ
+forger/M
+forgery/SM
+forget/S
+forgetful/YP
+forgetfulness/M
+forgettable/U
+forgetting
+forging/M
+forgivable/U
+forgive/BRSZGP
+forgiven
+forgiveness/M
+forgiver/M
+forgiving/U
+forgo/RZG
+forgoer/M
+forgoes
+forgone
+forgot
+forgotten/U
+fork/MDGS
+forkful/SM
+forklift/MS
+forlorn/Y
+form's
+form/CAIFDGS
+formal/SMY
+formaldehyde/M
+formalin
+formalism/M
+formalist/MS
+formalities
+formality/IM
+formalization/M
+formalize/GDS
+format/SMV
+formation/CFASM
+formatted/A
+formatting/M
+formed/U
+former/FIAM
+formerly
+formfitting
+formic
+formidable
+formidably
+formless/PY
+formlessness/M
+formula/MS
+formulaic
+formulate/ADSGNX
+formulated/U
+formulation/AM
+formulator/SM
+fornicate/GNDS
+fornication/M
+fornicator/MS
+forsake/GS
+forsaken
+forsook
+forsooth
+forswear/SG
+forswore
+forsworn
+forsythia/SM
+fort/MS
+forte/SM
+forthcoming/M
+forthright/YP
+forthrightness/M
+forthwith
+fortieth/M
+fortieths
+fortification/M
+fortified/U
+fortifier/M
+fortify/DRSNZGX
+fortissimo
+fortitude/M
+fortnight/MYS
+fortress/MS
+fortuitous/YP
+fortuitousness/M
+fortuity/M
+fortunate/UY
+fortune/MS
+fortuneteller/SM
+fortunetelling/M
+forty/SMH
+forum/SM
+forward/MDRYZTGSP
+forwarder/M
+forwardness/M
+forwent
+fossa
+fossil/SM
+fossilization/M
+fossilize/GDS
+foster/GSD
+fought
+foul/MDRYTGSP
+foulard/M
+foulmouthed
+foulness/M
+found/FSDG
+foundation/SM
+founded/U
+founder/GMDS
+foundling/SM
+foundry/SM
+fount/SM
+fountain/SM
+fountainhead/MS
+four/MHS
+fourfold
+fourposter/SM
+fourscore/M
+foursome/SM
+foursquare
+fourteen/SMH
+fourteenth/M
+fourteenths
+fourth/MY
+fourths
+fowl/MDGS
+fox/GMDS
+foxfire/M
+foxglove/SM
+foxhole/MS
+foxhound/SM
+foxhunt/GS
+foxily
+foxiness/M
+foxtrot/MS
+foxtrotted
+foxtrotting
+foxy/RTP
+foyer/SM
+fps
+fr
+fracas/MS
+frack/SDG
+fractal/SM
+fraction/ISM
+fractional/Y
+fractious/YP
+fractiousness/M
+fracture/MGDS
+frag/S
+fragile/RT
+fragility/M
+fragment/GMDS
+fragmentary/M
+fragmentation/M
+fragrance/MS
+fragrant/Y
+frail/RYTP
+frailness/M
+frailty/SM
+frame/DRSMZG
+framed/U
+framer/M
+framework/SM
+franc/SM
+franchise's
+franchise/EDSG
+franchisee/SM
+franchiser/SM
+francium/M
+francophone
+frangibility/M
+frangible
+frank/SMDRYTGP
+frankfurter/MS
+frankincense/M
+frankness/M
+frantic
+frantically
+frappe/SM
+frat/MS
+fraternal/Y
+fraternity/FSM
+fraternization/M
+fraternize/ZGDRS
+fraternizer/M
+fratricidal
+fratricide/MS
+fraud's
+fraud/S
+fraudster/S
+fraudulence/M
+fraudulent/Y
+fraught
+fray's
+fray/CDGS
+frazzle/MGDS
+freak/SMDG
+freakish/YP
+freakishness/M
+freaky/RT
+freckle/DSMG
+freckly
+free/YTDRS
+freebase/MGDS
+freebie/SM
+freebooter/SM
+freeborn
+freedman/M
+freedmen
+freedom/SM
+freehand
+freehold/ZMRS
+freeholder/M
+freeing
+freelance/DRSMZG
+freelancer/M
+freeload/SDRZG
+freeloader/M
+freeman/M
+freemasonry
+freemen
+freephone
+freesia/S
+freestanding
+freestone/SM
+freestyle/SM
+freethinker/SM
+freethinking/M
+freeware/M
+freeway/MS
+freewheel/DGS
+freewill
+freezable
+freeze's
+freeze/UAGS
+freezer/MS
+freezing's
+freight/MDRZGS
+freighter/M
+french
+frenetic
+frenetically
+frenzied/Y
+frenzy/DSM
+freq
+frequencies
+frequency/IM
+frequent/DRYSZTG
+frequented/U
+frequenter/M
+fresco/M
+frescoes
+fresh/PNRYXZT
+freshen/ZGDR
+freshener/M
+freshet/MS
+freshman/M
+freshmen
+freshness/M
+freshwater/M
+fret/MS
+fretful/YP
+fretfulness/M
+fretsaw/MS
+fretted
+fretting
+fretwork/M
+friable
+friar/SM
+friary/SM
+fricassee/DSM
+fricasseeing
+fricative/SM
+friction/SM
+frictional
+fridge/SM
+friedcake/MS
+friend's
+friend/UGSDY
+friendless
+friendlies
+friendliness/UM
+friendly's
+friendly/UPTR
+friendship/MS
+frieze/SM
+frig/S
+frigate/MS
+frigged
+frigging
+fright/SXGMDN
+frighten/DG
+frightening/Y
+frightful/PY
+frightfulness/M
+frigid/YP
+frigidity/M
+frigidness/M
+frill/SMD
+frilly/TR
+fringe's
+fringe/IDSG
+frippery/SM
+frisk/SDG
+friskily
+friskiness/M
+frisky/TRP
+frisson/S
+fritter/MDSG
+fritz/M
+frivolity/SM
+frivolous/PY
+frivolousness/M
+frizz/MDSYG
+frizzle/MGDS
+frizzy/TR
+fro
+frock's
+frock/CUS
+frog/MS
+frogging/S
+frogman/M
+frogmarch/GDS
+frogmen
+frogspawn
+frolic/SM
+frolicked
+frolicker/SM
+frolicking
+frolicsome
+from
+frond/SM
+front's
+front/FSDG
+frontage/MS
+frontal/Y
+frontbench/ZRS
+frontier/MS
+frontiersman/M
+frontiersmen
+frontierswoman
+frontierswomen
+frontispiece/MS
+frontward/S
+frosh/M
+frost's
+frost/CSDG
+frostbit
+frostbite/MGS
+frostbitten
+frostily
+frostiness/M
+frosting/SM
+frosty/TPR
+froth/MDG
+frothiness/M
+froths
+frothy/TPR
+froufrou/M
+froward/P
+frowardness/M
+frown/SMDG
+frowzily
+frowziness/M
+frowzy/TPR
+froze/AU
+frozen/UA
+fructify/DSG
+fructose/M
+frugal/Y
+frugality/M
+fruit/SMDG
+fruitcake/MS
+fruiterer/S
+fruitful/YP
+fruitfulness/M
+fruitiness/M
+fruition/M
+fruitless/PY
+fruitlessness/M
+fruity/TPR
+frump/SM
+frumpish
+frumpy/TR
+frustrate/GNXDS
+frustrating/Y
+frustration/M
+frustum/MS
+fry/GDSM
+fryer/SM
+ft
+ftp/ZGS
+fuchsia/MS
+fuck/SMGDRZ!
+fucker/M!
+fuckhead/S!
+fuddle/DSMG
+fudge/DSMG
+fuehrer/MS
+fuel's
+fuel/ADGS
+fug
+fugal
+fuggy
+fugitive/MS
+fugue/SM
+fuhrer/SM
+fulcrum/MS
+fulfill/LDGS
+fulfilled/U
+fulfilling/U
+fulfillment/M
+full/MDRZTGSP
+fullback/MS
+fuller/M
+fullness/M
+fully
+fulminate/DSXGN
+fulmination/M
+fulsome/PY
+fulsomeness/M
+fum/S
+fumble/DRSMZG
+fumbler/M
+fumbling/Y
+fume/MGDS
+fumigant/MS
+fumigate/GNDS
+fumigation/M
+fumigator/SM
+fumy/RT
+fun/M
+function/MDGS
+functional/Y
+functionalism
+functionalist/S
+functionality/S
+functionary/SM
+fund/AMDGS
+fundamental/SMY
+fundamentalism/M
+fundamentalist/SM
+funded/U
+funding/M
+fundraiser/MS
+fundraising
+funeral/MS
+funerary
+funereal/Y
+funfair/S
+fungal
+fungi
+fungible/MS
+fungicidal
+fungicide/MS
+fungoid
+fungous
+fungus/M
+funicular/SM
+funk/MDGS
+funkiness/M
+funky/PRT
+funnel/MDGS
+funner
+funnest
+funnily
+funniness/M
+funny/TPRSM
+funnyman/M
+funnymen
+fur/SM
+furbelow/M
+furbish/ADSG
+furious/Y
+furl's
+furl/UDGS
+furlong/SM
+furlough/GMD
+furloughs
+furn
+furnace/SM
+furnish/ADSG
+furnished/U
+furnishings/M
+furniture/M
+furor/SM
+furred
+furrier/M
+furriness/M
+furring/M
+furrow/MDSG
+furry/ZTRP
+further/SGD
+furtherance/M
+furthermore
+furthermost
+furthest
+furtive/YP
+furtiveness/M
+fury/SM
+furze/M
+fuse's/A
+fuse/CAIFGDS
+fusee/SM
+fuselage/SM
+fusibility/M
+fusible
+fusilier/SM
+fusillade/MS
+fusion/IFKSM
+fuss/MDSG
+fussbudget/MS
+fussily
+fussiness/M
+fusspot/SM
+fussy/TRP
+fustian/M
+fustiness/M
+fusty/TRP
+fut
+futile/Y
+futility/M
+futon/SM
+future/MS
+futurism/M
+futurist/MS
+futuristic
+futurity/SM
+futurologist/MS
+futurology/M
+futz/DSG
+fuzz/MDSG
+fuzzball/S
+fuzzily
+fuzziness/M
+fuzzy/PTR
+fwd
+fwy
+g/SNXVB
+gab/SM
+gabardine/SM
+gabbed
+gabbiness/M
+gabbing
+gabble/DSMG
+gabby/RTP
+gaberdine/SM
+gabfest/MS
+gable/DSM
+gad/S
+gadabout/SM
+gadded
+gadder/SM
+gadding
+gadfly/SM
+gadget/SM
+gadgetry/M
+gadolinium/M
+gaff/MDRZGS
+gaffe/SM
+gaffer/M
+gag/SM
+gaga
+gagged
+gagging
+gaggle/SM
+gaiety/M
+gaily
+gain's
+gain/ADGS
+gainer/SM
+gainful/Y
+gainsaid
+gainsay/ZGRS
+gainsayer/M
+gait/MRZS
+gaiter/M
+gal/SM
+gala/MS
+galactic
+galaxy/SM
+gale's
+gale/AS
+galena/M
+gall/MDGS
+gallant/SMY
+gallantry/M
+gallbladder/MS
+galleon/SM
+galleria/MS
+gallery/SM
+galley/SM
+gallimaufry/SM
+gallium/M
+gallivant/GSD
+gallon/SM
+gallop/SMDG
+gallows/M
+gallstone/MS
+galoot/SM
+galore
+galosh/MS
+galumph/DG
+galumphs
+galvanic
+galvanism/M
+galvanization/M
+galvanize/DSG
+galvanometer/MS
+gambit/SM
+gamble/DRSMZG
+gambler/M
+gambling/M
+gambol/SMDG
+game/MYTGDRSP
+gamecock/MS
+gamekeeper/MS
+gameness/M
+gamesmanship/M
+gamester/MS
+gamete/SM
+gametic
+gamin/SM
+gamine/SM
+gaminess/M
+gaming/M
+gamma/SM
+gammon/M
+gammy
+gamut/SM
+gamy/RTP
+gander/SM
+gang/MDGS
+gangbusters/M
+gangland/M
+ganglia
+gangling
+ganglion/M
+ganglionic
+gangplank/SM
+gangrene/DSMG
+gangrenous
+gangsta/S
+gangster/SM
+gangway/MS
+ganja
+gannet/SM
+gantlet/MS
+gantry/SM
+gap/GSMD
+gape/MS
+gar/SLM
+garage/DSMG
+garb/MDGS
+garbage/M
+garbageman
+garbanzo/SM
+garble/DSG
+garcon/SM
+garden/SZGMDR
+gardener/M
+gardenia/MS
+gardening/M
+garfish/MS
+gargantuan
+gargle/DSMG
+gargoyle/SM
+garish/PY
+garishness/M
+garland/MDGS
+garlic/M
+garlicky
+garment/MS
+garner/SGD
+garnet/SM
+garnish/GLMDS
+garnishee/DSM
+garnisheeing
+garnishment/SM
+garret/SM
+garrison/MDSG
+garrote/MZGDRS
+garroter/M
+garrulity/M
+garrulous/PY
+garrulousness/M
+garter/SM
+gas's
+gas/CS
+gasbag/SM
+gaseous
+gash/MDSG
+gasholder/S
+gasket/SM
+gaslight/MS
+gasman
+gasmen
+gasohol/M
+gasoline/M
+gasometer/S
+gasp/MDGS
+gassed/C
+gasses
+gassing/C
+gassy/RT
+gastric
+gastritis/M
+gastroenteritis/M
+gastrointestinal
+gastronome/S
+gastronomic
+gastronomical/Y
+gastronomy/M
+gastropod/SM
+gasworks/M
+gate/MGDS
+gateau
+gateaux
+gatecrash/DRSZG
+gatecrasher/M
+gatehouse/SM
+gatekeeper/MS
+gatepost/MS
+gateway/MS
+gather/SJZGMDR
+gatherer/M
+gathering/M
+gator/SM
+gauche/RPYT
+gaucheness/M
+gaucherie/M
+gaucho/SM
+gaudily
+gaudiness/M
+gaudy/RPT
+gauge/DSMG
+gaunt/RPT
+gauntlet/MS
+gauntness/M
+gauze/M
+gauziness/M
+gauzy/RPT
+gave
+gavel/SM
+gavotte/MS
+gawd
+gawk/DGS
+gawkily
+gawkiness/M
+gawky/RPT
+gawp/DGS
+gay/TSPMR
+gayness/M
+gaze/MZGDRS
+gazebo/SM
+gazelle/MS
+gazer/M
+gazette/MGDS
+gazetteer/MS
+gazillion/S
+gazpacho/M
+gazump/DGS
+gear/MDGS
+gearbox/MS
+gearing/M
+gearshift/MS
+gearwheel/SM
+gecko/SM
+geddit
+gee/DS
+geeing
+geek/MS
+geeky/RT
+geese
+geezer/MS
+geisha/M
+gel/SM
+gelatin/M
+gelatinous
+gelcap/M
+geld/DJGS
+gelding/M
+gelid
+gelignite/M
+gelled
+gelling
+gem/SM
+gemological
+gemologist/MS
+gemology/M
+gemstone/MS
+gendarme/MS
+gender/MDS
+gene/MS
+genealogical/Y
+genealogist/MS
+genealogy/SM
+genera
+general/SMY
+generalissimo/MS
+generalist/MS
+generality/SM
+generalization/MS
+generalize/GDS
+generalship/M
+generate/CAVNGSD
+generation/ACM
+generational
+generations
+generator/SM
+generic/SM
+generically
+generosity/SM
+generous/PY
+generousness/M
+genes/S
+genesis/M
+genetic/S
+genetically
+geneticist/MS
+genetics/M
+genial/FY
+geniality/FM
+geniculate
+genie/SM
+genii
+genital/FY
+genitalia/M
+genitals/M
+genitive/MS
+genitourinary
+genius/MS
+genned
+genning
+genocidal
+genocide/MS
+genome/MS
+genomics
+genre/SM
+gent/AMS
+genteel/YP
+genteelness/M
+gentian/SM
+gentile/SM
+gentility/M
+gentle/TGDRSP
+gentlefolk/MS
+gentlefolks/M
+gentleman/MY
+gentlemanly/U
+gentlemen
+gentleness/M
+gentlewoman/M
+gentlewomen
+gently
+gentrification/M
+gentrify/DSGN
+gentry/SM
+genuflect/DGS
+genuflection/MS
+genuine/PY
+genuineness/M
+genus/M
+geocache/DSG
+geocentric
+geocentrically
+geochemistry/M
+geode/SM
+geodesic/SM
+geodesy/M
+geodetic
+geoengineering
+geog
+geographer/SM
+geographic
+geographical/Y
+geography/SM
+geologic
+geological/Y
+geologist/MS
+geology/SM
+geom
+geomagnetic
+geomagnetism/M
+geometer
+geometric
+geometrical/Y
+geometry/SM
+geophysical
+geophysicist/SM
+geophysics/M
+geopolitical
+geopolitics/M
+geostationary
+geosynchronous
+geosyncline/MS
+geothermal
+geothermic
+geranium/MS
+gerbil/MS
+geriatric/S
+geriatrician/S
+geriatrics/M
+germ/MS
+germane
+germanium/M
+germicidal
+germicide/MS
+germinal/M
+germinate/GNDS
+germination/M
+gerontological
+gerontologist/MS
+gerontology/M
+gerrymander/GMDS
+gerrymandering/M
+gerund/MS
+gestalt/S
+gestapo/MS
+gestate/GNDS
+gestation/M
+gestational
+gesticulate/DSGNX
+gesticulation/M
+gestural
+gesture/MGDS
+gesundheit
+get/S
+getaway/SM
+getting
+getup/M
+gewgaw/SM
+geyser/SM
+ghastliness/M
+ghastly/TPR
+ghat/MS
+ghee
+gherkin/MS
+ghetto/SM
+ghettoize/GDS
+ghost/SMDYG
+ghostliness/M
+ghostly/RTP
+ghostwrite/ZGRS
+ghostwriter/M
+ghostwritten
+ghostwrote
+ghoul/SM
+ghoulish/YP
+ghoulishness/M
+giant/SM
+giantess/MS
+gibber/GDS
+gibberish/M
+gibbet/GMDS
+gibbon/MS
+gibbous
+gibe/MGDS
+giblet/SM
+giddily
+giddiness/M
+giddy/RTP
+gift/MDGS
+gig/SM
+gigabit/SM
+gigabyte/MS
+gigahertz/M
+gigantic
+gigantically
+gigapixel/MS
+gigawatt/SM
+gigged
+gigging
+giggle/DRSMZG
+giggler/M
+giggly/RT
+gigolo/SM
+gild/MDRZGS
+gilder/M
+gilding/M
+gill/MS
+gillie/S
+gillion/S
+gilt/MS
+gimbals/M
+gimcrack/SM
+gimcrackery/M
+gimlet/GSMD
+gimme/SM
+gimmick/MS
+gimmickry/M
+gimmicky
+gimp/MDGS
+gimpy
+gin/SM
+ginger/GSMDY
+gingerbread/M
+gingersnap/SM
+gingery
+gingham/M
+gingivitis/M
+ginkgo/M
+ginkgoes
+ginned
+ginning
+ginormous
+ginseng/M
+giraffe/MS
+gird/DRZGS
+girder/M
+girdle/DSMG
+girl/MS
+girlfriend/MS
+girlhood/SM
+girlish/YP
+girlishness/M
+girly
+giro/S
+girt/MDGS
+girth/M
+girths
+gist/M
+git/S
+gite/S
+give/ZGJRS
+giveaway/MS
+giveback/MS
+given/SM
+giver/M
+gizmo/SM
+gizzard/MS
+glace/S
+glaceed
+glaceing
+glacial/Y
+glaciate/XGNDS
+glaciation/M
+glacier/MS
+glad/MYSP
+gladden/GDS
+gladder
+gladdest
+glade/SM
+gladiator/SM
+gladiatorial
+gladiola/SM
+gladioli
+gladiolus/M
+gladness/M
+gladsome
+glam
+glamorization/M
+glamorize/DSG
+glamorous/Y
+glamour/GMDS
+glance/DSMG
+gland/SM
+glandes
+glandular
+glans/M
+glare/DSMG
+glaring/Y
+glasnost/M
+glass/MDSG
+glassblower/MS
+glassblowing/M
+glassful/SM
+glasshouse/S
+glassily
+glassiness/M
+glassware/M
+glassy/RTP
+glaucoma/M
+glaze/DSMG
+glazier/SM
+glazing/M
+gleam/SMDGJ
+glean/SDRZGJ
+gleaner/M
+gleanings/M
+glee/M
+gleeful/YP
+gleefulness/M
+glen/MS
+glenohumeral
+glenoid
+glib/YP
+glibber
+glibbest
+glibness/M
+glide/DRSMZG
+glider/M
+gliding/M
+glimmer/MDGJS
+glimmering/M
+glimpse/MGDS
+glint/SMDG
+glissandi
+glissando/M
+glisten/MDSG
+glister/DSG
+glitch/GMDS
+glitter/MDSG
+glitterati
+glittery
+glitz/M
+glitzy/TR
+gloaming/SM
+gloat/SMDG
+gloating/Y
+glob/MDGS
+global/Y
+globalism/M
+globalist/MS
+globalization/M
+globalize/GDS
+globe/SM
+globetrotter/MS
+globetrotting
+globular
+globule/MS
+globulin/M
+glockenspiel/SM
+gloom/M
+gloomily
+gloominess/M
+gloomy/TRP
+glop/M
+gloppy
+glorification/M
+glorify/GDSN
+glorious/IY
+glory/DSMG
+gloss/MDSG
+glossary/SM
+glossily
+glossiness/M
+glossolalia/M
+glossy/PTRSM
+glottal
+glottis/MS
+glove/DSMG
+glow/MDRZGS
+glower/GMD
+glowing/Y
+glowworm/MS
+glucagon
+glucose/M
+glue/MGDS
+glued/U
+gluey
+gluier
+gluiest
+glum/YP
+glummer
+glummest
+glumness/M
+glut/MNS
+gluten/M
+glutenous
+glutinous/Y
+glutted
+glutting
+glutton/MS
+gluttonous/Y
+gluttony/M
+glycerin/M
+glycerol/M
+glycogen/M
+glyph
+gm
+gnarl/SMDG
+gnarly/TR
+gnash/MDSG
+gnat/MS
+gnaw/DGS
+gneiss/M
+gnocchi
+gnome/SM
+gnomic
+gnomish
+gnu/SM
+go/JMRHZG
+goad/MDGS
+goal/MS
+goalie/SM
+goalkeeper/MS
+goalkeeping/M
+goalless
+goalmouth
+goalmouths
+goalpost/MS
+goalscorer/S
+goaltender/MS
+goat/MS
+goatee/SM
+goatherd/MS
+goatskin/MS
+gob/SM
+gobbed
+gobbet/SM
+gobbing
+gobble/DRSMZG
+gobbledygook/M
+gobbler/M
+goblet/SM
+goblin/SM
+gobsmacked
+gobstopper/S
+god/SM
+godawful
+godchild/M
+godchildren/M
+goddammit
+goddamn/D
+goddaughter/MS
+goddess/MS
+godfather/SM
+godforsaken
+godhead/M
+godhood/M
+godless/PY
+godlessness/M
+godlike
+godliness/UM
+godly/URTP
+godmother/SM
+godparent/SM
+godsend/SM
+godson/SM
+godspeed
+goer/M
+goes
+gofer/SM
+goggle/DSMG
+goggles/M
+going/M
+goiter/SM
+gold/MNS
+goldbrick/ZGSMDR
+goldbricker/M
+golden/TR
+goldenrod/M
+goldfield/S
+goldfinch/MS
+goldfish/MS
+goldmine/SM
+goldsmith/M
+goldsmiths
+golf/MDRZGS
+golfer/M
+golliwog/S
+golly/SM
+gonad/SM
+gonadal
+gondola/MS
+gondolier/SM
+gone/ZR
+goner/M
+gong/MDGS
+gonk/S
+gonna
+gonorrhea/M
+gonorrheal
+gonzo
+goo/M
+goober/SM
+good/MYSP
+goodbye/MS
+goodhearted
+goodish
+goodly/TR
+goodness/M
+goodnight
+goods/M
+goodwill/M
+goody/SM
+gooey
+goof/MDGS
+goofball/SM
+goofiness/M
+goofy/RPT
+google/DSMG
+googly/S
+gooier
+gooiest
+gook/MS
+goon/MS
+goop/M
+goose/DSMG
+gooseberry/SM
+goosebumps/M
+goosestep/S
+goosestepped
+goosestepping
+gopher/SM
+gore/MGDS
+gorge's
+gorge/EDSG
+gorgeous/YP
+gorgeousness/M
+gorgon/SM
+gorilla/MS
+gorily
+goriness/M
+gormandize/DRSZG
+gormandizer/M
+gormless
+gorp/MS
+gorse/M
+gory/RTP
+gosh
+goshawk/MS
+gosling/SM
+gospel/MS
+gossamer/M
+gossip/MDRZGS
+gossiper/M
+gossipy
+got
+gotcha/S
+goths
+gotta
+gotten
+gouache/S
+gouge/DRSMZG
+gouger/M
+goulash/MS
+gourd/SM
+gourde/MS
+gourmand/SM
+gourmet/SM
+gout/M
+gouty/TR
+gov
+govern/DGSBL
+governable/U
+governance/M
+governed/U
+governess/MS
+government/MS
+governmental
+governor/SM
+governorship/M
+govt
+gown/MDGS
+gr
+grab/MS
+grabbed
+grabber/MS
+grabbing
+grabby/TR
+grace/EDSMG
+graceful/EPY
+gracefulness/EM
+graceless/PY
+gracelessness/M
+gracious/UY
+graciousness/M
+grackle/MS
+grad/MRZSB
+gradate/XGNDS
+gradation/CM
+grade's
+grade/CADSG
+graded/U
+grader/M
+gradient/MS
+gradual/PY
+gradualism/M
+gradualness/M
+graduate/XMGNDS
+graduation/M
+graffiti
+graffito/M
+graft/SMDRZG
+grafter/M
+graham/S
+grail
+grain/ISMD
+graininess/M
+grainy/PTR
+gram/KMS
+grammar/MS
+grammarian/SM
+grammatical/UY
+gramophone/MS
+grampus/MS
+gran/S
+granary/SM
+grand/SMRYPT
+grandam/MS
+grandaunt/MS
+grandchild/M
+grandchildren/M
+granddad/SM
+granddaddy/SM
+granddaughter/SM
+grandee/MS
+grandeur/M
+grandfather/GMDYS
+grandiloquence/M
+grandiloquent
+grandiose/Y
+grandiosity/M
+grandma/MS
+grandmother/MYS
+grandnephew/MS
+grandness/M
+grandniece/MS
+grandpa/MS
+grandparent/MS
+grandson/MS
+grandstand/SGMD
+granduncle/SM
+grange/SM
+granite/M
+granitic
+granny/SM
+granola/M
+grant/SMDRZG
+grantee/MS
+granter/M
+grantsmanship/M
+granular
+granularity/M
+granulate/GNDS
+granulation/M
+granule/MS
+grape/SM
+grapefruit/MS
+grapeshot/M
+grapevine/SM
+graph/MDG
+graphic/MS
+graphical/Y
+graphite/M
+graphologist/MS
+graphology/M
+graphs
+grapnel/MS
+grapple/MGDS
+grasp/SMDBG
+grass/MDSG
+grasshopper/MS
+grassland/MS
+grassroots
+grassy/TR
+grate/DRSMZGJ
+grateful/UYP
+gratefulness/UM
+grater/M
+gratification/M
+gratify/GNXDS
+gratifying/Y
+gratin/S
+grating/MY
+gratis
+gratitude/IM
+gratuitous/YP
+gratuitousness/M
+gratuity/SM
+gravamen/MS
+grave/DRSMYTGP
+gravedigger/SM
+gravel/SGMDY
+graven
+graveness/M
+graveside/MS
+gravestone/SM
+graveyard/MS
+gravid
+gravimeter/MS
+gravitas
+gravitate/GNDS
+gravitation/M
+gravitational
+gravity/M
+gravy/SM
+gray/MDRTGSP
+graybeard/SM
+grayish
+grayness/M
+graze/DRSMZG
+grazer/M
+grease/DRSMZG
+greasepaint/M
+greasily
+greasiness/M
+greasy/PTR
+great/SMRYPT
+greatcoat/SM
+greathearted
+greatness/M
+grebe/SM
+greed/M
+greedily
+greediness/M
+greedy/PTR
+green/GPSMDRYT
+greenback/MS
+greenbelt/MS
+greenery/M
+greenfield
+greenfly/S
+greengage/MS
+greengrocer/SM
+greenhorn/SM
+greenhouse/SM
+greenish
+greenmail/M
+greenness/M
+greenroom/SM
+greensward/M
+greenwood/M
+greet/ZGJSDR
+greeter/M
+greeting/M
+gregarious/PY
+gregariousness/M
+gremlin/SM
+grenade/SM
+grenadier/MS
+grenadine/M
+grep/S
+grepped
+grepping
+grew/A
+greyhound/SM
+gribble/S
+grid/MS
+griddle/SM
+griddlecake/SM
+gridiron/SM
+gridlock/SMD
+grief/SM
+grievance/MS
+grieve/ZGDRS
+griever/M
+grievous/PY
+grievousness/M
+griffin/SM
+griffon/SM
+grill/SGMDJ
+grille/MS
+grim/DYPG
+grimace/DSMG
+grime/SM
+griminess/M
+grimmer
+grimmest
+grimness/M
+grimy/TRP
+grin/MS
+grind/SZGMRJ
+grinder/M
+grindstone/MS
+gringo/MS
+grinned
+grinning
+grip/MDRSZG
+gripe/SM
+griper/M
+grippe/MZGDR
+gripper/M
+grisliness/M
+grisly/RTP
+grist/MY
+gristle/M
+gristmill/MS
+grit/MS
+grits/M
+gritted
+gritter/SM
+grittiness/M
+gritting
+gritty/RTP
+grizzle/DSG
+grizzly/TRSM
+groan/SGMD
+groat/SM
+grocer/MS
+grocery/SM
+grog/M
+groggily
+grogginess/M
+groggy/PRT
+groin/SM
+grok/S
+grokked
+grokking
+grommet/SM
+groom/SZGMDR
+groomer/M
+grooming/M
+groomsman/M
+groomsmen
+groove/MGDS
+groovy/RT
+grope/DRSMZG
+groper/M
+grosbeak/MS
+grosgrain/M
+gross/PTGMDRSY
+grossness/M
+grotesque/SPMY
+grotesqueness/M
+grotto/M
+grottoes
+grotty/TR
+grouch/GMDS
+grouchily
+grouchiness/M
+grouchy/RTP
+ground/ZGMDRJS
+groundbreaking/MS
+groundcloth
+groundcloths
+grounder/M
+groundhog/MS
+grounding/M
+groundless/Y
+groundnut/MS
+groundsheet/S
+groundskeeper/S
+groundsman
+groundsmen
+groundswell/SM
+groundwater/M
+groundwork/M
+group/JSZGMDR
+grouper/M
+groupie/MS
+grouping/M
+groupware/M
+grouse/MZGDRS
+grouser/M
+grout/SGMD
+grove/SM
+grovel/ZGDRS
+groveler/M
+grovelled
+grovelling
+grow/AHSG
+grower/MS
+growing/I
+growl/SZGMDR
+growler/M
+grown/AI
+grownup/MS
+growth/AM
+growths
+grub/MS
+grubbed
+grubber/MS
+grubbily
+grubbiness/M
+grubbing
+grubby/TRP
+grubstake/M
+grudge/MGDS
+grudging/Y
+grue/S
+gruel/GJM
+grueling/Y
+gruesome/RYTP
+gruesomeness/M
+gruff/TPRY
+gruffness/M
+grumble/DRSMZGJ
+grumbler/M
+grump/SM
+grumpily
+grumpiness/M
+grumpy/PRT
+grunge/MS
+grungy/RT
+grunion/SM
+grunt/SGMD
+gt
+guacamole/M
+guanine/M
+guano/M
+guarani/MS
+guarantee/MDS
+guaranteeing
+guarantor/MS
+guaranty/GDSM
+guard/SZGMDR
+guarded/Y
+guarder/M
+guardhouse/SM
+guardian/SM
+guardianship/M
+guardrail/SM
+guardroom/SM
+guardsman/M
+guardsmen
+guava/SM
+gubernatorial
+guerrilla/SM
+guess/ZGBMDRS
+guesser/M
+guesstimate/DSMG
+guesswork/M
+guest/SGMD
+guestbook/SM
+guesthouse/S
+guestroom/S
+guff/M
+guffaw/MDGS
+guidance/M
+guide/DRSMZG
+guidebook/SM
+guided/U
+guideline/SM
+guidepost/SM
+guider/M
+guild/SZMR
+guilder/M
+guildhall/MS
+guile/M
+guileful
+guileless/YP
+guilelessness/M
+guillemot/S
+guillotine/DSMG
+guilt/M
+guiltily
+guiltiness/M
+guiltless
+guilty/PRT
+guinea/MS
+guise/ESM
+guitar/MS
+guitarist/SM
+gulag/SM
+gulch/MS
+gulden/MS
+gulf/MS
+gull/MDSG
+gullet/MS
+gullibility/M
+gullible
+gully/SM
+gulp/MDRSZG
+gulper/M
+gum/SM
+gumball/S
+gumbo/SM
+gumboil/SM
+gumboot/S
+gumdrop/SM
+gummed
+gumming
+gummy/TR
+gumption/M
+gumshoe/MDS
+gumshoeing
+gun/SM
+gunboat/SM
+gunfight/MRZS
+gunfighter/M
+gunfire/M
+gunge
+gungy
+gunk/M
+gunky
+gunman/M
+gunmen
+gunmetal/M
+gunned
+gunnel/MS
+gunner/MS
+gunnery/M
+gunning
+gunny/M
+gunnysack/MS
+gunpoint/M
+gunpowder/M
+gunrunner/MS
+gunrunning/M
+gunship/MS
+gunshot/MS
+gunslinger/SM
+gunsmith/M
+gunsmiths
+gunwale/MS
+guppy/SM
+gurgle/MGDS
+gurney/MS
+guru/MS
+gush/MDRSZG
+gusher/M
+gushing/Y
+gushy/TR
+gusset/MSDG
+gussy/DSG
+gust/EMDSG
+gustatory
+gustily
+gusto/M
+gusty/RT
+gut/SM
+gutless/P
+gutlessness/M
+gutsy/RT
+gutted
+gutter/SMDG
+guttersnipe/MS
+gutting
+guttural/MS
+gutty/RT
+guv/S
+guvnor/S
+guy/SGMD
+guzzle/DRSZG
+guzzler/M
+gym/SM
+gymkhana/MS
+gymnasium/MS
+gymnast/MS
+gymnastic/S
+gymnastically
+gymnastics/M
+gymnosperm/SM
+gymslip/S
+gynecologic
+gynecological
+gynecologist/SM
+gynecology/M
+gyp/SM
+gypped
+gypper/SM
+gypping
+gypster/SM
+gypsum/M
+gypsy/SM
+gyrate/DSGNX
+gyration/M
+gyrator/SM
+gyrfalcon/MS
+gyro/MS
+gyroscope/MS
+gyroscopic
+gyve/MGDS
+h'm
+h/NRSXZGVJ
+ha/SH
+haberdasher/SM
+haberdashery/SM
+habiliment/SM
+habit's
+habit/ISB
+habitability/M
+habitat/SM
+habitation/MS
+habitual/YP
+habitualness/M
+habituate/GNDS
+habituation/M
+habitue/SM
+hacienda/SM
+hack/MDRZGS
+hacker/M
+hacking/M
+hackish
+hackle/MS
+hackney/SMDG
+hacksaw/SM
+hacktivist/MS
+hackwork/M
+had
+haddock/SM
+hadn't
+hadst
+hafnium/M
+haft/MS
+hag/SM
+haggard/YP
+haggardness/M
+haggis/MS
+haggish
+haggle/MZGDRS
+haggler/M
+hagiographer/SM
+hagiography/SM
+hahnium/M
+haiku/M
+hail/MDGS
+hailstone/MS
+hailstorm/MS
+hair/MDS
+hairball/MS
+hairband/S
+hairbreadth/M
+hairbreadths
+hairbrush/MS
+haircloth/M
+haircut/SM
+hairdo/MS
+hairdresser/SM
+hairdressing/M
+hairdryer/MS
+hairgrip/S
+hairiness/M
+hairless
+hairlike
+hairline/SM
+hairnet/SM
+hairpiece/MS
+hairpin/SM
+hairsbreadth/M
+hairsbreadths
+hairsplitter/SM
+hairsplitting/M
+hairspray/S
+hairspring/MS
+hairstyle/MS
+hairstylist/SM
+hairy/TRP
+haj
+hajj/M
+hajjes
+hajji/SM
+hake/MS
+halal/M
+halberd/SM
+halcyon
+hale/ITGDRS
+half/M
+halfback/SM
+halfhearted/PY
+halfheartedness/M
+halfpence
+halfpenny/SM
+halftime/MS
+halftone/MS
+halfway
+halfwit/SM
+halibut/SM
+halite/M
+halitosis/M
+hall/MS
+hallelujah/M
+hallelujahs
+hallmark/GMDS
+halloo/MSG
+hallow/DSG
+hallowed/U
+hallucinate/GNXDS
+hallucination/M
+hallucinatory
+hallucinogen/SM
+hallucinogenic/SM
+hallway/SM
+halo/MDGS
+halogen/SM
+halon
+halt/MDRZGS
+halter/GMD
+halterneck/S
+halting/Y
+halve/DSG
+halyard/MS
+ham/SM
+hamburg/SZMR
+hamburger/M
+hamlet/MS
+hammed
+hammer/MDRSJZG
+hammerer/M
+hammerhead/SM
+hammerlock/SM
+hammertoe/MS
+hamming
+hammock/SM
+hammy/TR
+hamper/GMDS
+hampered/U
+hamster/MS
+hamstring/GSM
+hamstrung
+hand's
+hand/UDGS
+handbag/SM
+handball/MS
+handbarrow/SM
+handbill/MS
+handbook/MS
+handbrake/S
+handcar/SM
+handcart/MS
+handclasp/MS
+handcraft/SMDG
+handcuff/MDGS
+handed/P
+handful/SM
+handgun/SM
+handheld/MS
+handhold/MS
+handicap/MS
+handicapped
+handicapper/MS
+handicapping
+handicraft/MS
+handily
+handiness/M
+handiwork/M
+handkerchief/MS
+handle/MZGDRS
+handlebar/MS
+handler/M
+handmade
+handmaid/XMNS
+handmaiden/M
+handout/SM
+handover/S
+handpick/GDS
+handrail/MS
+handsaw/SM
+handset/SM
+handshake/JMGS
+handsome/PYTR
+handsomeness/M
+handspring/MS
+handstand/SM
+handwork/M
+handwoven
+handwriting/M
+handwritten
+handy/UTR
+handyman/M
+handymen
+hang/MDRJZGS
+hangar/MS
+hangdog
+hanger/M
+hanging/M
+hangman/M
+hangmen
+hangnail/MS
+hangout/SM
+hangover/MS
+hangup/MS
+hank/MRZS
+hanker/GJD
+hankering/M
+hankie/MS
+hansom/MS
+hap/MY
+haphazard/YP
+haphazardness/M
+hapless/YP
+haplessness/M
+haploid/MS
+happen/SDGJ
+happening/M
+happenstance/SM
+happily/U
+happiness/UM
+happy/URTP
+harangue/MGDS
+harass/LZGDRS
+harasser/M
+harassment/M
+harbinger/SM
+harbor/GMDS
+harbormaster/S
+hard/NRYXTP
+hardback/MS
+hardball/M
+hardboard/M
+hardbound
+hardcore
+hardcover/SM
+harden/ZGDR
+hardened/U
+hardener/M
+hardhat/MS
+hardheaded/PY
+hardheadedness/M
+hardhearted/PY
+hardheartedness/M
+hardihood/M
+hardily
+hardiness/M
+hardliner/MS
+hardness/M
+hardscrabble
+hardship/SM
+hardstand/SM
+hardtack/M
+hardtop/SM
+hardware/M
+hardwired
+hardwood/SM
+hardworking
+hardy/PTR
+hare/MGDS
+harebell/MS
+harebrained
+harelip/SM
+harelipped
+harem/SM
+haricot/S
+hark/DGS
+harlequin/SM
+harlot/SM
+harlotry/M
+harm/MDGS
+harmed/U
+harmful/YP
+harmfulness/M
+harmless/PY
+harmlessness/M
+harmonic/SM
+harmonica/MS
+harmonically
+harmonies
+harmonious/PY
+harmoniousness/M
+harmonium/MS
+harmonization/M
+harmonize/ZGDRS
+harmonizer/M
+harmony/EM
+harness's
+harness/UDSG
+harp/MDGS
+harpist/SM
+harpoon/ZGSMDR
+harpooner/M
+harpsichord/MS
+harpsichordist/SM
+harpy/SM
+harridan/MS
+harrier/M
+harrow/SMDG
+harrumph/GD
+harrumphs
+harry/DRSZG
+harsh/RYTP
+harshness/M
+hart/MS
+harvest/SMDRZG
+harvested/U
+harvester/M
+hash/AMDSG
+hashish/M
+hashtag/SM
+hasn't
+hasp/MS
+hassle/DSMG
+hassock/SM
+hast/DNXG
+haste/SM
+hasten/DG
+hastily
+hastiness/M
+hasty/RTP
+hat/ZGSMDR
+hatband/S
+hatbox/MS
+hatch/MDSG
+hatchback/MS
+hatcheck/SM
+hatched/U
+hatchery/SM
+hatchet/SM
+hatching/M
+hatchway/SM
+hate/MS
+hateful/PY
+hatefulness/M
+hatemonger/MS
+hater/M
+hatpin/S
+hatred/SM
+hatstand/S
+hatted
+hatter/SM
+hatting
+hauberk/SM
+haughtily
+haughtiness/M
+haughty/PRT
+haul/MDRZGS
+haulage/M
+hauler/M
+haulier/S
+haunch/MS
+haunt/SMDRZG
+haunter/M
+haunting/Y
+hauteur/M
+have/MGS
+haven't
+haven/SM
+haversack/SM
+havoc/M
+haw/GSMD
+hawk/MDRZGS
+hawker/M
+hawkish/P
+hawkishness/M
+hawser/SM
+hawthorn/MS
+hay/GSMD
+haycock/SM
+hayloft/SM
+haymaking
+haymow/SM
+hayrick/MS
+hayride/MS
+hayseed/MS
+haystack/SM
+haywire
+hazard/SMDG
+hazardous/Y
+haze/MZGJDRS
+hazel/SM
+hazelnut/MS
+hazer/M
+hazily
+haziness/M
+hazing/M
+hazmat
+hazy/RTP
+hdqrs
+he'd
+he'll
+he/M
+head/MDRZGJS
+headache/MS
+headband/MS
+headbanger/S
+headbanging
+headboard/SM
+headbutt/DSG
+headcase/S
+headcheese
+headcount/S
+headdress/MS
+header/M
+headfirst
+headgear/M
+headhunt/DRSZG
+headhunter/M
+headhunting/M
+headily
+headiness/M
+heading/M
+headlamp/MS
+headland/MS
+headless
+headlight/MS
+headline/MZGDRS
+headliner/M
+headlock/MS
+headlong
+headman/M
+headmaster/SM
+headmen
+headmistress/MS
+headphone/MS
+headpiece/MS
+headpin/SM
+headquarter/SDG
+headquarters/M
+headrest/MS
+headroom/M
+headscarf
+headscarves
+headset/SM
+headship/SM
+headshrinker/SM
+headsman/M
+headsmen
+headstall/SM
+headstand/SM
+headstone/SM
+headstrong
+headteacher/S
+headwaiter/SM
+headwaters/M
+headway/M
+headwind/SM
+headword/SM
+heady/RTP
+heal/DRHZGS
+healed/U
+healer/M
+health/M
+healthcare
+healthful/PY
+healthfulness/M
+healthily/U
+healthiness/UM
+healthy/UTRP
+heap/MDGS
+hear/AHGJS
+heard/AU
+hearer/SM
+hearing/AM
+hearken/SGD
+hearsay/M
+hearse's
+hearse/AS
+heart/SM
+heartache/MS
+heartbeat/MS
+heartbreak/SMG
+heartbroken
+heartburn/M
+hearten/ESGD
+heartfelt
+hearth/M
+hearthrug/S
+hearths
+hearthstone/SM
+heartily
+heartiness/M
+heartland/MS
+heartless/PY
+heartlessness/M
+heartrending/Y
+heartsick/P
+heartsickness/M
+heartstrings/M
+heartthrob/MS
+heartwarming
+heartwood/M
+hearty/RSMPT
+heat's
+heat/ADGS
+heated/U
+heatedly
+heater/SM
+heath/MNRX
+heathen/M
+heathendom/M
+heathenish
+heathenism/M
+heather/M
+heaths
+heating/M
+heatproof
+heatstroke/M
+heatwave/S
+heave/DRSMZG
+heaven/SMY
+heavenly/TR
+heavens/M
+heavenward/S
+heaver/M
+heavily
+heaviness/M
+heavy/RSMTP
+heavyhearted
+heavyset
+heavyweight/MS
+heck/M
+heckle/DRSMZG
+heckler/M
+heckling/M
+hectare/SM
+hectic
+hectically
+hectogram/SM
+hectometer/MS
+hector/SMDG
+hedge/DRSMZG
+hedgehog/MS
+hedgehop/S
+hedgehopped
+hedgehopping
+hedger/M
+hedgerow/SM
+hedonism/M
+hedonist/MS
+hedonistic
+heed/MDGS
+heeded/U
+heedful/Y
+heedless/PY
+heedlessness/M
+heehaw/SMDG
+heel/MDGS
+heelless
+heft/MDGS
+heftily
+heftiness/M
+hefty/PRT
+hegemonic
+hegemony/M
+hegira/SM
+heifer/SM
+height/XSMN
+heighten/DG
+heinous/YP
+heinousness/M
+heir/MS
+heiress/MS
+heirloom/SM
+heist/SMDG
+held
+helical
+helices
+helicopter/SGMD
+heliocentric
+heliotrope/SM
+helipad/S
+heliport/MS
+helium/M
+helix/M
+hell/M
+hellbent
+hellcat/MS
+hellebore/M
+hellfire
+hellhole/MS
+hellion/MS
+hellish/YP
+hellishness/M
+hello/SM
+helluva
+helm/MS
+helmet/SMD
+helmsman/M
+helmsmen
+helot/SM
+help/MDRZGSJ
+helper/M
+helpful/UY
+helpfulness/M
+helping/M
+helpless/PY
+helplessness/M
+helpline/SM
+helpmate/SM
+helve/SM
+hem/SM
+hematite/M
+hematologic
+hematological
+hematologist/MS
+hematology/M
+heme/M
+hemisphere/SM
+hemispheric
+hemispherical
+hemline/SM
+hemlock/SM
+hemmed
+hemmer/SM
+hemming
+hemoglobin/M
+hemophilia/M
+hemophiliac/MS
+hemorrhage/MGDS
+hemorrhagic
+hemorrhoid/MS
+hemostat/MS
+hemp/MN
+hemstitch/MDSG
+hen/M
+hence
+henceforth
+henceforward
+henchman/M
+henchmen
+henna/SMDG
+henpeck/GSD
+hep
+heparin/M
+hepatic
+hepatitis/M
+hepatocyte/S
+hepper
+heppest
+heptagon/MS
+heptagonal
+heptathlon/SM
+herald/SMDG
+heralded/U
+heraldic
+heraldry/M
+herb/MS
+herbaceous
+herbage/M
+herbal/S
+herbalist/MS
+herbicidal
+herbicide/MS
+herbivore/SM
+herbivorous
+herculean
+herd/MDRZGS
+herder/M
+herdsman/M
+herdsmen
+here/M
+hereabout/S
+hereafter/SM
+hereby
+hereditary
+heredity/M
+herein
+hereinafter
+hereof
+hereon
+heresy/SM
+heretic/SM
+heretical
+hereto
+heretofore
+hereunto
+hereupon
+herewith
+heritable/I
+heritage/MS
+hermaphrodite/SM
+hermaphroditic
+hermetic
+hermetical/Y
+hermit/SM
+hermitage/MS
+hernia/SM
+hernial
+herniate/GNDS
+herniation/M
+hero/M
+heroes
+heroic/S
+heroically
+heroics/M
+heroin/SM
+heroine/SM
+heroism/M
+heron/SM
+herpes/M
+herpetologist/SM
+herpetology/M
+herring/MS
+herringbone/M
+herself
+hertz/M
+hesitance/M
+hesitancy/M
+hesitant/Y
+hesitate/DSGNX
+hesitating/UY
+hesitation/M
+hessian
+hetero/SM
+heterodox
+heterodoxy/M
+heterogeneity/M
+heterogeneous/Y
+heterosexual/MYS
+heterosexuality/M
+heuristic/MS
+heuristically
+heuristics/M
+hew/ZGSDR
+hewer/M
+hex/GMDS
+hexadecimal/S
+hexagon/MS
+hexagonal
+hexagram/SM
+hexameter/SM
+hey
+heyday/SM
+hf
+hgt
+hgwy
+hi/SD
+hiatus/MS
+hibachi/MS
+hibernate/GNDS
+hibernation/M
+hibernator/MS
+hibiscus/MS
+hiccough/DG
+hiccoughs
+hiccup/GSMD
+hick/MS
+hickey/SM
+hickory/SM
+hid
+hidden
+hide/MZGJDRS
+hideaway/SM
+hidebound
+hideous/YP
+hideousness/M
+hideout/MS
+hider/M
+hiding/M
+hie/S
+hieing
+hierarchic
+hierarchical/Y
+hierarchy/SM
+hieroglyph/M
+hieroglyphic/MS
+hieroglyphs
+high/MRYZTP
+highball/SM
+highborn
+highboy/MS
+highbrow/SM
+highchair/MS
+highfalutin
+highhanded/PY
+highhandedness/M
+highland/MRZS
+highlander/M
+highlight/SMDRZG
+highlighter/M
+highness/M
+highroad/MS
+highs
+hightail/DSG
+highway/MS
+highwayman/M
+highwaymen
+hijab/SM
+hijack/SJZGMDR
+hijacker/M
+hijacking/M
+hike/MZGDRS
+hiker/M
+hiking/M
+hilarious/PY
+hilariousness/M
+hilarity/M
+hill/MS
+hillbilly/SM
+hilliness/M
+hillock/MS
+hillside/SM
+hilltop/MS
+hilly/PRT
+hilt/MS
+him/S
+himself
+hind/MRZS
+hinder/GD
+hindered/U
+hindmost
+hindquarter/MS
+hindrance/SM
+hindsight/M
+hinge's
+hinge/UDSG
+hint/MDRZGS
+hinter/M
+hinterland/SM
+hip/SPM
+hipbath
+hipbaths
+hipbone/MS
+hiphuggers
+hipness/M
+hipped
+hipper
+hippest
+hippie/SM
+hipping
+hippo/SM
+hippodrome/SM
+hippopotamus/MS
+hippy
+hipster/MS
+hiragana
+hire's
+hire/AGDS
+hireling/MS
+hirsute/P
+hirsuteness/M
+hiss/MDSG
+hist
+histamine/MS
+histogram/MS
+histologist/SM
+histology/M
+historian/MS
+historic
+historical/Y
+historicity/M
+historiographer/MS
+historiography/M
+history/SM
+histrionic/S
+histrionically
+histrionics/M
+hit/SM
+hitch's
+hitch/UDSG
+hitcher/MS
+hitchhike/DRSMZG
+hitchhiker/M
+hither
+hitherto
+hitter/SM
+hitting
+hive/MGDS
+hiya
+hmm
+ho/SMDRYZ
+hoagie/MS
+hoard/SZGMDRJ
+hoarder/M
+hoarding/M
+hoarfrost/M
+hoariness/M
+hoarse/YTRP
+hoarseness/M
+hoary/TRP
+hoax/MDRSZG
+hoaxer/M
+hob/SM
+hobbit/S
+hobble/MZGDRS
+hobbler/M
+hobby/SM
+hobbyhorse/MS
+hobbyist/SM
+hobgoblin/MS
+hobnail/SGMD
+hobnob/S
+hobnobbed
+hobnobbing
+hobo/MS
+hock/MDSG
+hockey/M
+hockshop/MS
+hod/SM
+hodgepodge/SM
+hoe/SM
+hoecake/SM
+hoedown/SM
+hoeing
+hoer/M
+hog/SM
+hogan/SM
+hogback/SM
+hogged
+hogging
+hoggish/Y
+hogshead/SM
+hogtie/DS
+hogtying
+hogwash/M
+hoick/SGD
+hoist/SGMD
+hoke/GDS
+hokey
+hokier
+hokiest
+hokum/M
+hold/MRJSZG
+holdall/S
+holder/M
+holding/M
+holdout/SM
+holdover/SM
+holdup/MS
+hole/MGDS
+holey
+holiday/SMDG
+holidaymaker/S
+holiness/UM
+holism
+holistic
+holistically
+holler/MDGS
+hollow/MDRYPSTG
+hollowness/M
+holly/SM
+hollyhock/MS
+holmium/M
+holocaust/SM
+hologram/MS
+holograph/M
+holographic
+holographs
+holography/M
+hols
+holster/SMDG
+holy/URPT
+homage/MS
+hombre/MS
+homburg/SM
+home/MYZGDRS
+homebody/SM
+homeboy/SM
+homecoming/SM
+homegrown
+homeland/MS
+homeless/MP
+homelessness/M
+homelike
+homeliness/M
+homely/PRT
+homemade
+homemaker/SM
+homemaking/M
+homeopath/M
+homeopathic
+homeopaths
+homeopathy/M
+homeostasis/M
+homeostatic
+homeowner/MS
+homepage/MS
+homer/GMD
+homeroom/MS
+homeschooling/M
+homesick/P
+homesickness/M
+homespun/M
+homestead/SMDRZG
+homesteader/M
+homestretch/MS
+hometown/MS
+homeward/S
+homework/MRZG
+homewrecker/SM
+homey/SMP
+homeyness/M
+homicidal
+homicide/MS
+homier
+homiest
+homiletic
+homily/SM
+hominid/SM
+hominoid/S
+hominy/M
+homo/MS
+homoerotic
+homogeneity/M
+homogeneous/Y
+homogenization/M
+homogenize/DSG
+homograph/M
+homographs
+homologous
+homonym/SM
+homophobia/M
+homophobic
+homophone/MS
+homosexual/SM
+homosexuality/M
+hon/SZTGMDR
+honcho/MS
+hone/MS
+honer/M
+honest/EYT
+honester
+honesty/EM
+honey/SGMD
+honeybee/SM
+honeycomb/MDSG
+honeydew/SM
+honeylocust/M
+honeymoon/ZGMDRS
+honeymooner/M
+honeypot/S
+honeysuckle/SM
+honk/MDRSZG
+honker/M
+honky/SM
+honor/ESGMDB
+honorableness/M
+honorably/E
+honorarily
+honorarium/MS
+honorary
+honoree/SM
+honorer/SM
+honorific/MS
+hooch/M
+hood/MDSG
+hoodie/MS
+hoodlum/SM
+hoodoo/MDSG
+hoodwink/DGS
+hooey/M
+hoof/MDRSZG
+hook's
+hook/UDSG
+hookah/M
+hookahs
+hooker/MS
+hookup/MS
+hookworm/MS
+hooky/M
+hooligan/MS
+hooliganism/M
+hoop/MDSG
+hoopla/M
+hooray
+hoosegow/SM
+hoot/MDRSZG
+hootenanny/SM
+hooter/M
+hoover/DSG
+hooves
+hop/SGMD
+hope/MS
+hopeful/PSMY
+hopefulness/M
+hopeless/YP
+hopelessness/M
+hopped
+hopper/MS
+hopping
+hopscotch/MDSG
+hora/MS
+horde/DSMG
+horehound/SM
+horizon/SM
+horizontal/SMY
+hormonal
+hormone/SM
+horn/MDS
+hornblende/M
+hornet/MS
+hornless
+hornlike
+hornpipe/MS
+horny/TR
+horologic
+horological
+horologist/MS
+horology/M
+horoscope/SM
+horrendous/Y
+horrible/P
+horribleness/M
+horribly
+horrid/Y
+horrific
+horrifically
+horrify/DSG
+horrifying/Y
+horror/MS
+horse's
+horse/UDSG
+horseback/M
+horsebox/S
+horseflesh/M
+horsefly/SM
+horsehair/M
+horsehide/M
+horselaugh/M
+horselaughs
+horseless
+horseman/M
+horsemanship/M
+horsemen
+horseplay/M
+horsepower/M
+horseradish/MS
+horseshit/!
+horseshoe/DSM
+horseshoeing
+horsetail/SM
+horsetrading
+horsewhip/SM
+horsewhipped
+horsewhipping
+horsewoman/M
+horsewomen
+horsey
+horsier
+horsiest
+hortatory
+horticultural
+horticulturalist/S
+horticulture/M
+horticulturist/MS
+hosanna/SM
+hose/MGDS
+hosepipe/S
+hosier/MS
+hosiery/M
+hosp
+hospholipase
+hospice/MS
+hospitable/I
+hospitably/I
+hospital/SM
+hospitality/M
+hospitalization/SM
+hospitalize/DSG
+host/MDSG
+hostage/MS
+hostel/ZGMDRS
+hosteler/M
+hostelry/SM
+hostess/MDSG
+hostile/MYS
+hostilities/M
+hostility/SM
+hostler/MS
+hot/SYP
+hotbed/MS
+hotblooded
+hotbox/MS
+hotcake/SM
+hotel/SM
+hotelier/MS
+hotfoot/MDGS
+hothead/DSM
+hotheaded/YP
+hotheadedness/M
+hothouse/SM
+hotkey/S
+hotlink/S
+hotness/M
+hotplate/SM
+hotpot/S
+hots/M
+hotshot/MS
+hotted
+hotter
+hottest
+hottie/S
+hotting
+hound/SGMD
+hour/MYS
+hourglass/MS
+houri/SM
+house's
+house/ADSG
+houseboat/SM
+housebound
+houseboy/SM
+housebreak/RSZG
+housebreaker/M
+housebreaking/M
+housebroke
+housebroken
+houseclean/DSG
+housecleaning/M
+housecoat/SM
+housefly/SM
+houseful/SM
+household/SMRZ
+householder/M
+househusband/SM
+housekeeper/MS
+housekeeping/M
+houselights/M
+housemaid/SM
+houseman/M
+housemaster/S
+housemate/S
+housemen
+housemistress/S
+housemother/SM
+houseparent/SM
+houseplant/MS
+houseproud
+houseroom
+housetop/SM
+housewares/M
+housewarming/SM
+housewife/MY
+housewives
+housework/M
+housing/MS
+hove
+hovel/SM
+hover/SGD
+hovercraft/M
+how'd
+how're
+how/SM
+howbeit
+howdah/M
+howdahs
+howdy
+however
+howitzer/SM
+howl/MDRSZG
+howler/M
+howsoever
+hoyden/MS
+hoydenish
+hp
+hr/S
+ht
+huarache/SM
+hub/SM
+hubbub/SM
+hubby/SM
+hubcap/SM
+hubris/M
+huckleberry/SM
+huckster/SGMD
+hucksterism/M
+huddle/DSMG
+hue/DSM
+huff/MDSG
+huffily
+huffiness/M
+huffy/PRT
+hug/STMR
+huge/YP
+hugeness/M
+hugged
+hugging
+huh
+hula/MS
+hulk/MSG
+hull/MDRSZG
+hullabaloo/SM
+huller/M
+hum/SM
+human/SMRYTP
+humane/PY
+humaneness/M
+humanism/M
+humanist/SM
+humanistic
+humanitarian/MS
+humanitarianism/M
+humanities/M
+humanity/ISM
+humanization/CM
+humanize/CDSG
+humanizer/SM
+humankind/M
+humanness/M
+humanoid/SM
+humble/DRSZTGJP
+humbleness/M
+humbler/M
+humbly
+humbug/SM
+humbugged
+humbugging
+humdinger/MS
+humdrum/M
+humeral
+humeri
+humerus/M
+humid/Y
+humidification/M
+humidifier/CM
+humidify/CZGDRS
+humidity/M
+humidor/SM
+humiliate/DSGNX
+humiliating/Y
+humiliation/M
+humility/M
+hummed
+hummer/SM
+humming
+hummingbird/SM
+hummock/SM
+hummocky
+hummus/M
+humongous
+humor/SMDG
+humoresque
+humorist/MS
+humorless/YP
+humorlessness/M
+humorous/PY
+humorousness/M
+hump/MDSG
+humpback/MDS
+humph/DG
+humphs
+humus/M
+hunch/MDSG
+hunchback/SMD
+hundred/SMH
+hundredfold
+hundredth/M
+hundredths
+hundredweight/SM
+hung
+hunger/SMDG
+hungover
+hungrily
+hungriness/M
+hungry/PRT
+hunk/MRSZ
+hunker/DG
+hunky/RT
+hunt/MDRSZG
+hunter/M
+hunting/M
+huntress/MS
+huntsman/M
+huntsmen
+hurdle/DRSMZG
+hurdler/M
+hurdling/M
+hurl/MDRSZG
+hurler/M
+hurling/M
+hurrah/GMD
+hurrahs
+hurricane/MS
+hurried/UY
+hurry/DSMG
+hurt/MSG
+hurtful/YP
+hurtfulness/M
+hurtle/DSG
+husband/GMDS
+husbandman/M
+husbandmen
+husbandry/M
+hush/MDSG
+husk/MDRSZG
+husker/M
+huskily
+huskiness/M
+husky/PRSMT
+hussar/SM
+hussy/SM
+hustings/M
+hustle/DRSMZG
+hustler/M
+hut/SM
+hutch/MS
+huzzah/MDG
+huzzahs
+hwy
+hyacinth/M
+hyacinths
+hybrid/SM
+hybridism/M
+hybridization/M
+hybridize/DSG
+hydra/SM
+hydrangea/SM
+hydrant/MS
+hydrate's
+hydrate/CGNDS
+hydration/CM
+hydraulic/S
+hydraulically
+hydraulics/M
+hydro/M
+hydrocarbon/MS
+hydrocephalus/M
+hydrodynamic/S
+hydrodynamics/M
+hydroelectric
+hydroelectrically
+hydroelectricity/M
+hydrofoil/MS
+hydrogen/M
+hydrogenate/CGDS
+hydrogenation/M
+hydrogenous
+hydrologist/MS
+hydrology/M
+hydrolyses
+hydrolysis/M
+hydrolyze/DSG
+hydrometer/SM
+hydrometry/M
+hydrophobia/M
+hydrophobic
+hydrophone/SM
+hydroplane/GDSM
+hydroponic/S
+hydroponically
+hydroponics/M
+hydrosphere/M
+hydrotherapy/M
+hydrous
+hydroxide/SM
+hyena/SM
+hygiene/M
+hygienic/U
+hygienically
+hygienist/MS
+hygrometer/SM
+hying
+hymen/SM
+hymeneal
+hymn/MDSG
+hymnal/MS
+hymnbook/SM
+hype/MGDRS
+hyperactive
+hyperactivity/M
+hyperbola/SM
+hyperbole/M
+hyperbolic
+hypercritical/Y
+hyperglycemia/M
+hyperinflation
+hyperlink/GSMD
+hypermarket/S
+hypermedia/M
+hyperparathyroidism
+hypersensitive/P
+hypersensitiveness/M
+hypersensitivity/SM
+hyperspace/S
+hypertension/M
+hypertensive/SM
+hypertext/M
+hyperthyroid/M
+hyperthyroidism/M
+hypertrophy/DSMG
+hyperventilate/GNDS
+hyperventilation/M
+hyphen/MDSG
+hyphenate/XDSMGN
+hyphenation/M
+hypnoses
+hypnosis/M
+hypnotherapist/S
+hypnotherapy/M
+hypnotic/SM
+hypnotically
+hypnotism/M
+hypnotist/MS
+hypnotize/GDS
+hypo/MS
+hypoallergenic
+hypochondria/M
+hypochondriac/SM
+hypocrisy/SM
+hypocrite/MS
+hypocritical/Y
+hypodermic/MS
+hypoglycemia/M
+hypoglycemic/SM
+hypotenuse/MS
+hypothalami
+hypothalamus/M
+hypothermia/M
+hypotheses
+hypothesis/M
+hypothesize/DSG
+hypothetical/Y
+hypothyroid/M
+hypothyroidism/M
+hyssop/M
+hysterectomy/SM
+hysteresis
+hysteria/M
+hysteric/SM
+hysterical/Y
+hysterics/M
+i/US
+iPad/M
+iPhone/M
+iPod/M
+iTunes/M
+iamb/MS
+iambi
+iambic/SM
+iambus/MS
+ibex/MS
+ibid
+ibidem
+ibis/MS
+ibuprofen/M
+ice's
+ice/CDSG
+iceberg/SM
+iceboat/SM
+icebound
+icebox/MS
+icebreaker/SM
+icecap/SM
+iceman/M
+icemen
+ichthyologist/MS
+ichthyology/M
+icicle/SM
+icily
+iciness/M
+icing/SM
+icky/RT
+icon/MS
+iconic
+iconoclasm/M
+iconoclast/SM
+iconoclastic
+iconography/M
+ictus/M
+icy/TPR
+id/SMY
+idea/MS
+ideal/SMY
+idealism/M
+idealist/SM
+idealistic
+idealistically
+idealization/MS
+idealize/DSG
+idem
+idempotent
+identical/Y
+identifiable/U
+identification/M
+identified/U
+identify/ZGNDRSX
+identikit/S
+identity/SM
+ideogram/SM
+ideograph/M
+ideographs
+ideological/Y
+ideologist/SM
+ideologue/MS
+ideology/SM
+ides/M
+idiocy/SM
+idiom/SM
+idiomatic/U
+idiomatically
+idiopathic
+idiosyncrasy/SM
+idiosyncratic
+idiosyncratically
+idiot/SM
+idiotic
+idiotically
+idle/MZTGDRSP
+idleness/M
+idler/M
+idol/MS
+idolater/SM
+idolatress/MS
+idolatrous
+idolatry/M
+idolization/M
+idolize/GDS
+idyll/SM
+idyllic
+idyllically
+if/SM
+iffiness/M
+iffy/RTP
+igloo/SM
+igneous
+ignitable
+ignite/AGDS
+ignition/MS
+ignoble
+ignobly
+ignominious/Y
+ignominy/SM
+ignoramus/MS
+ignorance/M
+ignorant/Y
+ignore/GDS
+iguana/MS
+ii
+iii
+ilea
+ileitis/M
+ileum/M
+ilia
+ilium/M
+ilk/SM
+ill/SMP
+illegal/MYS
+illegality/SM
+illegibility/M
+illegible
+illegibly
+illegitimacy/M
+illegitimate/Y
+illiberal/Y
+illiberality/M
+illicit/YP
+illicitness/M
+illimitable
+illiteracy/M
+illiterate/MYS
+illness/MS
+illogical/Y
+illogicality/M
+illuminate/GNXDS
+illuminating/Y
+illumination/M
+illumine/DSBG
+illus/V
+illusion/EMS
+illusionist/SM
+illusory
+illustrate/GNVXDS
+illustration/M
+illustrative/Y
+illustrator/SM
+illustrious/PY
+illustriousness/M
+image/DSMG
+imagery/M
+imaginable/U
+imaginably/U
+imaginal
+imaginary
+imagination/MS
+imaginative/UY
+imagine/DSBJG
+imago/M
+imagoes
+imam/MS
+imbalance/DSM
+imbecile/MS
+imbecilic
+imbecility/SM
+imbibe/ZGDRS
+imbiber/M
+imbrication/M
+imbroglio/SM
+imbue/DSG
+imitable/I
+imitate/DSGNVX
+imitation/M
+imitative/PY
+imitativeness/M
+imitator/SM
+immaculate/PY
+immaculateness/M
+immanence/M
+immanency/M
+immanent/Y
+immaterial/YP
+immateriality/M
+immaterialness/M
+immature/Y
+immaturity/M
+immeasurable
+immeasurably
+immediacies/M
+immediacy/SM
+immediate/PY
+immediateness/M
+immemorial/Y
+immense/Y
+immensity/SM
+immerse/XDSGNV
+immersible
+immersion/M
+immigrant/SM
+immigrate/DSGN
+immigration/M
+imminence/M
+imminent/Y
+immobile
+immobility/M
+immobilization/M
+immobilize/ZGDRS
+immoderate/Y
+immodest/Y
+immodesty/M
+immolate/DSGN
+immolation/M
+immoral/Y
+immorality/SM
+immortal/MYS
+immortality/M
+immortalize/DSG
+immovability/M
+immovable
+immovably
+immune
+immunity/M
+immunization/SM
+immunize/GDS
+immunodeficiency/M
+immunodeficient
+immunoglobulin/S
+immunologic
+immunological
+immunologist/MS
+immunology/M
+immure/DSG
+immutability/M
+immutable
+immutably
+imp/SMR
+impact/SMDG
+impair/SDGL
+impaired/U
+impairment/MS
+impala/SM
+impale/DSGL
+impalement/M
+impalpable
+impalpably
+impanel/SDG
+impart/SDG
+impartial/Y
+impartiality/M
+impassably
+impasse/BSMV
+impassibility/M
+impassible
+impassibly
+impassioned
+impassive/YP
+impassiveness/M
+impassivity/M
+impasto/M
+impatience/MS
+impatiens/M
+impatient/Y
+impeach/ZGBLDRS
+impeachable/U
+impeacher/M
+impeachment/SM
+impeccability/M
+impeccable
+impeccably
+impecunious/PY
+impecuniousness/M
+impedance/M
+impede/DSG
+impeded/U
+impediment/SM
+impedimenta/M
+impel/S
+impelled
+impeller/MS
+impelling
+impend/SDG
+impenetrability/M
+impenetrable
+impenetrably
+impenitence/M
+impenitent/Y
+imperative/SMY
+imperceptibility/M
+imperceptible
+imperceptibly
+imperceptive
+imperf
+imperfect/SMYP
+imperfection/MS
+imperfectness/M
+imperial/MYS
+imperialism/M
+imperialist/SM
+imperialistic
+imperialistically
+imperil/GSLD
+imperilment/M
+imperious/PY
+imperiousness/M
+imperishable
+imperishably
+impermanence/M
+impermanent/Y
+impermeability/M
+impermeable
+impermeably
+impermissible
+impersonal/Y
+impersonate/GNXDS
+impersonation/M
+impersonator/SM
+impertinence/MS
+impertinent/Y
+imperturbability/M
+imperturbable
+imperturbably
+impervious/Y
+impetigo/M
+impetuosity/M
+impetuous/YP
+impetuousness/M
+impetus/MS
+impiety/SM
+impinge/LDSG
+impingement/M
+impious/PY
+impiousness/M
+impish/YP
+impishness/M
+implacability/M
+implacable
+implacably
+implant/BSGMD
+implantation/M
+implausibility/SM
+implausible
+implausibly
+implement/GBMDRS
+implementable/U
+implementation/SM
+implemented/U
+implicate/DSG
+implication/M
+implicit/PY
+implicitness/M
+implode/DSG
+implore/DSG
+imploring/Y
+implosion/MS
+implosive
+imply/XDSGN
+impolite/YP
+impoliteness/MS
+impolitic
+imponderable/MS
+import/ZGBSMDR
+importance/M
+important/Y
+importation/MS
+importer/M
+importunate/Y
+importune/GDS
+importunity/M
+impose/ADSG
+imposer/MS
+imposing/U
+imposingly
+imposition/MS
+impossibility/SM
+impossible/S
+impossibly
+impost/SM
+impostor/SM
+imposture/MS
+impotence/M
+impotency/M
+impotent/Y
+impound/DGS
+impoverish/DSLG
+impoverishment/M
+impracticability
+impracticable
+impracticably
+impractical/Y
+impracticality/M
+imprecate/DSXGN
+imprecation/M
+imprecise/PYN
+impreciseness/M
+imprecision/M
+impregnability/M
+impregnable
+impregnably
+impregnate/GNDS
+impregnation/M
+impresario/SM
+impress/MDSGV
+impressed/U
+impressibility/M
+impressible
+impression/BSM
+impressionability/M
+impressionism/M
+impressionist/SM
+impressionistic
+impressive/PY
+impressiveness/M
+imprimatur/SM
+imprint/MDRZGS
+imprinter/M
+imprison/SDLG
+imprisonment/SM
+improbability/SM
+improbable
+improbably
+impromptu/SM
+improper/Y
+impropriety/SM
+improve/GBDSL
+improved/U
+improvement/MS
+improvidence/M
+improvident/Y
+improvisation/SM
+improvisational
+improvise/ZGDRS
+improviser/M
+imprudence/M
+imprudent/Y
+impudence/M
+impudent/Y
+impugn/ZGSDR
+impugner/M
+impulse/MGNVDS
+impulsion/M
+impulsive/PY
+impulsiveness/M
+impunity/M
+impure/RYT
+impurity/SM
+imputation/SM
+impute/BDSG
+in/ASM
+inaccuracy/S
+inaction/M
+inadequacy/S
+inadvertence/M
+inadvertent/Y
+inalienability/M
+inalienably
+inamorata/SM
+inane/RYT
+inanimate/PY
+inanimateness/M
+inanity/SM
+inappropriate/Y
+inarticulate/Y
+inasmuch
+inaudible
+inaugural/SM
+inaugurate/XGNDS
+inauguration/M
+inboard/MS
+inbound
+inbox/MS
+inbreed/S
+inc/TGD
+incalculably
+incandescence/M
+incandescent/Y
+incantation/SM
+incapacitate/GDS
+incarcerate/XDSGN
+incarceration/M
+incarnadine/DSG
+incarnate/AXGNDS
+incarnation/AM
+incendiary/SM
+incense/MGDS
+incentive's
+incentive/ES
+inception/SM
+incessant/Y
+incest/M
+incestuous/PY
+incestuousness/M
+inch/MDSG
+inchoate
+inchworm/SM
+incidence/SM
+incident/SM
+incidental/MYS
+incinerate/DSGN
+incineration/M
+incinerator/MS
+incipience/M
+incipient/Y
+incise/XGNVDS
+incision/M
+incisive/PY
+incisiveness/M
+incisor/MS
+incitement/MS
+inciter/MS
+incl
+inclement
+inclination/EM
+inclinations
+incline's
+incline/EGDS
+include/GDS
+inclusion/MS
+inclusive/YP
+inclusiveness/M
+incognito/MS
+incombustible
+incommode/GD
+incommodious
+incommunicado
+incompatibility/S
+incompetent/MS
+incomplete/Y
+inconceivability/M
+incongruous/PY
+incongruousness/M
+inconsolably
+inconstant/Y
+incontestability/M
+incontestably
+incontinent
+incontrovertibly
+inconvenience/GD
+incorporate/ADSGN
+incorporated/U
+incorporation/AM
+incorporeal
+incorrect/Y
+incorrigibility/M
+incorrigible
+incorrigibly
+incorruptibly
+increasing/Y
+increment/SMD
+incremental/Y
+incrementalism
+incrementalist/SM
+incriminate/GNDS
+incrimination/M
+incriminatory
+incrustation/SM
+incubate/GNDS
+incubation/M
+incubator/SM
+incubus/MS
+inculcate/DSGN
+inculcation/M
+inculpate/DSG
+incumbency/SM
+incumbent/SM
+incunabula
+incunabulum/M
+incur/SB
+incurable/MS
+incurably
+incurious
+incurred
+incurring
+incursion/MS
+ind
+indebted/P
+indebtedness/M
+indeed
+indefatigable
+indefatigably
+indefeasible
+indefeasibly
+indefinably
+indelible
+indelibly
+indemnification/M
+indemnify/GDSXN
+indemnity/SM
+indentation/MS
+indention/M
+indenture/DG
+indescribably
+indestructibly
+indeterminably
+indeterminacy/M
+indeterminate/Y
+index/ZGMDRS
+indexation/SM
+indexer/M
+indicate/XDSGNV
+indication/M
+indicative/SMY
+indicator/MS
+indict/GDSBL
+indictment/SM
+indie/S
+indigence/M
+indigenous
+indigent/SMY
+indignant/Y
+indignation/M
+indigo/M
+indirect/Y
+indiscipline
+indiscreet/Y
+indiscretion/S
+indiscriminate/Y
+indispensability/M
+indispensable/MS
+indispensably
+indissolubility
+indissolubly
+indistinguishably
+indite/GDS
+indium/M
+individual/MYS
+individualism/M
+individualist/MS
+individualistic
+individualistically
+individuality/M
+individualization/M
+individualize/GDS
+individuate/DSGN
+individuation/M
+indivisibly
+indoctrinate/GNDS
+indoctrination/M
+indolence/M
+indolent/Y
+indomitable
+indomitably
+indubitable
+indubitably
+induce/DRSZGL
+inducement/SM
+inducer/M
+induct/DGV
+inductance/M
+inductee/SM
+induction/MS
+inductive/Y
+indulge/DSG
+indulgence/SM
+indulgent/Y
+industrial/Y
+industrialism/M
+industrialist/SM
+industrialization/M
+industrialize/DSG
+industrious/YP
+industriousness/M
+industry/SM
+indwell/SG
+inebriate/MGNDS
+inebriation/M
+inedible
+ineffability/M
+ineffable
+ineffably
+inelastic
+ineligible/MS
+ineligibly
+ineluctable
+ineluctably
+inept/YP
+ineptitude/M
+ineptness/M
+inequality/S
+inert/YP
+inertia/M
+inertial
+inertness/M
+inescapable
+inescapably
+inestimably
+inevitability/M
+inevitable/M
+inevitably
+inexact/Y
+inexhaustibly
+inexorability
+inexorable
+inexorably
+inexpedient
+inexpert/Y
+inexpiable
+inexplicably
+inexpressibly
+inexpressive
+inextricably
+inf/ZT
+infallible
+infamy/SM
+infancy/M
+infant/MS
+infanticide/MS
+infantile
+infantry/SM
+infantryman/M
+infantrymen
+infarct/MS
+infarction/M
+infatuate/DSXGN
+infatuation/M
+infect/AESDG
+infected/U
+infection/ASM
+infectious/PY
+infectiousness/M
+infelicitous
+inference/SM
+inferential
+inferior/MS
+inferiority/M
+infernal/Y
+inferno/MS
+inferred
+inferring
+infest/GDS
+infestation/MS
+infidel/MS
+infidelity/S
+infiltrator/SM
+infinite/MV
+infinitesimal/SMY
+infinitival
+infinitive/MS
+infinitude/M
+infinity/SM
+infirm
+infirmary/SM
+infirmity/SM
+infix
+inflame/DSG
+inflammable
+inflammation/SM
+inflammatory
+inflatable/SM
+inflate/DSGNB
+inflation/EM
+inflationary
+inflect/SDG
+inflection/MS
+inflectional
+inflict/SDGV
+infliction/M
+inflow/SM
+influence/MGDS
+influenced/U
+influential/Y
+influenza/M
+info/M
+infomercial/SM
+inform/Z
+informal/Y
+informant/SM
+information/EM
+informational
+informative/PY
+informativeness/M
+informed/U
+infotainment/M
+infra
+infrared/M
+infrasonic
+infrastructural
+infrastructure/SM
+infrequence/M
+infrequent/Y
+infringement/MS
+infuriate/GDS
+infuriating/Y
+infuser/SM
+ingenious/PY
+ingeniousness/M
+ingenue/SM
+ingenuity/M
+ingenuous/EY
+ingenuousness/M
+ingest/SDG
+ingestion/M
+inglenook/SM
+ingot/SM
+ingrain/G
+ingrate/SM
+ingratiate/GNDS
+ingratiating/Y
+ingratiation/M
+ingredient/MS
+ingress/MS
+inguinal
+inhabit/DG
+inhabitable/U
+inhabitant/SM
+inhabited/U
+inhalant/SM
+inhalation/MS
+inhalator/MS
+inhaler/SM
+inharmonious
+inhere/DSG
+inherent/Y
+inherit/EGSD
+inheritance/EM
+inheritances
+inheritor/SM
+inhibit/GSD
+inhibition/SM
+inhibitor/SM
+inhibitory
+inhuman/Y
+inhumane/Y
+inimical/Y
+inimitably
+iniquitous/Y
+iniquity/SM
+initial/SGMDY
+initialism
+initialization
+initialize/DSG
+initialized/AU
+initiate/XMGNVDS
+initiated/U
+initiation/M
+initiative/SM
+initiator/MS
+initiatory
+inject/SDG
+injection/SM
+injector/SM
+injure/DRSZG
+injured/U
+injurer/M
+injurious
+ink/MD
+inkblot/SM
+inkiness/M
+inkling/SM
+inkstand/SM
+inkwell/MS
+inky/RTP
+inland/M
+inline
+inmate/SM
+inmost
+inn/SGMRJ
+innards/M
+innate/PY
+innateness/M
+innermost
+innersole/SM
+innerspring
+innervate/GNDS
+innervation/M
+inning/M
+innit
+innkeeper/MS
+innocence/M
+innocent/MYS
+innocuous/PY
+innocuousness/M
+innovate/XDSGNV
+innovation/M
+innovator/MS
+innovatory
+innuendo/SM
+innumerably
+innumerate
+inoculate/AGDS
+inoculation/MS
+inoperative
+inordinate/Y
+inorganic
+inquire/ZGDR
+inquirer/M
+inquiring/Y
+inquiry/SM
+inquisition/MS
+inquisitional
+inquisitive/YP
+inquisitiveness/M
+inquisitor/SM
+inquisitorial
+inrush/MS
+insane/T
+insatiability/M
+insatiably
+inscribe/ZGDR
+inscriber/M
+inscription/MS
+inscrutability/M
+inscrutable/P
+inscrutableness/M
+inscrutably
+inseam/SM
+insecticidal
+insecticide/MS
+insectivore/MS
+insectivorous
+insecure/Y
+inseminate/DSGN
+insemination/M
+insensate
+insensible
+insensitive/Y
+inseparable/MS
+insert's
+insert/AGSD
+insertion/AM
+insertions
+insetting
+inshore
+inside/RSMZ
+insider/M
+insidious/YP
+insidiousness/M
+insight/MS
+insightful
+insignia/M
+insinuate/GNVDSX
+insinuation/M
+insinuator/SM
+insipid/PY
+insipidity/M
+insist/SGD
+insistence/M
+insistent/Y
+insisting/Y
+insofar
+insole/SM
+insolence/M
+insolent/Y
+insoluble
+insolubly
+insolvency/S
+insomnia/M
+insomniac/SM
+insomuch
+insouciance/M
+insouciant
+inspect/AGDS
+inspection/SM
+inspector/MS
+inspectorate/MS
+inspiration/MS
+inspirational
+inspired/U
+inspiring/U
+inst
+instability/S
+installation/MS
+installer/UMS
+installment/SM
+instance/GD
+instant/MRYS
+instantaneous/Y
+instantiate/DSG
+instar
+instate/AGDS
+instead
+instigate/DSGN
+instigation/M
+instigator/MS
+instillation/M
+instinct/VMS
+instinctive/Y
+instinctual
+institute/XMZGNDRS
+instituter/M
+institution/M
+institutional/Y
+institutionalization/M
+institutionalize/DSG
+instr
+instruct/SDGV
+instructed/U
+instruction/MS
+instructional
+instructive/Y
+instructor/MS
+instrument/MDSG
+instrumental/MYS
+instrumentalist/SM
+instrumentality/M
+instrumentation/M
+insubordinate
+insufferable
+insufferably
+insular
+insularity/M
+insulate/GNDS
+insulation/M
+insulator/MS
+insulin/M
+insult/SMDG
+insulting/Y
+insuperable
+insuperably
+insurance/SM
+insure/DRSZGB
+insured/SM
+insurer/M
+insurgence/SM
+insurgency/SM
+insurgent/MS
+insurmountably
+insurrection/SM
+insurrectionist/SM
+int
+intact
+intaglio/MS
+integer/MS
+integral/SMY
+integrate/AEVNGSD
+integration/EAM
+integrator
+integrity/M
+integument/SM
+intellect/MS
+intellectual/MYS
+intellectualism/M
+intellectualize/GDS
+intelligence/M
+intelligent/Y
+intelligentsia/M
+intelligibility/M
+intelligible/U
+intelligibly/U
+intended/SM
+intense/YTVR
+intensification/M
+intensifier/M
+intensify/DRSZGN
+intensity/S
+intensive/MYPS
+intensiveness/M
+intent/SMYP
+intention/MS
+intentional/UY
+intentness/M
+inter/ESL
+interact/SGVD
+interaction/SM
+interactive/Y
+interactivity
+interbred
+interbreed/GS
+intercede/GDS
+intercept/GMDS
+interception/MS
+interceptor/SM
+intercession/SM
+intercessor/MS
+intercessory
+interchange/DSMG
+interchangeability
+interchangeable
+interchangeably
+intercity
+intercollegiate
+intercom/SM
+intercommunicate/DSGN
+intercommunication/M
+interconnect/GDS
+interconnection/SM
+intercontinental
+intercourse/M
+intercultural
+interdenominational
+interdepartmental
+interdependence/M
+interdependent/Y
+interdict/GMDS
+interdiction/M
+interdisciplinary
+interest/ESMD
+interested/U
+interesting/Y
+interface/MGDS
+interfaith
+interfere/GDS
+interference/M
+interferon/M
+interfile/GDS
+intergalactic
+intergovernmental
+interim/M
+interior/SM
+interj
+interject/GDS
+interjection/SM
+interlace/GDS
+interlard/DGS
+interleave/DSG
+interleukin/M
+interline/GDSJ
+interlinear
+interlining/M
+interlink/DSG
+interlock/GMDS
+interlocutor/SM
+interlocutory
+interlope/ZGDRS
+interloper/M
+interlude/MGDS
+intermarriage/SM
+intermarry/GDS
+intermediary/SM
+intermediate/MYS
+interment/EM
+interments
+intermezzi
+intermezzo/MS
+interminably
+intermingle/DSG
+intermission/SM
+intermittent/Y
+intermix/GDS
+intern/GDL
+internal/SY
+internalization/M
+internalize/GDS
+international/SMY
+internationalism/M
+internationalist/SM
+internationalization
+internationalize/DSG
+internecine
+internee/SM
+internet
+internist/MS
+internment/M
+internship/MS
+interoffice
+interpenetrate/DSGN
+interpersonal
+interplanetary
+interplay/M
+interpolate/XDSGN
+interpolation/M
+interpose/GDS
+interposition/M
+interpret/AGVDS
+interpretation/AMS
+interpretative
+interpreted/U
+interpreter/MS
+interracial
+interred/E
+interregnum/SM
+interrelate/XDSGN
+interrelation/M
+interrelationship/MS
+interring/E
+interrogate/DSGNVX
+interrogation/M
+interrogative/MYS
+interrogator/SM
+interrogatory/SM
+interrupt/ZGMDRS
+interrupter/M
+interruption/MS
+interscholastic
+intersect/GDS
+intersection/SM
+intersession/SM
+intersex
+intersperse/GNDS
+interspersion/M
+interstate/MS
+interstellar
+interstice/MS
+interstitial
+intertwine/GDS
+interurban
+interval/SM
+intervene/GDS
+intervention/SM
+interventionism/M
+interventionist/SM
+interview/ZGMDRS
+interviewee/MS
+interviewer/M
+intervocalic
+interwar
+interweave/GS
+interwove
+interwoven
+intestacy/M
+intestate
+intestinal
+intestine/MS
+intimacy/SM
+intimate/MYGNDSX
+intimation/M
+intimidate/GNDS
+intimidating/Y
+intimidation/M
+intonation/SM
+intoxicant/SM
+intoxicate/DSGN
+intoxication/M
+intracranial
+intramural
+intramuscular
+intranet/MS
+intransigence/M
+intransigent/MYS
+intrastate
+intrauterine
+intravenous/MSY
+intrepid/Y
+intrepidity/M
+intricacy/SM
+intricate/Y
+intrigue/DRSMZG
+intriguer/M
+intriguing/Y
+intrinsic
+intrinsically
+intro/SM
+introduce/AGDS
+introduction/AM
+introductions
+introductory
+introit/SM
+introspect/GVDS
+introspection/M
+introspective/Y
+introversion/M
+introvert/MDS
+intrude/DRSZG
+intruder/M
+intrusion/SM
+intrusive/YP
+intrusiveness/M
+intuit/SDGV
+intuition/S
+intuitive/PY
+intuitiveness/M
+inundate/XDSGN
+inundation/M
+inure/DSG
+invade/DRSZG
+invader/M
+invalid/GMDYS
+invalidism/M
+invaluable
+invaluably
+invariant
+invasion/MS
+invasive
+invective/M
+inveigh/GD
+inveighs
+inveigle/ZGDRS
+inveigler/M
+invent/ASGVD
+invention/AMS
+inventive/PY
+inventiveness/M
+inventor/MS
+inventory/DSMG
+inverse/SMY
+invert/SMDG
+invest/ASDGL
+investigate/GNVDSX
+investigation/M
+investigator/SM
+investigatory
+investiture/MS
+investment/AEM
+investor/SM
+inveteracy/M
+inveterate
+invidious/YP
+invidiousness/M
+invigilate/GNDS
+invigilator/S
+invigorate/ADSG
+invigorating/Y
+invigoration/M
+invincibility/M
+invincibly
+inviolability/M
+inviolably
+inviolate
+invitation/SM
+invitational/SM
+invite/DSMG
+invited/U
+invitee/SM
+inviting/Y
+invoke/DSG
+involuntariness/M
+involuntary/P
+involution/M
+involve/LDSG
+involvement/SM
+inward/SY
+ioctl
+iodide/SM
+iodine/M
+iodize/DSG
+ion/USM
+ionic
+ionization/UM
+ionize/UDSG
+ionizer/MS
+ionosphere/MS
+ionospheric
+iota/MS
+ipecac/SM
+irascibility/M
+irascible
+irascibly
+irate/YP
+irateness/M
+ire/M
+ireful
+irenic
+irides
+iridescence/M
+iridescent/Y
+iridium/M
+iris/MS
+irk/SGD
+irksome/YP
+irksomeness/M
+iron/MDSG
+ironclad/MS
+ironic
+ironical/Y
+ironing/M
+ironmonger/S
+ironmongery
+ironstone/M
+ironware/M
+ironwood/MS
+ironwork/M
+irony/SM
+irradiate/DSGN
+irradiation/M
+irrational/SMY
+irrationality/M
+irreclaimable
+irreconcilability/M
+irreconcilable
+irreconcilably
+irrecoverable
+irrecoverably
+irredeemable
+irredeemably
+irreducible
+irreducibly
+irrefutable
+irrefutably
+irregardless
+irregular/MYS
+irregularity/SM
+irrelevance/MS
+irrelevancy/MS
+irrelevant/Y
+irreligion
+irreligious
+irremediable
+irremediably
+irremovable
+irreparable
+irreparably
+irreplaceable
+irrepressible
+irrepressibly
+irreproachable
+irreproachably
+irresistible
+irresistibly
+irresolute/PYN
+irresoluteness/M
+irresolution/M
+irrespective
+irresponsibility/M
+irresponsible
+irresponsibly
+irretrievable
+irretrievably
+irreverence/M
+irreverent/Y
+irreversible
+irreversibly
+irrevocable
+irrevocably
+irrigable
+irrigate/DSGN
+irrigation/M
+irritability/M
+irritable
+irritably
+irritant/SM
+irritate/DSXGN
+irritating/Y
+irritation/M
+irrupt/DGVS
+irruption/SM
+ischemia
+ischemic
+isinglass/M
+isl
+island/SZMR
+islander/M
+isle/MS
+islet/SM
+ism/CM
+isms
+isn't
+isobar/MS
+isobaric
+isolate/DSMGN
+isolation/M
+isolationism/M
+isolationist/SM
+isomer/MS
+isomeric
+isomerism/M
+isometric/S
+isometrically
+isometrics/M
+isomorphic
+isosceles
+isotherm/SM
+isotope/SM
+isotopic
+isotropic
+issuance/M
+issue/ADSMG
+issuer/MS
+isthmian
+isthmus/MS
+it'd
+it'll
+it/USM
+ital
+italic/SM
+italicization/M
+italicize/GDS
+italics/M
+itch/MDSG
+itchiness/M
+itchy/RPT
+item/MS
+itemization/M
+itemize/GDS
+iterate/AXGNVDS
+iteration/AM
+iterator/S
+itinerant/SM
+itinerary/SM
+itself
+iv/U
+ivory/SM
+ivy/DSM
+ix
+j/F
+jab/SM
+jabbed
+jabber/SMDRZG
+jabberer/M
+jabbing
+jabot/SM
+jacaranda/MS
+jack/MDGS
+jackal/SM
+jackass/MS
+jackboot/SMD
+jackdaw/MS
+jacket/SMD
+jackhammer/MS
+jackknife/MGDS
+jackknives
+jackpot/MS
+jackrabbit/MS
+jackstraw/MS
+jacquard/M
+jade/MGDS
+jaded/PY
+jadedness/M
+jadeite/M
+jag/SM
+jagged/TPRY
+jaggedness/M
+jaggies
+jaguar/SM
+jail/MDRZGS
+jailbird/SM
+jailbreak/SM
+jailer/M
+jailhouse/S
+jalapeno/MS
+jalopy/SM
+jalousie/MS
+jam/SM
+jamb/MS
+jambalaya/M
+jamboree/MS
+jammed
+jamming
+jammy/RT
+jangle/DRSMZG
+jangler/M
+janitor/SM
+janitorial
+japan/SM
+japanned
+japanning
+jape/MGDS
+jar/SM
+jardiniere/SM
+jarful/MS
+jargon/M
+jarred
+jarring/Y
+jasmine/SM
+jasper/M
+jato/MS
+jaundice/DSMG
+jaunt/SGMD
+jauntily
+jauntiness/M
+jaunty/RPT
+java/M
+javelin/SM
+jaw/SGMD
+jawbone/DSMG
+jawbreaker/MS
+jawline/S
+jay/SM
+jaybird/SM
+jaywalk/DRSZG
+jaywalker/M
+jaywalking/M
+jazz/MDSG
+jazzy/TR
+jct
+jealous/Y
+jealousy/SM
+jean/MS
+jeans/M
+jeep/MS
+jeer/MDSG
+jeering/MY
+jeez
+jejuna
+jejune
+jejunum/M
+jell/DSG
+jello/S
+jelly/GDSM
+jellybean/MS
+jellyfish/MS
+jellylike
+jellyroll/SM
+jemmy/GDS
+jennet/MS
+jenny/SM
+jeopardize/GDS
+jeopardy/M
+jeremiad/MS
+jerk/MDSG
+jerkily
+jerkin/MS
+jerkiness/M
+jerkwater
+jerky/TRMP
+jeroboam/S
+jerrybuilt
+jerrycan/S
+jersey/MS
+jest/MDRSZG
+jester/M
+jesting/Y
+jet/SM
+jetliner/SM
+jetport/MS
+jetsam/M
+jetted
+jetting
+jettison/MDSG
+jetty/SM
+jew
+jewel/SZGMDR
+jeweler/M
+jewelry/SM
+jg
+jib/SGMD
+jibbed
+jibbing
+jibe/MS
+jiff/MS
+jiffy/SM
+jig's
+jig/AS
+jigged/A
+jigger's
+jigger/ASDG
+jigging/A
+jiggle/DSMG
+jiggly
+jigsaw/SMDG
+jihad/SM
+jihadist/SM
+jilt/MDSG
+jimmy/DSMG
+jimsonweed/M
+jingle/DSMG
+jingly
+jingoism/M
+jingoist/SM
+jingoistic
+jink/DSG
+jinn
+jinni/M
+jinrikisha/SM
+jinx/MDSG
+jitney/SM
+jitterbug/MS
+jitterbugged
+jitterbugger/M
+jitterbugging
+jitters/M
+jittery/RT
+jive/MGDS
+job/SM
+jobbed
+jobber/SM
+jobbing
+jobholder/MS
+jobless/P
+joblessness/M
+jobshare/S
+jobsworth
+jobsworths
+jock/MS
+jockey/SGMD
+jockstrap/MS
+jocose/PY
+jocoseness/M
+jocosity/M
+jocular/Y
+jocularity/M
+jocund/Y
+jocundity/M
+jodhpurs/M
+joey/S
+jog/SM
+jogged
+jogger/SM
+jogging/M
+joggle/DSMG
+john/MS
+johnny/SM
+johnnycake/MS
+join's
+join/AFDSG
+joiner/FMS
+joinery/M
+joint's
+joint/EGSD
+jointly/F
+joist/SM
+jojoba
+joke/MZGDRS
+joker/M
+jokey
+jokier
+jokiest
+joking/Y
+jollification/SM
+jollily
+jolliness/M
+jollity/M
+jolly/TGPDRSM
+jolt/MDRSZG
+jolter/M
+jonquil/SM
+josh/MDRSZG
+josher/M
+jostle/MGDS
+jot/SM
+jotted
+jotter/MS
+jotting/MS
+joule/SM
+jounce/MGDS
+jouncy
+journal/MS
+journalese/M
+journalism/M
+journalist/SM
+journalistic
+journey/ZGMDRS
+journeyer/M
+journeyman/M
+journeymen
+journo/S
+joust/SZGMDR
+jouster/M
+jousting/M
+jovial/Y
+joviality/M
+jowl/MS
+jowly/TR
+joy/SGMD
+joyful/YP
+joyfuller
+joyfullest
+joyfulness/M
+joyless/PY
+joylessness/M
+joyous/YP
+joyousness/M
+joyridden
+joyride/RSMZG
+joyrider/M
+joyriding/M
+joyrode
+joystick/SM
+jr
+jubilant/Y
+jubilation/M
+jubilee/SM
+judder/GDS
+judge's
+judge/ADSG
+judgeship/M
+judgment/SM
+judgmental/Y
+judicatory/SM
+judicature/M
+judicial/Y
+judiciary/SM
+judicious/IYP
+judiciousness/IM
+judo/M
+jug/SM
+jugful/MS
+jugged
+juggernaut/SM
+jugging
+juggle/MZGDRS
+juggler/M
+jugglery/M
+jugular/SM
+juice/DRSMZG
+juicer/M
+juicily
+juiciness/M
+juicy/PTR
+jujitsu/M
+jujube/MS
+jukebox/MS
+julep/SM
+julienne
+jumble/MGDS
+jumbo/SM
+jump/MDRSZG
+jumper/M
+jumpily
+jumpiness/M
+jumpsuit/MS
+jumpy/TRP
+jun
+junco/SM
+junction/FISM
+juncture/FMS
+jungle/MS
+junior/MS
+juniper/SM
+junk/MDRSZG
+junker/M
+junket/MDSG
+junketeer/MS
+junkie/MTRS
+junkyard/MS
+junta/SM
+juridic
+juridical/Y
+jurisdiction/SM
+jurisdictional
+jurisprudence/M
+jurist/MS
+juristic
+juror/SM
+jury/ISM
+juryman/M
+jurymen
+jurywoman/M
+jurywomen
+just/RYPT
+justice/IMS
+justifiable/U
+justifiably/U
+justification/M
+justified/U
+justify/XGDSN
+justness/M
+jut/SM
+jute/M
+jutted
+jutting
+juvenile/SM
+juxtapose/DSG
+juxtaposition/SM
+k/IFGS
+kHz
+kW
+kWh
+kabbalah
+kaboom
+kabuki/M
+kaddish/MS
+kaffeeklatch/MS
+kaffeeklatsch/MS
+kahuna/S
+kaiser/MS
+kale/M
+kaleidoscope/MS
+kaleidoscopic
+kaleidoscopically
+kamikaze/MS
+kana
+kangaroo/MS
+kanji
+kaolin/M
+kapok/M
+kappa/SM
+kaput
+karakul/M
+karaoke/MS
+karat/SM
+karate/M
+karma/M
+karmic
+kart/MS
+katakana
+katydid/SM
+kayak/SMDG
+kayaking/M
+kayo/MDSG
+kazoo/SM
+kc
+kebab/SM
+kedgeree
+keel/MDSG
+keelhaul/DGS
+keen/MDRYSTGP
+keenness/M
+keep/MRSZG
+keeper/M
+keeping/M
+keepsake/MS
+keg/SM
+kelp/M
+kelvin/SM
+ken/SM
+kenned
+kennel/SGMD
+kenning
+keno/M
+kepi/MS
+kept
+keratin/M
+keratitis
+kerbside
+kerchief/SM
+kerfuffle/S
+kernel/SM
+kerosene/M
+kestrel/MS
+ketch/MS
+ketchup/M
+kettle/SM
+kettledrum/SM
+key/SGMD
+keybinding/S
+keyboard/ZGSMDR
+keyboarder/M
+keyboardist/SM
+keyhole/MS
+keynote/MZGDRS
+keynoter/M
+keypad/SM
+keypunch/ZGMDRS
+keypuncher/M
+keystone/MS
+keystroke/SM
+keyword/MS
+kg
+khaki/SM
+khan/MS
+kibble/DSMG
+kibbutz/MS
+kibbutzim
+kibitz/ZGDRS
+kibitzer/M
+kibosh/M
+kick/MDRSZG
+kickback/SM
+kickball/M
+kickboxing
+kicker/M
+kickoff/MS
+kickstand/MS
+kicky/RT
+kid/SM
+kidded
+kidder/SM
+kiddie/SM
+kidding
+kiddish
+kiddo/SM
+kidnap/S
+kidnapped
+kidnapper/MS
+kidnapping/MS
+kidney/SM
+kidskin/M
+kielbasa/MS
+kielbasi
+kike/S
+kill/JMDRSZG
+killdeer/SM
+killer/M
+killing/M
+killjoy/SM
+kiln/MDSG
+kilo/MS
+kilobyte/SM
+kilocycle/SM
+kilogram/SM
+kilohertz/M
+kiloliter/MS
+kilometer/MS
+kiloton/SM
+kilowatt/SM
+kilt/MDRS
+kilter/M
+kimono/MS
+kin/M
+kinase
+kind's
+kind/UPRYT
+kinda
+kindergarten/MS
+kindergartner/SM
+kindhearted/PY
+kindheartedness/M
+kindle/AGDS
+kindliness/M
+kindling/M
+kindly/URT
+kindness/UM
+kindnesses
+kindred/M
+kinds
+kine/S
+kinematic/S
+kinematics/M
+kinetic/S
+kinetically
+kinetics/M
+kinfolk/SM
+kinfolks/M
+king/MYS
+kingdom/SM
+kingfisher/SM
+kingly/RT
+kingmaker/S
+kingpin/SM
+kingship/M
+kink/MDSG
+kinkily
+kinkiness/M
+kinky/TPR
+kinsfolk/M
+kinship/M
+kinsman/M
+kinsmen
+kinswoman/M
+kinswomen
+kiosk/SM
+kip/SM
+kipped
+kipper/MDGS
+kipping
+kirsch/MS
+kismet/M
+kiss/MDRSBZG
+kisser/M
+kissoff/SM
+kissogram/S
+kit/SGMD
+kitchen/SM
+kitchenette/MS
+kitchenware/M
+kite/MS
+kith/M
+kitsch/M
+kitschy
+kitted
+kitten/MS
+kittenish
+kitting
+kitty/SM
+kiwi/MS
+kiwifruit/MS
+kl
+klaxon/S
+kleptocracy
+kleptomania/M
+kleptomaniac/SM
+kludge/GDS
+kluge/DS
+klutz/MS
+klutziness/M
+klutzy/TRP
+km
+kn
+knack/SZMR
+knacker/GD
+knapsack/MS
+knave/SM
+knavery/M
+knavish/Y
+knead/SZGDR
+kneader/M
+knee/MDS
+kneecap/SM
+kneecapped
+kneecapping
+kneeing
+kneel/SG
+knell/SGMD
+knelt
+knew
+knicker/S
+knickerbockers/M
+knickers/M
+knickknack/MS
+knife/DSMG
+knight/MDYSG
+knighthood/MS
+knightliness/M
+knish/MS
+knit/MS
+knitted
+knitter/SM
+knitting/M
+knitwear/M
+knives
+knob/MS
+knobbly
+knobby/TR
+knock/SZGMDR
+knockabout
+knockdown/SM
+knocker/M
+knockoff/SM
+knockout/SM
+knockwurst/SM
+knoll/SM
+knot/MS
+knothole/SM
+knotted
+knotting
+knotty/TR
+know/SB
+knowing/UYS
+knowledge/M
+knowledgeable
+knowledgeably
+known
+knuckle/DSMG
+knuckleduster/S
+knucklehead/MS
+knurl/SGMD
+koala/SM
+koan/S
+kohl
+kohlrabi/M
+kohlrabies
+kola/MS
+kook/MS
+kookaburra/SM
+kookiness/M
+kooky/TPR
+kopeck/MS
+korma
+kosher/DSG
+kowtow/GMDS
+kph
+kraal/SM
+kraut/SM!
+krill/M
+krona/M
+krone/RM
+kronor
+kronur
+krypton/M
+kt
+kuchen/SM
+kudos/M
+kudzu/SM
+kumquat/MS
+kvetch/ZGMDRS
+kvetcher/M
+kw
+l/SDXTGJ
+la/M
+lab/SM
+label's
+label/ASDG
+labeled/U
+labia
+labial/SM
+labile
+labium/M
+labor/SMDRZG
+laboratory/SM
+laborer/M
+laborious/PY
+laboriousness/M
+laborsaving
+laburnum/MS
+labyrinth/M
+labyrinthine
+labyrinths
+lac/M
+lace's
+lace/UGDS
+lacerate/DSGNX
+laceration/M
+lacewing/SM
+lacework/M
+lachrymal
+lachrymose
+lack/MDSG
+lackadaisical/Y
+lackey/SM
+lackluster
+laconic
+laconically
+lacquer/GMDS
+lacrosse/M
+lactate/GNDS
+lactation/M
+lacteal
+lactic
+lactose/M
+lacuna/M
+lacunae
+lacy/RT
+lad/SGMDNJ
+ladder/GSMD
+laddie/SM
+laddish/P
+lade/S
+laden/U
+lading/M
+ladle/DSMG
+lady/SM
+ladybird/SM
+ladybug/MS
+ladyfinger/MS
+ladylike/U
+ladylove/MS
+ladyship/MS
+laetrile/M
+lag/SZMR
+lager/M
+laggard/MYS
+lagged
+lagging/M
+lagniappe/SM
+lagoon/SM
+laid/IA
+lain
+lair/MS
+laird/SM
+laity/M
+lake/MS
+lakefront/S
+lakeside
+lam/SM
+lama/MS
+lamasery/SM
+lamb/MDSG
+lambada/MS
+lambaste/GDS
+lambda/SM
+lambency/M
+lambent/Y
+lambkin/SM
+lambskin/SM
+lambswool
+lame/MYZTGDRSP
+lamebrain/MDS
+lameness/M
+lament/BSMDG
+lamentably
+lamentation/MS
+lamina/M
+laminae
+laminar
+laminate/MGNDS
+lamination/M
+lammed
+lamming
+lamp/MS
+lampblack/M
+lamplight/MRZ
+lamplighter/M
+lampoon/SGMD
+lamppost/SM
+lamprey/MS
+lampshade/SM
+lanai/SM
+lance/DRSMZG
+lancer/M
+lancet/SM
+land/MDRSGJ
+landau/SM
+landfall/MS
+landfill/MS
+landholder/SM
+landholding/MS
+landing/M
+landlady/SM
+landless/M
+landline/MS
+landlocked
+landlord/MS
+landlubber/MS
+landmark/MS
+landmass/MS
+landmine/S
+landowner/MS
+landownership
+landowning/SM
+landscape/MZGDRS
+landscaper/M
+landslid
+landslide/MGS
+landslip/S
+landsman/M
+landsmen
+landward/S
+lane/MS
+language/MS
+languid/PY
+languidness/M
+languish/DSG
+languor/SM
+languorous/Y
+lank/RYTP
+lankiness/M
+lankness/M
+lanky/RTP
+lanolin/M
+lantern/MS
+lanthanum/M
+lanyard/MS
+lap/SM
+laparoscopic
+laparoscopy
+laparotomy
+lapboard/SM
+lapdog/SM
+lapel/SM
+lapidary/SM
+lapin/SM
+lapped
+lappet/SM
+lapping
+lapse/AKGMSD
+laptop/SM
+lapwing/MS
+larboard/SM
+larcenist/SM
+larcenous
+larceny/SM
+larch/MS
+lard/MDRSZG
+larder/M
+lardy/RT
+large/RSPMYT
+largehearted
+largeness/M
+largess/M
+largish
+largo/SM
+lariat/SM
+lark/MDSG
+larkspur/SM
+larva/M
+larvae
+larval
+laryngeal
+larynges
+laryngitis/M
+larynx/M
+lasagna/MS
+lascivious/YP
+lasciviousness/M
+lase/ZGDRS
+laser/M
+lash/MDSGJ
+lashing/M
+lass/MS
+lassie/SM
+lassitude/M
+lasso/SMDG
+last/MDYSG
+lasting/Y
+lat/S
+latch's
+latch/UDSG
+latchkey/SM
+late/YTRP
+latecomer/MS
+latency/M
+lateness/M
+latent
+lateral/MDYSG
+latest/M
+latex/M
+lath/MDRSZG
+lathe/M
+lather/GMD
+lathery
+laths
+latices
+latish
+latitude/MS
+latitudinal
+latitudinarian/MS
+latrine/MS
+latte/RSM
+latter/MY
+lattice/MDS
+latticework/SM
+laud/MDSGB
+laudably
+laudanum/M
+laudatory
+laugh/BMDG
+laughably
+laughing/MY
+laughingstock/SM
+laughs
+laughter/M
+launch/AGMDS
+launcher/SM
+launchpad/SM
+launder/DRZGS
+launderer/M
+launderette/SM
+laundress/MS
+laundromat/MS
+laundry/SM
+laundryman/M
+laundrymen
+laundrywoman/M
+laundrywomen
+laureate/MS
+laureateship/M
+laurel/SM
+lav/SGD
+lava/M
+lavage/M
+lavaliere/SM
+lavatorial
+lavatory/SM
+lave/S
+lavender/SM
+lavish/PTGDRSY
+lavishness/M
+law/SM
+lawbreaker/SM
+lawbreaking/M
+lawful/UPY
+lawfulness/UM
+lawgiver/MS
+lawless/PY
+lawlessness/M
+lawmaker/MS
+lawmaking/M
+lawman/M
+lawmen
+lawn/MS
+lawnmower/SM
+lawrencium/M
+lawsuit/MS
+lawyer/SM
+lax/TRYP
+laxative/MS
+laxity/M
+laxness/M
+lay/AICSGM
+layabout/S
+layaway/M
+layer/CSM
+layered
+layering/M
+layette/MS
+layman/M
+laymen
+layoff/SM
+layout/SM
+layover/MS
+laypeople
+layperson/MS
+layup/SM
+laywoman/M
+laywomen
+laze/MGDS
+lazily
+laziness/M
+lazy/DRSTGP
+lazybones/M
+lb/S
+lbw
+lea/SM
+leach/DSG
+lead/MDNRSZG
+leader/M
+leaderless
+leadership/SM
+leading/M
+leaf/MDSG
+leafage/M
+leafless
+leaflet/GMDS
+leafstalk/MS
+leafy/RT
+league/DSMG
+leak/MDSG
+leakage/MS
+leakiness/M
+leaky/PRT
+lean/MDRSTGJP
+leaning/M
+leanness/M
+leap/MDRSZG
+leaper/M
+leapfrog/MS
+leapfrogged
+leapfrogging
+learn/AUGDS
+learnedly
+learner/MS
+learning's
+lease/ADSMG
+leaseback/SM
+leasehold/MRSZ
+leaseholder/M
+leaser/SM
+leash's
+leash/UDSG
+least/M
+leastwise
+leather/MS
+leatherette/M
+leatherneck/MS
+leathery
+leave/DRSMZGJ
+leaven/SGMD
+leavened/U
+leavening/M
+leaver/M
+leavings/M
+lech/MDRSZG
+lecher/M
+lecherous/PY
+lecherousness/M
+lechery/M
+lecithin/M
+lectern/MS
+lecture/MZGDRS
+lecturer/M
+lectureship/SM
+ledge/RSMZ
+ledger/M
+lee/RSMZ
+leech/MDSG
+leek/MS
+leer/MDG
+leeriness/M
+leery/RPT
+leeward/SM
+leeway/M
+left/MRST
+leftism/M
+leftist/SM
+leftmost
+leftover/SM
+leftward/S
+lefty/SM
+leg/SM
+legacy/SM
+legal/SMY
+legalese/M
+legalism/MS
+legalistic
+legalistically
+legality/SM
+legalization/M
+legalize/GDS
+legate/CXMNS
+legatee/MS
+legation's/AC
+legato/SM
+legend/SM
+legendarily
+legendary
+legerdemain/M
+legged
+legginess/M
+legging/MS
+leggy/RPT
+leghorn/MS
+legibility/M
+legible
+legibly
+legion/SM
+legionary/SM
+legionnaire/SM
+legislate/DSGNV
+legislation/M
+legislative/Y
+legislator/MS
+legislature/SM
+legit
+legitimacy/M
+legitimate/DSYG
+legitimatize/GDS
+legitimization/M
+legitimize/DSG
+legless
+legman/M
+legmen
+legroom/SM
+legume/MS
+leguminous
+legwarmer/S
+legwork/M
+lei/SM
+leisure/DMY
+leisureliness/M
+leisurewear/M
+leitmotif/MS
+leitmotiv/MS
+lemma/S
+lemme/JG
+lemming/M
+lemon/SM
+lemonade/SM
+lemongrass
+lemony
+lemur/SM
+lend/RSZG
+lender/M
+length/MNX
+lengthen/GD
+lengthily
+lengthiness/M
+lengths
+lengthwise
+lengthy/PRT
+lenience/M
+leniency/M
+lenient/Y
+lenitive
+lens/MS
+lent
+lentil/MS
+lento
+leonine
+leopard/SM
+leopardess/MS
+leotard/SM
+leper/SM
+leprechaun/MS
+leprosy/M
+leprous
+lepta
+lepton/MS
+lesbian/SM
+lesbianism/M
+lesion/MS
+less/MNRX
+lessee/MS
+lessen/GD
+lesson/MS
+lessor/MS
+let/ISM
+letdown/SM
+lethal/Y
+lethargic
+lethargically
+lethargy/M
+letter/ZGMDRS
+letterbomb/S
+letterbox/S
+lettered/U
+letterer/M
+letterhead/MS
+lettering/M
+letterpress/M
+letting/S
+lettuce/MS
+letup/SM
+leucine
+leucotomy/S
+leukemia/M
+leukemic/SM
+leukocyte/MS
+levee/SM
+level/PSZGMDRY
+leveler/M
+levelheaded/P
+levelheadedness/M
+levelness/M
+lever/SGMD
+leverage's
+leverage/CDSG
+leviathan/MS
+levier/M
+levitate/DSGN
+levitation/M
+levity/M
+levy/DRSMZG
+lewd/RYPT
+lewdness/M
+lexer/S
+lexical
+lexicographer/MS
+lexicographic
+lexicographical
+lexicography/M
+lexicon/SM
+lexis
+lg
+liabilities
+liability/AM
+liable/A
+liaise/GDS
+liaison/MS
+liar/MS
+lib/M
+libation/SM
+libber/MS
+libel/SZGMDR
+libeler/M
+libelous
+liberal/MYPS
+liberalism/M
+liberality/M
+liberalization/SM
+liberalize/GDS
+liberalness/M
+liberate/CDSGN
+liberation/CM
+liberator/MS
+libertarian/SM
+libertine/MS
+liberty/SM
+libidinal
+libidinous
+libido/MS
+librarian/MS
+librarianship
+library/SM
+librettist/MS
+libretto/SM
+lice
+license/MGDS
+licensed/U
+licensee/MS
+licentiate/SM
+licentious/YP
+licentiousness/M
+lichen/MS
+licit/Y
+lick/MDJSG
+licking/M
+licorice/SM
+lid/SM
+lidded
+lidless
+lido/MS
+lie/DSM
+lied/MR
+lief/RT
+liege/SM
+lien/MS
+lieu/M
+lieutenancy/M
+lieutenant/MS
+life/MZR
+lifebelt/S
+lifeblood/M
+lifeboat/MS
+lifebuoy/MS
+lifeforms
+lifeguard/SM
+lifeless/YP
+lifelessness/M
+lifelike
+lifeline/MS
+lifelong
+lifer/M
+lifesaver/SM
+lifesaving/M
+lifespan/S
+lifestyle/SM
+lifetime/MS
+lifework/MS
+lift/MDRSZG
+lifter/M
+liftoff/SM
+ligament/MS
+ligate/GNDS
+ligation/M
+ligature/MGDS
+light's/C
+light/CASTGD
+lighted/U
+lighten/SDRZG
+lightener/M
+lighter/SM
+lightface/MD
+lightheaded
+lighthearted/YP
+lightheartedness/M
+lighthouse/MS
+lighting's
+lightly
+lightness/M
+lightning/MDS
+lightproof
+lightship/MS
+lightweight/SM
+ligneous
+lignin
+lignite/M
+lii
+likability/M
+likable/P
+likableness/M
+like/EMGDST
+likelihood/UM
+likelihoods
+likeliness/UM
+likely/UPRT
+liken/SGD
+likeness/UM
+likenesses
+liker
+likewise
+liking/M
+lilac/SM
+lilliputian
+lilo/S
+lilt/MDSG
+lily/SM
+limb/MS
+limber/UDSG
+limberness/M
+limbless
+limbo/SM
+lime/MGDS
+limeade/SM
+limelight/M
+limerick/SM
+limescale
+limestone/M
+limey/S
+limit's
+limit/CSZGDR
+limitation/CM
+limitations
+limited/U
+limiter's
+limiting/S
+limitless/P
+limitlessness/M
+limn/DSG
+limo/MS
+limousine/MS
+limp/MDRYSPTG
+limpet/MS
+limpid/YP
+limpidity/M
+limpidness/M
+limpness/M
+limy/RT
+linage/M
+linchpin/SM
+linden/MS
+line/MZGDRSJ
+lineage/MS
+lineal/Y
+lineament/SM
+linear/Y
+linearity/M
+linebacker/MS
+lined/U
+linefeed
+lineman/M
+linemen
+linen/SM
+linens/M
+liner/M
+linesman/M
+linesmen
+lineup/MS
+ling/M
+linger/ZGJDRS
+lingerer/M
+lingerie/M
+lingering/Y
+lingo/M
+lingoes
+lingual
+linguine/M
+linguist/SM
+linguistic/S
+linguistically
+linguistics/M
+liniment/SM
+lining/M
+link/MDRSG
+linkage/MS
+linkman
+linkmen
+linkup/MS
+linnet/MS
+lino
+linoleum/M
+linseed/M
+lint's
+lint/CDG
+lintel/MS
+lints
+linty/TR
+lion/MS
+lioness/MS
+lionhearted
+lionization/M
+lionize/GDS
+lip/SM
+lipid/SM
+liposuction/M
+lipped
+lippy
+lipread/GRS
+lipreader/M
+lipreading/M
+lipstick/MDSG
+liq
+liquefaction/M
+liquefy/DSG
+liqueur/SM
+liquid/MS
+liquidate/XGNDS
+liquidation/M
+liquidator/MS
+liquidity/M
+liquidize/ZGDRS
+liquidizer/M
+liquor/MDGS
+lira/M
+lire
+lisle/M
+lisp/MDRSZG
+lisper/M
+lissome
+list/MDNSJXG
+listed/U
+listen/BMDRZG
+listener/M
+listeria
+listing/M
+listless/YP
+listlessness/M
+lit/ZR
+litany/SM
+litchi/MS
+lite
+liter/M
+literacy/M
+literal/SMYP
+literalness/M
+literariness/M
+literary/P
+literate/SMY
+literati/M
+literature/M
+lithe/RPYT
+litheness/M
+lithesome
+lithium/M
+lithograph/MDRZG
+lithographer/M
+lithographic
+lithographically
+lithographs
+lithography/M
+lithosphere/SM
+litigant/SM
+litigate/DSGN
+litigation/M
+litigator/MS
+litigious/P
+litigiousness/M
+litmus/M
+litotes/M
+litter/MDRSZG
+litterateur/MS
+litterbug/MS
+litterer/M
+little/MTRP
+littleness/M
+littoral/SM
+liturgical/Y
+liturgist/SM
+liturgy/SM
+livability/M
+livable/U
+live/ATGDSB
+livelihood/SM
+liveliness/M
+livelong/S
+lively/PRT
+liven/SGD
+liver's
+liver/S
+liveried
+liverish
+liverwort/MS
+liverwurst/M
+livery/CSM
+liveryman/CM
+liverymen/C
+livestock/M
+liveware
+livid/Y
+living/MS
+lix/K
+lizard/MS
+ll
+llama/SM
+llano/SM
+lo
+load's
+load/AUGSD
+loadable
+loader/MS
+loading's
+loaf/MDRSZG
+loafer/M
+loam/M
+loamy/TR
+loan/MDRSZG
+loaner/M
+loansharking/M
+loanword/MS
+loath/JZGDRS
+loathe
+loather/M
+loathing/M
+loathsome/PY
+loathsomeness/M
+loaves
+lob/SMD
+lobar
+lobbed
+lobber/MS
+lobbing
+lobby/GDSM
+lobbyist/MS
+lobe/MS
+lobotomize/DSG
+lobotomy/SM
+lobster/MS
+local/SMY
+locale/MS
+locality/SM
+localization/M
+localize/DSG
+locate/EAGNDS
+location's/A
+location/ESM
+locator/MS
+locavore/SM
+loci
+lock/MDRSBZG
+locker/M
+locket/MS
+lockjaw/M
+lockout/MS
+locksmith/M
+locksmiths
+lockstep/M
+lockup/MS
+loco/S
+locomotion/M
+locomotive/MS
+locoweed/SM
+locum/S
+locus/M
+locust/SM
+locution/MS
+lode/MS
+lodestar/MS
+lodestone/MS
+lodge/DRSJMZG
+lodger/M
+lodging/M
+lodgings/M
+loft/MDSG
+loftily
+loftiness/M
+lofty/PRT
+log/SM
+loganberry/SM
+logarithm/SM
+logarithmic
+logbook/SM
+loge/MS
+logged
+logger/SM
+loggerhead/SM
+loggia/SM
+logging/M
+logic/M
+logical/Y
+logicality/M
+logician/MS
+login/SM
+logistic/S
+logistical/Y
+logistics/M
+logjam/SM
+logo/MS
+logoff/SM
+logon/SM
+logotype/SM
+logout/SM
+logrolling/M
+logy/RT
+loin/MS
+loincloth/M
+loincloths
+loiter/ZGSDR
+loiterer/M
+loitering/M
+lolcat/SM
+loll/DSG
+lollipop/SM
+lollop/GSD
+lolly/S
+lollygag/S
+lollygagged
+lollygagging
+lone/YZR
+loneliness/M
+lonely/PTR
+loner/M
+lonesome/YP
+lonesomeness/M
+long's
+long/KDSTG
+longboat/MS
+longbow/MS
+longer
+longevity/M
+longhair/MS
+longhand/M
+longhorn/MS
+longhouse/S
+longing/MYS
+longish
+longitude/MS
+longitudinal/Y
+longshoreman/M
+longshoremen
+longsighted
+longstanding
+longtime
+longueur/SM
+longways
+loo
+loofah/M
+loofahs
+look/MDRSZG
+lookalike/MS
+looker/M
+lookout/MS
+lookup
+loom/MDSG
+loon/MS
+loonie/M
+loony/RSMT
+loop/MDSG
+loophole/MS
+loopy/RT
+loos/NRX
+loose/UDSTG
+loosely
+loosen/UGSD
+looseness/M
+loot/MDRSZG
+looter/M
+looting/M
+lop/S
+lope/MGDS
+lopped
+lopping
+lopsided/YP
+lopsidedness/M
+loquacious/PY
+loquaciousness/M
+loquacity/M
+lord/MDYSG
+lordliness/M
+lordly/TPR
+lordship/SM
+lore/M
+lorgnette/SM
+loris/MS
+lorn
+lorry/SM
+lose/ZGRSJ
+loser/M
+losing/M
+loss/MS
+lossless
+lost
+lot/SM
+lotion/SM
+lottery/SM
+lotto/M
+lotus/MS
+louche
+loud/RYTP
+loudhailer/SM
+loudmouth/MD
+loudmouths
+loudness/M
+loudspeaker/MS
+lough
+loughs
+lounge/MZGDRS
+lounger/M
+lour/DSG
+louse's
+louse/CDSG
+lousily
+lousiness/M
+lousy/TPR
+lout/MS
+loutish/PY
+louver/MDS
+lovableness/M
+lovably
+love/MYZGDRSB
+lovebird/SM
+lovechild/M
+loved/U
+loveless
+loveliness/M
+lovelorn
+lovely/RSMTP
+lovemaking/M
+lover/M
+lovesick
+lovey/S
+loving/Y
+low/SZTGMDRYP
+lowborn
+lowboy/MS
+lowbrow/SM
+lowdown/M
+lower/GD
+lowercase/M
+lowermost
+lowish
+lowland/SZMR
+lowlander/M
+lowlife/SM
+lowliness/M
+lowly/TPR
+lowness/M
+lox/M
+loyal/ETY
+loyaler
+loyalism/M
+loyalist/SM
+loyalties
+loyalty/EM
+lozenge/SM
+ltd
+luau/MS
+lubber/MYS
+lube/MGDS
+lubricant/SM
+lubricate/DSGN
+lubrication/M
+lubricator/MS
+lubricious/Y
+lubricity/M
+lucid/PY
+lucidity/M
+lucidness/M
+luck/MDSG
+luckily/U
+luckiness/UM
+luckless
+lucky/UPTR
+lucrative/YP
+lucrativeness/M
+lucre/M
+lucubrate/GNDS
+lucubration/M
+ludicrous/YP
+ludicrousness/M
+ludo
+luff/DSG
+lug/SM
+luge/S
+luggage/M
+lugged
+lugger/MS
+lugging
+lughole/S
+lugsail/SM
+lugubrious/YP
+lugubriousness/M
+lukewarm/YP
+lukewarmness/M
+lull/MDSG
+lullaby/SM
+lulu/S
+lumbago/M
+lumbar
+lumber/MDRZGS
+lumberer/M
+lumbering/M
+lumberjack/SM
+lumberman/M
+lumbermen
+lumberyard/SM
+luminary/SM
+luminescence/M
+luminescent
+luminosity/M
+luminous/Y
+lummox/MS
+lump/MDNSG
+lumpectomy/S
+lumpiness/M
+lumpish
+lumpy/TRP
+lunacy/SM
+lunar
+lunatic/SM
+lunch/GMDS
+lunchbox/S
+luncheon/SM
+luncheonette/SM
+lunchroom/MS
+lunchtime/MS
+lung/MDSG
+lunge/SM
+lungfish/MS
+lungful/S
+lunkhead/MS
+lupine/MS
+lupus/M
+lurch/GMDS
+lure/MGDS
+lurgy
+lurid/PY
+luridness/M
+lurk/DRSZG
+luscious/PY
+lusciousness/M
+lush/MRSYPT
+lushness/M
+lust/MDRSG
+luster/M
+lusterless
+lustful/Y
+lustily
+lustiness/M
+lustrous/Y
+lusty/PTR
+lutanist/SM
+lute/MS
+lutenist/SM
+lutetium/M
+luxuriance/M
+luxuriant/Y
+luxuriate/DSGN
+luxuriation/M
+luxurious/PY
+luxuriousness/M
+luxury/SM
+lvi
+lvii
+lxi
+lxii
+lxiv
+lxix
+lxvi
+lxvii
+lyceum/MS
+lychgate/S
+lye/MG
+lying/M
+lymph/M
+lymphatic/SM
+lymphocyte/SM
+lymphoid
+lymphoma/SM
+lynch/JZGDRS
+lyncher/M
+lynching/M
+lynx/MS
+lyre/MS
+lyrebird/MS
+lyric/SM
+lyrical/Y
+lyricism/M
+lyricist/SM
+lysosomal
+lysosomes
+m/KAS
+ma'am
+ma/SMH
+mac/SGMD
+macabre
+macadam/M
+macadamia/SM
+macadamize/GDS
+macaque/MS
+macaroni/MS
+macaroon/MS
+macaw/SM
+mace/MS
+macerate/DSGN
+maceration/M
+mach/M
+machete/SM
+machinate/GNDSX
+machination/M
+machine/DSMGB
+machinery/M
+machinist/MS
+machismo/M
+macho/M
+mackerel/SM
+mackinaw/SM
+mackintosh/MS
+macrame/M
+macro/SM
+macrobiotic/S
+macrobiotics/M
+macrocosm/SM
+macroeconomic/S
+macroeconomics/M
+macrology/S
+macron/MS
+macrophages
+macroscopic
+mad/SMYP
+madam/SM
+madame/M
+madcap/MS
+madden/DGS
+maddening/Y
+madder/MS
+maddest
+madding
+made/AU
+mademoiselle/MS
+madhouse/SM
+madman/M
+madmen
+madness/M
+madras/MS
+madrasa/SM
+madrasah/M
+madrasahs
+madrassa/SM
+madrigal/SM
+madwoman/M
+madwomen
+maelstrom/SM
+maestro/SM
+mafia/SM
+mafiosi
+mafioso/M
+mag/SM
+magazine/SM
+mage/MS
+magenta/M
+maggot/MS
+maggoty
+magi/M
+magic/SM
+magical/Y
+magician/SM
+magicked
+magicking
+magisterial/Y
+magistracy/M
+magistrate/SM
+magma/M
+magnanimity/M
+magnanimous/Y
+magnate/SM
+magnesia/M
+magnesium/M
+magnet/MS
+magnetic
+magnetically
+magnetism/M
+magnetite/M
+magnetizable
+magnetization/CM
+magnetize/CGDS
+magneto/SM
+magnetometer/SM
+magnetosphere
+magnification/M
+magnificence/M
+magnificent/Y
+magnifier/M
+magnify/ZGXDRSN
+magniloquence/M
+magniloquent
+magnitude/SM
+magnolia/MS
+magnum/MS
+magpie/MS
+magus/M
+maharajah/M
+maharajahs
+maharani/SM
+maharishi/SM
+mahatma/SM
+mahogany/SM
+mahout/MS
+maid/MNSX
+maiden/MY
+maidenhair/M
+maidenhead/SM
+maidenhood/M
+maidservant/SM
+mail/JMDRSZG
+mailbag/SM
+mailbomb/GSD
+mailbox/MS
+mailer/M
+mailing/M
+maillot/SM
+mailman/M
+mailmen
+mailshot/S
+maim/DSG
+main/MYS
+mainframe/SM
+mainland/MS
+mainline/MGDS
+mainmast/MS
+mainsail/MS
+mainspring/MS
+mainstay/MS
+mainstream/SMDG
+maintain/ZGBDRS
+maintainability
+maintenance/M
+maintop/SM
+maisonette/MS
+maize/SM
+majestic
+majestically
+majesty/SM
+majolica/M
+major/SGMDY
+majordomo/MS
+majorette/MS
+majoritarian/SM
+majoritarianism
+majority/SM
+make's/A
+make/UAGS
+makeover/MS
+maker/SM
+makeshift/SM
+makeup/MS
+makeweight/S
+making/MS
+makings/M
+malachite/M
+maladjusted
+maladjustment/M
+maladministration
+maladroit/PY
+maladroitness/M
+malady/SM
+malaise/M
+malamute/MS
+malapropism/SM
+malaria/M
+malarial
+malarkey/M
+malathion/M
+malcontent/MS
+male/MPS
+malediction/SM
+malefaction/M
+malefactor/SM
+malefic
+maleficence/M
+maleficent
+maleness/M
+malevolence/M
+malevolent/Y
+malfeasance/M
+malformation/SM
+malformed
+malfunction/MDSG
+malice/M
+malicious/PY
+maliciousness/M
+malign/DSG
+malignancy/SM
+malignant/Y
+malignity/M
+malinger/ZGSDR
+malingerer/M
+mall/MS
+mallard/SM
+malleability/M
+malleable
+mallet/MS
+mallow/MS
+malnourished
+malnutrition/M
+malocclusion/M
+malodorous
+malpractice/SM
+malt/MDSG
+malted/MS
+maltose/M
+maltreat/GLDS
+maltreatment/M
+malty/TR
+malware/M
+mam/S
+mama/MS
+mamba/SM
+mambo/SGMD
+mamma/M
+mammal/MS
+mammalian/MS
+mammary
+mammogram/MS
+mammography/M
+mammon/M
+mammoth/M
+mammoths
+mammy/SM
+man's/F
+man/USY
+manacle/DSMG
+manage/ZGDRSL
+manageability/M
+manageable/U
+management/MS
+manager/M
+manageress/S
+managerial
+manana/MS
+manatee/SM
+mandala/SM
+mandamus/MS
+mandarin/MS
+mandate/DSMG
+mandatory
+mandible/MS
+mandibular
+mandolin/MS
+mandrake/MS
+mandrel/SM
+mandrill/MS
+mane/MDS
+manege/M
+maneuver/MDGSBJ
+maneuverability/M
+manful/Y
+manga/M
+manganese/M
+mange/DRMZ
+manger/M
+mangetout/S
+manginess/M
+mangle/MZGDRS
+mango/M
+mangoes
+mangrove/MS
+mangy/TRP
+manhandle/GDS
+manhole/SM
+manhood/M
+manhunt/SM
+mania/SM
+maniac/MS
+maniacal/Y
+manic/SM
+manically
+manicure/MGDS
+manicurist/MS
+manifest/MDYSG
+manifestation/SM
+manifesto/SM
+manifold/GMDS
+manikin/SM
+manila/M
+manioc/MS
+manipulable
+manipulate/XGNVDS
+manipulation/M
+manipulative/Y
+manipulator/MS
+mankind/M
+manky
+manlike
+manliness/M
+manly/UTR
+manna/M
+manned/U
+mannequin/SM
+manner/MDYS
+mannerism/SM
+mannerly/U
+manning/U
+mannish/YP
+mannishness/M
+manometer/SM
+manor/SM
+manorial
+manpower/M
+manque
+mansard/MS
+manse/SXMN
+manservant/M
+mansion/M
+manslaughter/M
+manta/SM
+mantel/MS
+mantelpiece/SM
+mantelshelf
+mantelshelves
+mantes
+mantilla/SM
+mantis/MS
+mantissa/SM
+mantle's
+mantle/EGDS
+mantra/MS
+manual/MYS
+manufacture/DRSMZG
+manufacturer/M
+manufacturing/M
+manumission/SM
+manumit/S
+manumitted
+manumitting
+manure/MGDS
+manuscript/MS
+many/M
+map's
+map/AS
+maple/SM
+mapmaker/SM
+mapped/A
+mapper/MS
+mapping/S
+mar/S
+marabou/MS
+marabout/SM
+maraca/MS
+maraschino/MS
+marathon/SMRZ
+marathoner/M
+maraud/ZGDRS
+marauder/M
+marble/MGDS
+marbleize/GDS
+marbling/M
+march/ZGMDRS
+marcher/M
+marchioness/MS
+mare/MS
+margarine/M
+margarita/MS
+marge
+margin/MS
+marginal/YS
+marginalia/M
+marginalization/M
+marginalize/GDS
+maria/M
+mariachi/MS
+marigold/MS
+marijuana/M
+marimba/SM
+marina/MS
+marinade/DSMG
+marinara/M
+marinate/DSGN
+marination/M
+marine/MZRS
+mariner/M
+marionette/MS
+marital/Y
+maritime
+marjoram/M
+mark/AMDSG
+markdown/SM
+marked/U
+markedly
+marker/MS
+market/MDRZGBS
+marketability/M
+marketable/U
+marketeer/SM
+marketer/M
+marketing/M
+marketplace/SM
+marking/SM
+markka/M
+markkaa
+marksman/M
+marksmanship/M
+marksmen
+markup/MS
+marl/M
+marlin/MS
+marlinespike/SM
+marmalade/M
+marmoreal
+marmoset/SM
+marmot/MS
+maroon/MDGS
+marque/MS
+marquee/SM
+marquess/MS
+marquetry/M
+marquis/MS
+marquise/M
+marquisette/M
+marred/U
+marriage/ASM
+marriageability/M
+marriageable
+married/SM
+marring
+marrow/MS
+marry/AGDS
+marsh/MS
+marshal/SMDG
+marshland/SM
+marshmallow/SM
+marshy/RT
+marsupial/MS
+mart/MNSX
+marten/M
+martensite
+martial/Y
+martian/S
+martin/MS
+martinet/MS
+martingale/MS
+martini/SM
+martyr/MDGS
+martyrdom/M
+marvel/MDGS
+marvelous/Y
+marzipan/M
+masc
+mascara/GMDS
+mascot/MS
+masculine/SM
+masculinity/M
+maser/SM
+mash/MDRSZG
+masher/M
+mashup/MS
+mask's
+mask/UDSG
+masker/MS
+masochism/M
+masochist/SM
+masochistic
+masochistically
+mason/SM
+masonic
+masonry/M
+masque/MS
+masquerade/DRSMZG
+masquerader/M
+mass/MDSGV
+massacre/MGDS
+massage/DSMG
+masseur/SM
+masseuse/MS
+massif/MS
+massive/PY
+massiveness/M
+mast/MDS
+mastectomy/SM
+master's
+master/ADGS
+masterclass/S
+masterful/Y
+masterly
+mastermind/SGMD
+masterpiece/MS
+masterstroke/SM
+masterwork/MS
+mastery/M
+masthead/MS
+mastic/M
+masticate/GNDS
+mastication/M
+mastiff/SM
+mastitis
+mastodon/SM
+mastoid/SM
+masturbate/GNDS
+masturbation/M
+masturbatory
+mat/SZGMDR
+matador/SM
+match/AMS
+matchbook/SM
+matchbox/MS
+matched/U
+matching
+matchless
+matchlock/SM
+matchmaker/MS
+matchmaking/M
+matchstick/MS
+matchwood/M
+mate/MS
+material/SMY
+materialism/M
+materialist/SM
+materialistic
+materialistically
+materialization/M
+materialize/DSG
+materiel/M
+maternal/Y
+maternity/M
+matey/S
+mathematical/Y
+mathematician/SM
+mathematics/M
+matinee/SM
+mating/M
+matins/M
+matriarch/M
+matriarchal
+matriarchs
+matriarchy/SM
+matrices
+matricidal
+matricide/MS
+matriculate/DSGN
+matriculation/M
+matrimonial
+matrimony/M
+matrix/M
+matron/MYS
+matte/DRSMZG
+matter/MDG
+matting/M
+mattock/SM
+mattress/MS
+maturate/GNDS
+maturation/M
+mature/YTGDRS
+maturity/SM
+matzo/SMH
+matzoh/M
+matzohs
+matzot
+maudlin
+maul/MDRSZG
+mauler/M
+maunder/SDG
+mausoleum/SM
+mauve/M
+maven/SM
+maverick/SM
+maw/SM
+mawkish/PY
+mawkishness/M
+max/GMDS
+maxi/MS
+maxilla/M
+maxillae
+maxillary
+maxim/SM
+maximal/Y
+maximization/M
+maximize/GDS
+maximum/SM
+may/M
+maybe/SM
+mayday/MS
+mayflower/MS
+mayfly/SM
+mayhem/M
+mayn't
+mayo/M
+mayonnaise/M
+mayor/SM
+mayoral
+mayoralty/M
+mayoress/MS
+maypole/SM
+mayst
+maze/MS
+mazurka/MS
+mdse
+me/DSH
+mead/M
+meadow/MS
+meadowlark/MS
+meager/PY
+meagerness/M
+meal/MS
+mealiness/M
+mealtime/SM
+mealy/TPR
+mealybug/SM
+mealymouthed
+mean/MRYJPSTG
+meander/SMDJG
+meanderings/M
+meanie/M
+meaning/M
+meaningful/PY
+meaningfulness/M
+meaningless/YP
+meaninglessness/M
+meanness/M
+meant/U
+meantime/M
+meanwhile/M
+meany/SM
+meas
+measles/M
+measly/RT
+measurable
+measurably
+measure's
+measure/ADSG
+measured/U
+measureless
+measurement/MS
+meat/MS
+meatball/MS
+meathead/MS
+meatiness/M
+meatless
+meatloaf/M
+meatloaves
+meatpacking/M
+meaty/TPR
+mecca/SM
+mechanic/MS
+mechanical/Y
+mechanics/M
+mechanism/SM
+mechanistic
+mechanistically
+mechanization/M
+mechanize/DSG
+medal/SM
+medalist/MS
+medallion/SM
+meddle/ZGDRS
+meddler/M
+meddlesome
+media/SM
+medial/AY
+median/MS
+mediate/DSGN
+mediated/U
+mediation/AM
+mediator/MS
+medic/SM
+medicaid/M
+medical/SMY
+medicament/M
+medicare/M
+medicate/GNXDS
+medication/M
+medicinal/Y
+medicine/MS
+medico/MS
+medieval
+medievalist/MS
+mediocre
+mediocrity/SM
+meditate/DSGNVX
+meditation/M
+meditative/Y
+medium/MS
+medley/MS
+medulla/SM
+medusa
+medusae
+meed/M
+meek/RYPT
+meekness/M
+meerschaum/SM
+meet/MJSG
+meeting/M
+meetinghouse/SM
+meetup/MS
+meg/S
+mega
+megabit/SM
+megabucks/M
+megabyte/MS
+megachurch/MS
+megacycle/SM
+megadeath/M
+megadeaths
+megahertz/M
+megalith/M
+megalithic
+megaliths
+megalomania/M
+megalomaniac/SM
+megalopolis/MS
+megaphone/DSMG
+megapixel/SM
+megastar/S
+megaton/SM
+megawatt/MS
+meh
+meiosis/M
+meiotic
+melamine/M
+melancholia/M
+melancholic/S
+melancholy/M
+melange/MS
+melanin/M
+melanoma/SM
+meld/MDSG
+melee/SM
+meliorate/GNVDS
+melioration/M
+mellifluous/PY
+mellifluousness/M
+mellow/PTGDRYS
+mellowness/M
+melodic
+melodically
+melodious/YP
+melodiousness/M
+melodrama/MS
+melodramatic/S
+melodramatically
+melodramatics/M
+melody/SM
+melon/SM
+melt's
+melt/ADSG
+meltdown/SM
+member's
+member/EAS
+membership/SM
+membrane/SM
+membranous
+meme/MS
+memento/MS
+memo/MS
+memoir/MS
+memorabilia/M
+memorability/M
+memorable/U
+memorably
+memorandum/MS
+memorial/SM
+memorialize/DSG
+memorization/M
+memorize/DSG
+memory/SM
+memsahib/S
+men/M
+menace/MGDS
+menacing/Y
+menage/MS
+menagerie/MS
+mend/MDRSZG
+mendacious/Y
+mendacity/M
+mendelevium/M
+mender/M
+mendicancy/M
+mendicant/SM
+mending/M
+menfolk/MS
+menfolks/M
+menhaden/M
+menial/MYS
+meningeal
+meninges
+meningitis/M
+meninx/M
+menisci
+meniscus/M
+menopausal
+menopause/M
+menorah/M
+menorahs
+mensch/MS
+menservants
+menses/M
+menstrual
+menstruate/GNDS
+menstruation/M
+mensurable
+mensuration/M
+menswear/M
+mental/Y
+mentalist/SM
+mentality/SM
+menthol/M
+mentholated
+mention/GSMD
+mentioned/U
+mentor/MDSG
+menu/MS
+meow/MDSG
+mercantile
+mercantilism/M
+mercenary/SM
+mercer/MS
+mercerize/GDS
+merchandise/MZGDRS
+merchandiser/M
+merchandising/M
+merchant/MBS
+merchantman/M
+merchantmen
+merciful/UY
+merciless/PY
+mercilessness/M
+mercurial/Y
+mercuric
+mercury/M
+mercy/SM
+mere/MYTS
+meretricious/YP
+meretriciousness/M
+merganser/MS
+merge/DRSZG
+merger/M
+meridian/MS
+meringue/MS
+merino/MS
+merit/CSM
+merited/U
+meriting
+meritocracy/SM
+meritocratic
+meritorious/PY
+meritoriousness/M
+mermaid/SM
+merman/M
+mermen
+merrily
+merriment/M
+merriness/M
+merry/TRP
+merrymaker/MS
+merrymaking/M
+mesa/MS
+mescal/MS
+mescalin
+mescaline/M
+mesdames
+mesdemoiselles
+mesh/MDSG
+mesmeric
+mesmerism/M
+mesmerize/ZGDRS
+mesmerizer/M
+mesomorph/M
+mesomorphs
+meson/SM
+mesosphere/SM
+mesquite/SM
+mess/MDSG
+message/MGDS
+messeigneurs
+messenger/SM
+messiah/M
+messiahs
+messianic
+messieurs
+messily
+messiness/M
+messmate/SM
+messy/PTR
+mestizo/MS
+met
+meta
+metabolic
+metabolically
+metabolism/SM
+metabolite/SM
+metabolize/DSG
+metacarpal/SM
+metacarpi
+metacarpus/M
+metadata
+metal/SMD
+metalanguage/MS
+metallic
+metallurgic
+metallurgical
+metallurgist/MS
+metallurgy/M
+metalwork/MRZG
+metalworker/M
+metalworking/M
+metamorphic
+metamorphism/M
+metamorphose/GDS
+metamorphosis/M
+metaphor/MS
+metaphoric
+metaphorical/Y
+metaphysical/Y
+metaphysics/M
+metastases
+metastasis/M
+metastasize/DSG
+metastatic
+metatarsal/MS
+metatarsi
+metatarsus/M
+metatheses
+metathesis/M
+mete/MZGDRS
+metempsychoses
+metempsychosis/M
+meteor/MS
+meteoric
+meteorically
+meteorite/SM
+meteoroid/SM
+meteorologic
+meteorological
+meteorologist/SM
+meteorology/M
+meter/GMD
+methadone/M
+methamphetamine/M
+methane/M
+methanol/M
+methinks
+method/MS
+methodical/YP
+methodicalness/M
+methodological/Y
+methodology/SM
+methotrexate
+methought
+meths
+methyl/M
+meticulous/YP
+meticulousness/M
+metier/MS
+metric/S
+metrical/Y
+metricate/GNDS
+metrication/M
+metricize/GDS
+metro/SM
+metronome/MS
+metropolis/MS
+metropolitan
+mettle/M
+mettlesome
+mew/SGMD
+mewl/DSG
+mews/M
+mezzanine/MS
+mezzo/SM
+mfg
+mfr/S
+mg
+mgr
+mi/MNX
+miasma/MS
+mic/S
+mica/M
+mice
+mick/S
+mickey/MS
+micro/SM
+microaggression/SM
+microbe/MS
+microbial
+microbiological
+microbiologist/MS
+microbiology/M
+microbrewery/SM
+microchip/MS
+microcircuit/SM
+microcode
+microcomputer/MS
+microcosm/MS
+microcosmic
+microdot/SM
+microeconomics/M
+microelectronic/S
+microelectronics/M
+microfiber/MS
+microfiche/M
+microfilm/GMDS
+microfloppies
+microgroove/SM
+microlight/MS
+microloan/MS
+micromanage/GDSL
+micromanagement/M
+micrometeorite/SM
+micrometer/MS
+micron/MS
+microorganism/MS
+microphone/SM
+microprocessor/MS
+microscope/SM
+microscopic
+microscopical/Y
+microscopy/M
+microsecond/MS
+microsurgery/M
+microwave/DSMGB
+microwaveable
+mid
+midair/M
+midday/M
+midden/MS
+middle/MGS
+middlebrow/SM
+middleman/M
+middlemen
+middlemost
+middleweight/MS
+middy/SM
+midfield/RZ
+midge/SM
+midget/MS
+midi/MS
+midland/MS
+midlife/M
+midmost
+midnight/M
+midpoint/MS
+midrib/MS
+midriff/MS
+midsection/MS
+midshipman/M
+midshipmen
+midships
+midsize
+midst/M
+midstream/M
+midsummer/M
+midterm/MS
+midtown/M
+midway/MS
+midweek/MS
+midwife/MGDS
+midwifery/SM
+midwinter/M
+midwives
+midyear/MS
+mien/M
+miff/DSG
+might've
+might/M
+mightily
+mightiness/M
+mightn't
+mighty/TRP
+mignonette/SM
+migraine/MS
+migrant/MS
+migrate/AGDS
+migration/SM
+migratory
+mikado/MS
+mike/MGDS
+mil/SZMR
+milady/SM
+milch
+mild/MRYTP
+mildew/SMDG
+mildness/M
+mile/MS
+mileage/SM
+milepost/MS
+miler/M
+milestone/MS
+milf/MS
+milieu/SM
+militancy/M
+militant/MYS
+militarily
+militarism/M
+militarist/SM
+militaristic
+militarization/CM
+militarize/CDSG
+military/M
+militate/GDS
+militia/SM
+militiaman/M
+militiamen
+milk/MDRSZG
+milker/M
+milkiness/M
+milkmaid/MS
+milkman/M
+milkmen
+milkshake/SM
+milksop/MS
+milkweed/SM
+milky/RTP
+mill/MDRSZGJ
+millage/M
+millennia
+millennial/M
+millennium/MS
+miller/M
+millet/M
+milliard/MS
+millibar/MS
+milligram/MS
+milliliter/MS
+millimeter/MS
+milliner/MS
+millinery/M
+milling/M
+million/HSM
+millionaire/SM
+millionairess/S
+millionth/M
+millionths
+millipede/SM
+millisecond/SM
+millpond/SM
+millrace/SM
+millstone/SM
+millstream/MS
+millwright/SM
+milometer/S
+milquetoast/SM
+milt/MDSG
+mime/MGDS
+mimeograph/GMD
+mimeographs
+mimetic
+mimic/SM
+mimicked
+mimicker/SM
+mimicking
+mimicry/SM
+mimosa/SM
+min
+minaret/MS
+minatory
+mince/DRSMZG
+mincemeat/M
+mincer/M
+mind's
+mind/ADRSZG
+mindbogglingly
+minded/P
+mindful/YP
+mindfulness/M
+mindless/YP
+mindlessness/M
+mindset/MS
+mine/MZGNDRSX
+minefield/SM
+miner/M
+mineral/MS
+mineralogical
+mineralogist/MS
+mineralogy/M
+minestrone/M
+minesweeper/SM
+mingle/DSG
+mingy
+mini/MS
+miniature/MS
+miniaturist/MS
+miniaturization/M
+miniaturize/GDS
+minibar/S
+minibike/SM
+minibus/MS
+minicab/S
+minicam/MS
+minicomputer/SM
+minifloppies
+minim/SM
+minimal/Y
+minimalism/M
+minimalist/MS
+minimization/M
+minimize/DSG
+minimum/MS
+mining/M
+minion/M
+miniseries/M
+miniskirt/MS
+minister/SGMD
+ministerial
+ministrant/MS
+ministration/MS
+ministry/SM
+minivan/MS
+mink/MS
+minnesinger/MS
+minnow/SM
+minor/SMDG
+minority/SM
+minoxidil/M
+minster/MS
+minstrel/SM
+minstrelsy/M
+mint/MDRSZG
+mintage/M
+minter/M
+minty/RT
+minuend/MS
+minuet/SM
+minus/MS
+minuscule/MS
+minute/PDRSMYTG
+minuteman/M
+minutemen
+minuteness/M
+minutia/M
+minutiae
+minx/MS
+miracle/MS
+miraculous/Y
+mirage/SM
+mire/MGDS
+mirror/GSMD
+mirth/M
+mirthful/PY
+mirthfulness/M
+mirthless/Y
+miry/RT
+misaddress/DSG
+misadventure/MS
+misaligned
+misalignment/M
+misalliance/MS
+misanthrope/SM
+misanthropic
+misanthropically
+misanthropist/MS
+misanthropy/M
+misapplication/M
+misapply/DSGNX
+misapprehend/GSD
+misapprehension/MS
+misappropriate/XDSGN
+misappropriation/M
+misbegotten
+misbehave/GDS
+misbehavior/M
+misc
+miscalculate/DSXGN
+miscalculation/M
+miscall/DSG
+miscarriage/MS
+miscarry/GDS
+miscast/SG
+miscegenation/M
+miscellaneous/Y
+miscellany/SM
+mischance/SM
+mischief/M
+mischievous/YP
+mischievousness/M
+miscibility/M
+miscible
+miscommunication/S
+misconceive/GDS
+misconception/SM
+misconduct/MDGS
+misconstruction/MS
+misconstrue/GDS
+miscount/MDSG
+miscreant/SM
+miscue/DSMG
+misdeal/GMS
+misdealt
+misdeed/MS
+misdemeanor/MS
+misdiagnose/GDS
+misdiagnosis/M
+misdid
+misdirect/SDG
+misdirection/M
+misdo/JG
+misdoes
+misdoing/M
+misdone
+miser/SBMY
+miserableness/M
+miserably
+miserliness/M
+misery/SM
+misfeasance/M
+misfeature/S
+misfile/GDS
+misfire/MGDS
+misfit/SM
+misfitted
+misfitting
+misfortune/SM
+misgiving/MS
+misgovern/SDGL
+misgovernment/M
+misguidance/M
+misguide/DSG
+misguided/Y
+mishandle/DSG
+mishap/SM
+mishear/GS
+misheard
+mishit/S
+mishitting
+mishmash/MS
+misidentify/GDS
+misinform/DGS
+misinformation/M
+misinterpret/SGD
+misinterpretation/SM
+misjudge/DSG
+misjudgment/SM
+mislabel/GSD
+mislaid
+mislay/GS
+mislead/GS
+misleading/Y
+misled
+mismanage/LGDS
+mismanagement/M
+mismatch/GMDS
+misname/GDS
+misnomer/MS
+misogamist/MS
+misogamy/M
+misogynist/SM
+misogynistic
+misogynous
+misogyny/M
+misplace/GLDS
+misplacement/M
+misplay/GMDS
+misprint/GMDS
+misprision/M
+mispronounce/DSG
+mispronunciation/SM
+misquotation/MS
+misquote/MGDS
+misread/GJS
+misreading/M
+misreport/MDGS
+misrepresent/GDS
+misrepresentation/MS
+misrule/MGDS
+miss's
+miss/EDSGV
+missal/ESM
+missed/U
+misshape/GDS
+misshapen
+missile/MS
+missilery/M
+mission/AMS
+missionary/SM
+missioner/SM
+missive/MS
+misspeak/GS
+misspell/GDJS
+misspelling/M
+misspend/GS
+misspent
+misspoke
+misspoken
+misstate/GDSL
+misstatement/SM
+misstep/MS
+missus/MS
+mist's
+mist/CDRSZG
+mistakable/U
+mistake/BMGS
+mistaken/Y
+mister's
+mistily
+mistime/GDS
+mistiness/M
+mistletoe/M
+mistook
+mistral/MS
+mistranslated
+mistreat/LDGS
+mistreatment/M
+mistress/MS
+mistrial/MS
+mistrust/MDSG
+mistrustful/Y
+misty/PRT
+mistype/GS
+misunderstand/SGJ
+misunderstanding/M
+misunderstood
+misuse/DSMG
+mite/MZRS
+miter/MDG
+mitigate/DSGN
+mitigated/U
+mitigation/M
+mitochondria
+mitochondrial
+mitochondrion
+mitoses
+mitosis/M
+mitotic
+mitral
+mitt/MNSX
+mitten/M
+mix/ZGMDRSB
+mixed/U
+mixer/M
+mixture/SM
+mizzen/MS
+mizzenmast/SM
+mkay
+mks
+ml
+mm
+mnemonic/MS
+mnemonically
+mo/CKHS
+moan/MDRSZG
+moaner/M
+moat/MDS
+mob's
+mob/CS
+mobbed/C
+mobbing/C
+mobile/MS
+mobility/M
+mobilization/CM
+mobilizations
+mobilize/CDSG
+mobilizer/SM
+mobster/SM
+moccasin/SM
+mocha/SM
+mock/DRSZG
+mocker/M
+mockery/SM
+mocking/Y
+mockingbird/SM
+mod/STM
+modal/SM
+modality/S
+modded
+modding
+mode/MS
+model/ZGSJMDR
+modeler/M
+modeling/M
+modem/SM
+moderate/MYGNPDS
+moderateness/M
+moderation/M
+moderator/SM
+modern/MYPS
+modernism/M
+modernist/SM
+modernistic
+modernity/M
+modernization/M
+modernize/DRSZG
+modernizer/M
+modernness/M
+modest/Y
+modesty/M
+modicum/SM
+modifiable
+modification/M
+modified/U
+modifier/M
+modify/DRSXZGN
+modish/YP
+modishness/M
+modular
+modulate/CGNDS
+modulation/CM
+modulations
+modulator/MS
+module/MS
+modulo
+modulus
+moggy
+mogul/SM
+mohair/M
+moi
+moiety/SM
+moil/MDSG
+moire/SM
+moist/XTPNRY
+moisten/DRZG
+moistener/M
+moistness/M
+moisture/M
+moisturize/ZGDRS
+moisturizer/M
+molar/SM
+molasses/M
+mold/MDRJSZG
+moldboard/SM
+molder/GMD
+moldiness/M
+molding/M
+moldy/TPR
+mole/MS
+molecular
+molecularity/M
+molecule/SM
+molehill/SM
+moleskin/M
+molest/DRZGS
+molestation/M
+molested/U
+molester/M
+moll/MS
+mollification/M
+mollify/DSNG
+molluscan
+mollusk/SM
+molly/SM
+mollycoddle/DSMG
+molt/MDNRSZG
+molter/M
+molybdenum/M
+mom/SM
+moment/MS
+momenta
+momentarily
+momentariness/M
+momentary/P
+momentous/PY
+momentousness/M
+momentum/M
+mommy/SM
+monarch/M
+monarchic
+monarchical
+monarchism/M
+monarchist/MS
+monarchistic
+monarchs
+monarchy/SM
+monastery/SM
+monastic/MS
+monastical/Y
+monasticism/M
+monaural
+monetarily
+monetarism/M
+monetarist/MS
+monetary
+monetize/CGDS
+money/SMD
+moneybag/MS
+moneybox/S
+moneylender/SM
+moneymaker/SM
+moneymaking/M
+monger/MDGS
+mongol/S
+mongolism/M
+mongoloid/MS
+mongoose/MS
+mongrel/SM
+monies
+moniker/SM
+monism/M
+monist/MS
+monition/SM
+monitor/SMDG
+monitory
+monk/MS
+monkey/MDGS
+monkeyshine/SM
+monkish
+monkshood/SM
+mono/M
+monochromatic
+monochrome/MS
+monocle/DSM
+monoclonal
+monocotyledon/SM
+monocotyledonous
+monocular
+monodic
+monodist/SM
+monody/SM
+monogamist/MS
+monogamous/Y
+monogamy/M
+monogram/SM
+monogrammed
+monogramming
+monograph/M
+monographs
+monolingual/MS
+monolith/M
+monolithic
+monoliths
+monologist/SM
+monologue/SM
+monomania/M
+monomaniac/MS
+monomaniacal
+monomer/SM
+mononucleosis/M
+monophonic
+monoplane/SM
+monopolist/SM
+monopolistic
+monopolization/M
+monopolize/DRSZG
+monopolizer/M
+monopoly/SM
+monorail/MS
+monosyllabic
+monosyllable/MS
+monotheism/M
+monotheist/SM
+monotheistic
+monotone/MS
+monotonic
+monotonically
+monotonous/PY
+monotonousness/M
+monotony/M
+monounsaturated
+monoxide/MS
+monseigneur/M
+monsieur/M
+monsignor/SM
+monsoon/SM
+monsoonal
+monster/SM
+monstrance/ASM
+monstrosity/SM
+monstrous/Y
+montage/SM
+month/MY
+monthly/SM
+months
+monument/MS
+monumental/Y
+moo/SGMD
+mooch/ZGMDRS
+moocher/M
+mood/MS
+moodily
+moodiness/M
+moody/TPR
+moon/MDSG
+moonbeam/MS
+moonless
+moonlight/SMDRZG
+moonlighter/M
+moonlighting/M
+moonlit
+moonscape/SM
+moonshine/MZRS
+moonshiner/M
+moonshot/MS
+moonstone/MS
+moonstruck
+moonwalk/MS
+moor/MDJSG
+moorhen/S
+mooring/M
+moorland/MS
+moose/M
+moot/DSG
+mop/SZGMDR
+mope/MS
+moped/SM
+moper/M
+mopey
+mopier
+mopiest
+mopish
+mopped
+moppet/MS
+mopping
+moraine/SM
+moral/SMY
+morale/M
+moralist/MS
+moralistic
+moralistically
+moralities
+morality/UM
+moralization/CM
+moralize/CGDS
+moralizer/MS
+morass/MS
+moratorium/SM
+moray/SM
+morbid/YP
+morbidity/M
+morbidness/M
+mordancy/M
+mordant/SMY
+more/MS
+moreish
+morel/SM
+moreover
+mores/M
+morgue/MS
+moribund
+morn/MJSG
+morning/M
+morocco/M
+moron/SM
+moronic
+moronically
+morose/YP
+moroseness/M
+morph/GD
+morpheme/MS
+morphemic
+morphia/M
+morphine/M
+morphing/M
+morphological
+morphology/M
+morphs
+morrow/MS
+morsel/MS
+mortal/MYS
+mortality/M
+mortar/MDSG
+mortarboard/SM
+mortgage's
+mortgage/AGDS
+mortgagee/MS
+mortgagor/MS
+mortician/MS
+mortification/M
+mortify/NGDS
+mortise/DSMG
+mortuary/SM
+mosaic/MS
+mosey/SGD
+mosh/DSG
+mosque/MS
+mosquito/M
+mosquitoes
+moss/MS
+mossback/SM
+mossy/TR
+most/MY
+mot/SM
+mote's
+mote/KCXSVN
+motel/SM
+motet/SM
+moth/M
+mothball/GMDS
+mother/MDYSG
+motherboard/SM
+motherfucker/MS!
+motherfucking/!
+motherhood/M
+motherland/MS
+motherless
+motherliness/M
+moths
+motif/SM
+motile/S
+motility/M
+motion/KCM
+motioned
+motioning
+motionless/YP
+motionlessness/M
+motivate/CDSG
+motivated/U
+motivation/SM
+motivational
+motivator/SM
+motive/MS
+motiveless
+motley/MS
+motlier
+motliest
+motocross/MS
+motor/SGMD
+motorbike/MGDS
+motorboat/MS
+motorcade/MS
+motorcar/SM
+motorcycle/DSMG
+motorcyclist/MS
+motorist/SM
+motorization/M
+motorize/DSG
+motorman/M
+motormen
+motormouth/M
+motormouths
+motorway/SM
+mottle/GDS
+motto/M
+mottoes
+moue/MS
+mound/SGMD
+mount/EASGMD
+mountable
+mountain/SM
+mountaineer/SMDG
+mountaineering/M
+mountainous
+mountainside/SM
+mountaintop/SM
+mountebank/MS
+mounted/U
+mounter/MS
+mounting/SM
+mourn/SZGDR
+mourned/U
+mourner/M
+mournful/YP
+mournfulness/M
+mourning/M
+mouse/DRSMZG
+mouser/M
+mousetrap/SM
+mousetrapped
+mousetrapping
+mousiness/M
+moussaka/S
+mousse/MGDS
+mousy/PTR
+mouth/GMD
+mouthfeel
+mouthful/MS
+mouthiness/M
+mouthpiece/MS
+mouths
+mouthwash/MS
+mouthwatering
+mouthy/PTR
+mouton/M
+movable/SM
+move/AMZGDRSB
+moved/U
+movement/SM
+mover/AM
+movie/SM
+moviegoer/SM
+moving/Y
+mow/SZGMDR
+mower/M
+moxie/M
+mozzarella/M
+mp
+mpg
+mph
+mt
+mtg
+mtge
+mu/SM
+much/M
+mucilage/M
+mucilaginous
+muck/MDSG
+muckrake/DRSZG
+muckraker/M
+mucky/TR
+mucous
+mucus/M
+mud/M
+muddily
+muddiness/M
+muddle/MGDS
+muddleheaded
+muddy/PTGDRS
+mudflap/S
+mudflat/MS
+mudguard/SM
+mudpack/S
+mudroom/MS
+mudslide/MS
+mudslinger/SM
+mudslinging/M
+muenster/M
+muesli
+muezzin/MS
+muff/MDSG
+muffin/MS
+muffle/ZGDRS
+muffler/M
+mufti/SM
+mug/SM
+mugful/MS
+mugged
+mugger/MS
+mugginess/M
+mugging/MS
+muggins
+muggle/MS
+muggy/PTR
+mugshot/MS
+mugwump/MS
+mujaheddin
+mukluk/MS
+mulatto/M
+mulattoes
+mulberry/SM
+mulch/GMDS
+mulct/SGMD
+mule/MS
+muleskinner/MS
+muleteer/MS
+mulish/PY
+mulishness/M
+mull/DSG
+mullah/M
+mullahs
+mullein/M
+mullet/MS
+mulligan/SM
+mulligatawny/M
+mullion/SMD
+multi
+multicolored
+multicultural
+multiculturalism/M
+multidimensional
+multidisciplinary
+multifaceted
+multifamily
+multifarious/PY
+multifariousness/M
+multiform
+multigrain
+multilateral/Y
+multilayered
+multilevel
+multilingual
+multilingualism/M
+multimedia/M
+multimillionaire/SM
+multinational/SM
+multiparty
+multiplayer/M
+multiple/MS
+multiplex/ZGMDRS
+multiplexer/M
+multiplicand/MS
+multiplication/M
+multiplicative
+multiplicity/SM
+multiplier/M
+multiply/NZGDRSX
+multiprocessing
+multiprocessor/SM
+multipurpose
+multiracial
+multistage
+multistory
+multitask/GS
+multitasking/M
+multitude/SM
+multitudinous
+multivariate
+multiverse/SM
+multivitamin/MS
+multiyear
+mum
+mumble/MZGDRS
+mumbler/M
+mumbletypeg/M
+mummer/MS
+mummery/M
+mummification/M
+mummify/GNDS
+mummy/SM
+mumps/M
+mun
+munch/GDS
+munchies/M
+munchkin/SM
+mundane/SY
+mung/DSG
+municipal/SMY
+municipality/SM
+munificence/M
+munificent/Y
+munition/MDGS
+mural/SM
+muralist/SM
+murder/ZGMDRS
+murderer/M
+murderess/MS
+murderous/Y
+murk/MS
+murkily
+murkiness/M
+murky/PTR
+murmur/ZGJMDRS
+murmurer/M
+murmuring/M
+murmurous
+murrain/M
+muscat/MS
+muscatel/SM
+muscle/MGDS
+musclebound
+muscleman
+musclemen
+muscly
+muscular/Y
+muscularity/M
+musculature/M
+muse/MGDSJ
+musette/MS
+museum/MS
+mush/MDRSZG
+mushiness/M
+mushroom/GSMD
+mushy/PTR
+music/SM
+musical/MYS
+musicale/MS
+musicality/M
+musician/SMY
+musicianship/M
+musicological
+musicologist/MS
+musicology/M
+musing/MY
+musk/M
+muskeg/MS
+muskellunge/MS
+musket/MS
+musketeer/MS
+musketry/M
+muskie/M
+muskiness/M
+muskmelon/SM
+muskox/MN
+muskrat/MS
+musky/PTRS
+muslin/M
+muss/MDSG
+mussel/MS
+mussy/TR
+must've
+must/MRSZ
+mustache/MDS
+mustachio/SMD
+mustang/MS
+mustard/M
+muster/GMD
+mustily
+mustiness/M
+mustn't
+musty/PTR
+mutability/M
+mutably
+mutagen/MS
+mutant/MS
+mutate/XGNVDS
+mutation/M
+mutational
+mute/MYTGDRSPB
+muteness/M
+mutilate/DSGNX
+mutilation/M
+mutilator/SM
+mutineer/SM
+mutinous/Y
+mutiny/GDSM
+mutt/MS
+mutter/ZGJMDRS
+mutterer/M
+muttering/M
+mutton/M
+muttonchops/M
+muttony
+mutual/Y
+mutuality/M
+muumuu/MS
+muzak
+muzzily
+muzzle/DSMG
+muzzy/P
+my
+mycologist/SM
+mycology/M
+myelitis/M
+myna/MS
+myocardial
+myocardium
+myopia/M
+myopic
+myopically
+myriad/SM
+myrmidon/MS
+myrrh/M
+myrtle/SM
+mys
+myself
+mysterious/PY
+mysteriousness/M
+mystery/SM
+mystic/SM
+mystical/Y
+mysticism/M
+mystification/CM
+mystify/CDSGN
+mystique/M
+myth/M
+mythic
+mythical
+mythological
+mythologist/SM
+mythologize/DSG
+mythology/SM
+myths
+myxomatosis
+n/IKTH
+naan/S
+nab/S
+nabbed
+nabbing
+nabob/SM
+nacelle/SM
+nacho/SM
+nacre/M
+nacreous
+nadir/SM
+nae
+naff/RT
+nag/SM
+nagged
+nagger/MS
+nagging
+nagware
+nah
+naiad/SM
+naif/MS
+nail/MDSG
+nailbrush/MS
+naive/RYT
+naivete/M
+naivety/M
+naked/PY
+nakedness/M
+name's
+name/AGDS
+nameable/U
+named/U
+namedrop
+namedropping/M
+nameless/Y
+namely
+nameplate/MS
+namesake/SM
+nanny/SM
+nanobot/S
+nanosecond/SM
+nanotechnology/SM
+nap/SM
+napalm/MDSG
+nape/MS
+naphtha/M
+naphthalene/M
+napkin/MS
+napless
+napoleon/SM
+napped
+napper/MS
+napping
+nappy/TRSM
+narc/MS
+narcissism/M
+narcissist/MS
+narcissistic
+narcissus/M
+narcolepsy/M
+narcoleptic
+narcoses
+narcosis/M
+narcotic/SM
+narcotization/M
+narcotize/GDS
+nark
+narky
+narrate/GNVDSX
+narration/M
+narrative/SM
+narrator/SM
+narrow/PTGMDRYS
+narrowness/M
+narwhal/MS
+nary
+nasal/SMY
+nasality/M
+nasalization/M
+nasalize/DSG
+nascence/AM
+nascent/A
+nastily
+nastiness/M
+nasturtium/SM
+nasty/PTR
+natal
+natch
+nation/MS
+national/MYS
+nationalism/M
+nationalist/SM
+nationalistic
+nationalistically
+nationality/SM
+nationalization/MS
+nationalize/CDSG
+nationhood/M
+nationwide
+native/MS
+nativity/SM
+natl
+natter/GMDS
+nattily
+nattiness/M
+natty/PTR
+natural's
+natural/UPY
+naturalism/M
+naturalist/SM
+naturalistic
+naturalization/M
+naturalize/DSG
+naturalness/UM
+naturals
+nature's
+nature/CS
+naturism
+naturist/S
+naught/MS
+naughtily
+naughtiness/M
+naughty/PTR
+nausea/M
+nauseate/GDS
+nauseating/Y
+nauseous/PY
+nauseousness/M
+nautical/Y
+nautilus/MS
+naval
+nave/MS
+navel/SM
+navigability/M
+navigable
+navigate/DSGN
+navigation/M
+navigational
+navigator/MS
+navvy/S
+navy/SM
+nay/SM
+naysayer/MS
+ne'er
+neanderthal/MS
+neap/MS
+near/DRYSPTG
+nearby
+nearness/M
+nearshore
+nearside
+nearsighted/YP
+nearsightedness/M
+neat/NRYPXT
+neaten/GD
+neath
+neatness/M
+nebula/M
+nebulae
+nebular
+nebulous/PY
+nebulousness/M
+necessarily/U
+necessary/SM
+necessitate/DSG
+necessitous
+necessity/SM
+neck/MDSG
+neckband/S
+neckerchief/MS
+necking/M
+necklace/MGDSJ
+neckline/MS
+necktie/MS
+necrology/M
+necromancer/SM
+necromancy/M
+necrophilia
+necrophiliac/S
+necropolis/MS
+necroses
+necrosis/M
+necrotic
+nectar/M
+nectarine/MS
+nee
+need/MDSG
+needed/U
+needful/Y
+neediness/M
+needle/MGDS
+needlepoint/M
+needless/YP
+needlessness/M
+needlewoman/M
+needlewomen
+needlework/M
+needn't
+needy/PTR
+nefarious/YP
+nefariousness/M
+neg
+negate/DSGNVX
+negation/M
+negative/MYGPDS
+negativeness/M
+negativism/M
+negativity/M
+neglect/SGMD
+neglectful/YP
+neglectfulness/M
+negligee/MS
+negligence/M
+negligent/Y
+negligible
+negligibly
+negotiability/M
+negotiable/A
+negotiate/ADSGN
+negotiation/AM
+negotiations
+negotiator/MS
+negritude/M
+negro
+negroid
+neigh/MDG
+neighbor/SMDYG
+neighborhood/SM
+neighborliness/M
+neighs
+neither
+nelson/SM
+nematode/SM
+nemeses
+nemesis/M
+neoclassic
+neoclassical
+neoclassicism/M
+neocolonialism/M
+neocolonialist/MS
+neocon/SM
+neoconservative/SM
+neodymium/M
+neolithic
+neologism/SM
+neon/M
+neonatal
+neonate/MS
+neophilia
+neophyte/MS
+neoplasm/MS
+neoplastic
+neoprene/M
+nepenthe/M
+nephew/SM
+nephrite/M
+nephritic
+nephritis/M
+nephropathy
+nepotism/M
+nepotist/SM
+nepotistic
+neptunium/M
+nerd/MS
+nerdy/RT
+nerve's
+nerve/UDSG
+nerveless/YP
+nervelessness/M
+nerviness/M
+nervous/YP
+nervousness/M
+nervy/TPR
+nest/MDSG
+nestle/GJDS
+nestling/M
+net/SM
+netball
+netbook/MS
+nether
+nethermost
+netherworld/M
+netiquette/S
+netted
+netter/S
+netting/M
+nettle/MGDS
+nettlesome
+network/SGMD
+networking/M
+neural/Y
+neuralgia/M
+neuralgic
+neurasthenia/M
+neurasthenic/MS
+neuritic/MS
+neuritis/M
+neurological/Y
+neurologist/SM
+neurology/M
+neuron/MS
+neuronal
+neuroses
+neurosis/M
+neurosurgeon/MS
+neurosurgery/M
+neurosurgical
+neurotic/MS
+neurotically
+neurotransmitter/SM
+neut
+neuter/MDGS
+neutral/SMY
+neutralism/M
+neutralist/SM
+neutrality/M
+neutralization/M
+neutralize/DRSZG
+neutralizer/M
+neutrino/SM
+neutron/SM
+never
+nevermore
+nevertheless
+nevi
+nevus/M
+new/STMRYP
+newbie/MS
+newborn/SM
+newcomer/SM
+newel/SM
+newfangled
+newfound
+newline/S
+newlywed/SM
+newness/M
+news/M
+newsagent/S
+newsboy/SM
+newscast/SMRZ
+newscaster/M
+newsdealer/SM
+newsflash/S
+newsgirl/SM
+newsgroup/MS
+newshound/S
+newsletter/MS
+newsman/M
+newsmen
+newspaper/MS
+newspaperman/M
+newspapermen
+newspaperwoman/M
+newspaperwomen
+newspeak
+newsprint/M
+newsreader/S
+newsreel/MS
+newsroom/MS
+newsstand/SM
+newsweekly/SM
+newswoman/M
+newswomen
+newsworthiness/M
+newsworthy/P
+newsy/TR
+newt/MS
+newton/MS
+next/M
+nexus/MS
+niacin/M
+nib/SM
+nibble/MZGDRS
+nibbler/M
+nice/PYTR
+niceness/M
+nicety/SM
+niche/SM
+nick/MDRSZG
+nickel/MS
+nickelodeon/SM
+nicker/MDG
+nickle/S
+nickname/DSMG
+nicotine/M
+niece/SM
+niff
+niffy
+nifty/TR
+nigga/SM
+niggard/SMY
+niggardliness/M
+niggaz
+nigger/SM!
+niggle/MZGDRS
+niggler/M
+nigh/RT
+night/SMY
+nightcap/SM
+nightclothes/M
+nightclub/SM
+nightclubbed
+nightclubbing
+nightdress/MS
+nightfall/M
+nightgown/SM
+nighthawk/SM
+nightie/SM
+nightingale/SM
+nightlife/M
+nightlight/S
+nightlong
+nightmare/SM
+nightmarish
+nightshade/SM
+nightshirt/SM
+nightspot/MS
+nightstand/SM
+nightstick/SM
+nighttime/M
+nightwatchman
+nightwatchmen
+nightwear/M
+nihilism/M
+nihilist/MS
+nihilistic
+nil/M
+nimbi
+nimble/TPR
+nimbleness/M
+nimbly
+nimbus/M
+nimby
+nimrod/MS
+nincompoop/SM
+nine/MS
+ninepin/MS
+ninepins/M
+nineteen/SMH
+nineteenth/M
+nineteenths
+ninetieth/M
+ninetieths
+ninety/HSM
+ninja/SM
+ninny/SM
+ninth/M
+ninths
+niobium/M
+nip/SM
+nipped
+nipper/MS
+nippiness/M
+nipping
+nipple/MS
+nippy/TPR
+nirvana/M
+nisei/M
+nit/SMR
+niter/M
+nitpick/SZGDR
+nitpicker/M
+nitpicking/M
+nitrate/DSMGN
+nitration/M
+nitrification/M
+nitrite/SM
+nitro
+nitrocellulose/M
+nitrogen/M
+nitrogenous
+nitroglycerin/M
+nitwit/MS
+nix/GMDS
+no/SM
+nob/SY
+nobble/GDS
+nobelium/M
+nobility/M
+noble/RSPMT
+nobleman/M
+noblemen
+nobleness/M
+noblewoman/M
+noblewomen
+nobody/SM
+nocturnal/Y
+nocturne/MS
+nod/SM
+nodal
+nodded
+nodding
+noddle/MS
+noddy
+node/MS
+nodular
+nodule/MS
+noel/MS
+noes
+noggin/MS
+nohow
+noise/DSMG
+noiseless/PY
+noiselessness/M
+noisemaker/MS
+noisily
+noisiness/M
+noisome
+noisy/PTR
+nomad/SM
+nomadic
+nomenclature/MS
+nominal/Y
+nominate/ACGNVDS
+nomination's/A
+nomination/CSM
+nominative/SM
+nominator/CSM
+nominee/MS
+non
+nonabrasive
+nonabsorbent/SM
+nonacademic
+nonacceptance/M
+nonacid
+nonactive/MS
+nonaddictive
+nonadhesive
+nonadjacent
+nonadjustable
+nonadministrative
+nonage/MS
+nonagenarian/MS
+nonaggression/M
+nonalcoholic
+nonaligned
+nonalignment/M
+nonallergic
+nonappearance/MS
+nonassignable
+nonathletic
+nonattendance/M
+nonautomotive
+nonavailability/M
+nonbasic
+nonbeliever/MS
+nonbelligerent/MS
+nonbinding
+nonbreakable
+nonburnable
+noncaloric
+noncancerous
+nonce/M
+nonchalance/M
+nonchalant/Y
+nonchargeable
+nonclerical/MS
+nonclinical
+noncollectable
+noncom/MS
+noncombat
+noncombatant/MS
+noncombustible
+noncommercial/MS
+noncommittal/Y
+noncommunicable
+noncompeting
+noncompetitive
+noncompliance/M
+noncomplying
+noncomprehending
+nonconducting
+nonconductor/MS
+nonconforming
+nonconformism
+nonconformist/MS
+nonconformity/M
+nonconsecutive
+nonconstructive
+noncontagious
+noncontinuous
+noncontributing
+noncontributory
+noncontroversial
+nonconvertible
+noncooperation/M
+noncorroding
+noncorrosive
+noncredit
+noncriminal/SM
+noncritical
+noncrystalline
+noncumulative
+noncustodial
+nondairy
+nondeductible/M
+nondelivery/SM
+nondemocratic
+nondenominational
+nondepartmental
+nondepreciating
+nondescript
+nondestructive
+nondetachable
+nondisciplinary
+nondisclosure/M
+nondiscrimination/M
+nondiscriminatory
+nondramatic
+nondrinker/MS
+nondrying
+none
+noneducational
+noneffective
+nonelastic
+nonelectric
+nonelectrical
+nonempty
+nonenforceable
+nonentity/SM
+nonequivalent/MS
+nonessential
+nonesuch/MS
+nonetheless
+nonevent/MS
+nonexchangeable
+nonexclusive
+nonexempt/M
+nonexistence/M
+nonexistent
+nonexplosive/MS
+nonfactual
+nonfading
+nonfat
+nonfatal
+nonfattening
+nonferrous
+nonfiction/M
+nonfictional
+nonflammable
+nonflowering
+nonfluctuating
+nonflying
+nonfood/M
+nonfreezing
+nonfunctional
+nongovernmental
+nongranular
+nonhazardous
+nonhereditary
+nonhuman
+nonidentical
+noninclusive
+nonindependent
+nonindustrial
+noninfectious
+noninflammatory
+noninflationary
+noninflected
+nonintellectual/MS
+noninterchangeable
+noninterference/M
+nonintervention/M
+nonintoxicating
+noninvasive
+nonirritating
+nonissue
+nonjudgmental
+nonjudicial
+nonlegal
+nonlethal
+nonlinear
+nonliterary
+nonliving/M
+nonmagnetic
+nonmalignant
+nonmember/MS
+nonmetal/SM
+nonmetallic
+nonmigratory
+nonmilitant
+nonmilitary
+nonnarcotic/SM
+nonnative/MS
+nonnegotiable
+nonnuclear
+nonnumerical
+nonobjective
+nonobligatory
+nonobservance/M
+nonobservant
+nonoccupational
+nonoccurence
+nonofficial
+nonoperational
+nonoperative
+nonparallel/MS
+nonpareil/MS
+nonparticipant/MS
+nonparticipating
+nonpartisan/SM
+nonpaying
+nonpayment/SM
+nonperformance/M
+nonperforming
+nonperishable
+nonperson/MS
+nonphysical/Y
+nonplus/S
+nonplussed
+nonplussing
+nonpoisonous
+nonpolitical
+nonpolluting
+nonporous
+nonpracticing
+nonprejudicial
+nonprescription
+nonproductive
+nonprofessional/SM
+nonprofit/SMB
+nonproliferation/M
+nonpublic
+nonpunishable
+nonracial
+nonradioactive
+nonrandom
+nonreactive
+nonreciprocal/SM
+nonreciprocating
+nonrecognition/M
+nonrecoverable
+nonrecurring
+nonredeemable
+nonrefillable
+nonrefundable
+nonreligious
+nonrenewable
+nonrepresentational
+nonresident/MS
+nonresidential
+nonresidual/M
+nonresistance/M
+nonresistant
+nonrestrictive
+nonreturnable/MS
+nonrhythmic
+nonrigid
+nonsalaried
+nonscheduled
+nonscientific
+nonscoring
+nonseasonal
+nonsectarian
+nonsecular
+nonsegregated
+nonsense/M
+nonsensical/Y
+nonsensitive
+nonsexist
+nonsexual
+nonskid
+nonslip
+nonsmoker/SM
+nonsmoking
+nonsocial
+nonspeaking
+nonspecialist/MS
+nonspecializing
+nonspecific
+nonspiritual/SM
+nonstaining
+nonstandard
+nonstarter/MS
+nonstick
+nonstop
+nonstrategic
+nonstriking
+nonstructural
+nonsuccessive
+nonsupport/GM
+nonsurgical
+nonsustaining
+nonsympathizer/M
+nontarnishable
+nontaxable
+nontechnical
+nontenured
+nontheatrical
+nonthinking
+nonthreatening
+nontoxic
+nontraditional
+nontransferable
+nontransparent
+nontrivial
+nontropical
+nonuniform
+nonunion
+nonuser/MS
+nonvenomous
+nonverbal
+nonviable
+nonviolence/M
+nonviolent/Y
+nonvirulent
+nonvocal
+nonvocational
+nonvolatile
+nonvoter/MS
+nonvoting
+nonwhite/MS
+nonworking
+nonyielding
+nonzero
+noodle/MGDS
+nook/MS
+nookie
+nooky
+noon/M
+noonday/M
+noontide/M
+noontime/M
+noose/SM
+nope
+nor
+nor'easter
+norm/MS
+normal/MY
+normalcy/M
+normality/M
+normalization/M
+normalize/DSG
+normative
+north/ZMR
+northbound
+northeast/MRZ
+northeaster/MY
+northeastern
+northeastward/S
+norther/MY
+northerly/SM
+northern/ZR
+northerner/M
+northernmost
+northward/S
+northwest/ZMR
+northwester/MY
+northwestern
+northwestward/S
+nose/MGDS
+nosebag/S
+nosebleed/MS
+nosecone/SM
+nosedive/DSMG
+nosegay/SM
+nosh/MDRSZG
+nosher/M
+nosily
+nosiness/M
+nostalgia/M
+nostalgic
+nostalgically
+nostril/MS
+nostrum/MS
+nosy/RPT
+not/B
+notability/SM
+notable/SM
+notably
+notarial
+notarization/M
+notarize/GDS
+notary/SM
+notate/GDS
+notation/FCSM
+notch/GMDS
+note's
+note/FCSDG
+notebook/MS
+notelet/S
+notepad/S
+notepaper/M
+noteworthiness/M
+noteworthy/P
+nothing/PSM
+nothingness/M
+notice/MGDS
+noticeable/U
+noticeably
+noticeboard/S
+noticed/U
+notifiable
+notification/M
+notifier/M
+notify/NDRSXZG
+notion/MS
+notional/Y
+notoriety/M
+notorious/Y
+notwithstanding
+notwork/S
+nougat/MS
+noun/KMS
+nourish/DSLG
+nourishment/M
+nous
+nova/MS
+novae
+novel/SM
+novelette/SM
+novelist/SM
+novelization/MS
+novelize/DSG
+novella/MS
+novelty/SM
+novena/MS
+novene
+novice/MS
+novitiate/MS
+now/M
+nowadays/M
+noway/S
+nowhere/M
+nowise
+nowt
+noxious
+nozzle/MS
+nu/SM
+nuance/MDS
+nub/SM
+nubbin/MS
+nubby/TR
+nubile
+nuclear/K
+nucleate/DSGN
+nucleation/M
+nuclei
+nucleic
+nucleoli
+nucleolus/M
+nucleon/SM
+nucleoside
+nucleotide
+nucleus/M
+nude/MTRS
+nudge/GDSM
+nudism/M
+nudist/SM
+nudity/M
+nugatory
+nugget/SM
+nuisance/MS
+nuke/MGDS
+null/S
+nullification/M
+nullify/NDSG
+nullity/M
+numb/ZTGPDRYS
+number's
+number/ASDG
+numbered/U
+numberless
+numbness/M
+numerable/I
+numeracy/IM
+numeral/SM
+numerate/XGNDS
+numeration/M
+numerator/MS
+numeric
+numerical/Y
+numerologist/MS
+numerology/M
+numerous/Y
+numinous
+numismatic/S
+numismatics/M
+numismatist/SM
+numskull/MS
+nun/SM
+nuncio/SM
+nunnery/SM
+nuptial/MS
+nurse/MZGDRS
+nurselings
+nursemaid/MS
+nurser/M
+nursery/SM
+nurseryman/M
+nurserymen
+nursing/M
+nursling/SM
+nurture/DRSMZG
+nurturer/M
+nut/SM
+nutcase/S
+nutcracker/MS
+nuthatch/MS
+nuthouse/S
+nutmeat/SM
+nutmeg/SM
+nutpick/SM
+nutria/SM
+nutrient/MS
+nutriment/MS
+nutrition/M
+nutritional/Y
+nutritionist/SM
+nutritious/YP
+nutritiousness/M
+nutritive
+nutshell/MS
+nutted
+nutter/S
+nuttiness/M
+nutting
+nutty/RTP
+nuzzle/DRSMZG
+nuzzler/M
+nybble/S
+nylon/MS
+nylons/M
+nymph/M
+nymphet/MS
+nympho/S
+nymphomania/M
+nymphomaniac/SM
+nymphs
+o
+o'clock
+o'er
+oaf/SM
+oafish/PY
+oafishness/M
+oak/SMN
+oakum/M
+oar/SGMD
+oarlock/SM
+oarsman/M
+oarsmen
+oarswoman/M
+oarswomen
+oases
+oasis/M
+oat/SMN
+oatcake/SM
+oath/M
+oaths
+oatmeal/M
+oats/M
+ob/S
+obbligato/MS
+obduracy/M
+obdurate/PY
+obdurateness/M
+obedience/EM
+obedient/EY
+obeisance/SM
+obeisant
+obelisk/MS
+obese
+obesity/M
+obey/EDSG
+obfuscate/GNXDS
+obfuscation/M
+obi/SM
+obit/MS
+obituary/SM
+obj
+object/SGVMD
+objectify/NGDS
+objection/SMB
+objectionable/U
+objectionably
+objective/SMYP
+objectiveness/M
+objectivity/M
+objector/MS
+objurgate/XGNDS
+objurgation/M
+oblate/NX
+oblation/M
+obligate/DSXGN
+obligation/M
+obligatorily
+obligatory
+oblige/EGDS
+obliging/Y
+oblique/SMYP
+obliqueness/M
+obliquity/M
+obliterate/DSGN
+obliteration/M
+oblivion/M
+oblivious/YP
+obliviousness/M
+oblong/MS
+obloquy/M
+obnoxious/YP
+obnoxiousness/M
+oboe/MS
+oboist/MS
+obscene/RYT
+obscenity/SM
+obscurantism/M
+obscurantist/SM
+obscure/DRSYTG
+obscurity/SM
+obsequies
+obsequious/PY
+obsequiousness/M
+obsequy/M
+observably
+observance/MS
+observant/Y
+observation/SM
+observational
+observatory/SM
+observe/DRSBZG
+observed/U
+observer/M
+obsess/DSGV
+obsession/SM
+obsessional/Y
+obsessive/PSMY
+obsessiveness/M
+obsidian/M
+obsolesce/DSG
+obsolescence/M
+obsolescent
+obsolete/GDS
+obstacle/MS
+obstetric/S
+obstetrical
+obstetrician/SM
+obstetrics/M
+obstinacy/M
+obstinate/Y
+obstreperous/YP
+obstreperousness/M
+obstruct/DGVS
+obstructed/U
+obstruction/SM
+obstructionism/M
+obstructionist/MS
+obstructive/YP
+obstructiveness/M
+obtain/DBLGS
+obtainable/U
+obtainment/M
+obtrude/DSG
+obtrusion/M
+obtrusive/UPY
+obtrusiveness/UM
+obtuse/YTRP
+obtuseness/M
+obverse/SM
+obviate/DSGN
+obviation/M
+obvious/PY
+obviousness/M
+ocarina/MS
+occasion/GMDS
+occasional/Y
+occidental/SM
+occlude/GDS
+occlusion/SM
+occlusive
+occult/M
+occultism/M
+occultist/SM
+occupancy/M
+occupant/SM
+occupation/AM
+occupational/Y
+occupations
+occupied/U
+occupier/SM
+occupy/ADSG
+occur/AS
+occurred/A
+occurrence/SM
+occurring/A
+ocean/SM
+oceanfront/SM
+oceangoing
+oceanic/M
+oceanographer/SM
+oceanographic
+oceanography/M
+oceanology/M
+ocelot/MS
+och/R
+ocher/M
+ocker/S
+octagon/MS
+octagonal
+octal
+octane/MS
+octave/MS
+octavo/MS
+octet/SM
+octogenarian/SM
+octopus/MS
+ocular/MS
+oculist/SM
+odalisque/SM
+odd/STRYLP
+oddball/SM
+oddity/SM
+oddment/SM
+oddness/M
+odds/M
+ode/SM
+odious/YP
+odiousness/M
+odium/M
+odometer/MS
+odor/MDS
+odoriferous
+odorless
+odorous
+odyssey/MS
+oedipal
+oenology/M
+oenophile/SM
+oeuvre/MS
+of
+off/SZGDRJ
+offal/M
+offbeat/MS
+offend/ZGDRS
+offender/M
+offense/MS
+offensive's
+offensive/IPY
+offensiveness/IM
+offensives
+offer/JGMD
+offering/M
+offertory/SM
+offhand
+offhanded/PY
+offhandedness/M
+office/MZRS
+officeholder/SM
+officer/M
+official/MYS
+officialdom/M
+officialese
+officialism/M
+officiant/SM
+officiate/DSG
+officiator/MS
+officious/PY
+officiousness/M
+offing/M
+offish
+offline
+offload/SDG
+offprint/SM
+offset/MS
+offsetting
+offshoot/MS
+offshore/G
+offside
+offsite
+offspring/M
+offstage/S
+offtrack
+oft
+often/TR
+oftentimes
+ofttimes
+ogle/MZGDRS
+ogler/M
+ogre/MS
+ogreish
+ogress/MS
+oh/M
+ohm/SM
+ohmmeter/MS
+oho
+ohs
+oi
+oik/S
+oil/SGMD
+oilcan/S
+oilcloth/M
+oilcloths
+oilfield/S
+oiliness/M
+oilman
+oilmen
+oilskin/MS
+oilskins/M
+oily/RPT
+oink/MDSG
+ointment/SM
+okapi/SM
+okay/MSG
+okra/MS
+old/TMNRP
+oldie/SM
+oldish
+oldness/M
+oldster/MS
+ole/SMV
+oleaginous
+oleander/MS
+oleo/M
+oleomargarine/M
+olfactory/SM
+oligarch/M
+oligarchic
+oligarchical
+oligarchs
+oligarchy/SM
+oligonucleotide/S
+oligopoly/SM
+olive/SM
+om/SMNX
+ombudsman/M
+ombudsmen
+omega/SM
+omelet/MS
+omen/M
+omicron/MS
+ominous/YP
+ominousness/M
+omission/MS
+omit/S
+omitted
+omitting
+omnibus/MS
+omnipotence/M
+omnipotent
+omnipresence/M
+omnipresent
+omniscience/M
+omniscient
+omnivore/MS
+omnivorous/PY
+omnivorousness/M
+on/Y
+once/M
+oncogene/SM
+oncologist/SM
+oncology/M
+oncoming
+one/SXMNP
+oneness/M
+onerous/PY
+onerousness/M
+oneself
+onetime
+ongoing
+onion/M
+onionskin/M
+online
+onlooker/SM
+onlooking
+onomatopoeia/M
+onomatopoeic
+onomatopoetic
+onrush/MSG
+onscreen
+onset/MS
+onshore
+onside
+onsite
+onslaught/MS
+onstage
+onto
+ontogeny/M
+ontological
+ontology/M
+onus/MS
+onward
+onyx/MS
+oodles/M
+ooh/GD
+oohs
+oomph
+oops
+ooze/MGDS
+oozy/TR
+op/SMDG
+opacity/M
+opal/MS
+opalescence/M
+opalescent
+opaque/PYTGDRS
+opaqueness/M
+opcode/S
+ope/S
+open/ZTGJPMDRYS
+opencast
+opened/U
+opener/M
+openhanded/P
+openhandedness/M
+openhearted
+opening/M
+openness/M
+openwork/M
+opera/MS
+operable/I
+operand/S
+operate/DSGNVX
+operatic
+operatically
+operation/M
+operational/Y
+operative/SM
+operator/SM
+operetta/SM
+ophthalmic
+ophthalmologist/SM
+ophthalmology/M
+opiate/SM
+opine/GNXDS
+opinion/M
+opinionated
+opium/M
+opossum/MS
+opp
+opponent/SM
+opportune/IY
+opportunism/M
+opportunist/SM
+opportunistic
+opportunistically
+opportunity/SM
+oppose/DSG
+opposed/U
+opposite/SMYNX
+opposition/M
+oppress/DSGV
+oppression/M
+oppressive/YP
+oppressiveness/M
+oppressor/MS
+opprobrious/Y
+opprobrium/M
+opt/SGD
+optic/MS
+optical/Y
+optician/SM
+optics/M
+optima
+optimal/Y
+optimism/SM
+optimist/SM
+optimistic
+optimistically
+optimization/MS
+optimize/DRSG
+optimum/SM
+option/SMDG
+optional/Y
+optometrist/MS
+optometry/M
+opulence/M
+opulent/Y
+opus/MS
+or
+oracle/SM
+oracular
+oral/MYS
+orange/SMP
+orangeade/MS
+orangery/SM
+orangutan/SM
+orate/GNXDS
+oration/M
+orator/SM
+oratorical/Y
+oratorio/MS
+oratory/SM
+orb/SM
+orbicular
+orbit/MDRZGS
+orbital/SM
+orbiter/M
+orc/SM
+orchard/SM
+orchestra/MS
+orchestral
+orchestrate/DSXGN
+orchestration/M
+orchid/SM
+ordain/SDLG
+ordainment/M
+ordeal/SM
+order/EAMDGS
+orderings
+orderliness/EM
+orderly/PSM
+ordinal/SM
+ordinance/SM
+ordinarily
+ordinariness/M
+ordinary/SMP
+ordinate/MNSX
+ordination/M
+ordnance/M
+ordure/M
+ore/SM
+oregano/M
+org
+organ/MS
+organdy/M
+organelle/MS
+organic/SM
+organically/I
+organism/MS
+organismic
+organist/MS
+organization/ASM
+organizational/Y
+organize/AESDG
+organized/U
+organizer/MS
+organza/M
+orgasm/SM
+orgasmic
+orgiastic
+orgy/SM
+oriel/MS
+orient's
+orient/AEDGS
+oriental/MS
+orientalist/S
+orientate/EDSGN
+orientation/AEM
+orientations
+orienteering
+orifice/MS
+orig
+origami/M
+origin/SM
+original/MYS
+originality/M
+originate/DSGN
+origination/M
+originator/SM
+oriole/SM
+orison/SM
+ormolu/M
+ornament/SGMD
+ornamental
+ornamentation/M
+ornate/YP
+ornateness/M
+orneriness/M
+ornery/PRT
+ornithological
+ornithologist/MS
+ornithology/M
+orotund
+orotundity/SM
+orphan/SMDG
+orphanage/MS
+orris/MS
+orthodontia/M
+orthodontic/S
+orthodontics/M
+orthodontist/SM
+orthodox/U
+orthodoxy/SM
+orthogonal
+orthogonality
+orthographic
+orthographically
+orthography/SM
+orthopedic/S
+orthopedics/M
+orthopedist/MS
+orzo/M
+oscillate/GNDSX
+oscillation/M
+oscillator/SM
+oscillatory
+oscilloscope/MS
+osculate/DSXGN
+osculation/M
+osier/MS
+osmium/M
+osmosis/M
+osmotic
+osprey/SM
+ossification/M
+ossify/NGDS
+ostensible
+ostensibly
+ostentation/M
+ostentatious/Y
+osteoarthritis/M
+osteopath/M
+osteopathic
+osteopaths
+osteopathy/M
+osteoporosis/M
+ostler/S
+ostracism/M
+ostracize/GDS
+ostrich/MS
+other/MSP
+otherwise
+otherworldly
+otiose
+otter/MS
+ottoman/MS
+oubliette/MS
+ouch
+ought
+oughtn't
+ounce/MS
+our/S
+ourselves
+oust/ZGDRS
+ouster/M
+out/SJGMDR
+outage/SM
+outargue/GDS
+outback/MS
+outbalance/DSG
+outbid/S
+outbidding
+outboard/MS
+outboast/DSG
+outbound
+outbox/MS
+outbreak/MS
+outbuilding/MS
+outburst/SM
+outcast/MS
+outclass/DSG
+outcome/MS
+outcrop/MS
+outcropped
+outcropping/SM
+outcry/SM
+outdated
+outdid
+outdistance/GDS
+outdo/G
+outdoes
+outdone
+outdoor/S
+outdoors/M
+outdoorsy
+outdraw/GS
+outdrawn
+outdrew
+outermost
+outerwear/M
+outface/GDS
+outfall/S
+outfield/SMRZ
+outfielder/M
+outfight/SG
+outfit/SM
+outfitted
+outfitter/MS
+outfitting
+outflank/GSD
+outflow/MS
+outfought
+outfox/GDS
+outgo/MJG
+outgoes
+outgrew
+outgrow/HGS
+outgrown
+outgrowth/M
+outgrowths
+outguess/GDS
+outgun/S
+outgunned
+outgunning
+outhit/S
+outhitting
+outhouse/SM
+outing/M
+outlaid
+outlandish/PY
+outlandishness/M
+outlast/DSG
+outlaw/SGMD
+outlay/SGM
+outlet/SM
+outlier/S
+outline/MGDS
+outlive/GDS
+outlook/MS
+outlying
+outmaneuver/GDS
+outmatch/GDS
+outmoded
+outnumber/DSG
+outpace/GDS
+outpatient/MS
+outperform/GSD
+outplace/L
+outplacement/M
+outplay/GDS
+outpoint/DGS
+outpost/MS
+outpouring/MS
+outproduce/DSG
+output/SM
+outputted
+outputting
+outrace/GDS
+outrage/MGDS
+outrageous/Y
+outran
+outrank/GDS
+outre
+outreach/MDSG
+outrider/MS
+outrigger/SM
+outright
+outrun/S
+outrunning
+outscore/GDS
+outsell/GS
+outset/SM
+outshine/GS
+outshone
+outshout/GDS
+outside/MZRS
+outsider/M
+outsize/MS
+outskirt/MS
+outsmart/GDS
+outsold
+outsource/DSG
+outsourcing/M
+outspend/SG
+outspent
+outspoken/YP
+outspokenness/M
+outspread/GS
+outstanding/Y
+outstation/MS
+outstay/DGS
+outstretch/DSG
+outstrip/S
+outstripped
+outstripping
+outta
+outtake/MS
+outvote/GDS
+outward/YS
+outwear/GS
+outweigh/GD
+outweighs
+outwit/S
+outwith
+outwitted
+outwitting
+outwore
+outwork/MDRSZG
+outworn
+ouzo/MS
+ova
+oval/MS
+ovarian
+ovary/SM
+ovate/NX
+ovation/M
+oven/MS
+ovenbird/SM
+ovenproof
+ovenware
+over/MYS
+overabundance/M
+overabundant
+overachieve/ZGDRS
+overachiever/M
+overact/GVSD
+overage/SM
+overaggressive
+overall/SM
+overalls/M
+overambitious
+overanxious
+overarching
+overarm/GSD
+overate
+overattentive
+overawe/DSG
+overbalance/MGDS
+overbear/GS
+overbearing/Y
+overbid/SM
+overbidding
+overbite/MS
+overblown
+overboard
+overbold
+overbook/DGS
+overbore
+overborne
+overbought
+overbuild/SG
+overbuilt
+overburden/GSD
+overbuy/GS
+overcame
+overcapacity/M
+overcapitalize/DSG
+overcareful
+overcast/MGS
+overcautious
+overcharge/DSMG
+overclock/GD
+overcloud/SGD
+overcoat/MS
+overcome/GS
+overcompensate/DSGN
+overcompensation/M
+overconfidence/M
+overconfident
+overconscientious
+overcook/DGS
+overcritical
+overcrowd/SDG
+overcrowding/M
+overdecorate/DSG
+overdependent
+overdevelop/SDG
+overdid
+overdo/G
+overdoes
+overdone
+overdose/MGDS
+overdraft/SM
+overdraw/GS
+overdrawn
+overdress/GMDS
+overdrew
+overdrive/SM
+overdub/SM
+overdubbed
+overdubbing
+overdue
+overeager
+overeat/GSN
+overemotional
+overemphasis/M
+overemphasize/GDS
+overenthusiastic
+overestimate/MGNDS
+overestimation/M
+overexcite/DSG
+overexercise/GDS
+overexert/SDG
+overexertion/M
+overexpose/GDS
+overexposure/M
+overextend/DGS
+overfed
+overfeed/GS
+overfill/DGS
+overflew
+overflight/MS
+overflow/MDSG
+overflown
+overfly/GS
+overfond
+overfull
+overgeneralize/DSG
+overgenerous
+overgraze/DSG
+overgrew
+overground
+overgrow/HSG
+overgrown
+overgrowth/M
+overhand/MDS
+overhang/MSG
+overhasty
+overhaul/MDSG
+overhead/MS
+overhear/SG
+overheard
+overheat/DSG
+overhung
+overindulge/GDS
+overindulgence/M
+overindulgent
+overjoy/GSD
+overkill/M
+overladen
+overlaid
+overlain
+overland
+overlap/SM
+overlapped
+overlapping
+overlarge
+overlay/GSM
+overleaf
+overlie
+overload/GMDS
+overlong
+overlook/GMDS
+overlord/MS
+overly/SG
+overmanned
+overmanning
+overmaster/SDG
+overmodest
+overmuch/S
+overnice
+overnight/MS
+overoptimism/M
+overoptimistic
+overpaid
+overparticular
+overpass/MS
+overpay/GS
+overplay/GDS
+overpopulate/GNDS
+overpopulation/M
+overpower/SDG
+overpowering/Y
+overpraise/DSG
+overprecise
+overprice/DSG
+overprint/SMDG
+overproduce/GDS
+overproduction/M
+overprotect/SDGV
+overqualified
+overran
+overrate/GDS
+overreach/GDS
+overreact/SDG
+overreaction/SM
+overrefined
+overridden
+override/MGS
+overripe/M
+overrode
+overrule/GDS
+overrun/SM
+overrunning
+oversampling
+oversaw
+oversea/S
+oversee/RSZ
+overseeing
+overseen
+overseer/M
+oversell/GS
+oversensitive/P
+oversensitiveness/M
+oversexed
+overshadow/DSG
+overshare/DSG
+overshoe/MS
+overshoot/GS
+overshot
+oversight/SM
+oversimple
+oversimplification/M
+oversimplify/DSNGX
+oversize
+oversleep/GS
+overslept
+oversold
+overspecialization/M
+overspecialize/GDS
+overspend/SG
+overspent
+overspread/GS
+overstaffed
+overstate/DSLG
+overstatement/MS
+overstay/DSG
+overstep/S
+overstepped
+overstepping
+overstimulate/DSG
+overstock/GSD
+overstretch/GDS
+overstrict
+overstrung
+overstuffed
+oversubscribe/DSG
+oversubtle
+oversupply/GDS
+oversuspicious
+overt/Y
+overtake/GS
+overtaken
+overtax/GDS
+overthink/SG
+overthought
+overthrew
+overthrow/SMG
+overthrown
+overtime/MS
+overtire/GDS
+overtone/MS
+overtook
+overture/MS
+overturn/DSG
+overuse/DSMG
+overvaluation/S
+overvalue/DSG
+overview/MS
+overweening/Y
+overweight/M
+overwhelm/SGD
+overwhelming/Y
+overwinter/SDG
+overwork/GMDS
+overwrite/GS
+overwritten
+overwrote
+overwrought
+overzealous
+oviduct/SM
+oviparous
+ovoid/MS
+ovular
+ovulate/DSGN
+ovulation/M
+ovule/MS
+ovum/M
+ow
+owe/DSG
+owl/SM
+owlet/MS
+owlish/Y
+own/ESGD
+owner/MS
+ownership/M
+ox/MN
+oxblood/M
+oxbow/MS
+oxcart/SM
+oxford/SM
+oxidant/MS
+oxidase
+oxidation/M
+oxide/MS
+oxidization/M
+oxidize/ZGDRS
+oxidizer/M
+oxtail/S
+oxyacetylene/M
+oxygen/M
+oxygenate/DSGN
+oxygenation/M
+oxymora
+oxymoron/M
+oyster/SM
+oz
+ozone/M
+p/NRXTGJ
+pH
+pa/SMH
+pablum/M
+pabulum/M
+pace/MZGDRS
+pacemaker/SM
+pacer/M
+pacesetter/SM
+pacey
+pachyderm/MS
+pachysandra/MS
+pacific
+pacifically
+pacification/M
+pacifier/M
+pacifism/M
+pacifist/SM
+pacifistic
+pacify/ZGDRSN
+pack's
+pack/AUGSD
+package's
+package/AGDS
+packager/SM
+packaging/M
+packer/MS
+packet/MS
+packing's
+packinghouse/SM
+packsaddle/MS
+pact/MS
+pacy/RT
+pad/SM
+padded
+padding/M
+paddle/MZGDRS
+paddler/M
+paddock/MDGS
+paddy/SM
+padlock/MDSG
+padre/SM
+paean/SM
+paella/MS
+pagan/SM
+paganism/M
+page/MZGDRS
+pageant/MS
+pageantry/M
+pageboy/SM
+pager/M
+paginate/DSGN
+pagination/M
+pagoda/MS
+pah
+paid/AU
+pail/MS
+pailful/SM
+pain/MDSG
+painful/PY
+painfuller
+painfullest
+painfulness/M
+painkiller/MS
+painkilling
+painless/PY
+painlessness/M
+painstaking/MY
+paint/SZGJMDR
+paintball
+paintbox/MS
+paintbrush/MS
+painted/U
+painter/MY
+painting/M
+paintwork
+pair/AMDSG
+paired/U
+pairing/S
+pairwise
+paisley/SM
+pajama/S
+pajamas/M
+pal/SMY
+palace/MS
+paladin/SM
+palanquin/SM
+palatable/U
+palatal/SM
+palatalization/M
+palatalize/GDS
+palate/MBS
+palatial/Y
+palatinate/MS
+palatine/MS
+palaver/GSMD
+palazzi
+palazzo
+pale/MYTGPDRSJ
+paleface/MS
+paleness/M
+paleographer/MS
+paleography/M
+paleolithic
+paleontologist/SM
+paleontology/M
+palette/SM
+palfrey/SM
+palimony/M
+palimpsest/MS
+palindrome/MS
+palindromic
+paling/M
+palisade/SM
+palish
+pall/MDSG
+palladium/M
+pallbearer/MS
+pallet/MS
+palliate/DSGNV
+palliation/M
+palliative/SM
+pallid/YP
+pallidness/M
+pallor/M
+palm/MDSG
+palmate
+palmetto/SM
+palmist/SM
+palmistry/M
+palmtop/SM
+palmy/TR
+palomino/MS
+palpable
+palpably
+palpate/DSGN
+palpation/M
+palpitate/XGNDS
+palpitation/M
+palsy/GDSM
+paltriness/M
+paltry/RPT
+pampas/M
+pamper/DSG
+pamphlet/MS
+pamphleteer/MS
+pan/SM
+panacea/SM
+panache/M
+panama/MS
+panatella/S
+pancake/DSMG
+panchromatic
+pancreas/MS
+pancreatic
+pancreatitis
+panda/SM
+pandemic/SM
+pandemonium/M
+pander/MDRZGS
+panderer/M
+pane/KM
+panegyric/SM
+panel/SGJMD
+paneling/M
+panelist/MS
+panes
+pang/MS
+panhandle/DRSMZG
+panhandler/M
+panic/SM
+panicked
+panicking
+panicky
+panned
+pannier/SM
+panning
+panoply/SM
+panorama/SM
+panoramic
+panpipes/M
+pansy/SM
+pant/MDSG
+pantaloons/M
+pantechnicon/S
+pantheism/M
+pantheist/SM
+pantheistic
+pantheon/SM
+panther/MS
+pantie/MS
+panto/S
+pantomime/MGDS
+pantomimic
+pantomimist/SM
+pantry/SM
+pantsuit/SM
+pantyhose/M
+pantyliner/M
+pantywaist/SM
+pap/SM
+papa/MS
+papacy/SM
+papal
+paparazzi/M
+paparazzo
+papaya/MS
+paper/SZGMDR
+paperback/SM
+paperbark/S
+paperboard/M
+paperboy/SM
+paperclip/S
+paperer/M
+papergirl/SM
+paperhanger/SM
+paperhanging/M
+paperless
+paperweight/MS
+paperwork/M
+papery
+papilla/M
+papillae
+papillary
+papist/MS
+papoose/MS
+pappy/SM
+paprika/M
+papyri
+papyrus/M
+par/SZGMDRBJ
+para/MS
+parable/MS
+parabola/SM
+parabolic
+paracetamol/S
+parachute/DSMG
+parachutist/MS
+parade/MZGDRS
+parader/M
+paradigm/SM
+paradigmatic
+paradisaical
+paradise/SM
+paradox/MS
+paradoxical/Y
+paraffin/M
+paragliding
+paragon/MS
+paragraph/GMD
+paragraphs
+parakeet/SM
+paralegal/MS
+parallax/MS
+parallel/SGMD
+paralleled/U
+parallelism/MS
+parallelogram/SM
+paralyses
+paralysis/M
+paralytic/SM
+paralyze/DSG
+paralyzing/Y
+paramecia
+paramecium/M
+paramedic/MS
+paramedical/MS
+parameter/MS
+parametric
+paramilitary/SM
+paramount
+paramountcy
+paramour/SM
+paranoia/M
+paranoiac/MS
+paranoid/SM
+paranormal
+parapet/MS
+paraphernalia/M
+paraphrase/DSMG
+paraplegia/M
+paraplegic/SM
+paraprofessional/MS
+parapsychologist/MS
+parapsychology/M
+paraquat/M
+parasailing
+parascending
+parasite/SM
+parasitic
+parasitical/Y
+parasitism/M
+parasol/MS
+parasympathetic/S
+parathion/M
+parathyroid/MS
+paratroop/RZS
+paratrooper/M
+paratroops/M
+paratyphoid/M
+parboil/DSG
+parcel/GMDS
+parch/LGDS
+parchment/SM
+pardner/S
+pardon/ZGMDRBS
+pardonable/U
+pardonably/U
+pardoner/M
+pare/S
+paregoric/M
+parent/GMDS
+parentage/M
+parental
+parentheses
+parenthesis/M
+parenthesize/DSG
+parenthetic
+parenthetical/Y
+parenthood/M
+parenting/M
+parer/M
+pares/S
+paresis/M
+parfait/MS
+pariah/M
+pariahs
+parietal
+parimutuel/MS
+paring/M
+parish/MS
+parishioner/MS
+parity/ESM
+park/MDSG
+parka/SM
+parking/M
+parkland
+parkour
+parkway/MS
+parky
+parlance/M
+parlay/GMDS
+parley/GMDS
+parliament/SM
+parliamentarian/SM
+parliamentary
+parlor/MS
+parlous
+parmigiana
+parochial/Y
+parochialism/M
+parodist/SM
+parody/GDSM
+parole/MGDS
+parolee/MS
+parotid
+paroxysm/SM
+paroxysmal
+parquet/MDSG
+parquetry/M
+parred
+parricidal
+parricide/MS
+parring
+parrot/GMDS
+parry/GDSM
+parse/DRSG
+parsec/MS
+parsimonious/Y
+parsimony/M
+parsley/M
+parsnip/MS
+parson/MS
+parsonage/MS
+part's
+part/CDSG
+partake/ZGRS
+partaken
+partaker/M
+parterre/SM
+parthenogenesis/M
+partial/MYS
+partiality/M
+participant/SM
+participate/DSGN
+participation/M
+participator/MS
+participatory
+participial/M
+participle/MS
+particle/SM
+particleboard/M
+particular/SMY
+particularity/SM
+particularization/M
+particularize/DSG
+particulate/SM
+parting/MS
+partisan/SM
+partisanship/M
+partition/GMDS
+partitive/MS
+partly
+partner/MDSG
+partnership/MS
+partook
+partridge/SM
+parturition/M
+partway
+party/GDSM
+parvenu/MS
+pascal/MS
+paschal
+pasha/SM
+pass/M
+passably
+passage/MS
+passageway/MS
+passbook/MS
+passe/DRSBXZGNV
+passel/MS
+passenger/SM
+passer/M
+passerby/M
+passersby
+passim
+passing/MY
+passion/EM
+passionate/EY
+passionflower/SM
+passionless
+passive/PMYS
+passiveness/M
+passivity/M
+passivization
+passivize/DSG
+passkey/MS
+passphrase/S
+passport/MS
+password/MS
+past/AMS
+pasta/SM
+paste/DSMG
+pasteboard/M
+pastel/MS
+pastern/MS
+pasteurization/M
+pasteurize/ZGDRS
+pasteurized/U
+pasteurizer/M
+pastiche/MS
+pastie
+pastille/MS
+pastime/MS
+pastiness/M
+pastor/MS
+pastoral/MS
+pastorate/MS
+pastrami/M
+pastry/SM
+pasturage/M
+pasture/DSMG
+pastureland/M
+pasty/PTRSM
+pat/SM
+patch/EGMDS
+patchily
+patchiness/M
+patchouli
+patchwork/SM
+patchy/TPR
+pate/MS
+patella/MS
+patellae
+patent/GMDYS
+paterfamilias/MS
+paternal/Y
+paternalism/M
+paternalist/S
+paternalistic
+paternity/M
+paternoster/MS
+path/M
+pathetic
+pathetically
+pathfinder/SM
+pathless
+pathogen/SM
+pathogenic
+pathological/Y
+pathologist/SM
+pathology/M
+pathos/M
+paths
+pathway/MS
+patience/M
+patient/IMST
+patienter
+patiently
+patina/MS
+patine
+patio/SM
+patisserie/S
+patois/M
+patresfamilias
+patriarch/M
+patriarchal
+patriarchate/MS
+patriarchs
+patriarchy/SM
+patrician/SM
+patricide/SM
+patrimonial
+patrimony/SM
+patriot/SM
+patriotic/U
+patriotically
+patriotism/M
+patrol/MS
+patrolled
+patrolling
+patrolman/M
+patrolmen
+patrolwoman/M
+patrolwomen
+patron/MS
+patronage/MS
+patroness/MS
+patronize/ZGDRS
+patronizer/M
+patronizing/Y
+patronymic/SM
+patronymically
+patroon/SM
+patsy/SM
+patted
+patter/MDGS
+pattern/SMDG
+patting
+patty/SM
+paucity/M
+paunch/MS
+paunchy/RT
+pauper/MS
+pauperism/M
+pauperize/DSG
+pause/DSMG
+pave/AGDS
+paved/U
+pavement/MS
+pavilion/SM
+paving/MS
+pavlova/S
+paw/SGMD
+pawl/MS
+pawn/MDSG
+pawnbroker/MS
+pawnbroking/M
+pawnshop/MS
+pawpaw/MS
+pay's
+pay/ASGBL
+payback/SM
+paycheck/MS
+payday/MS
+payed
+payee/SM
+payer/SM
+payload/SM
+paymaster/SM
+payment/ASM
+payoff/MS
+payola/M
+payout/MS
+payphone/S
+payroll/SM
+payslip/SM
+paywall/SM
+payware
+pct
+pd
+pea/SM
+peace/SM
+peaceable
+peaceably
+peaceful/PY
+peacefulness/M
+peacekeeper/SM
+peacekeeping/M
+peacemaker/MS
+peacemaking/M
+peacetime/M
+peach/MS
+peachy/TR
+peacock/MS
+peafowl/MS
+peahen/MS
+peak/MDSG
+peaky
+peal/AMDSG
+peanut/MS
+pear/MYS
+pearl/SGMD
+pearly/RT
+peasant/SM
+peasantry/M
+peashooter/SM
+peat/M
+peaty/TR
+pebble/MGDS
+pebbly
+pecan/SM
+peccadillo/M
+peccadilloes
+peccary/SM
+peck/MDRSZG
+peckish
+pecs
+pectic
+pectin/M
+pectoral/MS
+peculate/GNDS
+peculation/M
+peculator/SM
+peculiar/Y
+peculiarity/SM
+pecuniary
+pedagogic
+pedagogical/Y
+pedagogue/SM
+pedagogy/M
+pedal/SGMD
+pedalo/S
+pedant/MS
+pedantic
+pedantically
+pedantry/M
+peddle/ZGDRS
+peddler/M
+pederast/MS
+pederasty/M
+pedestal/MS
+pedestrian/SM
+pedestrianization
+pedestrianize/GDS
+pediatric/S
+pediatrician/MS
+pediatrics/M
+pedicab/SM
+pedicure/MGDS
+pedicurist/MS
+pedigree/MDS
+pediment/MS
+pedometer/MS
+pedophile/S
+pedophilia
+peduncle/MS
+pee/DRSMZ
+peeing
+peek/MDSG
+peekaboo/M
+peel/MDRSJZG
+peeled/U
+peeler/M
+peeling/M
+peen/MS
+peep/MDRSZG
+peepbo
+peeper/M
+peephole/MS
+peepshow/MS
+peer/MDG
+peerage/SM
+peeress/MS
+peerless
+peeve/DSMG
+peevish/PY
+peevishness/M
+peewee/MS
+peewit/S
+peg/SM
+pegboard/MS
+pegged
+pegging
+peignoir/SM
+pejoration/M
+pejorative/SMY
+peke/MS
+pekineses
+pekingese/SM
+pekoe/M
+pelagic
+pelf/M
+pelican/MS
+pellagra/M
+pellet/GMDS
+pellucid
+pelmet/S
+pelt/MDSG
+pelvic
+pelvis/MS
+pemmican/M
+pen/M
+penal
+penalization/M
+penalize/DSG
+penalty/SM
+penance/MS
+pence
+penchant/SM
+pencil/GMDJS
+pend/CDSG
+pendant/MS
+pendent/MS
+pendulous
+pendulum/MS
+penetrability/M
+penetrable
+penetrate/DSGNVX
+penetrating/Y
+penetration/M
+penfriend/S
+penguin/MS
+penicillin/M
+penile
+peninsula/SM
+peninsular
+penis/MS
+penitence/M
+penitent/SMY
+penitential
+penitentiary/SM
+penknife/M
+penknives
+penlight/SM
+penman/M
+penmanship/M
+penmen
+pennant/MS
+penned
+penniless
+penning
+pennon/MS
+penny/SM
+pennyweight/MS
+pennyworth
+penologist/MS
+penology/M
+pension/BZGMDRS
+pensioner/M
+pensive/PY
+pensiveness/M
+pent
+pentacle/MS
+pentagon/MS
+pentagonal
+pentagram/SM
+pentameter/SM
+pentathlete/MS
+pentathlon/MS
+penthouse/SM
+penuche/M
+penultimate/SM
+penumbra/MS
+penumbrae
+penurious/PY
+penuriousness/M
+penury/M
+peon/MS
+peonage/M
+peony/SM
+people/MGDS
+pep/SM
+pepped
+pepper/GMDS
+peppercorn/SM
+peppermint/SM
+pepperoni/MS
+peppery
+peppiness/M
+pepping
+peppy/TPR
+pepsin/M
+peptic/MS
+peptide/S
+peradventure/M
+perambulate/XGNDS
+perambulation/M
+perambulator/MS
+percale/MS
+perceive/BGDS
+perceived/U
+percent/MS
+percentage/SM
+percentile/SM
+perceptible
+perceptibly
+perception/SM
+perceptional
+perceptive/PY
+perceptiveness/M
+perceptual/Y
+perch/GMDS
+perchance
+percipience/M
+percipient
+percolate/GNDS
+percolation/M
+percolator/SM
+percussion/AM
+percussionist/MS
+percussive
+perdition/M
+perdurable
+peregrinate/DSXGN
+peregrination/M
+peregrine/MS
+peremptorily
+peremptory
+perennial/SMY
+perestroika/M
+perfect/PTGMDRYS
+perfecta/MS
+perfectibility/M
+perfectible
+perfection/SM
+perfectionism/M
+perfectionist/SM
+perfectness/M
+perfidious/Y
+perfidy/SM
+perforate/GNXDS
+perforation/M
+perforce
+perform/SDRZG
+performance/SM
+performative
+performed/U
+performer/M
+perfume/DRSMZG
+perfumer/M
+perfumery/SM
+perfunctorily
+perfunctory
+perfusion
+pergola/SM
+perhaps
+pericardia
+pericardial
+pericarditis
+pericardium/M
+perigee/SM
+perihelia
+perihelion/M
+peril/SGMD
+perilous/Y
+perimeter/SM
+perinatal
+perinea
+perineum/M
+period/MS
+periodic
+periodical/SMY
+periodicity/M
+periodontal
+periodontics/M
+periodontist/SM
+peripatetic/MS
+peripheral/MYS
+periphery/SM
+periphrases
+periphrasis/M
+periphrastic
+periscope/SM
+perish/BDRSZG
+perishable/MS
+peristalses
+peristalsis/M
+peristaltic
+peristyle/SM
+peritoneal
+peritoneum/MS
+peritonitis/M
+periwig/SM
+periwinkle/SM
+perjure/DRSZG
+perjurer/M
+perjury/SM
+perk/MDSG
+perkily
+perkiness/M
+perky/TPR
+perm/MDSG
+permafrost/M
+permanence/M
+permanency/M
+permanent/SMY
+permeability/M
+permeable
+permeate/GNDS
+permeation/M
+permissible
+permissibly
+permission/MS
+permissive/PY
+permissiveness/M
+permit/MS
+permitted
+permitting
+permutation/SM
+permute/DSG
+pernicious/YP
+perniciousness/M
+peroration/MS
+peroxide/MGDS
+perpendicular/SMY
+perpendicularity/M
+perpetrate/DSGN
+perpetration/M
+perpetrator/MS
+perpetual/SMY
+perpetuate/DSGN
+perpetuation/M
+perpetuity/M
+perplex/GDS
+perplexed/Y
+perplexity/SM
+perquisite/SM
+persecute/GNXDS
+persecution/M
+persecutor/SM
+perseverance/M
+persevere/DSG
+persiflage/M
+persimmon/SM
+persist/SGD
+persistence/M
+persistent/Y
+persnickety
+person/UMS
+persona/SM
+personable
+personae
+personage/MS
+personal/MYS
+personality/SM
+personalize/CDSG
+personalty/M
+personification/M
+personify/GDSNX
+personnel/M
+perspective/MS
+perspex
+perspicacious/Y
+perspicacity/M
+perspicuity/M
+perspicuous
+perspiration/M
+perspire/GDS
+persuade/BZGDRS
+persuaded/U
+persuader/M
+persuasion/SM
+persuasive/PY
+persuasiveness/M
+pert/RYPT
+pertain/GSD
+pertinacious/Y
+pertinacity/M
+pertinence/M
+pertinent/Y
+pertness/M
+perturb/DGS
+perturbation/SM
+perturbed/U
+pertussis/M
+peruke/MS
+perusal/MS
+peruse/GDS
+perv/S
+pervade/DSG
+pervasive/PY
+pervasiveness/M
+perverse/PXYN
+perverseness/M
+perversion/M
+perversity/M
+pervert/SGMD
+peseta/MS
+peskily
+peskiness/M
+pesky/TPR
+peso/MS
+pessary/S
+pessimal
+pessimism/M
+pessimist/SM
+pessimistic
+pessimistically
+pest/MRSZ
+pester/GD
+pesticide/MS
+pestiferous
+pestilence/SM
+pestilent
+pestilential
+pestle/MGDS
+pesto/M
+pet/SZMR
+petabyte/MS
+petal/SMD
+petard/MS
+petcock/SM
+peter/GMD
+petiole/SM
+petite/MS
+petition/ZGMDRS
+petitioner/M
+petrel/MS
+petrifaction/M
+petrify/DSG
+petrochemical/SM
+petrodollar/MS
+petrol/M
+petrolatum/M
+petroleum/M
+petrologist/SM
+petrology/M
+petted
+petticoat/MS
+pettifog/S
+pettifogged
+pettifogger/SM
+pettifoggery/M
+pettifogging
+pettily
+pettiness/M
+petting/M
+pettish/Y
+petty/PTR
+petulance/M
+petulant/Y
+petunia/MS
+pew/SM
+pewee/SM
+pewit/SM
+pewter/MS
+peyote/M
+pf
+pfennig/MS
+pg
+phaeton/MS
+phage/S
+phagocyte/SM
+phalanger/SM
+phalanges
+phalanx/MS
+phalli
+phallic
+phallocentric
+phallocentrism
+phallus/M
+phantasm/MS
+phantasmagoria/MS
+phantasmagorical
+phantasmal
+phantom/SM
+pharaoh/M
+pharaohs
+pharisaic
+pharisee/SM
+pharmaceutic/MS
+pharmaceutical/SM
+pharmaceutics/M
+pharmacist/MS
+pharmacologic
+pharmacological
+pharmacologist/SM
+pharmacology/M
+pharmacopoeia/MS
+pharmacy/SM
+pharyngeal
+pharynges
+pharyngitis/M
+pharynx/M
+phase/DSMG
+phaseout/SM
+phat
+pheasant/MS
+phenacetin/M
+phenobarbital/M
+phenol/M
+phenom/MS
+phenomena
+phenomenal/Y
+phenomenological
+phenomenology
+phenomenon/MS
+phenotype
+pheromone/MS
+phew
+phi/SM
+phial/SM
+philander/ZGDRS
+philanderer/M
+philandering/M
+philanthropic
+philanthropically
+philanthropist/MS
+philanthropy/SM
+philatelic
+philatelist/MS
+philately/M
+philharmonic/SM
+philippic/MS
+philistine/MS
+philistinism/M
+philodendron/SM
+philological
+philologist/MS
+philology/M
+philosopher/MS
+philosophic
+philosophical/Y
+philosophize/DRSZG
+philosophizer/M
+philosophy/SM
+philter/MS
+phish/ZGDR
+phisher/M
+phlebitis/M
+phlegm/M
+phlegmatic
+phlegmatically
+phloem/M
+phlox/M
+phobia/MS
+phobic/MS
+phoebe/MS
+phoenix/MS
+phone/DSMG
+phonecard/S
+phoneme/MS
+phonemic
+phonemically
+phonetic/S
+phonetically
+phonetician/SM
+phonetics/M
+phoneyed
+phoneying
+phonic/S
+phonically
+phonics/M
+phoniness/M
+phonograph/M
+phonographic
+phonographs
+phonological/Y
+phonologist/MS
+phonology/M
+phony/PTGDRSM
+phooey
+phosphate/MS
+phosphodiesterase
+phosphor/MS
+phosphorescence/M
+phosphorescent/Y
+phosphoric
+phosphorous
+phosphorus/M
+phosphorylation
+photo/SGMD
+photocell/MS
+photocopier/M
+photocopy/DRSMZG
+photoelectric
+photoelectrically
+photoengrave/DRSJZG
+photoengraver/M
+photoengraving/M
+photofinishing/M
+photogenic
+photogenically
+photograph/MDRZG
+photographer/M
+photographic
+photographically
+photographs/A
+photography/M
+photojournalism/M
+photojournalist/SM
+photometer/MS
+photon/MS
+photosensitive
+photostat/SM
+photostatic
+photostatted
+photostatting
+photosynthesis/M
+photosynthesize/GDS
+photosynthetic
+phototropic
+phototropism
+phototypesetter
+phototypesetting
+phrasal
+phrase's
+phrase/AGDS
+phrasebook/S
+phraseology/M
+phrasing/MS
+phreaking
+phrenologist/SM
+phrenology/M
+phyla
+phylactery/SM
+phylogeny/M
+phylum/M
+phys
+physic/SM
+physical/MYS
+physicality
+physician/SM
+physicist/SM
+physicked
+physicking
+physics/M
+physio/S
+physiognomy/SM
+physiography/M
+physiologic
+physiological/Y
+physiologist/MS
+physiology/M
+physiotherapist/MS
+physiotherapy/M
+physique/MS
+pi/SMDRHZG
+pianissimo/SM
+pianist/MS
+piano/SM
+pianoforte/SM
+pianola/S
+piaster/MS
+piazza/MS
+pibroch/M
+pibrochs
+pic/SM
+pica/M
+picador/MS
+picante
+picaresque
+picayune
+piccalilli/M
+piccolo/MS
+pick/MDRSJZG
+pickax/GMDS
+picker/M
+pickerel/MS
+picket/ZGMDRS
+pickings/M
+pickle/MGDS
+pickpocket/SM
+pickup/MS
+picky/PTR
+picnic/MS
+picnicked
+picnicker/SM
+picnicking
+picot/SM
+pictograph/M
+pictographs
+pictorial/MYS
+picture/MGDS
+picturesque/PY
+picturesqueness/M
+piddle/MGDS
+piddly
+pidgin/MS
+pie/SM
+piebald/MS
+piece/DSMG
+piecemeal
+piecework/MRZ
+pieceworker/M
+piecrust/SM
+pieing
+pier/M
+pierce/JGDS
+piercing/MY
+piety/M
+piezoelectric
+piffle/MG
+pig/SML
+pigeon/MS
+pigeonhole/DSMG
+pigged
+piggery/S
+pigging
+piggish/PY
+piggishness/M
+piggy/TRSM
+piggyback/MDSG
+pigheaded/PY
+pigheadedness/M
+piglet/MS
+pigment/MDS
+pigmentation/M
+pigpen/MS
+pigskin/MS
+pigsty/SM
+pigswill
+pigtail/MS
+pike/MZGDRS
+piker/M
+pikestaff/SM
+pilaf/SM
+pilaster/MS
+pilchard/MS
+pile/MGDSJ
+pileup/MS
+pilfer/ZGDRS
+pilferage/M
+pilferer/M
+pilgrim/MS
+pilgrimage/MS
+piling/M
+pill/MDSG
+pillage/MZGDRS
+pillager/M
+pillar/MDS
+pillbox/MS
+pillion/MS
+pillock/S
+pillory/GDSM
+pillow/GMDS
+pillowcase/MS
+pillowslip/MS
+pilot/DGSM
+pilothouse/SM
+pimento/MS
+pimiento/MS
+pimp/GMDYS
+pimpernel/MS
+pimple/DSM
+pimply/RT
+pin/SM
+pinafore/MS
+pinata/MS
+pinball/M
+pincer/MS
+pinch/GMDS
+pincushion/MS
+pine's
+pine/AGDS
+pineapple/MS
+pinewood/S
+piney
+pinfeather/SM
+ping/GMD
+pinhead/SM
+pinhole/SM
+pinier
+piniest
+pinion/SMDG
+pink/TGPMDRS
+pinkeye/M
+pinkie/SM
+pinkish
+pinkness/M
+pinko/MS
+pinnacle/SM
+pinnate
+pinned/U
+pinning/U
+pinny/S
+pinochle/M
+pinon/MS
+pinpoint/SGMD
+pinprick/MS
+pinsetter/SM
+pinstripe/DSM
+pint/MS
+pinto/MS
+pinup/MS
+pinwheel/GSMD
+pinyin/M
+pinyon/SM
+pioneer/SGMD
+pious/YP
+piousness/M
+pip/SZGMDR
+pipe/MS
+pipeline/SM
+piper/M
+pipette/SM
+pipework
+piping/M
+pipit/MS
+pipped
+pippin/SM
+pipping
+pipsqueak/SM
+piquancy/M
+piquant/Y
+pique/MGDS
+piracy/M
+piranha/SM
+pirate/DSMG
+piratical/Y
+pirogi/M
+piroshki/M
+pirouette/DSMG
+piscatorial
+pismire/SM
+piss/ZGMDRS
+pissoir/S
+pistachio/SM
+piste/S
+pistil/SM
+pistillate
+pistol/SM
+piston/SM
+pit/SM
+pita/MS
+pitapat/SM
+pitch/MDRSZG
+pitchblende/M
+pitcher/M
+pitchfork/MDSG
+pitchman/M
+pitchmen
+piteous/YP
+piteousness/M
+pitfall/SM
+pith/M
+pithead/S
+pithily
+pithiness/M
+pithy/RTP
+pitiable
+pitiably
+pitiful/Y
+pitiless/PY
+pitilessness/M
+piton/MS
+pitta/S
+pittance/MS
+pitted
+pitting
+pituitary/SM
+pity/GDSM
+pitying/Y
+pivot/MDGS
+pivotal
+pix/M
+pixel/MS
+pixie/MS
+pizza/MS
+pizzazz/M
+pizzeria/SM
+pizzicati
+pizzicato/M
+pj's
+pk
+pkg
+pkt
+pkwy
+pl
+placard/SMDG
+placate/DSGN
+placation/M
+placatory
+place's
+place/AESDLG
+placebo/SM
+placed/U
+placeholder/MS
+placekick/MDRZGS
+placekicker/M
+placement/EASM
+placenta/SM
+placental/S
+placer/SM
+placid/Y
+placidity/M
+placings
+placket/SM
+plagiarism/SM
+plagiarist/SM
+plagiarize/DRSZG
+plagiarizer/M
+plagiary/M
+plague/DSMG
+plaice
+plaid/MS
+plain/MRYTSP
+plainchant
+plainclothes
+plainclothesman/M
+plainclothesmen
+plainness/M
+plainsman/M
+plainsmen
+plainsong/M
+plainspoken
+plaint/SMV
+plaintiff/SM
+plaintive/Y
+plait/MDGS
+plan/ZMRS
+planar
+plane's
+plane/CGDS
+planeload/MS
+planer/M
+planet/SM
+planetarium/SM
+planetary
+plangency/M
+plangent
+plank/MDGS
+planking/M
+plankton/M
+planned/U
+planner/SM
+planning/S
+plant/MDRZGSJ
+plantain/SM
+plantar
+plantation/MS
+planter/M
+planting/M
+plantlike
+plaque/SM
+plash/MDSG
+plasma/M
+plaster/SZGMDR
+plasterboard/M
+plasterer/M
+plastic/SM
+plasticity/M
+plasticize/DSG
+plastique
+plat/XGMDNS
+plate/MS
+plateau/SMDG
+plateful/SM
+platelet/SM
+platen/M
+platform/SGMD
+plating/M
+platinum/M
+platitude/SM
+platitudinous
+platonic
+platoon/SGMD
+platted
+platter/SM
+platting
+platy/M
+platypus/MS
+platys
+plaudit/SM
+plausibility/M
+plausible
+plausibly
+play/AEGMDS
+playable/EU
+playact/SGD
+playacting/M
+playback/MS
+playbill/MS
+playbook/MS
+playboy/SM
+player/SM
+playfellow/SM
+playful/PY
+playfulness/M
+playgirl/MS
+playgoer/MS
+playground/SM
+playgroup/S
+playhouse/MS
+playlist/MS
+playmate/MS
+playoff/SM
+playpen/SM
+playroom/SM
+playschool/S
+plaything/SM
+playtime/M
+playwright/SM
+plaza/MS
+plea/MS
+plead/DRZGSJ
+pleader/M
+pleading/MY
+pleasant/UTYP
+pleasanter
+pleasantness/UM
+pleasantry/SM
+please/EDSG
+pleasing/YS
+pleasurably
+pleasure/MGDSB
+pleasureful
+pleat/MDGS
+pleb/S
+plebby
+plebe/MS
+plebeian/MS
+plebiscite/MS
+plectra
+plectrum/MS
+pledge/DSMG
+plenary/SM
+plenipotentiary/SM
+plenitude/SM
+plenteous
+plentiful/Y
+plenty/M
+plenum/S
+pleonasm/MS
+plethora/M
+pleura/M
+pleurae
+pleurisy/M
+plexus/MS
+pliability/M
+pliable
+pliancy/M
+pliant/Y
+pliers/M
+plight/SMDG
+plimsoll/S
+plinth/M
+plinths
+plod/S
+plodded
+plodder/MS
+plodding/S
+plonk/DRSZG
+plop/MS
+plopped
+plopping
+plosive/S
+plot/MS
+plotted
+plotter/SM
+plotting
+plover/SM
+plow/GMDS
+plowman/M
+plowmen
+plowshare/MS
+ploy's
+ploy/S
+pluck/MDSG
+pluckily
+pluckiness/M
+plucky/RPT
+plug's
+plug/US
+plugged/U
+plugging/U
+plughole/S
+plugin/SM
+plum/GMDS
+plumage/M
+plumb/MDRSZGJ
+plumbed/U
+plumber/M
+plumbing/M
+plume/MS
+plummet/SGMD
+plummy
+plump/MDRYSTGP
+plumpness/M
+plumy/RT
+plunder/SZGMDR
+plunderer/M
+plunge/DRSMZG
+plunger/M
+plunk/MDSG
+pluperfect/SM
+plural/SM
+pluralism/M
+pluralist/MS
+pluralistic
+plurality/SM
+pluralization/M
+pluralize/GDS
+plus/MS
+plush/MRYTP
+plushness/M
+plushy/RT
+plutocracy/SM
+plutocrat/SM
+plutocratic
+plutonium/M
+pluvial
+ply/AGDSM
+plywood/M
+pm
+pneumatic
+pneumatically
+pneumococcal
+pneumococci
+pneumococcus
+pneumonia/M
+poach/DRSZG
+poacher/M
+poaching/M
+pock/GMDS
+pocket/SMDG
+pocketbook/SM
+pocketful/SM
+pocketknife/M
+pocketknives
+pockmark/MDGS
+pod/SM
+podcast/SMG
+podded
+podding
+podiatrist/SM
+podiatry/M
+podium/SM
+poem/MS
+poesy/M
+poet/MS
+poetaster/MS
+poetess/MS
+poetic/S
+poetical/Y
+poetry/M
+pogrom/SM
+poi/M
+poignancy/M
+poignant/Y
+poinciana/SM
+poinsettia/SM
+point/MDRSZG
+pointblank
+pointed/Y
+pointer/M
+pointillism/M
+pointillist/SM
+pointless/PY
+pointlessness/M
+pointy/TR
+poise/MGDS
+poison/SJZGMDR
+poisoner/M
+poisoning/M
+poisonous/Y
+poke/MZGDRS
+poker/M
+pokey/MS
+poky/TR
+pol/SGMD
+polar
+polarity/SM
+polarization/CM
+polarize/CDSG
+pole/MS
+poleaxe/GDS
+polecat/MS
+polemic/MS
+polemical/Y
+polemicist/SM
+polemics/M
+polestar/SM
+police/DSMG
+policeman/M
+policemen
+policewoman/M
+policewomen
+policy/SM
+policyholder/MS
+policymaker/S
+polio/MS
+poliomyelitis/M
+polish/ZGMDRS
+polished/U
+polisher/M
+politburo/MS
+polite/RYTP
+politeness/M
+politesse/M
+politic/S
+political/Y
+politician/SM
+politicization/M
+politicize/CDSG
+politicking/M
+politico/SM
+politics/M
+polity/SM
+polka/MDSG
+poll/GMDNS
+pollack/MS
+pollard/S
+pollen/M
+pollinate/GNDS
+pollination/M
+pollinator/SM
+polling/M
+polliwog/SM
+pollster/SM
+pollutant/MS
+pollute/ZGNDRS
+polluted/U
+polluter/M
+pollution/M
+polo/M
+polonaise/SM
+polonium/M
+poltergeist/MS
+poltroon/SM
+poly
+polyacrylamide
+polyamory/S
+polyandrous
+polyandry/M
+polyclinic/SM
+polyester/MS
+polyethylene/M
+polygamist/MS
+polygamous
+polygamy/M
+polyglot/SM
+polygon/SM
+polygonal
+polygraph/GMD
+polygraphs
+polyhedral
+polyhedron/SM
+polymath/M
+polymaths
+polymer/SM
+polymeric
+polymerization/M
+polymerize/GDS
+polymorphic
+polymorphous
+polynomial/MS
+polyp/MS
+polyphonic
+polyphony/M
+polypropylene/M
+polys
+polysemous
+polystyrene/M
+polysyllabic
+polysyllable/MS
+polytechnic/MS
+polytheism/M
+polytheist/SM
+polytheistic
+polythene
+polyunsaturate/DS
+polyurethane/MS
+polyvinyl
+pom/S
+pomade/DSMG
+pomander/SM
+pomegranate/MS
+pommel/SGMD
+pommy/S
+pomp/M
+pompadour/SMD
+pompano/MS
+pompom/SM
+pomposity/M
+pompous/YP
+pompousness/M
+ponce/GDS
+poncho/SM
+poncy
+pond/MS
+ponder/SZGDR
+ponderer/M
+ponderous/YP
+ponderousness/M
+pone/MS
+pong/GDS
+pongee/M
+poniard/MS
+pontiff/SM
+pontifical/Y
+pontificate/DSMG
+pontoon/SM
+pony/GDSM
+ponytail/MS
+poo/SGD
+pooch/MDSG
+poodle/SM
+poof/MS
+poofter/S
+pooh/GMD
+poohs
+pool/GMDS
+poolroom/MS
+poolside/S
+poop/GMDS
+poor/TRYP
+poorboy/M
+poorhouse/SM
+poorness/M
+pop/SM
+popcorn/M
+pope/MS
+popgun/SM
+popinjay/MS
+poplar/SM
+poplin/M
+popover/SM
+poppa/MS
+poppadom/S
+popped
+popper/SM
+poppet/S
+popping
+poppy/SM
+poppycock/M
+populace/MS
+popular/Y
+popularity/UM
+popularization/M
+popularize/DSG
+populate/ACGDS
+population/CM
+populations
+populism/M
+populist/MS
+populous/P
+populousness/M
+popup/MS
+porcelain/SM
+porch/MS
+porcine
+porcupine/SM
+pore/MGDS
+porgy/SM
+pork/ZMR
+porker/M
+porky/RSMT
+porn/M
+porno/M
+pornographer/MS
+pornographic
+pornographically
+pornography/M
+porosity/M
+porous/P
+porousness/M
+porphyritic
+porphyry/M
+porpoise/MGDS
+porridge/M
+porringer/SM
+port's/A
+port/CAEGDS
+portability/M
+portable/MS
+portage/DSMG
+portal/SM
+portcullis/MS
+portend/SGD
+portent/SM
+portentous/YP
+porter/ASM
+porterhouse/SM
+portfolio/MS
+porthole/MS
+portico/M
+porticoes
+portiere/MS
+portion/KSGMD
+portliness/M
+portly/RPT
+portmanteau/MS
+portrait/MS
+portraitist/SM
+portraiture/M
+portray/SGD
+portrayal/MS
+portulaca/M
+pose's/A
+pose/CAKEGDS
+poser/EKSM
+poseur/SM
+posh/TR
+posit/DSGV
+position/CKEMS
+positional/K
+positioned/K
+positioning/K
+positive/MYPS
+positiveness/M
+positivism
+positivist/S
+positron/MS
+poss
+posse/MS
+possess/AEVGSD
+possession/ASM
+possessive/SMYP
+possessiveness/M
+possessor/SM
+possibility/SM
+possible/SM
+possibly
+possum/SM
+post/ZGMDRSJ
+postage/M
+postal
+postbag/S
+postbox/S
+postcard/SM
+postcode/S
+postcolonial
+postconsonantal
+postdate/DSG
+postdoc/MS
+postdoctoral
+poster/M
+posterior/SM
+posterity/M
+postgraduate/SM
+posthaste
+posthumous/Y
+posthypnotic
+postie/S
+postilion/SM
+postindustrial
+posting/M
+postlude/SM
+postman/M
+postmark/SMDG
+postmaster/MS
+postmen
+postmenopausal
+postmeridian
+postmistress/MS
+postmodern
+postmodernism/M
+postmodernist/MS
+postmortem/SM
+postnasal
+postnatal
+postoperative
+postpaid
+postpartum
+postpone/DSGL
+postponement/SM
+postprandial
+postscript/SM
+postseason/SM
+postsynaptic
+postulate/XDSMGN
+postulation/M
+postural
+posture/MGJDS
+posturing/M
+postwar
+postwoman
+postwomen
+posy/SM
+pot/CSM
+potability/M
+potable/SM
+potash/M
+potassium/M
+potato/M
+potatoes
+potbelly/DSM
+potboiler/SM
+potency/M
+potent/Y
+potentate/MS
+potential/MYS
+potentiality/SM
+potentiate/GDS
+potful/SM
+pothead/SM
+pother/SMDG
+potherb/SM
+potholder/MS
+pothole/DRSMZG
+pothook/SM
+potion/SM
+potluck/MS
+potpie/SM
+potpourri/SM
+potsherd/SM
+potshot/MS
+pottage/M
+potted
+potter/GSMD
+pottery/SM
+potting
+potty/PRSMT
+pouch/MDSG
+pouf/S
+pouffe/S
+poulterer/MS
+poultice/DSMG
+poultry/M
+pounce/DSMG
+pound's
+pound/KDSG
+poundage/M
+pounding/SM
+pour/GDSJ
+pout/ZGMDRS
+pouter/M
+poverty/M
+pow
+powder/GSMD
+powdery
+power/MDSG
+powerboat/MS
+powerful/Y
+powerhouse/SM
+powerless/PY
+powerlessness/M
+powwow/SGMD
+pox/MS
+pp
+ppm
+ppr
+pr
+practicability/M
+practicably
+practical/SMY
+practicality/SM
+practice/DSMGB
+practiced/U
+practicum/SM
+practitioner/SM
+praetor/SM
+praetorian
+pragmatic/MS
+pragmatical/Y
+pragmatism/M
+pragmatist/MS
+prairie/SM
+praise/EDSMG
+praiseworthiness/M
+praiseworthy/P
+praline/SM
+pram/MS
+prance/DRSMZG
+prancer/M
+prancing/Y
+prang/DSG
+prank/MS
+prankster/SM
+praseodymium/M
+prat/S
+prate/MZGDRS
+prater/M
+pratfall/SM
+prattle/DRSMZG
+prattler/M
+prawn/MDSG
+pray/ZGDRS
+prayer/M
+prayerful/Y
+preach/DRSZGL
+preacher/M
+preachment/M
+preachy/RT
+preadolescence/SM
+preamble/MGDS
+prearrange/LGDS
+prearrangement/M
+preassigned
+precancel/SMDG
+precancerous
+precarious/PY
+precariousness/M
+precast
+precaution/MS
+precautionary
+precede/DSG
+precedence/M
+precedent/SM
+precept/SM
+preceptor/SM
+precinct/MS
+preciosity/M
+precious/YP
+preciousness/M
+precipice/SM
+precipitant/MS
+precipitate/XMYGNDS
+precipitation/M
+precipitous/Y
+precis/M
+precise/DRSYTGNP
+preciseness/M
+precision/M
+preclude/GDS
+preclusion/M
+precocious/YP
+precociousness/M
+precocity/M
+precognition/M
+precognitive
+precolonial
+preconceive/GDS
+preconception/SM
+precondition/MDGS
+precook/GSD
+precursor/SM
+precursory
+predate/DSG
+predator/MS
+predatory
+predawn
+predecease/GDS
+predecessor/SM
+predefined
+predesignate/GDS
+predestination/M
+predestine/DSG
+predetermination/M
+predetermine/ZGDRS
+predeterminer/M
+predicable
+predicament/MS
+predicate/MGNVDS
+predication/M
+predicative/Y
+predict/BGVSD
+predictability/UM
+predictable/U
+predictably/U
+prediction/SM
+predictor/MS
+predigest/GDS
+predilection/SM
+predispose/GDS
+predisposition/MS
+predominance/M
+predominant/Y
+predominate/YGDS
+preemie/SM
+preeminence/M
+preeminent/Y
+preempt/GVSD
+preemption/M
+preemptive/Y
+preen/DSG
+preexist/DGS
+preexistence/M
+pref
+prefab/SM
+prefabbed
+prefabbing
+prefabricate/DSGN
+prefabrication/M
+preface/DSMG
+prefatory
+prefect/SM
+prefecture/MS
+prefer/SBL
+preferably
+preference/MS
+preferential/Y
+preferment/M
+preferred
+preferring
+prefigure/GDS
+prefix/MDSG
+preform/GSD
+prefrontal
+pregame/SM
+pregnancy/SM
+pregnant
+preheat/GSD
+prehensile
+prehistorian/S
+prehistoric
+prehistorical/Y
+prehistory/M
+prehuman
+prejudge/GDS
+prejudgment/SM
+prejudice/MGDS
+prejudiced/U
+prejudicial
+prekindergarten/SM
+prelacy/M
+prelate/SM
+prelim/SM
+preliminary/SM
+preliterate
+prelude/MS
+premarital
+premature/Y
+premed/SM
+premedical
+premeditate/DSGN
+premeditated/U
+premeditation/M
+premenstrual
+premier/SGMD
+premiere/MS
+premiership/MS
+premise/DSMG
+premium/SM
+premix/GDS
+premolar/SM
+premonition/MS
+premonitory
+prenatal/Y
+prenup/SM
+prenuptial
+preoccupation/SM
+preoccupy/DSG
+preoperative
+preordain/GDS
+prep/MS
+prepackage/DSG
+prepacked
+prepaid
+preparation/SM
+preparatory
+prepare/GDS
+prepared/UP
+preparedness/UM
+prepay/GSL
+prepayment/MS
+preponderance/SM
+preponderant/Y
+preponderate/GDS
+preposition/SM
+prepositional/Y
+prepossess/GDS
+prepossessing/U
+prepossession/SM
+preposterous/Y
+prepped
+prepping
+preppy/TRSM
+prepubescence/M
+prepubescent/SM
+prepuce/MS
+prequel/MS
+prerecord/GSD
+preregister/SGD
+preregistration/M
+prerequisite/MS
+prerogative/SM
+pres
+presage/MGDS
+presbyopia/M
+presbyter/SM
+presbytery/SM
+preschool/SZMR
+preschooler/M
+prescience/M
+prescient/Y
+prescribe/DSG
+prescript/SVM
+prescription/SM
+prescriptive/Y
+preseason/SM
+presence/SM
+present/LMDRYZGSB
+presentably
+presentation/ASM
+presenter/M
+presentiment/SM
+presentment/SM
+preservation/M
+preservationist/SM
+preservative/SM
+preserve/BDRSMZG
+preserver/M
+preset/S
+presetting
+preshrank
+preshrink/GS
+preshrunk
+preside/GDS
+presidency/SM
+president/MS
+presidential
+presidium/M
+presort/DGS
+press's
+press/ACGSD
+pressed/U
+presser/MS
+pressie/S
+pressing/SMY
+pressman/M
+pressmen
+pressure/DSMG
+pressurization/M
+pressurize/CGDS
+pressurizer/SM
+prestidigitation/M
+prestige/M
+prestigious
+presto/SM
+presumably
+presume/GDSB
+presumption/SM
+presumptive
+presumptuous/YP
+presumptuousness/M
+presuppose/DSG
+presupposition/MS
+pretax
+preteen/MS
+pretend/DRZGS
+pretender/M
+pretense/SXMN
+pretension/M
+pretentious/UY
+pretentiousness/M
+preterit/SM
+preterm
+preternatural/Y
+pretest/DGS
+pretext/MS
+pretrial/S
+prettify/GDS
+prettily
+prettiness/M
+pretty/TGDRSMP
+pretzel/MS
+prevail/DGS
+prevalence/M
+prevalent
+prevaricate/DSGNX
+prevarication/M
+prevaricator/SM
+prevent/DBSGV
+preventable/U
+preventative/MS
+prevention/M
+preventive/SM
+preview/MDRSZG
+previous/Y
+prevision/MS
+prewar
+prey/GMDS
+prezzie/S
+priapic
+price's
+price/AGDS
+priceless
+pricey
+pricier
+priciest
+prick/MDRYSZG
+pricker/M
+prickle/MGDS
+prickliness/M
+prickly/PRT
+pride/MGDS
+prideful/Y
+prier/M
+priest/SMY
+priestess/MS
+priesthood/SM
+priestliness/M
+priestly/RTP
+prig/MS
+priggish/P
+priggishness/M
+prim/ZGDRYP
+primacy/M
+primal
+primarily
+primary/SM
+primate/MS
+prime/MS
+primer/M
+primeval
+priming/M
+primitive/SPMY
+primitiveness/M
+primmer
+primmest
+primness/M
+primogenitor/SM
+primogeniture/M
+primordial/Y
+primp/DSG
+primrose/SM
+primula/S
+prince/SMY
+princedom/SM
+princeliness/M
+princely/PRT
+princess/MS
+principal/SMY
+principality/SM
+principle/DSM
+principled/U
+print/AMDSG
+printable/U
+printer/MS
+printing/SM
+printmaking
+printout/SM
+prion/S
+prior/MS
+prioress/MS
+prioritization
+prioritize/DSG
+priority/SM
+priory/SM
+prism/MS
+prismatic
+prison/SZMR
+prisoner/M
+prissily
+prissiness/M
+prissy/PTR
+pristine
+prithee
+privacy/M
+private/XMYTNRS
+privateer/SM
+privation/CSM
+privatization/SM
+privatize/DSG
+privet/SM
+privilege/DSMG
+privileged/U
+privily
+privy/RSMT
+prize/MGDS
+prized/A
+prizefight/ZGSMR
+prizefighter/M
+prizefighting/M
+prizewinner/MS
+prizewinning
+pro/SM
+probabilistic
+probability/SM
+probable/SM
+probably
+probate/MN
+probation/ZMR
+probational
+probationary
+probationer/M
+probe/MGDSBJ
+probity/M
+problem/MS
+problematic
+problematical/Y
+probosces
+proboscis/MS
+procaine/M
+procedural
+procedure/SM
+proceed/GJDS
+proceeding/M
+proceeds/M
+process's
+process/AGDS
+processed/U
+procession/GD
+processional/MS
+processor/SM
+proclamation/MS
+proclivity/SM
+procrastinate/DSGN
+procrastination/M
+procrastinator/MS
+procreate/V
+proctor/GMDS
+procurement/M
+prod/MS
+prodigal/MYS
+prodigality/M
+prodigious/Y
+prodigy/SM
+produce's
+produce/AZGDRS
+producer/AM
+producible/A
+production/ASM
+productive/UY
+productiveness/M
+productivity/M
+prof/MS
+profanation/MS
+profane/PYGDS
+profaneness/M
+profanity/SM
+professed/Y
+profession/SM
+professional/MYS
+professionalism/M
+professionalization
+professionalize/DSG
+professor/SM
+professorial/Y
+professorship/SM
+proffer/GMDS
+proficiency/M
+proficient/MYS
+profit/BGD
+profitability/M
+profitable/U
+profitably/U
+profiteer/MDGS
+profiteering/M
+profiterole/SM
+profitless
+profligacy/M
+profligate/SMY
+proforma
+profound/RYTP
+profoundness/M
+profundity/SM
+profuse/PY
+profuseness/M
+progenitor/SM
+progeny/M
+progesterone/M
+progestin/S
+prognathous
+prognoses
+prognosis/M
+prognostic/MS
+prognosticate/XGNDS
+prognostication/M
+prognosticator/MS
+program/CAS
+programmable/MS
+programmatic
+programmed/AC
+programmer/MS
+programming/SM
+progress/MDSGV
+progression/MS
+progressive/PMYS
+progressiveness/M
+prohibit/DGVS
+prohibition/SM
+prohibitionist/MS
+prohibitive/Y
+prohibitory
+project/GMDS
+projectile/SM
+projection/SM
+projectionist/SM
+projector/MS
+prokaryotic
+prole/S
+proletarian/MS
+proletariat/M
+proliferate/DSGN
+proliferation/M
+prolific
+prolifically
+prolix/Y
+prolixity/M
+prologue/SM
+prolongation/SM
+prom/M
+promenade/MGDS
+promethium/M
+prominence/M
+prominent/Y
+promiscuity/M
+promiscuous/Y
+promise/DSMG
+promising/Y
+promissory
+promo/M
+promontory/SM
+promote/DRZG
+promoter/M
+promotional
+prompt/JPSMDRYZTG
+prompted/U
+prompter/M
+prompting/M
+promptitude/M
+promptness/M
+promulgate/GNDS
+promulgation/M
+promulgator/MS
+prone/P
+proneness/M
+prong/MDS
+pronghorn/MS
+pronominal/M
+pronounce/DSLG
+pronounceable/U
+pronouncement/SM
+pronto
+pronunciation/MS
+proof/ADGSM
+proofread/SRZG
+proofreader/M
+prop/MS
+propaganda/M
+propagandist/MS
+propagandize/GDS
+propagate/DSGN
+propagation/M
+propagator/SM
+propel/S
+propellant/MS
+propelled
+propeller/SM
+propelling
+propensity/SM
+proper/MRYT
+property/DSM
+prophecy/SM
+prophesier/M
+prophesy/DRSMZG
+prophet/SM
+prophetess/MS
+prophetic
+prophetical/Y
+prophylactic/SM
+prophylaxes
+prophylaxis/M
+propinquity/M
+propitiate/DSGN
+propitiation/M
+propitiatory
+propitious/Y
+proponent/SM
+proportion/ESM
+proportional/YS
+proportionality
+proportionate/EY
+proposal/MS
+propped
+propping
+proprietary/SM
+proprieties/M
+proprietor/SM
+proprietorial/Y
+proprietorship/M
+proprietress/MS
+propriety/SM
+propulsion/M
+propulsive
+prorate/DSG
+prorogation/M
+prorogue/GD
+prosaic
+prosaically
+proscenium/SM
+prosciutto/M
+proscribe/DG
+proscription/MS
+prose/M
+prosecute/DSXGN
+prosecution/M
+prosecutor/MS
+proselyte/DSMG
+proselytism/M
+proselytize/DRSZG
+proselytizer/M
+prosody/SM
+prospect/MDGVS
+prospective/Y
+prospector/SM
+prospectus/MS
+prosper/GSD
+prosperity/M
+prosperous/Y
+prostate/MS
+prostheses
+prosthesis/M
+prosthetic
+prostitute/MGNDS
+prostitution/M
+prostrate/GNXDS
+prostration/M
+prosy/RT
+protactinium/M
+protagonist/SM
+protean
+protect/GVSD
+protected/U
+protection/SM
+protectionism/M
+protectionist/MS
+protective/PY
+protectiveness/M
+protector/MS
+protectorate/MS
+protege/SM
+protegee/S
+protein/SM
+protestant/S
+protestation/MS
+protocol/MS
+proton/SM
+protoplasm/M
+protoplasmic
+prototype/MGS
+prototypical
+protozoa
+protozoan/MS
+protozoic
+protract/GD
+protrude/GDS
+protrusile
+protrusion/MS
+protuberance/MS
+protuberant
+proud/RYT
+prov/NB
+provability/M
+provably
+prove/EAGDS
+proved/U
+proven/U
+provenance/SM
+provender/M
+provenience/M
+proverbial/Y
+provide/DRSZG
+provided/U
+providence/M
+provident/Y
+providential/Y
+provider/M
+province/MS
+provincial/SMY
+provincialism/M
+provisional/Y
+proviso/SM
+provocateur/S
+provocative/PY
+provocativeness/M
+provoke/DRSZG
+provoked/U
+provoker/M
+provoking/Y
+provolone/M
+provost/SM
+prow/MS
+prowess/M
+prowl/MDRSZG
+prowler/M
+proximal
+proximate
+proximity/M
+proxy/SM
+prude/MS
+prudence/M
+prudent/Y
+prudential/Y
+prudery/M
+prudish/YP
+prudishness/M
+prune/MZGDRS
+pruner/M
+prurience/M
+prurient/Y
+pry/ZTGDRSM
+psalm/MS
+psalmist/SM
+psaltery/SM
+psephologist/S
+psephology
+pseud/S
+pseudo/S
+pseudonym/SM
+pseudonymous
+pseudoscience/MS
+pseudy
+pshaw/MS
+psi/SM
+psittacosis/M
+psoriasis/M
+psst
+psych/MDSG
+psyche/M
+psychedelia
+psychedelic/SM
+psychedelically
+psychiatric
+psychiatrist/SM
+psychiatry/M
+psychic/MS
+psychical/Y
+psycho/SM
+psychoactive
+psychoanalyses
+psychoanalysis/M
+psychoanalyst/SM
+psychoanalytic
+psychoanalytical/Y
+psychoanalyze/DSG
+psychobabble/M
+psychodrama/MS
+psychogenic
+psychokinesis
+psychokinetic
+psychological/Y
+psychologist/MS
+psychology/SM
+psychometric
+psychoneuroses
+psychoneurosis/M
+psychopath/M
+psychopathic
+psychopathology
+psychopaths
+psychopathy/M
+psychopharmacology
+psychos/S
+psychosis/M
+psychosomatic
+psychotherapist/MS
+psychotherapy/SM
+psychotic/SM
+psychotically
+psychotropic/MS
+psychs
+pt/C
+ptarmigan/MS
+pterodactyl/MS
+ptomaine/SM
+pub/SM
+pubertal
+puberty/M
+pubes/M
+pubescence/M
+pubescent
+pubic
+pubis/M
+public/AM
+publican/AMS
+publication/ASM
+publicist/MS
+publicity/M
+publicize/GDS
+publicly
+publish/AGDS
+publishable
+published/U
+publisher/MS
+publishing/M
+puce/M
+puck/ZMRS
+pucker/MDG
+puckish/YP
+puckishness/M
+pud/S
+pudding/SM
+puddle/DSMG
+puddling/M
+pudenda
+pudendum/M
+pudginess/M
+pudgy/PRT
+pueblo/SM
+puerile
+puerility/M
+puerperal
+puff/ZGMDRS
+puffball/SM
+puffer/M
+puffin/SM
+puffiness/M
+puffy/PRT
+pug/SM
+pugilism/M
+pugilist/SM
+pugilistic
+pugnacious/YP
+pugnaciousness/M
+pugnacity/M
+puke/MGDS
+pukka
+pulchritude/M
+pulchritudinous
+pule/GDS
+pull/ZGMDRS
+pullback/MS
+puller/M
+pullet/SM
+pulley/SM
+pullout/MS
+pullover/SM
+pulmonary
+pulp/GMDS
+pulpiness/M
+pulpit/SM
+pulpwood/M
+pulpy/RPT
+pulsar/SM
+pulsate/XGNDS
+pulsation/M
+pulse/AMGDS
+pulverization/M
+pulverize/DSG
+puma/MS
+pumice/SM
+pummel/SGD
+pump/ZGMDRS
+pumper/M
+pumpernickel/M
+pumpkin/MS
+pun/SM
+punch/MDRSZG
+punchbag/S
+puncheon/MS
+puncher/M
+punchline/S
+punchy/TR
+punctilio/M
+punctilious/PY
+punctiliousness/M
+punctual/Y
+punctuality/M
+punctuate/GNDS
+punctuation/M
+puncture/DSMG
+pundit/SM
+punditry/M
+pungency/M
+pungent/Y
+puniness/M
+punish/BLGDS
+punished/U
+punishing/Y
+punishment/MS
+punitive/Y
+punk/TMRS
+punned
+punnet/S
+punning
+punster/SM
+punt/ZGMDRS
+punter/M
+puny/TRP
+pup/SM
+pupa/M
+pupae
+pupal
+pupate/DSG
+pupil/MS
+pupped
+puppet/MS
+puppeteer/SM
+puppetry/M
+pupping
+puppy/SM
+purblind
+purchase/DRSMZGB
+purchaser/M
+purdah/M
+pure/PYTR
+purebred/SM
+puree/MDS
+pureeing
+pureness/M
+purgative/SM
+purgatorial
+purgatory/SM
+purge/MZGDRS
+purger/M
+purification/M
+purifier/M
+purify/NDRSZG
+purine/MS
+purism/M
+purist/MS
+puristic
+puritan/SM
+puritanical/Y
+puritanism/M
+purity/M
+purl/GMDS
+purlieu/SM
+purloin/SGD
+purple/MTRS
+purplish
+purport/SMDG
+purported/Y
+purpose/DSMYG
+purposeful/YP
+purposefulness/M
+purposeless/PY
+purr/GMDS
+purse/MZGDRS
+purser/M
+pursuance/M
+pursuant
+pursue/ZGDRS
+pursuer/M
+pursuit/SM
+purulence/M
+purulent
+purvey/DSG
+purveyance/M
+purveyor/SM
+purview/M
+pus/M
+push/ZGMDRS
+pushbike/S
+pushcart/SM
+pushchair/S
+pusher/M
+pushily
+pushiness/M
+pushover/MS
+pushpin/S
+pushy/TRP
+pusillanimity/M
+pusillanimous/Y
+puss/MS
+pussy/TRSM
+pussycat/MS
+pussyfoot/DSG
+pustular
+pustule/SM
+put/ISM
+putative
+putout/MS
+putrefaction/M
+putrefactive
+putrefy/GDS
+putrescence/M
+putrescent
+putrid
+putsch/MS
+putt/ZGMDRS
+putted/I
+puttee/MS
+putter/MDRZG
+putterer/M
+putting/I
+putty/GDSM
+putz/S
+puzzle/MZGDRSL
+puzzlement/M
+puzzler/M
+pvt
+pwn/SGD
+pyelonephritis
+pygmy/SM
+pylon/SM
+pylori
+pyloric
+pylorus/M
+pyorrhea/M
+pyramid/GSMD
+pyramidal
+pyre/MS
+pyrimidine/MS
+pyrite/SM
+pyrites/M
+pyromania/M
+pyromaniac/SM
+pyrotechnic/S
+pyrotechnical
+pyrotechnics/M
+pyruvate
+python/SM
+pyx/MS
+pzazz
+q
+qr
+qt/S
+qty
+qua
+quack/GMDS
+quackery/M
+quad/MS
+quadrangle/SM
+quadrangular
+quadrant/MS
+quadraphonic
+quadratic/MS
+quadrature
+quadrennial
+quadrennium/MS
+quadriceps/MS
+quadrilateral/SM
+quadrille/XMNS
+quadrillion/M
+quadriplegia/M
+quadriplegic/SM
+quadrivium/M
+quadruped/MS
+quadrupedal
+quadruple/MGDS
+quadruplet/MS
+quadruplicate/MGNDS
+quadruplication/M
+quaff/GMDS
+quagmire/SM
+quahog/MS
+quail/GMDS
+quaint/PRYT
+quaintness/M
+quake/MGDS
+quaky
+qualification/EM
+qualified/U
+qualifier/SM
+qualify/EGXNDS
+qualitative/Y
+quality/SM
+qualm/MS
+qualmish
+quandary/SM
+quango/S
+quanta
+quantifiable
+quantification/M
+quantifier/M
+quantify/NDRSZG
+quantitative/Y
+quantity/SM
+quantum/M
+quarantine/MGDS
+quark/MS
+quarrel/SZGMDR
+quarreler/M
+quarrelsome/P
+quarrelsomeness/M
+quarry/DSMG
+quart/MS
+quarter/SGMDY
+quarterback/GMDS
+quarterdeck/MS
+quarterfinal/SM
+quarterly/SM
+quartermaster/MS
+quarterstaff/M
+quarterstaves
+quartet/SM
+quarto/MS
+quartz/M
+quasar/MS
+quash/GDS
+quasi
+quatrain/MS
+quaver/MDSG
+quavery
+quay/MS
+quayside/S
+queasily
+queasiness/M
+queasy/TPR
+queen/GMDYS
+queenly/RT
+queer/PTGMDRYS
+queerness/M
+quell/GDS
+quench/ZGDRSB
+quenchable/U
+quencher/M
+quenchless
+querulous/YP
+querulousness/M
+query/DSMG
+ques
+quesadilla/MS
+quest/IFAMS
+quested
+questing
+question/SMDRZGBJ
+questionable/U
+questionably/U
+questioned/U
+questioner/M
+questioning/MY
+questionnaire/SM
+queue/MDSG
+quibble/DRSMZG
+quibbler/M
+quiche/SM
+quick/MNRYXTP
+quicken/DG
+quickfire
+quickie/SM
+quicklime/M
+quickness/M
+quicksand/MS
+quicksilver/M
+quickstep/MS
+quid/MS
+quiescence/M
+quiescent/Y
+quiet/SMDNRYXTGP
+quieten/DG
+quietism
+quietness/M
+quietude/IEM
+quietus/MS
+quiff/S
+quill/SM
+quilt/SMDRZG
+quilter/M
+quilting/M
+quin/S
+quince/SM
+quine/S
+quinine/M
+quinoa
+quinsy/M
+quint/SM
+quintessence/SM
+quintessential/Y
+quintet/SM
+quintuple/MGDS
+quintuplet/MS
+quip/MS
+quipped
+quipping
+quipster/SM
+quire's
+quire/IAS
+quirk/SMDG
+quirkiness/M
+quirky/RTP
+quirt/SM
+quisling/SM
+quit/S
+quitclaim/MS
+quite
+quittance/M
+quitter/SM
+quitting
+quiver/SMDG
+quivery
+quixotic
+quixotically
+quiz/M
+quizzed
+quizzer/SM
+quizzes
+quizzical/Y
+quizzing
+quo/H
+quoin/SM
+quoit/SMDG
+quondam
+quorate/I
+quorum/SM
+quot/B
+quota/SM
+quotability/M
+quotation/SM
+quote's
+quote/UDSG
+quotidian
+quotient/SM
+qwerty
+r/S
+rabbet/GMDS
+rabbi/SM
+rabbinate/M
+rabbinic
+rabbinical
+rabbit/GMDS
+rabble/MS
+rabid/PY
+rabidness/M
+rabies/M
+raccoon/M
+race/MZGDRS
+racecourse/SM
+racegoer/S
+racehorse/MS
+raceme/MS
+racer/M
+racetrack/MS
+raceway/MS
+racial/Y
+racialism/M
+racialist/MS
+racily
+raciness/M
+racing/M
+racism/M
+racist/SM
+rack/GMDS
+racket/SMDG
+racketeer/SMDG
+racketeering/M
+raconteur/SM
+racquetball/SM
+racy/PRT
+rad/SM
+radar/SM
+radarscope/SM
+raddled
+radial/SMY
+radiance/M
+radiant/Y
+radiate/DSGNX
+radiation/M
+radiator/SM
+radical/SMY
+radicalism/M
+radicalization/M
+radicalize/DSG
+radicchio/M
+radii
+radio/MDGS
+radioactive/Y
+radioactivity/M
+radiocarbon/M
+radiogram/MS
+radiographer/SM
+radiography/M
+radioisotope/MS
+radiologist/SM
+radiology/M
+radioman/M
+radiomen
+radiometer/MS
+radiometric
+radiometry/M
+radiophone/SM
+radioscopy/M
+radiosonde/SM
+radiosurgery
+radiotelegraph/M
+radiotelegraphs
+radiotelegraphy/M
+radiotelephone/MS
+radiotherapist/MS
+radiotherapy/M
+radish/MS
+radium/M
+radius/M
+radon/M
+raffia/M
+raffish/YP
+raffishness/M
+raffle/DSMG
+raft/ZGMDRS
+rafter/M
+rafting/M
+rag/SGMD
+raga/MS
+ragamuffin/MS
+ragbag/M
+rage/MS
+ragga
+ragged/RYTP
+raggedness/M
+raggedy/RT
+ragging
+raging/Y
+raglan/SM
+ragout/SM
+ragtag/S
+ragtime/M
+ragweed/M
+ragwort
+rah
+raid/ZGMDRS
+raider/M
+rail's
+rail/CGDS
+railcard/S
+railing/SM
+raillery/SM
+railroad/SZGMDR
+railroader/M
+railroading/M
+railway/SM
+railwayman
+railwaymen
+raiment/M
+rain/GMDS
+rainbow/SM
+raincoat/SM
+raindrop/SM
+rainfall/SM
+rainmaker/SM
+rainmaking/M
+rainproof
+rainstorm/MS
+rainwater/M
+rainy/RT
+raise/MZGDRS
+raiser/M
+raisin/SM
+rajah/M
+rajahs
+rake/MGDS
+rakish/YP
+rakishness/M
+rally/DSMG
+ram/SM
+ramble/DRSMZGJ
+rambler/M
+rambunctious/PY
+rambunctiousness/M
+ramekin/SM
+ramie/M
+ramification/M
+ramify/DSXNG
+ramjet/SM
+rammed
+ramming
+ramp/GMS
+rampage/DSMG
+rampancy/M
+rampant/Y
+rampart/SM
+ramrod/SM
+ramrodded
+ramrodding
+ramshackle
+ran/A
+ranch/MDRSZG
+rancher/M
+ranching/M
+rancid/P
+rancidity/M
+rancidness/M
+rancor/M
+rancorous/Y
+rand/M
+randiness/M
+random/PSY
+randomization/M
+randomize/DSG
+randomness/MS
+randy/RTP
+ranee/MS
+rang/ZR
+range's
+range/CGDS
+rangefinder/S
+ranger/M
+ranginess/M
+rangy/RTP
+rank/TGJPMDRYS
+ranking/M
+rankle/DSG
+rankness/M
+ransack/SGD
+ransom/SZGMDR
+ransomer/M
+ransomware
+rant/ZGMDJRS
+ranter/M
+rap/SZGMDR
+rapacious/PY
+rapaciousness/M
+rapacity/M
+rape/MS
+raper/M
+rapeseed/M
+rapid/PMRYTS
+rapidity/M
+rapidness/M
+rapier/SM
+rapine/M
+rapist/SM
+rapped
+rappel/SM
+rappelled
+rappelling
+rapper/SM
+rapping
+rapport/MS
+rapporteur/S
+rapprochement/SM
+rapscallion/MS
+rapt/YP
+raptness/M
+raptor/S
+rapture/MS
+rapturous/Y
+rare/YTGPDRS
+rarebit/MS
+rarefaction/M
+rarefy/GDS
+rareness/M
+rarity/SM
+rascal/SMY
+rash/ZTMRSYP
+rasher/M
+rashness/M
+rasp/GMDS
+raspberry/SM
+raspy/RT
+raster
+rat/SM
+ratatouille/M
+ratbag/S
+ratchet/GMDS
+rate/JXMZGNDRS
+rated/U
+ratepayer/S
+rater/M
+rather
+rathskeller/SM
+ratification/M
+ratifier/M
+ratify/NDRSZG
+rating/M
+ratio/MS
+ratiocinate/GNDS
+ratiocination/M
+ration/MDG
+rational/SMY
+rationale/MS
+rationalism/M
+rationalist/SM
+rationalistic
+rationality/M
+rationalization/MS
+rationalize/DSG
+ratlike
+ratline/SM
+rattan/SM
+ratted
+ratter/SM
+ratting
+rattle/DRSMZGJ
+rattlebrain/SMD
+rattler/M
+rattlesnake/SM
+rattletrap/SM
+rattly
+rattrap/SM
+ratty/RT
+raucous/YP
+raucousness/M
+raunchily
+raunchiness/M
+raunchy/TRP
+ravage/DRSMZG
+ravager/M
+ravages/M
+rave/JMZGDRS
+ravel's
+ravel/UDSG
+raveling/S
+raven/MDSG
+ravenous/Y
+ravine/SM
+raving/M
+ravioli/SM
+ravish/DRSZGL
+ravisher/M
+ravishing/Y
+ravishment/M
+raw/PTMR
+rawboned
+rawhide/M
+rawness/M
+ray/SM
+rayon/M
+raze/GDS
+razor/MS
+razorback/MS
+razz/GMDS
+razzmatazz/M
+rcpt
+rd
+re/DSMYTGVJ
+reach/MDSGB
+reachable/U
+reacquire/DSG
+react/V
+reactant/SM
+reactionary/SM
+reactivity
+read/ZGMRBJS
+readability/SM
+reader/M
+readership/SM
+readily
+readiness/M
+reading/M
+readmitted
+readout/SM
+ready/DRSTGP
+reafforestation
+real/TMRYPS
+realism/M
+realist/SM
+realistic/U
+realistically/U
+realities
+reality/UM
+realization/MS
+realize/DSBG
+realized/U
+realm/MS
+realness/M
+realpolitik/M
+realty/M
+ream/ZGMDRS
+reamer/M
+reap/ZGDRS
+reaper/M
+rear/GMDS
+rearguard/MS
+rearmost
+rearward/S
+reason/SMDRZGB
+reasonable/UP
+reasonableness/UM
+reasonably/U
+reasoner/M
+reasoning/M
+reassuring/Y
+rebate/M
+rebel/MS
+rebellion/MS
+rebellious/YP
+rebelliousness/M
+rebid/S
+rebidding
+rebirth/M
+reboil/SDG
+rebuild/SG
+rebuke/DSMG
+rebuking/Y
+rebuttal/MS
+rec'd
+rec/M
+recalcitrance/M
+recalcitrant
+recant/SDG
+recantation/SM
+recap/MS
+recapitalization
+recce/S
+recd
+receipt/SMDG
+receivables/M
+receive/DRSZGB
+receiver/M
+receivership/M
+recent/RYTP
+recentness/M
+receptacle/SM
+reception/MS
+receptionist/SM
+receptive/PY
+receptiveness/M
+receptivity/M
+receptor/SM
+recess/MDSGV
+recessional/SM
+recessionary
+recessive/SM
+recherche
+recidivism/M
+recidivist/SM
+recipe/SM
+recipient/SM
+reciprocal/SMY
+reciprocate/GNDS
+reciprocation/M
+reciprocity/M
+recital/SM
+recitalist/MS
+recitative/MS
+reciter/SM
+reckless/YP
+recklessness/M
+reckon/SJDG
+reckoning/M
+reclamation/M
+recline/DRSZG
+recliner/M
+recluse/SMV
+recognizable/U
+recognizably
+recognize/DRSGB
+recognized/U
+recombination
+recompense/DSMG
+recompilation
+recompile/GD
+recon/S
+reconcile/GDSB
+reconciliation/S
+recondite
+reconfiguration
+reconfigure/D
+reconnaissance/MS
+reconnoiter/DGS
+reconstruct/V
+reconstructed/U
+recorded/U
+recorder/MS
+recording/MS
+recoup/DG
+recourse/M
+recoverable/U
+recovery/SM
+recreant/MS
+recreational
+recriminate/DSGNX
+recrimination/M
+recriminatory
+recrudesce/GDS
+recrudescence/M
+recrudescent
+recruit/LSMDRZG
+recruiter/M
+recruitment/M
+rectal/Y
+rectangle/MS
+rectangular
+rectifiable
+rectification/M
+rectifier/M
+rectify/XNDRSZG
+rectilinear
+rectitude/M
+recto/MS
+rector/SM
+rectory/SM
+rectum/SM
+recumbent
+recuperate/GNVDS
+recuperation/M
+recur/S
+recurred
+recurrence/SM
+recurring
+recursion/S
+recuse/DSG
+recyclable/SM
+recycling/M
+red/PSM
+redact/SDG
+redaction/M
+redactor/SM
+redbird/SM
+redbreast/MS
+redbrick
+redcap/SM
+redcoat/SM
+redcurrant/S
+redden/SDG
+redder
+reddest
+reddish
+redeem/RZB
+redeemer/M
+redemption/M
+redemptive
+redhead/SMD
+redirection
+redistrict/GD
+redivide/GDS
+redlining/M
+redneck/SM
+redness/M
+redo/G
+redolence/M
+redolent
+redoubt/SBM
+redoubtably
+redound/SDG
+redraw/SG
+redskin/SM
+reduce/DRSZG
+reducer/M
+reducible
+reductase/M
+reduction/SM
+reductionist
+reductive
+redundancy/SM
+redundant/Y
+redwood/SM
+redye/DS
+reediness/M
+reedy/RTP
+reef/ZGMDRS
+reefer/M
+reek/GMDS
+reel's
+reel/UGDS
+reeve/G
+reexport/SDG
+ref/SZM
+refashion/DGS
+refection/M
+refectory/SM
+refer/B
+referee/DSM
+refereeing
+reference/MGDS
+referendum/MS
+referent/SM
+referential
+referral/SM
+referred
+referrer/SM
+referring
+reffed
+reffing
+refill/BM
+refined/U
+refinement/SM
+refiner/SM
+refinery/S
+refitting
+reflate/XDSGN
+reflationary
+reflect/GVSD
+reflection/MS
+reflective/Y
+reflector/MS
+reflexive/SMY
+reflexology
+reforge/DSG
+reform/MZ
+reformat/V
+reformatory/SM
+reformatting
+reformed/U
+reformist/S
+refortify/GDS
+refract/SGVD
+refraction/M
+refractory/SM
+refrain/SGMD
+refresh/ZGLDRS
+refresher/M
+refreshing/Y
+refreshment/SM
+refreshments/M
+refrigerant/SM
+refrigerate/DSGN
+refrigeration/M
+refrigerator/MS
+refuge/SM
+refugee/SM
+refulgence/M
+refulgent
+refund/B
+refurbishment/MS
+refusal/MS
+refutation/MS
+refute/BDRSZG
+refuter/M
+reg
+regal/DYG
+regalement/M
+regalia/M
+regard/ESMDG
+regardless
+regards/M
+regather/DGS
+regatta/SM
+regency/SM
+regeneracy/M
+regenerate/V
+regex/M
+regexp/S
+reggae/M
+regicide/MS
+regime/SM
+regimen/SM
+regiment/MDGS
+regimental
+regimentation/M
+region/SM
+regional/Y
+regionalism/MS
+register/GMDS
+registered/U
+registrant/MS
+registrar/MS
+registration/SM
+registry/SM
+regnant
+regress/MDSGV
+regression/MS
+regret/SM
+regretful/Y
+regrettable
+regrettably
+regretted
+regretting
+regrind/GS
+reground
+regroup/DGS
+regular/MYS
+regularity/SM
+regularization/M
+regularize/DSG
+regulate/CDSGNV
+regulated/U
+regulation/CM
+regulations
+regulator/MS
+regulatory
+regurgitate/DSGN
+regurgitation/M
+rehab/MS
+rehabbed
+rehabbing
+rehabilitate/GNVDS
+rehabilitation/M
+rehang/SDG
+rehears/GD
+rehearsal/MS
+rehearsed/U
+rehi
+rehung
+reign/MDSG
+reimburse/BDSGL
+reimbursement/MS
+rein/GD
+reindeer/M
+reinforce/LGDS
+reinforcement/SM
+reinitialize
+reinstall/DG
+reinstatement/M
+reinsurance
+reiterate/V
+reject/GSMD
+rejection/SM
+rejoice/JGDS
+rejoicing/M
+rejoinder/SM
+rejuvenate/DSGN
+rejuvenation/M
+rel
+relate/DRSXZGNV
+relatedness/M
+relater/M
+relation/M
+relational
+relationship/MS
+relative/MYS
+relativism/M
+relativist/S
+relativistic
+relativity/M
+relax/DRSZG
+relaxant/MS
+relaxation/SM
+relaxer/M
+relay/D
+release/B
+released/U
+relegate/GNDS
+relent/SGD
+relentless/PY
+relentlessness/M
+relevance/M
+relevancy/M
+relevant/Y
+reliability/UM
+reliable/U
+reliably/U
+reliance/M
+reliant
+relic/MS
+relief/SM
+relieve/ZGDRS
+reliever/M
+religion/SM
+religiosity
+religious/MYP
+religiousness/M
+reline/DSG
+relinquish/LDSG
+relinquishment/M
+reliquary/SM
+relish/GMDS
+relist/SGD
+relocate/B
+reluctance/M
+reluctant/Y
+rely/GDS
+rem/M
+remain/SGD
+remainder/GMDS
+remand/SGD
+remapping
+remark/B
+remarkableness/M
+remarkably
+remarked/U
+remediable
+remedy/GDSM
+remember/DG
+remembered/U
+remembrance/MS
+reminder/M
+reminisce/GDS
+reminiscence/MS
+reminiscent/Y
+remiss/PY
+remissness/M
+remit/S
+remittance/SM
+remitted
+remitting/U
+remix/DSG
+remnant/MS
+remodel/GDS
+remold/SGD
+remonstrant/SM
+remonstrate/DSG
+remorse/M
+remorseful/Y
+remorseless/PY
+remorselessness/M
+remote/RSMYTP
+remoteness/M
+removal/SM
+remunerate/GNVXDS
+remuneration/M
+renaissance/MS
+renal
+renascence/S
+rend/GS
+render/SGMDJ
+rendering/M
+rendezvous/GMDS
+rendition/MS
+renegade/DSMG
+renege/DRSZG
+reneger/M
+renew/DSBG
+renewal/MS
+rennet/M
+rennin/M
+renounce/LDSG
+renouncement/M
+renovate/DSXGN
+renovation/M
+renovator/MS
+renown/MD
+rent/ZGMDRS
+rental/SM
+renter/M
+renunciation/SM
+reopen/SDG
+reorg/MDSG
+rep/SM
+repaint/GDS
+repair/BZR
+repairer/M
+repairman/M
+repairmen
+reparable
+reparation/MS
+reparations/M
+repartee/M
+repatriate/XDSMGN
+repatriation/M
+repeat/SMDRZGB
+repeatable/U
+repeatably
+repeated/Y
+repeater/M
+repeating/M
+repel/S
+repelled
+repellent/SM
+repelling
+repent/SDG
+repentance/M
+repentant/Y
+repercussion/S
+repertoire/MS
+repertory/SM
+repetition/MS
+repetitious/YP
+repetitiousness/M
+repetitive/YP
+repetitiveness/M
+rephotograph/DG
+replaceable
+replant/GSD
+replenish/LGDS
+replenishment/M
+replete/PDSGN
+repleteness/M
+repletion/M
+replica/SM
+replicate/DSGNX
+replication/M
+replicator/S
+reportage/M
+reported/Y
+reportorial
+reposeful
+repository/SM
+reprehend/DGS
+reprehensibility/M
+reprehensible
+reprehensibly
+reprehension/M
+represent/GDS
+representational
+representative/MS
+represented/U
+repression/MS
+repressive/PY
+reprieve/DSMG
+reprimand/GSMD
+reprisal/SM
+reprise/SMG
+reproach/GMDSB
+reproachful/Y
+reprobate/MS
+reproductive
+reprogramming
+reproving/Y
+reptile/SM
+reptilian/MS
+republic/S
+republicanism/M
+repudiate/XGNDS
+repudiation/M
+repudiator/MS
+repugnance/M
+repugnant
+repulsion/M
+repulsive/YP
+repulsiveness/M
+repurchase/GDS
+reputability/M
+reputably/E
+reputation/MS
+repute/DSMGB
+reputed/Y
+request/GDR
+requiem/SM
+require/LDG
+requirement/MS
+requisite/XMNS
+requisition/GMD
+requital/M
+requite/DRSZG
+requited/U
+requiter/M
+reread/SG
+rerecord/GDS
+rerunning
+resat
+rescind/SDG
+rescission/M
+rescue/DRSMZG
+rescuer/M
+reseal/B
+resell/SG
+resemble/DSG
+resend
+resent/LSDG
+resentful/YP
+resentfulness/M
+resentment/MS
+reserpine/M
+reservation/MS
+reserved/UY
+reservedness/M
+reservist/SM
+reservoir/SM
+resetting
+reshipping
+residence/SM
+residency/SM
+resident/MS
+residential
+residua
+residual/MS
+residue/SM
+residuum/M
+resignation/SM
+resigned/Y
+resilience/M
+resiliency/M
+resilient/Y
+resinous
+resist/SMDRZG
+resistance/SM
+resistant/U
+resistible
+resistless
+resistor/MS
+resit/S
+resitting
+resold
+resole/DSG
+resolute/PY
+resoluteness/M
+resolve/RBM
+resolved/U
+resonance/SM
+resonant/Y
+resonate/GDS
+resonator/SM
+resorption/M
+resound/SGD
+resounding/Y
+resourceful/YP
+resourcefulness/M
+resp
+respect/ESGVMD
+respectability/M
+respectable
+respectably
+respectful/EY
+respectfulness/M
+respective/Y
+respell/SGD
+respiration/M
+respirator/SM
+respiratory
+respire/DG
+resplendence/M
+resplendent/Y
+respond/SGD
+respondent/SM
+response/MS
+responsibility/SM
+responsible
+responsibly
+responsive/UYP
+responsiveness/UM
+rest/GVMDS
+restate/GDS
+restaurant/SM
+restaurateur/MS
+restful/YP
+restfuller
+restfullest
+restfulness/M
+restitution/M
+restive/YP
+restiveness/M
+restless/PY
+restlessness/M
+restoration/SM
+restorative/SM
+restorer/SM
+restrained/U
+restraint/MS
+restrict/SDGV
+restricted/U
+restriction/MS
+restrictive/YP
+restrictiveness/M
+restring/SG
+restroom/SM
+restructuring/SM
+result/GSMD
+resultant/SM
+resume/DSMG
+resumption/MS
+resupply/DSG
+resurgence/MS
+resurgent
+resurrect/GSD
+resurrection/MS
+resuscitate/GNDS
+resuscitation/M
+resuscitator/SM
+retailer/MS
+retain/SDRZG
+retainer/M
+retake/G
+retaliate/DSGNVX
+retaliation/M
+retaliatory
+retard/SMDRZG
+retardant/SM
+retardation/M
+retarder/M
+retch/DSG
+reteach/GS
+retention/M
+retentive/YP
+retentiveness/M
+rethink/SGM
+rethought
+reticence/M
+reticent/Y
+reticulated
+reticulation/MS
+retina/SM
+retinal
+retinue/SM
+retiree/SM
+retirement/MS
+retort/GMD
+retrace/GDS
+retract/DBG
+retractile
+retraction/S
+retrain/DGS
+retread/D
+retrenchment/MS
+retribution/MS
+retributive
+retrieval/SM
+retrieve/DRSMZGB
+retriever/M
+retro/MS
+retroactive/Y
+retrofire/GDS
+retrofit/SM
+retrofitted
+retrofitting
+retrograde/DSG
+retrogress/GVDS
+retrogression/M
+retrorocket/MS
+retrospect/MDSGV
+retrospection/M
+retrospective/MYS
+retrovirus/MS
+retsina/M
+returnable/SM
+returnee/SM
+rev/ZVM
+revamping/M
+reveal/GJSD
+revealed/U
+revealing/Y
+reveille/M
+revel/JMDRSZG
+revelation/SM
+reveler/M
+revelry/SM
+revenge/MGDS
+revenuer/SM
+reverb
+reverberate/DSGNX
+reverberation/M
+revere/DSG
+reverence/DSMG
+reverend/SM
+reverent/Y
+reverential/Y
+reverie/MS
+revers/M
+reversal/SM
+reverse/Y
+reversibility
+reversible
+reversibly
+revert/GSD
+revertible
+revetment/SM
+revile/DRSLZG
+revilement/M
+reviler/M
+reviser/MS
+revision/SM
+revisionism/M
+revisionist/SM
+revival/MS
+revivalism/M
+revivalist/SM
+revive/DSG
+revivification/M
+revocable
+revoke/DSG
+revolt/GD
+revolting/Y
+revolution/SM
+revolutionary/SM
+revolutionist/SM
+revolutionize/DSG
+revolve/BZGDRS
+revolver/M
+revue/MS
+revulsion/M
+revved
+revving
+rewarded/U
+rewarding/U
+rewarm/GSD
+rewash/GDS
+reweave/GS
+rewedding
+rewind/MB
+rewound
+rewrite/MGS
+rhapsodic
+rhapsodical
+rhapsodize/GDS
+rhapsody/SM
+rhea/MS
+rhenium/M
+rheostat/SM
+rhesus/MS
+rhetoric/M
+rhetorical/Y
+rhetorician/SM
+rheum/M
+rheumatic/MS
+rheumatically
+rheumatism/M
+rheumatoid
+rheumy
+rhinestone/SM
+rhinitis/M
+rhino/MS
+rhinoceros/MS
+rhinoplasty
+rhinovirus/MS
+rhizome/MS
+rho/SM
+rhodium/M
+rhododendron/SM
+rhomboid/SM
+rhomboidal
+rhombus/MS
+rhubarb/MS
+rhyme/MZGDRS
+rhymer/M
+rhymester/MS
+rhythm/SM
+rhythmic
+rhythmical/Y
+rial/MS
+rib/SM
+ribald
+ribaldry/M
+ribbed
+ribber/SM
+ribbing
+ribbon/SM
+riboflavin/M
+rice/MZGDRS
+ricer/M
+rich/TMRSYP
+richness/M
+rick/GMDS
+rickets/M
+rickety/RT
+rickrack/M
+rickshaw/MS
+ricochet/GMDS
+ricotta/M
+rid/S
+riddance/M
+ridden
+ridding
+riddle/DSMG
+ride/MZGRS
+rider/M
+riderless
+ridership/M
+ridge/MGDS
+ridgepole/SM
+ridgy
+ridicule/MGDS
+ridiculous/YP
+ridiculousness/M
+riding/M
+rife/TR
+riff/GMDS
+riffle/DSMG
+riffraff/M
+rifle/MZGDRS
+rifleman/M
+riflemen
+rifler/M
+rifling/M
+rift/GMDS
+rig/SM
+rigatoni/M
+rigged
+rigger/SM
+rigging/M
+right/MDRYSPTG
+righteous/UP
+righteously
+righteousness/UM
+rightful/PY
+rightfulness/M
+rightism/M
+rightist/SM
+rightmost
+rightness/M
+righto
+rightsize/DSG
+rightward/S
+rigid/YP
+rigidity/M
+rigidness/M
+rigmarole/MS
+rigor/MS
+rigorous/YP
+rigorousness/M
+rile/GDS
+rill/MS
+rim/SGMD
+rime/MS
+rimless
+rimmed
+rimming
+rind/MS
+ring/ZGMDRJ
+ringer/M
+ringgit/MS
+ringleader/MS
+ringlet/MS
+ringlike
+ringmaster/MS
+ringside/M
+ringtone/SM
+ringworm/M
+rink/MS
+rinse/MGDS
+riot/ZGMDRS
+rioter/M
+rioting/M
+riotous/PY
+rip/SXTMNR
+riparian
+ripcord/MS
+ripe/YP
+ripen/DG
+ripened/U
+ripeness/M
+ripoff/SM
+riposte/MGDS
+ripped
+ripper/SM
+ripping
+ripple/DSMG
+ripply
+ripsaw/SM
+riptide/MS
+rise/JMZGRS
+risen
+riser/M
+risibility/M
+risible
+rising/M
+risk/GMDS
+riskily
+riskiness/M
+risky/RPT
+risotto/MS
+risque
+rissole/S
+rite/MS
+ritual/SMY
+ritualism/M
+ritualistic
+ritualistically
+ritualized
+ritzy/RT
+riv/ZNR
+rival/MDSG
+rivaled/U
+rivalry/SM
+rive/CGDS
+river/M
+riverbank/SM
+riverbed/MS
+riverboat/SM
+riverfront
+riverside/MS
+rivet/MDRSZG
+riveter/M
+riviera/S
+rivulet/MS
+riyal/MS
+rm
+roach/GMDS
+road/IMS
+roadbed/SM
+roadblock/MDSG
+roadhouse/SM
+roadie/MS
+roadkill/M
+roadrunner/SM
+roadshow/SM
+roadside/SM
+roadster/SM
+roadway/SM
+roadwork/SM
+roadworthy
+roam/ZGDRS
+roamer/M
+roaming/M
+roan/MS
+roar/ZGMDRS
+roarer/M
+roaring/M
+roast/ZGMDRSJ
+roaster/M
+roasting/M
+rob/S
+robbed
+robber/MS
+robbery/SM
+robbing
+robe's
+robe/EGDS
+robin/MS
+robocall/SGMD
+robot/MS
+robotic/S
+robotics/M
+robotize/GDS
+robust/RYPT
+robustness/M
+rock/ZGMDRS
+rockabilly/M
+rockbound
+rocker/M
+rockery/S
+rocket/MDSG
+rocketry/M
+rockfall/SM
+rockiness/M
+rocky/TRP
+rococo/M
+rod/SM
+rode
+rodent/MS
+rodeo/MS
+roe/SM
+roebuck/SM
+roentgen/MS
+roger/GDS
+rogue's
+rogue/KS
+roguery/M
+roguish/YP
+roguishness/M
+roil/GDS
+roister/ZGDRS
+roisterer/M
+role/MS
+roll/MDRZGJS
+rollback/SM
+roller/M
+rollerblading
+rollerskating/M
+rollick/SDG
+rollicking/M
+rollmop/S
+rollover/SM
+romaine/MS
+roman/M
+romance/MZGDRS
+romancer/M
+romantic/MS
+romantically
+romanticism/M
+romanticist/SM
+romanticize/DSG
+romeo/MS
+romp/MDRZGS
+romper/M
+rondo/SM
+rood/MS
+roof/MDRZGS
+roofer/M
+roofing/M
+roofless
+rooftop/SM
+rook/MDGS
+rookery/SM
+rookie/SM
+room/MDRZGS
+roomer/M
+roomette/SM
+roomful/SM
+roominess/M
+roommate/SM
+roomy/RTP
+roost/SMDRZG
+rooster/M
+root/MDRZGS
+rooter/M
+rootkit/SM
+rootless/P
+rootlet/SM
+rope/MZGDRS
+roper/M
+ropy/RT
+rosary/SM
+rose/MS
+roseate
+rosebud/SM
+rosebush/MS
+rosemary/M
+rosette/SM
+rosewater/M
+rosewood/MS
+rosily
+rosin/SMDG
+rosiness/M
+roster/SM
+rostrum/MS
+rosy/RTP
+rot/SM
+rota/S
+rotary/SM
+rotate/DSGNX
+rotation/M
+rotational
+rotatory
+rote/M
+rotgut/M
+rotisserie/SM
+rotogravure/MS
+rotor/SM
+rototiller/MS
+rotted
+rotten/TPRY
+rottenness/M
+rotter/S
+rotting
+rottweiler/S
+rotund/P
+rotunda/MS
+rotundity/M
+rotundness/M
+roue/MS
+rouge/DSMG
+rough/MDNRYXTGP
+roughage/M
+roughcast
+roughen/GD
+roughhouse/MGDS
+roughneck/GMDS
+roughness/M
+roughs
+roughshod
+roulette/M
+round/PSMDRYZTG
+roundabout/SM
+roundel/S
+roundelay/MS
+roundhouse/SM
+roundish
+roundness/M
+roundup/MS
+roundworm/SM
+rouse/DSG
+roust/SDG
+roustabout/SM
+rout/MRZS
+route's
+route/ADSG
+routeing
+router/M
+routine/MYS
+routinize/GDS
+roux
+rove/ZGDRS
+rover/M
+row/SZGMDR
+rowan/S
+rowboat/MS
+rowdily
+rowdiness/M
+rowdy/PRSMT
+rowdyism/M
+rowel/SMDG
+rower/M
+rowing/M
+rowlock/S
+royal/SMY
+royalist/SM
+royalties/M
+royalty/SM
+rpm
+rps
+rt
+rte
+rub/SM
+rubato/SM
+rubbed
+rubber/SM
+rubberize/GDS
+rubberneck/MDRSZG
+rubbernecker/M
+rubbery
+rubbing/S
+rubbish/MDSG
+rubbishy
+rubble/M
+rubdown/SM
+rube/MS
+rubella/M
+rubicund
+rubidium/M
+ruble/SM
+rubric/SM
+ruby/RSMT
+ruched
+ruck/DGS
+rucksack/MS
+ruckus/MS
+ructions
+rudder/SM
+rudderless
+ruddiness/M
+ruddy/RTP
+rude/YTRP
+rudeness/M
+rudiment/SM
+rudimentary
+rue/DSMG
+rueful/PY
+ruefulness/M
+ruff/MDYGS
+ruffian/MYS
+ruffle/DSMG
+ruffled/U
+rug/SM
+rugby/M
+rugged/PTRY
+ruggedness/M
+rugger
+rugrat/SM
+ruin/MDGS
+ruination/M
+ruinous/Y
+rule/MZGJDRS
+ruler/M
+ruling/M
+rum/SM
+rumba/SMDG
+rumble/DSJMG
+rumbling/M
+rumbustious
+ruminant/MS
+ruminate/XGNVDS
+rumination/M
+ruminative/Y
+rummage/DSMG
+rummer
+rummest
+rummy/M
+rumor/SMDG
+rumormonger/SM
+rump/MYS
+rumple/DSMG
+rumpus/MS
+run/ASM
+runabout/MS
+runaround/SM
+runaway/MS
+rundown/SM
+rune/MS
+rung/MS
+runic
+runlet/SM
+runnel/SM
+runner/SM
+running/M
+runny/RT
+runoff/SM
+runt/MS
+runty/RT
+runway/SM
+rupee/SM
+rupiah/M
+rupiahs
+rupture/MGDS
+rural
+ruse/MS
+rush/MDRSZG
+rusher/M
+rushy
+rusk/MS
+russet/SM
+rust/MDGS
+rustic/SM
+rustically
+rusticate/GDS
+rustication/M
+rusticity/M
+rustiness/M
+rustle/DRSJMZG
+rustler/M
+rustproof/SDG
+rusty/RPNT
+rut/SM
+rutabaga/SM
+ruthenium/M
+rutherfordium/M
+ruthless/YP
+ruthlessness/M
+rutted
+rutting
+rutty/RT
+rye/M
+s/NYXB
+sabbath/M
+sabbaths
+sabbatical/SM
+saber/MS
+sable/MS
+sabot/MS
+sabotage/DSMG
+saboteur/SM
+sabra/MS
+sac/SM
+saccharin/M
+saccharine
+sacerdotal
+sachem/SM
+sachet/SM
+sack/ZGMDRJS
+sackcloth/M
+sacker/M
+sackful/MS
+sacking/M
+sacra
+sacrament/MS
+sacramental
+sacred/YP
+sacredness/M
+sacrifice/DSMG
+sacrificial/Y
+sacrilege/MS
+sacrilegious/Y
+sacristan/MS
+sacristy/SM
+sacroiliac/MS
+sacrosanct/P
+sacrosanctness/M
+sacrum/M
+sad/PY
+sadden/SDG
+sadder
+saddest
+saddle's
+saddle/UDSG
+saddlebag/MS
+saddler/S
+saddlery
+sades
+sadhu/S
+sadism/M
+sadist/SM
+sadistic
+sadistically
+sadness/M
+sadomasochism/M
+sadomasochist/MS
+sadomasochistic
+safari/SGMD
+safe/MYTPRS
+safeguard/SMDG
+safekeeping/M
+safeness/M
+safety/SM
+safflower/MS
+saffron/MS
+sag/SM
+saga/MS
+sagacious/Y
+sagacity/M
+sage/MYTRS
+sagebrush/M
+sagged
+sagging
+saggy/RT
+sago/M
+saguaro/MS
+sahib/MS
+said/U
+sail/GMDSJ
+sailboard/MRZGS
+sailboarder/M
+sailboarding/M
+sailboat/MS
+sailcloth/M
+sailfish/MS
+sailing/M
+sailor/SM
+sailplane/MS
+saint/MDYS
+sainthood/M
+saintlike
+saintliness/M
+saintly/PRT
+saith
+sake/M
+salaam/SMDG
+salable/U
+salacious/PY
+salaciousness/M
+salacity/M
+salad/MS
+salamander/SM
+salami/SM
+salary/DSM
+sale/ABMS
+saleroom/S
+salesclerk/SM
+salesgirl/SM
+saleslady/SM
+salesman/M
+salesmanship/M
+salesmen
+salespeople/M
+salesperson/MS
+salesroom/S
+saleswoman/M
+saleswomen
+salience/M
+salient/SMY
+saline/SM
+salinity/M
+saliva/M
+salivary
+salivate/GNDS
+salivation/M
+sallow/RTP
+sallowness/M
+sally/DSMG
+salmon/SM
+salmonella/M
+salmonellae
+salon/MS
+saloon/SM
+salsa/MS
+salt's
+salt/CTGDS
+saltbox/MS
+saltcellar/SM
+salted/U
+salter
+saltine/SM
+saltiness/M
+saltpeter/M
+saltshaker/SM
+saltwater/M
+salty/RTP
+salubrious/I
+salutary
+salutation/MS
+salutatorian/MS
+salutatory
+salute/DSMG
+salvage/DSMG
+salvageable
+salvation/M
+salve/MZGDRS
+salver/M
+salvo/MS
+samarium/M
+samba/MDSG
+same/SP
+sameness/M
+samey
+samizdat/S
+samosa/S
+samovar/SM
+sampan/SM
+sample/DRSMZGJ
+sampler/M
+sampling/M
+samurai/SM
+sanatorium/SM
+sanctification/M
+sanctify/GDSN
+sanctimonious/YP
+sanctimoniousness/M
+sanctimony/M
+sanction/GSMD
+sanctioned/U
+sanctity/M
+sanctuary/SM
+sanctum/SM
+sand/ZGMDRS
+sandal/SM
+sandalwood/M
+sandbag/SM
+sandbagged
+sandbagger/SM
+sandbagging
+sandbank/MS
+sandbar/SM
+sandblast/ZGMDRS
+sandblaster/M
+sandbox/MS
+sandcastle/MS
+sander/M
+sandhog/SM
+sandiness/M
+sandlot/SM
+sandlotter/MS
+sandman/M
+sandmen
+sandpaper/GMDS
+sandpiper/MS
+sandpit/S
+sandstone/M
+sandstorm/SM
+sandwich/MDSG
+sandy/RTP
+sane/IYTR
+saneness/M
+sang/S
+sangfroid/M
+sangria/M
+sanguinary
+sanguine/Y
+sanitarian/SM
+sanitarium/SM
+sanitary/IU
+sanitation/M
+sanitize/GDS
+sanity/IM
+sank
+sans
+sanserif
+sap/SM
+sapience/M
+sapiens
+sapient
+sapless
+sapling/MS
+sapped
+sapper/S
+sapphire/SM
+sappiness/M
+sapping
+sappy/PRT
+saprophyte/SM
+saprophytic
+sapsucker/SM
+sapwood/M
+saran/M
+sarcasm/MS
+sarcastic
+sarcastically
+sarcoma/MS
+sarcophagi
+sarcophagus/M
+sardine/MS
+sardonic
+sardonically
+sarge/MS
+sari/MS
+sarky
+sarnie/S
+sarong/SM
+sarsaparilla/MS
+sartorial/Y
+sash/MS
+sashay/SGMD
+sass/GMDS
+sassafras/MS
+sassy/RT
+sat
+satanic
+satanical/Y
+satanism/M
+satanist/MS
+satay
+satchel/MS
+sate/GDS
+sateen/M
+satellite/DSMG
+satiable/I
+satiate/GNDS
+satiation/M
+satiety/M
+satin/M
+satinwood/SM
+satiny
+satire/SM
+satiric
+satirical/Y
+satirist/SM
+satirize/DSG
+satisfaction/EM
+satisfactions
+satisfactorily/U
+satisfactory/U
+satisfied/U
+satisfy/EDSG
+satisfying/U
+satisfyingly
+satori/M
+satrap/SM
+satsuma/S
+saturate/DSGN
+saturated/U
+saturation/M
+saturnine
+satyr/MS
+satyriasis/M
+satyric
+sauce/MZGDRS
+saucepan/SM
+saucer/M
+saucily
+sauciness/M
+saucy/RPT
+sauerkraut/M
+sauna/MDSG
+saunter/MDGS
+saurian
+sauropod/SM
+sausage/MS
+saute/MS
+sauteed
+sauteing
+savage/DRSMYTGP
+savageness/M
+savagery/SM
+savanna/MS
+savant/SM
+save/BJMZGDRS
+saved/U
+saver/M
+saving/M
+savings/M
+savior/SM
+savor/MDSG
+savoriness/M
+savory/PTRSM
+savoy/MS
+savvy/DRSMTG
+saw/SGMD
+sawbones/M
+sawbuck/MS
+sawdust/M
+sawfly/SM
+sawhorse/SM
+sawmill/MS
+sawyer/SM
+sax/MS
+saxifrage/SM
+saxophone/MS
+saxophonist/SM
+say's
+say/USG
+saying/SM
+scab/MS
+scabbard/MS
+scabbed
+scabbiness/M
+scabbing
+scabby/PTR
+scabies/M
+scabrous
+scad/MS
+scaffold/SMG
+scaffolding/M
+scag/S
+scagged
+scalar/S
+scalawag/MS
+scald/MDSG
+scale's
+scale/CGDS
+scaleless
+scalene
+scaliness/M
+scallion/MS
+scallop/GSMD
+scalp/MDRSZG
+scalpel/SM
+scalper/M
+scaly/RTP
+scam/MS
+scammed
+scammer/S
+scamming
+scamp/MRSZ
+scamper/GMD
+scampi/M
+scan/MS
+scandal/SM
+scandalize/DSG
+scandalmonger/SM
+scandalous/Y
+scandium/M
+scanned
+scanner/SM
+scanning
+scansion/M
+scant/CDSTG
+scanter
+scantily
+scantiness/M
+scantly
+scantness/M
+scanty/RSPT
+scapegoat/SGMD
+scapegrace/MS
+scapula/M
+scapulae
+scapular/SM
+scar/GMDS
+scarab/SM
+scarce/RYTP
+scarceness/M
+scarcity/SM
+scare/MS
+scarecrow/MS
+scaremonger/SMG
+scarf/MDSG
+scarification/M
+scarify/NDSG
+scarily
+scariness/M
+scarlatina/M
+scarlet/M
+scarp/MDRSZG
+scarper/DG
+scarred
+scarring
+scarves
+scary/RTP
+scat/MS
+scathing/Y
+scatological
+scatology/M
+scatted
+scatter/GJSMD
+scatterbrain/SMD
+scattering/M
+scattershot
+scatting
+scatty
+scavenge/ZGDRS
+scavenger/M
+scenario/MS
+scenarist/MS
+scene/MS
+scenery/M
+scenic
+scenically
+scent/CMS
+scented/U
+scenting
+scentless
+scepter/MS
+sch
+schadenfreude
+schedule's
+schedule/ADSG
+scheduled/U
+scheduler/S
+schema
+schemata
+schematic/SM
+schematically
+schematize/GDS
+scheme/DRSMZG
+schemer/M
+scherzo/MS
+schilling/MS
+schism/SM
+schismatic/SM
+schist/M
+schizo/SM
+schizoid/MS
+schizophrenia/M
+schizophrenic/SM
+schlemiel/SM
+schlep/SM
+schlepped
+schlepping
+schlock/M
+schmaltz/M
+schmaltzy/TR
+schmo/M
+schmoes
+schmooze/DRSZG
+schmuck/MS
+schnapps/M
+schnauzer/SM
+schnitzel/SM
+schnook/MS
+schnoz/MS
+schnozzle/SM
+scholar/MYS
+scholarship/MS
+scholastic
+scholastically
+scholasticism
+school/SGMD
+schoolbag/MS
+schoolbook/SM
+schoolboy/MS
+schoolchild/M
+schoolchildren/M
+schooldays
+schooled/U
+schoolfellow/SM
+schoolgirl/SM
+schoolhouse/SM
+schooling/M
+schoolkid/S
+schoolmarm/SM
+schoolmarmish
+schoolmaster/MS
+schoolmate/SM
+schoolmistress/MS
+schoolroom/SM
+schoolteacher/MS
+schoolwork/M
+schoolyard/SM
+schooner/SM
+schuss/GMDS
+schussboomer/MS
+schwa/MS
+sci
+sciatic
+sciatica/M
+science/FMS
+scientific/U
+scientifically/U
+scientist/SM
+scimitar/SM
+scintilla/MS
+scintillate/DSGN
+scintillation/M
+scion/MS
+scissor/GDS
+scleroses
+sclerosis/M
+sclerotic
+scoff/MDRSZG
+scoffer/M
+scofflaw/MS
+scold/MDSGJ
+scolding/M
+scoliosis/M
+sconce/SM
+scone/MS
+scoop/MDSG
+scoopful/MS
+scoot/DRSZG
+scooter/M
+scope/MGDS
+scorbutic
+scorch/MDRSZG
+scorcher/M
+score/MZGDRS
+scoreboard/SM
+scorecard/MS
+scorekeeper/MS
+scoreless
+scoreline/S
+scorer/M
+scorn/MDRSZG
+scorner/M
+scornful/Y
+scorpion/MS
+scotch/MDSG
+scotchs
+scoundrel/MS
+scour/DRSZG
+scourer/M
+scourge/DSMG
+scout/MDRSZG
+scouting/M
+scoutmaster/MS
+scow/MS
+scowl/MDSG
+scrabble/MZGDRS
+scrabbler/M
+scrag/MS
+scraggly/RT
+scraggy/TR
+scram/S
+scramble's
+scramble/UGDS
+scrambler/MS
+scrammed
+scramming
+scrap/MDRSZGJ
+scrapbook/SM
+scrape/SM
+scraper/M
+scrapheap/SM
+scrapie
+scrapped
+scrapper/MS
+scrapping
+scrappy/TR
+scrapyard/SM
+scratch/GMDS
+scratchcard/S
+scratched/U
+scratchily
+scratchiness/M
+scratchpad/S
+scratchy/PRT
+scrawl/SMDG
+scrawly
+scrawniness/M
+scrawny/PTR
+scream/SMDRZG
+screamer/M
+screaming/Y
+scree/MDS
+screech/GMDS
+screechy/TR
+screed/S
+screen/SJMDG
+screening/M
+screenplay/SM
+screensaver/SM
+screenshot/S
+screenwriter/SM
+screenwriting/M
+screw's
+screw/UDSG
+screwball/MS
+screwdriver/MS
+screwiness/M
+screwworm/SM
+screwy/PRT
+scribal
+scribble/MZGDRS
+scribbler/M
+scribe's
+scribe/CKIS
+scrim/MS
+scrimmage/MGDS
+scrimp/SDG
+scrimshaw/MDGS
+scrip/MS
+script/FSMDG
+scripted/U
+scriptural
+scripture/MS
+scriptwriter/SM
+scrivener/SM
+scrod/M
+scrofula/M
+scrofulous
+scrog/S
+scroll/GSMD
+scrooge/MS
+scrota
+scrotal
+scrotum/M
+scrounge/DRSZG
+scrounger/M
+scroungy/TR
+scrub/MS
+scrubbed
+scrubber/SM
+scrubbing
+scrubby/RT
+scruff/SM
+scruffily
+scruffiness/M
+scruffy/RPT
+scrum/S
+scrumhalf
+scrumhalves
+scrummage/S
+scrummed
+scrumming
+scrump/SGD
+scrumptious/Y
+scrumpy
+scrunch/MDSG
+scrunchy/SM
+scruple/MGDS
+scrupulosity/M
+scrupulous/UPY
+scrupulousness/UM
+scrutineer/S
+scrutinize/GDS
+scrutiny/M
+scuba/MDSG
+scud/MS
+scudded
+scudding
+scuff/MDSG
+scuffle/MGDS
+scull/MDRSZG
+sculler/M
+scullery/SM
+scullion/SM
+sculpt/SGD
+sculptor/SM
+sculptress/MS
+sculptural
+sculpture/DSMG
+scum/MS
+scumbag/MS
+scummed
+scumming
+scummy/TR
+scupper/MDGS
+scurf/M
+scurfy
+scurrility/M
+scurrilous/PY
+scurrilousness/M
+scurry/GDSM
+scurvily
+scurvy/TRM
+scutcheon/SM
+scuttle/MGDS
+scuttlebutt/M
+scuzzy/TR
+scythe/DSMG
+sea/SM
+seabed/SM
+seabird/MS
+seaboard/SM
+seaborne
+seacoast/SM
+seafarer/SM
+seafaring/M
+seafloor/SM
+seafood/M
+seafront/SM
+seagoing
+seagull/MS
+seahorse/MS
+seal's
+seal/AUSDG
+sealant/MS
+sealer/SM
+sealskin/M
+seam/GMDNS
+seaman/M
+seamanship/M
+seamless/Y
+seamount/MS
+seamstress/MS
+seamy/RT
+seance/SM
+seaplane/SM
+seaport/MS
+sear/GMDS
+search/AZGMDRS
+searcher/AM
+searching/Y
+searchlight/MS
+searing/Y
+seascape/SM
+seashell/SM
+seashore/SM
+seasick/P
+seasickness/M
+seaside/MS
+season/SGMDBJ
+seasonable/U
+seasonably/U
+seasonal/Y
+seasonality
+seasoned/U
+seasoning/M
+seat's
+seat/UGDS
+seating/M
+seatmate/SM
+seawall/MS
+seaward/MS
+seawater/M
+seaway/SM
+seaweed/MS
+seaworthiness/M
+seaworthy/P
+sebaceous
+seborrhea/M
+sebum
+sec'y
+sec/SM
+secant/SM
+secateurs
+secede/DSG
+secession/M
+secessionist/MS
+seclude/GDS
+seclusion/M
+seclusive
+second/SLZGMDRY
+secondarily
+secondary/SM
+seconder/M
+secondhand
+secondment/S
+secrecy/M
+secret/SGVMDY
+secretarial
+secretariat/MS
+secretary/SM
+secretaryship/M
+secrete/XNS
+secretion/M
+secretive/PY
+secretiveness/M
+secretory
+sect/IMS
+sectarian/MS
+sectarianism/M
+sectary/SM
+section/AESM
+sectional/MS
+sectionalism/M
+sectioned
+sectioning
+sector/ESM
+secular
+secularism/M
+secularist/SM
+secularization/M
+secularize/DSG
+secure/DRSYTG
+secured/U
+security/ISM
+secy
+sedan/MS
+sedate/DRSYTGNVP
+sedateness/M
+sedation/M
+sedative/SM
+sedentary
+sedge/M
+sedgy
+sediment/MS
+sedimentary
+sedimentation/M
+sedition/M
+seditious
+seduce/DRSZG
+seducer/M
+seduction/SM
+seductive/YP
+seductiveness/M
+seductress/MS
+sedulous/Y
+see/RSMZ
+seed's
+seed/AGDS
+seedbed/MS
+seedcase/MS
+seeded/U
+seeder/SM
+seediness/M
+seedless
+seedling/MS
+seedpod/MS
+seedy/RPT
+seeing/S
+seek/ZGRS
+seeker/M
+seem/GDS
+seeming/Y
+seemliness/UM
+seemly/URTP
+seen/U
+seep/GDS
+seepage/M
+seer/M
+seersucker/M
+seesaw/SMDG
+seethe/DSG
+segfault/S
+segment/GSMD
+segmentation/M
+segmented/U
+segregate/CDSGN
+segregated/U
+segregation/CM
+segregationist/MS
+segue/MGDS
+segueing
+seigneur/SM
+seignior/SM
+seine/MZGDRS
+seiner/M
+seismic
+seismically
+seismograph/ZMR
+seismographer/M
+seismographic
+seismographs
+seismography/M
+seismologic
+seismological
+seismologist/MS
+seismology/M
+seize/GDS
+seizure/MS
+seldom
+select/CSGVD
+selection/SM
+selective/Y
+selectivity/M
+selectman/M
+selectmen
+selectness/M
+selector/MS
+selenium/M
+selenographer/MS
+selenography/M
+self/M
+selfie/SM
+selfish/UYP
+selfishness/UM
+selfless/PY
+selflessness/M
+selfsame
+sell/ZGMRS
+seller/M
+selloff/MS
+sellotape/DSG
+sellout/MS
+seltzer/MS
+selvage/MS
+selves
+semantic/S
+semantically
+semanticist/MS
+semantics/M
+semaphore/DSMG
+semblance/ASM
+semen/M
+semester/SM
+semi/MS
+semiannual/Y
+semiarid
+semiautomatic/MS
+semibreve/S
+semicircle/SM
+semicircular
+semicolon/MS
+semiconducting
+semiconductor/MS
+semiconscious
+semidarkness/M
+semidetached
+semifinal/SM
+semifinalist/MS
+semigloss/S
+semimonthly/SM
+seminal
+seminar/MS
+seminarian/SM
+seminary/SM
+semiofficial
+semiotic/S
+semiotics/M
+semipermeable
+semiprecious
+semiprivate
+semipro/S
+semiprofessional/SM
+semiquaver/S
+semiretired
+semiskilled
+semisolid
+semisweet
+semitone/SM
+semitrailer/MS
+semitransparent
+semitropical
+semivowel/SM
+semiweekly/SM
+semiyearly
+semolina/M
+sempstress/MS
+senate/SM
+senator/MS
+senatorial
+send/ZGRS
+sender/M
+sendoff/MS
+senescence/M
+senescent
+senile
+senility/M
+senior/SM
+seniority/M
+senna/M
+senor/MS
+senora/SM
+senorita/SM
+sensation/MS
+sensational/Y
+sensationalism/M
+sensationalist/MS
+sensationalize/GDS
+sense/MGDS
+senseless/PY
+senselessness/M
+sensibilities
+sensibility/IM
+sensible/P
+sensibleness/M
+sensibly/I
+sensitive/SMYP
+sensitiveness/M
+sensitivities
+sensitivity/IM
+sensitization/CM
+sensitize/CDSG
+sensor/SM
+sensory
+sensual/Y
+sensualist/SM
+sensuality/M
+sensuous/YP
+sensuousness/M
+sent/FAU
+sentence/MGDS
+sententious/Y
+sentience/IM
+sentient/I
+sentiment/SM
+sentimental/Y
+sentimentalism/M
+sentimentalist/MS
+sentimentality/M
+sentimentalization/M
+sentimentalize/GDS
+sentinel/MS
+sentry/SM
+sepal/MS
+separability/IM
+separable
+separably/I
+separate/XMYGNVDSP
+separateness/M
+separation/M
+separatism/M
+separatist/MS
+separator/MS
+sepia/M
+sepsis/M
+septa
+septal
+septet/SM
+septic
+septicemia/M
+septicemic
+septuagenarian/MS
+septum/M
+sepulcher/GMDS
+sepulchral
+seq
+sequel/SM
+sequence/MZGDRS
+sequencing/M
+sequential/FY
+sequester/SDG
+sequestrate/XGNDS
+sequestration/M
+sequin/SMD
+sequinned
+sequitur
+sequoia/MS
+seraglio/MS
+serape/SM
+seraph/M
+seraphic
+seraphs
+sere/TR
+serenade/MGDS
+serendipitous
+serendipity/M
+serene/RPYT
+sereneness/M
+serenity/M
+serf/MS
+serfdom/M
+serge/M
+sergeant/MS
+serial/SMY
+serialization/SM
+serialize/GDS
+series/M
+serif/MS
+serigraph/M
+serigraphs
+serine
+serious/PY
+seriousness/M
+sermon/SM
+sermonize/GDS
+serology/M
+serotonin
+serous
+serpent/MS
+serpentine/M
+serrate/XND
+serration/M
+serried
+serum/MS
+servant/MS
+serve's/AF
+serve/FACGDS
+server/SM
+servery/S
+service/EMS
+serviceability/M
+serviceable
+serviced
+serviceman/M
+servicemen
+servicewoman/M
+servicewomen
+servicing
+serviette/MS
+servile
+servility/M
+serving's
+servings
+servitor/MS
+servitude/M
+servo/MS
+servomechanism/SM
+servomotor/MS
+sesame/SM
+sesquicentennial/MS
+session/MS
+set/AISM
+setback/MS
+setscrew/SM
+setsquare/S
+sett/BJZGRS
+settee/MS
+setter/M
+setting/M
+settle's
+settle/AUGDS
+settlement/AM
+settlements
+settler/SM
+setup/MS
+seven/MHS
+seventeen/SMH
+seventeenth/M
+seventeenths
+seventh/M
+sevenths
+seventieth/M
+seventieths
+seventy/SMH
+sever/ETGDS
+several/MY
+severance/SM
+severe/YPR
+severeness/M
+severity/M
+sew/ASGD
+sewage/M
+sewer/MS
+sewerage/M
+sewing/M
+sewn/A
+sex/GMDS
+sexagenarian/SM
+sexily
+sexiness/M
+sexism/M
+sexist/MS
+sexless
+sexologist/SM
+sexology/M
+sexpot/MS
+sextant/SM
+sextet/MS
+sexting
+sexton/MS
+sextuplet/SM
+sexual/Y
+sexuality/M
+sexy/PTR
+sf
+sh
+shabbily
+shabbiness/M
+shabby/PTR
+shack/MDSG
+shackle's
+shackle/UGDS
+shad/GMDSJ
+shade/MS
+shadily
+shadiness/M
+shading/M
+shadow/SGMD
+shadowbox/GDS
+shadowy/RT
+shady/RPT
+shaft/MDSG
+shag/MS
+shagged
+shagginess/M
+shagging
+shaggy/TPR
+shah/M
+shahs
+shake/MZGRS
+shakedown/SM
+shaken/U
+shakeout/MS
+shaker/M
+shakeup/MS
+shakily
+shakiness/M
+shaky/RPT
+shale/M
+shall
+shallot/MS
+shallow/TPMRYS
+shallowness/M
+shalom
+shalt
+sham/GMDS
+shaman/SM
+shamanic
+shamanism
+shamanistic
+shamble/MGDS
+shambles/M
+shambolic
+shame/MS
+shamefaced/Y
+shameful/PY
+shamefulness/M
+shameless/YP
+shamelessness/M
+shammed
+shamming
+shampoo/ZGMDRS
+shampooer/M
+shamrock/MS
+shan't
+shandy/S
+shanghai/DSG
+shank/MS
+shantung/M
+shanty/SM
+shantytown/SM
+shape's
+shape/AGDS
+shaped/U
+shapeless/YP
+shapelessness/M
+shapeliness/M
+shapely/PTR
+shard/MS
+share/MZGDRS
+shareable
+sharecrop/S
+sharecropped
+sharecropper/MS
+sharecropping
+shareholder/SM
+shareholding/S
+sharer/M
+shareware/M
+sharia/M
+shariah
+shark/MDSG
+sharkskin/M
+sharp/MDNRYSPXZTG
+sharpen/ADGS
+sharpener/MS
+sharper/M
+sharpie/MS
+sharpish
+sharpness/M
+sharpshooter/SM
+sharpshooting/M
+shatter/GMDS
+shatterproof
+shave/MZGDRSJ
+shaven/U
+shaver/M
+shaving/M
+shawl/MS
+shay/MS
+she'd
+she'll
+she/DSM
+sheaf/M
+shear/MDRSZG
+shearer/M
+sheath/JM
+sheathe/UGDS
+sheathing/M
+sheaths
+sheave/DSMG
+shebang/MS
+shebeen/S
+shed/MS
+shedding
+sheen/M
+sheeny/TR
+sheep/M
+sheepdog/MS
+sheepfold/SM
+sheepherder/MS
+sheepish/YP
+sheepishness/M
+sheepskin/MS
+sheer/MDRSPTG
+sheerness/M
+sheet/MSG
+sheeting/M
+sheetlike
+sheikdom/MS
+sheikh/M
+sheikhs
+sheila/S
+shekel/SM
+shelf/M
+shell/MDRSG
+shellac/MS
+shellacked
+shellacking/MS
+shellfire/M
+shellfish/MS
+shelter/GMDS
+shelve/GDS
+shelving/M
+shenanigan/SM
+shepherd/SMDG
+shepherdess/MS
+sherbet/SM
+sheriff/SM
+sherry/SM
+shew/GDS
+shewn
+shh
+shiatsu/M
+shibboleth/M
+shibboleths
+shield/MDGS
+shift/GMDS
+shiftily
+shiftiness/M
+shiftless/PY
+shiftlessness/M
+shifty/RPT
+shiitake/SM
+shill/GMDSJ
+shillelagh/M
+shillelaghs
+shilling/M
+shim/MS
+shimmed
+shimmer/SMDG
+shimmery
+shimming
+shimmy/DSMG
+shin/ZGMDRS
+shinbone/SM
+shindig/SM
+shine/MS
+shiner/M
+shingle/DSMG
+shinguard/M
+shininess/M
+shinned
+shinning
+shinny/DSG
+shinsplints/M
+shiny/TRP
+ship's
+ship/ALS
+shipboard/MS
+shipbuilder/SM
+shipbuilding/M
+shipload/SM
+shipmate/SM
+shipment/AM
+shipments
+shipowner/MS
+shipped/A
+shipper/SM
+shipping/M
+shipshape
+shipwreck/GMDS
+shipwright/MS
+shipyard/SM
+shire/MS
+shirk/ZGDRS
+shirker/M
+shirr/GMDSJ
+shirring/M
+shirt/GMDS
+shirtfront/SM
+shirting/M
+shirtless
+shirtsleeve/SM
+shirttail/SM
+shirtwaist/MS
+shirty
+shit/SM!
+shitfaced/!
+shithead/S!
+shitload/!
+shitted/!
+shitting/!
+shitty/RT!
+shiv/ZMRS
+shiver/MDG
+shivery
+shoal/GMDS
+shoat/MS
+shock/ZGMDRS
+shocker/M
+shocking/Y
+shockproof
+shod/U
+shoddily
+shoddiness/M
+shoddy/PRMT
+shoe/MS
+shoehorn/GMDS
+shoeing
+shoelace/MS
+shoemaker/SM
+shoeshine/SM
+shoestring/SM
+shoetree/MS
+shogun/MS
+shogunate/M
+shone
+shoo/GDS
+shook
+shoot/ZGMRSJ
+shooter/M
+shooting/M
+shootout/MS
+shop/MS
+shopaholic/MS
+shopfitter/S
+shopfitting
+shopfront/S
+shopkeeper/MS
+shoplift/DRZGS
+shoplifter/M
+shoplifting/M
+shoppe/MZGDRS
+shopper/M
+shopping/M
+shoptalk/M
+shopworn
+shore/MGDS
+shorebird/SM
+shoreline/MS
+shoring/M
+short/XTGMDNRYSP
+shortage/MS
+shortbread/M
+shortcake/MS
+shortchange/DSG
+shortcoming/MS
+shortcrust
+shortcut/MS
+shorten/JGD
+shortening/M
+shortfall/MS
+shorthand/MD
+shorthorn/MS
+shortish
+shortlist/DGS
+shortness/M
+shortsighted/PY
+shortsightedness/M
+shortstop/MS
+shortwave/MS
+shorty/SM
+shot/MS
+shotgun/SM
+shotgunned
+shotgunning
+should
+should've
+shoulder/MDGS
+shouldn't
+shout/ZGMDRS
+shouter/M
+shove/MGDS
+shovel/MDSG
+shovelful/SM
+show/JZGMDRS
+showbiz/M
+showboat/MDGS
+showcase/MGDS
+showdown/MS
+shower/MDG
+showerproof
+showery
+showgirl/MS
+showground/S
+showily
+showiness/M
+showing/M
+showjumping
+showman/M
+showmanship/M
+showmen
+shown
+showoff/SM
+showpiece/SM
+showplace/SM
+showroom/MS
+showstopper/MS
+showstopping
+showtime
+showy/TRP
+shpt
+shrank
+shrapnel/M
+shred/MS
+shredded
+shredder/MS
+shredding
+shrew/MS
+shrewd/RYPT
+shrewdness/M
+shrewish
+shriek/MDSG
+shrift/M
+shrike/MS
+shrill/DRSPTG
+shrillness/M
+shrilly
+shrimp/MDRSZG
+shrine/MS
+shrink/MSBG
+shrinkage/M
+shrive/GDS
+shrivel/SGD
+shriven
+shroud/GMDS
+shrub/MS
+shrubbery/SM
+shrubby/RT
+shrug/MS
+shrugged
+shrugging
+shrunk/N
+shtick/MS
+shuck/GMDS
+shucks/S
+shudder/MDSG
+shuffle/AMGDS
+shuffleboard/SM
+shuffler/SM
+shun/S
+shunned
+shunning
+shunt/MSDG
+shush/DSG
+shut/S
+shutdown/SM
+shuteye/M
+shutoff/SM
+shutout/SM
+shutter/SMDG
+shutterbug/MS
+shutting
+shuttle/DSMG
+shuttlecock/GMDS
+shy/TGDRSMY
+shyer
+shyest
+shyness/M
+shyster/SM
+sibilant/SM
+sibling/SM
+sibyl/MS
+sibylline
+sic/S
+sicced
+siccing
+sick/PXTGDNRYS
+sickbay/S
+sickbed/SM
+sicken/DG
+sickening/Y
+sickie/MS
+sickish
+sickle/MS
+sickly/RT
+sickness/MS
+sicko/MS
+sickout/SM
+sickroom/MS
+side's
+side/AGDS
+sidearm/SM
+sidebar/SM
+sideboard/SM
+sideburns/M
+sidecar/SM
+sidekick/SM
+sidelight/MS
+sideline/DSMG
+sidelong
+sideman/M
+sidemen
+sidepiece/MS
+sidereal
+sidesaddle/MS
+sideshow/MS
+sidesplitting
+sidestep/MS
+sidestepped
+sidestepping
+sidestroke/DSMG
+sideswipe/DSMG
+sidetrack/SMDG
+sidewalk/MS
+sidewall/MS
+sideways
+sidewinder/SM
+siding/MS
+sidle/MGDS
+siege/MS
+sienna/M
+sierra/MS
+siesta/MS
+sieve/MGDS
+sift/ZGDRS
+sifted/U
+sifter/M
+sigh/GMD
+sighs
+sight/GMDYSJ
+sighting/M
+sightless
+sightly/UTR
+sightread
+sightseeing/M
+sightseer/MS
+sigma/MS
+sign's/C
+sign/AFCGDS
+signage/M
+signal/MDRYSZG
+signaler/M
+signalization/M
+signalize/GDS
+signalman/M
+signalmen
+signatory/SM
+signature/MS
+signboard/MS
+signed/U
+signer/CMS
+signet/MS
+significance/IM
+significant/IY
+signification/M
+signify/XDSNG
+signing's/C
+signings
+signor/FMS
+signora/SM
+signore
+signori
+signorina/MS
+signorine
+signpost/GSMD
+silage/M
+silence/DRSMZG
+silencer/M
+silent/MRYST
+silhouette/DSMG
+silica/M
+silicate/MS
+siliceous
+silicon/SM
+silicone/M
+silicosis/M
+silk/MNS
+silkily
+silkiness/M
+silkscreen/SM
+silkworm/MS
+silky/TRP
+sill/MS
+silliness/M
+silly/TRSMP
+silo/MS
+silt/GMDS
+silty/TR
+silver/GMDS
+silverfish/MS
+silversmith/M
+silversmiths
+silverware/M
+silvery
+sim/SM
+simian/MS
+similar/Y
+similarity/ESM
+simile/MS
+similitude/EM
+simmer/GMDS
+simonize/DSG
+simony/M
+simpatico
+simper/GMDS
+simpering/Y
+simple/TRP
+simpleminded
+simpleness/M
+simpleton/SM
+simplex
+simplicity/M
+simplification/M
+simplify/DSXNG
+simplistic
+simplistically
+simply
+simulacra
+simulacrum/S
+simulate/EDSGN
+simulation/EM
+simulations
+simulator/EMS
+simulcast/GMDS
+simultaneity/M
+simultaneous/Y
+sin/ASM
+since
+sincere/IYT
+sincerer
+sincerity/IM
+sine/MS
+sinecure/MS
+sinew/MS
+sinewy
+sinful/PY
+sinfulness/M
+sing/BZGMDRYS
+singalong/S
+singe/MS
+singeing
+singer/M
+singing/M
+single/PMGDS
+singleness/M
+singles/M
+singlet/S
+singleton/SM
+singletree/SM
+singsong/SMDG
+singular/SMY
+singularity/SM
+sinister
+sink/BZGMRS
+sinkable/U
+sinker/M
+sinkhole/SM
+sinless
+sinned
+sinner/MS
+sinning
+sinology
+sinuosity/M
+sinuous/Y
+sinus/MS
+sinusitis/M
+sinusoidal
+sip/SM
+siphon/GMDS
+sipped
+sipper/SM
+sipping
+sir/SXMN
+sire/CMGDS
+siren/M
+sirloin/SM
+sirocco/SM
+sirrah
+sirree/M
+sis/MS
+sisal/M
+sissified
+sissy/RSMT
+sister/ASM
+sisterhood/MS
+sisterliness/M
+sisterly/P
+sit/S
+sitar/SM
+sitarist/MS
+sitcom/SM
+site/MGDS
+sitemap/SM
+sitter/SM
+sitting/SM
+situate/DSXGN
+situation/M
+situational
+six/MSH
+sixfold
+sixpence/MS
+sixshooter/M
+sixteen/SMH
+sixteenth/M
+sixteenths
+sixth/M
+sixths
+sixtieth/M
+sixtieths
+sixty/SMH
+sizable
+size's
+size/AGDS
+sizer
+sizing/M
+sizzle/DRSMZG
+ska/M
+skate/MZGDRS
+skateboard/MDRSZG
+skateboarder/M
+skateboarding/M
+skater/M
+skating/M
+skedaddle/MGDS
+skeet/ZMR
+skein/MS
+skeletal
+skeleton/SM
+skeptic/SM
+skeptical/Y
+skepticism/M
+sketch/MDRSZG
+sketchbook/S
+sketcher/M
+sketchily
+sketchiness/M
+sketchpad/S
+sketchy/RTP
+skew/MDRZGS
+skewbald/S
+skewer/MDG
+ski/SZGMDR
+skibob/S
+skid/MS
+skidded
+skidding
+skidpan/S
+skier/M
+skiff/SM
+skiffle
+skiing/M
+skill's
+skill/CSD
+skilled/U
+skillet/SM
+skillful/UY
+skillfulness/M
+skim/MS
+skimmed
+skimmer/SM
+skimming
+skimp/SDG
+skimpily
+skimpiness/M
+skimpy/RTP
+skin/MS
+skincare/M
+skinflint/MS
+skinful
+skinhead/MS
+skinless
+skinned
+skinniness/M
+skinning
+skinny/RMTP
+skint
+skintight
+skip/MS
+skipped
+skipper/SMDG
+skipping
+skirmish/ZGMDRS
+skirt/SMDG
+skit/MS
+skitter/GSD
+skittish/YP
+skittishness/M
+skittle/S
+skive/DRSZG
+skivvy/DSMG
+skoal/SM
+skua/S
+skulduggery/M
+skulk/SDRZG
+skulker/M
+skull/SM
+skullcap/MS
+skunk/SMDG
+sky/GSM
+skycap/SM
+skydive/DRSZG
+skydiver/M
+skydiving/M
+skyjack/JZGSDR
+skyjacker/M
+skyjacking/M
+skylark/SGMD
+skylight/MS
+skyline/SM
+skyrocket/GSMD
+skyscraper/SM
+skyward/S
+skywriter/SM
+skywriting/M
+slab/MS
+slabbed
+slabbing
+slack/PXZTGMDNRYS
+slacken/DG
+slacker/M
+slackness/M
+slacks/M
+slag/MS
+slagged
+slagging
+slagheap/S
+slain
+slake/GDS
+slalom/MSDG
+slam/MS
+slammed
+slammer/SM
+slamming
+slander/MZGDRS
+slanderer/M
+slanderous
+slang/M
+slangy/RT
+slant/MSDG
+slanting/Y
+slantwise
+slap/MS
+slapdash
+slaphappy
+slapped
+slapper/S
+slapping
+slapstick/M
+slash/MDRSZG
+slasher/M
+slat/MDGS
+slate/SM
+slather/SDG
+slatted
+slattern/SMY
+slaughter/MDRZGS
+slaughterer/M
+slaughterhouse/MS
+slave/DRSMZG
+slaveholder/MS
+slaver/MDG
+slavery/M
+slavish/PY
+slavishness/M
+slaw/M
+slay/DRZGJS
+slayer/M
+slaying/M
+sleaze/SM
+sleazebag/S
+sleazeball/S
+sleazily
+sleaziness/M
+sleazy/PRT
+sled/MS
+sledded
+sledder/SM
+sledding
+sledge/DSMG
+sledgehammer/GSMD
+sleek/SDRYTGP
+sleekness/M
+sleep/SMRZG
+sleeper/M
+sleepily
+sleepiness/M
+sleepless/PY
+sleeplessness/M
+sleepover/SM
+sleepwalk/ZGSDR
+sleepwalker/M
+sleepwalking/M
+sleepwear/M
+sleepy/RPT
+sleepyhead/MS
+sleet/SMDG
+sleety
+sleeve/DSM
+sleeveless
+sleigh/MDG
+sleighs
+sleight/SM
+slender/PRT
+slenderize/DSG
+slenderness/M
+slept
+sleuth/MG
+sleuths
+slew/MDGS
+slice/DRSMZG
+slicer/M
+slick/SMDRYZTGP
+slicker/M
+slickness/M
+slid
+slide/RSMZG
+slider/M
+slideshow/MS
+slight/SMDRYTGP
+slightness/M
+slim/PS
+slime/M
+sliminess/M
+slimline
+slimmed
+slimmer/S
+slimmest
+slimming/M
+slimness/M
+slimy/RTP
+sling/SMG
+slingback/S
+slingshot/SM
+slink/SG
+slinky/RT
+slip/MS
+slipcase/MS
+slipcover/MS
+slipknot/MS
+slippage/MS
+slipped
+slipper/SM
+slipperiness/M
+slippery/PRT
+slipping
+slippy
+slipshod
+slipstream/SM
+slipway/SM
+slit/MS
+slither/SGMD
+slithery
+slitter
+slitting
+sliver/GSMD
+slob/MS
+slobbed
+slobber/MDSG
+slobbery
+slobbing
+sloe/MS
+slog/MS
+slogan/SM
+sloganeering
+slogged
+slogging
+sloop/SM
+slop/MDGS
+slope/SM
+slopped
+sloppily
+sloppiness/M
+slopping
+sloppy/PTR
+slops/M
+slosh/DSG
+slot/MS
+sloth/M
+slothful/YP
+slothfulness/M
+sloths
+slotted
+slotting
+slouch/ZGMDRS
+sloucher/M
+slouchy/TR
+slough/GMD
+sloughs
+sloven/SMY
+slovenliness/M
+slovenly/PTR
+slow/DRYTGSP
+slowcoach/S
+slowdown/SM
+slowness/M
+slowpoke/SM
+sludge/M
+sludgy/RT
+slue/MGDS
+slug/MS
+sluggard/MS
+slugged
+slugger/SM
+slugging
+sluggish/PY
+sluggishness/M
+sluice/DSMG
+slum/MS
+slumber/GSMD
+slumberous
+slumdog/SM
+slumlord/MS
+slummed
+slummer
+slumming
+slummy/RT
+slump/SMDG
+slung
+slunk
+slur/MS
+slurp/SMDG
+slurred
+slurring
+slurry/M
+slush/M
+slushiness/M
+slushy/RPT
+slut/MS
+sluttish
+slutty/RT
+sly/TRY
+slyness/M
+smack/SMDRZG
+smacker/M
+small/SMRTP
+smallholder/S
+smallholding/S
+smallish
+smallness/M
+smallpox/M
+smarmy/RT
+smart/SMDNRYXTGP
+smarten/DG
+smartness/M
+smartphone/SM
+smarts/M
+smartwatch/MS
+smarty/SM
+smartypants/M
+smash/MDRSZG
+smasher/M
+smashup/SM
+smattering/MS
+smear/SMDG
+smeary/RT
+smell/SMDG
+smelliness/M
+smelly/RPT
+smelt/SMDRZG
+smelter/M
+smidgen/MS
+smilax/M
+smile/DSMG
+smiley/SM
+smiling/Y
+smirch/GMDS
+smirk/SMDG
+smite/SG
+smith/M
+smithereens/M
+smiths
+smithy/SM
+smitten
+smock/SMDG
+smocking/M
+smog/MS
+smoggy/RT
+smoke/DRSMZG
+smokehouse/MS
+smokeless
+smoker/M
+smokescreen/SM
+smokestack/SM
+smokey
+smokiness/M
+smoking/M
+smoky/RTP
+smolder/SGMD
+smooch/MDSG
+smoochy
+smooth/PDRYTG
+smoothie/MS
+smoothness/M
+smooths
+smorgasbord/SM
+smote
+smother/GSMD
+smudge/DSMG
+smudgy/TR
+smug/YP
+smugger
+smuggest
+smuggle/ZGDRS
+smuggler/M
+smuggling/M
+smugness/M
+smurf/S
+smut/MS
+smuttiness/M
+smutty/TRP
+snack/SMDG
+snaffle/DSMG
+snafu/SM
+snag/MS
+snagged
+snagging
+snail/SMDG
+snake/DSMG
+snakebite/MS
+snakelike
+snakeskin
+snaky/RT
+snap's
+snap/US
+snapdragon/SM
+snapped/U
+snapper/MS
+snappily
+snappiness/M
+snapping/U
+snappish/YP
+snappishness/M
+snappy/TRP
+snapshot/SM
+snare/DSMG
+snarf/SDG
+snark/S
+snarky/TR
+snarl's
+snarl/USDG
+snarling/Y
+snarly/TR
+snatch/ZGMDRS
+snatcher/M
+snazzily
+snazzy/TR
+sneak/SMDRZG
+sneaker/M
+sneakily
+sneakiness/M
+sneaking/Y
+sneaky/TRP
+sneer/SJMDG
+sneering/Y
+sneeze/DSMG
+snick/SDRZG
+snicker/MDG
+snide/RYT
+sniff/SMDRZG
+sniffer/M
+sniffle/DSMG
+sniffy/RT
+snifter/SM
+snip/MDRZGS
+snipe/SM
+sniper/M
+snipped
+snippet/SM
+snipping
+snippy/RT
+snips/M
+snit/MS
+snitch/MDSG
+snivel/SMDRZG
+sniveler/M
+snob/MS
+snobbery/M
+snobbish/PY
+snobbishness/M
+snobby/RT
+snog/S
+snogged
+snogging
+snood/SM
+snooker/MDSG
+snoop/SMDRZG
+snooper/M
+snoopy/TR
+snoot/SM
+snootily
+snootiness/M
+snooty/PTR
+snooze/DSMG
+snore/DRSMZG
+snorer/M
+snorkel/ZGMDRS
+snorkeler/M
+snorkeling/M
+snort/SMDRZG
+snorter/M
+snot/MS
+snottily
+snottiness/M
+snotty/TPR
+snout/SM
+snow/MDGS
+snowball/GSMD
+snowbank/SM
+snowbird/SM
+snowblower/MS
+snowboard/ZGMDRS
+snowboarder/M
+snowboarding/M
+snowbound
+snowdrift/SM
+snowdrop/SM
+snowfall/SM
+snowfield/SM
+snowflake/SM
+snowiness/M
+snowline
+snowman/M
+snowmen
+snowmobile/DSMG
+snowplow/SGMD
+snowshed
+snowshoe/SM
+snowshoeing
+snowstorm/SM
+snowsuit/SM
+snowy/PRT
+snub/MS
+snubbed
+snubbing
+snuff/SMDRYZG
+snuffbox/MS
+snuffer/M
+snuffle/MGDS
+snug/MYSP
+snugged
+snugger
+snuggest
+snugging
+snuggle/MGDS
+snugness/M
+so
+soak/MDGSJ
+soaking/M
+soap/MDGS
+soapbox/MS
+soapiness/M
+soapstone/M
+soapsuds/M
+soapy/RPT
+soar/MDGS
+sob/SM
+sobbed
+sobbing/Y
+sober/SDRYPTG
+soberness/M
+sobriety/IM
+sobriquet/SM
+soc
+soccer/M
+sociability/M
+sociable/SM
+sociably
+social/SMY
+socialism/M
+socialist/SM
+socialistic
+socialite/SM
+socialization/M
+socialize/DSG
+societal
+society/SM
+socioeconomic
+socioeconomically
+sociological/Y
+sociologist/SM
+sociology/M
+sociopath/M
+sociopaths
+sociopolitical
+sock/MDGS
+socket/SM
+sockeye/SM
+sod/SM
+soda/MS
+sodded
+sodden/Y
+sodding
+sodium/M
+sodomite/MS
+sodomize/GDS
+sodomy/M
+soever
+sofa/MS
+soft/NRYXTP
+softback
+softball/MS
+softbound
+softcover
+soften/DRZG
+softener/M
+softhearted
+softness/M
+software/M
+softwood/SM
+softy/SM
+soggily
+sogginess/M
+soggy/RTP
+soigne
+soignee
+soil/MDGS
+soiled/U
+soiree/SM
+sojourn/ZGMDRS
+sojourner/M
+sol/SM
+solace/DSMG
+solar
+solaria
+solarium/M
+sold
+solder/ZGSMDR
+solderer/M
+soldier/MDYSG
+soldiery/M
+sole/FSDGM
+solecism/SM
+solely
+solemn/PTRY
+solemness/M
+solemnify/DSG
+solemnity/SM
+solemnization/M
+solemnize/DSG
+solemnness/M
+solenoid/MS
+solicit/GDS
+solicitation/SM
+solicited/U
+solicitor/SM
+solicitous/PY
+solicitousness/M
+solicitude/M
+solid/PSMRYT
+solidarity/M
+solidi
+solidification/M
+solidify/DSNG
+solidity/M
+solidness/M
+solidus/M
+soliloquies
+soliloquize/DSG
+soliloquy/M
+solipsism/M
+solipsistic
+solitaire/MS
+solitariness/M
+solitary/SMP
+solitude/M
+solo/MDGS
+soloist/MS
+solstice/MS
+solubility/IM
+soluble/MS
+solute's
+solute/AXN
+solutes
+solution's/AE
+solvable/IU
+solve/EADSG
+solved/U
+solvency/IM
+solvent/IMS
+solver/SM
+somatic
+somber/PY
+somberness/M
+sombrero/MS
+some
+somebody/SM
+someday
+somehow
+someone/MS
+someplace
+somersault/MDGS
+somerset/SM
+somersetted
+somersetting
+something/SM
+sometime/S
+someway/S
+somewhat/S
+somewhere
+somnambulism/M
+somnambulist/SM
+somnolence/M
+somnolent
+son/SM
+sonar/SM
+sonata/SM
+sonatina/SM
+song/MS
+songbird/SM
+songbook/SM
+songfest/SM
+songster/MS
+songstress/MS
+songwriter/SM
+songwriting
+sonic
+sonnet/SM
+sonny/SM
+sonogram/SM
+sonority/M
+sonorous/YP
+sonorousness/M
+sonsofbitches
+soon/RT
+soot/M
+sooth/MDRSZG
+soothe
+soother/M
+soothing/Y
+soothsayer/MS
+soothsaying/M
+sooty/RT
+sop/SM
+soph
+sophism/M
+sophist/MS
+sophistic
+sophistical
+sophisticate/DSMGN
+sophisticated/U
+sophistication/M
+sophistry/SM
+sophomore/MS
+sophomoric
+soporific/MS
+soporifically
+sopped
+sopping
+soppy/RT
+soprano/MS
+sorbet/SM
+sorcerer/MS
+sorceress/MS
+sorcery/M
+sordid/PY
+sordidness/M
+sore/MYTRSP
+sorehead/MS
+soreness/M
+sorghum/M
+sorority/SM
+sorrel/SM
+sorrily
+sorriness/M
+sorrow/SMDG
+sorrowful/YP
+sorrowfulness/M
+sorry/RTP
+sort/FASGDM
+sorta
+sorted/U
+sorter/SM
+sortie/DSM
+sortieing
+sot/SM
+sottish
+sou'wester
+sou/SMH
+souffle/SM
+sough/MDG
+soughs
+sought/U
+souk/S
+soul/MS
+soulful/YP
+soulfulness/M
+soulless/YP
+soulmate/SM
+sound/JPSMDRYZTG
+soundalike/S
+soundbar/S
+soundbite/S
+soundboard/MS
+soundcheck/S
+sounder/M
+sounding/M
+soundless/Y
+soundness/UM
+soundproof/GDS
+soundproofing/M
+soundscape/S
+soundtrack/SM
+soup/MDGS
+soupcon/MS
+soupy/RT
+sour/MDRYTGSP
+source/ADSMG
+sourdough/M
+sourdoughs
+sourish
+sourness/M
+sourpuss/MS
+sousaphone/MS
+souse/DSMG
+south/M
+southbound
+southeast/ZMR
+southeaster/MY
+southeastern
+southeastward/S
+southerly/SM
+southern/SZMR
+southerner/M
+southernmost
+southpaw/SM
+southward/MS
+southwest/ZMR
+southwester/MY
+southwestern
+southwestward/S
+souvenir/SM
+sovereign/SM
+sovereignty/M
+soviet/SM
+sow's
+sow/ASGD
+sower/SM
+sown/A
+soy/M
+soybean/MS
+sozzled
+spa/SM
+space/DRSMZG
+spacecraft/MS
+spaceflight/MS
+spaceman/M
+spacemen
+spaceport/SM
+spacer/M
+spaceship/SM
+spacesuit/SM
+spacewalk/SGMD
+spacewoman/M
+spacewomen
+spacey
+spacial
+spacier
+spaciest
+spaciness/M
+spacing/M
+spacious/YP
+spaciousness/M
+spade/DSMG
+spadeful/MS
+spadework/M
+spadices
+spadix/M
+spaghetti/M
+spake
+spam/MS
+spammed
+spammer/SM
+spamming
+span/MS
+spandex/M
+spangle/DSMG
+spangly
+spaniel/SM
+spank/SMDGJ
+spanking/M
+spanned
+spanner/SM
+spanning
+spar/MS
+spare/DRSMYTGP
+spareness/M
+spareribs/M
+sparing/UY
+spark/SMDYG
+sparkle/DRSMZG
+sparkler/M
+sparky/RT
+sparred
+sparring
+sparrow/SM
+sparrowhawk/S
+sparse/RYTP
+sparseness/M
+sparsity/M
+spartan
+spasm/SM
+spasmodic
+spasmodically
+spastic/SM
+spat/MS
+spate/SM
+spathe/SM
+spatial/Y
+spatted
+spatter/SGMD
+spatting
+spatula/SM
+spavin/MD
+spawn/SMDG
+spay/DGS
+speak/SRZGJ
+speakeasy/SM
+speaker/M
+speakerphone/S
+spear/SMDG
+spearfish/GMDS
+speargun
+spearhead/GMDS
+spearmint/M
+spec/MS
+special/SMY
+specialism/S
+specialist/MS
+specialization/MS
+specialize/GDS
+specialty/SM
+specie/SM
+species/M
+specif
+specifiable
+specific/MS
+specifically
+specification/M
+specificity/M
+specified/U
+specify/XNZDRSG
+specimen/SM
+specious/YP
+speciousness/M
+speck/SMDG
+speckle/MGDS
+specs/M
+spectacle/SM
+spectacles/M
+spectacular/MYS
+spectate/DSG
+spectator/SM
+specter/AMS
+spectra
+spectral
+spectrometer/MS
+spectroscope/MS
+spectroscopic
+spectroscopy/M
+spectrum/M
+speculate/DSXGNV
+speculation/M
+speculative/Y
+speculator/MS
+sped
+speech/MS
+speechify/DSG
+speechless/YP
+speechlessness/M
+speechwriter/S
+speed/SMRZG
+speedboat/SM
+speeder/M
+speedily
+speediness/M
+speeding/M
+speedometer/MS
+speedster/SM
+speedup/MS
+speedway/SM
+speedwell/M
+speedy/TPR
+speleological
+speleologist/MS
+speleology/M
+spell/JSMDRZG
+spellbind/ZGRS
+spellbinder/M
+spellbound
+spellcheck/MDRZGS
+spellchecker/M
+spelldown/SM
+speller/M
+spelling/M
+spelunker/MS
+spelunking/M
+spend/BSRZG
+spender/M
+spending/M
+spendthrift/MS
+spent/U
+sperm/SM
+spermatozoa
+spermatozoon/M
+spermicidal
+spermicide/MS
+spew/MDRZGS
+spewer/M
+sphagnum/MS
+sphere/SM
+spherical/Y
+spheroid/SM
+spheroidal
+sphincter/MS
+sphinx/MS
+spic/S
+spice/DSMG
+spicily
+spiciness/M
+spicule/MS
+spicy/PRT
+spider/SM
+spiderweb/MS
+spidery
+spiel/SMDG
+spiff/SDG
+spiffy/TR
+spigot/SM
+spike/DSMG
+spikiness/M
+spiky/RPT
+spill/SMDG
+spillage/MS
+spillover/SM
+spillway/MS
+spin/MS
+spinach/M
+spinal/SMY
+spindle/MGDS
+spindly/TR
+spine/SM
+spineless/YP
+spinet/SM
+spinnaker/SM
+spinner/MS
+spinneret/SM
+spinney/S
+spinning/M
+spinster/SM
+spinsterhood/M
+spinsterish
+spiny/RT
+spiracle/SM
+spiral/SGMDY
+spire's
+spire/IFAS
+spirea/SM
+spirit's
+spirit/ISGD
+spirited/Y
+spiritless
+spiritual/MYS
+spiritualism/M
+spiritualist/MS
+spiritualistic
+spirituality/M
+spirituous
+spirochete/SM
+spiry
+spit/MDGS
+spitball/SM
+spite/ASM
+spiteful/PY
+spitefuller
+spitefullest
+spitefulness/M
+spitfire/SM
+spitted
+spitting
+spittle/M
+spittoon/MS
+spiv/S
+splash/GMDS
+splashdown/MS
+splashily
+splashiness/M
+splashy/RTP
+splat/SM
+splatted
+splatter/GSMD
+splatting
+splay/SMDG
+splayfeet
+splayfoot/MD
+spleen/SM
+splendid/RYT
+splendor/MS
+splendorous
+splenectomy
+splenetic
+splice/DRSMZG
+splicer/M
+spliff/S
+spline/S
+splint/SZGMDR
+splinter/MDG
+splintery
+split/SM
+splitting/MS
+splodge/S
+splosh/DSG
+splotch/MDSG
+splotchy/TR
+splurge/DSMG
+splutter/GMDS
+spoil's
+spoil/CSDRZG
+spoilage/M
+spoiled/U
+spoiler/CM
+spoilsport/MS
+spoke/SM
+spoken/U
+spokesman/M
+spokesmen
+spokespeople
+spokesperson/MS
+spokeswoman/M
+spokeswomen
+spoliation/CM
+sponge/DRSMZG
+spongecake/M
+sponger/M
+sponginess/M
+spongy/RPT
+sponsor/MDGS
+sponsorship/M
+spontaneity/M
+spontaneous/Y
+spoof/SMDG
+spook/SMDG
+spookiness/M
+spooky/RPT
+spool/SMDG
+spoon/SMDG
+spoonbill/MS
+spoonerism/MS
+spoonful/SM
+spoor/SMDG
+sporadic
+sporadically
+spore/DSMG
+sporran/S
+sport/SMDGV
+sportiness/M
+sporting/Y
+sportive/Y
+sportscast/MRZGS
+sportscaster/M
+sportsman/M
+sportsmanlike/U
+sportsmanship/M
+sportsmen
+sportspeople
+sportsperson
+sportswear/M
+sportswoman/M
+sportswomen
+sportswriter/SM
+sporty/TPR
+spot/CMS
+spotless/PY
+spotlessness/M
+spotlight/GSMD
+spotlit
+spotted
+spotter/MS
+spottily
+spottiness/M
+spotting
+spotty/TPR
+spousal/MS
+spouse/SM
+spout/SMDG
+sprain/GSMD
+sprang
+sprat/SM
+sprawl/GSMD
+spray's
+spray/ASDG
+sprayer/MS
+spread/ZGBSMR
+spreadeagled
+spreader/M
+spreadsheet/MS
+spree/DSM
+spreeing
+sprig/SM
+sprigged
+sprightliness/M
+sprightly/RTP
+spring/GSM
+springboard/MS
+springbok/MS
+springily
+springiness/M
+springlike
+springtime/M
+springy/RPT
+sprinkle/DRSJMZG
+sprinkler/M
+sprinkling/M
+sprint/ZGSMDR
+sprinter/M
+sprite/SM
+spritz/ZGMDRS
+spritzer/M
+sprocket/MS
+sprog/S
+sprout/GSMD
+spruce/DRSPMYTG
+spruceness/M
+sprung
+spry/RYT
+spryness/M
+spud/MS
+spume/DSMG
+spumoni/M
+spumy
+spun
+spunk/SM
+spunky/TR
+spur/MS
+spurge/M
+spurious/PY
+spuriousness/M
+spurn/SDG
+spurred
+spurring
+spurt/SMDG
+sputa
+sputnik/MS
+sputter/MDGS
+sputum/M
+spy/GDSM
+spyglass/MS
+spymaster/S
+spyware/M
+sq
+sqq
+squab/SM
+squabble/MZGDRS
+squabbler/M
+squad/SM
+squadron/MS
+squalid/PTRY
+squalidness/M
+squall/SGMD
+squally
+squalor/M
+squamous
+squander/GDS
+square/PDRSMYTG
+squareness/M
+squarish
+squash/GMDS
+squashy/TR
+squat/SMP
+squatness/M
+squatted
+squatter/MS
+squattest
+squatting
+squaw/SM
+squawk/SZGMDR
+squawker/M
+squeak/SZGMDR
+squeaker/M
+squeakily
+squeakiness/M
+squeaky/TRP
+squeal/SZGMDR
+squealer/M
+squeamish/PY
+squeamishness/M
+squeegee/MDS
+squeegeeing
+squeeze/BMZGDRS
+squeezebox/S
+squeezer/M
+squelch/GMDS
+squelchy
+squib/SM
+squid/SM
+squidgy
+squiffy
+squiggle/DSMG
+squiggly
+squint/STGMDR
+squire/DSMG
+squirm/SGMD
+squirmy/RT
+squirrel/SGMD
+squirt/SGMD
+squish/GMDS
+squishy/RT
+sriracha
+ssh
+st
+stab/MYS
+stabbed
+stabber/MS
+stabbing/MS
+stability/IM
+stabilization/CM
+stabilize/CDSG
+stabilizer/MS
+stable/DRSMTG
+stableman/M
+stablemate/S
+stablemen
+stably/U
+staccato/MS
+stack/SMDG
+stadium/MS
+staff's
+staff/ASDG
+staffer/MS
+staffing/M
+stag/MDGSJ
+stage/SM
+stagecoach/MS
+stagecraft/M
+stagehand/MS
+stagestruck
+stagflation/M
+stagger/MDGS
+staggering/Y
+staging/M
+stagnancy/M
+stagnant/Y
+stagnate/DSGN
+stagnation/M
+stagy/RT
+staid/PRYT
+staidness/M
+stain/SMDG
+stained/U
+stainless/M
+stair/SM
+staircase/MS
+stairway/MS
+stairwell/SM
+stake/DSMG
+stakeholder/MS
+stakeout/SM
+stalactite/MS
+stalagmite/MS
+stale/DRSTGP
+stalemate/DSMG
+staleness/M
+stalk/SMDRJZG
+stalker/M
+stalking/M
+stall's
+stall/ISDG
+stallholder/S
+stallion/MS
+stalwart/MYS
+stamen/SM
+stamina/M
+stammer/ZGMDRS
+stammerer/M
+stammering/Y
+stamp/SMDRZG
+stampede/MGDS
+stamper/M
+stance/ISM
+stanch/TGDRS
+stanchion/SM
+stand/SMRJZG
+standalone
+standard/MS
+standardization/M
+standardize/DSG
+standby/M
+standbys
+standee/MS
+stander/M
+standing/M
+standoff/MS
+standoffish
+standout/MS
+standpipe/SM
+standpoint/MS
+standstill/MS
+stank
+stanza/SM
+staph/M
+staphylococcal
+staphylococci
+staphylococcus/M
+staple/DRSMZG
+stapler/M
+star/MDRZGS
+starboard/M
+starburst/S
+starch/GMDS
+starchily
+starchiness/M
+starchy/PTR
+stardom/M
+stardust/M
+stare/SM
+starer/M
+starfish/MS
+starfruit
+stargaze/DRSZG
+stargazer/M
+stark/RYPZT
+starkness/M
+starless
+starlet/MS
+starlight/M
+starling/SM
+starlit
+starred
+starring
+starry/TR
+starstruck
+start/ASMDG
+starter/MS
+startle/GDS
+startling/Y
+startup/MS
+starvation/M
+starve/DSJG
+starveling/MS
+stash/MDSG
+stasis
+stat/MS
+state/DRSMYGNLX
+statecraft/M
+stated/U
+statehood/M
+statehouse/MS
+stateless/P
+statelessness/M
+stateliness/M
+stately/PRT
+statement/AMS
+statemented
+statementing
+stateroom/MS
+stateside
+statesman/M
+statesmanlike
+statesmanship/M
+statesmen
+stateswoman/M
+stateswomen
+statewide
+static/SM
+statically
+station/MDRZG
+stationary
+stationer/M
+stationery/M
+stationmaster/S
+statistic/MS
+statistical/Y
+statistician/SM
+statuary/M
+statue/SM
+statuesque
+statuette/MS
+stature/MS
+status/MS
+statute/MS
+statutorily
+statutory
+staunch/PDRSYTG
+staunchness/M
+stave/DSMG
+stay/MDRZGS
+std
+stdio
+stead/SM
+steadfast/YP
+steadfastness/M
+steadily/U
+steadiness/UM
+steady/TGPDRSM
+steak/SM
+steakhouse/SM
+steal/SMHG
+stealth/M
+stealthily
+stealthiness/M
+stealthy/TPR
+steam/SMDRZG
+steamboat/MS
+steamer/M
+steamfitter/SM
+steamfitting/M
+steaminess/M
+steampunk
+steamroll/ZGDRS
+steamroller/MDG
+steamship/MS
+steamy/TPR
+steed/SM
+steel/SMDG
+steeliness/M
+steelmaker/S
+steelworker/SM
+steelworks/M
+steely/PTR
+steelyard/SM
+steep/SMDNRYPXTG
+steepen/GD
+steeple/MS
+steeplechase/MS
+steeplejack/SM
+steepness/M
+steer/SMDBG
+steerage/M
+steering/M
+steersman/M
+steersmen
+stegosauri
+stegosaurus/MS
+stein/SM
+stellar
+stem/MS
+stemless
+stemmed
+stemming
+stemware/M
+stench/MS
+stencil/GMDS
+steno/SM
+stenographer/SM
+stenographic
+stenography/M
+stenosis
+stent/SM
+stentorian
+step/IMS
+stepbrother/SM
+stepchild/M
+stepchildren/M
+stepdad/MS
+stepdaughter/SM
+stepfather/SM
+stepladder/MS
+stepmom/MS
+stepmother/SM
+stepparent/SM
+steppe/DRSMZG
+stepper/M
+steppingstone/SM
+stepsister/MS
+stepson/MS
+stereo/SM
+stereophonic
+stereoscope/MS
+stereoscopic
+stereotype/DSMG
+stereotypical
+sterile
+sterility/M
+sterilization/SM
+sterilize/DRSZG
+sterilizer/M
+sterling/M
+stern/SMRYPT
+sternness/M
+sternum/MS
+steroid/MS
+steroidal
+stertorous
+stet/S
+stethoscope/MS
+stetson/MS
+stetted
+stetting
+stevedore/SM
+stew/MDGS
+steward/GMDS
+stewardess/MS
+stewardship/M
+stick/SMRZG
+sticker/M
+stickily
+stickiness/M
+stickleback/SM
+stickler/MS
+stickpin/MS
+stickup/MS
+sticky/PTRSM
+stiff/SMDNRYPXTG
+stiffen/ZGDR
+stiffener/M
+stiffening/M
+stiffness/M
+stifle/DSJG
+stifling/Y
+stigma/SM
+stigmata
+stigmatic
+stigmatization/M
+stigmatize/GDS
+stile/SM
+stiletto/SM
+still's
+still/ITGSD
+stillbirth/M
+stillbirths
+stillborn
+stiller
+stillness/M
+stilt/SMD
+stilted/Y
+stimulant/SM
+stimulate/DSGNV
+stimulation/M
+stimuli
+stimulus/M
+sting/ZGSMR
+stinger/M
+stingily
+stinginess/M
+stingray/SM
+stingy/RTP
+stink/ZGSMR
+stinkbug/SM
+stinker/M
+stinky/RT
+stint/GSMD
+stipend/SM
+stipendiary/S
+stipple/DSMG
+stippling/M
+stipulate/XDSGN
+stipulation/M
+stir/MS
+stirred
+stirrer/SM
+stirring/SY
+stirrup/SM
+stitch's
+stitch/ADSG
+stitchery/M
+stitching/M
+stoat/SM
+stochastic
+stock's
+stock/AGSD
+stockade/DSMG
+stockbreeder/MS
+stockbroker/SM
+stockbroking/M
+stockholder/SM
+stockily
+stockiness/M
+stockinette/M
+stocking/SM
+stockist/S
+stockpile/MGDS
+stockpot/SM
+stockroom/MS
+stocktaking/M
+stocky/RTP
+stockyard/MS
+stodge
+stodgily
+stodginess/M
+stodgy/RTP
+stogie/MS
+stoic/SM
+stoical/Y
+stoicism/M
+stoke/DRSZG
+stoker/M
+stole/SM
+stolen
+stolid/RYTP
+stolidity/M
+stolidness/M
+stolon/MS
+stomach/MDRZG
+stomachache/SM
+stomacher/M
+stomachs
+stomp/GSMD
+stone/DRSMZG
+stonemason/MS
+stoner/M
+stonewall/GSD
+stoneware/M
+stonewashed
+stonework/M
+stonily
+stoniness/M
+stonkered
+stonking
+stony/TRP
+stood
+stooge/MS
+stool/SM
+stoop/GSMD
+stop's
+stop/US
+stopcock/SM
+stopgap/SM
+stoplight/MS
+stopover/MS
+stoppable/U
+stoppage/MS
+stopped/U
+stopper/GSMD
+stopping/U
+stopple/DSMG
+stopwatch/MS
+storage/M
+store's
+store/ADSG
+storefront/MS
+storehouse/MS
+storekeeper/SM
+storeroom/SM
+stork/SM
+storm/GSMD
+stormily
+storminess/M
+stormy/RPT
+story/DSM
+storyboard/MS
+storybook/SM
+storyteller/MS
+storytelling/M
+stoup/SM
+stout/TSMRYP
+stouthearted
+stoutness/M
+stove/SM
+stovepipe/SM
+stow/DGS
+stowage/M
+stowaway/MS
+straddle/DRSMZG
+straddler/M
+strafe/MGDS
+straggle/DRSZG
+straggler/M
+straggly/TR
+straight/SPXTMNRY
+straightaway/SM
+straightedge/SM
+straighten/ZGDR
+straightener/M
+straightforward/YPS
+straightforwardness/M
+straightness/M
+straightway
+strain's
+strain/FADSG
+strainer/ASM
+strait/MNSX
+straiten/GD
+straitjacket/SGMD
+straitlaced
+strand/MDSG
+strange/PRYZT
+strangeness/M
+stranger/M
+strangle/ZGDRS
+stranglehold/SM
+strangler/M
+strangulate/GNDS
+strangulation/M
+strap's
+strap/US
+strapless/MS
+strapped/U
+strapping/M
+strata
+stratagem/SM
+strategic/S
+strategical/Y
+strategics/M
+strategist/SM
+strategy/SM
+strati
+stratification/M
+stratify/DSGN
+stratosphere/SM
+stratospheric
+stratum/M
+stratus/M
+straw/GSMD
+strawberry/SM
+stray/GSMD
+streak/MDRSZG
+streaker/M
+streaky/TR
+stream/MDRSZG
+streamer/M
+streamline/DSG
+street/MS
+streetcar/MS
+streetlamp/S
+streetlight/SM
+streetwalker/SM
+streetwise
+strength/M
+strengthen/AGDS
+strengthener/MS
+strengths
+strenuous/PY
+strenuousness/M
+strep/M
+streptococcal
+streptococci
+streptococcus/M
+streptomycin/M
+stress/MDSG
+stressed/U
+stressful
+stretch/BZGMDRS
+stretcher/MDG
+stretchmarks
+stretchy/TR
+strew/GSDH
+strewn
+stria/M
+striae
+striated
+striation/MS
+stricken
+strict/RYPT
+strictness/M
+stricture/SM
+stridden
+stride/MGS
+stridency/M
+strident/Y
+strife/M
+strike/MZGRSJ
+strikebound
+strikebreaker/SM
+strikebreaking
+strikeout/MS
+striker/M
+striking/Y
+string/MDRSZG
+stringency/M
+stringent/Y
+stringer/M
+stringiness/M
+stringy/PTR
+strip/GSMD
+stripe/MS
+stripey
+stripling/MS
+stripped
+stripper/MS
+stripping
+striptease/MZGDRS
+stripteaser/M
+stripy
+strive/GS
+striven
+strobe/MS
+stroboscope/MS
+stroboscopic
+strode
+stroke/MGDS
+stroll/MDRSZG
+stroller/M
+strong/RYT
+strongbox/MS
+stronghold/MS
+strongman/M
+strongmen
+strongroom/S
+strontium/M
+strop/SM
+strophe/SM
+strophic
+stropped
+stroppily
+stropping
+stroppy/TRP
+strove
+struck
+structural/Y
+structuralism
+structuralist/S
+structure's
+structure/AGDS
+structured/U
+strudel/SM
+struggle/MGDS
+strum/SM
+strummed
+strumming
+strumpet/MS
+strung/UA
+strut/SM
+strutted
+strutting
+strychnine/M
+stub/MS
+stubbed
+stubbing
+stubble/M
+stubbly
+stubborn/RYPT
+stubbornness/M
+stubby/RT
+stucco/MDG
+stuccoes
+stuck/U
+stud/MYS
+studbook/MS
+studded
+studding/M
+student/SM
+studentship/S
+studied/U
+studiedly
+studio/MS
+studious/PY
+studiousness/M
+studly/RT
+study's
+study/AGDS
+stuff/GSMDJ
+stuffily
+stuffiness/M
+stuffing/M
+stuffy/RPT
+stultification/M
+stultify/DSNG
+stumble/DRSMZG
+stumbler/M
+stump/GSMD
+stumpy/TR
+stun/S
+stung
+stunk
+stunned
+stunner/S
+stunning/Y
+stunt/GSMD
+stuntman
+stuntmen
+stupefaction/M
+stupefy/DSG
+stupendous/Y
+stupid/TMRYS
+stupidity/SM
+stupor/MS
+sturdily
+sturdiness/M
+sturdy/TRP
+sturgeon/SM
+stutter/MDRSZG
+stutterer/M
+sty/SM
+style's
+style/ADSG
+styli
+stylish/PY
+stylishness/M
+stylist/SM
+stylistic/S
+stylistically
+stylize/DSG
+stylus/MS
+stymie/MDS
+stymieing
+styptic/SM
+suasion/EM
+suave/RYTP
+suaveness/M
+suavity/M
+sub/SM
+subaltern/MS
+subaqua
+subarctic
+subarea/MS
+subatomic
+subbasement/SM
+subbed
+subbing
+subbranch/MS
+subcategory/SM
+subclass
+subcommittee/SM
+subcompact/SM
+subconscious/PMY
+subconsciousness/M
+subcontinent/SM
+subcontinental
+subcontract/MDSG
+subcontractor/MS
+subculture/MS
+subcutaneous/Y
+subdivide/GDS
+subdivision/SM
+subdominant
+subdue/DSG
+subeditor/S
+subfamily/SM
+subfreezing
+subgroup/MS
+subhead/GJMS
+subheading/M
+subhuman/MS
+subj
+subject/GVMDS
+subjection/M
+subjective/Y
+subjectivity/M
+subjoin/GDS
+subjugate/GNDS
+subjugation/M
+subjunctive/SM
+sublease/MGDS
+sublet/SM
+subletting
+sublieutenant/S
+sublimate/GNDS
+sublimation/M
+sublime/YTGDRS
+subliminal/Y
+sublimity/M
+sublingual
+submarginal
+submarine/MZRS
+submariner/M
+submerge/GDS
+submergence/M
+submerse/GNDS
+submersible/MS
+submersion/M
+submicroscopic
+submission/MS
+submissive/PY
+submissiveness/M
+submit/AS
+submitted/A
+submitter
+submitting/A
+subnormal
+suborbital
+suborder/MS
+subordinate/DSMGN
+subordination/IM
+suborn/SGD
+subornation/M
+subparagraph
+subplot/MS
+subpoena/GMDS
+subprime
+subprofessional/SM
+subprogram/S
+subroutine/SM
+subscribe/UASDG
+subscriber/MS
+subscript/MS
+subscription/MS
+subsection/MS
+subsequent/Y
+subservience/M
+subservient/Y
+subset/SM
+subside/GDS
+subsidence/M
+subsidiarity
+subsidiary/SM
+subsidization/M
+subsidize/ZGDRS
+subsidizer/M
+subsidy/SM
+subsist/SDG
+subsistence/M
+subsoil/M
+subsonic
+subspace
+subspecies/M
+substance/SM
+substandard
+substantial/IY
+substantiate/GNDSX
+substantiated/U
+substantiation/FM
+substantive/SMY
+substation/MS
+substituent
+substitute/XMGNDS
+substitution/M
+substrata
+substrate/MS
+substratum/M
+substructure/SM
+subsume/DSG
+subsumption
+subsurface/M
+subsystem/SM
+subteen/SM
+subtenancy/M
+subtenant/SM
+subtend/SDG
+subterfuge/SM
+subterranean
+subtext/SM
+subtitle/DSMG
+subtle/TR
+subtlety/SM
+subtly
+subtopic/SM
+subtotal/SGMD
+subtract/GSD
+subtraction/SM
+subtrahend/SM
+subtropic/S
+subtropical
+subtropics/M
+suburb/MS
+suburban/SM
+suburbanite/SM
+suburbia/M
+subvention/SM
+subversion/M
+subversive/SPMY
+subversiveness/M
+subvert/SDG
+subway/MS
+subzero
+succeed/GDS
+success/VMS
+successful/UY
+succession/SM
+successive/Y
+successor/SM
+succinct/RYTP
+succinctness/M
+succor/SGMD
+succotash/M
+succubi
+succubus
+succulence/M
+succulency/M
+succulent/SM
+succumb/GDS
+such
+suchlike
+suck/MDRZGS
+sucker/GMD
+suckle/DSJG
+suckling/M
+sucrose/M
+suction/SMDG
+sudden/PY
+suddenness/M
+suds/M
+sudsy/TR
+sue/DSG
+suede/M
+suet/M
+suety
+suffer/DRZGSJ
+sufferance/M
+sufferer/M
+suffering/M
+suffice/DSG
+sufficiency/IM
+sufficient/IY
+suffix/MDSG
+suffixation/M
+suffocate/GNDS
+suffocation/M
+suffragan/MS
+suffrage/M
+suffragette/SM
+suffragist/MS
+suffuse/DSGN
+suffusion/M
+sugar/GSMD
+sugarcane/M
+sugarcoat/GDS
+sugarless
+sugarplum/MS
+sugary/RT
+suggest/GVSDR
+suggestibility/M
+suggestible
+suggestion/SM
+suggestive/YP
+suggestiveness/M
+suicidal
+suicide/SM
+suit/BMDGS
+suitability/UM
+suitableness/M
+suitably/U
+suitcase/SM
+suite/SM
+suited/U
+suiting/M
+suitor/MS
+sukiyaki/M
+sulfa/M
+sulfate/SM
+sulfide/SM
+sulfonamides
+sulfur/MDSG
+sulfuric
+sulfurous
+sulk/MDGS
+sulkily
+sulkiness/M
+sulky/TRSMP
+sullen/RYPT
+sullenness/M
+sullied/U
+sully/GDS
+sultan/MS
+sultana/SM
+sultanate/MS
+sultrily
+sultriness/M
+sultry/RPT
+sum/SM
+sumac/M
+summarily
+summarize/GDS
+summary/SM
+summat
+summation/FMS
+summed
+summer/MDSG
+summerhouse/SM
+summertime/M
+summery
+summing
+summit/MS
+summitry/M
+summon/DRSZG
+summoner/M
+summons/GMDS
+sumo/M
+sump/MS
+sumptuous/PY
+sumptuousness/M
+sun/SM
+sunbath/ZGMDRS
+sunbathe
+sunbather/M
+sunbathing/M
+sunbaths
+sunbeam/SM
+sunbed/S
+sunbelt/SM
+sunblock/MS
+sunbonnet/SM
+sunburn/SGMD
+sunburst/MS
+sundae/MS
+sundeck/S
+sunder/DSG
+sundial/SM
+sundown/SM
+sundress/S
+sundries/M
+sundry/S
+sunfish/MS
+sunflower/MS
+sung/U
+sunglasses/M
+sunhat/S
+sunk/N
+sunlamp/SM
+sunless
+sunlight/M
+sunlit
+sunned
+sunniness/M
+sunning
+sunny/TRP
+sunrise/SM
+sunroof/SM
+sunscreen/MS
+sunset/MS
+sunshade/MS
+sunshine/M
+sunshiny
+sunspot/SM
+sunstroke/M
+suntan/MS
+suntanned
+suntanning
+suntrap/S
+sunup/M
+sup/SZMR
+super/M
+superabundance/MS
+superabundant
+superannuate/GNDS
+superannuation/M
+superb/RYT
+supercargo/M
+supercargoes
+supercharge/ZGDRS
+supercharger/M
+supercilious/PY
+superciliousness/M
+supercity/SM
+supercomputer/MS
+superconducting
+superconductive
+superconductivity/M
+superconductor/SM
+superego/MS
+supererogation/M
+supererogatory
+superficial/Y
+superficiality/M
+superfine
+superfluity/M
+superfluous/YP
+superfluousness/M
+superglue
+supergrass/S
+superhero/MS
+superheroes
+superhighway/SM
+superhuman
+superimpose/GDS
+superimposition/M
+superintend/DSG
+superintendence/M
+superintendency/M
+superintendent/SM
+superior/MS
+superiority/M
+superlative/SMY
+superman/M
+supermarket/SM
+supermen
+supermodel/SM
+supermom/MS
+supernal
+supernatural/SY
+supernova/MS
+supernovae
+supernumerary/SM
+superpose/GDS
+superposition/M
+superpower/SM
+supersaturate/GNDS
+supersaturation/M
+superscribe/GDS
+superscript/MS
+superscription/M
+supersede/GDS
+supersize/GDS
+supersonic
+superstar/MS
+superstate/S
+superstition/MS
+superstitious/Y
+superstore/MS
+superstructure/MS
+supertanker/MS
+superuser/S
+supervene/GDS
+supervention/M
+supervise/XGNDS
+supervised/U
+supervision/M
+supervisor/MS
+supervisory
+superwoman/M
+superwomen
+supine/Y
+supp/DRZG
+supper/M
+suppertime
+suppl
+supplant/SDG
+supple/TLPR
+supplement/MDGS
+supplemental
+supplementary
+supplementation/M
+suppleness/M
+suppliant/SM
+supplicant/MS
+supplicate/GDS
+supplication/M
+supplier/M
+supply/ZGDRSMXN
+support/MDRSBZGV
+supportable/UI
+supported/U
+supporter/M
+suppose/GDS
+supposed/Y
+supposition/MS
+suppository/SM
+suppress/GDS
+suppressant/MS
+suppressible
+suppression/M
+suppressor/SM
+suppurate/DSGN
+suppuration/M
+supra
+supranational
+supremacist/MS
+supremacy/M
+supreme/Y
+supremo/S
+supt
+surcease/DSMG
+surcharge/DSMG
+surcingle/SM
+sure/PYTR
+surefire
+surefooted
+sureness/M
+surety/SM
+surf/MDRZGS
+surface's
+surface/AGDS
+surfboard/MDSG
+surfeit/MDSG
+surfer/M
+surfing/M
+surge/DSMG
+surgeon/MS
+surgery/SM
+surgical/Y
+surliness/M
+surly/PTR
+surmise/MGDS
+surmount/DGSB
+surmountable/I
+surname/MS
+surpass/GDS
+surpassed/U
+surplice/MS
+surplus/MS
+surplussed
+surplussing
+surprise/DSMGJ
+surprising/UY
+surreal
+surrealism/M
+surrealist/SM
+surrealistic
+surrealistically
+surrender/MDSG
+surreptitious/PY
+surreptitiousness/M
+surrey/MS
+surrogacy/M
+surrogate/SM
+surround/GSDJ
+surrounding/M
+surroundings/M
+surtax/MDSG
+surtitle/S
+surveillance/M
+survey's
+survey/ADGS
+surveying/M
+surveyor/SM
+survival/SM
+survivalist/SM
+survive/DSGB
+survivor/SM
+susceptibility/SM
+susceptible/I
+sushi/M
+suspect/SMDG
+suspected/U
+suspend/SDRZG
+suspender/M
+suspense/XMN
+suspenseful
+suspension/M
+suspicion/SM
+suspicious/Y
+suss/DSG
+sustain/SDBG
+sustainability
+sustainable/U
+sustenance/M
+sutler/MS
+suttee
+suture/MGDS
+suzerain/MS
+suzerainty/M
+svelte/TR
+swab/MS
+swabbed
+swabbing
+swaddle/DSG
+swag/MS
+swagged
+swagger/SMDRG
+swagging
+swain/SM
+swallow/GSMD
+swallowtail/MS
+swam
+swami/SM
+swamp/GSMD
+swampland/M
+swampy/RT
+swan/MS
+swank/TGSMDR
+swankily
+swankiness/M
+swanky/RPT
+swanned
+swanning
+swansong/S
+swap/MS
+swapped
+swapping
+sward/SM
+swarm/GSMD
+swarthy/TR
+swash/GMDS
+swashbuckler/SM
+swashbuckling/M
+swastika/SM
+swat/MS
+swatch/MS
+swath/GMDS
+swathe/M
+swaths
+swatted
+swatter/SMDG
+swatting
+sway/MDGS
+swayback/MD
+swayed/U
+swear/ZGSR
+swearer/M
+swearword/MS
+sweat/ZGSMDR
+sweatband/MS
+sweater/M
+sweatpants/M
+sweats/M
+sweatshirt/SM
+sweatshop/MS
+sweatsuit/S
+sweaty/RT
+swede/SM
+sweep/ZGSMRJ
+sweeper/M
+sweeping/MY
+sweepings/M
+sweepstakes/M
+sweet/XTSMNRYP
+sweetbread/SM
+sweetbrier/SM
+sweetcorn
+sweetened/U
+sweetener/MS
+sweetening/M
+sweetheart/SM
+sweetie/SM
+sweetish
+sweetmeat/MS
+sweetness/M
+swell/TGSMDRJ
+swellhead/MDS
+swelling/M
+swelter/SGMD
+swept
+sweptback
+swerve/MGDS
+swerving/U
+swift/PTSMRY
+swiftness/M
+swig/MS
+swigged
+swigging
+swill/GSMD
+swim/MS
+swimmer/SM
+swimming/MY
+swimsuit/SM
+swimwear
+swindle/DRSMZG
+swindler/M
+swine/SM
+swineherd/SM
+swing/ZGSMR
+swingeing
+swinger/M
+swinish
+swipe/DSMG
+swirl/GSMD
+swirly
+swish/TGMDRS
+switch/MDRSZGB
+switchback/MS
+switchblade/SM
+switchboard/SM
+switcher/M
+swivel/MDGS
+swiz
+swizz
+swizzle/DSG
+swollen
+swoon/SGMD
+swoop/SGMD
+swoosh/MDSG
+sword/SM
+swordfish/MS
+swordplay/M
+swordsman/M
+swordsmanship/M
+swordsmen
+swore
+sworn
+swot/S
+swotted
+swotting
+swum
+swung
+sybarite/SM
+sybaritic
+sycamore/MS
+sycophancy/M
+sycophant/SM
+sycophantic
+syllabic
+syllabicate/GNDS
+syllabication/M
+syllabification/M
+syllabify/DSNG
+syllable/MS
+syllabub/S
+syllabus/MS
+syllogism/MS
+syllogistic
+sylph/M
+sylphic
+sylphlike
+sylphs
+sylvan
+symbioses
+symbiosis/M
+symbiotic
+symbiotically
+symbol/MS
+symbolic
+symbolical/Y
+symbolism/M
+symbolization/M
+symbolize/DSG
+symmetric
+symmetrical/Y
+symmetry/SM
+sympathetic/U
+sympathetically/U
+sympathies/M
+sympathize/ZGDRS
+sympathizer/M
+sympathy/SM
+symphonic
+symphony/SM
+symposium/MS
+symptom/MS
+symptomatic
+symptomatically
+syn/H
+synagogal
+synagogue/SM
+synapse/MS
+synaptic
+sync/MDSG
+synchronicity
+synchronization/SM
+synchronize/GDS
+synchronous/Y
+syncopate/DSGN
+syncopation/M
+syncope/M
+syndicalism
+syndicalist/S
+syndicate/DSMGN
+syndication/M
+syndrome/SM
+synergism/M
+synergistic
+synergy/SM
+synfuel/MS
+synod/SM
+synonym/SM
+synonymous
+synonymy/M
+synopses
+synopsis/M
+synoptic
+synovial
+syntactic
+syntactical/Y
+syntax/M
+syntheses
+synthesis/M
+synthesize/ZGDRS
+synthesizer/M
+synthetic/SM
+synthetically
+synths
+syphilis/M
+syphilitic/SM
+syringe/DSMG
+syrup/SM
+syrupy
+sysadmin/S
+sysop/S
+system/SM
+systematic/U
+systematical/Y
+systematization/M
+systematize/GDS
+systemic/MS
+systemically
+systole/SM
+systolic
+t/SDNXGBJ
+ta
+tab/SM
+tabbed
+tabbing
+tabbouleh/M
+tabby/SM
+tabernacle/SM
+tabla/MS
+table/MGDS
+tableau/M
+tableaux
+tablecloth/M
+tablecloths
+tableland/SM
+tablespoon/SM
+tablespoonful/SM
+tablet/SM
+tabletop/MS
+tableware/M
+tabloid/SM
+taboo/MDSG
+tabor/MS
+tabular
+tabulate/DSGNX
+tabulation/M
+tabulator/SM
+tachograph
+tachographs
+tachometer/SM
+tachycardia/M
+tachyon
+tacit/PY
+tacitness/M
+taciturn/Y
+taciturnity/M
+tack/ZGMDRS
+tacker/M
+tackiness/M
+tackle/DRSMZG
+tackler/M
+tacky/RTP
+taco/MS
+tact/FM
+tactful/YP
+tactfulness/M
+tactic/SM
+tactical/Y
+tactician/MS
+tactile
+tactility/M
+tactless/PY
+tactlessness/M
+tad/SM
+tadpole/MS
+taffeta/M
+taffrail/SM
+taffy/SM
+tag/SM
+tagged
+tagger/SM
+tagging
+tagliatelle
+tagline/MS
+taiga/MS
+tail/ACSDMG
+tailback/MS
+tailboard/S
+tailbone/S
+tailcoat/MS
+tailgate/MZGDRS
+tailgater/M
+tailless
+taillight/MS
+tailor/SGMD
+tailoring/M
+tailpiece/S
+tailpipe/SM
+tailspin/SM
+tailwind/SM
+taint/MDSG
+tainted/U
+take/AIMS
+takeaway/S
+taken/A
+takeoff/MS
+takeout/MS
+takeover/SM
+taker/MS
+taking/SM
+takings/M
+talc/M
+talcum/M
+tale/MS
+talebearer/MS
+talent/SMD
+talented/U
+tali
+talisman/MS
+talk/ZGMDRS
+talkative/PY
+talkativeness/M
+talker/M
+talkie/RSMT
+talky
+tall/TRP
+tallboy/MS
+tallier/M
+tallish
+tallness/M
+tallow/M
+tallowy
+tally/DRSMZG
+tallyho/MDGS
+talon/MS
+talus/MS
+tam/SM
+tamale/SM
+tamarack/MS
+tamarind/MS
+tambourine/MS
+tame/BYZTGDRSP
+tamed/U
+tameness/M
+tamer/M
+tamoxifen
+tamp/ZGDRS
+tamper/ZGDR
+tamperer/M
+tampon/SM
+tan/SM
+tanager/MS
+tanbark/M
+tandem/SM
+tandoori/M
+tang/MS
+tangelo/MS
+tangent/MS
+tangential/Y
+tangerine/MS
+tangibility/IM
+tangible/IMS
+tangibleness/M
+tangibly/I
+tangle's
+tangle/UDSG
+tango/MDSG
+tangy/RT
+tank/ZGMDRS
+tankard/MS
+tanker/M
+tankful/MS
+tanned/U
+tanner/SM
+tannery/SM
+tannest
+tannin/M
+tanning/M
+tansy/M
+tantalization/M
+tantalize/ZGDRS
+tantalizer/M
+tantalizing/Y
+tantalum/M
+tantamount
+tantra/M
+tantrum/SM
+tap/SZGMDR
+tapas
+tape/MS
+tapeline/MS
+taper/MDG
+tapestry/SM
+tapeworm/MS
+tapioca/M
+tapir/MS
+tapped/U
+tapper/MS
+tappet/MS
+tapping
+taproom/SM
+taproot/SM
+tar/SGMD
+taramasalata
+tarantella/MS
+tarantula/SM
+tarball/S
+tardily
+tardiness/M
+tardy/TPR
+tare/MS
+target/MDGS
+tariff/MS
+tarmac/MS
+tarmacadam
+tarmacked
+tarmacking
+tarn/MS
+tarnish/GMDS
+tarnished/U
+taro/MS
+tarot/MS
+tarp/MS
+tarpaulin/MS
+tarpon/MS
+tarragon/SM
+tarred
+tarring
+tarry/TGDRS
+tarsal/MS
+tarsi
+tarsus/M
+tart/PTGMDRYS
+tartan/MS
+tartar/MS
+tartaric
+tartness/M
+tarty/T
+taser/GMDS
+task/GMDS
+taskmaster/MS
+taskmistress/MS
+tassel/MDSG
+taste/JMZGDRS
+tasted/U
+tasteful/EPY
+tastefulness/EM
+tasteless/PY
+tastelessness/M
+taster/M
+tastily
+tastiness/M
+tasting/M
+tasty/TRP
+tat/SZR
+tatami/MS
+tater/M
+tatted
+tatter/MDSG
+tatterdemalion/MS
+tattie
+tatting/M
+tattle/MZGDRS
+tattler/M
+tattletale/MS
+tattoo/MDRSZG
+tattooer/M
+tattooist/SM
+tatty/TRS
+tau/SM
+taught/UA
+taunt/ZGMDRS
+taunter/M
+taunting/Y
+taupe/M
+taut/PXTNRY
+tauten/DG
+tautness/M
+tautological/Y
+tautologous
+tautology/SM
+tavern/MS
+tawdrily
+tawdriness/M
+tawdry/RTP
+tawny/TRM
+tax/BZGMDRS
+taxa
+taxation/M
+taxer/M
+taxi/GMDS
+taxicab/SM
+taxidermist/SM
+taxidermy/M
+taximeter/MS
+taxiway/S
+taxman
+taxmen
+taxon
+taxonomic
+taxonomist/MS
+taxonomy/SM
+taxpayer/MS
+taxpaying
+tb/S
+tbsp
+tea/SM
+teabag/S
+teacake/SM
+teach/ZGRSBJ
+teachable/U
+teacher/M
+teaching/M
+teacup/MS
+teacupful/MS
+teak/MS
+teakettle/SM
+teal/MS
+tealight/MS
+team/GMDS
+teammate/MS
+teamster/MS
+teamwork/M
+teapot/MS
+tear/GMDS
+tearaway/S
+teardrop/SM
+tearful/Y
+teargas/MS
+teargassed
+teargassing
+tearjerker/MS
+tearoom/SM
+teary/TR
+tease/MZGDRS
+teasel/MS
+teaser/M
+teasing/Y
+teaspoon/SM
+teaspoonful/SM
+teat/MS
+teatime/S
+tech/M
+techie/S
+technetium/M
+technical/Y
+technicality/SM
+technician/SM
+technicolor
+technique/SM
+techno
+technobabble
+technocracy/SM
+technocrat/MS
+technocratic
+technological/Y
+technologist/MS
+technology/SM
+technophobe/S
+techs
+tectonic/S
+tectonics/M
+ted/S
+teddy/S
+tedious/PY
+tediousness/M
+tedium/M
+tee/DSMH
+teeing
+teem/GDS
+teen/MS
+teenage/RZ
+teenager/M
+teeny/TR
+teenybopper/MS
+teeter/MDSG
+teethe/GDS
+teething/M
+teetotal/RZ
+teetotaler/M
+teetotalism/M
+tektite/SM
+tel
+telecast/SZGMR
+telecaster/M
+telecommunication/MS
+telecommunications/M
+telecommute/ZGDRS
+telecommuter/M
+telecommuting/M
+teleconference/MGDS
+teleconferencing/M
+telegenic
+telegram/MS
+telegraph/MDRZG
+telegrapher/M
+telegraphese
+telegraphic
+telegraphically
+telegraphist/SM
+telegraphs
+telegraphy/M
+telekinesis/M
+telekinetic
+telemarketer/SM
+telemarketing/M
+telemeter/SM
+telemetry/SM
+teleological
+teleology
+telepathic
+telepathically
+telepathy/M
+telephone/DRSMZG
+telephoner/M
+telephonic
+telephonist/S
+telephony/M
+telephoto/SM
+telephotography/M
+teleplay/MS
+teleport
+teleportation
+teleprinter/MS
+teleprocessing/M
+teleprompter/SM
+telesales
+telescope/DSMG
+telescopic
+telescopically
+teletext/MS
+telethon/MS
+teletype/S
+teletypewriter/MS
+televangelism/M
+televangelist/MS
+televise/XGNDS
+television/M
+teleworker/S
+teleworking
+telex/MDSG
+tell/AGS
+teller/SM
+telling/Y
+telltale/SM
+tellurium/M
+telly/SM
+telnet
+temblor/MS
+temerity/M
+temp/MDRZTGS
+temper/MDG
+tempera/LSM
+temperament/MS
+temperamental/Y
+temperance/IM
+temperate/IY
+temperateness/M
+temperature/SM
+tempest/SM
+tempestuous/YP
+tempestuousness/M
+template's
+template/S
+temple/SM
+tempo/SM
+temporal/Y
+temporarily
+temporariness/M
+temporary/FSM
+temporize/ZGDRS
+temporizer/M
+tempt/SDRZG
+temptation/MS
+tempter/M
+tempting/Y
+temptress/MS
+tempura/M
+ten/BMH
+tenability/M
+tenable/U
+tenably
+tenacious/YP
+tenaciousness/M
+tenacity/M
+tenancy/SM
+tenant/SMDG
+tenanted/U
+tenantry/M
+tench
+tend/IEFDGS
+tended/U
+tendency/SM
+tendentious/YP
+tendentiousness/M
+tender/SMDRYTGP
+tenderfoot/MS
+tenderhearted/P
+tenderheartedness/M
+tenderize/ZGDRS
+tenderizer/M
+tenderloin/SM
+tenderness/M
+tendinitis/M
+tendon/SM
+tendril/SM
+tenement/SM
+tenet/SM
+tenfold
+tenner/S
+tennis/M
+tenon/SMDG
+tenor/SM
+tenpin/SM
+tenpins/M
+tense/DRSMYTGNXP
+tenseness/M
+tensile
+tension/ESM
+tensity/IM
+tensor/S
+tent/DGSM
+tentacle/DSM
+tentative/PY
+tentativeness/M
+tenterhook/MS
+tenth/MY
+tenths
+tenuity/M
+tenuous/PY
+tenuousness/M
+tenure/DSMG
+tepee/SM
+tepid/YP
+tepidity/M
+tepidness/M
+tequila/SM
+terabit/SM
+terabyte/MS
+terahertz/M
+terapixel/MS
+terbium/M
+tercentenary/SM
+tercentennial/SM
+teriyaki
+term/MDYGS
+termagant/MS
+terminable/IC
+terminal/MYS
+terminate/DSGNX
+termination/CSM
+terminator/S
+termini
+terminological/Y
+terminology/SM
+terminus/M
+termite/SM
+tern/IMS
+ternary/SM
+terr
+terrace/DSMG
+terracotta/M
+terrain/SM
+terrapin/MS
+terrarium/SM
+terrazzo/MS
+terrestrial/SMY
+terrible/P
+terribleness/M
+terribly
+terrier/M
+terrific
+terrifically
+terrify/GDS
+terrifying/Y
+terrine/S
+territorial/MS
+territoriality
+territory/SM
+terror/SM
+terrorism/M
+terrorist/SM
+terrorize/DSG
+terry/RMZ
+terrycloth/M
+terse/RYTP
+terseness/M
+tertiary
+tessellate/DSXGN
+tessellation/M
+test's/AFK
+test/AKFCDGS
+testable/CF
+testament/MS
+testamentary
+testate/S
+testator/MS
+testatrices
+testatrix/M
+tested/U
+tester/KSM
+testes
+testicle/MS
+testicular
+testifier/M
+testify/ZGDRS
+testily
+testimonial/MS
+testimony/SM
+testiness/M
+testings
+testis/M
+testosterone/M
+testy/PRT
+tetanus/M
+tetchily
+tetchy/PRT
+tether/SMDG
+tetra/SM
+tetracycline/M
+tetrahedral
+tetrahedron/MS
+tetrameter/SM
+text/FMS
+textbook/SM
+texted
+textile/MS
+texting
+textual/FY
+textural
+texture/MGDS
+thalami
+thalamus/M
+thalidomide/M
+thallium/M
+than
+thane/SM
+thank/SDG
+thankful/YP
+thankfulness/M
+thankless/PY
+thanklessness/M
+thanksgiving/SM
+that'd
+that'll
+that/M
+thatch/MDRSZG
+thatcher/M
+thatching/M
+thaw/MDGS
+the/JG
+theater/SM
+theatergoer/SM
+theatrical/YS
+theatricality/M
+theatricals/M
+theatrics/M
+thee/S
+theft/SM
+their/S
+theism/M
+theist/SM
+theistic
+them
+thematic
+thematically
+theme/DSM
+themselves
+then/M
+thence
+thenceforth
+thenceforward
+theocracy/SM
+theocratic
+theodolite/S
+theologian/SM
+theological/Y
+theology/SM
+theorem/MS
+theoretic
+theoretical/Y
+theoretician/SM
+theorist/SM
+theorize/DSG
+theory/SM
+theosophic
+theosophical
+theosophist/SM
+theosophy/M
+therapeutic/S
+therapeutically
+therapeutics/M
+therapist/SM
+therapy/SM
+there/M
+thereabout/S
+thereafter
+thereat
+thereby
+therefor
+therefore
+therefrom
+therein
+theremin/SM
+thereof
+thereon
+thereto
+theretofore
+thereunto
+thereupon
+therewith
+therm/SM
+thermal/MYS
+thermionic
+thermodynamic/S
+thermodynamics/M
+thermometer/MS
+thermometric
+thermonuclear
+thermoplastic/SM
+thermos/MS
+thermostat/MS
+thermostatic
+thermostatically
+thesauri
+thesaurus/MS
+these/S
+thesis/M
+thespian/SM
+theta/SM
+thew/MS
+they
+they'd
+they'll
+they're
+they've
+thiamine/M
+thick/PMNRYXT
+thicken/DRJZG
+thickener/M
+thickening/M
+thicket/MS
+thickheaded/M
+thickness/MS
+thicko/S
+thickset
+thief/M
+thieve/DSG
+thievery/M
+thieving/M
+thievish
+thigh/M
+thighbone/MS
+thighs
+thimble/MS
+thimbleful/SM
+thin/YSP
+thine
+thing/M
+thingamabob/SM
+thingamajig/SM
+thingumabob/S
+thingummy/S
+thingy/S
+think/SRBZG
+thinkable/U
+thinker/M
+thinking's
+thinned
+thinner/MS
+thinness/M
+thinnest
+thinning
+third/SMY
+thirst/SGMD
+thirstily
+thirstiness/M
+thirsty/TPR
+thirteen/SMH
+thirteenth/M
+thirteenths
+thirtieth/M
+thirtieths
+thirty/HSM
+this
+thistle/MS
+thistledown/M
+thither
+tho
+thole/SM
+thong/SM
+thoracic
+thorax/MS
+thorium/M
+thorn/SM
+thorniness/M
+thorny/PRT
+thorough/RYPT
+thoroughbred/MS
+thoroughfare/MS
+thoroughgoing
+thoroughness/M
+those
+thou/MS
+though
+thought/SM
+thoughtful/YP
+thoughtfulness/M
+thoughtless/PY
+thoughtlessness/M
+thousand/MHS
+thousandfold
+thousandth/M
+thousandths
+thrall/SMDG
+thralldom/M
+thrash/JMDRSZG
+thrasher/M
+thrashing/M
+thread/SMDRZG
+threadbare
+threader/M
+threadlike
+thready/TR
+threat/SMNX
+threaten/DG
+threatening/Y
+three/SM
+threefold
+threepence/M
+threescore/MS
+threesome/SM
+threnody/SM
+thresh/MDRSZG
+thresher/M
+threshold/SM
+threw
+thrice
+thrift/SM
+thriftily
+thriftiness/M
+thriftless
+thrifty/PTR
+thrill/SMDRZG
+thriller/M
+thrilling/Y
+thrive/DSG
+throat/SM
+throatily
+throatiness/M
+throaty/RTP
+throb/SM
+throbbed
+throbbing
+throe/SM
+thrombi
+thrombolytic
+thromboses
+thrombosis/M
+thrombotic
+thrombus/M
+throne's
+throne/S
+throng/GSMD
+throttle/DRSMZG
+throttler/M
+through
+throughout
+throughput/M
+throw/SMRZG
+throwaway/SM
+throwback/SM
+thrower/M
+thrown
+thru
+thrum/SM
+thrummed
+thrumming
+thrush/MS
+thrust/GSM
+thruway/MS
+thud/MS
+thudded
+thudding
+thug/MS
+thuggery/M
+thuggish
+thulium/M
+thumb/SMDG
+thumbnail/SM
+thumbprint/SM
+thumbscrew/SM
+thumbtack/SM
+thump/SMDG
+thumping/M
+thunder/ZGMDRS
+thunderbolt/SM
+thunderclap/SM
+thundercloud/MS
+thunderer/M
+thunderhead/SM
+thunderous/Y
+thundershower/SM
+thunderstorm/SM
+thunderstruck
+thundery
+thunk/S
+thus
+thwack/ZGSMDR
+thwacker/M
+thwart/GSMD
+thy
+thyme/M
+thymine/M
+thymus/MS
+thyroid/MS
+thyroidal
+thyself
+ti/MRZ
+tiara/SM
+tibia/M
+tibiae
+tibial
+tic/SM
+tick/MDRZGS
+ticker/M
+ticket/GSMD
+ticking/M
+tickle/DRSMZG
+tickler/M
+ticklish/YP
+ticklishness/M
+ticktacktoe/M
+ticktock/MS
+tidal/Y
+tidbit/SM
+tiddler/S
+tiddly
+tiddlywink/S
+tiddlywinks/M
+tide/MGJDS
+tideland/SM
+tidemark/S
+tidewater/MS
+tideway/MS
+tidily/U
+tidiness/UM
+tidings/M
+tidy/DRSMTGP
+tie's
+tie/AUSD
+tieback/MS
+tiebreak/RSZ
+tiebreaker/M
+tiepin/S
+tier/MD
+tiff/MDGS
+tiger/SM
+tigerish
+tight/SNRYPXT
+tighten/ZGDR
+tightener/M
+tightfisted
+tightness/M
+tightrope/MS
+tights/M
+tightwad/MS
+tigress/MS
+til
+tilapia
+tilde/SM
+tile/MZGDRS
+tiler/M
+tiling/M
+till's
+till/EDRZGS
+tillable
+tillage/M
+tiller/EM
+tilt/MDGS
+timber/SMDG
+timberland/M
+timberline/MS
+timbre/SM
+timbrel/SM
+time/MYZGJDRS
+timekeeper/MS
+timekeeping/M
+timeless/PY
+timelessness/M
+timeline/MS
+timeliness/UM
+timely/UPRT
+timeout/SM
+timepiece/MS
+timer/M
+timescale/S
+timeserver/SM
+timeserving/M
+timeshare/S
+timestamp/SMD
+timetable/DSMG
+timeworn
+timezone
+timid/RYTP
+timidity/M
+timidness/M
+timing/M
+timorous/PY
+timorousness/M
+timothy/M
+timpani/M
+timpanist/SM
+tin/SM
+tincture/MGDS
+tinder/M
+tinderbox/MS
+tine/MS
+tinfoil/M
+ting/MDYG
+tinge/SM
+tingeing
+tingle/DSMGJ
+tingling/M
+tininess/M
+tinker/ZGSMDR
+tinkerer/M
+tinkle/DSMG
+tinned
+tinniness/M
+tinning
+tinnitus/M
+tinny/PRT
+tinplate/M
+tinpot
+tinsel/GSMD
+tinsmith/M
+tinsmiths
+tint/MDGS
+tintinnabulation/MS
+tintype/MS
+tinware/M
+tiny/RTP
+tip/SM
+tipped
+tipper/SM
+tippet/SM
+tippex/GDS
+tipping
+tipple/DRSMZG
+tippler/M
+tipsily
+tipsiness/M
+tipster/MS
+tipsy/RPT
+tiptoe/DSM
+tiptoeing
+tiptop/SM
+tirade/SM
+tiramisu/MS
+tire's
+tire/AGDS
+tired/PRYT
+tiredness/M
+tireless/YP
+tirelessness/M
+tiresome/PY
+tiresomeness/M
+tissue/SM
+tit/SM
+titan/SM
+titanic
+titanium/M
+titch/S
+titchy
+tithe/DRSMZG
+tither/M
+titian/M
+titillate/DSGN
+titillating/Y
+titillation/M
+titivate/DSGN
+titivation/M
+title/DSMG
+titled/U
+titleholder/MS
+titlist/MS
+titmice
+titmouse/M
+titter/SGMD
+tittle/SM
+titty/S
+titular
+tizz
+tizzy/SM
+tn
+tnpk
+to/IU
+toad/MS
+toadstool/MS
+toady/DSMG
+toadyism/M
+toast/SMDRZG
+toaster/M
+toastmaster/SM
+toastmistress/MS
+toasty/TRS
+tobacco/MS
+tobacconist/SM
+toboggan/ZGSMDR
+tobogganer/M
+tobogganing/M
+toccata/S
+tocsin/SM
+today/M
+toddle/DRSMZG
+toddler/M
+toddy/SM
+toe/DSM
+toecap/SM
+toehold/MS
+toeing
+toenail/MS
+toerag/S
+toff/S
+toffee/SM
+tofu/M
+tog/SM
+toga/MDS
+together/P
+togetherness/M
+togged
+togging
+toggle/DSMG
+togs/M
+toil/MDRZGS
+toiler/M
+toilet/MDGS
+toiletry/SM
+toilette/M
+toilsome
+toke/MGDS
+token/SM
+tokenism/M
+told/AU
+tole/M
+tolerable/I
+tolerably/I
+tolerance/IM
+tolerances
+tolerant/IY
+tolerate/GNDS
+toleration/M
+toll/MDGS
+tollbooth/M
+tollbooths
+tollgate/SM
+tollway/SM
+toluene/M
+tom/SM
+tomahawk/SGMD
+tomato/M
+tomatoes
+tomb/MDGS
+tombola/S
+tomboy/MS
+tomboyish
+tombstone/MS
+tomcat/MS
+tome/MS
+tomfoolery/SM
+tomographic
+tomography/M
+tomorrow/MS
+tomtit/MS
+ton/SM
+tonal/Y
+tonality/SM
+tone's
+tone/IZGDRS
+tonearm/SM
+toneless/Y
+toner/IM
+tong/MDGS
+tongue/MGDS
+tongueless
+tonic/SM
+tonight/M
+tonnage/SM
+tonne/SM
+tonsil/MS
+tonsillectomy/SM
+tonsillitis/M
+tonsorial
+tonsure/DSMG
+tony/RT
+too
+took/A
+tool's
+tool/ADGS
+toolbar/SM
+toolbox/MS
+toolkit
+toolmaker/MS
+toot/MDRZGS
+tooter/M
+tooth/MD
+toothache/MS
+toothbrush/MS
+toothily
+toothless
+toothpaste/SM
+toothpick/SM
+toothsome
+toothy/RT
+tootle/GDS
+tootsie/S
+top/SM
+topaz/MS
+topcoat/SM
+topdressing/SM
+topee/S
+topflight
+topi
+topiary/M
+topic/SM
+topical/Y
+topicality/M
+topknot/SM
+topless
+topmast/SM
+topmost
+topnotch
+topographer/SM
+topographic
+topographical/Y
+topography/SM
+topological/Y
+topology
+topped
+topper/MS
+topping/SM
+topple/GDS
+topsail/SM
+topside/SM
+topsoil/M
+topspin/M
+toque/SM
+tor/SM
+torch/GMDS
+torchbearer/MS
+torchlight/M
+tore
+toreador/MS
+torment/SMDG
+tormenting/Y
+tormentor/MS
+torn
+tornado/M
+tornadoes
+torpedo/GMD
+torpedoes
+torpid/Y
+torpidity/M
+torpor/M
+torque/MGDS
+torrent/SM
+torrential
+torrid/YP
+torridity/M
+torridness/M
+torsion/M
+torsional
+torso/SM
+tort's
+tort/FEAS
+torte/SM
+tortellini/M
+tortilla/MS
+tortoise/MS
+tortoiseshell/SM
+tortoni/M
+tortuous/PY
+tortuousness/M
+torture/DRSMZG
+torturer/M
+torturous
+torus
+tosh
+toss/MDRSZG
+tossup/MS
+tot/SGMD
+total/GSMDY
+totalitarian/SM
+totalitarianism/M
+totality/SM
+totalizator/SM
+tote/MS
+totem/SM
+totemic
+totted
+totter/ZGMDRS
+totterer/M
+totting
+toucan/MS
+touch/AGMDS
+touchdown/SM
+touche/BJ
+touched/U
+touchily
+touchiness/M
+touching/Y
+touchline/S
+touchpaper/S
+touchscreen/MS
+touchstone/MS
+touchy/RPT
+tough/XTGMDNRYP
+toughen/ZGDR
+toughener/M
+toughie/SM
+toughness/M
+toughs
+toupee/MS
+tour/CFSGDM
+tourism/M
+tourist/MS
+touristic
+touristy
+tourmaline/M
+tournament/SM
+tourney/MS
+tourniquet/MS
+tousle/GDS
+tout/MDGS
+tow/SZGMDR
+toward/S
+towboat/MS
+towel/JGSMD
+towelette/SM
+toweling/M
+tower/GMD
+towhead/MDS
+towhee/MS
+towline/MS
+town/MS
+townee/S
+townhouse/MS
+townie/MS
+townsfolk/M
+township/MS
+townsman/M
+townsmen
+townspeople/M
+townswoman/M
+townswomen
+towpath/M
+towpaths
+towrope/SM
+toxemia/M
+toxic
+toxicity/SM
+toxicological
+toxicologist/SM
+toxicology/M
+toxin/SM
+toy/SGMD
+toyboy/S
+tr
+trabecula
+trabecular
+trabecule
+trace/JDRSMZG
+traceable/U
+tracer/M
+tracery/SM
+trachea/M
+tracheae
+tracheal
+tracheotomy/SM
+tracing/M
+track/ZGSMDR
+trackball/SM
+tracker/M
+trackless
+tracksuit/S
+tract's
+tract/CEKFAS
+tractability/IM
+tractable/I
+tractably/I
+traction/EFACKM
+tractor/FCKMS
+trad
+trade/JDRSMZG
+trademark/SGMD
+trader/M
+tradesman/M
+tradesmen
+tradespeople/M
+tradeswoman/M
+tradeswomen
+trading/M
+tradition/MS
+traditional/Y
+traditionalism/M
+traditionalist/SM
+traduce/DRSZG
+traducer/M
+traffic/SM
+trafficked
+trafficker/SM
+trafficking/M
+tragedian/SM
+tragedienne/MS
+tragedy/SM
+tragic
+tragically
+tragicomedy/SM
+tragicomic
+trail/ZGSMDR
+trailblazer/MS
+trailblazing/M
+trailer/M
+train/ZGSMDRB
+trained/U
+trainee/SM
+trainer/M
+training/M
+trainload/MS
+trainman/M
+trainmen
+trainspotter/S
+trainspotting
+traipse/DSMG
+trait/SM
+traitor/SM
+traitorous/Y
+trajectory/SM
+tram/MS
+tramcar/S
+tramlines
+trammed
+trammel/SGMD
+trammeled/U
+tramming
+tramp/ZGSMDR
+tramper/M
+trample/DRSMZG
+trampler/M
+trampoline/MGDS
+tramway/S
+trance/MS
+tranche/S
+tranquil/RYT
+tranquility/M
+tranquilize/ZGDRS
+tranquilizer/M
+trans/I
+transact/DGS
+transaction/SM
+transactor/MS
+transatlantic
+transceiver/SM
+transcend/GSD
+transcendence/M
+transcendent
+transcendental/Y
+transcendentalism/M
+transcendentalist/SM
+transcontinental
+transcribe/ZGDRS
+transcriber/M
+transcript/MS
+transcription/SM
+transducer/MS
+transect/DSG
+transept/MS
+transfer/MBS
+transferal/MS
+transference/M
+transferred
+transferring
+transfiguration/M
+transfigure/GDS
+transfinite
+transfix/DSG
+transform/BSZGMDR
+transformation/SM
+transformer/M
+transfuse/DSXGN
+transfusion/M
+transgender/S
+transgenic
+transgress/GDS
+transgression/SM
+transgressor/SM
+transience/M
+transiency/M
+transient/SMY
+transistor/SM
+transistorize/DSG
+transit/SGMD
+transition/GSMD
+transitional/Y
+transitive/ISMY
+transitiveness/M
+transitivity/M
+transitory
+transl
+translatable/U
+translate/DSGNBX
+translated/U
+translation/M
+translator/SM
+transliterate/DSGNX
+transliteration/M
+translocation
+translucence/M
+translucency/M
+translucent/Y
+transmigrate/GNDS
+transmigration/M
+transmissible
+transmission/MS
+transmit/S
+transmittable
+transmittal/M
+transmittance/M
+transmitted
+transmitter/SM
+transmitting
+transmogrification/M
+transmogrify/DSNG
+transmutation/SM
+transmute/BDSG
+transnational/MS
+transoceanic
+transom/SM
+transpacific
+transparency/SM
+transparent/Y
+transpiration/M
+transpire/DSG
+transplant/MDGS
+transplantation/M
+transpolar
+transponder/SM
+transport/BSZGMDR
+transportation/M
+transporter/M
+transpose/DSG
+transposition/MS
+transsexual/SM
+transsexualism/M
+transship/SL
+transshipment/M
+transshipped
+transshipping
+transubstantiation/M
+transverse/MYS
+transvestism/M
+transvestite/MS
+trap/MS
+trapdoor/MS
+trapeze/SM
+trapezium/SM
+trapezoid/SM
+trapezoidal
+trappable
+trapped
+trapper/SM
+trapping/S
+trappings/M
+trapshooting/M
+trash/GMDS
+trashcan/MS
+trashiness/M
+trashy/RPT
+trauma/MS
+traumatic
+traumatically
+traumatize/GDS
+travail/SGMD
+travel/MDRSZGJ
+traveled/U
+traveler/M
+traveling/M
+travelogue/MS
+traversal/SM
+traverse/DSMG
+travesty/GDSM
+trawl/ZGSMDR
+trawler/M
+tray/MS
+treacherous/PY
+treacherousness/M
+treachery/SM
+treacle/M
+treacly
+tread/AGSM
+treadle/DSMG
+treadmill/MS
+treas
+treason/BM
+treasonous
+treasure/DRSMZG
+treasurer/M
+treasury/SM
+treat/AGSMD
+treatable
+treated/U
+treatise/SM
+treatment/MS
+treaty/SM
+treble/MGDS
+tree/MDS
+treeing
+treeless
+treelike
+treeline
+treetop/SM
+trefoil/SM
+trek/MS
+trekked
+trekker/SM
+trekking
+trellis/GMDS
+trematode/MS
+tremble/DSMG
+tremendous/Y
+tremolo/SM
+tremor/MS
+tremulous/PY
+tremulousness/M
+trench's
+trench/ADSG
+trenchancy/M
+trenchant/Y
+trencher/MS
+trencherman/M
+trenchermen
+trend/GSMD
+trendily
+trendiness/M
+trendsetter/S
+trendsetting
+trendy/RSMPT
+trepidation/M
+trespass/MDRSZG
+trespasser/M
+tress/EMS
+trestle/MS
+trews
+trey/MS
+triad/SM
+triage/M
+trial/ASM
+trialed
+trialing
+triangle/SM
+triangular/Y
+triangulate/GNDS
+triangulation/M
+triathlete/S
+triathlon/SM
+tribal
+tribalism/M
+tribe/SM
+tribesman/M
+tribesmen
+tribeswoman/M
+tribeswomen
+tribulation/SM
+tribunal/SM
+tribune/MS
+tributary/SM
+tribute's
+tribute/FS
+trice/M
+tricentennial/MS
+triceps/MS
+triceratops/M
+trichina/M
+trichinae
+trichinosis/M
+trick/GSMD
+trickery/M
+trickily
+trickiness/M
+trickle/MGDS
+trickster/SM
+tricky/TRP
+tricolor/SM
+tricycle/SM
+trident/MS
+tried/U
+triennial/MYS
+trier/SM
+trifecta/SM
+trifle/MZGDRS
+trifler/M
+trifocals/M
+trig/M
+trigger/MDSG
+triglyceride/MS
+trigonometric
+trigonometrical
+trigonometry/M
+trike/SM
+trilateral/S
+trilby/SM
+trill/GSMD
+trillion/SMH
+trillionth/M
+trillionths
+trillium/M
+trilobite/SM
+trilogy/SM
+trim/PMYS
+trimaran/MS
+trimester/SM
+trimmed/U
+trimmer/SM
+trimmest
+trimming/SM
+trimmings/M
+trimness/M
+trimonthly
+trinitrotoluene/M
+trinity/SM
+trinket/SM
+trio/MS
+trip/MYS
+tripartite
+tripe/M
+triple/MGDS
+triplet/SM
+triplex/MS
+triplicate/MGDS
+tripod/MS
+tripodal
+tripos
+tripped
+tripper/SM
+tripping
+triptych/M
+triptychs
+tripwire/S
+trireme/SM
+trisect/SDG
+trisection/M
+trite/FPYT
+triteness/FM
+triter
+tritium/M
+triumph/GMD
+triumphal
+triumphalism
+triumphalist
+triumphant/Y
+triumphs
+triumvir/MS
+triumvirate/SM
+trivalent
+trivet/MS
+trivia/M
+trivial/Y
+triviality/SM
+trivialization/M
+trivialize/GDS
+trivium/M
+trochaic
+trochee/SM
+trod/AU
+trodden/A
+troglodyte/SM
+troika/MS
+troll/SGMD
+trolley/SM
+trolleybus/MS
+trollop/SM
+trombone/MS
+trombonist/MS
+tromp/SGD
+tron/S
+troop/SZGMDR
+trooper/M
+troopship/MS
+trope/SM
+trophy/SM
+tropic/MS
+tropical/Y
+tropics/M
+tropism/SM
+troposphere/SM
+trot/MS
+troth/M
+trotted
+trotter/SM
+trotting
+troubadour/MS
+trouble/DSMG
+troubled/U
+troublemaker/MS
+troubleshoot/DRZGS
+troubleshooter/M
+troubleshooting/M
+troubleshot
+troublesome/Y
+trough/M
+troughs
+trounce/DRSZG
+trouncer/M
+troupe/MZGDRS
+trouper/M
+trouser/SM
+trousers/M
+trousseau/M
+trousseaux
+trout/SM
+trove/SM
+trow/DSG
+trowel/MDSG
+troy/S
+truancy/M
+truant/GMDS
+truce/SM
+truck/SZGMDR
+trucker/M
+trucking/M
+truckle/MGDS
+truckload/SM
+truculence/M
+truculent/Y
+trudge/MGDS
+true/MTGDRS
+truelove/SM
+truffle/MS
+trug/S
+truism/MS
+truly/U
+trump/SGMD
+trumpery/M
+trumpet/ZGMDRS
+trumpeter/M
+truncate/GNDS
+truncation/M
+truncheon/SM
+trundle/MZGDRS
+trundler/M
+trunk/SGM
+truss/GMDS
+trust/ESGMD
+trustee/MS
+trusteeship/SM
+trustful/EY
+trustfulness/M
+trusting/Y
+trustworthiness/M
+trustworthy/TPR
+trusty/TRSM
+truth/ZMR
+truther/M
+truthful/UYP
+truthfulness/UM
+truthiness
+truths/U
+try's
+try/AGDS
+trying/Y
+tryout/SM
+tryptophan
+tryst/SMDG
+tsarists
+tsetse/MS
+tsp
+tsunami/SM
+ttys
+tub/SZGMDR
+tuba/MS
+tubal
+tubby/TR
+tube/MS
+tubeless/M
+tuber/M
+tubercle/SM
+tubercular
+tuberculin/M
+tuberculosis/M
+tuberculous
+tuberose/M
+tuberous
+tubful/MS
+tubing/M
+tubular
+tubule/MS
+tuck/MDRSZG
+tucker/MDG
+tuft/MDRSZG
+tufter/M
+tug/SM
+tugboat/MS
+tugged
+tugging
+tuition/IM
+tularemia/M
+tulip/SM
+tulle/M
+tum/S
+tumble/DRSMZG
+tumbledown
+tumbler/M
+tumbleweed/SM
+tumbling/M
+tumbrel/SM
+tumescence/M
+tumescent
+tumid
+tumidity/M
+tummy/SM
+tumor/SM
+tumorous
+tumult/SM
+tumultuous/Y
+tun/SZGMDR
+tuna/MS
+tundra/SM
+tune/MS
+tuneful/YP
+tunefulness/M
+tuneless/Y
+tuner/M
+tuneup/SM
+tungsten/M
+tunic/SM
+tunnel/JSMDRZG
+tunneler/M
+tunny/SM
+tuple/S
+tuppence
+tuppenny
+tuque/SM
+turban/SMD
+turbid
+turbidity/M
+turbine/SM
+turbo/SM
+turbocharge/ZGDRS
+turbocharger/M
+turbofan/SM
+turbojet/SM
+turboprop/SM
+turbot/SM
+turbulence/M
+turbulent/Y
+turd/MS
+turducken/SM
+tureen/SM
+turf/MDSG
+turfy
+turgid/Y
+turgidity/M
+turkey/SM
+turmeric/SM
+turmoil/MS
+turn/AMDRSZG
+turnabout/SM
+turnaround/SM
+turnbuckle/SM
+turncoat/SM
+turner/AM
+turning/MS
+turnip/SM
+turnkey/MS
+turnoff/MS
+turnout/MS
+turnover/MS
+turnpike/MS
+turnstile/SM
+turntable/SM
+turpentine/M
+turpitude/M
+turps
+turquoise/SM
+turret/SMD
+turtle/SM
+turtledove/SM
+turtleneck/SMD
+tush/MS
+tusk/MDS
+tussle/DSMG
+tussock/MS
+tussocky
+tut/SM
+tutelage/M
+tutelary
+tutor/SMDG
+tutored/U
+tutorial/SM
+tutorship/M
+tutted
+tutti/SM
+tutting
+tutu/MS
+tux/MS
+tuxedo/SM
+twaddle/MZGDRS
+twaddler/M
+twain/M
+twang/SMDG
+twangy/RT
+twas
+twat/S
+tweak/SMDG
+twee
+tweed/SM
+tweeds/M
+tweedy/RT
+tween
+tweet's
+tweet/ASDG
+tweeter/SM
+tweezers/M
+twelfth/M
+twelfths
+twelve/SM
+twelvemonth/M
+twelvemonths
+twentieth/M
+twentieths
+twenty/SMH
+twerk/SDG
+twerp/SM
+twice
+twiddle/MGDS
+twiddly
+twig/MS
+twigged
+twigging
+twiggy/TR
+twilight/M
+twilit
+twill/MD
+twin/MDRSZG
+twine/SM
+twiner/M
+twinge/DSMG
+twink/SY
+twinkle/MGJDS
+twinkling/M
+twinned
+twinning
+twinset/S
+twirl/SMDRZG
+twirler/M
+twirly
+twist's
+twist/USDG
+twister/MS
+twisty/TR
+twit/MS
+twitch/GMDS
+twitchy/RT
+twitted
+twitter/MDSG
+twittery
+twitting
+twixt
+two/SM
+twofer/SM
+twofold
+twopence/SM
+twopenny
+twosome/SM
+twp
+tycoon/SM
+tying/AU
+tyke/MS
+tympani/M
+tympanic
+tympanist/MS
+tympanum/SM
+type's
+type/AGDS
+typecast/GS
+typeface/MS
+typescript/MS
+typeset/S
+typesetter/MS
+typesetting/M
+typewrite/RSZG
+typewriter/M
+typewriting/M
+typewritten
+typewrote
+typhoid/M
+typhoon/MS
+typhus/M
+typical/UY
+typicality/M
+typification/M
+typify/NGDS
+typing/M
+typist/SM
+typo/MS
+typographer/SM
+typographic
+typographical/Y
+typography/M
+typology/SM
+tyrannic
+tyrannical/Y
+tyrannize/GDS
+tyrannosaur/MS
+tyrannosaurus/MS
+tyrannous
+tyranny/SM
+tyrant/SM
+tyro/MS
+u/S
+ubiquitous/Y
+ubiquity/M
+udder/SM
+ufologist/SM
+ufology/M
+ugh
+ugliness/M
+ugly/RTP
+uh
+uhf
+ukase/SM
+ukulele/SM
+ulcer/SM
+ulcerate/XDSGN
+ulceration/M
+ulcerous
+ulna/M
+ulnae
+ulnar
+ulster/MS
+ult
+ulterior
+ultimate/MY
+ultimatum/MS
+ultimo
+ultra/SM
+ultraconservative/SM
+ultrahigh
+ultralight/SM
+ultramarine/M
+ultramodern
+ultrasonic
+ultrasonically
+ultrasound/MS
+ultraviolet/M
+ululate/DSGNX
+ululation/M
+um
+umbel/SM
+umber/M
+umbilical
+umbilici
+umbilicus/M
+umbra/SM
+umbrage/M
+umbrella/SM
+umiak/SM
+umlaut/MS
+ump/SGMD
+umpire/MGDS
+umpteen/H
+unabridged/MS
+unacceptability
+unacceptable
+unaccommodating
+unaccountably
+unadventurous
+unaesthetic
+unalterably
+unambitious
+unanimity/M
+unanimous/Y
+unapparent
+unappetizing
+unappreciative
+unassertive
+unassuming/Y
+unavailing/Y
+unaware/S
+unbeknownst
+unbend/SG
+unbent
+unbid
+unblinking/Y
+unblushing/Y
+unbosom/DG
+unbound/D
+unbreakable
+unbroken
+uncanny/T
+uncap/S
+uncaring
+uncatalogued
+unceasing/Y
+unchangeable
+uncharacteristic
+uncharitable
+unchaste/RT
+uncial/M
+uncle/SM
+unclean/DRPT
+uncleanly/T
+unclear/DRT
+uncomfortable
+uncommon/T
+uncomplaining/Y
+uncomplicated
+uncomprehending/Y
+uncompromising/Y
+unconditional/Y
+uncongenial
+unconscionable
+unconscionably
+unconscious/M
+unconstitutional/Y
+uncontrollably
+uncontroversial
+uncool
+uncooperative
+uncouth/Y
+uncrushable
+unction/SM
+unctuous/YP
+unctuousness/M
+uncut
+undaunted/Y
+undecided/SM
+undemonstrative/Y
+undeniably
+under
+underachieve/LZGDRS
+underachiever/M
+underact/SDG
+underage
+underappreciated
+underarm/SM
+underbelly/SM
+underbid/S
+underbidding
+underbrush/M
+undercarriage/MS
+undercharge/MGDS
+underclass/MS
+underclassman/M
+underclassmen
+underclothes/M
+underclothing/M
+undercoat/GJSMD
+undercoating/M
+undercover
+undercurrent/SM
+undercut/SM
+undercutting
+underdeveloped
+underdevelopment/M
+underdog/SM
+underdone
+underemployed
+underemployment/M
+underestimate/DSMGNX
+underestimation/M
+underexpose/GDS
+underexposure/MS
+underfed
+underfeed/GS
+underfloor
+underflow
+underfoot
+underfunded
+underfur/M
+undergarment/SM
+undergo/G
+undergoes
+undergone
+undergrad/S
+undergraduate/SM
+underground/MS
+undergrowth/M
+underhand
+underhanded/PY
+underhandedness/M
+underlain
+underlay/SM
+underlie/S
+underline/MGDS
+underling/MS
+underlip/SM
+underlying
+undermanned
+undermentioned
+undermine/GDS
+undermost
+underneath/M
+underneaths
+undernourished
+undernourishment/M
+underpaid
+underpants/M
+underpart/MS
+underpass/MS
+underpay/GSL
+underpayment/SM
+underpin/S
+underpinned
+underpinning/MS
+underplay/DGS
+underpopulated
+underprivileged
+underproduction/M
+underrate/GDS
+underrepresented
+underscore/DSMG
+undersea/S
+undersecretary/SM
+undersell/GS
+undersexed
+undershirt/SM
+undershoot/SG
+undershorts/M
+undershot
+underside/MS
+undersign/DGS
+undersigned/M
+undersized
+underskirt/SM
+undersold
+understaffed
+understand/SGBJ
+understandably
+understanding/MY
+understate/DSLG
+understatement/SM
+understood
+understudy/GDSM
+undertake/ZGJRS
+undertaken
+undertaker/M
+undertaking/M
+underthings/M
+undertone/MS
+undertook
+undertow/SM
+underused
+underutilized
+undervaluation/M
+undervalue/DSG
+underwater
+underway
+underwear/M
+underweight/M
+underwent
+underwhelm/DGS
+underwire/DS
+underworld/MS
+underwrite/ZGRS
+underwriter/M
+underwritten
+underwrote
+undesirable/MS
+undies/M
+undo
+undoubted/Y
+undramatic
+undue
+undulant
+undulate/DSXGN
+undulation/M
+undying
+unearthliness/M
+unease/M
+uneasy/T
+uneatable
+uneconomic
+unemployed/M
+unending
+unenterprising
+unequal/DY
+unerring/Y
+unessential
+uneven/Y
+unexceptionably
+unexcited
+unexciting
+unexpected/YP
+unexpectedness/M
+unfailing/Y
+unfair/PTRY
+unfaltering
+unfamiliar
+unfathomably
+unfed
+unfeeling/Y
+unfeminine
+unfit/S
+unfitting
+unfix/GDS
+unflagging/Y
+unflappability/M
+unflappable
+unflappably
+unflattering
+unflinching/Y
+unforgettably
+unforgivably
+unfortunate/MS
+unfriendly/T
+unfrock/DG
+unfruitful
+unfunny
+ungainliness/M
+ungainly/RPT
+ungenerous
+ungentle
+ungodly/T
+ungraceful/Y
+ungrudging
+unguarded
+unguent/SM
+ungulate/MS
+unhandy/T
+unhappy/T
+unhealthful
+unhealthy/T
+unhistorical
+unholy/T
+unhurt
+unicameral
+unicellular
+unicorn/SM
+unicycle/SM
+unidirectional
+unification/AM
+uniform/SMDYG
+uniformity/M
+unify/AGDSN
+unilateral/Y
+unilateralism
+unimportant
+unimpressive
+uninformative
+uninhibited/Y
+uninstall/BSZGDR
+uninsured
+unintelligent
+unintended
+uninteresting
+uninterrupted/Y
+uninterruptible
+uninviting
+union/ASM
+unionism/M
+unionist/MS
+unique/YTRP
+uniqueness/M
+unisex/M
+unison/M
+unitary
+unite/AEGSD
+unitedly
+unities
+unitize/DSG
+unity/EM
+univalent
+univalve/SM
+universal/MYS
+universality/M
+universalize/DSG
+universe/SM
+university/SM
+unjust/Y
+unkempt
+unkind/T
+unkindly/T
+unknowable/M
+unknown/SM
+unleaded/M
+unless
+unlike/PB
+unlikely/T
+unlit
+unlock/DSG
+unlovable
+unlovely/TR
+unloving
+unlucky/T
+unmanly/T
+unmarried
+unmeaning
+unmentionable/MS
+unmentionables/M
+unmet
+unmindful
+unmissable
+unmistakably
+unmoral
+unmovable
+unmusical
+unnecessary
+unnerving/Y
+unobservant
+unoffensive
+unofficial/Y
+unoriginal
+unpeople
+unperceptive
+unpersuasive
+unpick/GDS
+unpin/S
+unpleasing
+unpolitical
+unpopular
+unpractical
+unprecedented/Y
+unprofessional/Y
+unpromising
+unpropitious
+unquestioning/Y
+unquiet/TR
+unread/B
+unready
+unreal
+unreasoning
+unregenerate
+unrelated
+unrelenting/Y
+unrelieved/Y
+unremarkable
+unremitting/Y
+unrepentant
+unreported
+unrepresentative
+unrest/M
+unripe/TR
+unroll/GDS
+unromantic
+unruliness/M
+unruly/RTP
+unsafe/YTR
+unsaleable
+unsavory
+unscathed
+unsearchable
+unseeing/Y
+unseemly/T
+unseen/M
+unsentimental
+unset
+unshakable
+unshakably
+unshapely
+unshockable
+unshorn
+unsightliness/M
+unsightly/PT
+unsmiling
+unsociable
+unsocial
+unsold
+unsound/PRYT
+unspeakable
+unspeakably
+unspecific
+unspectacular
+unsporting
+unstable
+unsteady/TRP
+unstinting/Y
+unstrapping
+unsubstantial
+unsubtle
+unsuitable
+unsure
+unsuspecting/Y
+unsymmetrical
+untactful
+unthinkably
+unthinking/Y
+untidy/PTR
+until
+untimely/T
+untiring/Y
+untouchable/MS
+untoward
+untrue/RT
+untrustworthy
+untruth/M
+unutterable
+unutterably
+unwarrantable
+unwary/T
+unwavering
+unwed
+unwelcome/G
+unwell
+unwieldiness/M
+unwieldy/TRP
+unwise/RYT
+unworried
+unworthy/T
+unwound
+unwrapping
+unyielding
+up/S
+upbeat/MS
+upbraid/SGD
+upbringing/MS
+upchuck/SGD
+upcoming
+upcountry/M
+update/MGDRS
+updraft/MS
+upend/SGD
+upfront
+upgrade/MGDS
+upheaval/MS
+upheld
+uphill/MS
+uphold/ZGRS
+upholder/M
+upholster/ASGD
+upholsterer/MS
+upholstery/M
+upkeep/M
+upland/MS
+uplift/JSMDG
+upload/SDG
+upmarket
+upmost
+upon
+upped
+upper/SM
+uppercase/M
+upperclassman/M
+upperclassmen
+upperclasswoman
+upperclasswomen
+uppercut/MS
+uppercutting
+uppermost
+upping
+uppish
+uppity
+upraise/DSG
+uprear/GSD
+upright/MYPS
+uprightness/M
+uprising/SM
+upriver
+uproar/SM
+uproarious/Y
+uproot/GSD
+upscale
+upset/SM
+upsetting
+upshot/SM
+upside/SM
+upsilon/MS
+upstage/GDS
+upstairs
+upstanding
+upstart/MDSG
+upstate/M
+upstream
+upstroke/SM
+upsurge/MGDS
+upswing/MS
+uptake/SM
+uptempo
+upthrust/GSM
+uptick/SM
+uptight
+uptown/M
+uptrend
+upturn/GSMD
+upward/SY
+upwind
+uracil/M
+uranium/M
+urban
+urbane/RYT
+urbanity/M
+urbanization/M
+urbanize/DSG
+urbanologist/MS
+urbanology/M
+urchin/SM
+urea/M
+uremia/M
+uremic
+ureter/SM
+urethane/M
+urethra/M
+urethrae
+urethral
+urge/MGDS
+urgency/M
+urgent/Y
+uric
+urinal/SM
+urinalyses
+urinalysis/M
+urinary
+urinate/GNDS
+urination/M
+urine/M
+urn/SM
+urogenital
+urological
+urologist/MS
+urology/M
+ursine
+urticaria/M
+usability/M
+usable/UA
+usage/SM
+use/AEDSMG
+used/U
+useful/PY
+usefulness/M
+useless/YP
+uselessness/M
+user/MS
+username/MS
+usher/SMDG
+usherette/SM
+usu
+usual's
+usual/UY
+usurer/SM
+usurious
+usurp/SDRZG
+usurpation/M
+usurper/M
+usury/M
+utensil/SM
+uteri
+uterine
+uterus/M
+utilitarian/MS
+utilitarianism/M
+utility/SM
+utilization/M
+utilize/GBDS
+utmost/M
+utopia/SM
+utter/SDYG
+utterance/SM
+uttermost/M
+uveitis
+uvula/SM
+uvular/MS
+uxorious
+v/AS
+vac/S
+vacancy/SM
+vacant/Y
+vacate/DSG
+vacation/ZGMDRS
+vacationer/M
+vacationist/SM
+vaccinate/GNDSX
+vaccination/M
+vaccine/SM
+vacillate/XGNDS
+vacillation/M
+vacuity/M
+vacuole/MS
+vacuous/YP
+vacuousness/M
+vacuum/GSMD
+vagabond/SMDG
+vagabondage/M
+vagarious
+vagary/SM
+vagina/SM
+vaginae
+vaginal/Y
+vagrancy/M
+vagrant/MS
+vague/RYTP
+vagueness/M
+vagus
+vain/RYT
+vainglorious/Y
+vainglory/M
+val
+valance/MS
+vale/MS
+valediction/MS
+valedictorian/SM
+valedictory/SM
+valence/MS
+valency/SM
+valentine/SM
+valet/SMDG
+valetudinarian/MS
+valetudinarianism/M
+valiance/M
+valiant/Y
+valid/Y
+validate/IGNDS
+validation/IM
+validations
+validity/IM
+validness/M
+valise/SM
+valley/SM
+valor/M
+valorous/Y
+valuable/MS
+valuate/DSG
+valuation/CAMS
+value's
+value/CAGSD
+valueless
+valuer/SM
+valve/DSMG
+valveless
+valvular
+vamoose/DSG
+vamp/AMDGS
+vampire/SM
+van/SM
+vanadium/M
+vandal/SM
+vandalism/M
+vandalize/DSG
+vane/MS
+vanguard/MS
+vanilla/SM
+vanish/JDSG
+vanity/SM
+vanned
+vanning
+vanquish/ZGDRS
+vanquisher/M
+vantage/SM
+vape/GDS
+vapid/YP
+vapidity/M
+vapidness/M
+vapor/SM
+vaporization/M
+vaporize/DRSZG
+vaporizer/M
+vaporous
+vaporware
+vapory
+vaquero/MS
+var/S
+variability/IM
+variable/ISM
+variably/I
+variance/SM
+variant/MS
+variate/NX
+variation/M
+varicolored
+varicose
+varied/U
+variegate/DSGN
+variegation/M
+varietal/SM
+variety/SM
+various/Y
+varlet/SM
+varmint/MS
+varnish/GMDS
+varnished/U
+varsity/SM
+vary/DSG
+varying/U
+vascular
+vase/MS
+vasectomy/SM
+vasoconstriction
+vasomotor
+vassal/SM
+vassalage/M
+vast/MRYTSP
+vastness/M
+vat/SM
+vatted
+vatting
+vaudeville/M
+vaudevillian/MS
+vault/SMDRZG
+vaulter/M
+vaulting/M
+vaunt/SMDG
+vb
+veal/M
+vector/SGMD
+veejay/SM
+veep/MS
+veer/MDGS
+veg/M
+vegan/SM
+veganism
+vegeburger/S
+veges
+vegetable/SM
+vegetarian/SM
+vegetarianism/M
+vegetate/GNVDS
+vegetation/M
+vegged
+vegges
+veggie/SM
+veggieburger/S
+vegging
+vehemence/M
+vehemency/M
+vehement/Y
+vehicle/MS
+vehicular
+veil's
+veil/UDGS
+vein/MDGS
+vela
+velar/SM
+veld/MS
+vellum/M
+velocipede/MS
+velocity/SM
+velodrome/S
+velour/MS
+velum/M
+velvet/M
+velveteen/M
+velvety
+venal/Y
+venality/M
+venation/M
+vend/DGS
+vendetta/SM
+vendible
+vendor/MS
+veneer/MDGS
+venerability/M
+venerable
+venerate/DSGN
+veneration/M
+venereal
+vengeance/M
+vengeful/AY
+venial
+venireman/M
+veniremen
+venison/M
+venom/M
+venomous/Y
+venous
+vent's
+vent/DGS
+ventilate/GNDS
+ventilation/M
+ventilator/SM
+ventral
+ventricle/SM
+ventricular
+ventriloquism/M
+ventriloquist/SM
+ventriloquy/M
+venture/DSMG
+venturesome/PY
+venturesomeness/M
+venturous/PY
+venturousness/M
+venue/ASM
+veracious/Y
+veracity/M
+veranda/SM
+verb/KMS
+verbal/MYS
+verbalization/M
+verbalize/GDS
+verbatim
+verbena/SM
+verbiage/MS
+verbose/Y
+verbosity/M
+verboten
+verdant/Y
+verdict/SM
+verdigris/GMDS
+verdure/M
+verge's
+verge/FDSG
+verger/MS
+verifiable/U
+verification/M
+verified/U
+verify/DSNG
+verily
+verisimilitude/M
+veritable
+veritably
+verity/SM
+vermicelli/M
+vermiculite/M
+vermiform
+vermilion/M
+vermin/M
+verminous
+vermouth/M
+vernacular/MS
+vernal
+vernier/SM
+veronica/M
+verruca/SM
+verrucae
+versa
+versatile
+versatility/M
+verse/AFNGMSDX
+versed/U
+versification/M
+versifier/M
+versify/ZGNDRS
+version/AFIMS
+versioned
+versioning
+verso/SM
+versus
+vert/A
+vertebra/M
+vertebrae
+vertebral
+vertebrate/IMS
+vertex/MS
+vertical/MYS
+vertices
+vertiginous
+vertigo/M
+verve/M
+very/RT
+vesicle/SM
+vesicular
+vesiculate
+vesper/MS
+vessel/MS
+vest's
+vest/ILDGS
+vestal/MS
+vestibule/MS
+vestige/SM
+vestigial/Y
+vesting/M
+vestment/IMS
+vestry/SM
+vestryman/M
+vestrymen
+vet/SM
+vetch/MS
+veteran/SM
+veterinarian/MS
+veterinary/SM
+veto/MDG
+vetoes
+vetted
+vetting
+vex/GDS
+vexation/SM
+vexatious/Y
+vhf
+vi
+via
+viability/M
+viable
+viably
+viaduct/SM
+vial/MS
+viand/SM
+vibe/MS
+vibes/M
+vibraharp/SM
+vibrancy/M
+vibrant/Y
+vibraphone/MS
+vibraphonist/MS
+vibrate/GNDSX
+vibration/M
+vibrato/MS
+vibrator/SM
+vibratory
+viburnum/SM
+vicar/SM
+vicarage/SM
+vicarious/YP
+vicariousness/M
+vice/CMS
+viced
+vicegerent/SM
+vicennial
+viceregal
+viceroy/MS
+vichyssoise/M
+vicing
+vicinity/M
+vicious/YP
+viciousness/M
+vicissitude/SM
+victim/MS
+victimization/M
+victimize/GDS
+victor/MS
+victorious/Y
+victory/SM
+victual/SMDG
+vicuna/MS
+videlicet
+video/GSMD
+videocassette/SM
+videoconferencing
+videodisc/MS
+videophone/MS
+videotape/DSMG
+videotex
+vie/DS
+view/AMDRSZG
+viewer/AM
+viewership/M
+viewfinder/SM
+viewing/SM
+viewpoint/MS
+vigesimal
+vigil/SM
+vigilance/M
+vigilant/Y
+vigilante/SM
+vigilantism/M
+vigilantist/M
+vignette/DSMG
+vignettist/MS
+vigor/M
+vigorous/Y
+vii
+viii
+viking/MS
+vile/YTPR
+vileness/M
+vilification/M
+vilify/DSNG
+villa/SM
+village/RSMZ
+villager/M
+villain/SM
+villainous
+villainy/SM
+villein/SM
+villeinage/M
+villi
+villus/M
+vim/M
+vinaigrette/M
+vincible/I
+vindicate/XDSGN
+vindication/M
+vindicator/MS
+vindictive/PY
+vindictiveness/M
+vine/MS
+vinegar/M
+vinegary
+vineyard/MS
+vino/M
+vinous
+vintage/MS
+vintner/MS
+vinyl/SM
+viol/MBS
+viola/SM
+violable/I
+violate/GNDSX
+violation/M
+violator/SM
+violence/M
+violent/Y
+violet/MS
+violin/MS
+violincello/S
+violinist/SM
+violist/MS
+violoncellist/SM
+violoncello/MS
+viper/SM
+viperous
+virago/M
+viragoes
+viral
+vireo/SM
+virgin/MS
+virginal/SM
+virginity/M
+virgule/MS
+virile
+virility/M
+virologist/SM
+virology/M
+virtual/Y
+virtualization
+virtue/SM
+virtuosity/M
+virtuoso/M
+virtuous/YP
+virtuousness/M
+virulence/M
+virulent/Y
+virus/MS
+visa/MDSG
+visage/MS
+viscera
+visceral/Y
+viscid
+viscose/M
+viscosity/M
+viscount/SM
+viscountcy/SM
+viscountess/MS
+viscous
+viscus/M
+vise/ACMGDS
+visibility/IM
+visible/I
+visibly/I
+vision/KGDSM
+visionary/SM
+visit's
+visit/ASGD
+visitant/MS
+visitation/MS
+visitor/MS
+visor/SM
+vista/SM
+visual/SMY
+visualization/SM
+visualize/DRSZG
+visualizer/M
+vita/M
+vitae
+vital/SY
+vitality/M
+vitalization/AM
+vitalize/CAGSD
+vitals/M
+vitamin/MS
+vitiate/GNDS
+vitiation/M
+viticulture/M
+viticulturist/MS
+vitreous
+vitrifaction/M
+vitrification/M
+vitrify/GNDS
+vitrine/SM
+vitriol/M
+vitriolic
+vitriolically
+vittles/M
+vituperate/GNVDS
+vituperation/M
+viva/MS
+vivace
+vivacious/PY
+vivaciousness/M
+vivacity/M
+vivaria
+vivarium/SM
+vivid/RYTP
+vividness/M
+vivify/ADSG
+viviparous
+vivisect/DGS
+vivisection/M
+vivisectional
+vivisectionist/SM
+vixen/SM
+vixenish/Y
+viz
+vizier/SM
+vlf
+vocab
+vocable/MS
+vocabulary/SM
+vocal/SMY
+vocalic
+vocalist/SM
+vocalization/MS
+vocalize/DSG
+vocation/FIKASM
+vocational/Y
+vocative/MS
+vociferate/DSGN
+vociferation/M
+vociferous/YP
+vociferousness/M
+vodka/SM
+vogue/SM
+voguish
+voice/IDSMG
+voiced/U
+voiceless/PY
+voicelessness/M
+voicemail/SM
+void/MDSGB
+voila
+voile/M
+vol/S
+volatile
+volatility/M
+volatilize/DSG
+volcanic
+volcano/M
+volcanoes
+vole/MS
+volition/M
+volitional
+volley/GSMD
+volleyball/MS
+volt/AMS
+voltage/MS
+voltaic
+voltmeter/SM
+volubility/M
+voluble
+volubly
+volume/SM
+voluminous/YP
+voluminousness/M
+voluntarily/I
+voluntarism/M
+voluntary/SM
+volunteer/SGMD
+volunteerism/M
+voluptuary/SM
+voluptuous/PY
+voluptuousness/M
+volute/SM
+vomit/SMDG
+voodoo/GSMD
+voodooism/M
+voracious/PY
+voraciousness/M
+voracity/M
+vortex/MS
+votary/SM
+vote's
+vote/CGVDS
+voter/SM
+vouch/DRSZG
+voucher/M
+vouchsafe/DSG
+vow/SGMD
+vowel/SM
+voyage/MZGDRS
+voyager/M
+voyageur/SM
+voyeur/MS
+voyeurism/M
+voyeuristic
+vulcanization/M
+vulcanize/GDS
+vulgar/RYT
+vulgarian/MS
+vulgarism/MS
+vulgarity/SM
+vulgarization/M
+vulgarize/ZGDRS
+vulgarizer/M
+vulnerabilities
+vulnerability/IM
+vulnerable/I
+vulnerably/I
+vulpine
+vulture/SM
+vulturous
+vulva/M
+vulvae
+vuvuzela/MS
+vying
+w/DNXTGVJ
+wabbit/S
+wack/MRTS
+wackiness/M
+wacko/SM
+wacky/RPT
+wad/SZGMDR
+wadded
+wadding/M
+waddle/DSMG
+wade/MS
+wader/M
+waders/M
+wadge/S
+wadi/MS
+wafer/SM
+waffle/MZGDRS
+waffler/M
+waft/MDGS
+wag/SZGMDR
+wage/MS
+waged/U
+wager/ZGMDR
+wagerer/M
+wagged
+waggery/SM
+wagging
+waggish/YP
+waggishness/M
+waggle/MGDS
+wagon/ZSMR
+wagoner/M
+wagtail/SM
+waif/MS
+wail/MDRZGS
+wailer/M
+wailing/M
+wain/MS
+wainscot/SJMDG
+wainscoting/M
+wainwright/MS
+waist/SM
+waistband/MS
+waistcoat/MS
+waistline/MS
+wait/MDRZGS
+waiter/M
+waiting/M
+waitperson/MS
+waitress/MS
+waitstaff/M
+waive/DRSZG
+waiver/M
+wake/MGJDS
+wakeful/PY
+wakefulness/M
+waken/GSD
+waldo/S
+waldoes
+wale/MGDS
+walk/MDRZGS
+walkabout/S
+walkaway/MS
+walker/M
+walkies
+walking/M
+walkout/SM
+walkover/MS
+walkway/SM
+wall/MDGS
+wallaby/SM
+wallah
+wallahs
+wallboard/M
+wallet/MS
+walleye/DSM
+wallflower/MS
+wallop/MDSJG
+walloping/M
+wallow/MDSG
+wallpaper/SMDG
+wally/S
+walnut/MS
+walrus/MS
+waltz/ZGMDRS
+waltzer/M
+wampum/M
+wan/GPDY
+wand/MS
+wander/DRSJZG
+wanderer/M
+wanderings/M
+wanderlust/SM
+wane/MS
+wangle/MZGDRS
+wangler/M
+wank/DRZGS
+wanna
+wannabe/SM
+wannabee/S
+wanner
+wanness/M
+wannest
+want/MDGS
+wanted/U
+wanton/MDYSPG
+wantonness/M
+wapiti/MS
+war/SM
+warble/MZGDRS
+warbler/M
+warbonnet/SM
+ward/AMDGS
+warden/MS
+warder/MS
+wardress/S
+wardrobe/SM
+wardroom/SM
+ware/MS
+warehouse/DSMG
+warez
+warfare/M
+warhead/MS
+warhorse/SM
+warily/U
+wariness/UM
+warlike
+warlock/MS
+warlord/MS
+warm/PDRYHZTGS
+warmblooded
+warmer/M
+warmhearted/P
+warmheartedness/M
+warmish
+warmness/M
+warmonger/SMG
+warmongering/M
+warmth/M
+warn/JDGS
+warning/M
+warp/MDGS
+warpaint
+warpath/M
+warpaths
+warplane/MS
+warrant/GMDS
+warranted/U
+warranty/DSMG
+warred
+warren/MS
+warring
+warrior/SM
+warship/SM
+wart/MS
+warthog/SM
+wartime/M
+warty/TR
+wary/UPRT
+was
+wasabi
+wash/BJMDRSZG
+washable/SM
+washbasin/SM
+washboard/SM
+washbowl/SM
+washcloth/M
+washcloths
+washed/U
+washer/M
+washerwoman/M
+washerwomen
+washing/M
+washout/MS
+washrag/MS
+washroom/MS
+washstand/SM
+washtub/MS
+washy/TR
+wasn't
+wasp/MS
+waspish/YP
+waspishness/M
+wassail/SMDG
+wast
+wastage/M
+waste/DRSMZG
+wastebasket/MS
+wasteful/PY
+wastefulness/M
+wasteland/SM
+wastepaper/M
+waster/M
+wastewater
+wastrel/SM
+watch/BZGMDRS
+watchable/U
+watchband/MS
+watchdog/SM
+watcher/M
+watchful/YP
+watchfulness/M
+watchmaker/MS
+watchmaking/M
+watchman/M
+watchmen
+watchstrap/S
+watchtower/SM
+watchword/MS
+water/GSMD
+waterbed/MS
+waterbird/SM
+waterboard/MDJSG
+waterboarding/M
+waterborne
+watercolor/MS
+watercourse/SM
+watercraft/M
+watercress/M
+waterfall/SM
+waterfowl/SM
+waterfront/MS
+waterhole/SM
+wateriness/M
+waterlily/SM
+waterline/MS
+waterlogged
+watermark/MDGS
+watermelon/SM
+watermill/MS
+waterproof/SMDG
+waterproofing/M
+waters/M
+watershed/MS
+waterside/MS
+waterspout/SM
+watertight
+waterway/MS
+waterwheel/SM
+waterworks/M
+watery/PTR
+watt/MS
+wattage/M
+wattle/MGDS
+wave/MZGDRS
+waveband/S
+waveform
+wavelength/M
+wavelengths
+wavelet/SM
+wavelike
+waver/ZGMDR
+waverer/M
+wavering/Y
+waviness/M
+wavy/PRT
+wax/GMDNS
+waxiness/M
+waxwing/SM
+waxwork/SM
+waxy/RPT
+way/SM
+waybill/SM
+wayfarer/MS
+wayfaring/SM
+waylaid
+waylay/RSZG
+waylayer/M
+wayside/SM
+wayward/PY
+waywardness/M
+wazoo/S
+we
+we'd
+we'll
+we're
+we've
+weak/PNRYXT
+weaken/DRZG
+weakener/M
+weakfish/MS
+weakish
+weakling/SM
+weakness/MS
+weal/MHS
+wealth/M
+wealthiness/M
+wealthy/TRP
+wean/DGS
+weapon/MS
+weaponize/GDS
+weaponless
+weaponry/M
+wear/MRBJSZG
+wearable/U
+wearer/M
+wearied/U
+wearily
+weariness/M
+wearisome/Y
+weary/TGDRSP
+weasel/MDYSG
+weather/SMDG
+weatherboard/SG
+weathercock/MS
+weathering/M
+weatherization/M
+weatherize/DSG
+weatherman/M
+weathermen
+weatherperson/MS
+weatherproof/GSD
+weatherstrip/S
+weatherstripped
+weatherstripping/M
+weave/DRSMZG
+weaver/M
+weaving/M
+web/SM
+webbed
+webbing/M
+webcam/MS
+webcast/SMG
+webfeet
+webfoot/M
+webinar/SM
+webisode/MS
+weblog/MS
+webmaster/SM
+webmistress/MS
+website/SM
+wed/AS
+wedded/A
+wedder
+wedding/SM
+wedge/DSMG
+wedgie/MS
+wedlock/M
+wee/RSMT
+weed/MDRSZG
+weeder/M
+weedkiller/S
+weedless
+weedy/TR
+weeing
+week/MYS
+weekday/SM
+weekend/SZGMDR
+weekly/SM
+weeknight/SM
+ween/DSG
+weenie/MTRS
+weensy/RT
+weeny
+weep/MRJSZG
+weeper/M
+weepie
+weepy/TRSM
+weevil/MS
+weft/MS
+weigh's
+weigh/AGD
+weighbridge/S
+weighs/A
+weight/MDSJG
+weighted/U
+weightily
+weightiness/M
+weightless/YP
+weightlessness/M
+weightlifter/MS
+weightlifting/M
+weighty/PTR
+weir/MS
+weird/PTRY
+weirdie/MS
+weirdness/M
+weirdo/MS
+welcome/MGDS
+weld/MDRBSZG
+welder/M
+welfare/M
+welkin/M
+well/MDPSG
+wellhead/SM
+wellie
+wellington/MS
+wellness/M
+wellspring/MS
+welly/S
+welsh/ZGDRS
+welsher/M
+welt/MDRSZG
+welter/GMD
+welterweight/SM
+wen/M
+wench/MS
+wend/DSG
+went
+wept
+were
+weren't
+werewolf/M
+werewolves
+west/M
+westbound
+westerly/SM
+western/SZMR
+westerner/M
+westernization/M
+westernize/GDS
+westernmost
+westward/S
+wet/SMYP
+wetback/SM
+wetland/SM
+wetness/M
+wetter/SM
+wettest
+wetting
+wetware/S
+whack/SJZGMDR
+whacker/M
+whale/DRSMZG
+whaleboat/MS
+whalebone/M
+whaler/M
+whaling/M
+wham/MS
+whammed
+whamming
+whammy/SM
+wharf/M
+wharves
+what/MS
+whatchamacallit/MS
+whatever
+whatnot/M
+whatshername
+whatshisname
+whatsit/S
+whatsoever
+wheal/SM
+wheat/MN
+wheatgerm
+wheatmeal
+whee
+wheedle/DRSZG
+wheedler/M
+wheel/SMDRG
+wheelbarrow/SM
+wheelbase/SM
+wheelchair/SM
+wheelhouse/MS
+wheelie/SM
+wheelwright/MS
+wheeze/DSMG
+wheezily
+wheeziness/M
+wheezy/PRT
+whelk/SMD
+whelm/SDG
+whelp/SMDG
+when/MS
+whence
+whenever
+whensoever
+where/SM
+whereabouts/M
+whereas
+whereat
+whereby
+wherefore/MS
+wherein
+whereof
+whereon
+wheresoever
+whereto
+whereupon
+wherever
+wherewith
+wherewithal/M
+wherry/SM
+whet/S
+whether
+whetstone/SM
+whetted
+whetting
+whew
+whey/M
+which
+whichever
+whiff/SMDG
+whiffletree/MS
+while/DSMG
+whilom
+whilst
+whim/MS
+whimper/MDGS
+whimsical/Y
+whimsicality/M
+whimsy/SM
+whine/DRSMZG
+whiner/M
+whinge/DRSZG
+whingeing
+whinny/GDSM
+whiny/RT
+whip/MS
+whipcord/M
+whiplash/MS
+whipped
+whipper/MS
+whippersnapper/MS
+whippet/MS
+whipping/SM
+whippletree/SM
+whippoorwill/MS
+whipsaw/MDGS
+whir/MS
+whirl/SMDG
+whirligig/MS
+whirlpool/MS
+whirlwind/MS
+whirlybird/SM
+whirred
+whirring
+whisk/SMDRZG
+whisker/MD
+whiskery
+whiskey/MS
+whiskys
+whisper/MDRSZG
+whisperer/M
+whist/M
+whistle/MZGDRS
+whistler/M
+whit/MDNRSXTGJ
+white/SPM
+whitebait
+whiteboard/S
+whitecap/SM
+whitefish/MS
+whitehead/MS
+whiten/ZGDRJ
+whitener/M
+whiteness/M
+whitening/M
+whiteout/SM
+whitetail/MS
+whitewall/SM
+whitewash/MDSG
+whitewater/M
+whitey/SM
+whither
+whiting/M
+whitish
+whittle/ZGDRS
+whittler/M
+whiz/M
+whizkid/M
+whizzbang/MS
+whizzed
+whizzes
+whizzing
+who'd
+who'll
+who're
+who've
+who/M
+whoa
+whodunit/MS
+whoever
+whole/SMP
+wholefood/S
+wholegrain
+wholehearted/YP
+wholeheartedness/M
+wholemeal
+wholeness/M
+wholesale/MZGDRS
+wholesaler/M
+wholesome/UP
+wholesomely
+wholesomeness/UM
+wholewheat
+wholly
+whom
+whomever
+whomsoever
+whoop/SMDRZG
+whoopee/S
+whooper/M
+whoosh/MDSG
+whop/S
+whopped
+whopper/SM
+whopping
+whore/SMG
+whorehouse/MS
+whoreish
+whorish
+whorl/SMD
+whose
+whoso
+whosoever
+whup/S
+whupped
+whupping
+why'd
+why/M
+whys
+wick/MDRSZ
+wicked/TPRY
+wickedness/M
+wicker/M
+wickerwork/M
+wicket/SM
+wide/YTRP
+widemouthed
+widen/SDRZG
+widener/M
+wideness/M
+widescreen/MS
+widespread
+widget/S
+widow/SMDRZG
+widower/M
+widowhood/M
+width/M
+widths
+wield/SDRZG
+wielder/M
+wiener/SM
+wienie/SM
+wife/MY
+wifeless
+wig/SM
+wigeon/M
+wigged
+wigging
+wiggle/DRSMZG
+wiggler/M
+wiggly/TR
+wight/SM
+wiglet/SM
+wigwag/SM
+wigwagged
+wigwagging
+wigwam/SM
+wiki/MS
+wild/MRYSTP
+wildcard/MS
+wildcat/MS
+wildcatted
+wildcatter/MS
+wildcatting
+wildebeest/MS
+wilderness/MS
+wildfire/MS
+wildflower/SM
+wildfowl/M
+wildlife/M
+wildness/M
+wilds/M
+wile/MGDS
+wiliness/M
+will/MDS
+willful/PY
+willfulness/M
+willies/M
+willing/UPY
+willingness/UM
+williwaw/MS
+willow/SM
+willowy
+willpower/M
+willy/S
+wilt/MDSG
+wily/RTP
+wimp/MDSG
+wimpish
+wimple/DSMG
+wimpy/RT
+win/SGMD
+wince/DSMG
+winch/MDSG
+wind's
+wind/UASG
+windbag/SM
+windblown
+windbreak/SZMR
+windbreaker/M
+windburn/MD
+windcheater/S
+windchill/M
+winded
+winder/SM
+windfall/MS
+windflower/MS
+windily
+windiness/M
+winding's
+windjammer/SM
+windlass/MS
+windless
+windmill/MDGS
+window/SMDG
+windowless
+windowpane/SM
+windowsill/SM
+windpipe/MS
+windproof
+windrow/SM
+windscreen/SM
+windshield/SM
+windsock/MS
+windstorm/MS
+windsurf/ZGDRS
+windsurfer/M
+windsurfing/M
+windswept
+windup/SM
+windward/M
+windy/RTP
+wine/MS
+wineglass/MS
+winegrower/MS
+winemaker/MS
+winery/SM
+wing/MDRZG
+wingding/MS
+wingless
+winglike
+wingnut/SM
+wingspan/MS
+wingspread/SM
+wingtip/SM
+wink/MDRSZG
+winker/M
+winkle/DSMG
+winnable/U
+winner/SM
+winning/MYS
+winnow/ZGSDR
+winnower/M
+wino/MS
+winsome/YTRP
+winsomeness/M
+winter/GSMD
+wintergreen/M
+winterize/GDS
+wintertime/M
+wintry/TR
+winy/RT
+wipe/MZGDRS
+wiper/M
+wire's
+wire/AGDS
+wired/S
+wirehair/MS
+wireless/MS
+wiretap/MS
+wiretapped
+wiretapper/SM
+wiretapping/M
+wiriness/M
+wiring/M
+wiry/RTP
+wisdom/M
+wise/MYTGDRS
+wiseacre/SM
+wisecrack/MDSG
+wiseguy/S
+wish/MDRSZG
+wishbone/SM
+wisher/M
+wishful/Y
+wishlist's
+wisp/MS
+wispy/RT
+wist
+wisteria/SM
+wistful/YP
+wistfulness/M
+wit/SM
+witch/MDSG
+witchcraft/M
+witchery/M
+with
+withal
+withdraw/SG
+withdrawal/MS
+withdrawn
+withdrew
+withe/DRSMZG
+wither/JGD
+withering/Y
+withers/M
+withheld
+withhold/SG
+withholding/M
+within/M
+without
+withstand/GS
+withstood
+witless/PY
+witlessness/M
+witness/MDSG
+wits/M
+witted
+witter/SGD
+witticism/SM
+wittily
+wittiness/M
+witting/UY
+witty/RPT
+wive/GDS
+wiz
+wizard/SMY
+wizardry/M
+wizened
+wk/Y
+woad/M
+wobble/MGDS
+wobbliness/M
+wobbly/RTP
+wodge/S
+woe/SM
+woebegone
+woeful/YP
+woefuller
+woefullest
+woefulness/M
+wog/S
+wok/SMN
+woke
+wold/MS
+wolf/MDSG
+wolfhound/SM
+wolfish
+wolfram/M
+wolverine/SM
+wolves
+woman/M
+womanhood/M
+womanish
+womanize/DRSZG
+womanizer/M
+womankind/M
+womanlike/M
+womanliness/M
+womanly/RPT
+womb/MS
+wombat/MS
+womble/S
+women/M
+womenfolk/SM
+womenfolks/M
+won't
+won/M
+wonder/MDGLS
+wonderful/YP
+wonderfulness/M
+wondering/Y
+wonderland/MS
+wonderment/M
+wondrous/Y
+wonk/MS
+wonky/TR
+wont/MD
+wonted/U
+woo/SZGDR
+wood/MDNSG
+woodbine/M
+woodblock/MS
+woodcarver/MS
+woodcarving/SM
+woodchuck/MS
+woodcock/SM
+woodcraft/M
+woodcut/SM
+woodcutter/SM
+woodcutting/M
+wooden/RYTP
+woodenness/M
+woodiness/M
+woodland/SM
+woodlice
+woodlot/SM
+woodlouse
+woodman/M
+woodmen
+woodpecker/MS
+woodpile/SM
+woods/M
+woodshed/SM
+woodsiness/M
+woodsman/M
+woodsmen
+woodsy/RTP
+woodwind/MS
+woodwork/MRZG
+woodworker/M
+woodworking/M
+woodworm/S
+woody/TPRSM
+wooer/M
+woof/MDRSZG
+woofer/M
+wool/MNX
+woolen/M
+woolgathering/M
+wooliness
+woolliness/M
+woolly/RSMPT
+woozily
+wooziness/M
+woozy/TRP
+wop/S!
+word's
+word/ADSG
+wordage/M
+wordbook/SM
+wordily
+wordiness/M
+wording/SM
+wordless/Y
+wordplay/M
+wordsmith
+wordsmiths
+wordy/TPR
+wore
+work's
+work/ADJSG
+workable/U
+workaday
+workaholic/SM
+workaround/S
+workbasket/S
+workbench/MS
+workbook/MS
+workday/SM
+worker/MS
+workfare/M
+workflow/MS
+workforce/M
+workhorse/SM
+workhouse/SM
+working's
+workingman/M
+workingmen
+workings/M
+workingwoman/M
+workingwomen
+workload/MS
+workman/M
+workmanlike
+workmanship/M
+workmate/S
+workmen
+workout/SM
+workplace/MS
+workroom/MS
+works/M
+worksheet/MS
+workshop/MS
+workshy
+workstation/MS
+worktable/MS
+worktop/S
+workup/MS
+workweek/SM
+world/SM
+worldlier
+worldliness/UM
+worldly/UTP
+worldview/SM
+worldwide
+worm/MDSG
+wormhole/MS
+wormwood/M
+wormy/TR
+worn/U
+worried/Y
+worrier/M
+worriment/M
+worrisome
+worry/ZGDRSMJ
+worrying/Y
+worrywart/SM
+worse/M
+worsen/DSG
+worship/ZGSMDR
+worshiper/M
+worshipful
+worst/SGMD
+worsted/M
+wort/M
+worth/M
+worthies
+worthily/U
+worthiness/UM
+worthless/PY
+worthlessness/M
+worthwhile
+worthy's
+worthy/UPRT
+wot
+wotcha
+would've
+would/S
+wouldn't
+wouldst
+wound/SGMDR
+wove/A
+woven/AU
+wow/SGMD
+wpm
+wrack/GSMD
+wraith/M
+wraiths
+wrangle/DRSMZGJ
+wrangler/M
+wrap's
+wrap/US
+wraparound/SM
+wrapped/U
+wrapper/SM
+wrapping/MS
+wrasse/MS
+wrath/M
+wrathful/Y
+wreak/SGD
+wreath/MDSG
+wreathe
+wreaths
+wreck/SZGMDR
+wreckage/M
+wrecker/M
+wren/MS
+wrench/MDSG
+wrest/SGMD
+wrestle/MZGDRS
+wrestler/M
+wrestling/M
+wretch/MS
+wretched/TPRY
+wretchedness/M
+wriggle/MZGDRS
+wriggler/M
+wriggly
+wright/MS
+wring/SZGMR
+wringer/M
+wrinkle/MGDS
+wrinkled/U
+wrinkly/TRSM
+wrist/SM
+wristband/MS
+wristwatch/MS
+writ/MRBJSZG
+write/S
+writer/M
+writhe/MGDS
+writing/M
+written/AU
+wrong/STGMPDRY
+wrongdoer/SM
+wrongdoing/SM
+wrongful/PY
+wrongfulness/M
+wrongheaded/YP
+wrongheadedness/M
+wrongness/M
+wrote/A
+wroth
+wrought
+wrung
+wry/Y
+wryer
+wryest
+wryness/M
+wt
+wunderkind/S
+wurst/SM
+wuss/MS
+wussy/RSMT
+x
+xci
+xcii
+xciv
+xcix
+xcvi
+xcvii
+xenon/M
+xenophobe/MS
+xenophobia/M
+xenophobic
+xerographic
+xerography/M
+xerox/MDSG
+xi/SM
+xii
+xiii
+xiv
+xix
+xor
+xref/S
+xterm/M
+xv
+xvi
+xvii
+xviii
+xx
+xxi
+xxii
+xxiii
+xxiv
+xxix
+xxv
+xxvi
+xxvii
+xxviii
+xxx
+xxxi
+xxxii
+xxxiii
+xxxiv
+xxxix
+xxxv
+xxxvi
+xxxvii
+xxxviii
+xylem/M
+xylene
+xylophone/SM
+xylophonist/MS
+y'all
+y/F
+ya
+yacht/SMDG
+yachting/M
+yachtsman/M
+yachtsmen
+yachtswoman/M
+yachtswomen
+yahoo/SM
+yak/SM
+yakked
+yakking
+yam/SM
+yammer/SZGMDR
+yammerer/M
+yang/M
+yank/MDSG
+yap/SM
+yapped
+yapping
+yard/MS
+yardage/MS
+yardarm/MS
+yardman/M
+yardmaster/MS
+yardmen
+yardstick/MS
+yarmulke/SM
+yarn/MS
+yarrow/M
+yashmak/S
+yaw/SGMD
+yawl/MS
+yawn/MDRSZG
+yawner/M
+yaws/M
+yd
+ye/RST
+yea/SM
+yeah/M
+yeahs
+year/MYS
+yearbook/MS
+yearling/MS
+yearlong
+yearly/SM
+yearn/GSJD
+yearning/M
+yeast/SM
+yeasty/RT
+yegg/MS
+yell/MDSG
+yellow/MDRTGPS
+yellowhammer/S
+yellowish
+yellowness/M
+yellowy
+yelp/MDSG
+yen/SM
+yeoman/M
+yeomanry/M
+yeomen
+yep/SM
+yes/MS
+yeshiva/SM
+yessed
+yessing
+yesterday/MS
+yesteryear/M
+yet
+yeti/MS
+yew/SM
+yid/S
+yield/JSGMD
+yikes
+yin/M
+yip/SM
+yipe
+yipped
+yippee
+yipping
+yo
+yob/S
+yobbo/S
+yodel/SMDRZG
+yodeler/M
+yoga/M
+yogi/MS
+yogic
+yogurt/SM
+yoke's
+yoke/UGDS
+yokel/SM
+yolk/MDS
+yon
+yonder
+yonks
+yore/M
+you'd
+you'll
+you're
+you've
+you/SMH
+young/TMR
+youngish
+youngster/MS
+your/S
+yourself
+yourselves
+youth/M
+youthful/YP
+youthfulness/M
+youths
+yow
+yowl/MDSG
+yr/S
+ytterbium/M
+yttrium/M
+yuan/M
+yucca/SM
+yuck
+yucky/TR
+yuk/SM
+yukked
+yukking
+yukky
+yule/M
+yuletide/M
+yum
+yummy/TR
+yup/SM
+yuppie/MS
+yuppify/GDS
+yurt/MS
+z/DNXTGJ
+zaniness/M
+zany/RSMPT
+zap/SM
+zapped
+zapper/MS
+zapping
+zappy
+zeal/M
+zealot/MS
+zealotry/M
+zealous/YP
+zealousness/M
+zebra/SM
+zebu/MS
+zed/SM
+zeitgeist/SM
+zenith/M
+zeniths
+zenned
+zeolite/S
+zephyr/MS
+zeppelin/MS
+zero/MDHSG
+zeroes
+zest/MS
+zestful/YP
+zestfulness/M
+zesty/RT
+zeta/MS
+zigzag/SM
+zigzagged
+zigzagging
+zilch/M
+zillion/MS
+zinc/MS
+zincked
+zincking
+zine/S
+zinfandel/M
+zing/MDRZG
+zinger/M
+zingy/RT
+zinnia/MS
+zip's
+zip/US
+zipped/U
+zipper/MDGS
+zipping/U
+zippy/TR
+zircon/MS
+zirconium/M
+zit/SM
+zither/MS
+zloty/SM
+zlotys
+zodiac/MS
+zodiacal
+zombie/MS
+zonal/Y
+zone's
+zone/AGDS
+zoning/M
+zonked
+zoo/SM
+zookeeper/SM
+zoological/Y
+zoologist/SM
+zoology/M
+zoom/MDSG
+zoophyte/SM
+zoophytic
+zooplankton
+zorch
+zoster
+zounds
+zucchini/MS
+zwieback/M
+zydeco/M
+zygote/SM
+zygotic
+zymurgy/M
diff --git a/envoy/config/filter/http/authn/v2alpha1/config.pb.go b/envoy/config/filter/http/authn/v2alpha1/config.pb.go
index 4600d1e76bf..7559515833f 100644
--- a/envoy/config/filter/http/authn/v2alpha1/config.pb.go
+++ b/envoy/config/filter/http/authn/v2alpha1/config.pb.go
@@ -1,32 +1,15 @@
 // Code generated by protoc-gen-gogo. DO NOT EDIT.
 // source: envoy/config/filter/http/authn/v2alpha1/config.proto
 
-/*
-	Package v2alpha1 is a generated protocol buffer package.
-
-	It is generated from these files:
-		envoy/config/filter/http/authn/v2alpha1/config.proto
-		envoy/config/filter/http/jwt_auth/v2alpha1/config.proto
-		envoy/config/filter/network/tcp_cluster_rewrite/v2alpha1/config.proto
-
-	It has these top-level messages:
-		FilterConfig
-		HttpUri
-		DataSource
-		JwtRule
-		RemoteJwks
-		JwtHeader
-		JwtAuthentication
-		TcpClusterRewrite
-*/
 package v2alpha1
 
-import proto "github.com/gogo/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import istio_authentication_v1alpha1 "istio.io/api/authentication/v1alpha1"
-
-import io "io"
+import (
+	fmt "fmt"
+	proto "github.com/gogo/protobuf/proto"
+	io "io"
+	v1alpha1 "istio.io/api/authentication/v1alpha1"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -43,19 +26,50 @@ const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package
 // authentication policy on Envoy.
 type FilterConfig struct {
 	// Policy is the original copy of the policy.
-	Policy *istio_authentication_v1alpha1.Policy `protobuf:"bytes,1,opt,name=policy" json:"policy,omitempty"`
+	Policy *v1alpha1.Policy `protobuf:"bytes,1,opt,name=policy,proto3" json:"policy,omitempty"`
 	// Map from issuer to location of the payload that is emitted by Jwt filter.
 	// This information is added by pilot when construct and add Jwt and
 	// authN filters.
-	JwtOutputPayloadLocations map[string]string `protobuf:"bytes,2,rep,name=jwt_output_payload_locations,json=jwtOutputPayloadLocations" json:"jwt_output_payload_locations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	JwtOutputPayloadLocations map[string]string `protobuf:"bytes,2,rep,name=jwt_output_payload_locations,json=jwtOutputPayloadLocations,proto3" json:"jwt_output_payload_locations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	XXX_NoUnkeyedLiteral      struct{}          `json:"-"`
+	XXX_unrecognized          []byte            `json:"-"`
+	XXX_sizecache             int32             `json:"-"`
 }
 
-func (m *FilterConfig) Reset()                    { *m = FilterConfig{} }
-func (m *FilterConfig) String() string            { return proto.CompactTextString(m) }
-func (*FilterConfig) ProtoMessage()               {}
-func (*FilterConfig) Descriptor() ([]byte, []int) { return fileDescriptorConfig, []int{0} }
+func (m *FilterConfig) Reset()         { *m = FilterConfig{} }
+func (m *FilterConfig) String() string { return proto.CompactTextString(m) }
+func (*FilterConfig) ProtoMessage()    {}
+func (*FilterConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_b4b13c85ef974588, []int{0}
+}
+func (m *FilterConfig) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *FilterConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_FilterConfig.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *FilterConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FilterConfig.Merge(m, src)
+}
+func (m *FilterConfig) XXX_Size() int {
+	return m.Size()
+}
+func (m *FilterConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_FilterConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FilterConfig proto.InternalMessageInfo
 
-func (m *FilterConfig) GetPolicy() *istio_authentication_v1alpha1.Policy {
+func (m *FilterConfig) GetPolicy() *v1alpha1.Policy {
 	if m != nil {
 		return m.Policy
 	}
@@ -71,7 +85,36 @@ func (m *FilterConfig) GetJwtOutputPayloadLocations() map[string]string {
 
 func init() {
 	proto.RegisterType((*FilterConfig)(nil), "istio.envoy.config.filter.http.authn.v2alpha1.FilterConfig")
+	proto.RegisterMapType((map[string]string)(nil), "istio.envoy.config.filter.http.authn.v2alpha1.FilterConfig.JwtOutputPayloadLocationsEntry")
+}
+
+func init() {
+	proto.RegisterFile("envoy/config/filter/http/authn/v2alpha1/config.proto", fileDescriptor_b4b13c85ef974588)
+}
+
+var fileDescriptor_b4b13c85ef974588 = []byte{
+	// 302 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x91, 0x41, 0x4b, 0xc3, 0x30,
+	0x14, 0xc7, 0x49, 0x87, 0x03, 0x33, 0x0f, 0x52, 0x3c, 0xcc, 0x21, 0x65, 0x88, 0xc2, 0x2e, 0xbe,
+	0xb0, 0xb9, 0x83, 0x08, 0x5e, 0x26, 0x7a, 0x90, 0x81, 0xa3, 0xc7, 0x5d, 0x4a, 0xac, 0x9d, 0xcd,
+	0x0c, 0x49, 0xe8, 0x5e, 0x3b, 0xfa, 0x59, 0xfc, 0x24, 0x7e, 0x03, 0x8f, 0x7e, 0x04, 0xe9, 0x27,
+	0x91, 0x26, 0x2d, 0xe8, 0x41, 0xd1, 0x5b, 0x5e, 0xde, 0xfb, 0xfd, 0x92, 0x3f, 0x8f, 0x4e, 0x13,
+	0x55, 0xe8, 0x92, 0xc5, 0x5a, 0xad, 0xc4, 0x13, 0x5b, 0x09, 0x89, 0x49, 0xc6, 0x52, 0x44, 0xc3,
+	0x78, 0x8e, 0xa9, 0x62, 0xc5, 0x84, 0x4b, 0x93, 0xf2, 0x71, 0x33, 0x01, 0x26, 0xd3, 0xa8, 0xfd,
+	0x33, 0xb1, 0x41, 0xa1, 0xc1, 0xb2, 0xd0, 0x74, 0x1c, 0x0b, 0x35, 0x0b, 0x96, 0x85, 0x96, 0x1d,
+	0x9c, 0xd4, 0x75, 0xa2, 0x50, 0xc4, 0x1c, 0x85, 0x56, 0xac, 0x18, 0x37, 0x52, 0xa3, 0xa5, 0x88,
+	0x4b, 0x27, 0x3d, 0x7e, 0xf5, 0xe8, 0xde, 0xad, 0x95, 0x5c, 0x5b, 0xa3, 0x7f, 0x45, 0xbb, 0x6e,
+	0xa0, 0x4f, 0x86, 0x64, 0xd4, 0x9b, 0x9c, 0x82, 0x7b, 0xf6, 0xbb, 0x0d, 0x5a, 0x1b, 0x2c, 0xec,
+	0x70, 0xd8, 0x40, 0xfe, 0x0b, 0xa1, 0x47, 0xeb, 0x2d, 0x46, 0x3a, 0x47, 0x93, 0x63, 0x64, 0x78,
+	0x29, 0x35, 0x7f, 0x8c, 0xa4, 0x76, 0xdc, 0xa6, 0xef, 0x0d, 0x3b, 0xa3, 0xde, 0x64, 0x09, 0xff,
+	0x0a, 0x03, 0x5f, 0xbf, 0x08, 0x77, 0x5b, 0xbc, 0xb7, 0xfa, 0x85, 0xb3, 0xcf, 0x5b, 0xf9, 0x8d,
+	0xc2, 0xac, 0x0c, 0x0f, 0xd7, 0x3f, 0xf5, 0x07, 0x73, 0x1a, 0xfc, 0x0e, 0xfb, 0xfb, 0xb4, 0xf3,
+	0x9c, 0xb8, 0xec, 0xbb, 0x61, 0x7d, 0xf4, 0x0f, 0xe8, 0x4e, 0xc1, 0x65, 0x9e, 0xf4, 0x3d, 0x7b,
+	0xe7, 0x8a, 0x4b, 0xef, 0x82, 0xcc, 0x66, 0x6f, 0x55, 0x40, 0xde, 0xab, 0x80, 0x7c, 0x54, 0x01,
+	0x59, 0x4e, 0x5d, 0x22, 0xa1, 0x19, 0x37, 0x82, 0xfd, 0x71, 0xc3, 0x0f, 0x5d, 0xbb, 0x86, 0xf3,
+	0xcf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xce, 0x7c, 0xfe, 0x70, 0x13, 0x02, 0x00, 0x00,
 }
+
 func (m *FilterConfig) Marshal() (dAtA []byte, err error) {
 	size := m.Size()
 	dAtA = make([]byte, size)
@@ -114,6 +157,9 @@ func (m *FilterConfig) MarshalTo(dAtA []byte) (int, error) {
 			i += copy(dAtA[i:], v)
 		}
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -127,6 +173,9 @@ func encodeVarintConfig(dAtA []byte, offset int, v uint64) int {
 	return offset + 1
 }
 func (m *FilterConfig) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	if m.Policy != nil {
@@ -141,6 +190,9 @@ func (m *FilterConfig) Size() (n int) {
 			n += mapEntrySize + 1 + sovConfig(uint64(mapEntrySize))
 		}
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
@@ -172,7 +224,7 @@ func (m *FilterConfig) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -200,7 +252,7 @@ func (m *FilterConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -209,11 +261,14 @@ func (m *FilterConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
 			if m.Policy == nil {
-				m.Policy = &istio_authentication_v1alpha1.Policy{}
+				m.Policy = &v1alpha1.Policy{}
 			}
 			if err := m.Policy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
 				return err
@@ -233,7 +288,7 @@ func (m *FilterConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -242,6 +297,9 @@ func (m *FilterConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -262,7 +320,7 @@ func (m *FilterConfig) Unmarshal(dAtA []byte) error {
 					}
 					b := dAtA[iNdEx]
 					iNdEx++
-					wire |= (uint64(b) & 0x7F) << shift
+					wire |= uint64(b&0x7F) << shift
 					if b < 0x80 {
 						break
 					}
@@ -279,7 +337,7 @@ func (m *FilterConfig) Unmarshal(dAtA []byte) error {
 						}
 						b := dAtA[iNdEx]
 						iNdEx++
-						stringLenmapkey |= (uint64(b) & 0x7F) << shift
+						stringLenmapkey |= uint64(b&0x7F) << shift
 						if b < 0x80 {
 							break
 						}
@@ -289,6 +347,9 @@ func (m *FilterConfig) Unmarshal(dAtA []byte) error {
 						return ErrInvalidLengthConfig
 					}
 					postStringIndexmapkey := iNdEx + intStringLenmapkey
+					if postStringIndexmapkey < 0 {
+						return ErrInvalidLengthConfig
+					}
 					if postStringIndexmapkey > l {
 						return io.ErrUnexpectedEOF
 					}
@@ -305,7 +366,7 @@ func (m *FilterConfig) Unmarshal(dAtA []byte) error {
 						}
 						b := dAtA[iNdEx]
 						iNdEx++
-						stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+						stringLenmapvalue |= uint64(b&0x7F) << shift
 						if b < 0x80 {
 							break
 						}
@@ -315,6 +376,9 @@ func (m *FilterConfig) Unmarshal(dAtA []byte) error {
 						return ErrInvalidLengthConfig
 					}
 					postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+					if postStringIndexmapvalue < 0 {
+						return ErrInvalidLengthConfig
+					}
 					if postStringIndexmapvalue > l {
 						return io.ErrUnexpectedEOF
 					}
@@ -346,9 +410,13 @@ func (m *FilterConfig) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthConfig
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -412,10 +480,13 @@ func skipConfig(dAtA []byte) (n int, err error) {
 					break
 				}
 			}
-			iNdEx += length
 			if length < 0 {
 				return 0, ErrInvalidLengthConfig
 			}
+			iNdEx += length
+			if iNdEx < 0 {
+				return 0, ErrInvalidLengthConfig
+			}
 			return iNdEx, nil
 		case 3:
 			for {
@@ -444,6 +515,9 @@ func skipConfig(dAtA []byte) (n int, err error) {
 					return 0, err
 				}
 				iNdEx = start + next
+				if iNdEx < 0 {
+					return 0, ErrInvalidLengthConfig
+				}
 			}
 			return iNdEx, nil
 		case 4:
@@ -462,30 +536,3 @@ var (
 	ErrInvalidLengthConfig = fmt.Errorf("proto: negative length found during unmarshaling")
 	ErrIntOverflowConfig   = fmt.Errorf("proto: integer overflow")
 )
-
-func init() {
-	proto.RegisterFile("envoy/config/filter/http/authn/v2alpha1/config.proto", fileDescriptorConfig)
-}
-
-var fileDescriptorConfig = []byte{
-	// 302 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x91, 0x41, 0x4b, 0xc3, 0x30,
-	0x14, 0xc7, 0x49, 0x87, 0x03, 0x33, 0x0f, 0x52, 0x3c, 0xcc, 0x21, 0x65, 0x88, 0xc2, 0x2e, 0xbe,
-	0xb0, 0xb9, 0x83, 0x08, 0x5e, 0x26, 0x7a, 0x90, 0x81, 0xa3, 0xc7, 0x5d, 0x4a, 0xac, 0x9d, 0xcd,
-	0x0c, 0x49, 0xe8, 0x5e, 0x3b, 0xfa, 0x59, 0xfc, 0x24, 0x7e, 0x03, 0x8f, 0x7e, 0x04, 0xe9, 0x27,
-	0x91, 0x26, 0x2d, 0xe8, 0x41, 0xd1, 0x5b, 0x5e, 0xde, 0xfb, 0xfd, 0x92, 0x3f, 0x8f, 0x4e, 0x13,
-	0x55, 0xe8, 0x92, 0xc5, 0x5a, 0xad, 0xc4, 0x13, 0x5b, 0x09, 0x89, 0x49, 0xc6, 0x52, 0x44, 0xc3,
-	0x78, 0x8e, 0xa9, 0x62, 0xc5, 0x84, 0x4b, 0x93, 0xf2, 0x71, 0x33, 0x01, 0x26, 0xd3, 0xa8, 0xfd,
-	0x33, 0xb1, 0x41, 0xa1, 0xc1, 0xb2, 0xd0, 0x74, 0x1c, 0x0b, 0x35, 0x0b, 0x96, 0x85, 0x96, 0x1d,
-	0x9c, 0xd4, 0x75, 0xa2, 0x50, 0xc4, 0x1c, 0x85, 0x56, 0xac, 0x18, 0x37, 0x52, 0xa3, 0xa5, 0x88,
-	0x4b, 0x27, 0x3d, 0x7e, 0xf5, 0xe8, 0xde, 0xad, 0x95, 0x5c, 0x5b, 0xa3, 0x7f, 0x45, 0xbb, 0x6e,
-	0xa0, 0x4f, 0x86, 0x64, 0xd4, 0x9b, 0x9c, 0x82, 0x7b, 0xf6, 0xbb, 0x0d, 0x5a, 0x1b, 0x2c, 0xec,
-	0x70, 0xd8, 0x40, 0xfe, 0x0b, 0xa1, 0x47, 0xeb, 0x2d, 0x46, 0x3a, 0x47, 0x93, 0x63, 0x64, 0x78,
-	0x29, 0x35, 0x7f, 0x8c, 0xa4, 0x76, 0xdc, 0xa6, 0xef, 0x0d, 0x3b, 0xa3, 0xde, 0x64, 0x09, 0xff,
-	0x0a, 0x03, 0x5f, 0xbf, 0x08, 0x77, 0x5b, 0xbc, 0xb7, 0xfa, 0x85, 0xb3, 0xcf, 0x5b, 0xf9, 0x8d,
-	0xc2, 0xac, 0x0c, 0x0f, 0xd7, 0x3f, 0xf5, 0x07, 0x73, 0x1a, 0xfc, 0x0e, 0xfb, 0xfb, 0xb4, 0xf3,
-	0x9c, 0xb8, 0xec, 0xbb, 0x61, 0x7d, 0xf4, 0x0f, 0xe8, 0x4e, 0xc1, 0x65, 0x9e, 0xf4, 0x3d, 0x7b,
-	0xe7, 0x8a, 0x4b, 0xef, 0x82, 0xcc, 0x66, 0x6f, 0x55, 0x40, 0xde, 0xab, 0x80, 0x7c, 0x54, 0x01,
-	0x59, 0x4e, 0x5d, 0x22, 0xa1, 0x19, 0x37, 0x82, 0xfd, 0x71, 0xc3, 0x0f, 0x5d, 0xbb, 0x86, 0xf3,
-	0xcf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xce, 0x7c, 0xfe, 0x70, 0x13, 0x02, 0x00, 0x00,
-}
diff --git a/envoy/config/filter/http/jwt_auth/v2alpha1/config.pb.go b/envoy/config/filter/http/jwt_auth/v2alpha1/config.pb.go
index fee80f4f45b..87ce22a8f38 100644
--- a/envoy/config/filter/http/jwt_auth/v2alpha1/config.pb.go
+++ b/envoy/config/filter/http/jwt_auth/v2alpha1/config.pb.go
@@ -3,18 +3,25 @@
 
 package v2alpha1
 
-import proto "github.com/gogo/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import google_protobuf "github.com/gogo/protobuf/types"
-
-import io "io"
+import (
+	fmt "fmt"
+	proto "github.com/gogo/protobuf/proto"
+	types "github.com/gogo/protobuf/types"
+	io "io"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
 var _ = fmt.Errorf
 var _ = math.Inf
 
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package
+
 // Copied from @envoy/api/envoy/api/v2/core/http_uri.proto
 // Envoy external URI descriptor
 type HttpUri struct {
@@ -36,13 +43,44 @@ type HttpUri struct {
 	//	*HttpUri_Cluster
 	HttpUpstreamType isHttpUri_HttpUpstreamType `protobuf_oneof:"http_upstream_type"`
 	// Sets the maximum duration in milliseconds that a response can take to arrive upon request.
-	Timeout *google_protobuf.Duration `protobuf:"bytes,3,opt,name=timeout" json:"timeout,omitempty"`
+	Timeout              *types.Duration `protobuf:"bytes,3,opt,name=timeout,proto3" json:"timeout,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
+}
+
+func (m *HttpUri) Reset()         { *m = HttpUri{} }
+func (m *HttpUri) String() string { return proto.CompactTextString(m) }
+func (*HttpUri) ProtoMessage()    {}
+func (*HttpUri) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7c36de3e06e3b641, []int{0}
+}
+func (m *HttpUri) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *HttpUri) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_HttpUri.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *HttpUri) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_HttpUri.Merge(m, src)
+}
+func (m *HttpUri) XXX_Size() int {
+	return m.Size()
+}
+func (m *HttpUri) XXX_DiscardUnknown() {
+	xxx_messageInfo_HttpUri.DiscardUnknown(m)
 }
 
-func (m *HttpUri) Reset()                    { *m = HttpUri{} }
-func (m *HttpUri) String() string            { return proto.CompactTextString(m) }
-func (*HttpUri) ProtoMessage()               {}
-func (*HttpUri) Descriptor() ([]byte, []int) { return fileDescriptorConfig, []int{0} }
+var xxx_messageInfo_HttpUri proto.InternalMessageInfo
 
 type isHttpUri_HttpUpstreamType interface {
 	isHttpUri_HttpUpstreamType()
@@ -77,7 +115,7 @@ func (m *HttpUri) GetCluster() string {
 	return ""
 }
 
-func (m *HttpUri) GetTimeout() *google_protobuf.Duration {
+func (m *HttpUri) GetTimeout() *types.Duration {
 	if m != nil {
 		return m.Timeout
 	}
@@ -125,7 +163,7 @@ func _HttpUri_OneofSizer(msg proto.Message) (n int) {
 	// http_upstream_type
 	switch x := m.HttpUpstreamType.(type) {
 	case *HttpUri_Cluster:
-		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(len(x.Cluster)))
 		n += len(x.Cluster)
 	case nil:
@@ -142,13 +180,44 @@ type DataSource struct {
 	//	*DataSource_Filename
 	//	*DataSource_InlineBytes
 	//	*DataSource_InlineString
-	Specifier isDataSource_Specifier `protobuf_oneof:"specifier"`
+	Specifier            isDataSource_Specifier `protobuf_oneof:"specifier"`
+	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
+	XXX_unrecognized     []byte                 `json:"-"`
+	XXX_sizecache        int32                  `json:"-"`
+}
+
+func (m *DataSource) Reset()         { *m = DataSource{} }
+func (m *DataSource) String() string { return proto.CompactTextString(m) }
+func (*DataSource) ProtoMessage()    {}
+func (*DataSource) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7c36de3e06e3b641, []int{1}
+}
+func (m *DataSource) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *DataSource) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_DataSource.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *DataSource) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DataSource.Merge(m, src)
+}
+func (m *DataSource) XXX_Size() int {
+	return m.Size()
+}
+func (m *DataSource) XXX_DiscardUnknown() {
+	xxx_messageInfo_DataSource.DiscardUnknown(m)
 }
 
-func (m *DataSource) Reset()                    { *m = DataSource{} }
-func (m *DataSource) String() string            { return proto.CompactTextString(m) }
-func (*DataSource) ProtoMessage()               {}
-func (*DataSource) Descriptor() ([]byte, []int) { return fileDescriptorConfig, []int{1} }
+var xxx_messageInfo_DataSource proto.InternalMessageInfo
 
 type isDataSource_Specifier interface {
 	isDataSource_Specifier()
@@ -261,15 +330,15 @@ func _DataSource_OneofSizer(msg proto.Message) (n int) {
 	// specifier
 	switch x := m.Specifier.(type) {
 	case *DataSource_Filename:
-		n += proto.SizeVarint(1<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(len(x.Filename)))
 		n += len(x.Filename)
 	case *DataSource_InlineBytes:
-		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(len(x.InlineBytes)))
 		n += len(x.InlineBytes)
 	case *DataSource_InlineString:
-		n += proto.SizeVarint(3<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(len(x.InlineString)))
 		n += len(x.InlineString)
 	case nil:
@@ -320,7 +389,7 @@ type JwtRule struct {
 	//     - bookstore_android.apps.googleusercontent.com
 	//       bookstore_web.apps.googleusercontent.com
 	//
-	Audiences []string `protobuf:"bytes,2,rep,name=audiences" json:"audiences,omitempty"`
+	Audiences []string `protobuf:"bytes,2,rep,name=audiences,proto3" json:"audiences,omitempty"`
 	// `JSON Web Key Set `_ is needed. to validate
 	// signature of the JWT. This field specifies where to fetch JWKS.
 	//
@@ -342,7 +411,7 @@ type JwtRule struct {
 	//
 	//   x-goog-iap-jwt-assertion: .
 	//
-	FromHeaders []*JwtHeader `protobuf:"bytes,6,rep,name=from_headers,json=fromHeaders" json:"from_headers,omitempty"`
+	FromHeaders []*JwtHeader `protobuf:"bytes,6,rep,name=from_headers,json=fromHeaders,proto3" json:"from_headers,omitempty"`
 	// JWT is sent in a query parameter. `jwt_params` represents the query parameter names.
 	//
 	// For example, if config is:
@@ -356,7 +425,7 @@ type JwtRule struct {
 	//
 	//    /path?jwt_token=
 	//
-	FromParams []string `protobuf:"bytes,7,rep,name=from_params,json=fromParams" json:"from_params,omitempty"`
+	FromParams []string `protobuf:"bytes,7,rep,name=from_params,json=fromParams,proto3" json:"from_params,omitempty"`
 	// This field specifies the header name to forward a successfully verified JWT payload to the
 	// backend. The forwarded data is::
 	//
@@ -367,13 +436,44 @@ type JwtRule struct {
 	// same issuer will not be supported. Each issuer can config this `forward_payload_header`. If
 	// multiple JWTs from different issuers want to forward their payloads, their
 	// `forward_payload_header` should be different.
-	ForwardPayloadHeader string `protobuf:"bytes,8,opt,name=forward_payload_header,json=forwardPayloadHeader,proto3" json:"forward_payload_header,omitempty"`
+	ForwardPayloadHeader string   `protobuf:"bytes,8,opt,name=forward_payload_header,json=forwardPayloadHeader,proto3" json:"forward_payload_header,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *JwtRule) Reset()         { *m = JwtRule{} }
+func (m *JwtRule) String() string { return proto.CompactTextString(m) }
+func (*JwtRule) ProtoMessage()    {}
+func (*JwtRule) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7c36de3e06e3b641, []int{2}
+}
+func (m *JwtRule) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *JwtRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_JwtRule.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *JwtRule) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_JwtRule.Merge(m, src)
+}
+func (m *JwtRule) XXX_Size() int {
+	return m.Size()
+}
+func (m *JwtRule) XXX_DiscardUnknown() {
+	xxx_messageInfo_JwtRule.DiscardUnknown(m)
 }
 
-func (m *JwtRule) Reset()                    { *m = JwtRule{} }
-func (m *JwtRule) String() string            { return proto.CompactTextString(m) }
-func (*JwtRule) ProtoMessage()               {}
-func (*JwtRule) Descriptor() ([]byte, []int) { return fileDescriptorConfig, []int{2} }
+var xxx_messageInfo_JwtRule proto.InternalMessageInfo
 
 type isJwtRule_JwksSourceSpecifier interface {
 	isJwtRule_JwksSourceSpecifier()
@@ -382,10 +482,10 @@ type isJwtRule_JwksSourceSpecifier interface {
 }
 
 type JwtRule_RemoteJwks struct {
-	RemoteJwks *RemoteJwks `protobuf:"bytes,3,opt,name=remote_jwks,json=remoteJwks,oneof"`
+	RemoteJwks *RemoteJwks `protobuf:"bytes,3,opt,name=remote_jwks,json=remoteJwks,proto3,oneof"`
 }
 type JwtRule_LocalJwks struct {
-	LocalJwks *DataSource `protobuf:"bytes,4,opt,name=local_jwks,json=localJwks,oneof"`
+	LocalJwks *DataSource `protobuf:"bytes,4,opt,name=local_jwks,json=localJwks,proto3,oneof"`
 }
 
 func (*JwtRule_RemoteJwks) isJwtRule_JwksSourceSpecifier() {}
@@ -513,12 +613,12 @@ func _JwtRule_OneofSizer(msg proto.Message) (n int) {
 	switch x := m.JwksSourceSpecifier.(type) {
 	case *JwtRule_RemoteJwks:
 		s := proto.Size(x.RemoteJwks)
-		n += proto.SizeVarint(3<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case *JwtRule_LocalJwks:
 		s := proto.Size(x.LocalJwks)
-		n += proto.SizeVarint(4<<3 | proto.WireBytes)
+		n += 1 // tag and wire
 		n += proto.SizeVarint(uint64(s))
 		n += s
 	case nil:
@@ -538,16 +638,47 @@ type RemoteJwks struct {
 	//    - uri: https://www.googleapis.com/oauth2/v1/certs
 	//      cluster: jwt.www.googleapis.com|443
 	//
-	HttpUri *HttpUri `protobuf:"bytes,1,opt,name=http_uri,json=httpUri" json:"http_uri,omitempty"`
+	HttpUri *HttpUri `protobuf:"bytes,1,opt,name=http_uri,json=httpUri,proto3" json:"http_uri,omitempty"`
 	// Duration after which the cached JWKS should be expired. If not specified, default cache
 	// duration is 5 minutes.
-	CacheDuration *google_protobuf.Duration `protobuf:"bytes,2,opt,name=cache_duration,json=cacheDuration" json:"cache_duration,omitempty"`
+	CacheDuration        *types.Duration `protobuf:"bytes,2,opt,name=cache_duration,json=cacheDuration,proto3" json:"cache_duration,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
+}
+
+func (m *RemoteJwks) Reset()         { *m = RemoteJwks{} }
+func (m *RemoteJwks) String() string { return proto.CompactTextString(m) }
+func (*RemoteJwks) ProtoMessage()    {}
+func (*RemoteJwks) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7c36de3e06e3b641, []int{3}
+}
+func (m *RemoteJwks) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *RemoteJwks) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_RemoteJwks.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *RemoteJwks) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RemoteJwks.Merge(m, src)
+}
+func (m *RemoteJwks) XXX_Size() int {
+	return m.Size()
+}
+func (m *RemoteJwks) XXX_DiscardUnknown() {
+	xxx_messageInfo_RemoteJwks.DiscardUnknown(m)
 }
 
-func (m *RemoteJwks) Reset()                    { *m = RemoteJwks{} }
-func (m *RemoteJwks) String() string            { return proto.CompactTextString(m) }
-func (*RemoteJwks) ProtoMessage()               {}
-func (*RemoteJwks) Descriptor() ([]byte, []int) { return fileDescriptorConfig, []int{3} }
+var xxx_messageInfo_RemoteJwks proto.InternalMessageInfo
 
 func (m *RemoteJwks) GetHttpUri() *HttpUri {
 	if m != nil {
@@ -556,7 +687,7 @@ func (m *RemoteJwks) GetHttpUri() *HttpUri {
 	return nil
 }
 
-func (m *RemoteJwks) GetCacheDuration() *google_protobuf.Duration {
+func (m *RemoteJwks) GetCacheDuration() *types.Duration {
 	if m != nil {
 		return m.CacheDuration
 	}
@@ -570,13 +701,44 @@ type JwtHeader struct {
 	// The value prefix. The value format is "value_prefix"
 	// For example, for "Authorization: Bearer ", value_prefix="Bearer " with a space at the
 	// end.
-	ValuePrefix string `protobuf:"bytes,2,opt,name=value_prefix,json=valuePrefix,proto3" json:"value_prefix,omitempty"`
+	ValuePrefix          string   `protobuf:"bytes,2,opt,name=value_prefix,json=valuePrefix,proto3" json:"value_prefix,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *JwtHeader) Reset()         { *m = JwtHeader{} }
+func (m *JwtHeader) String() string { return proto.CompactTextString(m) }
+func (*JwtHeader) ProtoMessage()    {}
+func (*JwtHeader) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7c36de3e06e3b641, []int{4}
+}
+func (m *JwtHeader) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *JwtHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_JwtHeader.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *JwtHeader) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_JwtHeader.Merge(m, src)
+}
+func (m *JwtHeader) XXX_Size() int {
+	return m.Size()
+}
+func (m *JwtHeader) XXX_DiscardUnknown() {
+	xxx_messageInfo_JwtHeader.DiscardUnknown(m)
 }
 
-func (m *JwtHeader) Reset()                    { *m = JwtHeader{} }
-func (m *JwtHeader) String() string            { return proto.CompactTextString(m) }
-func (*JwtHeader) ProtoMessage()               {}
-func (*JwtHeader) Descriptor() ([]byte, []int) { return fileDescriptorConfig, []int{4} }
+var xxx_messageInfo_JwtHeader proto.InternalMessageInfo
 
 func (m *JwtHeader) GetName() string {
 	if m != nil {
@@ -596,16 +758,47 @@ func (m *JwtHeader) GetValuePrefix() string {
 // [#not-implemented-hide:]
 type JwtAuthentication struct {
 	// List of JWT rules to valide.
-	Rules []*JwtRule `protobuf:"bytes,1,rep,name=rules" json:"rules,omitempty"`
+	Rules []*JwtRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"`
 	// If true, the request is allowed if JWT is missing or JWT verification fails.
 	// Default is false, a request without JWT or failed JWT verification is not allowed.
-	AllowMissingOrFailed bool `protobuf:"varint,2,opt,name=allow_missing_or_failed,json=allowMissingOrFailed,proto3" json:"allow_missing_or_failed,omitempty"`
+	AllowMissingOrFailed bool     `protobuf:"varint,2,opt,name=allow_missing_or_failed,json=allowMissingOrFailed,proto3" json:"allow_missing_or_failed,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *JwtAuthentication) Reset()         { *m = JwtAuthentication{} }
+func (m *JwtAuthentication) String() string { return proto.CompactTextString(m) }
+func (*JwtAuthentication) ProtoMessage()    {}
+func (*JwtAuthentication) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7c36de3e06e3b641, []int{5}
+}
+func (m *JwtAuthentication) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *JwtAuthentication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_JwtAuthentication.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *JwtAuthentication) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_JwtAuthentication.Merge(m, src)
+}
+func (m *JwtAuthentication) XXX_Size() int {
+	return m.Size()
+}
+func (m *JwtAuthentication) XXX_DiscardUnknown() {
+	xxx_messageInfo_JwtAuthentication.DiscardUnknown(m)
 }
 
-func (m *JwtAuthentication) Reset()                    { *m = JwtAuthentication{} }
-func (m *JwtAuthentication) String() string            { return proto.CompactTextString(m) }
-func (*JwtAuthentication) ProtoMessage()               {}
-func (*JwtAuthentication) Descriptor() ([]byte, []int) { return fileDescriptorConfig, []int{5} }
+var xxx_messageInfo_JwtAuthentication proto.InternalMessageInfo
 
 func (m *JwtAuthentication) GetRules() []*JwtRule {
 	if m != nil {
@@ -629,6 +822,58 @@ func init() {
 	proto.RegisterType((*JwtHeader)(nil), "istio.envoy.config.filter.http.jwt_auth.v2alpha1.JwtHeader")
 	proto.RegisterType((*JwtAuthentication)(nil), "istio.envoy.config.filter.http.jwt_auth.v2alpha1.JwtAuthentication")
 }
+
+func init() {
+	proto.RegisterFile("envoy/config/filter/http/jwt_auth/v2alpha1/config.proto", fileDescriptor_7c36de3e06e3b641)
+}
+
+var fileDescriptor_7c36de3e06e3b641 = []byte{
+	// 678 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0xc1, 0x6e, 0xd3, 0x4a,
+	0x14, 0x8d, 0x5f, 0xda, 0x26, 0xb9, 0x4e, 0x9f, 0xde, 0x1b, 0x95, 0xd6, 0x54, 0x55, 0x08, 0x41,
+	0x48, 0x59, 0xd9, 0x90, 0x82, 0xaa, 0x0a, 0x16, 0x10, 0x15, 0x14, 0x45, 0x42, 0xad, 0xa6, 0xb0,
+	0x41, 0x82, 0xd1, 0xd4, 0x19, 0x27, 0xd3, 0x8e, 0x3d, 0xd6, 0xcc, 0xb8, 0x26, 0x5b, 0xf8, 0x0c,
+	0xb6, 0x7c, 0x0c, 0x4b, 0x3e, 0x01, 0x75, 0xc7, 0x5f, 0x20, 0x8f, 0xed, 0x66, 0x87, 0x68, 0x77,
+	0x73, 0xcf, 0x9d, 0x7b, 0xee, 0xf1, 0xb9, 0x73, 0x0d, 0x07, 0x2c, 0xb9, 0x94, 0xcb, 0x20, 0x94,
+	0x49, 0xc4, 0xe7, 0x41, 0xc4, 0x85, 0x61, 0x2a, 0x58, 0x18, 0x93, 0x06, 0xe7, 0xb9, 0x21, 0x34,
+	0x33, 0x8b, 0xe0, 0x72, 0x44, 0x45, 0xba, 0xa0, 0x8f, 0xab, 0x4b, 0x7e, 0xaa, 0xa4, 0x91, 0xe8,
+	0x11, 0xd7, 0x86, 0x4b, 0xdf, 0x96, 0xfb, 0x55, 0xa6, 0x2c, 0xf7, 0x8b, 0x72, 0xbf, 0x2e, 0xf7,
+	0xeb, 0xf2, 0xdd, 0xde, 0x5c, 0xca, 0xb9, 0x60, 0x81, 0xad, 0x3f, 0xcb, 0xa2, 0x60, 0x96, 0x29,
+	0x6a, 0xb8, 0x4c, 0x4a, 0xc6, 0xc1, 0x67, 0x07, 0x5a, 0x13, 0x63, 0xd2, 0x77, 0x8a, 0xa3, 0xff,
+	0xa0, 0x99, 0x29, 0xee, 0x39, 0x7d, 0x67, 0xd8, 0xc1, 0xc5, 0x11, 0xed, 0x42, 0x2b, 0x14, 0x99,
+	0x36, 0x4c, 0x79, 0xff, 0x14, 0xe8, 0xa4, 0x81, 0x6b, 0x00, 0xed, 0x43, 0xcb, 0xf0, 0x98, 0xc9,
+	0xcc, 0x78, 0xcd, 0xbe, 0x33, 0x74, 0x47, 0x77, 0xfd, 0xb2, 0x97, 0x5f, 0xf7, 0xf2, 0x8f, 0xaa,
+	0x5e, 0xb8, 0xbe, 0x39, 0xde, 0x02, 0x54, 0x08, 0x25, 0x59, 0xaa, 0x8d, 0x62, 0x34, 0x26, 0x66,
+	0x99, 0xb2, 0xc1, 0x17, 0x07, 0xe0, 0x88, 0x1a, 0x7a, 0x2a, 0x33, 0x15, 0x32, 0xb4, 0x07, 0xed,
+	0x88, 0x0b, 0x96, 0xd0, 0x98, 0x95, 0x62, 0x26, 0x0d, 0x7c, 0x8d, 0xa0, 0x07, 0xd0, 0xe5, 0x89,
+	0xe0, 0x09, 0x23, 0x67, 0x4b, 0xc3, 0xb4, 0x15, 0xd6, 0x9d, 0x34, 0xb0, 0x5b, 0xa2, 0xe3, 0x02,
+	0x44, 0x0f, 0x61, 0xb3, 0xba, 0xa4, 0x8d, 0xe2, 0xc9, 0xdc, 0x4a, 0x2c, 0x78, 0xaa, 0xda, 0x53,
+	0x8b, 0x8e, 0x5d, 0xe8, 0xe8, 0x94, 0x85, 0x3c, 0xe2, 0x4c, 0x0d, 0x7e, 0x35, 0xa1, 0x35, 0xcd,
+	0x0d, 0xce, 0x04, 0x43, 0xdb, 0xb0, 0xc1, 0xb5, 0xce, 0x98, 0xaa, 0xdc, 0xa8, 0x22, 0xb4, 0x07,
+	0x1d, 0x9a, 0xcd, 0x38, 0x4b, 0x42, 0xdb, 0xb9, 0x39, 0xec, 0xe0, 0x15, 0x80, 0x08, 0xb8, 0x8a,
+	0xc5, 0xd2, 0x30, 0x72, 0x9e, 0x5f, 0xe8, 0xca, 0x96, 0xe7, 0xfe, 0x4d, 0x87, 0xe6, 0x63, 0x4b,
+	0x32, 0xcd, 0x2f, 0xf4, 0xa4, 0x81, 0x41, 0x5d, 0x47, 0xe8, 0x03, 0x80, 0x90, 0x21, 0x15, 0x25,
+	0xff, 0xda, 0x6d, 0xf9, 0x57, 0x5e, 0x4f, 0x1a, 0xb8, 0x63, 0x19, 0x2d, 0xbd, 0x07, 0xad, 0x48,
+	0xaa, 0x9c, 0xaa, 0x99, 0xb7, 0xde, 0x77, 0x86, 0x6d, 0x5c, 0x87, 0xe8, 0x23, 0x74, 0x23, 0x25,
+	0x63, 0xb2, 0x60, 0x74, 0xc6, 0x94, 0xf6, 0x36, 0xfa, 0xcd, 0xa1, 0x3b, 0x7a, 0x76, 0xf3, 0xd6,
+	0xd3, 0xdc, 0x4c, 0x2c, 0x07, 0x76, 0x0b, 0xc2, 0xf2, 0xac, 0xd1, 0x3d, 0xb0, 0x21, 0x49, 0xa9,
+	0xa2, 0xb1, 0xf6, 0x5a, 0xd6, 0x59, 0x28, 0xa0, 0x13, 0x8b, 0xa0, 0x27, 0xb0, 0x5d, 0x69, 0x21,
+	0x29, 0x5d, 0x0a, 0x49, 0x67, 0x95, 0x16, 0xaf, 0x6d, 0x07, 0xb4, 0x55, 0x65, 0x4f, 0xca, 0x64,
+	0xc9, 0x3b, 0xde, 0x81, 0x3b, 0x85, 0x53, 0x44, 0xdb, 0x8f, 0x25, 0xab, 0x59, 0x7f, 0x73, 0x00,
+	0x56, 0x2e, 0xa3, 0xb7, 0xd0, 0x2e, 0x9f, 0x65, 0xf5, 0xfc, 0xdd, 0xd1, 0xe1, 0xcd, 0x3f, 0xad,
+	0x5a, 0x23, 0xdc, 0x5a, 0x54, 0xfb, 0xf4, 0x02, 0xfe, 0x0d, 0x69, 0xb8, 0x60, 0xa4, 0xde, 0x39,
+	0xfb, 0x56, 0xff, 0xb8, 0x28, 0x9b, 0xb6, 0xa0, 0x0e, 0x07, 0x63, 0xe8, 0x5c, 0x1b, 0x86, 0x10,
+	0xac, 0xad, 0x56, 0x02, 0xdb, 0x33, 0xba, 0x0f, 0xdd, 0x4b, 0x2a, 0x32, 0x46, 0x52, 0xc5, 0x22,
+	0xfe, 0xa9, 0xdc, 0x52, 0xec, 0x5a, 0xec, 0xc4, 0x42, 0x83, 0xaf, 0x0e, 0xfc, 0x3f, 0xcd, 0xcd,
+	0xcb, 0xcc, 0x2c, 0x58, 0x62, 0x78, 0x68, 0x99, 0xd1, 0x31, 0xac, 0xab, 0x4c, 0x30, 0xed, 0x39,
+	0x76, 0x92, 0x87, 0xb7, 0x9a, 0x64, 0xb1, 0x2a, 0xb8, 0xe4, 0x41, 0x4f, 0x61, 0x87, 0x0a, 0x21,
+	0x73, 0x12, 0x73, 0xad, 0x79, 0x32, 0x27, 0x52, 0x91, 0x88, 0x72, 0xc1, 0x66, 0x56, 0x54, 0x1b,
+	0x6f, 0xd9, 0xf4, 0x9b, 0x32, 0x7b, 0xac, 0x5e, 0xdb, 0xdc, 0xf8, 0xd5, 0xf7, 0xab, 0x9e, 0xf3,
+	0xe3, 0xaa, 0xe7, 0xfc, 0xbc, 0xea, 0x39, 0xef, 0x0f, 0x4a, 0x15, 0x5c, 0x06, 0x34, 0xe5, 0xc1,
+	0xdf, 0xff, 0x25, 0xcf, 0x36, 0xac, 0x95, 0xfb, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x1b, 0x4f,
+	0x9e, 0x6b, 0x5a, 0x05, 0x00, 0x00,
+}
+
 func (m *HttpUri) Marshal() (dAtA []byte, err error) {
 	size := m.Size()
 	dAtA = make([]byte, size)
@@ -667,6 +912,9 @@ func (m *HttpUri) MarshalTo(dAtA []byte) (int, error) {
 		}
 		i += n2
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -700,6 +948,9 @@ func (m *DataSource) MarshalTo(dAtA []byte) (int, error) {
 		}
 		i += nn3
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -815,6 +1066,9 @@ func (m *JwtRule) MarshalTo(dAtA []byte) (int, error) {
 		i = encodeVarintConfig(dAtA, i, uint64(len(m.ForwardPayloadHeader)))
 		i += copy(dAtA[i:], m.ForwardPayloadHeader)
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -881,6 +1135,9 @@ func (m *RemoteJwks) MarshalTo(dAtA []byte) (int, error) {
 		}
 		i += n8
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -911,6 +1168,9 @@ func (m *JwtHeader) MarshalTo(dAtA []byte) (int, error) {
 		i = encodeVarintConfig(dAtA, i, uint64(len(m.ValuePrefix)))
 		i += copy(dAtA[i:], m.ValuePrefix)
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -951,6 +1211,9 @@ func (m *JwtAuthentication) MarshalTo(dAtA []byte) (int, error) {
 		}
 		i++
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -964,6 +1227,9 @@ func encodeVarintConfig(dAtA []byte, offset int, v uint64) int {
 	return offset + 1
 }
 func (m *HttpUri) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.Uri)
@@ -977,10 +1243,16 @@ func (m *HttpUri) Size() (n int) {
 		l = m.Timeout.Size()
 		n += 1 + l + sovConfig(uint64(l))
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *HttpUri_Cluster) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.Cluster)
@@ -988,15 +1260,24 @@ func (m *HttpUri_Cluster) Size() (n int) {
 	return n
 }
 func (m *DataSource) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	if m.Specifier != nil {
 		n += m.Specifier.Size()
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *DataSource_Filename) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.Filename)
@@ -1004,6 +1285,9 @@ func (m *DataSource_Filename) Size() (n int) {
 	return n
 }
 func (m *DataSource_InlineBytes) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	if m.InlineBytes != nil {
@@ -1013,6 +1297,9 @@ func (m *DataSource_InlineBytes) Size() (n int) {
 	return n
 }
 func (m *DataSource_InlineString) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.InlineString)
@@ -1020,6 +1307,9 @@ func (m *DataSource_InlineString) Size() (n int) {
 	return n
 }
 func (m *JwtRule) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.Issuer)
@@ -1054,10 +1344,16 @@ func (m *JwtRule) Size() (n int) {
 	if l > 0 {
 		n += 1 + l + sovConfig(uint64(l))
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *JwtRule_RemoteJwks) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	if m.RemoteJwks != nil {
@@ -1067,6 +1363,9 @@ func (m *JwtRule_RemoteJwks) Size() (n int) {
 	return n
 }
 func (m *JwtRule_LocalJwks) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	if m.LocalJwks != nil {
@@ -1076,6 +1375,9 @@ func (m *JwtRule_LocalJwks) Size() (n int) {
 	return n
 }
 func (m *RemoteJwks) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	if m.HttpUri != nil {
@@ -1086,10 +1388,16 @@ func (m *RemoteJwks) Size() (n int) {
 		l = m.CacheDuration.Size()
 		n += 1 + l + sovConfig(uint64(l))
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *JwtHeader) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.Name)
@@ -1100,10 +1408,16 @@ func (m *JwtHeader) Size() (n int) {
 	if l > 0 {
 		n += 1 + l + sovConfig(uint64(l))
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *JwtAuthentication) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	if len(m.Rules) > 0 {
@@ -1115,6 +1429,9 @@ func (m *JwtAuthentication) Size() (n int) {
 	if m.AllowMissingOrFailed {
 		n += 2
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
@@ -1146,7 +1463,7 @@ func (m *HttpUri) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -1174,7 +1491,7 @@ func (m *HttpUri) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1184,6 +1501,9 @@ func (m *HttpUri) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1203,7 +1523,7 @@ func (m *HttpUri) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1213,6 +1533,9 @@ func (m *HttpUri) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1232,7 +1555,7 @@ func (m *HttpUri) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1241,11 +1564,14 @@ func (m *HttpUri) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
 			if m.Timeout == nil {
-				m.Timeout = &google_protobuf.Duration{}
+				m.Timeout = &types.Duration{}
 			}
 			if err := m.Timeout.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
 				return err
@@ -1260,9 +1586,13 @@ func (m *HttpUri) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthConfig
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -1287,7 +1617,7 @@ func (m *DataSource) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -1315,7 +1645,7 @@ func (m *DataSource) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1325,6 +1655,9 @@ func (m *DataSource) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1344,7 +1677,7 @@ func (m *DataSource) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				byteLen |= (int(b) & 0x7F) << shift
+				byteLen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1353,6 +1686,9 @@ func (m *DataSource) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + byteLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1374,7 +1710,7 @@ func (m *DataSource) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1384,6 +1720,9 @@ func (m *DataSource) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1398,9 +1737,13 @@ func (m *DataSource) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthConfig
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -1425,7 +1768,7 @@ func (m *JwtRule) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -1453,7 +1796,7 @@ func (m *JwtRule) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1463,6 +1806,9 @@ func (m *JwtRule) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1482,7 +1828,7 @@ func (m *JwtRule) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1492,6 +1838,9 @@ func (m *JwtRule) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1511,7 +1860,7 @@ func (m *JwtRule) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1520,6 +1869,9 @@ func (m *JwtRule) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1543,7 +1895,7 @@ func (m *JwtRule) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1552,6 +1904,9 @@ func (m *JwtRule) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1575,7 +1930,7 @@ func (m *JwtRule) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= (int(b) & 0x7F) << shift
+				v |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1595,7 +1950,7 @@ func (m *JwtRule) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1604,6 +1959,9 @@ func (m *JwtRule) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1626,7 +1984,7 @@ func (m *JwtRule) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1636,6 +1994,9 @@ func (m *JwtRule) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1655,7 +2016,7 @@ func (m *JwtRule) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1665,6 +2026,9 @@ func (m *JwtRule) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1679,9 +2043,13 @@ func (m *JwtRule) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthConfig
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -1706,7 +2074,7 @@ func (m *RemoteJwks) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -1734,7 +2102,7 @@ func (m *RemoteJwks) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1743,6 +2111,9 @@ func (m *RemoteJwks) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1767,7 +2138,7 @@ func (m *RemoteJwks) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1776,11 +2147,14 @@ func (m *RemoteJwks) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
 			if m.CacheDuration == nil {
-				m.CacheDuration = &google_protobuf.Duration{}
+				m.CacheDuration = &types.Duration{}
 			}
 			if err := m.CacheDuration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
 				return err
@@ -1795,9 +2169,13 @@ func (m *RemoteJwks) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthConfig
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -1822,7 +2200,7 @@ func (m *JwtHeader) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -1850,7 +2228,7 @@ func (m *JwtHeader) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1860,6 +2238,9 @@ func (m *JwtHeader) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1879,7 +2260,7 @@ func (m *JwtHeader) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1889,6 +2270,9 @@ func (m *JwtHeader) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1903,9 +2287,13 @@ func (m *JwtHeader) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthConfig
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -1930,7 +2318,7 @@ func (m *JwtAuthentication) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -1958,7 +2346,7 @@ func (m *JwtAuthentication) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1967,6 +2355,9 @@ func (m *JwtAuthentication) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1989,7 +2380,7 @@ func (m *JwtAuthentication) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= (int(b) & 0x7F) << shift
+				v |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2004,9 +2395,13 @@ func (m *JwtAuthentication) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthConfig
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -2070,10 +2465,13 @@ func skipConfig(dAtA []byte) (n int, err error) {
 					break
 				}
 			}
-			iNdEx += length
 			if length < 0 {
 				return 0, ErrInvalidLengthConfig
 			}
+			iNdEx += length
+			if iNdEx < 0 {
+				return 0, ErrInvalidLengthConfig
+			}
 			return iNdEx, nil
 		case 3:
 			for {
@@ -2102,6 +2500,9 @@ func skipConfig(dAtA []byte) (n int, err error) {
 					return 0, err
 				}
 				iNdEx = start + next
+				if iNdEx < 0 {
+					return 0, ErrInvalidLengthConfig
+				}
 			}
 			return iNdEx, nil
 		case 4:
@@ -2120,54 +2521,3 @@ var (
 	ErrInvalidLengthConfig = fmt.Errorf("proto: negative length found during unmarshaling")
 	ErrIntOverflowConfig   = fmt.Errorf("proto: integer overflow")
 )
-
-func init() {
-	proto.RegisterFile("envoy/config/filter/http/jwt_auth/v2alpha1/config.proto", fileDescriptorConfig)
-}
-
-var fileDescriptorConfig = []byte{
-	// 678 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0xc1, 0x6e, 0xd3, 0x4a,
-	0x14, 0x8d, 0x5f, 0xda, 0x26, 0xb9, 0x4e, 0x9f, 0xde, 0x1b, 0x95, 0xd6, 0x54, 0x55, 0x08, 0x41,
-	0x48, 0x59, 0xd9, 0x90, 0x82, 0xaa, 0x0a, 0x16, 0x10, 0x15, 0x14, 0x45, 0x42, 0xad, 0xa6, 0xb0,
-	0x41, 0x82, 0xd1, 0xd4, 0x19, 0x27, 0xd3, 0x8e, 0x3d, 0xd6, 0xcc, 0xb8, 0x26, 0x5b, 0xf8, 0x0c,
-	0xb6, 0x7c, 0x0c, 0x4b, 0x3e, 0x01, 0x75, 0xc7, 0x5f, 0x20, 0x8f, 0xed, 0x66, 0x87, 0x68, 0x77,
-	0x73, 0xcf, 0x9d, 0x7b, 0xee, 0xf1, 0xb9, 0x73, 0x0d, 0x07, 0x2c, 0xb9, 0x94, 0xcb, 0x20, 0x94,
-	0x49, 0xc4, 0xe7, 0x41, 0xc4, 0x85, 0x61, 0x2a, 0x58, 0x18, 0x93, 0x06, 0xe7, 0xb9, 0x21, 0x34,
-	0x33, 0x8b, 0xe0, 0x72, 0x44, 0x45, 0xba, 0xa0, 0x8f, 0xab, 0x4b, 0x7e, 0xaa, 0xa4, 0x91, 0xe8,
-	0x11, 0xd7, 0x86, 0x4b, 0xdf, 0x96, 0xfb, 0x55, 0xa6, 0x2c, 0xf7, 0x8b, 0x72, 0xbf, 0x2e, 0xf7,
-	0xeb, 0xf2, 0xdd, 0xde, 0x5c, 0xca, 0xb9, 0x60, 0x81, 0xad, 0x3f, 0xcb, 0xa2, 0x60, 0x96, 0x29,
-	0x6a, 0xb8, 0x4c, 0x4a, 0xc6, 0xc1, 0x67, 0x07, 0x5a, 0x13, 0x63, 0xd2, 0x77, 0x8a, 0xa3, 0xff,
-	0xa0, 0x99, 0x29, 0xee, 0x39, 0x7d, 0x67, 0xd8, 0xc1, 0xc5, 0x11, 0xed, 0x42, 0x2b, 0x14, 0x99,
-	0x36, 0x4c, 0x79, 0xff, 0x14, 0xe8, 0xa4, 0x81, 0x6b, 0x00, 0xed, 0x43, 0xcb, 0xf0, 0x98, 0xc9,
-	0xcc, 0x78, 0xcd, 0xbe, 0x33, 0x74, 0x47, 0x77, 0xfd, 0xb2, 0x97, 0x5f, 0xf7, 0xf2, 0x8f, 0xaa,
-	0x5e, 0xb8, 0xbe, 0x39, 0xde, 0x02, 0x54, 0x08, 0x25, 0x59, 0xaa, 0x8d, 0x62, 0x34, 0x26, 0x66,
-	0x99, 0xb2, 0xc1, 0x17, 0x07, 0xe0, 0x88, 0x1a, 0x7a, 0x2a, 0x33, 0x15, 0x32, 0xb4, 0x07, 0xed,
-	0x88, 0x0b, 0x96, 0xd0, 0x98, 0x95, 0x62, 0x26, 0x0d, 0x7c, 0x8d, 0xa0, 0x07, 0xd0, 0xe5, 0x89,
-	0xe0, 0x09, 0x23, 0x67, 0x4b, 0xc3, 0xb4, 0x15, 0xd6, 0x9d, 0x34, 0xb0, 0x5b, 0xa2, 0xe3, 0x02,
-	0x44, 0x0f, 0x61, 0xb3, 0xba, 0xa4, 0x8d, 0xe2, 0xc9, 0xdc, 0x4a, 0x2c, 0x78, 0xaa, 0xda, 0x53,
-	0x8b, 0x8e, 0x5d, 0xe8, 0xe8, 0x94, 0x85, 0x3c, 0xe2, 0x4c, 0x0d, 0x7e, 0x35, 0xa1, 0x35, 0xcd,
-	0x0d, 0xce, 0x04, 0x43, 0xdb, 0xb0, 0xc1, 0xb5, 0xce, 0x98, 0xaa, 0xdc, 0xa8, 0x22, 0xb4, 0x07,
-	0x1d, 0x9a, 0xcd, 0x38, 0x4b, 0x42, 0xdb, 0xb9, 0x39, 0xec, 0xe0, 0x15, 0x80, 0x08, 0xb8, 0x8a,
-	0xc5, 0xd2, 0x30, 0x72, 0x9e, 0x5f, 0xe8, 0xca, 0x96, 0xe7, 0xfe, 0x4d, 0x87, 0xe6, 0x63, 0x4b,
-	0x32, 0xcd, 0x2f, 0xf4, 0xa4, 0x81, 0x41, 0x5d, 0x47, 0xe8, 0x03, 0x80, 0x90, 0x21, 0x15, 0x25,
-	0xff, 0xda, 0x6d, 0xf9, 0x57, 0x5e, 0x4f, 0x1a, 0xb8, 0x63, 0x19, 0x2d, 0xbd, 0x07, 0xad, 0x48,
-	0xaa, 0x9c, 0xaa, 0x99, 0xb7, 0xde, 0x77, 0x86, 0x6d, 0x5c, 0x87, 0xe8, 0x23, 0x74, 0x23, 0x25,
-	0x63, 0xb2, 0x60, 0x74, 0xc6, 0x94, 0xf6, 0x36, 0xfa, 0xcd, 0xa1, 0x3b, 0x7a, 0x76, 0xf3, 0xd6,
-	0xd3, 0xdc, 0x4c, 0x2c, 0x07, 0x76, 0x0b, 0xc2, 0xf2, 0xac, 0xd1, 0x3d, 0xb0, 0x21, 0x49, 0xa9,
-	0xa2, 0xb1, 0xf6, 0x5a, 0xd6, 0x59, 0x28, 0xa0, 0x13, 0x8b, 0xa0, 0x27, 0xb0, 0x5d, 0x69, 0x21,
-	0x29, 0x5d, 0x0a, 0x49, 0x67, 0x95, 0x16, 0xaf, 0x6d, 0x07, 0xb4, 0x55, 0x65, 0x4f, 0xca, 0x64,
-	0xc9, 0x3b, 0xde, 0x81, 0x3b, 0x85, 0x53, 0x44, 0xdb, 0x8f, 0x25, 0xab, 0x59, 0x7f, 0x73, 0x00,
-	0x56, 0x2e, 0xa3, 0xb7, 0xd0, 0x2e, 0x9f, 0x65, 0xf5, 0xfc, 0xdd, 0xd1, 0xe1, 0xcd, 0x3f, 0xad,
-	0x5a, 0x23, 0xdc, 0x5a, 0x54, 0xfb, 0xf4, 0x02, 0xfe, 0x0d, 0x69, 0xb8, 0x60, 0xa4, 0xde, 0x39,
-	0xfb, 0x56, 0xff, 0xb8, 0x28, 0x9b, 0xb6, 0xa0, 0x0e, 0x07, 0x63, 0xe8, 0x5c, 0x1b, 0x86, 0x10,
-	0xac, 0xad, 0x56, 0x02, 0xdb, 0x33, 0xba, 0x0f, 0xdd, 0x4b, 0x2a, 0x32, 0x46, 0x52, 0xc5, 0x22,
-	0xfe, 0xa9, 0xdc, 0x52, 0xec, 0x5a, 0xec, 0xc4, 0x42, 0x83, 0xaf, 0x0e, 0xfc, 0x3f, 0xcd, 0xcd,
-	0xcb, 0xcc, 0x2c, 0x58, 0x62, 0x78, 0x68, 0x99, 0xd1, 0x31, 0xac, 0xab, 0x4c, 0x30, 0xed, 0x39,
-	0x76, 0x92, 0x87, 0xb7, 0x9a, 0x64, 0xb1, 0x2a, 0xb8, 0xe4, 0x41, 0x4f, 0x61, 0x87, 0x0a, 0x21,
-	0x73, 0x12, 0x73, 0xad, 0x79, 0x32, 0x27, 0x52, 0x91, 0x88, 0x72, 0xc1, 0x66, 0x56, 0x54, 0x1b,
-	0x6f, 0xd9, 0xf4, 0x9b, 0x32, 0x7b, 0xac, 0x5e, 0xdb, 0xdc, 0xf8, 0xd5, 0xf7, 0xab, 0x9e, 0xf3,
-	0xe3, 0xaa, 0xe7, 0xfc, 0xbc, 0xea, 0x39, 0xef, 0x0f, 0x4a, 0x15, 0x5c, 0x06, 0x34, 0xe5, 0xc1,
-	0xdf, 0xff, 0x25, 0xcf, 0x36, 0xac, 0x95, 0xfb, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x1b, 0x4f,
-	0x9e, 0x6b, 0x5a, 0x05, 0x00, 0x00,
-}
diff --git a/envoy/config/filter/http/jwt_auth/v2alpha1/config.proto b/envoy/config/filter/http/jwt_auth/v2alpha1/config.proto
index 43b07be768a..477be41f756 100644
--- a/envoy/config/filter/http/jwt_auth/v2alpha1/config.proto
+++ b/envoy/config/filter/http/jwt_auth/v2alpha1/config.proto
@@ -14,10 +14,10 @@
 
 syntax = "proto3";
 
-package istio.envoy.config.filter.http.jwt_auth.v2alpha1;
-
 import "google/protobuf/duration.proto";
 
+package istio.envoy.config.filter.http.jwt_auth.v2alpha1;
+
 option go_package = "istio.io/api/envoy/config/filter/http/jwt_auth/v2alpha1";
 
 // Copied from @envoy/api/envoy/api/v2/core/http_uri.proto
diff --git a/envoy/config/filter/network/tcp_cluster_rewrite/v2alpha1/config.pb.go b/envoy/config/filter/network/tcp_cluster_rewrite/v2alpha1/config.pb.go
index 8240044eaf7..f0e9caa049c 100644
--- a/envoy/config/filter/network/tcp_cluster_rewrite/v2alpha1/config.pb.go
+++ b/envoy/config/filter/network/tcp_cluster_rewrite/v2alpha1/config.pb.go
@@ -3,29 +3,67 @@
 
 package v2alpha1
 
-import proto "github.com/gogo/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-import io "io"
+import (
+	fmt "fmt"
+	proto "github.com/gogo/protobuf/proto"
+	io "io"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
 var _ = fmt.Errorf
 var _ = math.Inf
 
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package
+
 // TcpClusterRewrite is the config for the TCP cluster rewrite filter.
 type TcpClusterRewrite struct {
 	// Specifies the regex pattern to be matched in the cluster name.
 	ClusterPattern string `protobuf:"bytes,1,opt,name=cluster_pattern,json=clusterPattern,proto3" json:"cluster_pattern,omitempty"`
 	// Specifies the replacement for the matched cluster pattern.
-	ClusterReplacement string `protobuf:"bytes,2,opt,name=cluster_replacement,json=clusterReplacement,proto3" json:"cluster_replacement,omitempty"`
+	ClusterReplacement   string   `protobuf:"bytes,2,opt,name=cluster_replacement,json=clusterReplacement,proto3" json:"cluster_replacement,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
-func (m *TcpClusterRewrite) Reset()                    { *m = TcpClusterRewrite{} }
-func (m *TcpClusterRewrite) String() string            { return proto.CompactTextString(m) }
-func (*TcpClusterRewrite) ProtoMessage()               {}
-func (*TcpClusterRewrite) Descriptor() ([]byte, []int) { return fileDescriptorConfig, []int{0} }
+func (m *TcpClusterRewrite) Reset()         { *m = TcpClusterRewrite{} }
+func (m *TcpClusterRewrite) String() string { return proto.CompactTextString(m) }
+func (*TcpClusterRewrite) ProtoMessage()    {}
+func (*TcpClusterRewrite) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3df0613c72936227, []int{0}
+}
+func (m *TcpClusterRewrite) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *TcpClusterRewrite) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_TcpClusterRewrite.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *TcpClusterRewrite) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TcpClusterRewrite.Merge(m, src)
+}
+func (m *TcpClusterRewrite) XXX_Size() int {
+	return m.Size()
+}
+func (m *TcpClusterRewrite) XXX_DiscardUnknown() {
+	xxx_messageInfo_TcpClusterRewrite.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TcpClusterRewrite proto.InternalMessageInfo
 
 func (m *TcpClusterRewrite) GetClusterPattern() string {
 	if m != nil {
@@ -44,6 +82,29 @@ func (m *TcpClusterRewrite) GetClusterReplacement() string {
 func init() {
 	proto.RegisterType((*TcpClusterRewrite)(nil), "istio.envoy.config.filter.network.tcp_cluster_rewrite.v2alpha1.TcpClusterRewrite")
 }
+
+func init() {
+	proto.RegisterFile("envoy/config/filter/network/tcp_cluster_rewrite/v2alpha1/config.proto", fileDescriptor_3df0613c72936227)
+}
+
+var fileDescriptor_3df0613c72936227 = []byte{
+	// 213 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x72, 0x4d, 0xcd, 0x2b, 0xcb,
+	0xaf, 0xd4, 0x4f, 0xce, 0xcf, 0x4b, 0xcb, 0x4c, 0xd7, 0x4f, 0xcb, 0xcc, 0x29, 0x49, 0x2d, 0xd2,
+	0xcf, 0x4b, 0x2d, 0x29, 0xcf, 0x2f, 0xca, 0xd6, 0x2f, 0x49, 0x2e, 0x88, 0x4f, 0xce, 0x29, 0x2d,
+	0x2e, 0x49, 0x2d, 0x8a, 0x2f, 0x4a, 0x2d, 0x2f, 0xca, 0x2c, 0x49, 0xd5, 0x2f, 0x33, 0x4a, 0xcc,
+	0x29, 0xc8, 0x48, 0x34, 0x84, 0x6a, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xb2, 0xcb, 0x2c,
+	0x2e, 0xc9, 0xcc, 0xd7, 0x03, 0x1b, 0xa6, 0x07, 0x95, 0x81, 0x18, 0xa6, 0x07, 0x35, 0x4c, 0x0f,
+	0x8b, 0x61, 0x7a, 0x30, 0xc3, 0x94, 0x72, 0xb9, 0x04, 0x43, 0x92, 0x0b, 0x9c, 0x21, 0xd2, 0x41,
+	0x10, 0x59, 0x21, 0x75, 0x2e, 0x7e, 0x98, 0x86, 0x82, 0xc4, 0x92, 0x92, 0xd4, 0xa2, 0x3c, 0x09,
+	0x46, 0x05, 0x46, 0x0d, 0xce, 0x20, 0x3e, 0xa8, 0x70, 0x00, 0x44, 0x54, 0x48, 0x9f, 0x4b, 0x18,
+	0x61, 0x72, 0x41, 0x4e, 0x62, 0x72, 0x6a, 0x6e, 0x6a, 0x5e, 0x89, 0x04, 0x13, 0x58, 0xb1, 0x50,
+	0x32, 0xcc, 0x54, 0xb8, 0x8c, 0x53, 0xf0, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e,
+	0x78, 0x24, 0xc7, 0x18, 0xe5, 0x0a, 0x71, 0x7c, 0x66, 0xbe, 0x7e, 0x62, 0x41, 0xa6, 0x3e, 0xb9,
+	0x01, 0x92, 0xc4, 0x06, 0x0e, 0x0a, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0xda, 0x0d, 0xa4,
+	0x2b, 0x53, 0x01, 0x00, 0x00,
+}
+
 func (m *TcpClusterRewrite) Marshal() (dAtA []byte, err error) {
 	size := m.Size()
 	dAtA = make([]byte, size)
@@ -71,6 +132,9 @@ func (m *TcpClusterRewrite) MarshalTo(dAtA []byte) (int, error) {
 		i = encodeVarintConfig(dAtA, i, uint64(len(m.ClusterReplacement)))
 		i += copy(dAtA[i:], m.ClusterReplacement)
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -84,6 +148,9 @@ func encodeVarintConfig(dAtA []byte, offset int, v uint64) int {
 	return offset + 1
 }
 func (m *TcpClusterRewrite) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.ClusterPattern)
@@ -94,6 +161,9 @@ func (m *TcpClusterRewrite) Size() (n int) {
 	if l > 0 {
 		n += 1 + l + sovConfig(uint64(l))
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
@@ -125,7 +195,7 @@ func (m *TcpClusterRewrite) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -153,7 +223,7 @@ func (m *TcpClusterRewrite) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -163,6 +233,9 @@ func (m *TcpClusterRewrite) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -182,7 +255,7 @@ func (m *TcpClusterRewrite) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -192,6 +265,9 @@ func (m *TcpClusterRewrite) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -206,9 +282,13 @@ func (m *TcpClusterRewrite) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthConfig
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -272,10 +352,13 @@ func skipConfig(dAtA []byte) (n int, err error) {
 					break
 				}
 			}
-			iNdEx += length
 			if length < 0 {
 				return 0, ErrInvalidLengthConfig
 			}
+			iNdEx += length
+			if iNdEx < 0 {
+				return 0, ErrInvalidLengthConfig
+			}
 			return iNdEx, nil
 		case 3:
 			for {
@@ -304,6 +387,9 @@ func skipConfig(dAtA []byte) (n int, err error) {
 					return 0, err
 				}
 				iNdEx = start + next
+				if iNdEx < 0 {
+					return 0, ErrInvalidLengthConfig
+				}
 			}
 			return iNdEx, nil
 		case 4:
@@ -322,25 +408,3 @@ var (
 	ErrInvalidLengthConfig = fmt.Errorf("proto: negative length found during unmarshaling")
 	ErrIntOverflowConfig   = fmt.Errorf("proto: integer overflow")
 )
-
-func init() {
-	proto.RegisterFile("envoy/config/filter/network/tcp_cluster_rewrite/v2alpha1/config.proto", fileDescriptorConfig)
-}
-
-var fileDescriptorConfig = []byte{
-	// 213 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x72, 0x4d, 0xcd, 0x2b, 0xcb,
-	0xaf, 0xd4, 0x4f, 0xce, 0xcf, 0x4b, 0xcb, 0x4c, 0xd7, 0x4f, 0xcb, 0xcc, 0x29, 0x49, 0x2d, 0xd2,
-	0xcf, 0x4b, 0x2d, 0x29, 0xcf, 0x2f, 0xca, 0xd6, 0x2f, 0x49, 0x2e, 0x88, 0x4f, 0xce, 0x29, 0x2d,
-	0x2e, 0x49, 0x2d, 0x8a, 0x2f, 0x4a, 0x2d, 0x2f, 0xca, 0x2c, 0x49, 0xd5, 0x2f, 0x33, 0x4a, 0xcc,
-	0x29, 0xc8, 0x48, 0x34, 0x84, 0x6a, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xb2, 0xcb, 0x2c,
-	0x2e, 0xc9, 0xcc, 0xd7, 0x03, 0x1b, 0xa6, 0x07, 0x95, 0x81, 0x18, 0xa6, 0x07, 0x35, 0x4c, 0x0f,
-	0x8b, 0x61, 0x7a, 0x30, 0xc3, 0x94, 0x72, 0xb9, 0x04, 0x43, 0x92, 0x0b, 0x9c, 0x21, 0xd2, 0x41,
-	0x10, 0x59, 0x21, 0x75, 0x2e, 0x7e, 0x98, 0x86, 0x82, 0xc4, 0x92, 0x92, 0xd4, 0xa2, 0x3c, 0x09,
-	0x46, 0x05, 0x46, 0x0d, 0xce, 0x20, 0x3e, 0xa8, 0x70, 0x00, 0x44, 0x54, 0x48, 0x9f, 0x4b, 0x18,
-	0x61, 0x72, 0x41, 0x4e, 0x62, 0x72, 0x6a, 0x6e, 0x6a, 0x5e, 0x89, 0x04, 0x13, 0x58, 0xb1, 0x50,
-	0x32, 0xcc, 0x54, 0xb8, 0x8c, 0x53, 0xf0, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e,
-	0x78, 0x24, 0xc7, 0x18, 0xe5, 0x0a, 0x71, 0x7c, 0x66, 0xbe, 0x7e, 0x62, 0x41, 0xa6, 0x3e, 0xb9,
-	0x01, 0x92, 0xc4, 0x06, 0x0e, 0x0a, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0xda, 0x0d, 0xa4,
-	0x2b, 0x53, 0x01, 0x00, 0x00,
-}
diff --git a/mcp/Readme.md b/mcp/Readme.md
index 68e04044171..d8b6db6fa12 100644
--- a/mcp/Readme.md
+++ b/mcp/Readme.md
@@ -1,13 +1,151 @@
-# Mesh Configuration Protocol Protos
-
-This folder contains the proto buffers used by the Mesh Configuration Protocol, 
-an [XDS](https://github.com/envoyproxy/data-plane-api/blob/master/XDS_PROTOCOL.md#streaming-grpc-subscriptions)
-inspired protocol for transferring configuration among Istio components 
-during runtime.
-
-The protocol buffers in this folder are not used for configuring Istio. 
-Instead, they define an internal protocol through which the configuration proto
-instances can be delivered to components, such as Mixer and Pilot.
-   
-The server side of the protocol is implemented in Galley, Istio's config 
-aggregation and distribution component.
+# Mesh Configuration Protocol (MCP)
+
+## Introduction
+
+This folder contains the proto buffers for the Mesh Configuration
+Protocol (MCP). MCP is based on
+[XDS](https://github.com/envoyproxy/data-plane-api/blob/master/XDS_PROTOCOL.md#streaming-grpc-subscriptions)
+and maintains conceptual alignment with it, despite the specific
+service and proto definitions being different.
+
+## Overview
+
+MCP is a subscription-based configuration distribution API. The
+configuration consumer (i.e. sink) requests updates for collections of
+resources from a configuration producer (i.e. source). The source
+pushes resource updates to the sink when resources are added, updated,
+or deleted. The sink positively ACK's the resource update, if it was
+accepted, and NACK's if it was rejected, e.g. because a resource was
+invalid. The source may push additional update once the previous
+update was ACK/NACK'd. The source should only have one outstanding
+update (per-collection) in flight at a time.
+
+MCP is a pair of bidirectional streaming gRPC API services
+(`ResourceSource` and `ResourceSink`).
+
+* The `ResourceSource` service is used when the resource source is the
+server and the sink is a client. By default, Galley implements the
+`ResourceSource` service and Pilot/Mixer connect as clients.
+
+* The `ResourceSink` service is used when the resource source is a
+client and the sink is the server. Galley can be configured to
+optionally "dial-out" to a remote configuration sink, e.g. Pilot is in
+another cluster where it cannot, as a client, initiate
+connection to Galley. In this scenario, Pilot would implement the
+`ResourceSink` service and Galley would connect as a client.
+
+ResourceSource and ResourceSink are semantically equivalent with
+regards to the message exchange. The only meaningful difference is who
+initiates the connection and opens the grpc stream.
+
+## Data model
+
+MCP is the mechanism of transport whereby Pilot and Mixer can be
+configured by a manager component. MCP defines a common per-resource
+metadata format and resource specific contents is defined elsewhere
+(e.g. https://github.com/istio/api/tree/master/networking/v1alpha3).
+
+### Collections
+
+Resources of the same type are organization into named
+collections. Istio API collection names are of the form
+`istio///` where ``, ``, and `Created with Raphaël 2.2.0Client/SourceClient/SourceServer/SinkServer/Sinkconn := grpc.Dial(S)svc := mcp.NewResourceSinkService(conn)stream := mcp.EstablishResourceStream()stream establishedstream.Send(RequestResources)Resources := stream.Recv()
\ No newline at end of file
diff --git a/mcp/v1alpha1/diagrams/ResourceSource-connection-setup.svg b/mcp/v1alpha1/diagrams/ResourceSource-connection-setup.svg
new file mode 100644
index 00000000000..71af7d3a034
--- /dev/null
+++ b/mcp/v1alpha1/diagrams/ResourceSource-connection-setup.svg
@@ -0,0 +1 @@
+Created with Raphaël 2.2.0Client/SinkClient/SinkServer/SourceServer/Sourceconn := grpc.Dial(S)svc := mcp.NewResourceSourceService(conn)stream := svc.EstablishResourceStream()stream establishedstream.Send(RequestResources)Resources := stream.Recv()
\ No newline at end of file
diff --git a/mcp/v1alpha1/diagrams/collection-full-state-update-success.svg b/mcp/v1alpha1/diagrams/collection-full-state-update-success.svg
new file mode 100644
index 00000000000..0be0e75ed0d
--- /dev/null
+++ b/mcp/v1alpha1/diagrams/collection-full-state-update-success.svg
@@ -0,0 +1 @@
+Created with Raphaël 2.2.0SinkSinkSourceSourceestablish streamRequestResources{collection=A,nonce=}Resources{collection=A,nonce=1,resource={(foo,v0),(bar,v0)}RequestResources{collection=A,nonce=1} (ACK)resources={(foo,v0),(bar,v0)}Resources{collection=A,nonce=2,resource={(foo,v0),(bar,v0),(baz,v0)}}RequestResources{collection=A,nonce=2} (ACK)resources={(foo,v0),(bar,v0),(baz,v0}Resources{collection=A,nonce=3,resource={(bar, v1),(baz, v0)}}RequestResources{collection=A,nonce=3} (ACK)resources={(bar,v1),(baz,v0)}
\ No newline at end of file
diff --git a/mcp/v1alpha1/diagrams/collection-incremental-update-success.svg b/mcp/v1alpha1/diagrams/collection-incremental-update-success.svg
new file mode 100644
index 00000000000..7fa6d44ee53
--- /dev/null
+++ b/mcp/v1alpha1/diagrams/collection-incremental-update-success.svg
@@ -0,0 +1 @@
+Created with Raphaël 2.2.0SinkSinkSourceSourceestablish streamRequestResources{collection=A,nonce=}Resources{collection=A,nonce=1,resource={(foo,v0),(bar,v0)},incremental=true}RequestResources{collection=A,nonce=1,incremental=true} (ACK)resources={(foo,v0),(bar,v0)}Resources{collection=A,nonce=2,resource={(baz,v0)},incremental=true}RequestResources{collection=A,nonce=2,incremental=true} (ACK)resources={(foo,v0),(bar,v0),(baz,v0}Resources{collection=A,nonce=3,resource={(bar, v1)},removed={foo}incremental=true}RequestResources{collection=A,nonce=3,incremental=true} (ACK)resources={(bar,v1),(baz,v0)}
\ No newline at end of file
diff --git a/mcp/v1alpha1/diagrams/collection-update-error.svg b/mcp/v1alpha1/diagrams/collection-update-error.svg
new file mode 100644
index 00000000000..040e03344aa
--- /dev/null
+++ b/mcp/v1alpha1/diagrams/collection-update-error.svg
@@ -0,0 +1 @@
+Created with Raphaël 2.2.0SinkSinkSourceSourceestablish streamRequestResources{collection=A,nonce=}Resources{collection=A,nonce=1,resource={(foo,v0),(bar,v0)}RequestResources{collection=A,nonce=1} (ACK)resources={(foo,v0),(bar,v0)}Resources{collection=A,nonce=2,resource={(baz,v0)}RequestResources{collection=A,nonce=2,error="could not apply"} (NACK)resources={(foo,v0),(bar,v0)}Resources{collection=A,nonce=3,resource={(bar, v1)},remove={(foo,v0)}RequestResources{collection=A,nonce=3} (ACK)resources={(bar,v1)}
\ No newline at end of file
diff --git a/mcp/v1alpha1/mcp.pb.go b/mcp/v1alpha1/mcp.pb.go
index c38f7e36a05..c20686b0b42 100644
--- a/mcp/v1alpha1/mcp.pb.go
+++ b/mcp/v1alpha1/mcp.pb.go
@@ -1,37 +1,19 @@
 // Code generated by protoc-gen-gogo. DO NOT EDIT.
 // source: mcp/v1alpha1/mcp.proto
 
-/*
-	Package v1alpha1 is a generated protocol buffer package.
-
-	It is generated from these files:
-		mcp/v1alpha1/mcp.proto
-		mcp/v1alpha1/metadata.proto
-		mcp/v1alpha1/resource.proto
-
-	It has these top-level messages:
-		SinkNode
-		MeshConfigRequest
-		MeshConfigResponse
-		IncrementalMeshConfigRequest
-		IncrementalMeshConfigResponse
-		RequestResources
-		Resources
-		Metadata
-		Resource
-*/
 package v1alpha1
 
-import proto "github.com/gogo/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import google_rpc "github.com/gogo/googleapis/google/rpc"
-import _ "github.com/gogo/protobuf/gogoproto"
-
-import context "golang.org/x/net/context"
-import grpc "google.golang.org/grpc"
-
-import io "io"
+import (
+	bytes "bytes"
+	context "context"
+	fmt "fmt"
+	rpc "github.com/gogo/googleapis/google/rpc"
+	_ "github.com/gogo/protobuf/gogoproto"
+	proto "github.com/gogo/protobuf/proto"
+	grpc "google.golang.org/grpc"
+	io "io"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -53,13 +35,44 @@ type SinkNode struct {
 	// An opaque identifier for the MCP node.
 	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	// Opaque annotations extending the node identifier.
-	Annotations map[string]string `protobuf:"bytes,2,rep,name=annotations" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	Annotations          map[string]string `protobuf:"bytes,2,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
+	XXX_unrecognized     []byte            `json:"-"`
+	XXX_sizecache        int32             `json:"-"`
+}
+
+func (m *SinkNode) Reset()         { *m = SinkNode{} }
+func (m *SinkNode) String() string { return proto.CompactTextString(m) }
+func (*SinkNode) ProtoMessage()    {}
+func (*SinkNode) Descriptor() ([]byte, []int) {
+	return fileDescriptor_0713683a7297bd65, []int{0}
+}
+func (m *SinkNode) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *SinkNode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_SinkNode.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *SinkNode) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SinkNode.Merge(m, src)
+}
+func (m *SinkNode) XXX_Size() int {
+	return m.Size()
+}
+func (m *SinkNode) XXX_DiscardUnknown() {
+	xxx_messageInfo_SinkNode.DiscardUnknown(m)
 }
 
-func (m *SinkNode) Reset()                    { *m = SinkNode{} }
-func (m *SinkNode) String() string            { return proto.CompactTextString(m) }
-func (*SinkNode) ProtoMessage()               {}
-func (*SinkNode) Descriptor() ([]byte, []int) { return fileDescriptorMcp, []int{0} }
+var xxx_messageInfo_SinkNode proto.InternalMessageInfo
 
 func (m *SinkNode) GetId() string {
 	if m != nil {
@@ -88,7 +101,7 @@ type MeshConfigRequest struct {
 	// below) has an independent version associated with it.
 	VersionInfo string `protobuf:"bytes,1,opt,name=version_info,json=versionInfo,proto3" json:"version_info,omitempty"`
 	// The sink node making the request.
-	SinkNode *SinkNode `protobuf:"bytes,2,opt,name=sink_node,json=sinkNode" json:"sink_node,omitempty"`
+	SinkNode *SinkNode `protobuf:"bytes,2,opt,name=sink_node,json=sinkNode,proto3" json:"sink_node,omitempty"`
 	// Type of the resource that is being requested, e.g.
 	// "type.googleapis.com/istio.io.networking.v1alpha3.VirtualService".
 	TypeUrl string `protobuf:"bytes,3,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"`
@@ -103,13 +116,44 @@ type MeshConfigRequest struct {
 	// is only intended for consumption during manual debugging, the
 	// string provided is not guaranteed to be stable across client
 	// versions.
-	ErrorDetail *google_rpc.Status `protobuf:"bytes,5,opt,name=error_detail,json=errorDetail" json:"error_detail,omitempty"`
+	ErrorDetail          *rpc.Status `protobuf:"bytes,5,opt,name=error_detail,json=errorDetail,proto3" json:"error_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
+	XXX_unrecognized     []byte      `json:"-"`
+	XXX_sizecache        int32       `json:"-"`
+}
+
+func (m *MeshConfigRequest) Reset()         { *m = MeshConfigRequest{} }
+func (m *MeshConfigRequest) String() string { return proto.CompactTextString(m) }
+func (*MeshConfigRequest) ProtoMessage()    {}
+func (*MeshConfigRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_0713683a7297bd65, []int{1}
+}
+func (m *MeshConfigRequest) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *MeshConfigRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_MeshConfigRequest.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *MeshConfigRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MeshConfigRequest.Merge(m, src)
+}
+func (m *MeshConfigRequest) XXX_Size() int {
+	return m.Size()
+}
+func (m *MeshConfigRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_MeshConfigRequest.DiscardUnknown(m)
 }
 
-func (m *MeshConfigRequest) Reset()                    { *m = MeshConfigRequest{} }
-func (m *MeshConfigRequest) String() string            { return proto.CompactTextString(m) }
-func (*MeshConfigRequest) ProtoMessage()               {}
-func (*MeshConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptorMcp, []int{1} }
+var xxx_messageInfo_MeshConfigRequest proto.InternalMessageInfo
 
 func (m *MeshConfigRequest) GetVersionInfo() string {
 	if m != nil {
@@ -139,7 +183,7 @@ func (m *MeshConfigRequest) GetResponseNonce() string {
 	return ""
 }
 
-func (m *MeshConfigRequest) GetErrorDetail() *google_rpc.Status {
+func (m *MeshConfigRequest) GetErrorDetail() *rpc.Status {
 	if m != nil {
 		return m.ErrorDetail
 	}
@@ -153,7 +197,7 @@ type MeshConfigResponse struct {
 	VersionInfo string `protobuf:"bytes,1,opt,name=version_info,json=versionInfo,proto3" json:"version_info,omitempty"`
 	// The response resources wrapped in the common MCP *Resource*
 	// message.
-	Resources []Resource `protobuf:"bytes,2,rep,name=resources" json:"resources"`
+	Resources []Resource `protobuf:"bytes,2,rep,name=resources,proto3" json:"resources"`
 	// Type URL for resources wrapped in the provided resources(s). This
 	// must be consistent with the type_url in the wrapper messages if
 	// resources is non-empty.
@@ -166,13 +210,44 @@ type MeshConfigResponse struct {
 	// time. The nonce allows the management server to ignore any
 	// further MeshConfigRequests for the previous version until a
 	// MeshConfigRequest bearing the nonce.
-	Nonce string `protobuf:"bytes,4,opt,name=nonce,proto3" json:"nonce,omitempty"`
+	Nonce                string   `protobuf:"bytes,4,opt,name=nonce,proto3" json:"nonce,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *MeshConfigResponse) Reset()         { *m = MeshConfigResponse{} }
+func (m *MeshConfigResponse) String() string { return proto.CompactTextString(m) }
+func (*MeshConfigResponse) ProtoMessage()    {}
+func (*MeshConfigResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_0713683a7297bd65, []int{2}
+}
+func (m *MeshConfigResponse) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *MeshConfigResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_MeshConfigResponse.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *MeshConfigResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MeshConfigResponse.Merge(m, src)
+}
+func (m *MeshConfigResponse) XXX_Size() int {
+	return m.Size()
+}
+func (m *MeshConfigResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_MeshConfigResponse.DiscardUnknown(m)
 }
 
-func (m *MeshConfigResponse) Reset()                    { *m = MeshConfigResponse{} }
-func (m *MeshConfigResponse) String() string            { return proto.CompactTextString(m) }
-func (*MeshConfigResponse) ProtoMessage()               {}
-func (*MeshConfigResponse) Descriptor() ([]byte, []int) { return fileDescriptorMcp, []int{2} }
+var xxx_messageInfo_MeshConfigResponse proto.InternalMessageInfo
 
 func (m *MeshConfigResponse) GetVersionInfo() string {
 	if m != nil {
@@ -211,7 +286,7 @@ func (m *MeshConfigResponse) GetNonce() string {
 //      ACK or NACK is determined by the absence or presence of error_detail.
 type IncrementalMeshConfigRequest struct {
 	// The sink node making the request.
-	SinkNode *SinkNode `protobuf:"bytes,1,opt,name=sink_node,json=sinkNode" json:"sink_node,omitempty"`
+	SinkNode *SinkNode `protobuf:"bytes,1,opt,name=sink_node,json=sinkNode,proto3" json:"sink_node,omitempty"`
 	// Type of the resource that is being requested, e.g.
 	// "type.googleapis.com/istio.io.networking.v1alpha3.VirtualService".
 	TypeUrl string `protobuf:"bytes,2,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"`
@@ -220,7 +295,7 @@ type IncrementalMeshConfigRequest struct {
 	// initial_resource_versions must be omitted. The keys are the
 	// resources names of the MCP resources known to the MCP client. The
 	// values in the map are the associated resource level version info.
-	InitialResourceVersions map[string]string `protobuf:"bytes,3,rep,name=initial_resource_versions,json=initialResourceVersions" json:"initial_resource_versions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	InitialResourceVersions map[string]string `protobuf:"bytes,3,rep,name=initial_resource_versions,json=initialResourceVersions,proto3" json:"initial_resource_versions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
 	// When the IncrementalMeshConfigRequest is a ACK or NACK message in response
 	// to a previous IncrementalMeshConfigResponse, the response_nonce must be the
 	// nonce in the IncrementalMeshConfigResponse.
@@ -229,13 +304,44 @@ type IncrementalMeshConfigRequest struct {
 	// This is populated when the previous IncrementalMeshConfigResponses
 	// failed to update configuration. The *message* field in *error_details*
 	// provides the client internal exception related to the failure.
-	ErrorDetail *google_rpc.Status `protobuf:"bytes,5,opt,name=error_detail,json=errorDetail" json:"error_detail,omitempty"`
+	ErrorDetail          *rpc.Status `protobuf:"bytes,5,opt,name=error_detail,json=errorDetail,proto3" json:"error_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
+	XXX_unrecognized     []byte      `json:"-"`
+	XXX_sizecache        int32       `json:"-"`
+}
+
+func (m *IncrementalMeshConfigRequest) Reset()         { *m = IncrementalMeshConfigRequest{} }
+func (m *IncrementalMeshConfigRequest) String() string { return proto.CompactTextString(m) }
+func (*IncrementalMeshConfigRequest) ProtoMessage()    {}
+func (*IncrementalMeshConfigRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_0713683a7297bd65, []int{3}
+}
+func (m *IncrementalMeshConfigRequest) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *IncrementalMeshConfigRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_IncrementalMeshConfigRequest.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *IncrementalMeshConfigRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_IncrementalMeshConfigRequest.Merge(m, src)
+}
+func (m *IncrementalMeshConfigRequest) XXX_Size() int {
+	return m.Size()
+}
+func (m *IncrementalMeshConfigRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_IncrementalMeshConfigRequest.DiscardUnknown(m)
 }
 
-func (m *IncrementalMeshConfigRequest) Reset()                    { *m = IncrementalMeshConfigRequest{} }
-func (m *IncrementalMeshConfigRequest) String() string            { return proto.CompactTextString(m) }
-func (*IncrementalMeshConfigRequest) ProtoMessage()               {}
-func (*IncrementalMeshConfigRequest) Descriptor() ([]byte, []int) { return fileDescriptorMcp, []int{3} }
+var xxx_messageInfo_IncrementalMeshConfigRequest proto.InternalMessageInfo
 
 func (m *IncrementalMeshConfigRequest) GetSinkNode() *SinkNode {
 	if m != nil {
@@ -265,7 +371,7 @@ func (m *IncrementalMeshConfigRequest) GetResponseNonce() string {
 	return ""
 }
 
-func (m *IncrementalMeshConfigRequest) GetErrorDetail() *google_rpc.Status {
+func (m *IncrementalMeshConfigRequest) GetErrorDetail() *rpc.Status {
 	if m != nil {
 		return m.ErrorDetail
 	}
@@ -290,21 +396,52 @@ type IncrementalMeshConfigResponse struct {
 	// The response resources wrapped in the common MCP *Resource*
 	// message. These are typed resources that match the type url in the
 	// IncrementalMeshConfigRequest.
-	Resources []Resource `protobuf:"bytes,2,rep,name=resources" json:"resources"`
+	Resources []Resource `protobuf:"bytes,2,rep,name=resources,proto3" json:"resources"`
 	// Resources names of resources that have be deleted and to be
 	// removed from the MCP Client.  Removed resources for missing
 	// resources can be ignored.
-	RemovedResources []string `protobuf:"bytes,3,rep,name=removed_resources,json=removedResources" json:"removed_resources,omitempty"`
+	RemovedResources []string `protobuf:"bytes,3,rep,name=removed_resources,json=removedResources,proto3" json:"removed_resources,omitempty"`
 	// The nonce provides a way for IncrementalMeshConfigRequests to
 	// uniquely reference an IncrementalMeshConfigResponse. The nonce is
 	// required.
-	Nonce string `protobuf:"bytes,4,opt,name=nonce,proto3" json:"nonce,omitempty"`
+	Nonce                string   `protobuf:"bytes,4,opt,name=nonce,proto3" json:"nonce,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *IncrementalMeshConfigResponse) Reset()         { *m = IncrementalMeshConfigResponse{} }
+func (m *IncrementalMeshConfigResponse) String() string { return proto.CompactTextString(m) }
+func (*IncrementalMeshConfigResponse) ProtoMessage()    {}
+func (*IncrementalMeshConfigResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_0713683a7297bd65, []int{4}
+}
+func (m *IncrementalMeshConfigResponse) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *IncrementalMeshConfigResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_IncrementalMeshConfigResponse.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *IncrementalMeshConfigResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_IncrementalMeshConfigResponse.Merge(m, src)
+}
+func (m *IncrementalMeshConfigResponse) XXX_Size() int {
+	return m.Size()
+}
+func (m *IncrementalMeshConfigResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_IncrementalMeshConfigResponse.DiscardUnknown(m)
 }
 
-func (m *IncrementalMeshConfigResponse) Reset()                    { *m = IncrementalMeshConfigResponse{} }
-func (m *IncrementalMeshConfigResponse) String() string            { return proto.CompactTextString(m) }
-func (*IncrementalMeshConfigResponse) ProtoMessage()               {}
-func (*IncrementalMeshConfigResponse) Descriptor() ([]byte, []int) { return fileDescriptorMcp, []int{4} }
+var xxx_messageInfo_IncrementalMeshConfigResponse proto.InternalMessageInfo
 
 func (m *IncrementalMeshConfigResponse) GetSystemVersionInfo() string {
 	if m != nil {
@@ -348,7 +485,7 @@ func (m *IncrementalMeshConfigResponse) GetNonce() string {
 //
 type RequestResources struct {
 	// The sink node making the request.
-	SinkNode *SinkNode `protobuf:"bytes,1,opt,name=sink_node,json=sinkNode" json:"sink_node,omitempty"`
+	SinkNode *SinkNode `protobuf:"bytes,1,opt,name=sink_node,json=sinkNode,proto3" json:"sink_node,omitempty"`
 	// Type of resource collection that is being requested, e.g.
 	//
 	// istio/networking/v1alpha3/VirtualService
@@ -358,7 +495,7 @@ type RequestResources struct {
 	// be populated. Otherwise, initial_resource_versions must be omitted. The keys are the
 	// resources names of the MCP resources known to the MCP client. The values in the map
 	// are the associated resource level version info.
-	InitialResourceVersions map[string]string `protobuf:"bytes,3,rep,name=initial_resource_versions,json=initialResourceVersions" json:"initial_resource_versions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	InitialResourceVersions map[string]string `protobuf:"bytes,3,rep,name=initial_resource_versions,json=initialResourceVersions,proto3" json:"initial_resource_versions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
 	// When the RequestResources is an ACK or NACK message in response to a previous RequestResources,
 	// the response_nonce must be the nonce in the RequestResources. Otherwise response_nonce must
 	// be omitted.
@@ -366,17 +503,48 @@ type RequestResources struct {
 	// This is populated when the previously received resources could not be applied
 	// The *message* field in *error_details* provides the source internal error
 	// related to the failure.
-	ErrorDetail *google_rpc.Status `protobuf:"bytes,5,opt,name=error_detail,json=errorDetail" json:"error_detail,omitempty"`
+	ErrorDetail *rpc.Status `protobuf:"bytes,5,opt,name=error_detail,json=errorDetail,proto3" json:"error_detail,omitempty"`
 	// Request an incremental update for the specified collection. The source may choose to
 	// honor this request or ignore and and provide a full-state update in the corresponding
 	// `Resource` response.
-	Incremental bool `protobuf:"varint,6,opt,name=incremental,proto3" json:"incremental,omitempty"`
+	Incremental          bool     `protobuf:"varint,6,opt,name=incremental,proto3" json:"incremental,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *RequestResources) Reset()         { *m = RequestResources{} }
+func (m *RequestResources) String() string { return proto.CompactTextString(m) }
+func (*RequestResources) ProtoMessage()    {}
+func (*RequestResources) Descriptor() ([]byte, []int) {
+	return fileDescriptor_0713683a7297bd65, []int{5}
+}
+func (m *RequestResources) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *RequestResources) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_RequestResources.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *RequestResources) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RequestResources.Merge(m, src)
+}
+func (m *RequestResources) XXX_Size() int {
+	return m.Size()
+}
+func (m *RequestResources) XXX_DiscardUnknown() {
+	xxx_messageInfo_RequestResources.DiscardUnknown(m)
 }
 
-func (m *RequestResources) Reset()                    { *m = RequestResources{} }
-func (m *RequestResources) String() string            { return proto.CompactTextString(m) }
-func (*RequestResources) ProtoMessage()               {}
-func (*RequestResources) Descriptor() ([]byte, []int) { return fileDescriptorMcp, []int{5} }
+var xxx_messageInfo_RequestResources proto.InternalMessageInfo
 
 func (m *RequestResources) GetSinkNode() *SinkNode {
 	if m != nil {
@@ -406,7 +574,7 @@ func (m *RequestResources) GetResponseNonce() string {
 	return ""
 }
 
-func (m *RequestResources) GetErrorDetail() *google_rpc.Status {
+func (m *RequestResources) GetErrorDetail() *rpc.Status {
 	if m != nil {
 		return m.ErrorDetail
 	}
@@ -447,7 +615,7 @@ type Resources struct {
 	//
 	// When `incremental` is false, this contains the full set of resources for the
 	// specified collection. This replaces any previously delivered resources.
-	Resources []Resource `protobuf:"bytes,3,rep,name=resources" json:"resources"`
+	Resources []Resource `protobuf:"bytes,3,rep,name=resources,proto3" json:"resources"`
 	// Names of resources that have been deleted and to be
 	// removed from the MCP sink node. Removed resources for missing
 	// resources can be ignored.
@@ -457,19 +625,50 @@ type Resources struct {
 	// the sink.
 	//
 	// When `incremental` is false, this field should be ignored.
-	RemovedResources []string `protobuf:"bytes,4,rep,name=removed_resources,json=removedResources" json:"removed_resources,omitempty"`
+	RemovedResources []string `protobuf:"bytes,4,rep,name=removed_resources,json=removedResources,proto3" json:"removed_resources,omitempty"`
 	// Required. The nonce provides a way for RequestChange to uniquely
 	// reference a RequestResources.
 	Nonce string `protobuf:"bytes,5,opt,name=nonce,proto3" json:"nonce,omitempty"`
 	// This resource response is an incremental update. The source should only send
 	// incremental updates if the sink requested them.
-	Incremental bool `protobuf:"varint,6,opt,name=incremental,proto3" json:"incremental,omitempty"`
+	Incremental          bool     `protobuf:"varint,6,opt,name=incremental,proto3" json:"incremental,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Resources) Reset()         { *m = Resources{} }
+func (m *Resources) String() string { return proto.CompactTextString(m) }
+func (*Resources) ProtoMessage()    {}
+func (*Resources) Descriptor() ([]byte, []int) {
+	return fileDescriptor_0713683a7297bd65, []int{6}
+}
+func (m *Resources) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *Resources) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_Resources.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *Resources) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Resources.Merge(m, src)
+}
+func (m *Resources) XXX_Size() int {
+	return m.Size()
+}
+func (m *Resources) XXX_DiscardUnknown() {
+	xxx_messageInfo_Resources.DiscardUnknown(m)
 }
 
-func (m *Resources) Reset()                    { *m = Resources{} }
-func (m *Resources) String() string            { return proto.CompactTextString(m) }
-func (*Resources) ProtoMessage()               {}
-func (*Resources) Descriptor() ([]byte, []int) { return fileDescriptorMcp, []int{6} }
+var xxx_messageInfo_Resources proto.InternalMessageInfo
 
 func (m *Resources) GetSystemVersionInfo() string {
 	if m != nil {
@@ -515,13 +714,72 @@ func (m *Resources) GetIncremental() bool {
 
 func init() {
 	proto.RegisterType((*SinkNode)(nil), "istio.mcp.v1alpha1.SinkNode")
+	proto.RegisterMapType((map[string]string)(nil), "istio.mcp.v1alpha1.SinkNode.AnnotationsEntry")
 	proto.RegisterType((*MeshConfigRequest)(nil), "istio.mcp.v1alpha1.MeshConfigRequest")
 	proto.RegisterType((*MeshConfigResponse)(nil), "istio.mcp.v1alpha1.MeshConfigResponse")
 	proto.RegisterType((*IncrementalMeshConfigRequest)(nil), "istio.mcp.v1alpha1.IncrementalMeshConfigRequest")
+	proto.RegisterMapType((map[string]string)(nil), "istio.mcp.v1alpha1.IncrementalMeshConfigRequest.InitialResourceVersionsEntry")
 	proto.RegisterType((*IncrementalMeshConfigResponse)(nil), "istio.mcp.v1alpha1.IncrementalMeshConfigResponse")
 	proto.RegisterType((*RequestResources)(nil), "istio.mcp.v1alpha1.RequestResources")
+	proto.RegisterMapType((map[string]string)(nil), "istio.mcp.v1alpha1.RequestResources.InitialResourceVersionsEntry")
 	proto.RegisterType((*Resources)(nil), "istio.mcp.v1alpha1.Resources")
 }
+
+func init() { proto.RegisterFile("mcp/v1alpha1/mcp.proto", fileDescriptor_0713683a7297bd65) }
+
+var fileDescriptor_0713683a7297bd65 = []byte{
+	// 774 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0xcd, 0x6e, 0xeb, 0x44,
+	0x14, 0xbe, 0xe3, 0x34, 0x97, 0xe4, 0xa4, 0x54, 0xe9, 0x50, 0x51, 0xc7, 0xf7, 0xde, 0x10, 0x22,
+	0x8a, 0x22, 0x55, 0x38, 0x6d, 0x10, 0x12, 0xb0, 0x40, 0xb4, 0xd0, 0x45, 0x91, 0x5a, 0x24, 0x47,
+	0x74, 0xc1, 0xc6, 0x72, 0xed, 0xa9, 0x3b, 0x8a, 0x33, 0x63, 0x66, 0x26, 0x91, 0xb2, 0x60, 0xc3,
+	0x0e, 0xf1, 0x0c, 0xec, 0x51, 0x79, 0x01, 0x1e, 0xa1, 0x4b, 0x16, 0xac, 0x11, 0xca, 0x92, 0xa7,
+	0x40, 0xfe, 0xab, 0x1d, 0xea, 0x26, 0x0d, 0x14, 0x89, 0x8d, 0x35, 0x73, 0xce, 0x99, 0xef, 0xfc,
+	0x7c, 0xdf, 0x8c, 0x0c, 0x6f, 0x8e, 0xdd, 0xb0, 0x3f, 0x3d, 0x74, 0x82, 0xf0, 0xda, 0x39, 0xec,
+	0x8f, 0xdd, 0xd0, 0x0c, 0x05, 0x57, 0x1c, 0x63, 0x2a, 0x15, 0xe5, 0x66, 0x64, 0xc8, 0xbc, 0xc6,
+	0xae, 0xcf, 0xb9, 0x1f, 0x90, 0xbe, 0x08, 0xdd, 0xbe, 0x54, 0x8e, 0x9a, 0xc8, 0x24, 0xd8, 0xd8,
+	0xf1, 0xb9, 0xcf, 0xe3, 0x65, 0x3f, 0x5a, 0xa5, 0xd6, 0x17, 0x0b, 0xd0, 0x82, 0x48, 0x3e, 0x11,
+	0x2e, 0x49, 0x9c, 0xdd, 0x9f, 0x11, 0xd4, 0x86, 0x94, 0x8d, 0xce, 0xb9, 0x47, 0xf0, 0x16, 0x68,
+	0xd4, 0xd3, 0x51, 0x07, 0xf5, 0xea, 0x96, 0x46, 0x3d, 0xfc, 0x25, 0x34, 0x1c, 0xc6, 0xb8, 0x72,
+	0x14, 0xe5, 0x4c, 0xea, 0x5a, 0xa7, 0xd2, 0x6b, 0x0c, 0xde, 0x33, 0xef, 0x97, 0x64, 0x66, 0x10,
+	0xe6, 0x51, 0x1e, 0x7f, 0xc2, 0x94, 0x98, 0x59, 0x45, 0x04, 0xe3, 0x13, 0x68, 0xfe, 0x3d, 0x00,
+	0x37, 0xa1, 0x32, 0x22, 0xb3, 0x34, 0x6b, 0xb4, 0xc4, 0x3b, 0x50, 0x9d, 0x3a, 0xc1, 0x84, 0xe8,
+	0x5a, 0x6c, 0x4b, 0x36, 0x1f, 0x6b, 0x1f, 0xa2, 0xee, 0x9f, 0x08, 0xb6, 0xcf, 0x88, 0xbc, 0xfe,
+	0x8c, 0xb3, 0x2b, 0xea, 0x5b, 0xe4, 0x9b, 0x09, 0x91, 0x0a, 0xbf, 0x0d, 0x9b, 0x53, 0x22, 0x24,
+	0xe5, 0xcc, 0xa6, 0xec, 0x8a, 0xa7, 0x50, 0x8d, 0xd4, 0x76, 0xca, 0xae, 0x38, 0xfe, 0x08, 0xea,
+	0x92, 0xb2, 0x91, 0xcd, 0xb8, 0x97, 0xc0, 0x36, 0x06, 0x2f, 0x97, 0xf5, 0x61, 0xd5, 0x64, 0x36,
+	0x94, 0x16, 0xd4, 0xd4, 0x2c, 0x24, 0xf6, 0x44, 0x04, 0x7a, 0x25, 0x46, 0x7e, 0x2d, 0xda, 0x7f,
+	0x25, 0x02, 0xbc, 0x07, 0x5b, 0x82, 0xc8, 0x90, 0x33, 0x49, 0x6c, 0xc6, 0x99, 0x4b, 0xf4, 0x8d,
+	0x38, 0xe0, 0xf5, 0xcc, 0x7a, 0x1e, 0x19, 0xf1, 0x07, 0xb0, 0x49, 0x84, 0xe0, 0xc2, 0xf6, 0x88,
+	0x72, 0x68, 0xa0, 0x57, 0xe3, 0xfc, 0xd8, 0x4c, 0x68, 0x34, 0x45, 0xe8, 0x9a, 0xc3, 0x98, 0x46,
+	0xab, 0x11, 0xc7, 0x7d, 0x1e, 0x87, 0x75, 0x6f, 0x10, 0xe0, 0x62, 0xb3, 0x09, 0xe4, 0x63, 0xba,
+	0xfd, 0x14, 0xea, 0x19, 0xcd, 0x19, 0x6b, 0xa5, 0xdd, 0x5a, 0x69, 0xd0, 0xf1, 0xc6, 0xed, 0xef,
+	0x6f, 0x3d, 0xb3, 0xf2, 0x43, 0xcb, 0x9a, 0xde, 0x81, 0x6a, 0xb1, 0xd7, 0x64, 0xd3, 0xbd, 0xa9,
+	0xc0, 0xcb, 0x53, 0xe6, 0x0a, 0x32, 0x26, 0x4c, 0x39, 0xc1, 0x7d, 0x92, 0x16, 0x18, 0x40, 0xff,
+	0x98, 0x01, 0x6d, 0xb1, 0x98, 0xef, 0x11, 0xb4, 0x28, 0xa3, 0x8a, 0x3a, 0x81, 0x9d, 0x55, 0x6f,
+	0xa7, 0xa3, 0x90, 0x7a, 0x25, 0x6e, 0xfd, 0xac, 0x2c, 0xcd, 0xb2, 0x5a, 0xcd, 0xd3, 0x04, 0x31,
+	0x1b, 0xcf, 0x45, 0x8a, 0x97, 0x08, 0x7a, 0x97, 0x96, 0x7b, 0xff, 0x5b, 0x35, 0x18, 0x5f, 0x44,
+	0xf3, 0x7d, 0xb8, 0xac, 0xb5, 0xae, 0xd1, 0x6f, 0x08, 0x5e, 0x3d, 0x30, 0x80, 0x54, 0x64, 0x26,
+	0xbc, 0x21, 0x67, 0x52, 0x91, 0xb1, 0x5d, 0xa2, 0xb5, 0xed, 0xc4, 0x75, 0xf1, 0xa4, 0x8a, 0xdb,
+	0x87, 0x6d, 0x41, 0xc6, 0x7c, 0x4a, 0x3c, 0x3b, 0x47, 0x8a, 0x08, 0xac, 0x5b, 0xcd, 0xd4, 0x61,
+	0xdd, 0x05, 0x97, 0x6b, 0xf0, 0x97, 0x0a, 0x34, 0x53, 0x0a, 0xf3, 0xd0, 0x7f, 0xa1, 0xbb, 0x36,
+	0x80, 0xcb, 0x83, 0x80, 0xb8, 0xd1, 0x6b, 0x95, 0x4e, 0xb1, 0x60, 0xc1, 0xdf, 0xae, 0xd6, 0xde,
+	0x51, 0xf9, 0x10, 0x16, 0x6b, 0xfc, 0x3f, 0xea, 0x0d, 0x77, 0xa0, 0x41, 0x73, 0x89, 0xe8, 0xcf,
+	0x3b, 0xa8, 0x57, 0xb3, 0x8a, 0xa6, 0x27, 0x55, 0xe4, 0x77, 0x1a, 0xd4, 0x73, 0xce, 0xd6, 0x55,
+	0xdf, 0x2a, 0xa2, 0x16, 0xd4, 0x59, 0x79, 0x32, 0x75, 0x6e, 0xac, 0x52, 0x67, 0xb5, 0xa0, 0xce,
+	0xd5, 0x03, 0x1d, 0xfc, 0xa8, 0xc1, 0x8b, 0x23, 0xdf, 0x17, 0xc4, 0x77, 0x14, 0xf1, 0xf2, 0x5b,
+	0x39, 0x24, 0x62, 0x4a, 0x5d, 0x82, 0x43, 0x68, 0x0d, 0x95, 0x20, 0xce, 0x38, 0x0f, 0xca, 0x93,
+	0xee, 0x95, 0x35, 0x74, 0xef, 0x69, 0x33, 0xde, 0x5d, 0x15, 0x96, 0x48, 0xa7, 0xfb, 0xac, 0x87,
+	0x0e, 0x10, 0xfe, 0x01, 0x41, 0xbb, 0xf0, 0x50, 0x94, 0xe5, 0x3d, 0x58, 0xf7, 0x75, 0x35, 0x0e,
+	0xd7, 0x38, 0x51, 0xac, 0x66, 0x30, 0x85, 0xad, 0x2c, 0xef, 0x30, 0xfe, 0x62, 0x0f, 0x76, 0x4f,
+	0xa4, 0x72, 0x2e, 0x03, 0x2a, 0xaf, 0xef, 0x5c, 0xf1, 0x88, 0xf0, 0x3b, 0x8f, 0xb9, 0x79, 0xc6,
+	0xab, 0x65, 0x32, 0x90, 0x69, 0x5e, 0x05, 0x9b, 0x77, 0xe0, 0x94, 0x8d, 0x96, 0x65, 0x5d, 0x8e,
+	0x67, 0x3c, 0xaa, 0xa8, 0x24, 0xeb, 0xf1, 0xfe, 0x4f, 0xf3, 0x36, 0xba, 0x9d, 0xb7, 0xd1, 0xaf,
+	0xf3, 0x36, 0xfa, 0x63, 0xde, 0x46, 0x5f, 0xb7, 0x92, 0xc3, 0x94, 0xf7, 0x9d, 0x90, 0xf6, 0x8b,
+	0x7f, 0x75, 0x97, 0xcf, 0xe3, 0xbf, 0xb9, 0xf7, 0xff, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x4e, 0x31,
+	0xdd, 0xdb, 0x47, 0x0a, 0x00, 0x00,
+}
+
 func (this *SinkNode) Equal(that interface{}) bool {
 	if that == nil {
 		return this == nil
@@ -552,6 +810,9 @@ func (this *SinkNode) Equal(that interface{}) bool {
 			return false
 		}
 	}
+	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
+		return false
+	}
 	return true
 }
 func (this *MeshConfigRequest) Equal(that interface{}) bool {
@@ -588,6 +849,9 @@ func (this *MeshConfigRequest) Equal(that interface{}) bool {
 	if !this.ErrorDetail.Equal(that1.ErrorDetail) {
 		return false
 	}
+	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
+		return false
+	}
 	return true
 }
 func (this *MeshConfigResponse) Equal(that interface{}) bool {
@@ -626,6 +890,9 @@ func (this *MeshConfigResponse) Equal(that interface{}) bool {
 	if this.Nonce != that1.Nonce {
 		return false
 	}
+	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
+		return false
+	}
 	return true
 }
 func (this *IncrementalMeshConfigRequest) Equal(that interface{}) bool {
@@ -667,6 +934,9 @@ func (this *IncrementalMeshConfigRequest) Equal(that interface{}) bool {
 	if !this.ErrorDetail.Equal(that1.ErrorDetail) {
 		return false
 	}
+	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
+		return false
+	}
 	return true
 }
 func (this *IncrementalMeshConfigResponse) Equal(that interface{}) bool {
@@ -710,6 +980,9 @@ func (this *IncrementalMeshConfigResponse) Equal(that interface{}) bool {
 	if this.Nonce != that1.Nonce {
 		return false
 	}
+	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
+		return false
+	}
 	return true
 }
 func (this *RequestResources) Equal(that interface{}) bool {
@@ -754,6 +1027,9 @@ func (this *RequestResources) Equal(that interface{}) bool {
 	if this.Incremental != that1.Incremental {
 		return false
 	}
+	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
+		return false
+	}
 	return true
 }
 func (this *Resources) Equal(that interface{}) bool {
@@ -803,6 +1079,9 @@ func (this *Resources) Equal(that interface{}) bool {
 	if this.Incremental != that1.Incremental {
 		return false
 	}
+	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
+		return false
+	}
 	return true
 }
 
@@ -814,8 +1093,9 @@ var _ grpc.ClientConn
 // is compatible with the grpc package it is being compiled against.
 const _ = grpc.SupportPackageIsVersion4
 
-// Client API for AggregatedMeshConfigService service
-
+// AggregatedMeshConfigServiceClient is the client API for AggregatedMeshConfigService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type AggregatedMeshConfigServiceClient interface {
 	// StreamAggregatedResources provides the ability to carefully
 	// sequence updates across multiple resource types. A single stream
@@ -837,7 +1117,7 @@ func NewAggregatedMeshConfigServiceClient(cc *grpc.ClientConn) AggregatedMeshCon
 }
 
 func (c *aggregatedMeshConfigServiceClient) StreamAggregatedResources(ctx context.Context, opts ...grpc.CallOption) (AggregatedMeshConfigService_StreamAggregatedResourcesClient, error) {
-	stream, err := grpc.NewClientStream(ctx, &_AggregatedMeshConfigService_serviceDesc.Streams[0], c.cc, "/istio.mcp.v1alpha1.AggregatedMeshConfigService/StreamAggregatedResources", opts...)
+	stream, err := c.cc.NewStream(ctx, &_AggregatedMeshConfigService_serviceDesc.Streams[0], "/istio.mcp.v1alpha1.AggregatedMeshConfigService/StreamAggregatedResources", opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -868,7 +1148,7 @@ func (x *aggregatedMeshConfigServiceStreamAggregatedResourcesClient) Recv() (*Me
 }
 
 func (c *aggregatedMeshConfigServiceClient) IncrementalAggregatedResources(ctx context.Context, opts ...grpc.CallOption) (AggregatedMeshConfigService_IncrementalAggregatedResourcesClient, error) {
-	stream, err := grpc.NewClientStream(ctx, &_AggregatedMeshConfigService_serviceDesc.Streams[1], c.cc, "/istio.mcp.v1alpha1.AggregatedMeshConfigService/IncrementalAggregatedResources", opts...)
+	stream, err := c.cc.NewStream(ctx, &_AggregatedMeshConfigService_serviceDesc.Streams[1], "/istio.mcp.v1alpha1.AggregatedMeshConfigService/IncrementalAggregatedResources", opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -898,8 +1178,7 @@ func (x *aggregatedMeshConfigServiceIncrementalAggregatedResourcesClient) Recv()
 	return m, nil
 }
 
-// Server API for AggregatedMeshConfigService service
-
+// AggregatedMeshConfigServiceServer is the server API for AggregatedMeshConfigService service.
 type AggregatedMeshConfigServiceServer interface {
 	// StreamAggregatedResources provides the ability to carefully
 	// sequence updates across multiple resource types. A single stream
@@ -989,8 +1268,9 @@ var _AggregatedMeshConfigService_serviceDesc = grpc.ServiceDesc{
 	Metadata: "mcp/v1alpha1/mcp.proto",
 }
 
-// Client API for ResourceSource service
-
+// ResourceSourceClient is the client API for ResourceSource service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type ResourceSourceClient interface {
 	// The sink, acting as gRPC client, establishes a new resource stream
 	// with the source. The sink sends RequestResources message to
@@ -1007,7 +1287,7 @@ func NewResourceSourceClient(cc *grpc.ClientConn) ResourceSourceClient {
 }
 
 func (c *resourceSourceClient) EstablishResourceStream(ctx context.Context, opts ...grpc.CallOption) (ResourceSource_EstablishResourceStreamClient, error) {
-	stream, err := grpc.NewClientStream(ctx, &_ResourceSource_serviceDesc.Streams[0], c.cc, "/istio.mcp.v1alpha1.ResourceSource/EstablishResourceStream", opts...)
+	stream, err := c.cc.NewStream(ctx, &_ResourceSource_serviceDesc.Streams[0], "/istio.mcp.v1alpha1.ResourceSource/EstablishResourceStream", opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -1037,8 +1317,7 @@ func (x *resourceSourceEstablishResourceStreamClient) Recv() (*Resources, error)
 	return m, nil
 }
 
-// Server API for ResourceSource service
-
+// ResourceSourceServer is the server API for ResourceSource service.
 type ResourceSourceServer interface {
 	// The sink, acting as gRPC client, establishes a new resource stream
 	// with the source. The sink sends RequestResources message to
@@ -1091,8 +1370,9 @@ var _ResourceSource_serviceDesc = grpc.ServiceDesc{
 	Metadata: "mcp/v1alpha1/mcp.proto",
 }
 
-// Client API for ResourceSink service
-
+// ResourceSinkClient is the client API for ResourceSink service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type ResourceSinkClient interface {
 	// The source, acting as gRPC client, establishes a new resource stream
 	// with the sink. The sink sends RequestResources message to and
@@ -1109,7 +1389,7 @@ func NewResourceSinkClient(cc *grpc.ClientConn) ResourceSinkClient {
 }
 
 func (c *resourceSinkClient) EstablishResourceStream(ctx context.Context, opts ...grpc.CallOption) (ResourceSink_EstablishResourceStreamClient, error) {
-	stream, err := grpc.NewClientStream(ctx, &_ResourceSink_serviceDesc.Streams[0], c.cc, "/istio.mcp.v1alpha1.ResourceSink/EstablishResourceStream", opts...)
+	stream, err := c.cc.NewStream(ctx, &_ResourceSink_serviceDesc.Streams[0], "/istio.mcp.v1alpha1.ResourceSink/EstablishResourceStream", opts...)
 	if err != nil {
 		return nil, err
 	}
@@ -1139,8 +1419,7 @@ func (x *resourceSinkEstablishResourceStreamClient) Recv() (*RequestResources, e
 	return m, nil
 }
 
-// Server API for ResourceSink service
-
+// ResourceSinkServer is the server API for ResourceSink service.
 type ResourceSinkServer interface {
 	// The source, acting as gRPC client, establishes a new resource stream
 	// with the sink. The sink sends RequestResources message to and
@@ -1231,6 +1510,9 @@ func (m *SinkNode) MarshalTo(dAtA []byte) (int, error) {
 			i += copy(dAtA[i:], v)
 		}
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1287,6 +1569,9 @@ func (m *MeshConfigRequest) MarshalTo(dAtA []byte) (int, error) {
 		}
 		i += n2
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1335,6 +1620,9 @@ func (m *MeshConfigResponse) MarshalTo(dAtA []byte) (int, error) {
 		i = encodeVarintMcp(dAtA, i, uint64(len(m.Nonce)))
 		i += copy(dAtA[i:], m.Nonce)
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1402,6 +1690,9 @@ func (m *IncrementalMeshConfigRequest) MarshalTo(dAtA []byte) (int, error) {
 		}
 		i += n4
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1459,6 +1750,9 @@ func (m *IncrementalMeshConfigResponse) MarshalTo(dAtA []byte) (int, error) {
 		i = encodeVarintMcp(dAtA, i, uint64(len(m.Nonce)))
 		i += copy(dAtA[i:], m.Nonce)
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1536,6 +1830,9 @@ func (m *RequestResources) MarshalTo(dAtA []byte) (int, error) {
 		}
 		i++
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1609,6 +1906,9 @@ func (m *Resources) MarshalTo(dAtA []byte) (int, error) {
 		}
 		i++
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1622,6 +1922,9 @@ func encodeVarintMcp(dAtA []byte, offset int, v uint64) int {
 	return offset + 1
 }
 func (m *SinkNode) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.Id)
@@ -1636,10 +1939,16 @@ func (m *SinkNode) Size() (n int) {
 			n += mapEntrySize + 1 + sovMcp(uint64(mapEntrySize))
 		}
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *MeshConfigRequest) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.VersionInfo)
@@ -1662,10 +1971,16 @@ func (m *MeshConfigRequest) Size() (n int) {
 		l = m.ErrorDetail.Size()
 		n += 1 + l + sovMcp(uint64(l))
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *MeshConfigResponse) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.VersionInfo)
@@ -1686,10 +2001,16 @@ func (m *MeshConfigResponse) Size() (n int) {
 	if l > 0 {
 		n += 1 + l + sovMcp(uint64(l))
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *IncrementalMeshConfigRequest) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	if m.SinkNode != nil {
@@ -1716,10 +2037,16 @@ func (m *IncrementalMeshConfigRequest) Size() (n int) {
 		l = m.ErrorDetail.Size()
 		n += 1 + l + sovMcp(uint64(l))
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *IncrementalMeshConfigResponse) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.SystemVersionInfo)
@@ -1742,10 +2069,16 @@ func (m *IncrementalMeshConfigResponse) Size() (n int) {
 	if l > 0 {
 		n += 1 + l + sovMcp(uint64(l))
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *RequestResources) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	if m.SinkNode != nil {
@@ -1775,10 +2108,16 @@ func (m *RequestResources) Size() (n int) {
 	if m.Incremental {
 		n += 2
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *Resources) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.SystemVersionInfo)
@@ -1808,6 +2147,9 @@ func (m *Resources) Size() (n int) {
 	if m.Incremental {
 		n += 2
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
@@ -1839,7 +2181,7 @@ func (m *SinkNode) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -1867,7 +2209,7 @@ func (m *SinkNode) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1877,6 +2219,9 @@ func (m *SinkNode) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1896,7 +2241,7 @@ func (m *SinkNode) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1905,6 +2250,9 @@ func (m *SinkNode) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1925,7 +2273,7 @@ func (m *SinkNode) Unmarshal(dAtA []byte) error {
 					}
 					b := dAtA[iNdEx]
 					iNdEx++
-					wire |= (uint64(b) & 0x7F) << shift
+					wire |= uint64(b&0x7F) << shift
 					if b < 0x80 {
 						break
 					}
@@ -1942,7 +2290,7 @@ func (m *SinkNode) Unmarshal(dAtA []byte) error {
 						}
 						b := dAtA[iNdEx]
 						iNdEx++
-						stringLenmapkey |= (uint64(b) & 0x7F) << shift
+						stringLenmapkey |= uint64(b&0x7F) << shift
 						if b < 0x80 {
 							break
 						}
@@ -1952,6 +2300,9 @@ func (m *SinkNode) Unmarshal(dAtA []byte) error {
 						return ErrInvalidLengthMcp
 					}
 					postStringIndexmapkey := iNdEx + intStringLenmapkey
+					if postStringIndexmapkey < 0 {
+						return ErrInvalidLengthMcp
+					}
 					if postStringIndexmapkey > l {
 						return io.ErrUnexpectedEOF
 					}
@@ -1968,7 +2319,7 @@ func (m *SinkNode) Unmarshal(dAtA []byte) error {
 						}
 						b := dAtA[iNdEx]
 						iNdEx++
-						stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+						stringLenmapvalue |= uint64(b&0x7F) << shift
 						if b < 0x80 {
 							break
 						}
@@ -1978,6 +2329,9 @@ func (m *SinkNode) Unmarshal(dAtA []byte) error {
 						return ErrInvalidLengthMcp
 					}
 					postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+					if postStringIndexmapvalue < 0 {
+						return ErrInvalidLengthMcp
+					}
 					if postStringIndexmapvalue > l {
 						return io.ErrUnexpectedEOF
 					}
@@ -2009,9 +2363,13 @@ func (m *SinkNode) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthMcp
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -2036,7 +2394,7 @@ func (m *MeshConfigRequest) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -2064,7 +2422,7 @@ func (m *MeshConfigRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2074,6 +2432,9 @@ func (m *MeshConfigRequest) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2093,7 +2454,7 @@ func (m *MeshConfigRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2102,6 +2463,9 @@ func (m *MeshConfigRequest) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2126,7 +2490,7 @@ func (m *MeshConfigRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2136,6 +2500,9 @@ func (m *MeshConfigRequest) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2155,7 +2522,7 @@ func (m *MeshConfigRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2165,6 +2532,9 @@ func (m *MeshConfigRequest) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2184,7 +2554,7 @@ func (m *MeshConfigRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2193,11 +2563,14 @@ func (m *MeshConfigRequest) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
 			if m.ErrorDetail == nil {
-				m.ErrorDetail = &google_rpc.Status{}
+				m.ErrorDetail = &rpc.Status{}
 			}
 			if err := m.ErrorDetail.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
 				return err
@@ -2212,9 +2585,13 @@ func (m *MeshConfigRequest) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthMcp
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -2239,7 +2616,7 @@ func (m *MeshConfigResponse) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -2267,7 +2644,7 @@ func (m *MeshConfigResponse) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2277,6 +2654,9 @@ func (m *MeshConfigResponse) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2296,7 +2676,7 @@ func (m *MeshConfigResponse) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2305,6 +2685,9 @@ func (m *MeshConfigResponse) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2327,7 +2710,7 @@ func (m *MeshConfigResponse) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2337,6 +2720,9 @@ func (m *MeshConfigResponse) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2356,7 +2742,7 @@ func (m *MeshConfigResponse) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2366,6 +2752,9 @@ func (m *MeshConfigResponse) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2380,9 +2769,13 @@ func (m *MeshConfigResponse) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthMcp
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -2407,7 +2800,7 @@ func (m *IncrementalMeshConfigRequest) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -2435,7 +2828,7 @@ func (m *IncrementalMeshConfigRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2444,6 +2837,9 @@ func (m *IncrementalMeshConfigRequest) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2468,7 +2864,7 @@ func (m *IncrementalMeshConfigRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2478,6 +2874,9 @@ func (m *IncrementalMeshConfigRequest) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2497,7 +2896,7 @@ func (m *IncrementalMeshConfigRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2506,6 +2905,9 @@ func (m *IncrementalMeshConfigRequest) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2526,7 +2928,7 @@ func (m *IncrementalMeshConfigRequest) Unmarshal(dAtA []byte) error {
 					}
 					b := dAtA[iNdEx]
 					iNdEx++
-					wire |= (uint64(b) & 0x7F) << shift
+					wire |= uint64(b&0x7F) << shift
 					if b < 0x80 {
 						break
 					}
@@ -2543,7 +2945,7 @@ func (m *IncrementalMeshConfigRequest) Unmarshal(dAtA []byte) error {
 						}
 						b := dAtA[iNdEx]
 						iNdEx++
-						stringLenmapkey |= (uint64(b) & 0x7F) << shift
+						stringLenmapkey |= uint64(b&0x7F) << shift
 						if b < 0x80 {
 							break
 						}
@@ -2553,6 +2955,9 @@ func (m *IncrementalMeshConfigRequest) Unmarshal(dAtA []byte) error {
 						return ErrInvalidLengthMcp
 					}
 					postStringIndexmapkey := iNdEx + intStringLenmapkey
+					if postStringIndexmapkey < 0 {
+						return ErrInvalidLengthMcp
+					}
 					if postStringIndexmapkey > l {
 						return io.ErrUnexpectedEOF
 					}
@@ -2569,7 +2974,7 @@ func (m *IncrementalMeshConfigRequest) Unmarshal(dAtA []byte) error {
 						}
 						b := dAtA[iNdEx]
 						iNdEx++
-						stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+						stringLenmapvalue |= uint64(b&0x7F) << shift
 						if b < 0x80 {
 							break
 						}
@@ -2579,6 +2984,9 @@ func (m *IncrementalMeshConfigRequest) Unmarshal(dAtA []byte) error {
 						return ErrInvalidLengthMcp
 					}
 					postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+					if postStringIndexmapvalue < 0 {
+						return ErrInvalidLengthMcp
+					}
 					if postStringIndexmapvalue > l {
 						return io.ErrUnexpectedEOF
 					}
@@ -2615,7 +3023,7 @@ func (m *IncrementalMeshConfigRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2625,6 +3033,9 @@ func (m *IncrementalMeshConfigRequest) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2644,7 +3055,7 @@ func (m *IncrementalMeshConfigRequest) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2653,11 +3064,14 @@ func (m *IncrementalMeshConfigRequest) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
 			if m.ErrorDetail == nil {
-				m.ErrorDetail = &google_rpc.Status{}
+				m.ErrorDetail = &rpc.Status{}
 			}
 			if err := m.ErrorDetail.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
 				return err
@@ -2672,9 +3086,13 @@ func (m *IncrementalMeshConfigRequest) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthMcp
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -2699,7 +3117,7 @@ func (m *IncrementalMeshConfigResponse) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -2727,7 +3145,7 @@ func (m *IncrementalMeshConfigResponse) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2737,6 +3155,9 @@ func (m *IncrementalMeshConfigResponse) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2756,7 +3177,7 @@ func (m *IncrementalMeshConfigResponse) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2765,6 +3186,9 @@ func (m *IncrementalMeshConfigResponse) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2787,7 +3211,7 @@ func (m *IncrementalMeshConfigResponse) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2797,6 +3221,9 @@ func (m *IncrementalMeshConfigResponse) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2816,7 +3243,7 @@ func (m *IncrementalMeshConfigResponse) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2826,6 +3253,9 @@ func (m *IncrementalMeshConfigResponse) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2840,9 +3270,13 @@ func (m *IncrementalMeshConfigResponse) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthMcp
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -2867,7 +3301,7 @@ func (m *RequestResources) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -2895,7 +3329,7 @@ func (m *RequestResources) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2904,6 +3338,9 @@ func (m *RequestResources) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2928,7 +3365,7 @@ func (m *RequestResources) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2938,6 +3375,9 @@ func (m *RequestResources) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2957,7 +3397,7 @@ func (m *RequestResources) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2966,6 +3406,9 @@ func (m *RequestResources) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2986,7 +3429,7 @@ func (m *RequestResources) Unmarshal(dAtA []byte) error {
 					}
 					b := dAtA[iNdEx]
 					iNdEx++
-					wire |= (uint64(b) & 0x7F) << shift
+					wire |= uint64(b&0x7F) << shift
 					if b < 0x80 {
 						break
 					}
@@ -3003,7 +3446,7 @@ func (m *RequestResources) Unmarshal(dAtA []byte) error {
 						}
 						b := dAtA[iNdEx]
 						iNdEx++
-						stringLenmapkey |= (uint64(b) & 0x7F) << shift
+						stringLenmapkey |= uint64(b&0x7F) << shift
 						if b < 0x80 {
 							break
 						}
@@ -3013,6 +3456,9 @@ func (m *RequestResources) Unmarshal(dAtA []byte) error {
 						return ErrInvalidLengthMcp
 					}
 					postStringIndexmapkey := iNdEx + intStringLenmapkey
+					if postStringIndexmapkey < 0 {
+						return ErrInvalidLengthMcp
+					}
 					if postStringIndexmapkey > l {
 						return io.ErrUnexpectedEOF
 					}
@@ -3029,7 +3475,7 @@ func (m *RequestResources) Unmarshal(dAtA []byte) error {
 						}
 						b := dAtA[iNdEx]
 						iNdEx++
-						stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+						stringLenmapvalue |= uint64(b&0x7F) << shift
 						if b < 0x80 {
 							break
 						}
@@ -3039,6 +3485,9 @@ func (m *RequestResources) Unmarshal(dAtA []byte) error {
 						return ErrInvalidLengthMcp
 					}
 					postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+					if postStringIndexmapvalue < 0 {
+						return ErrInvalidLengthMcp
+					}
 					if postStringIndexmapvalue > l {
 						return io.ErrUnexpectedEOF
 					}
@@ -3075,7 +3524,7 @@ func (m *RequestResources) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -3085,6 +3534,9 @@ func (m *RequestResources) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -3104,7 +3556,7 @@ func (m *RequestResources) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -3113,11 +3565,14 @@ func (m *RequestResources) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
 			if m.ErrorDetail == nil {
-				m.ErrorDetail = &google_rpc.Status{}
+				m.ErrorDetail = &rpc.Status{}
 			}
 			if err := m.ErrorDetail.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
 				return err
@@ -3137,7 +3592,7 @@ func (m *RequestResources) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= (int(b) & 0x7F) << shift
+				v |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -3152,9 +3607,13 @@ func (m *RequestResources) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthMcp
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -3179,7 +3638,7 @@ func (m *Resources) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -3207,7 +3666,7 @@ func (m *Resources) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -3217,6 +3676,9 @@ func (m *Resources) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -3236,7 +3698,7 @@ func (m *Resources) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -3246,6 +3708,9 @@ func (m *Resources) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -3265,7 +3730,7 @@ func (m *Resources) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -3274,6 +3739,9 @@ func (m *Resources) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -3296,7 +3764,7 @@ func (m *Resources) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -3306,6 +3774,9 @@ func (m *Resources) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -3325,7 +3796,7 @@ func (m *Resources) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -3335,6 +3806,9 @@ func (m *Resources) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMcp
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -3354,7 +3828,7 @@ func (m *Resources) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= (int(b) & 0x7F) << shift
+				v |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -3369,9 +3843,13 @@ func (m *Resources) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthMcp
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthMcp
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -3435,10 +3913,13 @@ func skipMcp(dAtA []byte) (n int, err error) {
 					break
 				}
 			}
-			iNdEx += length
 			if length < 0 {
 				return 0, ErrInvalidLengthMcp
 			}
+			iNdEx += length
+			if iNdEx < 0 {
+				return 0, ErrInvalidLengthMcp
+			}
 			return iNdEx, nil
 		case 3:
 			for {
@@ -3467,6 +3948,9 @@ func skipMcp(dAtA []byte) (n int, err error) {
 					return 0, err
 				}
 				iNdEx = start + next
+				if iNdEx < 0 {
+					return 0, ErrInvalidLengthMcp
+				}
 			}
 			return iNdEx, nil
 		case 4:
@@ -3485,58 +3969,3 @@ var (
 	ErrInvalidLengthMcp = fmt.Errorf("proto: negative length found during unmarshaling")
 	ErrIntOverflowMcp   = fmt.Errorf("proto: integer overflow")
 )
-
-func init() { proto.RegisterFile("mcp/v1alpha1/mcp.proto", fileDescriptorMcp) }
-
-var fileDescriptorMcp = []byte{
-	// 774 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0xcd, 0x6e, 0xeb, 0x44,
-	0x14, 0xbe, 0xe3, 0x34, 0x97, 0xe4, 0xa4, 0x54, 0xe9, 0x50, 0x51, 0xc7, 0xf7, 0xde, 0x10, 0x22,
-	0x8a, 0x22, 0x55, 0x38, 0x6d, 0x10, 0x12, 0xb0, 0x40, 0xb4, 0xd0, 0x45, 0x91, 0x5a, 0x24, 0x47,
-	0x74, 0xc1, 0xc6, 0x72, 0xed, 0xa9, 0x3b, 0x8a, 0x33, 0x63, 0x66, 0x26, 0x91, 0xb2, 0x60, 0xc3,
-	0x0e, 0xf1, 0x0c, 0xec, 0x51, 0x79, 0x01, 0x1e, 0xa1, 0x4b, 0x16, 0xac, 0x11, 0xca, 0x92, 0xa7,
-	0x40, 0xfe, 0xab, 0x1d, 0xea, 0x26, 0x0d, 0x14, 0x89, 0x8d, 0x35, 0x73, 0xce, 0x99, 0xef, 0xfc,
-	0x7c, 0xdf, 0x8c, 0x0c, 0x6f, 0x8e, 0xdd, 0xb0, 0x3f, 0x3d, 0x74, 0x82, 0xf0, 0xda, 0x39, 0xec,
-	0x8f, 0xdd, 0xd0, 0x0c, 0x05, 0x57, 0x1c, 0x63, 0x2a, 0x15, 0xe5, 0x66, 0x64, 0xc8, 0xbc, 0xc6,
-	0xae, 0xcf, 0xb9, 0x1f, 0x90, 0xbe, 0x08, 0xdd, 0xbe, 0x54, 0x8e, 0x9a, 0xc8, 0x24, 0xd8, 0xd8,
-	0xf1, 0xb9, 0xcf, 0xe3, 0x65, 0x3f, 0x5a, 0xa5, 0xd6, 0x17, 0x0b, 0xd0, 0x82, 0x48, 0x3e, 0x11,
-	0x2e, 0x49, 0x9c, 0xdd, 0x9f, 0x11, 0xd4, 0x86, 0x94, 0x8d, 0xce, 0xb9, 0x47, 0xf0, 0x16, 0x68,
-	0xd4, 0xd3, 0x51, 0x07, 0xf5, 0xea, 0x96, 0x46, 0x3d, 0xfc, 0x25, 0x34, 0x1c, 0xc6, 0xb8, 0x72,
-	0x14, 0xe5, 0x4c, 0xea, 0x5a, 0xa7, 0xd2, 0x6b, 0x0c, 0xde, 0x33, 0xef, 0x97, 0x64, 0x66, 0x10,
-	0xe6, 0x51, 0x1e, 0x7f, 0xc2, 0x94, 0x98, 0x59, 0x45, 0x04, 0xe3, 0x13, 0x68, 0xfe, 0x3d, 0x00,
-	0x37, 0xa1, 0x32, 0x22, 0xb3, 0x34, 0x6b, 0xb4, 0xc4, 0x3b, 0x50, 0x9d, 0x3a, 0xc1, 0x84, 0xe8,
-	0x5a, 0x6c, 0x4b, 0x36, 0x1f, 0x6b, 0x1f, 0xa2, 0xee, 0x9f, 0x08, 0xb6, 0xcf, 0x88, 0xbc, 0xfe,
-	0x8c, 0xb3, 0x2b, 0xea, 0x5b, 0xe4, 0x9b, 0x09, 0x91, 0x0a, 0xbf, 0x0d, 0x9b, 0x53, 0x22, 0x24,
-	0xe5, 0xcc, 0xa6, 0xec, 0x8a, 0xa7, 0x50, 0x8d, 0xd4, 0x76, 0xca, 0xae, 0x38, 0xfe, 0x08, 0xea,
-	0x92, 0xb2, 0x91, 0xcd, 0xb8, 0x97, 0xc0, 0x36, 0x06, 0x2f, 0x97, 0xf5, 0x61, 0xd5, 0x64, 0x36,
-	0x94, 0x16, 0xd4, 0xd4, 0x2c, 0x24, 0xf6, 0x44, 0x04, 0x7a, 0x25, 0x46, 0x7e, 0x2d, 0xda, 0x7f,
-	0x25, 0x02, 0xbc, 0x07, 0x5b, 0x82, 0xc8, 0x90, 0x33, 0x49, 0x6c, 0xc6, 0x99, 0x4b, 0xf4, 0x8d,
-	0x38, 0xe0, 0xf5, 0xcc, 0x7a, 0x1e, 0x19, 0xf1, 0x07, 0xb0, 0x49, 0x84, 0xe0, 0xc2, 0xf6, 0x88,
-	0x72, 0x68, 0xa0, 0x57, 0xe3, 0xfc, 0xd8, 0x4c, 0x68, 0x34, 0x45, 0xe8, 0x9a, 0xc3, 0x98, 0x46,
-	0xab, 0x11, 0xc7, 0x7d, 0x1e, 0x87, 0x75, 0x6f, 0x10, 0xe0, 0x62, 0xb3, 0x09, 0xe4, 0x63, 0xba,
-	0xfd, 0x14, 0xea, 0x19, 0xcd, 0x19, 0x6b, 0xa5, 0xdd, 0x5a, 0x69, 0xd0, 0xf1, 0xc6, 0xed, 0xef,
-	0x6f, 0x3d, 0xb3, 0xf2, 0x43, 0xcb, 0x9a, 0xde, 0x81, 0x6a, 0xb1, 0xd7, 0x64, 0xd3, 0xbd, 0xa9,
-	0xc0, 0xcb, 0x53, 0xe6, 0x0a, 0x32, 0x26, 0x4c, 0x39, 0xc1, 0x7d, 0x92, 0x16, 0x18, 0x40, 0xff,
-	0x98, 0x01, 0x6d, 0xb1, 0x98, 0xef, 0x11, 0xb4, 0x28, 0xa3, 0x8a, 0x3a, 0x81, 0x9d, 0x55, 0x6f,
-	0xa7, 0xa3, 0x90, 0x7a, 0x25, 0x6e, 0xfd, 0xac, 0x2c, 0xcd, 0xb2, 0x5a, 0xcd, 0xd3, 0x04, 0x31,
-	0x1b, 0xcf, 0x45, 0x8a, 0x97, 0x08, 0x7a, 0x97, 0x96, 0x7b, 0xff, 0x5b, 0x35, 0x18, 0x5f, 0x44,
-	0xf3, 0x7d, 0xb8, 0xac, 0xb5, 0xae, 0xd1, 0x6f, 0x08, 0x5e, 0x3d, 0x30, 0x80, 0x54, 0x64, 0x26,
-	0xbc, 0x21, 0x67, 0x52, 0x91, 0xb1, 0x5d, 0xa2, 0xb5, 0xed, 0xc4, 0x75, 0xf1, 0xa4, 0x8a, 0xdb,
-	0x87, 0x6d, 0x41, 0xc6, 0x7c, 0x4a, 0x3c, 0x3b, 0x47, 0x8a, 0x08, 0xac, 0x5b, 0xcd, 0xd4, 0x61,
-	0xdd, 0x05, 0x97, 0x6b, 0xf0, 0x97, 0x0a, 0x34, 0x53, 0x0a, 0xf3, 0xd0, 0x7f, 0xa1, 0xbb, 0x36,
-	0x80, 0xcb, 0x83, 0x80, 0xb8, 0xd1, 0x6b, 0x95, 0x4e, 0xb1, 0x60, 0xc1, 0xdf, 0xae, 0xd6, 0xde,
-	0x51, 0xf9, 0x10, 0x16, 0x6b, 0xfc, 0x3f, 0xea, 0x0d, 0x77, 0xa0, 0x41, 0x73, 0x89, 0xe8, 0xcf,
-	0x3b, 0xa8, 0x57, 0xb3, 0x8a, 0xa6, 0x27, 0x55, 0xe4, 0x77, 0x1a, 0xd4, 0x73, 0xce, 0xd6, 0x55,
-	0xdf, 0x2a, 0xa2, 0x16, 0xd4, 0x59, 0x79, 0x32, 0x75, 0x6e, 0xac, 0x52, 0x67, 0xb5, 0xa0, 0xce,
-	0xd5, 0x03, 0x1d, 0xfc, 0xa8, 0xc1, 0x8b, 0x23, 0xdf, 0x17, 0xc4, 0x77, 0x14, 0xf1, 0xf2, 0x5b,
-	0x39, 0x24, 0x62, 0x4a, 0x5d, 0x82, 0x43, 0x68, 0x0d, 0x95, 0x20, 0xce, 0x38, 0x0f, 0xca, 0x93,
-	0xee, 0x95, 0x35, 0x74, 0xef, 0x69, 0x33, 0xde, 0x5d, 0x15, 0x96, 0x48, 0xa7, 0xfb, 0xac, 0x87,
-	0x0e, 0x10, 0xfe, 0x01, 0x41, 0xbb, 0xf0, 0x50, 0x94, 0xe5, 0x3d, 0x58, 0xf7, 0x75, 0x35, 0x0e,
-	0xd7, 0x38, 0x51, 0xac, 0x66, 0x30, 0x85, 0xad, 0x2c, 0xef, 0x30, 0xfe, 0x62, 0x0f, 0x76, 0x4f,
-	0xa4, 0x72, 0x2e, 0x03, 0x2a, 0xaf, 0xef, 0x5c, 0xf1, 0x88, 0xf0, 0x3b, 0x8f, 0xb9, 0x79, 0xc6,
-	0xab, 0x65, 0x32, 0x90, 0x69, 0x5e, 0x05, 0x9b, 0x77, 0xe0, 0x94, 0x8d, 0x96, 0x65, 0x5d, 0x8e,
-	0x67, 0x3c, 0xaa, 0xa8, 0x24, 0xeb, 0xf1, 0xfe, 0x4f, 0xf3, 0x36, 0xba, 0x9d, 0xb7, 0xd1, 0xaf,
-	0xf3, 0x36, 0xfa, 0x63, 0xde, 0x46, 0x5f, 0xb7, 0x92, 0xc3, 0x94, 0xf7, 0x9d, 0x90, 0xf6, 0x8b,
-	0x7f, 0x75, 0x97, 0xcf, 0xe3, 0xbf, 0xb9, 0xf7, 0xff, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x4e, 0x31,
-	0xdd, 0xdb, 0x47, 0x0a, 0x00, 0x00,
-}
diff --git a/mcp/v1alpha1/metadata.pb.go b/mcp/v1alpha1/metadata.pb.go
index bdd4632a26e..91534a30e7b 100644
--- a/mcp/v1alpha1/metadata.pb.go
+++ b/mcp/v1alpha1/metadata.pb.go
@@ -3,20 +3,27 @@
 
 package v1alpha1
 
-import proto "github.com/gogo/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import _ "github.com/gogo/protobuf/gogoproto"
-import google_protobuf2 "github.com/gogo/protobuf/types"
-import _ "github.com/gogo/protobuf/types"
-
-import io "io"
+import (
+	bytes "bytes"
+	fmt "fmt"
+	_ "github.com/gogo/protobuf/gogoproto"
+	proto "github.com/gogo/protobuf/proto"
+	types "github.com/gogo/protobuf/types"
+	io "io"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
 var _ = fmt.Errorf
 var _ = math.Inf
 
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package
+
 // Metadata information that all resources within the Mesh Configuration Protocol must have.
 type Metadata struct {
 	// Fully qualified name of the resource. Unique in context of a collection.
@@ -53,22 +60,53 @@ type Metadata struct {
 	//    "/"
 	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
 	// The creation timestamp of the resource.
-	CreateTime *google_protobuf2.Timestamp `protobuf:"bytes,2,opt,name=create_time,json=createTime" json:"create_time,omitempty"`
+	CreateTime *types.Timestamp `protobuf:"bytes,2,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
 	// Resource version. This is used to determine when resources change across
 	// resource updates. It should be treated as opaque by consumers/sinks.
 	Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
 	// Map of string keys and values that can be used to organize and categorize
 	// resources within a collection.
-	Labels map[string]string `protobuf:"bytes,4,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	Labels map[string]string `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
 	// Map of string keys and values that can be used by source and sink to communicate
 	// arbitrary metadata about this resource.
-	Annotations map[string]string `protobuf:"bytes,5,rep,name=annotations" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	Annotations          map[string]string `protobuf:"bytes,5,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
+	XXX_unrecognized     []byte            `json:"-"`
+	XXX_sizecache        int32             `json:"-"`
+}
+
+func (m *Metadata) Reset()         { *m = Metadata{} }
+func (m *Metadata) String() string { return proto.CompactTextString(m) }
+func (*Metadata) ProtoMessage()    {}
+func (*Metadata) Descriptor() ([]byte, []int) {
+	return fileDescriptor_12ba26a99e116dc7, []int{0}
+}
+func (m *Metadata) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *Metadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_Metadata.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *Metadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Metadata.Merge(m, src)
+}
+func (m *Metadata) XXX_Size() int {
+	return m.Size()
+}
+func (m *Metadata) XXX_DiscardUnknown() {
+	xxx_messageInfo_Metadata.DiscardUnknown(m)
 }
 
-func (m *Metadata) Reset()                    { *m = Metadata{} }
-func (m *Metadata) String() string            { return proto.CompactTextString(m) }
-func (*Metadata) ProtoMessage()               {}
-func (*Metadata) Descriptor() ([]byte, []int) { return fileDescriptorMetadata, []int{0} }
+var xxx_messageInfo_Metadata proto.InternalMessageInfo
 
 func (m *Metadata) GetName() string {
 	if m != nil {
@@ -77,7 +115,7 @@ func (m *Metadata) GetName() string {
 	return ""
 }
 
-func (m *Metadata) GetCreateTime() *google_protobuf2.Timestamp {
+func (m *Metadata) GetCreateTime() *types.Timestamp {
 	if m != nil {
 		return m.CreateTime
 	}
@@ -107,7 +145,37 @@ func (m *Metadata) GetAnnotations() map[string]string {
 
 func init() {
 	proto.RegisterType((*Metadata)(nil), "istio.mcp.v1alpha1.Metadata")
+	proto.RegisterMapType((map[string]string)(nil), "istio.mcp.v1alpha1.Metadata.AnnotationsEntry")
+	proto.RegisterMapType((map[string]string)(nil), "istio.mcp.v1alpha1.Metadata.LabelsEntry")
+}
+
+func init() { proto.RegisterFile("mcp/v1alpha1/metadata.proto", fileDescriptor_12ba26a99e116dc7) }
+
+var fileDescriptor_12ba26a99e116dc7 = []byte{
+	// 335 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0xcf, 0x4a, 0xf3, 0x40,
+	0x10, 0xc0, 0xd9, 0xa6, 0xed, 0xf7, 0x75, 0x73, 0x29, 0x4b, 0x0f, 0x31, 0x4a, 0x2c, 0x9e, 0x02,
+	0xe2, 0x2e, 0xad, 0x17, 0xff, 0x80, 0xa8, 0xe0, 0x4d, 0x11, 0x82, 0x27, 0x2f, 0x32, 0x8d, 0x6b,
+	0x5c, 0x4c, 0xb2, 0x21, 0xbb, 0x2d, 0xf4, 0xec, 0xcb, 0xf8, 0x28, 0x1e, 0x7d, 0x04, 0xc9, 0x93,
+	0x48, 0x76, 0x13, 0x0c, 0x15, 0x04, 0x6f, 0x33, 0x99, 0xdf, 0xfc, 0x26, 0x33, 0x2c, 0xde, 0xce,
+	0xe2, 0x82, 0xad, 0x66, 0x90, 0x16, 0xcf, 0x30, 0x63, 0x19, 0xd7, 0xf0, 0x08, 0x1a, 0x68, 0x51,
+	0x4a, 0x2d, 0x09, 0x11, 0x4a, 0x0b, 0x49, 0xb3, 0xb8, 0xa0, 0x2d, 0xe2, 0x4f, 0x12, 0x99, 0x48,
+	0x53, 0x66, 0x75, 0x64, 0x49, 0x7f, 0x37, 0x91, 0x32, 0x49, 0x39, 0x33, 0xd9, 0x62, 0xf9, 0xc4,
+	0xb4, 0xc8, 0xb8, 0xd2, 0x90, 0x15, 0x0d, 0xb0, 0xb3, 0x09, 0x28, 0x5d, 0x2e, 0x63, 0x6d, 0xab,
+	0x7b, 0xaf, 0x0e, 0xfe, 0x7f, 0xd3, 0xcc, 0x26, 0x04, 0xf7, 0x73, 0xc8, 0xb8, 0x87, 0xa6, 0x28,
+	0x1c, 0x45, 0x26, 0x26, 0xa7, 0xd8, 0x8d, 0x4b, 0x0e, 0x9a, 0x3f, 0xd4, 0x62, 0xaf, 0x37, 0x45,
+	0xa1, 0x3b, 0xf7, 0xa9, 0x95, 0xd2, 0x56, 0x4a, 0xef, 0xda, 0xa9, 0x11, 0xb6, 0x78, 0xfd, 0x81,
+	0x78, 0xf8, 0xdf, 0x8a, 0x97, 0x4a, 0xc8, 0xdc, 0x73, 0x8c, 0xb3, 0x4d, 0xc9, 0x39, 0x1e, 0xa6,
+	0xb0, 0xe0, 0xa9, 0xf2, 0xfa, 0x53, 0x27, 0x74, 0xe7, 0x21, 0xfd, 0xb9, 0x31, 0x6d, 0x7f, 0x8c,
+	0x5e, 0x1b, 0xf4, 0x2a, 0xd7, 0xe5, 0x3a, 0x6a, 0xfa, 0xc8, 0x2d, 0x76, 0x21, 0xcf, 0xa5, 0x06,
+	0x2d, 0x64, 0xae, 0xbc, 0x81, 0xd1, 0x1c, 0xfc, 0xaa, 0xb9, 0xf8, 0xe6, 0xad, 0xab, 0x6b, 0xf0,
+	0x8f, 0xb1, 0xdb, 0x99, 0x43, 0xc6, 0xd8, 0x79, 0xe1, 0xeb, 0xe6, 0x16, 0x75, 0x48, 0x26, 0x78,
+	0xb0, 0x82, 0x74, 0x69, 0x8f, 0x30, 0x8a, 0x6c, 0x72, 0xd2, 0x3b, 0x42, 0xfe, 0x19, 0x1e, 0x6f,
+	0xba, 0xff, 0xd2, 0x7f, 0xb9, 0xff, 0x56, 0x05, 0xe8, 0xbd, 0x0a, 0xd0, 0x47, 0x15, 0xa0, 0xcf,
+	0x2a, 0x40, 0xf7, 0x5b, 0x76, 0x0f, 0x21, 0x19, 0x14, 0x82, 0x75, 0x9f, 0xca, 0x62, 0x68, 0x8e,
+	0x7e, 0xf8, 0x15, 0x00, 0x00, 0xff, 0xff, 0xdf, 0x5a, 0x3a, 0xeb, 0x41, 0x02, 0x00, 0x00,
 }
+
 func (this *Metadata) Equal(that interface{}) bool {
 	if that == nil {
 		return this == nil
@@ -152,6 +220,9 @@ func (this *Metadata) Equal(that interface{}) bool {
 			return false
 		}
 	}
+	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
+		return false
+	}
 	return true
 }
 func (m *Metadata) Marshal() (dAtA []byte, err error) {
@@ -225,6 +296,9 @@ func (m *Metadata) MarshalTo(dAtA []byte) (int, error) {
 			i += copy(dAtA[i:], v)
 		}
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -238,6 +312,9 @@ func encodeVarintMetadata(dAtA []byte, offset int, v uint64) int {
 	return offset + 1
 }
 func (m *Metadata) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.Name)
@@ -268,6 +345,9 @@ func (m *Metadata) Size() (n int) {
 			n += mapEntrySize + 1 + sovMetadata(uint64(mapEntrySize))
 		}
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
@@ -299,7 +379,7 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -327,7 +407,7 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -337,6 +417,9 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMetadata
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthMetadata
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -356,7 +439,7 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -365,11 +448,14 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMetadata
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthMetadata
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
 			if m.CreateTime == nil {
-				m.CreateTime = &google_protobuf2.Timestamp{}
+				m.CreateTime = &types.Timestamp{}
 			}
 			if err := m.CreateTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
 				return err
@@ -389,7 +475,7 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -399,6 +485,9 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMetadata
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthMetadata
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -418,7 +507,7 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -427,6 +516,9 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMetadata
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthMetadata
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -447,7 +539,7 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 					}
 					b := dAtA[iNdEx]
 					iNdEx++
-					wire |= (uint64(b) & 0x7F) << shift
+					wire |= uint64(b&0x7F) << shift
 					if b < 0x80 {
 						break
 					}
@@ -464,7 +556,7 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 						}
 						b := dAtA[iNdEx]
 						iNdEx++
-						stringLenmapkey |= (uint64(b) & 0x7F) << shift
+						stringLenmapkey |= uint64(b&0x7F) << shift
 						if b < 0x80 {
 							break
 						}
@@ -474,6 +566,9 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 						return ErrInvalidLengthMetadata
 					}
 					postStringIndexmapkey := iNdEx + intStringLenmapkey
+					if postStringIndexmapkey < 0 {
+						return ErrInvalidLengthMetadata
+					}
 					if postStringIndexmapkey > l {
 						return io.ErrUnexpectedEOF
 					}
@@ -490,7 +585,7 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 						}
 						b := dAtA[iNdEx]
 						iNdEx++
-						stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+						stringLenmapvalue |= uint64(b&0x7F) << shift
 						if b < 0x80 {
 							break
 						}
@@ -500,6 +595,9 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 						return ErrInvalidLengthMetadata
 					}
 					postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+					if postStringIndexmapvalue < 0 {
+						return ErrInvalidLengthMetadata
+					}
 					if postStringIndexmapvalue > l {
 						return io.ErrUnexpectedEOF
 					}
@@ -536,7 +634,7 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -545,6 +643,9 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthMetadata
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthMetadata
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -565,7 +666,7 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 					}
 					b := dAtA[iNdEx]
 					iNdEx++
-					wire |= (uint64(b) & 0x7F) << shift
+					wire |= uint64(b&0x7F) << shift
 					if b < 0x80 {
 						break
 					}
@@ -582,7 +683,7 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 						}
 						b := dAtA[iNdEx]
 						iNdEx++
-						stringLenmapkey |= (uint64(b) & 0x7F) << shift
+						stringLenmapkey |= uint64(b&0x7F) << shift
 						if b < 0x80 {
 							break
 						}
@@ -592,6 +693,9 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 						return ErrInvalidLengthMetadata
 					}
 					postStringIndexmapkey := iNdEx + intStringLenmapkey
+					if postStringIndexmapkey < 0 {
+						return ErrInvalidLengthMetadata
+					}
 					if postStringIndexmapkey > l {
 						return io.ErrUnexpectedEOF
 					}
@@ -608,7 +712,7 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 						}
 						b := dAtA[iNdEx]
 						iNdEx++
-						stringLenmapvalue |= (uint64(b) & 0x7F) << shift
+						stringLenmapvalue |= uint64(b&0x7F) << shift
 						if b < 0x80 {
 							break
 						}
@@ -618,6 +722,9 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 						return ErrInvalidLengthMetadata
 					}
 					postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+					if postStringIndexmapvalue < 0 {
+						return ErrInvalidLengthMetadata
+					}
 					if postStringIndexmapvalue > l {
 						return io.ErrUnexpectedEOF
 					}
@@ -649,9 +756,13 @@ func (m *Metadata) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthMetadata
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthMetadata
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -715,10 +826,13 @@ func skipMetadata(dAtA []byte) (n int, err error) {
 					break
 				}
 			}
-			iNdEx += length
 			if length < 0 {
 				return 0, ErrInvalidLengthMetadata
 			}
+			iNdEx += length
+			if iNdEx < 0 {
+				return 0, ErrInvalidLengthMetadata
+			}
 			return iNdEx, nil
 		case 3:
 			for {
@@ -747,6 +861,9 @@ func skipMetadata(dAtA []byte) (n int, err error) {
 					return 0, err
 				}
 				iNdEx = start + next
+				if iNdEx < 0 {
+					return 0, ErrInvalidLengthMetadata
+				}
 			}
 			return iNdEx, nil
 		case 4:
@@ -765,30 +882,3 @@ var (
 	ErrInvalidLengthMetadata = fmt.Errorf("proto: negative length found during unmarshaling")
 	ErrIntOverflowMetadata   = fmt.Errorf("proto: integer overflow")
 )
-
-func init() { proto.RegisterFile("mcp/v1alpha1/metadata.proto", fileDescriptorMetadata) }
-
-var fileDescriptorMetadata = []byte{
-	// 335 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0xcf, 0x4a, 0xf3, 0x40,
-	0x10, 0xc0, 0xd9, 0xa6, 0xed, 0xf7, 0x75, 0x73, 0x29, 0x4b, 0x0f, 0x31, 0x4a, 0x2c, 0x9e, 0x02,
-	0xe2, 0x2e, 0xad, 0x17, 0xff, 0x80, 0xa8, 0xe0, 0x4d, 0x11, 0x82, 0x27, 0x2f, 0x32, 0x8d, 0x6b,
-	0x5c, 0x4c, 0xb2, 0x21, 0xbb, 0x2d, 0xf4, 0xec, 0xcb, 0xf8, 0x28, 0x1e, 0x7d, 0x04, 0xc9, 0x93,
-	0x48, 0x76, 0x13, 0x0c, 0x15, 0x04, 0x6f, 0x33, 0x99, 0xdf, 0xfc, 0x26, 0x33, 0x2c, 0xde, 0xce,
-	0xe2, 0x82, 0xad, 0x66, 0x90, 0x16, 0xcf, 0x30, 0x63, 0x19, 0xd7, 0xf0, 0x08, 0x1a, 0x68, 0x51,
-	0x4a, 0x2d, 0x09, 0x11, 0x4a, 0x0b, 0x49, 0xb3, 0xb8, 0xa0, 0x2d, 0xe2, 0x4f, 0x12, 0x99, 0x48,
-	0x53, 0x66, 0x75, 0x64, 0x49, 0x7f, 0x37, 0x91, 0x32, 0x49, 0x39, 0x33, 0xd9, 0x62, 0xf9, 0xc4,
-	0xb4, 0xc8, 0xb8, 0xd2, 0x90, 0x15, 0x0d, 0xb0, 0xb3, 0x09, 0x28, 0x5d, 0x2e, 0x63, 0x6d, 0xab,
-	0x7b, 0xaf, 0x0e, 0xfe, 0x7f, 0xd3, 0xcc, 0x26, 0x04, 0xf7, 0x73, 0xc8, 0xb8, 0x87, 0xa6, 0x28,
-	0x1c, 0x45, 0x26, 0x26, 0xa7, 0xd8, 0x8d, 0x4b, 0x0e, 0x9a, 0x3f, 0xd4, 0x62, 0xaf, 0x37, 0x45,
-	0xa1, 0x3b, 0xf7, 0xa9, 0x95, 0xd2, 0x56, 0x4a, 0xef, 0xda, 0xa9, 0x11, 0xb6, 0x78, 0xfd, 0x81,
-	0x78, 0xf8, 0xdf, 0x8a, 0x97, 0x4a, 0xc8, 0xdc, 0x73, 0x8c, 0xb3, 0x4d, 0xc9, 0x39, 0x1e, 0xa6,
-	0xb0, 0xe0, 0xa9, 0xf2, 0xfa, 0x53, 0x27, 0x74, 0xe7, 0x21, 0xfd, 0xb9, 0x31, 0x6d, 0x7f, 0x8c,
-	0x5e, 0x1b, 0xf4, 0x2a, 0xd7, 0xe5, 0x3a, 0x6a, 0xfa, 0xc8, 0x2d, 0x76, 0x21, 0xcf, 0xa5, 0x06,
-	0x2d, 0x64, 0xae, 0xbc, 0x81, 0xd1, 0x1c, 0xfc, 0xaa, 0xb9, 0xf8, 0xe6, 0xad, 0xab, 0x6b, 0xf0,
-	0x8f, 0xb1, 0xdb, 0x99, 0x43, 0xc6, 0xd8, 0x79, 0xe1, 0xeb, 0xe6, 0x16, 0x75, 0x48, 0x26, 0x78,
-	0xb0, 0x82, 0x74, 0x69, 0x8f, 0x30, 0x8a, 0x6c, 0x72, 0xd2, 0x3b, 0x42, 0xfe, 0x19, 0x1e, 0x6f,
-	0xba, 0xff, 0xd2, 0x7f, 0xb9, 0xff, 0x56, 0x05, 0xe8, 0xbd, 0x0a, 0xd0, 0x47, 0x15, 0xa0, 0xcf,
-	0x2a, 0x40, 0xf7, 0x5b, 0x76, 0x0f, 0x21, 0x19, 0x14, 0x82, 0x75, 0x9f, 0xca, 0x62, 0x68, 0x8e,
-	0x7e, 0xf8, 0x15, 0x00, 0x00, 0xff, 0xff, 0xdf, 0x5a, 0x3a, 0xeb, 0x41, 0x02, 0x00, 0x00,
-}
diff --git a/mcp/v1alpha1/resource.pb.go b/mcp/v1alpha1/resource.pb.go
index 9ea11cf6d3e..53c10d90d11 100644
--- a/mcp/v1alpha1/resource.pb.go
+++ b/mcp/v1alpha1/resource.pb.go
@@ -1,34 +1,75 @@
 // Code generated by protoc-gen-gogo. DO NOT EDIT.
 // source: mcp/v1alpha1/resource.proto
 
-package v1alpha1
+// This package defines the common, core types used by the Mesh Configuration Protocol.
 
-import proto "github.com/gogo/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import google_protobuf "github.com/gogo/protobuf/types"
-import _ "github.com/gogo/protobuf/gogoproto"
+package v1alpha1
 
-import io "io"
+import (
+	bytes "bytes"
+	fmt "fmt"
+	_ "github.com/gogo/protobuf/gogoproto"
+	proto "github.com/gogo/protobuf/proto"
+	types "github.com/gogo/protobuf/types"
+	io "io"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
 var _ = fmt.Errorf
 var _ = math.Inf
 
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package
+
 // Resource as transferred via the Mesh Configuration Protocol. Each
 // resource is made up of common metadata, and a type-specific resource payload.
 type Resource struct {
 	// Common metadata describing the resource.
-	Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata" json:"metadata,omitempty"`
+	Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
 	// The primary payload for the resource.
-	Body *google_protobuf.Any `protobuf:"bytes,2,opt,name=body" json:"body,omitempty"`
+	Body                 *types.Any `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
+	XXX_unrecognized     []byte     `json:"-"`
+	XXX_sizecache        int32      `json:"-"`
 }
 
-func (m *Resource) Reset()                    { *m = Resource{} }
-func (m *Resource) String() string            { return proto.CompactTextString(m) }
-func (*Resource) ProtoMessage()               {}
-func (*Resource) Descriptor() ([]byte, []int) { return fileDescriptorResource, []int{0} }
+func (m *Resource) Reset()         { *m = Resource{} }
+func (m *Resource) String() string { return proto.CompactTextString(m) }
+func (*Resource) ProtoMessage()    {}
+func (*Resource) Descriptor() ([]byte, []int) {
+	return fileDescriptor_d75ce896e5708e1a, []int{0}
+}
+func (m *Resource) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *Resource) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_Resource.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *Resource) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Resource.Merge(m, src)
+}
+func (m *Resource) XXX_Size() int {
+	return m.Size()
+}
+func (m *Resource) XXX_DiscardUnknown() {
+	xxx_messageInfo_Resource.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Resource proto.InternalMessageInfo
 
 func (m *Resource) GetMetadata() *Metadata {
 	if m != nil {
@@ -37,7 +78,7 @@ func (m *Resource) GetMetadata() *Metadata {
 	return nil
 }
 
-func (m *Resource) GetBody() *google_protobuf.Any {
+func (m *Resource) GetBody() *types.Any {
 	if m != nil {
 		return m.Body
 	}
@@ -47,6 +88,26 @@ func (m *Resource) GetBody() *google_protobuf.Any {
 func init() {
 	proto.RegisterType((*Resource)(nil), "istio.mcp.v1alpha1.Resource")
 }
+
+func init() { proto.RegisterFile("mcp/v1alpha1/resource.proto", fileDescriptor_d75ce896e5708e1a) }
+
+var fileDescriptor_d75ce896e5708e1a = []byte{
+	// 207 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xce, 0x4d, 0x2e, 0xd0,
+	0x2f, 0x33, 0x4c, 0xcc, 0x29, 0xc8, 0x48, 0x34, 0xd4, 0x2f, 0x4a, 0x2d, 0xce, 0x2f, 0x2d, 0x4a,
+	0x4e, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0xca, 0x2c, 0x2e, 0xc9, 0xcc, 0xd7, 0xcb,
+	0x4d, 0x2e, 0xd0, 0x83, 0x29, 0x91, 0x92, 0x4c, 0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0xd5, 0x07, 0xab,
+	0x48, 0x2a, 0x4d, 0xd3, 0x4f, 0xcc, 0xab, 0x84, 0x28, 0x97, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07,
+	0x33, 0xf5, 0x41, 0x2c, 0xa8, 0x28, 0xaa, 0x0d, 0xb9, 0xa9, 0x25, 0x89, 0x29, 0x89, 0x25, 0x89,
+	0x10, 0x49, 0xa5, 0x3c, 0x2e, 0x8e, 0x20, 0xa8, 0x9d, 0x42, 0x16, 0x5c, 0x1c, 0x30, 0x59, 0x09,
+	0x46, 0x05, 0x46, 0x0d, 0x6e, 0x23, 0x19, 0x3d, 0x4c, 0x07, 0xe8, 0xf9, 0x42, 0xd5, 0x04, 0xc1,
+	0x55, 0x0b, 0x69, 0x70, 0xb1, 0x24, 0xe5, 0xa7, 0x54, 0x4a, 0x30, 0x81, 0x75, 0x89, 0xe8, 0x41,
+	0x9c, 0xa8, 0x07, 0x73, 0xa2, 0x9e, 0x63, 0x5e, 0x65, 0x10, 0x58, 0x85, 0x93, 0xf6, 0x8a, 0x47,
+	0x72, 0x8c, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0x63, 0x94,
+	0x24, 0xc4, 0x8a, 0xcc, 0x7c, 0xfd, 0xc4, 0x82, 0x4c, 0x7d, 0x64, 0xb7, 0x26, 0xb1, 0x81, 0x0d,
+	0x30, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0xd3, 0xae, 0x63, 0x31, 0x24, 0x01, 0x00, 0x00,
+}
+
 func (this *Resource) Equal(that interface{}) bool {
 	if that == nil {
 		return this == nil
@@ -72,6 +133,9 @@ func (this *Resource) Equal(that interface{}) bool {
 	if !this.Body.Equal(that1.Body) {
 		return false
 	}
+	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
+		return false
+	}
 	return true
 }
 func (m *Resource) Marshal() (dAtA []byte, err error) {
@@ -109,6 +173,9 @@ func (m *Resource) MarshalTo(dAtA []byte) (int, error) {
 		}
 		i += n2
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -122,6 +189,9 @@ func encodeVarintResource(dAtA []byte, offset int, v uint64) int {
 	return offset + 1
 }
 func (m *Resource) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	if m.Metadata != nil {
@@ -132,6 +202,9 @@ func (m *Resource) Size() (n int) {
 		l = m.Body.Size()
 		n += 1 + l + sovResource(uint64(l))
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
@@ -163,7 +236,7 @@ func (m *Resource) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -191,7 +264,7 @@ func (m *Resource) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -200,6 +273,9 @@ func (m *Resource) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthResource
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthResource
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -224,7 +300,7 @@ func (m *Resource) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -233,11 +309,14 @@ func (m *Resource) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthResource
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthResource
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
 			if m.Body == nil {
-				m.Body = &google_protobuf.Any{}
+				m.Body = &types.Any{}
 			}
 			if err := m.Body.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
 				return err
@@ -252,9 +331,13 @@ func (m *Resource) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthResource
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthResource
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -318,10 +401,13 @@ func skipResource(dAtA []byte) (n int, err error) {
 					break
 				}
 			}
-			iNdEx += length
 			if length < 0 {
 				return 0, ErrInvalidLengthResource
 			}
+			iNdEx += length
+			if iNdEx < 0 {
+				return 0, ErrInvalidLengthResource
+			}
 			return iNdEx, nil
 		case 3:
 			for {
@@ -350,6 +436,9 @@ func skipResource(dAtA []byte) (n int, err error) {
 					return 0, err
 				}
 				iNdEx = start + next
+				if iNdEx < 0 {
+					return 0, ErrInvalidLengthResource
+				}
 			}
 			return iNdEx, nil
 		case 4:
@@ -368,22 +457,3 @@ var (
 	ErrInvalidLengthResource = fmt.Errorf("proto: negative length found during unmarshaling")
 	ErrIntOverflowResource   = fmt.Errorf("proto: integer overflow")
 )
-
-func init() { proto.RegisterFile("mcp/v1alpha1/resource.proto", fileDescriptorResource) }
-
-var fileDescriptorResource = []byte{
-	// 207 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xce, 0x4d, 0x2e, 0xd0,
-	0x2f, 0x33, 0x4c, 0xcc, 0x29, 0xc8, 0x48, 0x34, 0xd4, 0x2f, 0x4a, 0x2d, 0xce, 0x2f, 0x2d, 0x4a,
-	0x4e, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0xca, 0x2c, 0x2e, 0xc9, 0xcc, 0xd7, 0xcb,
-	0x4d, 0x2e, 0xd0, 0x83, 0x29, 0x91, 0x92, 0x4c, 0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0xd5, 0x07, 0xab,
-	0x48, 0x2a, 0x4d, 0xd3, 0x4f, 0xcc, 0xab, 0x84, 0x28, 0x97, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07,
-	0x33, 0xf5, 0x41, 0x2c, 0xa8, 0x28, 0xaa, 0x0d, 0xb9, 0xa9, 0x25, 0x89, 0x29, 0x89, 0x25, 0x89,
-	0x10, 0x49, 0xa5, 0x3c, 0x2e, 0x8e, 0x20, 0xa8, 0x9d, 0x42, 0x16, 0x5c, 0x1c, 0x30, 0x59, 0x09,
-	0x46, 0x05, 0x46, 0x0d, 0x6e, 0x23, 0x19, 0x3d, 0x4c, 0x07, 0xe8, 0xf9, 0x42, 0xd5, 0x04, 0xc1,
-	0x55, 0x0b, 0x69, 0x70, 0xb1, 0x24, 0xe5, 0xa7, 0x54, 0x4a, 0x30, 0x81, 0x75, 0x89, 0xe8, 0x41,
-	0x9c, 0xa8, 0x07, 0x73, 0xa2, 0x9e, 0x63, 0x5e, 0x65, 0x10, 0x58, 0x85, 0x93, 0xf6, 0x8a, 0x47,
-	0x72, 0x8c, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0x63, 0x94,
-	0x24, 0xc4, 0x8a, 0xcc, 0x7c, 0xfd, 0xc4, 0x82, 0x4c, 0x7d, 0x64, 0xb7, 0x26, 0xb1, 0x81, 0x0d,
-	0x30, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0xd3, 0xae, 0x63, 0x31, 0x24, 0x01, 0x00, 0x00,
-}
diff --git a/mesh/v1alpha1/config.pb.go b/mesh/v1alpha1/config.pb.go
index 871d88fce23..2adfe66184f 100644
--- a/mesh/v1alpha1/config.pb.go
+++ b/mesh/v1alpha1/config.pb.go
@@ -1,34 +1,18 @@
 // Code generated by protoc-gen-gogo. DO NOT EDIT.
 // source: mesh/v1alpha1/config.proto
 
-/*
-	Package v1alpha1 is a generated protocol buffer package.
-
-	Configuration affecting the service mesh as a whole.
-
-	It is generated from these files:
-		mesh/v1alpha1/config.proto
-		mesh/v1alpha1/network.proto
-		mesh/v1alpha1/proxy.proto
-
-	It has these top-level messages:
-		MeshConfig
-		ConfigSource
-		LocalityLoadBalancerSetting
-		Network
-		MeshNetworks
-		Tracing
-		ProxyConfig
-*/
-package v1alpha1
+// Configuration affecting the service mesh as a whole.
 
-import proto "github.com/gogo/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import google_protobuf "github.com/gogo/protobuf/types"
-import istio_networking_v1alpha31 "istio.io/api/networking/v1alpha3"
+package v1alpha1
 
-import io "io"
+import (
+	fmt "fmt"
+	proto "github.com/gogo/protobuf/proto"
+	types "github.com/gogo/protobuf/types"
+	io "io"
+	v1alpha3 "istio.io/api/networking/v1alpha3"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -50,7 +34,7 @@ const (
 	// contain any annotation or whose annotations match the value
 	// specified in the ingress_class parameter described earlier. Use this
 	// mode if Istio ingress controller will be the default ingress
-	// controller for the entire kubernetes cluster.
+	// controller for the entireKubernetes cluster.
 	MeshConfig_DEFAULT MeshConfig_IngressControllerMode = 1
 	// Istio ingress controller will only act on ingress resources whose
 	// annotations match the value specified in the ingress_class parameter
@@ -65,6 +49,7 @@ var MeshConfig_IngressControllerMode_name = map[int32]string{
 	1: "DEFAULT",
 	2: "STRICT",
 }
+
 var MeshConfig_IngressControllerMode_value = map[string]int32{
 	"OFF":     0,
 	"DEFAULT": 1,
@@ -74,8 +59,9 @@ var MeshConfig_IngressControllerMode_value = map[string]int32{
 func (x MeshConfig_IngressControllerMode) String() string {
 	return proto.EnumName(MeshConfig_IngressControllerMode_name, int32(x))
 }
+
 func (MeshConfig_IngressControllerMode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptorConfig, []int{0, 0}
+	return fileDescriptor_b5c7ece76d5d5022, []int{0, 0}
 }
 
 // $hide_from_docs
@@ -90,6 +76,7 @@ var MeshConfig_AuthPolicy_name = map[int32]string{
 	0: "NONE",
 	1: "MUTUAL_TLS",
 }
+
 var MeshConfig_AuthPolicy_value = map[string]int32{
 	"NONE":       0,
 	"MUTUAL_TLS": 1,
@@ -98,8 +85,9 @@ var MeshConfig_AuthPolicy_value = map[string]int32{
 func (x MeshConfig_AuthPolicy) String() string {
 	return proto.EnumName(MeshConfig_AuthPolicy_name, int32(x))
 }
+
 func (MeshConfig_AuthPolicy) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptorConfig, []int{0, 1}
+	return fileDescriptor_b5c7ece76d5d5022, []int{0, 1}
 }
 
 type MeshConfig_AccessLogEncoding int32
@@ -113,6 +101,7 @@ var MeshConfig_AccessLogEncoding_name = map[int32]string{
 	0: "TEXT",
 	1: "JSON",
 }
+
 var MeshConfig_AccessLogEncoding_value = map[string]int32{
 	"TEXT": 0,
 	"JSON": 1,
@@ -121,8 +110,9 @@ var MeshConfig_AccessLogEncoding_value = map[string]int32{
 func (x MeshConfig_AccessLogEncoding) String() string {
 	return proto.EnumName(MeshConfig_AccessLogEncoding_name, int32(x))
 }
+
 func (MeshConfig_AccessLogEncoding) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptorConfig, []int{0, 2}
+	return fileDescriptor_b5c7ece76d5d5022, []int{0, 2}
 }
 
 type MeshConfig_OutboundTrafficPolicy_Mode int32
@@ -140,6 +130,7 @@ var MeshConfig_OutboundTrafficPolicy_Mode_name = map[int32]string{
 	0: "REGISTRY_ONLY",
 	1: "ALLOW_ANY",
 }
+
 var MeshConfig_OutboundTrafficPolicy_Mode_value = map[string]int32{
 	"REGISTRY_ONLY": 0,
 	"ALLOW_ANY":     1,
@@ -148,8 +139,9 @@ var MeshConfig_OutboundTrafficPolicy_Mode_value = map[string]int32{
 func (x MeshConfig_OutboundTrafficPolicy_Mode) String() string {
 	return proto.EnumName(MeshConfig_OutboundTrafficPolicy_Mode_name, int32(x))
 }
+
 func (MeshConfig_OutboundTrafficPolicy_Mode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptorConfig, []int{0, 0, 0}
+	return fileDescriptor_b5c7ece76d5d5022, []int{0, 0, 0}
 }
 
 // MeshConfig defines mesh-wide variables shared by all Envoy instances in the
@@ -164,8 +156,8 @@ func (MeshConfig_OutboundTrafficPolicy_Mode) EnumDescriptor() ([]byte, []int) {
 type MeshConfig struct {
 	// Address of the server that will be used by the proxies for policy
 	// check calls. By using different names for mixerCheckServer and
-	// mixerReportServer, it is possible to have one set of mixer servers handle
-	// policy check calls while another set of mixer servers handle telemetry
+	// mixerReportServer, it is possible to have one set of Mixer servers handle
+	// policy check calls while another set of Mixer servers handle telemetry
 	// calls.
 	//
 	// NOTE: Omitting mixerCheckServer while specifying mixerReportServer is
@@ -174,15 +166,15 @@ type MeshConfig struct {
 	// Address of the server that will be used by the proxies for policy report
 	// calls.
 	MixerReportServer string `protobuf:"bytes,2,opt,name=mixer_report_server,json=mixerReportServer,proto3" json:"mixer_report_server,omitempty"`
-	// Disable policy checks by the mixer service. Default
-	// is false, i.e. mixer policy check is enabled by default.
+	// Disable policy checks by the Mixer service. Default
+	// is false, i.e. Mixer policy check is enabled by default.
 	DisablePolicyChecks bool `protobuf:"varint,3,opt,name=disable_policy_checks,json=disablePolicyChecks,proto3" json:"disable_policy_checks,omitempty"`
-	// Allow all traffic in cases when the mixer policy service cannot be reached.
+	// Allow all traffic in cases when the Mixer policy service cannot be reached.
 	// Default is false which means the traffic is denied when the client is unable
 	// to connect to Mixer.
 	PolicyCheckFailOpen bool `protobuf:"varint,25,opt,name=policy_check_fail_open,json=policyCheckFailOpen,proto3" json:"policy_check_fail_open,omitempty"`
-	// Enable session affinity for envoy mixer reports so that calls from a proxy will
-	// always target the same mixer instance.
+	// Enable session affinity for Envoy Mixer reports so that calls from a proxy will
+	// always target the same Mixer instance.
 	SidecarToTelemetrySessionAffinity bool `protobuf:"varint,30,opt,name=sidecar_to_telemetry_session_affinity,json=sidecarToTelemetrySessionAffinity,proto3" json:"sidecar_to_telemetry_session_affinity,omitempty"`
 	// Port on which Envoy should listen for incoming connections from
 	// other services.
@@ -190,21 +182,21 @@ type MeshConfig struct {
 	// Port on which Envoy should listen for HTTP PROXY requests if set.
 	ProxyHttpPort int32 `protobuf:"varint,5,opt,name=proxy_http_port,json=proxyHttpPort,proto3" json:"proxy_http_port,omitempty"`
 	// Connection timeout used by Envoy. (MUST BE >=1ms)
-	ConnectTimeout *google_protobuf.Duration `protobuf:"bytes,6,opt,name=connect_timeout,json=connectTimeout" json:"connect_timeout,omitempty"`
+	ConnectTimeout *types.Duration `protobuf:"bytes,6,opt,name=connect_timeout,json=connectTimeout,proto3" json:"connect_timeout,omitempty"`
 	// If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.
-	TcpKeepalive *istio_networking_v1alpha31.ConnectionPoolSettings_TCPSettings_TcpKeepalive `protobuf:"bytes,28,opt,name=tcp_keepalive,json=tcpKeepalive" json:"tcp_keepalive,omitempty"`
+	TcpKeepalive *v1alpha3.ConnectionPoolSettings_TCPSettings_TcpKeepalive `protobuf:"bytes,28,opt,name=tcp_keepalive,json=tcpKeepalive,proto3" json:"tcp_keepalive,omitempty"`
 	// Class of ingress resources to be processed by Istio ingress
 	// controller.  This corresponds to the value of
 	// "kubernetes.io/ingress.class" annotation.
 	IngressClass string `protobuf:"bytes,7,opt,name=ingress_class,json=ingressClass,proto3" json:"ingress_class,omitempty"`
-	// Name of the kubernetes service used for the istio ingress controller.
+	// Name of theKubernetes service used for the istio ingress controller.
 	IngressService string `protobuf:"bytes,8,opt,name=ingress_service,json=ingressService,proto3" json:"ingress_service,omitempty"`
 	// Defines whether to use Istio ingress controller for annotated or all ingress resources.
 	IngressControllerMode MeshConfig_IngressControllerMode `protobuf:"varint,9,opt,name=ingress_controller_mode,json=ingressControllerMode,proto3,enum=istio.mesh.v1alpha1.MeshConfig_IngressControllerMode" json:"ingress_controller_mode,omitempty"`
 	// $hide_from_docs
-	AuthPolicy MeshConfig_AuthPolicy `protobuf:"varint,10,opt,name=auth_policy,json=authPolicy,proto3,enum=istio.mesh.v1alpha1.MeshConfig_AuthPolicy" json:"auth_policy,omitempty"`
+	AuthPolicy MeshConfig_AuthPolicy `protobuf:"varint,10,opt,name=auth_policy,json=authPolicy,proto3,enum=istio.mesh.v1alpha1.MeshConfig_AuthPolicy" json:"auth_policy,omitempty"` // Deprecated: Do not use.
 	// $hide_from_docs
-	RdsRefreshDelay *google_protobuf.Duration `protobuf:"bytes,11,opt,name=rds_refresh_delay,json=rdsRefreshDelay" json:"rds_refresh_delay,omitempty"`
+	RdsRefreshDelay *types.Duration `protobuf:"bytes,11,opt,name=rds_refresh_delay,json=rdsRefreshDelay,proto3" json:"rds_refresh_delay,omitempty"` // Deprecated: Do not use.
 	// Flag to control generation of trace spans and request IDs.
 	// Requires a trace span collector defined in the proxy configuration.
 	EnableTracing bool `protobuf:"varint,12,opt,name=enable_tracing,json=enableTracing,proto3" json:"enable_tracing,omitempty"`
@@ -222,9 +214,9 @@ type MeshConfig struct {
 	// In case of Kubernetes, the proxy config is applied once during the injection process,
 	// and remain constant for the duration of the pod. The rest of the mesh config can be changed
 	// at runtime and config gets distributed dynamically.
-	DefaultConfig *ProxyConfig `protobuf:"bytes,14,opt,name=default_config,json=defaultConfig" json:"default_config,omitempty"`
+	DefaultConfig *ProxyConfig `protobuf:"bytes,14,opt,name=default_config,json=defaultConfig,proto3" json:"default_config,omitempty"`
 	// $hide_from_docs
-	MixerAddress string `protobuf:"bytes,16,opt,name=mixer_address,json=mixerAddress,proto3" json:"mixer_address,omitempty"`
+	MixerAddress string `protobuf:"bytes,16,opt,name=mixer_address,json=mixerAddress,proto3" json:"mixer_address,omitempty"` // Deprecated: Do not use.
 	// Set the default behavior of the sidecar for handling outbound traffic
 	// from the application.  If your application uses one or more external
 	// services that are not known apriori, setting the policy to ALLOW_ANY
@@ -233,35 +225,35 @@ type MeshConfig struct {
 	// encouraged to use ServiceEntries to explicitly declare any external
 	// dependencies, instead of using allow_any, so that traffic to these
 	// services can be monitored.
-	OutboundTrafficPolicy *MeshConfig_OutboundTrafficPolicy `protobuf:"bytes,17,opt,name=outbound_traffic_policy,json=outboundTrafficPolicy" json:"outbound_traffic_policy,omitempty"`
+	OutboundTrafficPolicy *MeshConfig_OutboundTrafficPolicy `protobuf:"bytes,17,opt,name=outbound_traffic_policy,json=outboundTrafficPolicy,proto3" json:"outbound_traffic_policy,omitempty"`
 	// Enables clide side policy checks.
 	EnableClientSidePolicyCheck bool `protobuf:"varint,19,opt,name=enable_client_side_policy_check,json=enableClientSidePolicyCheck,proto3" json:"enable_client_side_policy_check,omitempty"`
-	// Unix Domain Socket through which envoy communicates with NodeAgent SDS to get key/cert for mTLS.
+	// Unix Domain Socket through which Envoy communicates with NodeAgent SDS to get key/cert for mTLS.
 	// Use secret-mount files instead of SDS if set to empty.
 	SdsUdsPath string `protobuf:"bytes,20,opt,name=sds_uds_path,json=sdsUdsPath,proto3" json:"sds_uds_path,omitempty"`
 	// $hide_from_docs
-	SdsRefreshDelay *google_protobuf.Duration `protobuf:"bytes,21,opt,name=sds_refresh_delay,json=sdsRefreshDelay" json:"sds_refresh_delay,omitempty"`
+	SdsRefreshDelay *types.Duration `protobuf:"bytes,21,opt,name=sds_refresh_delay,json=sdsRefreshDelay,proto3" json:"sds_refresh_delay,omitempty"` // Deprecated: Do not use.
 	// ConfigSource describes a source of configuration data for networking
 	// rules, and other Istio configuration artifacts. Multiple data sources
 	// can be configured for a single control plane.
-	ConfigSources []*ConfigSource `protobuf:"bytes,22,rep,name=config_sources,json=configSources" json:"config_sources,omitempty"`
+	ConfigSources []*ConfigSource `protobuf:"bytes,22,rep,name=config_sources,json=configSources,proto3" json:"config_sources,omitempty"`
 	// $hide_from_docs
 	// This flag is used by secret discovery service(SDS).
 	// If set to true(prerequisite: https://kubernetes.io/docs/concepts/storage/volumes/#projected), Istio will inject volumes mount
-	// for k8s service account trustworthy JWT(which is avaialbe for k8s 1.12 or higher), so that K8s API server
-	// mounts k8s service account trustworthy JWT to envoy container, which will be used to request key/cert eventually.
-	// This isn't supported for non-k8s case.
+	// for Kubernetes service account trustworthy JWT(which is available with Kubernetes 1.12 or higher), so that the Kubernetes API server
+	// mounts Kubernetes service account trustworthy JWT to the Envoy container, which will be used to request key/cert eventually.
+	// This isn't supported for non-Kubernetes cases.
 	EnableSdsTokenMount bool `protobuf:"varint,23,opt,name=enable_sds_token_mount,json=enableSdsTokenMount,proto3" json:"enable_sds_token_mount,omitempty"`
 	// $hide_from_docs
 	// This flag is used by secret discovery service(SDS).
-	// If set to true, envoy will fetch normal k8s service account JWT from '/var/run/secrets/kubernetes.io/serviceaccount/token'
+	// If set to true, Envoy will fetch a normal Kubernetes service account JWT from '/var/run/secrets/kubernetes.io/serviceaccount/token'
 	// (https://kubernetes.io/docs/tasks/access-application-cluster/access-cluster/#accessing-the-api-from-a-pod)
 	// and pass to sds server, which will be used to request key/cert eventually.
 	// If both enable_sds_token_mount and sds_use_k8s_sa_jwt are set to true, enable_sds_token_mount(trustworthy jwt) takes precedence.
 	// This isn't supported for non-k8s case.
 	SdsUseK8SSaJwt bool `protobuf:"varint,29,opt,name=sds_use_k8s_sa_jwt,json=sdsUseK8sSaJwt,proto3" json:"sds_use_k8s_sa_jwt,omitempty"`
 	// The trust domain corresponds to the trust root of a system.
-	// Refer to https://github.com/spiffe/spiffe/blob/master/standards/SPIFFE-ID.md#21-trust-domain
+	// Refer to [SPIFEE-ID](https://github.com/spiffe/spiffe/blob/master/standards/SPIFFE-ID.md#21-trust-domain)
 	// Fallback to old identity format(without trust domain) if not set.
 	TrustDomain string `protobuf:"bytes,26,opt,name=trust_domain,json=trustDomain,proto3" json:"trust_domain,omitempty"`
 	// $hide_from_docs
@@ -289,21 +281,21 @@ type MeshConfig struct {
 	//
 	// For further discussion see the reference documentation for ServiceEntry,
 	// Sidecar, and Gateway.
-	DefaultServiceExportTo []string `protobuf:"bytes,31,rep,name=default_service_export_to,json=defaultServiceExportTo" json:"default_service_export_to,omitempty"`
+	DefaultServiceExportTo []string `protobuf:"bytes,31,rep,name=default_service_export_to,json=defaultServiceExportTo,proto3" json:"default_service_export_to,omitempty"`
 	// $hide_from_docs
 	// The default value for the VirtualService.export_to field. Has the same
 	// syntax as 'default_service_export_to'.
 	//
 	// If not set the system will use "*" as the default value which implies that
 	// virtual services are exported to all namespaces
-	DefaultVirtualServiceExportTo []string `protobuf:"bytes,32,rep,name=default_virtual_service_export_to,json=defaultVirtualServiceExportTo" json:"default_virtual_service_export_to,omitempty"`
+	DefaultVirtualServiceExportTo []string `protobuf:"bytes,32,rep,name=default_virtual_service_export_to,json=defaultVirtualServiceExportTo,proto3" json:"default_virtual_service_export_to,omitempty"`
 	// $hide_from_docs
 	// The default value for the DestinationRule.export_to field. Has the same
 	// syntax as 'default_service_export_to'.
 	//
 	// If not set the system will use "*" as the default value which implies that
 	// destination rules are exported to all namespaces
-	DefaultDestinationRuleExportTo []string `protobuf:"bytes,33,rep,name=default_destination_rule_export_to,json=defaultDestinationRuleExportTo" json:"default_destination_rule_export_to,omitempty"`
+	DefaultDestinationRuleExportTo []string `protobuf:"bytes,33,rep,name=default_destination_rule_export_to,json=defaultDestinationRuleExportTo,proto3" json:"default_destination_rule_export_to,omitempty"`
 	// $hide_from_docs
 	// The namespace to treat as the administrative root namespace for
 	// istio configuration. When processing a leaf namespace Istio will search for
@@ -321,13 +313,46 @@ type MeshConfig struct {
 	// configuring the control-plane runtime from configuration of the mesh.
 	RootNamespace string `protobuf:"bytes,34,opt,name=root_namespace,json=rootNamespace,proto3" json:"root_namespace,omitempty"`
 	// Locality based load balancing distribution or failover settings.
-	LocalityLbSetting *LocalityLoadBalancerSetting `protobuf:"bytes,35,opt,name=locality_lb_setting,json=localityLbSetting" json:"locality_lb_setting,omitempty"`
+	LocalityLbSetting *LocalityLoadBalancerSetting `protobuf:"bytes,35,opt,name=locality_lb_setting,json=localityLbSetting,proto3" json:"locality_lb_setting,omitempty"`
+	// Configures DNS refresh rate for Envoy clusters of type STRICT_DNS
+	DnsRefreshRate       *types.Duration `protobuf:"bytes,36,opt,name=dns_refresh_rate,json=dnsRefreshRate,proto3" json:"dns_refresh_rate,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
+}
+
+func (m *MeshConfig) Reset()         { *m = MeshConfig{} }
+func (m *MeshConfig) String() string { return proto.CompactTextString(m) }
+func (*MeshConfig) ProtoMessage()    {}
+func (*MeshConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_b5c7ece76d5d5022, []int{0}
+}
+func (m *MeshConfig) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *MeshConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_MeshConfig.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *MeshConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MeshConfig.Merge(m, src)
+}
+func (m *MeshConfig) XXX_Size() int {
+	return m.Size()
+}
+func (m *MeshConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_MeshConfig.DiscardUnknown(m)
 }
 
-func (m *MeshConfig) Reset()                    { *m = MeshConfig{} }
-func (m *MeshConfig) String() string            { return proto.CompactTextString(m) }
-func (*MeshConfig) ProtoMessage()               {}
-func (*MeshConfig) Descriptor() ([]byte, []int) { return fileDescriptorConfig, []int{0} }
+var xxx_messageInfo_MeshConfig proto.InternalMessageInfo
 
 func (m *MeshConfig) GetMixerCheckServer() string {
 	if m != nil {
@@ -378,14 +403,14 @@ func (m *MeshConfig) GetProxyHttpPort() int32 {
 	return 0
 }
 
-func (m *MeshConfig) GetConnectTimeout() *google_protobuf.Duration {
+func (m *MeshConfig) GetConnectTimeout() *types.Duration {
 	if m != nil {
 		return m.ConnectTimeout
 	}
 	return nil
 }
 
-func (m *MeshConfig) GetTcpKeepalive() *istio_networking_v1alpha31.ConnectionPoolSettings_TCPSettings_TcpKeepalive {
+func (m *MeshConfig) GetTcpKeepalive() *v1alpha3.ConnectionPoolSettings_TCPSettings_TcpKeepalive {
 	if m != nil {
 		return m.TcpKeepalive
 	}
@@ -413,6 +438,7 @@ func (m *MeshConfig) GetIngressControllerMode() MeshConfig_IngressControllerMode
 	return MeshConfig_OFF
 }
 
+// Deprecated: Do not use.
 func (m *MeshConfig) GetAuthPolicy() MeshConfig_AuthPolicy {
 	if m != nil {
 		return m.AuthPolicy
@@ -420,7 +446,8 @@ func (m *MeshConfig) GetAuthPolicy() MeshConfig_AuthPolicy {
 	return MeshConfig_NONE
 }
 
-func (m *MeshConfig) GetRdsRefreshDelay() *google_protobuf.Duration {
+// Deprecated: Do not use.
+func (m *MeshConfig) GetRdsRefreshDelay() *types.Duration {
 	if m != nil {
 		return m.RdsRefreshDelay
 	}
@@ -462,6 +489,7 @@ func (m *MeshConfig) GetDefaultConfig() *ProxyConfig {
 	return nil
 }
 
+// Deprecated: Do not use.
 func (m *MeshConfig) GetMixerAddress() string {
 	if m != nil {
 		return m.MixerAddress
@@ -490,7 +518,8 @@ func (m *MeshConfig) GetSdsUdsPath() string {
 	return ""
 }
 
-func (m *MeshConfig) GetSdsRefreshDelay() *google_protobuf.Duration {
+// Deprecated: Do not use.
+func (m *MeshConfig) GetSdsRefreshDelay() *types.Duration {
 	if m != nil {
 		return m.SdsRefreshDelay
 	}
@@ -560,16 +589,52 @@ func (m *MeshConfig) GetLocalityLbSetting() *LocalityLoadBalancerSetting {
 	return nil
 }
 
+func (m *MeshConfig) GetDnsRefreshRate() *types.Duration {
+	if m != nil {
+		return m.DnsRefreshRate
+	}
+	return nil
+}
+
 type MeshConfig_OutboundTrafficPolicy struct {
-	Mode MeshConfig_OutboundTrafficPolicy_Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=istio.mesh.v1alpha1.MeshConfig_OutboundTrafficPolicy_Mode" json:"mode,omitempty"`
+	Mode                 MeshConfig_OutboundTrafficPolicy_Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=istio.mesh.v1alpha1.MeshConfig_OutboundTrafficPolicy_Mode" json:"mode,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                              `json:"-"`
+	XXX_unrecognized     []byte                                `json:"-"`
+	XXX_sizecache        int32                                 `json:"-"`
 }
 
 func (m *MeshConfig_OutboundTrafficPolicy) Reset()         { *m = MeshConfig_OutboundTrafficPolicy{} }
 func (m *MeshConfig_OutboundTrafficPolicy) String() string { return proto.CompactTextString(m) }
 func (*MeshConfig_OutboundTrafficPolicy) ProtoMessage()    {}
 func (*MeshConfig_OutboundTrafficPolicy) Descriptor() ([]byte, []int) {
-	return fileDescriptorConfig, []int{0, 0}
+	return fileDescriptor_b5c7ece76d5d5022, []int{0, 0}
+}
+func (m *MeshConfig_OutboundTrafficPolicy) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *MeshConfig_OutboundTrafficPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_MeshConfig_OutboundTrafficPolicy.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
 }
+func (m *MeshConfig_OutboundTrafficPolicy) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MeshConfig_OutboundTrafficPolicy.Merge(m, src)
+}
+func (m *MeshConfig_OutboundTrafficPolicy) XXX_Size() int {
+	return m.Size()
+}
+func (m *MeshConfig_OutboundTrafficPolicy) XXX_DiscardUnknown() {
+	xxx_messageInfo_MeshConfig_OutboundTrafficPolicy.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MeshConfig_OutboundTrafficPolicy proto.InternalMessageInfo
 
 func (m *MeshConfig_OutboundTrafficPolicy) GetMode() MeshConfig_OutboundTrafficPolicy_Mode {
 	if m != nil {
@@ -587,15 +652,46 @@ type ConfigSource struct {
 	// Use fs:/// to specify a file-based backend with absolute path to the directory.
 	Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
 	// Use the tls_settings to specify the tls mode to use. If the MCP server
-	// uses Istio MTLS and shares the root CA with Pilot, specify the TLS
+	// uses Istio mutual TLS and shares the root CA with Pilot, specify the TLS
 	// mode as ISTIO_MUTUAL.
-	TlsSettings *istio_networking_v1alpha31.TLSSettings `protobuf:"bytes,2,opt,name=tls_settings,json=tlsSettings" json:"tls_settings,omitempty"`
+	TlsSettings          *v1alpha3.TLSSettings `protobuf:"bytes,2,opt,name=tls_settings,json=tlsSettings,proto3" json:"tls_settings,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *ConfigSource) Reset()         { *m = ConfigSource{} }
+func (m *ConfigSource) String() string { return proto.CompactTextString(m) }
+func (*ConfigSource) ProtoMessage()    {}
+func (*ConfigSource) Descriptor() ([]byte, []int) {
+	return fileDescriptor_b5c7ece76d5d5022, []int{1}
+}
+func (m *ConfigSource) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *ConfigSource) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_ConfigSource.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *ConfigSource) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ConfigSource.Merge(m, src)
+}
+func (m *ConfigSource) XXX_Size() int {
+	return m.Size()
+}
+func (m *ConfigSource) XXX_DiscardUnknown() {
+	xxx_messageInfo_ConfigSource.DiscardUnknown(m)
 }
 
-func (m *ConfigSource) Reset()                    { *m = ConfigSource{} }
-func (m *ConfigSource) String() string            { return proto.CompactTextString(m) }
-func (*ConfigSource) ProtoMessage()               {}
-func (*ConfigSource) Descriptor() ([]byte, []int) { return fileDescriptorConfig, []int{1} }
+var xxx_messageInfo_ConfigSource proto.InternalMessageInfo
 
 func (m *ConfigSource) GetAddress() string {
 	if m != nil {
@@ -604,7 +700,7 @@ func (m *ConfigSource) GetAddress() string {
 	return ""
 }
 
-func (m *ConfigSource) GetTlsSettings() *istio_networking_v1alpha31.TLSSettings {
+func (m *ConfigSource) GetTlsSettings() *v1alpha3.TLSSettings {
 	if m != nil {
 		return m.TlsSettings
 	}
@@ -616,7 +712,7 @@ func (m *ConfigSource) GetTlsSettings() *istio_networking_v1alpha31.TLSSettings
 // traffic originates and where it will terminate. These localities are
 // specified using arbitrary labels that designate a hierarchy of localities in
 // {region}/{zone}/{sub-zone} form. For additional detail refer to
-// https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/load_balancing/locality_weight
+// [Locality Weight](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/load_balancing/locality_weight)
 // The following example shows how to setup locality weights mesh-wide.
 //
 // Given a mesh with workloads and their service deployed to "us-west/zone1/*"
@@ -663,21 +759,50 @@ type LocalityLoadBalancerSetting struct {
 	// Explicitly specify loadbalancing weight across different zones and geographical locations.
 	// Refer to [Locality weighted load balancing](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/load_balancing.html?highlight=load_balancing_weight#locality-weighted-load-balancing)
 	// If empty, the locality weight is set according to the endpoints number within it.
-	Distribute []*LocalityLoadBalancerSetting_Distribute `protobuf:"bytes,1,rep,name=distribute" json:"distribute,omitempty"`
+	Distribute []*LocalityLoadBalancerSetting_Distribute `protobuf:"bytes,1,rep,name=distribute,proto3" json:"distribute,omitempty"`
 	// Optional: only failover or distribute can be set.
 	// Explicitly specify the region traffic will land on when endpoints in local region becomes unhealthy.
 	// Should be used together with OutlierDetection to detect unhealthy endpoints.
 	// Note: if no OutlierDetection specified, this will not take effect.
-	Failover []*LocalityLoadBalancerSetting_Failover `protobuf:"bytes,2,rep,name=failover" json:"failover,omitempty"`
+	Failover             []*LocalityLoadBalancerSetting_Failover `protobuf:"bytes,2,rep,name=failover,proto3" json:"failover,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                                `json:"-"`
+	XXX_unrecognized     []byte                                  `json:"-"`
+	XXX_sizecache        int32                                   `json:"-"`
 }
 
 func (m *LocalityLoadBalancerSetting) Reset()         { *m = LocalityLoadBalancerSetting{} }
 func (m *LocalityLoadBalancerSetting) String() string { return proto.CompactTextString(m) }
 func (*LocalityLoadBalancerSetting) ProtoMessage()    {}
 func (*LocalityLoadBalancerSetting) Descriptor() ([]byte, []int) {
-	return fileDescriptorConfig, []int{2}
+	return fileDescriptor_b5c7ece76d5d5022, []int{2}
+}
+func (m *LocalityLoadBalancerSetting) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *LocalityLoadBalancerSetting) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_LocalityLoadBalancerSetting.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *LocalityLoadBalancerSetting) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LocalityLoadBalancerSetting.Merge(m, src)
+}
+func (m *LocalityLoadBalancerSetting) XXX_Size() int {
+	return m.Size()
+}
+func (m *LocalityLoadBalancerSetting) XXX_DiscardUnknown() {
+	xxx_messageInfo_LocalityLoadBalancerSetting.DiscardUnknown(m)
 }
 
+var xxx_messageInfo_LocalityLoadBalancerSetting proto.InternalMessageInfo
+
 func (m *LocalityLoadBalancerSetting) GetDistribute() []*LocalityLoadBalancerSetting_Distribute {
 	if m != nil {
 		return m.Distribute
@@ -705,7 +830,10 @@ type LocalityLoadBalancerSetting_Distribute struct {
 	// Map of upstream localities to traffic distribution weights. The sum of
 	// all weights should be == 100. Any locality not assigned a weight will
 	// receive no traffic.
-	To map[string]uint32 `protobuf:"bytes,2,rep,name=to" json:"to,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	To                   map[string]uint32 `protobuf:"bytes,2,rep,name=to,proto3" json:"to,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
+	XXX_unrecognized     []byte            `json:"-"`
+	XXX_sizecache        int32             `json:"-"`
 }
 
 func (m *LocalityLoadBalancerSetting_Distribute) Reset() {
@@ -714,9 +842,35 @@ func (m *LocalityLoadBalancerSetting_Distribute) Reset() {
 func (m *LocalityLoadBalancerSetting_Distribute) String() string { return proto.CompactTextString(m) }
 func (*LocalityLoadBalancerSetting_Distribute) ProtoMessage()    {}
 func (*LocalityLoadBalancerSetting_Distribute) Descriptor() ([]byte, []int) {
-	return fileDescriptorConfig, []int{2, 0}
+	return fileDescriptor_b5c7ece76d5d5022, []int{2, 0}
+}
+func (m *LocalityLoadBalancerSetting_Distribute) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *LocalityLoadBalancerSetting_Distribute) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_LocalityLoadBalancerSetting_Distribute.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *LocalityLoadBalancerSetting_Distribute) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LocalityLoadBalancerSetting_Distribute.Merge(m, src)
+}
+func (m *LocalityLoadBalancerSetting_Distribute) XXX_Size() int {
+	return m.Size()
+}
+func (m *LocalityLoadBalancerSetting_Distribute) XXX_DiscardUnknown() {
+	xxx_messageInfo_LocalityLoadBalancerSetting_Distribute.DiscardUnknown(m)
 }
 
+var xxx_messageInfo_LocalityLoadBalancerSetting_Distribute proto.InternalMessageInfo
+
 func (m *LocalityLoadBalancerSetting_Distribute) GetFrom() string {
 	if m != nil {
 		return m.From
@@ -743,16 +897,45 @@ type LocalityLoadBalancerSetting_Failover struct {
 	From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"`
 	// Destination region the traffic will fail over to when endpoints in
 	// the 'from' region becomes unhealthy.
-	To string `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"`
+	To                   string   `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *LocalityLoadBalancerSetting_Failover) Reset()         { *m = LocalityLoadBalancerSetting_Failover{} }
 func (m *LocalityLoadBalancerSetting_Failover) String() string { return proto.CompactTextString(m) }
 func (*LocalityLoadBalancerSetting_Failover) ProtoMessage()    {}
 func (*LocalityLoadBalancerSetting_Failover) Descriptor() ([]byte, []int) {
-	return fileDescriptorConfig, []int{2, 1}
+	return fileDescriptor_b5c7ece76d5d5022, []int{2, 1}
+}
+func (m *LocalityLoadBalancerSetting_Failover) XXX_Unmarshal(b []byte) error {
+	return m.Unmarshal(b)
+}
+func (m *LocalityLoadBalancerSetting_Failover) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	if deterministic {
+		return xxx_messageInfo_LocalityLoadBalancerSetting_Failover.Marshal(b, m, deterministic)
+	} else {
+		b = b[:cap(b)]
+		n, err := m.MarshalTo(b)
+		if err != nil {
+			return nil, err
+		}
+		return b[:n], nil
+	}
+}
+func (m *LocalityLoadBalancerSetting_Failover) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LocalityLoadBalancerSetting_Failover.Merge(m, src)
+}
+func (m *LocalityLoadBalancerSetting_Failover) XXX_Size() int {
+	return m.Size()
+}
+func (m *LocalityLoadBalancerSetting_Failover) XXX_DiscardUnknown() {
+	xxx_messageInfo_LocalityLoadBalancerSetting_Failover.DiscardUnknown(m)
 }
 
+var xxx_messageInfo_LocalityLoadBalancerSetting_Failover proto.InternalMessageInfo
+
 func (m *LocalityLoadBalancerSetting_Failover) GetFrom() string {
 	if m != nil {
 		return m.From
@@ -768,17 +951,118 @@ func (m *LocalityLoadBalancerSetting_Failover) GetTo() string {
 }
 
 func init() {
+	proto.RegisterEnum("istio.mesh.v1alpha1.MeshConfig_IngressControllerMode", MeshConfig_IngressControllerMode_name, MeshConfig_IngressControllerMode_value)
+	proto.RegisterEnum("istio.mesh.v1alpha1.MeshConfig_AuthPolicy", MeshConfig_AuthPolicy_name, MeshConfig_AuthPolicy_value)
+	proto.RegisterEnum("istio.mesh.v1alpha1.MeshConfig_AccessLogEncoding", MeshConfig_AccessLogEncoding_name, MeshConfig_AccessLogEncoding_value)
+	proto.RegisterEnum("istio.mesh.v1alpha1.MeshConfig_OutboundTrafficPolicy_Mode", MeshConfig_OutboundTrafficPolicy_Mode_name, MeshConfig_OutboundTrafficPolicy_Mode_value)
 	proto.RegisterType((*MeshConfig)(nil), "istio.mesh.v1alpha1.MeshConfig")
 	proto.RegisterType((*MeshConfig_OutboundTrafficPolicy)(nil), "istio.mesh.v1alpha1.MeshConfig.OutboundTrafficPolicy")
 	proto.RegisterType((*ConfigSource)(nil), "istio.mesh.v1alpha1.ConfigSource")
 	proto.RegisterType((*LocalityLoadBalancerSetting)(nil), "istio.mesh.v1alpha1.LocalityLoadBalancerSetting")
 	proto.RegisterType((*LocalityLoadBalancerSetting_Distribute)(nil), "istio.mesh.v1alpha1.LocalityLoadBalancerSetting.Distribute")
+	proto.RegisterMapType((map[string]uint32)(nil), "istio.mesh.v1alpha1.LocalityLoadBalancerSetting.Distribute.ToEntry")
 	proto.RegisterType((*LocalityLoadBalancerSetting_Failover)(nil), "istio.mesh.v1alpha1.LocalityLoadBalancerSetting.Failover")
-	proto.RegisterEnum("istio.mesh.v1alpha1.MeshConfig_IngressControllerMode", MeshConfig_IngressControllerMode_name, MeshConfig_IngressControllerMode_value)
-	proto.RegisterEnum("istio.mesh.v1alpha1.MeshConfig_AuthPolicy", MeshConfig_AuthPolicy_name, MeshConfig_AuthPolicy_value)
-	proto.RegisterEnum("istio.mesh.v1alpha1.MeshConfig_AccessLogEncoding", MeshConfig_AccessLogEncoding_name, MeshConfig_AccessLogEncoding_value)
-	proto.RegisterEnum("istio.mesh.v1alpha1.MeshConfig_OutboundTrafficPolicy_Mode", MeshConfig_OutboundTrafficPolicy_Mode_name, MeshConfig_OutboundTrafficPolicy_Mode_value)
 }
+
+func init() { proto.RegisterFile("mesh/v1alpha1/config.proto", fileDescriptor_b5c7ece76d5d5022) }
+
+var fileDescriptor_b5c7ece76d5d5022 = []byte{
+	// 1482 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x57, 0xdd, 0x72, 0xdb, 0xb8,
+	0x15, 0x0e, 0x65, 0x25, 0x96, 0x8f, 0x7e, 0x4c, 0x41, 0x71, 0x96, 0x56, 0xba, 0x5e, 0x59, 0xdb,
+	0x24, 0x1a, 0x4f, 0x87, 0x6e, 0xec, 0xd9, 0x99, 0x64, 0x7b, 0x65, 0x4b, 0xf2, 0xc6, 0x5e, 0xd9,
+	0xf2, 0x50, 0x74, 0xda, 0xb4, 0x17, 0x28, 0x4c, 0x42, 0x12, 0x6a, 0x8a, 0xe0, 0x10, 0xa0, 0x13,
+	0xbd, 0x53, 0xdb, 0xe9, 0x63, 0xf4, 0xb2, 0x8f, 0xd0, 0xc9, 0x93, 0x74, 0x08, 0x90, 0x96, 0xe2,
+	0xd5, 0xac, 0xbb, 0xed, 0x9d, 0xf0, 0x9d, 0xef, 0x7c, 0x20, 0xce, 0xf9, 0x70, 0x48, 0x41, 0x73,
+	0x46, 0xc5, 0x74, 0xff, 0xf6, 0x35, 0x09, 0xa2, 0x29, 0x79, 0xbd, 0xef, 0xf1, 0x70, 0xcc, 0x26,
+	0x76, 0x14, 0x73, 0xc9, 0x51, 0x83, 0x09, 0xc9, 0xb8, 0x9d, 0x32, 0xec, 0x9c, 0xd1, 0xdc, 0x99,
+	0x70, 0x3e, 0x09, 0xe8, 0xbe, 0xa2, 0x5c, 0x27, 0xe3, 0x7d, 0x3f, 0x89, 0x89, 0x64, 0x3c, 0xd4,
+	0x49, 0xcd, 0xed, 0x2f, 0x05, 0xa3, 0x98, 0x7f, 0x9a, 0x67, 0xa1, 0xbd, 0x90, 0xca, 0x8f, 0x3c,
+	0xbe, 0x61, 0xe1, 0x24, 0x27, 0x1c, 0xee, 0xfb, 0x54, 0x48, 0x16, 0x2a, 0x05, 0x1c, 0x27, 0x01,
+	0xd5, 0xdc, 0xf6, 0xdf, 0x1b, 0x00, 0xe7, 0x54, 0x4c, 0xbb, 0xea, 0x81, 0xd0, 0x6f, 0x00, 0xcd,
+	0xd8, 0x27, 0x1a, 0x63, 0x6f, 0x4a, 0xbd, 0x1b, 0x2c, 0x68, 0x7c, 0x4b, 0x63, 0xcb, 0x68, 0x19,
+	0x9d, 0x0d, 0xc7, 0x54, 0x91, 0x6e, 0x1a, 0x18, 0x29, 0x1c, 0xd9, 0xd0, 0xd0, 0xec, 0x98, 0x46,
+	0x3c, 0x96, 0x39, 0xbd, 0xa0, 0xe8, 0x75, 0x15, 0x72, 0x54, 0x24, 0xe3, 0x1f, 0xc0, 0x96, 0xcf,
+	0x04, 0xb9, 0x0e, 0x28, 0x8e, 0x78, 0xc0, 0xbc, 0xb9, 0xde, 0x46, 0x58, 0x6b, 0x2d, 0xa3, 0x53,
+	0x72, 0x1a, 0x59, 0xf0, 0x52, 0xc5, 0xd4, 0x46, 0x02, 0x1d, 0xc2, 0xb3, 0x65, 0x2e, 0x1e, 0x13,
+	0x16, 0x60, 0x1e, 0xd1, 0xd0, 0xda, 0xd6, 0x49, 0xd1, 0x82, 0x7d, 0x42, 0x58, 0x30, 0x8c, 0x68,
+	0x88, 0x2e, 0xe1, 0x85, 0x60, 0x3e, 0xf5, 0x48, 0x8c, 0x25, 0xc7, 0x92, 0x06, 0x74, 0x46, 0x65,
+	0x3c, 0xc7, 0x82, 0x0a, 0x91, 0x16, 0x80, 0x8c, 0xc7, 0x2c, 0x64, 0x72, 0x6e, 0xed, 0x28, 0x8d,
+	0xdd, 0x8c, 0xec, 0x72, 0x37, 0xa7, 0x8e, 0x34, 0xf3, 0x28, 0x23, 0xa2, 0x3d, 0xa8, 0xab, 0x12,
+	0xe3, 0x80, 0x09, 0x49, 0x43, 0x9c, 0x9e, 0xca, 0x2a, 0xb6, 0x8c, 0xce, 0x63, 0x67, 0x53, 0x05,
+	0x06, 0x0a, 0xbf, 0xe4, 0xb1, 0x44, 0x2f, 0x41, 0x43, 0x78, 0x2a, 0x65, 0xa4, 0x99, 0x8f, 0x15,
+	0xb3, 0xaa, 0xe0, 0x77, 0x52, 0x46, 0x8a, 0x77, 0x0c, 0x9b, 0x1e, 0x0f, 0x43, 0xea, 0x49, 0x2c,
+	0xd9, 0x8c, 0xf2, 0x44, 0x5a, 0x4f, 0x5a, 0x46, 0xa7, 0x7c, 0xb0, 0x6d, 0xeb, 0xe6, 0xdb, 0x79,
+	0xf3, 0xed, 0x5e, 0xd6, 0x7c, 0xa7, 0x96, 0x65, 0xb8, 0x3a, 0x01, 0x71, 0xa8, 0x4a, 0x2f, 0xc2,
+	0x37, 0x94, 0x46, 0x24, 0x60, 0xb7, 0xd4, 0xfa, 0x95, 0x52, 0x38, 0xb3, 0xb5, 0xa7, 0x16, 0x4e,
+	0xc8, 0x9d, 0x75, 0x68, 0x77, 0xb5, 0x02, 0xe3, 0xe1, 0x25, 0xe7, 0xc1, 0x88, 0x4a, 0xc9, 0xc2,
+	0x89, 0xb0, 0xdd, 0xee, 0xe5, 0xe2, 0xb7, 0x17, 0xfd, 0x98, 0x2b, 0x3a, 0x15, 0xb9, 0xb4, 0x42,
+	0xdf, 0x42, 0x95, 0x85, 0x93, 0x98, 0x0a, 0x81, 0xbd, 0x80, 0x08, 0x61, 0xad, 0xab, 0x6e, 0x57,
+	0x32, 0xb0, 0x9b, 0x62, 0xe8, 0x15, 0x6c, 0xe6, 0xa4, 0xd4, 0x13, 0xcc, 0xa3, 0x56, 0x49, 0xd1,
+	0x6a, 0x19, 0x3c, 0xd2, 0x28, 0x9a, 0xc1, 0x57, 0x77, 0x6a, 0x3c, 0x94, 0x31, 0x0f, 0x02, 0x1a,
+	0xe3, 0x19, 0xf7, 0xa9, 0xb5, 0xd1, 0x32, 0x3a, 0xb5, 0x83, 0xef, 0xec, 0x15, 0x97, 0xc3, 0x5e,
+	0x38, 0xd6, 0x3e, 0xcd, 0xf6, 0xbd, 0xcb, 0x3e, 0xe7, 0x3e, 0x75, 0xb6, 0xd8, 0x2a, 0x18, 0x0d,
+	0xa1, 0x4c, 0x12, 0x39, 0xcd, 0xdc, 0x67, 0x81, 0xda, 0x62, 0xef, 0xa1, 0x2d, 0x8e, 0x12, 0x39,
+	0xd5, 0x9e, 0x3c, 0x2e, 0x58, 0x86, 0x03, 0xe4, 0x6e, 0x8d, 0x4e, 0xa1, 0x1e, 0xfb, 0x02, 0xc7,
+	0x74, 0x1c, 0x53, 0x31, 0xc5, 0x3e, 0x0d, 0xc8, 0xdc, 0x2a, 0x3f, 0xd0, 0x44, 0xa5, 0xb2, 0x19,
+	0xfb, 0xc2, 0xd1, 0x69, 0xbd, 0x34, 0x0b, 0xbd, 0x80, 0x1a, 0x0d, 0xd5, 0xdd, 0x90, 0x31, 0xf1,
+	0x58, 0x38, 0xb1, 0x2a, 0xca, 0x9c, 0x55, 0x8d, 0xba, 0x1a, 0x4c, 0xcd, 0x45, 0x3c, 0x2f, 0x2d,
+	0x58, 0xc0, 0x27, 0x78, 0xcc, 0x02, 0x6a, 0x55, 0x55, 0x69, 0xab, 0x1a, 0x1e, 0xf0, 0xc9, 0x09,
+	0x0b, 0x68, 0x6a, 0xd8, 0x65, 0x1e, 0x8f, 0x67, 0x44, 0x5a, 0x96, 0x62, 0x6e, 0x2e, 0x98, 0x0a,
+	0x46, 0x04, 0x1a, 0x4b, 0x5c, 0x1a, 0x7a, 0xdc, 0x4f, 0xf7, 0x7f, 0xae, 0xca, 0xf3, 0xfa, 0xc1,
+	0xf2, 0xe4, 0x6a, 0xfd, 0x2c, 0xd1, 0xa9, 0x93, 0xfb, 0x10, 0xfa, 0x01, 0x6a, 0x3e, 0x1d, 0x93,
+	0x24, 0x90, 0x58, 0xcf, 0x3e, 0xab, 0xa6, 0xaa, 0xd4, 0x5a, 0xa9, 0x7e, 0x99, 0xde, 0x13, 0x2d,
+	0xef, 0x54, 0xb3, 0xbc, 0x6c, 0x42, 0xbd, 0x82, 0xaa, 0x9e, 0x39, 0xc4, 0xf7, 0xd3, 0x0e, 0x5b,
+	0x66, 0x7a, 0x26, 0x55, 0xd2, 0x8a, 0x0a, 0x1c, 0x69, 0x3c, 0xb5, 0x16, 0x4f, 0xe4, 0x35, 0x4f,
+	0x42, 0x3f, 0xad, 0xe8, 0x78, 0xcc, 0xbc, 0xbc, 0xef, 0x75, 0xb5, 0xf5, 0x83, 0xd6, 0x1a, 0x66,
+	0xe9, 0xae, 0xce, 0xd6, 0x2d, 0x77, 0xb6, 0xf8, 0x2a, 0x18, 0xf5, 0xe0, 0x9b, 0xac, 0x7d, 0x5e,
+	0xc0, 0x68, 0x28, 0x71, 0x3a, 0x53, 0xbe, 0x18, 0x73, 0x56, 0x43, 0xf5, 0xf3, 0xb9, 0xa6, 0x75,
+	0x15, 0x6b, 0xc4, 0xfc, 0xe5, 0x71, 0x87, 0x5a, 0x50, 0x11, 0xbe, 0xc0, 0x89, 0x2f, 0x70, 0x44,
+	0xe4, 0xd4, 0x7a, 0xaa, 0x1a, 0x06, 0xc2, 0x17, 0x57, 0xbe, 0xb8, 0x24, 0x72, 0x9a, 0x3a, 0x4e,
+	0xfc, 0xc4, 0x71, 0x5b, 0xff, 0x95, 0xe3, 0xc4, 0x3d, 0xc7, 0xbd, 0x83, 0x9a, 0xee, 0x05, 0x16,
+	0x3c, 0x89, 0x3d, 0x2a, 0xac, 0x67, 0xad, 0xb5, 0x4e, 0xf9, 0x60, 0x77, 0x65, 0x61, 0x74, 0x51,
+	0x46, 0x8a, 0xe9, 0x54, 0xbd, 0xa5, 0x95, 0x1a, 0xd2, 0xd9, 0xe1, 0xd3, 0x67, 0x93, 0xfc, 0x86,
+	0x86, 0x78, 0xc6, 0x93, 0x50, 0x5a, 0x5f, 0xe9, 0x21, 0xad, 0xa3, 0x23, 0x5f, 0xb8, 0x69, 0xec,
+	0x3c, 0x0d, 0xa1, 0x3d, 0x40, 0xea, 0xac, 0x82, 0xe2, 0x9b, 0x37, 0x02, 0x0b, 0x82, 0xff, 0xf2,
+	0x51, 0x5a, 0x5f, 0xab, 0x84, 0x5a, 0x7a, 0x62, 0x41, 0x7f, 0x7c, 0x23, 0x46, 0xe4, 0xec, 0xa3,
+	0x44, 0xbb, 0x50, 0x91, 0x71, 0x22, 0x24, 0xf6, 0xf9, 0x8c, 0xb0, 0xd0, 0x6a, 0xaa, 0xba, 0x94,
+	0x15, 0xd6, 0x53, 0x10, 0x7a, 0x0b, 0xdb, 0xb9, 0xc3, 0xb2, 0x99, 0x83, 0xe9, 0x27, 0xf5, 0x5a,
+	0x92, 0xdc, 0xfa, 0xa6, 0xb5, 0xd6, 0xd9, 0x70, 0x9e, 0x65, 0x84, 0x6c, 0xfa, 0xf4, 0x55, 0xd8,
+	0xe5, 0xe8, 0x1d, 0xec, 0xe6, 0xa9, 0xb7, 0x2c, 0x96, 0x09, 0x09, 0x56, 0x48, 0xb4, 0x94, 0xc4,
+	0xd7, 0x19, 0xf1, 0xbd, 0xe6, 0xdd, 0x57, 0x3a, 0x83, 0x76, 0xae, 0x74, 0xff, 0x85, 0xbb, 0x24,
+	0xb5, 0xab, 0xa4, 0x76, 0x32, 0x66, 0x6f, 0x41, 0x74, 0x92, 0x60, 0xa1, 0xf5, 0x02, 0x6a, 0x31,
+	0xe7, 0x12, 0x87, 0x64, 0x46, 0x45, 0x44, 0x3c, 0x6a, 0xb5, 0xf5, 0x45, 0x4f, 0xd1, 0x8b, 0x1c,
+	0x44, 0x7f, 0x86, 0x46, 0xc0, 0x3d, 0x12, 0x30, 0x39, 0xc7, 0xc1, 0x35, 0x16, 0x7a, 0x86, 0x5b,
+	0xdf, 0x2a, 0x4b, 0xfc, 0x76, 0x65, 0x2b, 0x07, 0x19, 0x7f, 0xc0, 0x89, 0x7f, 0x4c, 0x02, 0x12,
+	0x7a, 0x34, 0xce, 0x66, 0xbf, 0x53, 0xcf, 0xc5, 0x06, 0xd7, 0x19, 0x84, 0xba, 0x60, 0xfa, 0xe1,
+	0xc2, 0x72, 0x31, 0x91, 0xd4, 0xfa, 0xf5, 0x83, 0x2f, 0x2a, 0x3f, 0xcc, 0xdd, 0xe6, 0x10, 0x49,
+	0x9b, 0x7f, 0x33, 0x60, 0x6b, 0xe5, 0x85, 0x42, 0x17, 0x50, 0x54, 0x03, 0xdf, 0x50, 0xe3, 0xe6,
+	0xfb, 0xff, 0xe9, 0x56, 0xda, 0x6a, 0xea, 0x2b, 0x9d, 0x76, 0x0f, 0x8a, 0x6a, 0xd8, 0xd7, 0xa1,
+	0xea, 0xf4, 0x7f, 0x38, 0x1d, 0xb9, 0xce, 0x07, 0x3c, 0xbc, 0x18, 0x7c, 0x30, 0x1f, 0xa1, 0x2a,
+	0x6c, 0x1c, 0x0d, 0x06, 0xc3, 0xdf, 0xe3, 0xa3, 0x8b, 0x0f, 0xa6, 0xd1, 0x2e, 0x96, 0x0a, 0x66,
+	0x61, 0xef, 0xe9, 0xfb, 0x53, 0xc7, 0xbd, 0x3a, 0x1a, 0xe0, 0x51, 0xdf, 0x79, 0x7f, 0xda, 0xed,
+	0x2b, 0x72, 0xfb, 0x2d, 0x6c, 0xad, 0x7c, 0xb5, 0xa0, 0x75, 0x58, 0x1b, 0x9e, 0x9c, 0x98, 0x8f,
+	0x50, 0x19, 0xd6, 0x7b, 0xfd, 0x93, 0xa3, 0xab, 0x81, 0x6b, 0x1a, 0x08, 0xe0, 0xc9, 0xc8, 0x75,
+	0x4e, 0xbb, 0xae, 0x59, 0x68, 0xbf, 0x04, 0x58, 0xbc, 0x32, 0x50, 0x09, 0x8a, 0x17, 0xc3, 0x8b,
+	0xbe, 0xf9, 0x08, 0xd5, 0x00, 0xce, 0xaf, 0xd4, 0x4e, 0xee, 0x60, 0x64, 0x1a, 0xed, 0x57, 0x50,
+	0xff, 0xc9, 0xec, 0x4c, 0xe9, 0x6e, 0xff, 0x0f, 0xae, 0xf9, 0x28, 0xfd, 0x75, 0x36, 0x1a, 0x5e,
+	0x98, 0xc6, 0x59, 0xb1, 0xb4, 0x69, 0x9a, 0x67, 0xc5, 0x12, 0x32, 0x1b, 0x6d, 0x01, 0x95, 0xe5,
+	0x9b, 0x88, 0x2c, 0x58, 0xcf, 0x27, 0xa1, 0xfe, 0x4c, 0xcb, 0x97, 0xe8, 0x14, 0x2a, 0x32, 0x10,
+	0xb9, 0x21, 0x84, 0xfa, 0x2c, 0x2b, 0x1f, 0xbc, 0xfc, 0x99, 0x2f, 0x03, 0x77, 0x30, 0xca, 0x3f,
+	0x01, 0x9c, 0xb2, 0x0c, 0x44, 0xbe, 0x68, 0xff, 0x63, 0x0d, 0x9e, 0xff, 0x8c, 0x69, 0xd0, 0x9f,
+	0x00, 0x7c, 0x26, 0x64, 0xcc, 0xae, 0x13, 0x99, 0x36, 0x32, 0x9d, 0x22, 0xbf, 0xfb, 0xa5, 0xd6,
+	0xb3, 0x7b, 0x77, 0x12, 0xce, 0x92, 0x1c, 0xba, 0x82, 0x52, 0xfa, 0xd1, 0xc7, 0xf5, 0xa7, 0x65,
+	0x2a, 0xfd, 0xf6, 0x17, 0x4b, 0x9f, 0x64, 0x02, 0xce, 0x9d, 0x54, 0xf3, 0xaf, 0x06, 0xc0, 0x62,
+	0x47, 0x84, 0xa0, 0x38, 0x8e, 0xf9, 0x2c, 0x2b, 0xa2, 0xfa, 0x8d, 0x46, 0x50, 0x90, 0x3c, 0xdb,
+	0xb3, 0xfb, 0x7f, 0x1c, 0xc7, 0x76, 0x79, 0x3f, 0x94, 0xf1, 0xdc, 0x29, 0x48, 0xde, 0xfc, 0x0e,
+	0xd6, 0xb3, 0x25, 0x32, 0x61, 0xed, 0x86, 0xce, 0xb3, 0x2d, 0xd3, 0x9f, 0xe8, 0x29, 0x3c, 0xbe,
+	0x25, 0x41, 0x42, 0x55, 0xb3, 0xaa, 0x8e, 0x5e, 0x7c, 0x5f, 0x78, 0x63, 0x34, 0x6d, 0x28, 0xe5,
+	0x87, 0x58, 0xf9, 0xac, 0xb5, 0xec, 0x59, 0x53, 0xa4, 0x20, 0xf9, 0x71, 0xe7, 0x9f, 0x9f, 0x77,
+	0x8c, 0x7f, 0x7d, 0xde, 0x31, 0xfe, 0xfd, 0x79, 0xc7, 0xf8, 0x63, 0x53, 0x3f, 0x3c, 0xe3, 0xfb,
+	0x24, 0x62, 0xfb, 0x5f, 0xfc, 0x75, 0xb8, 0x7e, 0xa2, 0x2e, 0xef, 0xe1, 0x7f, 0x02, 0x00, 0x00,
+	0xff, 0xff, 0x33, 0x88, 0x4e, 0x58, 0xa3, 0x0c, 0x00, 0x00,
+}
+
 func (m *MeshConfig) Marshal() (dAtA []byte, err error) {
 	size := m.Size()
 	dAtA = make([]byte, size)
@@ -1114,6 +1398,21 @@ func (m *MeshConfig) MarshalTo(dAtA []byte) (int, error) {
 		}
 		i += n7
 	}
+	if m.DnsRefreshRate != nil {
+		dAtA[i] = 0xa2
+		i++
+		dAtA[i] = 0x2
+		i++
+		i = encodeVarintConfig(dAtA, i, uint64(m.DnsRefreshRate.Size()))
+		n8, err := m.DnsRefreshRate.MarshalTo(dAtA[i:])
+		if err != nil {
+			return 0, err
+		}
+		i += n8
+	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1137,6 +1436,9 @@ func (m *MeshConfig_OutboundTrafficPolicy) MarshalTo(dAtA []byte) (int, error) {
 		i++
 		i = encodeVarintConfig(dAtA, i, uint64(m.Mode))
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1165,11 +1467,14 @@ func (m *ConfigSource) MarshalTo(dAtA []byte) (int, error) {
 		dAtA[i] = 0x12
 		i++
 		i = encodeVarintConfig(dAtA, i, uint64(m.TlsSettings.Size()))
-		n8, err := m.TlsSettings.MarshalTo(dAtA[i:])
+		n9, err := m.TlsSettings.MarshalTo(dAtA[i:])
 		if err != nil {
 			return 0, err
 		}
-		i += n8
+		i += n9
+	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
 	}
 	return i, nil
 }
@@ -1213,6 +1518,9 @@ func (m *LocalityLoadBalancerSetting) MarshalTo(dAtA []byte) (int, error) {
 			i += n
 		}
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1253,6 +1561,9 @@ func (m *LocalityLoadBalancerSetting_Distribute) MarshalTo(dAtA []byte) (int, er
 			i = encodeVarintConfig(dAtA, i, uint64(v))
 		}
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1283,6 +1594,9 @@ func (m *LocalityLoadBalancerSetting_Failover) MarshalTo(dAtA []byte) (int, erro
 		i = encodeVarintConfig(dAtA, i, uint64(len(m.To)))
 		i += copy(dAtA[i:], m.To)
 	}
+	if m.XXX_unrecognized != nil {
+		i += copy(dAtA[i:], m.XXX_unrecognized)
+	}
 	return i, nil
 }
 
@@ -1296,6 +1610,9 @@ func encodeVarintConfig(dAtA []byte, offset int, v uint64) int {
 	return offset + 1
 }
 func (m *MeshConfig) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.MixerCheckServer)
@@ -1426,19 +1743,35 @@ func (m *MeshConfig) Size() (n int) {
 		l = m.LocalityLbSetting.Size()
 		n += 2 + l + sovConfig(uint64(l))
 	}
+	if m.DnsRefreshRate != nil {
+		l = m.DnsRefreshRate.Size()
+		n += 2 + l + sovConfig(uint64(l))
+	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *MeshConfig_OutboundTrafficPolicy) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	if m.Mode != 0 {
 		n += 1 + sovConfig(uint64(m.Mode))
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *ConfigSource) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.Address)
@@ -1449,10 +1782,16 @@ func (m *ConfigSource) Size() (n int) {
 		l = m.TlsSettings.Size()
 		n += 1 + l + sovConfig(uint64(l))
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *LocalityLoadBalancerSetting) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	if len(m.Distribute) > 0 {
@@ -1467,10 +1806,16 @@ func (m *LocalityLoadBalancerSetting) Size() (n int) {
 			n += 1 + l + sovConfig(uint64(l))
 		}
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *LocalityLoadBalancerSetting_Distribute) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.From)
@@ -1485,10 +1830,16 @@ func (m *LocalityLoadBalancerSetting_Distribute) Size() (n int) {
 			n += mapEntrySize + 1 + sovConfig(uint64(mapEntrySize))
 		}
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
 func (m *LocalityLoadBalancerSetting_Failover) Size() (n int) {
+	if m == nil {
+		return 0
+	}
 	var l int
 	_ = l
 	l = len(m.From)
@@ -1499,6 +1850,9 @@ func (m *LocalityLoadBalancerSetting_Failover) Size() (n int) {
 	if l > 0 {
 		n += 1 + l + sovConfig(uint64(l))
 	}
+	if m.XXX_unrecognized != nil {
+		n += len(m.XXX_unrecognized)
+	}
 	return n
 }
 
@@ -1530,7 +1884,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -1558,7 +1912,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1568,6 +1922,9 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1587,7 +1944,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1597,6 +1954,9 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1616,7 +1976,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= (int(b) & 0x7F) << shift
+				v |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1636,7 +1996,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.ProxyListenPort |= (int32(b) & 0x7F) << shift
+				m.ProxyListenPort |= int32(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1655,7 +2015,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.ProxyHttpPort |= (int32(b) & 0x7F) << shift
+				m.ProxyHttpPort |= int32(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1674,7 +2034,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1683,11 +2043,14 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
 			if m.ConnectTimeout == nil {
-				m.ConnectTimeout = &google_protobuf.Duration{}
+				m.ConnectTimeout = &types.Duration{}
 			}
 			if err := m.ConnectTimeout.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
 				return err
@@ -1707,7 +2070,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1717,6 +2080,9 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1736,7 +2102,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1746,6 +2112,9 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1765,7 +2134,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.IngressControllerMode |= (MeshConfig_IngressControllerMode(b) & 0x7F) << shift
+				m.IngressControllerMode |= MeshConfig_IngressControllerMode(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1784,7 +2153,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.AuthPolicy |= (MeshConfig_AuthPolicy(b) & 0x7F) << shift
+				m.AuthPolicy |= MeshConfig_AuthPolicy(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1803,7 +2172,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1812,11 +2181,14 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
 			if m.RdsRefreshDelay == nil {
-				m.RdsRefreshDelay = &google_protobuf.Duration{}
+				m.RdsRefreshDelay = &types.Duration{}
 			}
 			if err := m.RdsRefreshDelay.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
 				return err
@@ -1836,7 +2208,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= (int(b) & 0x7F) << shift
+				v |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1856,7 +2228,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1866,6 +2238,9 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1885,7 +2260,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1894,6 +2269,9 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1918,7 +2296,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1928,6 +2306,9 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1947,7 +2328,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -1956,6 +2337,9 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -1980,7 +2364,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= (int(b) & 0x7F) << shift
+				v |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2000,7 +2384,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2010,6 +2394,9 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2029,7 +2416,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2038,11 +2425,14 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
 			if m.SdsRefreshDelay == nil {
-				m.SdsRefreshDelay = &google_protobuf.Duration{}
+				m.SdsRefreshDelay = &types.Duration{}
 			}
 			if err := m.SdsRefreshDelay.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
 				return err
@@ -2062,7 +2452,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2071,6 +2461,9 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2093,7 +2486,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= (int(b) & 0x7F) << shift
+				v |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2113,7 +2506,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2123,6 +2516,9 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2142,7 +2538,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= (int(b) & 0x7F) << shift
+				v |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2162,7 +2558,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2172,6 +2568,9 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2191,7 +2590,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.AccessLogEncoding |= (MeshConfig_AccessLogEncoding(b) & 0x7F) << shift
+				m.AccessLogEncoding |= MeshConfig_AccessLogEncoding(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2210,7 +2609,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2219,11 +2618,14 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
 			if m.TcpKeepalive == nil {
-				m.TcpKeepalive = &istio_networking_v1alpha31.ConnectionPoolSettings_TCPSettings_TcpKeepalive{}
+				m.TcpKeepalive = &v1alpha3.ConnectionPoolSettings_TCPSettings_TcpKeepalive{}
 			}
 			if err := m.TcpKeepalive.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
 				return err
@@ -2243,7 +2645,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= (int(b) & 0x7F) << shift
+				v |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2263,7 +2665,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				v |= (int(b) & 0x7F) << shift
+				v |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2283,7 +2685,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2293,6 +2695,9 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2312,7 +2717,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2322,6 +2727,9 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2341,7 +2749,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2351,6 +2759,9 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2370,7 +2781,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2380,6 +2791,9 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2399,7 +2813,7 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2408,6 +2822,9 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2418,6 +2835,42 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 				return err
 			}
 			iNdEx = postIndex
+		case 36:
+			if wireType != 2 {
+				return fmt.Errorf("proto: wrong wireType = %d for field DnsRefreshRate", wireType)
+			}
+			var msglen int
+			for shift := uint(0); ; shift += 7 {
+				if shift >= 64 {
+					return ErrIntOverflowConfig
+				}
+				if iNdEx >= l {
+					return io.ErrUnexpectedEOF
+				}
+				b := dAtA[iNdEx]
+				iNdEx++
+				msglen |= int(b&0x7F) << shift
+				if b < 0x80 {
+					break
+				}
+			}
+			if msglen < 0 {
+				return ErrInvalidLengthConfig
+			}
+			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
+			if postIndex > l {
+				return io.ErrUnexpectedEOF
+			}
+			if m.DnsRefreshRate == nil {
+				m.DnsRefreshRate = &types.Duration{}
+			}
+			if err := m.DnsRefreshRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+				return err
+			}
+			iNdEx = postIndex
 		default:
 			iNdEx = preIndex
 			skippy, err := skipConfig(dAtA[iNdEx:])
@@ -2427,9 +2880,13 @@ func (m *MeshConfig) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthConfig
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -2454,7 +2911,7 @@ func (m *MeshConfig_OutboundTrafficPolicy) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -2482,7 +2939,7 @@ func (m *MeshConfig_OutboundTrafficPolicy) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.Mode |= (MeshConfig_OutboundTrafficPolicy_Mode(b) & 0x7F) << shift
+				m.Mode |= MeshConfig_OutboundTrafficPolicy_Mode(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2496,9 +2953,13 @@ func (m *MeshConfig_OutboundTrafficPolicy) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthConfig
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -2523,7 +2984,7 @@ func (m *ConfigSource) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -2551,7 +3012,7 @@ func (m *ConfigSource) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2561,6 +3022,9 @@ func (m *ConfigSource) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2580,7 +3044,7 @@ func (m *ConfigSource) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2589,11 +3053,14 @@ func (m *ConfigSource) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
 			if m.TlsSettings == nil {
-				m.TlsSettings = &istio_networking_v1alpha31.TLSSettings{}
+				m.TlsSettings = &v1alpha3.TLSSettings{}
 			}
 			if err := m.TlsSettings.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
 				return err
@@ -2608,9 +3075,13 @@ func (m *ConfigSource) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthConfig
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -2635,7 +3106,7 @@ func (m *LocalityLoadBalancerSetting) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -2663,7 +3134,7 @@ func (m *LocalityLoadBalancerSetting) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2672,6 +3143,9 @@ func (m *LocalityLoadBalancerSetting) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2694,7 +3168,7 @@ func (m *LocalityLoadBalancerSetting) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2703,6 +3177,9 @@ func (m *LocalityLoadBalancerSetting) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2720,9 +3197,13 @@ func (m *LocalityLoadBalancerSetting) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthConfig
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -2747,7 +3228,7 @@ func (m *LocalityLoadBalancerSetting_Distribute) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -2775,7 +3256,7 @@ func (m *LocalityLoadBalancerSetting_Distribute) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2785,6 +3266,9 @@ func (m *LocalityLoadBalancerSetting_Distribute) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2804,7 +3288,7 @@ func (m *LocalityLoadBalancerSetting_Distribute) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				msglen |= (int(b) & 0x7F) << shift
+				msglen |= int(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2813,6 +3297,9 @@ func (m *LocalityLoadBalancerSetting_Distribute) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + msglen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2833,7 +3320,7 @@ func (m *LocalityLoadBalancerSetting_Distribute) Unmarshal(dAtA []byte) error {
 					}
 					b := dAtA[iNdEx]
 					iNdEx++
-					wire |= (uint64(b) & 0x7F) << shift
+					wire |= uint64(b&0x7F) << shift
 					if b < 0x80 {
 						break
 					}
@@ -2850,7 +3337,7 @@ func (m *LocalityLoadBalancerSetting_Distribute) Unmarshal(dAtA []byte) error {
 						}
 						b := dAtA[iNdEx]
 						iNdEx++
-						stringLenmapkey |= (uint64(b) & 0x7F) << shift
+						stringLenmapkey |= uint64(b&0x7F) << shift
 						if b < 0x80 {
 							break
 						}
@@ -2860,6 +3347,9 @@ func (m *LocalityLoadBalancerSetting_Distribute) Unmarshal(dAtA []byte) error {
 						return ErrInvalidLengthConfig
 					}
 					postStringIndexmapkey := iNdEx + intStringLenmapkey
+					if postStringIndexmapkey < 0 {
+						return ErrInvalidLengthConfig
+					}
 					if postStringIndexmapkey > l {
 						return io.ErrUnexpectedEOF
 					}
@@ -2875,7 +3365,7 @@ func (m *LocalityLoadBalancerSetting_Distribute) Unmarshal(dAtA []byte) error {
 						}
 						b := dAtA[iNdEx]
 						iNdEx++
-						mapvalue |= (uint32(b) & 0x7F) << shift
+						mapvalue |= uint32(b&0x7F) << shift
 						if b < 0x80 {
 							break
 						}
@@ -2906,9 +3396,13 @@ func (m *LocalityLoadBalancerSetting_Distribute) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthConfig
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -2933,7 +3427,7 @@ func (m *LocalityLoadBalancerSetting_Failover) Unmarshal(dAtA []byte) error {
 			}
 			b := dAtA[iNdEx]
 			iNdEx++
-			wire |= (uint64(b) & 0x7F) << shift
+			wire |= uint64(b&0x7F) << shift
 			if b < 0x80 {
 				break
 			}
@@ -2961,7 +3455,7 @@ func (m *LocalityLoadBalancerSetting_Failover) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -2971,6 +3465,9 @@ func (m *LocalityLoadBalancerSetting_Failover) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -2990,7 +3487,7 @@ func (m *LocalityLoadBalancerSetting_Failover) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				stringLen |= (uint64(b) & 0x7F) << shift
+				stringLen |= uint64(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
@@ -3000,6 +3497,9 @@ func (m *LocalityLoadBalancerSetting_Failover) Unmarshal(dAtA []byte) error {
 				return ErrInvalidLengthConfig
 			}
 			postIndex := iNdEx + intStringLen
+			if postIndex < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if postIndex > l {
 				return io.ErrUnexpectedEOF
 			}
@@ -3014,9 +3514,13 @@ func (m *LocalityLoadBalancerSetting_Failover) Unmarshal(dAtA []byte) error {
 			if skippy < 0 {
 				return ErrInvalidLengthConfig
 			}
+			if (iNdEx + skippy) < 0 {
+				return ErrInvalidLengthConfig
+			}
 			if (iNdEx + skippy) > l {
 				return io.ErrUnexpectedEOF
 			}
+			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
 			iNdEx += skippy
 		}
 	}
@@ -3080,10 +3584,13 @@ func skipConfig(dAtA []byte) (n int, err error) {
 					break
 				}
 			}
-			iNdEx += length
 			if length < 0 {
 				return 0, ErrInvalidLengthConfig
 			}
+			iNdEx += length
+			if iNdEx < 0 {
+				return 0, ErrInvalidLengthConfig
+			}
 			return iNdEx, nil
 		case 3:
 			for {
@@ -3112,6 +3619,9 @@ func skipConfig(dAtA []byte) (n int, err error) {
 					return 0, err
 				}
 				iNdEx = start + next
+				if iNdEx < 0 {
+					return 0, ErrInvalidLengthConfig
+				}
 			}
 			return iNdEx, nil
 		case 4:
@@ -3130,101 +3640,3 @@ var (
 	ErrInvalidLengthConfig = fmt.Errorf("proto: negative length found during unmarshaling")
 	ErrIntOverflowConfig   = fmt.Errorf("proto: integer overflow")
 )
-
-func init() { proto.RegisterFile("mesh/v1alpha1/config.proto", fileDescriptorConfig) }
-
-var fileDescriptorConfig = []byte{
-	// 1463 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xdd, 0x72, 0xdb, 0xb8,
-	0x15, 0x0e, 0x65, 0x27, 0x76, 0x8e, 0x7e, 0x4c, 0xc1, 0x71, 0x96, 0x51, 0xba, 0x5e, 0x59, 0x3b,
-	0x49, 0x34, 0x9e, 0x8e, 0xdc, 0x38, 0xb3, 0x33, 0xc9, 0xf6, 0xca, 0x91, 0xe4, 0x8d, 0xbd, 0x8a,
-	0xe5, 0xa1, 0xe8, 0xb4, 0x69, 0x2f, 0x50, 0x98, 0x84, 0x24, 0xd4, 0x14, 0xc1, 0x21, 0x40, 0x27,
-	0x7a, 0xa7, 0x76, 0xa6, 0x8f, 0xd1, 0xcb, 0x3e, 0x42, 0x27, 0x77, 0x7d, 0x8b, 0x0e, 0x7e, 0x68,
-	0x29, 0x59, 0xcd, 0xba, 0xdb, 0xbd, 0x23, 0xbe, 0xf3, 0x9d, 0xef, 0x00, 0xe7, 0x1c, 0xe0, 0x10,
-	0x1a, 0x33, 0x2a, 0xa6, 0x07, 0xd7, 0xcf, 0x49, 0x9c, 0x4e, 0xc9, 0xf3, 0x83, 0x90, 0x27, 0x63,
-	0x36, 0xe9, 0xa4, 0x19, 0x97, 0x1c, 0x6d, 0x33, 0x21, 0x19, 0xef, 0x28, 0x46, 0xa7, 0x60, 0x34,
-	0x76, 0x27, 0x9c, 0x4f, 0x62, 0x7a, 0xa0, 0x29, 0x97, 0xf9, 0xf8, 0x20, 0xca, 0x33, 0x22, 0x19,
-	0x4f, 0x8c, 0x53, 0xe3, 0xd1, 0xe7, 0x82, 0x69, 0xc6, 0x3f, 0xce, 0xad, 0x69, 0x3f, 0xa1, 0xf2,
-	0x03, 0xcf, 0xae, 0x58, 0x32, 0x29, 0x08, 0x2f, 0x0e, 0x22, 0x2a, 0x24, 0x4b, 0xb4, 0x02, 0xce,
-	0xf2, 0x98, 0x1a, 0x6e, 0xeb, 0x3f, 0x08, 0xe0, 0x2d, 0x15, 0xd3, 0xae, 0xde, 0x10, 0xfa, 0x2d,
-	0xa0, 0x19, 0xfb, 0x48, 0x33, 0x1c, 0x4e, 0x69, 0x78, 0x85, 0x05, 0xcd, 0xae, 0x69, 0xe6, 0x39,
-	0x4d, 0xa7, 0x7d, 0xdf, 0x77, 0xb5, 0xa5, 0xab, 0x0c, 0x23, 0x8d, 0xa3, 0x0e, 0x6c, 0x1b, 0x76,
-	0x46, 0x53, 0x9e, 0xc9, 0x82, 0x5e, 0xd2, 0xf4, 0xba, 0x36, 0xf9, 0xda, 0x62, 0xf9, 0x87, 0xb0,
-	0x13, 0x31, 0x41, 0x2e, 0x63, 0x8a, 0x53, 0x1e, 0xb3, 0x70, 0x6e, 0xc2, 0x08, 0x6f, 0xad, 0xe9,
-	0xb4, 0x37, 0xfd, 0x6d, 0x6b, 0x3c, 0xd7, 0x36, 0x1d, 0x48, 0xa0, 0x7d, 0xa8, 0xeb, 0xb3, 0xe1,
-	0x98, 0x09, 0x49, 0x13, 0xac, 0xe4, 0xbc, 0xf5, 0xa6, 0xd3, 0xbe, 0xeb, 0x6f, 0x69, 0xc3, 0x40,
-	0xe3, 0xe7, 0x3c, 0x93, 0xe8, 0x29, 0x18, 0x08, 0x4f, 0xa5, 0x4c, 0x0d, 0xf3, 0xae, 0x66, 0x56,
-	0x35, 0xfc, 0x46, 0xca, 0x54, 0xf3, 0x5e, 0xc3, 0x56, 0xc8, 0x93, 0x84, 0x86, 0x12, 0x4b, 0x36,
-	0xa3, 0x3c, 0x97, 0xde, 0xbd, 0xa6, 0xd3, 0x2e, 0x1f, 0x3e, 0xea, 0x98, 0xac, 0x77, 0x8a, 0xac,
-	0x77, 0x7a, 0x36, 0xeb, 0x7e, 0xcd, 0x7a, 0x04, 0xc6, 0x01, 0x7d, 0x0b, 0x55, 0x96, 0x4c, 0x32,
-	0x2a, 0x04, 0x0e, 0x63, 0x22, 0x84, 0xb7, 0xa1, 0x4f, 0x5d, 0xb1, 0x60, 0x57, 0x61, 0xe8, 0x19,
-	0x6c, 0x15, 0x24, 0x95, 0x1b, 0x16, 0x52, 0x6f, 0x53, 0xd3, 0x6a, 0x16, 0x1e, 0x19, 0x14, 0xcd,
-	0xe0, 0xab, 0x1b, 0x35, 0x9e, 0xc8, 0x8c, 0xc7, 0x31, 0xcd, 0xf0, 0x8c, 0x47, 0xd4, 0xbb, 0xdf,
-	0x74, 0xda, 0xb5, 0xc3, 0xef, 0x3a, 0x2b, 0x9a, 0xa4, 0xb3, 0xa8, 0x5c, 0xe7, 0xc4, 0xc6, 0xbd,
-	0xf1, 0x7e, 0xcb, 0x23, 0xea, 0xef, 0xb0, 0x55, 0x30, 0x1a, 0x42, 0x99, 0xe4, 0x72, 0x6a, 0xab,
-	0xe0, 0x81, 0x0e, 0xb1, 0x7f, 0x5b, 0x88, 0xa3, 0x5c, 0x4e, 0x4d, 0x6d, 0x5e, 0x97, 0x3c, 0xc7,
-	0x07, 0x72, 0xb3, 0x46, 0x27, 0x50, 0xcf, 0x22, 0x81, 0x33, 0x3a, 0xce, 0xa8, 0x98, 0xe2, 0x88,
-	0xc6, 0x64, 0xee, 0x95, 0x6f, 0xc9, 0xa9, 0x56, 0xd9, 0xca, 0x22, 0xe1, 0x1b, 0xb7, 0x9e, 0xf2,
-	0x42, 0x4f, 0xa0, 0x46, 0x13, 0xdd, 0x23, 0x32, 0x23, 0x21, 0x4b, 0x26, 0x5e, 0x45, 0x77, 0x47,
-	0xd5, 0xa0, 0x81, 0x01, 0x55, 0xad, 0x49, 0x18, 0xaa, 0x84, 0xc5, 0x7c, 0x82, 0xc7, 0x2c, 0xa6,
-	0x5e, 0x55, 0xa7, 0xb6, 0x6a, 0xe0, 0x01, 0x9f, 0x1c, 0xb3, 0x98, 0xa2, 0x1f, 0xa0, 0x16, 0xd1,
-	0x31, 0xc9, 0x63, 0x89, 0xcd, 0xa5, 0xf3, 0x6a, 0x7a, 0x5b, 0xcd, 0x95, 0xa7, 0x3d, 0x57, 0x7d,
-	0x62, 0x8e, 0xeb, 0x57, 0xad, 0x9f, 0xbd, 0x1a, 0xcf, 0xa0, 0x6a, 0x9a, 0x9d, 0x44, 0x91, 0x4a,
-	0xa9, 0xe7, 0xaa, 0x70, 0xfa, 0x0c, 0x15, 0x6d, 0x38, 0x32, 0xb8, 0xaa, 0x25, 0xcf, 0xe5, 0x25,
-	0xcf, 0x93, 0x48, 0x1d, 0x61, 0x3c, 0x66, 0x61, 0x91, 0xe8, 0xba, 0x0e, 0x7d, 0x6b, 0x2d, 0x87,
-	0xd6, 0x3d, 0x30, 0xde, 0x26, 0xc7, 0xfe, 0x0e, 0x5f, 0x05, 0xa3, 0x1e, 0x7c, 0x63, 0xf3, 0x15,
-	0xc6, 0x8c, 0x26, 0x12, 0x0b, 0x16, 0x7d, 0x7e, 0xbf, 0xbc, 0x6d, 0x9d, 0xc0, 0xc7, 0x86, 0xd6,
-	0xd5, 0xac, 0x11, 0x8b, 0x96, 0xef, 0x19, 0x6a, 0x42, 0x45, 0x44, 0x02, 0xe7, 0x91, 0xc0, 0x29,
-	0x91, 0x53, 0xef, 0x81, 0xce, 0x25, 0x88, 0x48, 0x5c, 0x44, 0xe2, 0x9c, 0xc8, 0xa9, 0x2a, 0xb1,
-	0xf8, 0x49, 0x89, 0x77, 0xfe, 0xa7, 0x12, 0x8b, 0x2f, 0x4a, 0xfc, 0x06, 0x6a, 0xa6, 0x16, 0x58,
-	0xf0, 0x3c, 0x0b, 0xa9, 0xf0, 0x1e, 0x36, 0xd7, 0xda, 0xe5, 0xc3, 0xbd, 0x95, 0x89, 0x31, 0x49,
-	0x19, 0x69, 0xa6, 0x5f, 0x0d, 0x97, 0x56, 0x02, 0xbd, 0x80, 0x87, 0xf6, 0xf0, 0x6a, 0x6f, 0x92,
-	0x5f, 0xd1, 0x04, 0xcf, 0x78, 0x9e, 0x48, 0xef, 0x2b, 0xf3, 0xa4, 0x18, 0xeb, 0x28, 0x12, 0x81,
-	0xb2, 0xbd, 0x55, 0x26, 0xf5, 0xa4, 0x2c, 0xb7, 0x0e, 0xcf, 0x66, 0x44, 0x7a, 0x9e, 0x3e, 0xf0,
-	0xd6, 0xa2, 0x79, 0x34, 0xac, 0x02, 0x2c, 0xa7, 0x12, 0x8f, 0x09, 0x8b, 0x31, 0x4f, 0x69, 0xe2,
-	0x3d, 0x32, 0x01, 0xd2, 0x45, 0x12, 0x8f, 0x09, 0x8b, 0x87, 0x29, 0x4d, 0xd0, 0x1e, 0x54, 0x64,
-	0x96, 0x0b, 0x89, 0x23, 0x3e, 0x23, 0x2c, 0xf1, 0x1a, 0x5a, 0xbb, 0xac, 0xb1, 0x9e, 0x86, 0x10,
-	0x81, 0xed, 0xa5, 0x3d, 0xd0, 0x24, 0xe4, 0x91, 0x6a, 0xf5, 0xc7, 0xfa, 0x26, 0x3e, 0xbf, 0xf5,
-	0x26, 0x16, 0xbb, 0xec, 0x5b, 0x47, 0xbf, 0x4e, 0xbe, 0x84, 0x10, 0x87, 0xaa, 0x0c, 0x53, 0x7c,
-	0x45, 0x69, 0x4a, 0x62, 0x76, 0x4d, 0xbd, 0xdf, 0xe8, 0x62, 0x9d, 0x5a, 0xf1, 0xc5, 0x90, 0x28,
-	0x42, 0xbc, 0x50, 0xa9, 0x56, 0x6f, 0x1c, 0xe3, 0xc9, 0x39, 0xe7, 0xf1, 0x88, 0x4a, 0xc9, 0x92,
-	0x89, 0xe8, 0x04, 0xdd, 0xf3, 0xc5, 0x77, 0x98, 0xfe, 0x58, 0x28, 0xfa, 0x15, 0xb9, 0xb4, 0x42,
-	0xfb, 0x80, 0x74, 0x0f, 0x09, 0x8a, 0xaf, 0x5e, 0x0a, 0x2c, 0x08, 0xfe, 0xeb, 0x07, 0xe9, 0x7d,
-	0xad, 0xf3, 0x54, 0x53, 0x9d, 0x24, 0xe8, 0x8f, 0x2f, 0xc5, 0x88, 0x9c, 0x7e, 0x90, 0xe8, 0x1c,
-	0x9e, 0xa8, 0x3e, 0x0d, 0x49, 0x86, 0x25, 0xc7, 0x92, 0xc6, 0x74, 0x46, 0x65, 0x36, 0xc7, 0x82,
-	0x0a, 0xa1, 0x46, 0x94, 0xea, 0xf0, 0x84, 0xc9, 0xb9, 0xb7, 0xab, 0xdd, 0xf7, 0x2c, 0x39, 0xe0,
-	0x41, 0x41, 0x1d, 0x19, 0xe6, 0x91, 0x25, 0xa2, 0x57, 0xf0, 0xa8, 0xb8, 0xe8, 0xf6, 0xad, 0xc5,
-	0xf4, 0xa3, 0x1e, 0x4b, 0x92, 0x7b, 0xdf, 0x34, 0xd7, 0xda, 0xf7, 0xfd, 0x87, 0x96, 0x60, 0x5f,
-	0xdd, 0xbe, 0x36, 0x07, 0x1c, 0xbd, 0x81, 0xbd, 0xc2, 0xf5, 0x9a, 0x65, 0x32, 0x27, 0xf1, 0x0a,
-	0x89, 0xa6, 0x96, 0xf8, 0xda, 0x12, 0xdf, 0x19, 0xde, 0x97, 0x4a, 0xa7, 0xd0, 0x2a, 0x94, 0xbe,
-	0x1c, 0xb8, 0x4b, 0x52, 0x7b, 0x5a, 0x6a, 0xd7, 0x32, 0x7b, 0x0b, 0xa2, 0x9f, 0xc7, 0x0b, 0xad,
-	0x27, 0x50, 0xcb, 0x38, 0x97, 0x38, 0x21, 0x33, 0x2a, 0x52, 0x12, 0x52, 0xaf, 0x65, 0x1e, 0x38,
-	0x85, 0x9e, 0x15, 0x20, 0xfa, 0x0b, 0x6c, 0xc7, 0x3c, 0x24, 0x31, 0x93, 0x73, 0x1c, 0x5f, 0x62,
-	0x61, 0x0a, 0xe5, 0x7d, 0xab, 0x8b, 0xfd, 0xbb, 0x95, 0x9d, 0x34, 0xb0, 0xfc, 0x01, 0x27, 0xd1,
-	0x6b, 0x12, 0x93, 0x24, 0xa4, 0x99, 0x2d, 0xb0, 0x5f, 0x2f, 0xc4, 0x06, 0x97, 0x16, 0x6a, 0xfc,
-	0xdd, 0x81, 0x9d, 0x95, 0x4f, 0x12, 0x3a, 0x83, 0x75, 0x3d, 0xa3, 0x1c, 0xdd, 0xb6, 0xdf, 0xff,
-	0x5f, 0xef, 0x5a, 0x47, 0x0f, 0x2a, 0xad, 0xd3, 0xea, 0xc1, 0xba, 0x9e, 0x4f, 0x75, 0xa8, 0xfa,
-	0xfd, 0x1f, 0x4e, 0x46, 0x81, 0xff, 0x1e, 0x0f, 0xcf, 0x06, 0xef, 0xdd, 0x3b, 0xa8, 0x0a, 0xf7,
-	0x8f, 0x06, 0x83, 0xe1, 0x1f, 0xf0, 0xd1, 0xd9, 0x7b, 0xd7, 0x69, 0xad, 0x6f, 0x96, 0xdc, 0xd2,
-	0xfe, 0x83, 0x77, 0x27, 0x7e, 0x70, 0x71, 0x34, 0xc0, 0xa3, 0xbe, 0xff, 0xee, 0xa4, 0xdb, 0xd7,
-	0xe4, 0xd6, 0x2b, 0xd8, 0x59, 0x39, 0x0d, 0xd1, 0x06, 0xac, 0x0d, 0x8f, 0x8f, 0xdd, 0x3b, 0xa8,
-	0x0c, 0x1b, 0xbd, 0xfe, 0xf1, 0xd1, 0xc5, 0x20, 0x70, 0x1d, 0x04, 0x70, 0x6f, 0x14, 0xf8, 0x27,
-	0xdd, 0xc0, 0x2d, 0xb5, 0x9e, 0x02, 0x2c, 0xa6, 0x1c, 0xda, 0x84, 0xf5, 0xb3, 0xe1, 0x59, 0xdf,
-	0xbd, 0x83, 0x6a, 0x00, 0x6f, 0x2f, 0x74, 0xa4, 0x60, 0x30, 0x72, 0x9d, 0xd6, 0x33, 0xa8, 0xff,
-	0xe4, 0x0e, 0x2a, 0x7a, 0xd0, 0xff, 0x63, 0xe0, 0xde, 0x51, 0x5f, 0xa7, 0xa3, 0xe1, 0x99, 0xeb,
-	0x9c, 0xae, 0x6f, 0x6e, 0xb9, 0xee, 0xe9, 0xfa, 0x26, 0x72, 0xb7, 0x5b, 0x02, 0x2a, 0xcb, 0x6f,
-	0x19, 0xf2, 0x60, 0xa3, 0x98, 0x25, 0xe6, 0x0f, 0xab, 0x58, 0xa2, 0x13, 0xa8, 0xc8, 0x58, 0x14,
-	0xb5, 0x14, 0xfa, 0x8f, 0xaa, 0x7c, 0xf8, 0xf4, 0x67, 0x6e, 0x6e, 0x30, 0x18, 0x15, 0x57, 0xd4,
-	0x2f, 0xcb, 0x58, 0x14, 0x8b, 0xd6, 0x3f, 0xd6, 0xe0, 0xf1, 0xcf, 0xd4, 0x1b, 0xfd, 0x19, 0x20,
-	0x62, 0x42, 0x66, 0xec, 0x32, 0x97, 0xaa, 0x90, 0xea, 0x1d, 0xfe, 0xfd, 0x2f, 0xed, 0x9a, 0x4e,
-	0xef, 0x46, 0xc2, 0x5f, 0x92, 0x43, 0x17, 0xb0, 0xa9, 0x1e, 0x4c, 0x6e, 0xfe, 0x0a, 0x95, 0xf4,
-	0xab, 0x5f, 0x2c, 0x7d, 0x6c, 0x05, 0xfc, 0x1b, 0xa9, 0xc6, 0xdf, 0x1c, 0x80, 0x45, 0x44, 0x84,
-	0x60, 0x7d, 0x9c, 0xf1, 0x99, 0x4d, 0xa2, 0xfe, 0x46, 0x23, 0x28, 0x49, 0x6e, 0x63, 0x76, 0x7f,
-	0xc5, 0x71, 0x3a, 0x01, 0xef, 0x27, 0x32, 0x9b, 0xfb, 0x25, 0xc9, 0x1b, 0xdf, 0xc1, 0x86, 0x5d,
-	0x22, 0x17, 0xd6, 0xae, 0xe8, 0xdc, 0x86, 0x54, 0x9f, 0xe8, 0x01, 0xdc, 0xbd, 0x26, 0x71, 0x4e,
-	0x75, 0xb1, 0xaa, 0xbe, 0x59, 0x7c, 0x5f, 0x7a, 0xe9, 0x34, 0x3a, 0xb0, 0x59, 0x1c, 0x62, 0xe5,
-	0x5e, 0x6b, 0x76, 0xaf, 0x0a, 0x29, 0x49, 0xfe, 0xba, 0xfd, 0xcf, 0x4f, 0xbb, 0xce, 0xbf, 0x3e,
-	0xed, 0x3a, 0xff, 0xfe, 0xb4, 0xeb, 0xfc, 0xa9, 0x61, 0x36, 0xcf, 0xf8, 0x01, 0x49, 0xd9, 0xc1,
-	0x67, 0x7f, 0xfd, 0x97, 0xf7, 0xf4, 0xc0, 0x7d, 0xf1, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe4,
-	0xc5, 0xfa, 0x45, 0x5e, 0x0c, 0x00, 0x00,
-}
diff --git a/mesh/v1alpha1/config.proto b/mesh/v1alpha1/config.proto
index 8bc13a91a00..062e1e60e89 100644
--- a/mesh/v1alpha1/config.proto
+++ b/mesh/v1alpha1/config.proto
@@ -39,8 +39,8 @@ option go_package="istio.io/api/mesh/v1alpha1";
 message MeshConfig {
   // Address of the server that will be used by the proxies for policy
   // check calls. By using different names for mixerCheckServer and
-  // mixerReportServer, it is possible to have one set of mixer servers handle
-  // policy check calls while another set of mixer servers handle telemetry
+  // mixerReportServer, it is possible to have one set of Mixer servers handle
+  // policy check calls while another set of Mixer servers handle telemetry
   // calls.
   //
   // NOTE: Omitting mixerCheckServer while specifying mixerReportServer is
@@ -51,17 +51,17 @@ message MeshConfig {
   // calls.
   string mixer_report_server = 2;
 
-  // Disable policy checks by the mixer service. Default
-  // is false, i.e. mixer policy check is enabled by default.
+  // Disable policy checks by the Mixer service. Default
+  // is false, i.e. Mixer policy check is enabled by default.
   bool disable_policy_checks = 3;
 
-  // Allow all traffic in cases when the mixer policy service cannot be reached.
+  // Allow all traffic in cases when the Mixer policy service cannot be reached.
   // Default is false which means the traffic is denied when the client is unable
   // to connect to Mixer.
   bool policy_check_fail_open = 25;
 
-  // Enable session affinity for envoy mixer reports so that calls from a proxy will
-  // always target the same mixer instance.
+  // Enable session affinity for Envoy Mixer reports so that calls from a proxy will
+  // always target the same Mixer instance.
   bool sidecar_to_telemetry_session_affinity = 30;
 
   // Port on which Envoy should listen for incoming connections from
@@ -82,7 +82,7 @@ message MeshConfig {
   // "kubernetes.io/ingress.class" annotation.
   string ingress_class = 7;
 
-  // Name of the kubernetes service used for the istio ingress controller.
+  // Name of theKubernetes service used for the istio ingress controller.
   string ingress_service = 8;
 
   enum IngressControllerMode {
@@ -93,7 +93,7 @@ message MeshConfig {
     // contain any annotation or whose annotations match the value
     // specified in the ingress_class parameter described earlier. Use this
     // mode if Istio ingress controller will be the default ingress
-    // controller for the entire kubernetes cluster.
+    // controller for the entireKubernetes cluster.
     DEFAULT = 1;
 
     // Istio ingress controller will only act on ingress resources whose
@@ -182,7 +182,7 @@ message MeshConfig {
   // Enables clide side policy checks.
   bool enable_client_side_policy_check = 19;
 
-  // Unix Domain Socket through which envoy communicates with NodeAgent SDS to get key/cert for mTLS.
+  // Unix Domain Socket through which Envoy communicates with NodeAgent SDS to get key/cert for mTLS.
   // Use secret-mount files instead of SDS if set to empty.
   string sds_uds_path = 20;
 
@@ -197,14 +197,14 @@ message MeshConfig {
   // $hide_from_docs
   // This flag is used by secret discovery service(SDS).
   // If set to true(prerequisite: https://kubernetes.io/docs/concepts/storage/volumes/#projected), Istio will inject volumes mount
-  // for k8s service account trustworthy JWT(which is avaialbe for k8s 1.12 or higher), so that K8s API server
-  // mounts k8s service account trustworthy JWT to envoy container, which will be used to request key/cert eventually.
-  // This isn't supported for non-k8s case.
+  // for Kubernetes service account trustworthy JWT(which is available with Kubernetes 1.12 or higher), so that the Kubernetes API server
+  // mounts Kubernetes service account trustworthy JWT to the Envoy container, which will be used to request key/cert eventually.
+  // This isn't supported for non-Kubernetes cases.
   bool enable_sds_token_mount = 23;
 
   // $hide_from_docs
   // This flag is used by secret discovery service(SDS).
-  // If set to true, envoy will fetch normal k8s service account JWT from '/var/run/secrets/kubernetes.io/serviceaccount/token'
+  // If set to true, Envoy will fetch a normal Kubernetes service account JWT from '/var/run/secrets/kubernetes.io/serviceaccount/token'
   // (https://kubernetes.io/docs/tasks/access-application-cluster/access-cluster/#accessing-the-api-from-a-pod)
   // and pass to sds server, which will be used to request key/cert eventually.
   // If both enable_sds_token_mount and sds_use_k8s_sa_jwt are set to true, enable_sds_token_mount(trustworthy jwt) takes precedence.
@@ -212,7 +212,7 @@ message MeshConfig {
   bool sds_use_k8s_sa_jwt = 29;
 
   // The trust domain corresponds to the trust root of a system.
-  // Refer to https://github.com/spiffe/spiffe/blob/master/standards/SPIFFE-ID.md#21-trust-domain
+  // Refer to [SPIFEE-ID](https://github.com/spiffe/spiffe/blob/master/standards/SPIFFE-ID.md#21-trust-domain)
   // Fallback to old identity format(without trust domain) if not set.
   string trust_domain = 26;
 
@@ -279,9 +279,11 @@ message MeshConfig {
   // Locality based load balancing distribution or failover settings.
   LocalityLoadBalancerSetting locality_lb_setting = 35;
 
+  // Configures DNS refresh rate for Envoy clusters of type STRICT_DNS
+  google.protobuf.Duration dns_refresh_rate = 36;
 
   // $hide_from_docs
-  // Next available field number: 36
+  // Next available field number: 37
 }
 
 // ConfigSource describes information about a configuration store inside a
@@ -294,7 +296,7 @@ message ConfigSource {
   string address = 1;
 
   // Use the tls_settings to specify the tls mode to use. If the MCP server
-  // uses Istio MTLS and shares the root CA with Pilot, specify the TLS
+  // uses Istio mutual TLS and shares the root CA with Pilot, specify the TLS
   // mode as ISTIO_MUTUAL.
   istio.networking.v1alpha3.TLSSettings tls_settings = 2;
 }
@@ -305,7 +307,7 @@ message ConfigSource {
 // traffic originates and where it will terminate. These localities are
 // specified using arbitrary labels that designate a hierarchy of localities in
 // {region}/{zone}/{sub-zone} form. For additional detail refer to
-// https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/load_balancing/locality_weight
+// [Locality Weight](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/load_balancing/locality_weight)
 // The following example shows how to setup locality weights mesh-wide.
 //
 // Given a mesh with workloads and their service deployed to "us-west/zone1/*"
diff --git a/mesh/v1alpha1/istio.mesh.v1alpha1.pb.html b/mesh/v1alpha1/istio.mesh.v1alpha1.pb.html
index 8bcedcf095a..99733e50570 100644
--- a/mesh/v1alpha1/istio.mesh.v1alpha1.pb.html
+++ b/mesh/v1alpha1/istio.mesh.v1alpha1.pb.html
@@ -75,10 +75,10 @@ 

ConfigSource

tlsSettings -istio.networking.v1alpha3.TLSSettings +istio.networking.v1alpha3.TLSSettings

Use the tlssettings to specify the tls mode to use. If the MCP server -uses Istio MTLS and shares the root CA with Pilot, specify the TLS +uses Istio mutual TLS and shares the root CA with Pilot, specify the TLS mode as ISTIOMUTUAL.

@@ -93,7 +93,7 @@

LocalityLoadBalancerSetting

traffic originates and where it will terminate. These localities are specified using arbitrary labels that designate a hierarchy of localities in {region}/{zone}/{sub-zone} form. For additional detail refer to -https://www.envoyproxy.io/docs/envoy/latest/intro/archoverview/loadbalancing/locality_weight +Locality Weight The following example shows how to setup locality weights mesh-wide.

Given a mesh with workloads and their service deployed to “us-west/zone1/” @@ -275,8 +275,8 @@

MeshConfig

Address of the server that will be used by the proxies for policy check calls. By using different names for mixerCheckServer and -mixerReportServer, it is possible to have one set of mixer servers handle -policy check calls while another set of mixer servers handle telemetry +mixerReportServer, it is possible to have one set of Mixer servers handle +policy check calls while another set of Mixer servers handle telemetry calls.

NOTE: Omitting mixerCheckServer while specifying mixerReportServer is @@ -297,8 +297,8 @@

MeshConfig

disablePolicyChecks bool -

Disable policy checks by the mixer service. Default -is false, i.e. mixer policy check is enabled by default.

+

Disable policy checks by the Mixer service. Default +is false, i.e. Mixer policy check is enabled by default.

@@ -306,7 +306,7 @@

MeshConfig

policyCheckFailOpen bool -

Allow all traffic in cases when the mixer policy service cannot be reached. +

Allow all traffic in cases when the Mixer policy service cannot be reached. Default is false which means the traffic is denied when the client is unable to connect to Mixer.

@@ -316,8 +316,8 @@

MeshConfig

sidecarToTelemetrySessionAffinity bool -

Enable session affinity for envoy mixer reports so that calls from a proxy will -always target the same mixer instance.

+

Enable session affinity for Envoy Mixer reports so that calls from a proxy will +always target the same Mixer instance.

@@ -348,7 +348,7 @@

MeshConfig

tcpKeepalive -istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings.TcpKeepalive +istio.networking.v1alpha3.ConnectionPoolSettings.TCPSettings.TcpKeepalive

If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.

@@ -368,7 +368,7 @@

MeshConfig

ingressService string -

Name of the kubernetes service used for the istio ingress controller.

+

Name of theKubernetes service used for the istio ingress controller.

@@ -455,7 +455,7 @@

MeshConfig

sdsUdsPath string -

Unix Domain Socket through which envoy communicates with NodeAgent SDS to get key/cert for mTLS. +

Unix Domain Socket through which Envoy communicates with NodeAgent SDS to get key/cert for mTLS. Use secret-mount files instead of SDS if set to empty.

@@ -475,7 +475,7 @@

MeshConfig

string

The trust domain corresponds to the trust root of a system. -Refer to https://github.com/spiffe/spiffe/blob/master/standards/SPIFFE-ID.md#21-trust-domain +Refer to SPIFEE-ID Fallback to old identity format(without trust domain) if not set.

@@ -486,6 +486,14 @@

MeshConfig

Locality based load balancing distribution or failover settings.

+ + + +dnsRefreshRate +google.protobuf.Duration + +

Configures DNS refresh rate for Envoy clusters of type STRICT_DNS

+ @@ -538,7 +546,7 @@

MeshConfig.IngressControllerMode

contain any annotation or whose annotations match the value specified in the ingress_class parameter described earlier. Use this mode if Istio ingress controller will be the default ingress -controller for the entire kubernetes cluster.

+controller for the entireKubernetes cluster.

@@ -614,7 +622,7 @@

MeshNetworks

networks: - network1: - endpoints: - - fromRegistry: registry1 #must match secret name in kubernetes + - fromRegistry: registry1 #must match secret name inKubernetes - fromCidr: 192.168.100.0/22 #a VM network for example gateways: - registryServiceName: istio-ingressgateway.istio-system.svc.cluster.local @@ -894,6 +902,16 @@

ProxyConfig

IP Address and Port of a statsd UDP listener (e.g. 10.75.241.127:9125).

+ + + +envoyMetricsServiceAddress +string + +

Address of the Envoy Metrics Service implementation (e.g. metrics-service:15000). +See https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/metrics/v2/metrics_service.proto +for details about Envoy’s Metrics Service API.

+ diff --git a/mesh/v1alpha1/network.pb.go b/mesh/v1alpha1/network.pb.go index 6c7f002b4ff..078d6a26104 100644 --- a/mesh/v1alpha1/network.pb.go +++ b/mesh/v1alpha1/network.pb.go @@ -3,17 +3,24 @@ package v1alpha1 -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" - -import io "io" +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + // Network provides information about the endpoints in a routable L3 // network. A single routable L3 network can have one or more service // registries. Note that the network has no relation to the locality of the @@ -23,15 +30,46 @@ type Network struct { // REQUIRED: The list of endpoints in the network (obtained through the // constituent service registries or from CIDR ranges). All endpoints in // the network are directly accessible to one another. - Endpoints []*Network_NetworkEndpoints `protobuf:"bytes,2,rep,name=endpoints" json:"endpoints,omitempty"` + Endpoints []*Network_NetworkEndpoints `protobuf:"bytes,2,rep,name=endpoints,proto3" json:"endpoints,omitempty"` // REQUIRED: Set of gateways associated with the network. - Gateways []*Network_IstioNetworkGateway `protobuf:"bytes,3,rep,name=gateways" json:"gateways,omitempty"` + Gateways []*Network_IstioNetworkGateway `protobuf:"bytes,3,rep,name=gateways,proto3" json:"gateways,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Network) Reset() { *m = Network{} } +func (m *Network) String() string { return proto.CompactTextString(m) } +func (*Network) ProtoMessage() {} +func (*Network) Descriptor() ([]byte, []int) { + return fileDescriptor_a15df2a96e10cd86, []int{0} +} +func (m *Network) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Network) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Network.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Network) XXX_Merge(src proto.Message) { + xxx_messageInfo_Network.Merge(m, src) +} +func (m *Network) XXX_Size() int { + return m.Size() +} +func (m *Network) XXX_DiscardUnknown() { + xxx_messageInfo_Network.DiscardUnknown(m) } -func (m *Network) Reset() { *m = Network{} } -func (m *Network) String() string { return proto.CompactTextString(m) } -func (*Network) ProtoMessage() {} -func (*Network) Descriptor() ([]byte, []int) { return fileDescriptorNetwork, []int{0} } +var xxx_messageInfo_Network proto.InternalMessageInfo func (m *Network) GetEndpoints() []*Network_NetworkEndpoints { if m != nil { @@ -71,15 +109,44 @@ type Network_NetworkEndpoints struct { // Types that are valid to be assigned to Ne: // *Network_NetworkEndpoints_FromCidr // *Network_NetworkEndpoints_FromRegistry - Ne isNetwork_NetworkEndpoints_Ne `protobuf_oneof:"ne"` + Ne isNetwork_NetworkEndpoints_Ne `protobuf_oneof:"ne"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *Network_NetworkEndpoints) Reset() { *m = Network_NetworkEndpoints{} } func (m *Network_NetworkEndpoints) String() string { return proto.CompactTextString(m) } func (*Network_NetworkEndpoints) ProtoMessage() {} func (*Network_NetworkEndpoints) Descriptor() ([]byte, []int) { - return fileDescriptorNetwork, []int{0, 0} + return fileDescriptor_a15df2a96e10cd86, []int{0, 0} +} +func (m *Network_NetworkEndpoints) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Network_NetworkEndpoints) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Network_NetworkEndpoints.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Network_NetworkEndpoints) XXX_Merge(src proto.Message) { + xxx_messageInfo_Network_NetworkEndpoints.Merge(m, src) +} +func (m *Network_NetworkEndpoints) XXX_Size() int { + return m.Size() } +func (m *Network_NetworkEndpoints) XXX_DiscardUnknown() { + xxx_messageInfo_Network_NetworkEndpoints.DiscardUnknown(m) +} + +var xxx_messageInfo_Network_NetworkEndpoints proto.InternalMessageInfo type isNetwork_NetworkEndpoints_Ne interface { isNetwork_NetworkEndpoints_Ne() @@ -170,11 +237,11 @@ func _Network_NetworkEndpoints_OneofSizer(msg proto.Message) (n int) { // ne switch x := m.Ne.(type) { case *Network_NetworkEndpoints_FromCidr: - n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.FromCidr))) n += len(x.FromCidr) case *Network_NetworkEndpoints_FromRegistry: - n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.FromRegistry))) n += len(x.FromRegistry) case nil: @@ -195,16 +262,45 @@ type Network_IstioNetworkGateway struct { // REQUIRED: The port associated with the gateway. Port uint32 `protobuf:"varint,3,opt,name=port,proto3" json:"port,omitempty"` // The locality associated with an explicitly specified gateway (i.e. ip) - Locality string `protobuf:"bytes,4,opt,name=locality,proto3" json:"locality,omitempty"` + Locality string `protobuf:"bytes,4,opt,name=locality,proto3" json:"locality,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *Network_IstioNetworkGateway) Reset() { *m = Network_IstioNetworkGateway{} } func (m *Network_IstioNetworkGateway) String() string { return proto.CompactTextString(m) } func (*Network_IstioNetworkGateway) ProtoMessage() {} func (*Network_IstioNetworkGateway) Descriptor() ([]byte, []int) { - return fileDescriptorNetwork, []int{0, 1} + return fileDescriptor_a15df2a96e10cd86, []int{0, 1} +} +func (m *Network_IstioNetworkGateway) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Network_IstioNetworkGateway) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Network_IstioNetworkGateway.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Network_IstioNetworkGateway) XXX_Merge(src proto.Message) { + xxx_messageInfo_Network_IstioNetworkGateway.Merge(m, src) +} +func (m *Network_IstioNetworkGateway) XXX_Size() int { + return m.Size() +} +func (m *Network_IstioNetworkGateway) XXX_DiscardUnknown() { + xxx_messageInfo_Network_IstioNetworkGateway.DiscardUnknown(m) } +var xxx_messageInfo_Network_IstioNetworkGateway proto.InternalMessageInfo + type isNetwork_IstioNetworkGateway_Gw interface { isNetwork_IstioNetworkGateway_Gw() MarshalTo([]byte) (int, error) @@ -308,11 +404,11 @@ func _Network_IstioNetworkGateway_OneofSizer(msg proto.Message) (n int) { // gw switch x := m.Gw.(type) { case *Network_IstioNetworkGateway_RegistryServiceName: - n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.RegistryServiceName))) n += len(x.RegistryServiceName) case *Network_IstioNetworkGateway_Address: - n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.Address))) n += len(x.Address) case nil: @@ -329,7 +425,7 @@ func _Network_IstioNetworkGateway_OneofSizer(msg proto.Message) (n int) { // networks: // - network1: // - endpoints: -// - fromRegistry: registry1 #must match secret name in kubernetes +// - fromRegistry: registry1 #must match secret name inKubernetes // - fromCidr: 192.168.100.0/22 #a VM network for example // gateways: // - registryServiceName: istio-ingressgateway.istio-system.svc.cluster.local @@ -339,13 +435,44 @@ type MeshNetworks struct { // REQUIRED: The set of networks inside this mesh. Each network should // have a unique name and information about how to infer the endpoints in // the network as well as the gateways associated with the network. - Networks map[string]*Network `protobuf:"bytes,1,rep,name=networks" json:"networks,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"` + Networks map[string]*Network `protobuf:"bytes,1,rep,name=networks,proto3" json:"networks,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *MeshNetworks) Reset() { *m = MeshNetworks{} } -func (m *MeshNetworks) String() string { return proto.CompactTextString(m) } -func (*MeshNetworks) ProtoMessage() {} -func (*MeshNetworks) Descriptor() ([]byte, []int) { return fileDescriptorNetwork, []int{1} } +func (m *MeshNetworks) Reset() { *m = MeshNetworks{} } +func (m *MeshNetworks) String() string { return proto.CompactTextString(m) } +func (*MeshNetworks) ProtoMessage() {} +func (*MeshNetworks) Descriptor() ([]byte, []int) { + return fileDescriptor_a15df2a96e10cd86, []int{1} +} +func (m *MeshNetworks) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MeshNetworks) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MeshNetworks.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MeshNetworks) XXX_Merge(src proto.Message) { + xxx_messageInfo_MeshNetworks.Merge(m, src) +} +func (m *MeshNetworks) XXX_Size() int { + return m.Size() +} +func (m *MeshNetworks) XXX_DiscardUnknown() { + xxx_messageInfo_MeshNetworks.DiscardUnknown(m) +} + +var xxx_messageInfo_MeshNetworks proto.InternalMessageInfo func (m *MeshNetworks) GetNetworks() map[string]*Network { if m != nil { @@ -359,7 +486,41 @@ func init() { proto.RegisterType((*Network_NetworkEndpoints)(nil), "istio.mesh.v1alpha1.Network.NetworkEndpoints") proto.RegisterType((*Network_IstioNetworkGateway)(nil), "istio.mesh.v1alpha1.Network.IstioNetworkGateway") proto.RegisterType((*MeshNetworks)(nil), "istio.mesh.v1alpha1.MeshNetworks") + proto.RegisterMapType((map[string]*Network)(nil), "istio.mesh.v1alpha1.MeshNetworks.NetworksEntry") +} + +func init() { proto.RegisterFile("mesh/v1alpha1/network.proto", fileDescriptor_a15df2a96e10cd86) } + +var fileDescriptor_a15df2a96e10cd86 = []byte{ + // 403 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xcf, 0x8e, 0xda, 0x30, + 0x10, 0xc6, 0xeb, 0x84, 0x96, 0x30, 0x80, 0x84, 0x8c, 0x2a, 0x45, 0x69, 0x8b, 0x10, 0x52, 0xa5, + 0x5c, 0x9a, 0x14, 0xda, 0x43, 0xd5, 0x23, 0x15, 0x6a, 0x2b, 0x5a, 0x0e, 0xee, 0xa9, 0x3d, 0x14, + 0xb9, 0xc4, 0x05, 0x8b, 0x24, 0x8e, 0x6c, 0x2f, 0x28, 0x0f, 0xb3, 0xb7, 0x7d, 0x86, 0x7d, 0x86, + 0x3d, 0xee, 0x23, 0xac, 0x78, 0x92, 0x55, 0xfe, 0xee, 0xb2, 0x42, 0x9c, 0x6c, 0xcf, 0xf7, 0xfd, + 0x66, 0xc6, 0x63, 0xc3, 0xab, 0x88, 0xa9, 0x8d, 0xbf, 0x1b, 0xd3, 0x30, 0xd9, 0xd0, 0xb1, 0x1f, + 0x33, 0xbd, 0x17, 0x72, 0xeb, 0x25, 0x52, 0x68, 0x81, 0xfb, 0x5c, 0x69, 0x2e, 0xbc, 0xcc, 0xe2, + 0x55, 0x96, 0xd1, 0x95, 0x09, 0xcd, 0x45, 0x61, 0xc3, 0x73, 0x68, 0xb1, 0x38, 0x48, 0x04, 0x8f, + 0xb5, 0xb2, 0x8d, 0xa1, 0xe9, 0xb6, 0x27, 0xef, 0xbc, 0x13, 0x90, 0x57, 0x02, 0xd5, 0x3a, 0xab, + 0x20, 0xf2, 0xc0, 0xe3, 0x1f, 0x60, 0xad, 0xa9, 0x66, 0x7b, 0x9a, 0x2a, 0xdb, 0xcc, 0x73, 0xbd, + 0x3f, 0x9b, 0xeb, 0x7b, 0xa6, 0x95, 0x87, 0xaf, 0x05, 0x48, 0xea, 0x0c, 0xce, 0x5f, 0xe8, 0x3d, + 0x2d, 0x86, 0xdf, 0x40, 0xeb, 0xbf, 0x14, 0xd1, 0x72, 0xc5, 0x03, 0x69, 0xa3, 0x21, 0x72, 0x5b, + 0xdf, 0x9e, 0x11, 0x2b, 0x0b, 0x7d, 0xe1, 0x81, 0xc4, 0x6f, 0xa1, 0x9b, 0xcb, 0x92, 0xad, 0xb9, + 0xd2, 0x32, 0xb5, 0x8d, 0xd2, 0xd2, 0xc9, 0xc2, 0xa4, 0x8c, 0x4e, 0x1b, 0x60, 0xc4, 0xcc, 0xb9, + 0x44, 0xd0, 0x3f, 0xd1, 0x01, 0xfe, 0x08, 0x2f, 0x2b, 0x7e, 0xa9, 0x98, 0xdc, 0xf1, 0x15, 0x5b, + 0xc6, 0x34, 0x62, 0x75, 0xbd, 0x7e, 0x25, 0xff, 0x2a, 0xd4, 0x05, 0x8d, 0x18, 0x76, 0xa0, 0x49, + 0x83, 0x40, 0x32, 0xa5, 0xea, 0xa2, 0x55, 0x00, 0x63, 0x68, 0x24, 0x42, 0x6a, 0xdb, 0x1c, 0x22, + 0xb7, 0x4b, 0xf2, 0x3d, 0x76, 0xc0, 0x0a, 0xc5, 0x8a, 0x86, 0x5c, 0xa7, 0x76, 0x23, 0x03, 0x48, + 0x7d, 0xce, 0xfa, 0x5b, 0xef, 0x47, 0xd7, 0x08, 0x3a, 0x3f, 0x99, 0xda, 0x94, 0xed, 0x29, 0x3c, + 0x07, 0xab, 0x7c, 0x5d, 0x65, 0xa3, 0x7c, 0xbc, 0xfe, 0xc9, 0xf1, 0x3e, 0x86, 0xaa, 0x59, 0xab, + 0x59, 0xac, 0x65, 0x4a, 0xea, 0x04, 0xce, 0x6f, 0xe8, 0x1e, 0x49, 0xb8, 0x07, 0xe6, 0x96, 0xa5, + 0xc5, 0x25, 0x49, 0xb6, 0xc5, 0x13, 0x78, 0xbe, 0xa3, 0xe1, 0x05, 0xcb, 0x2f, 0xd4, 0x9e, 0xbc, + 0x3e, 0xf7, 0x96, 0xa4, 0xb0, 0x7e, 0x36, 0x3e, 0xa1, 0xa9, 0x7b, 0x73, 0x18, 0xa0, 0xdb, 0xc3, + 0x00, 0xdd, 0x1d, 0x06, 0xe8, 0x8f, 0x53, 0x50, 0x5c, 0xf8, 0x34, 0xe1, 0xfe, 0xd1, 0x67, 0xfd, + 0xf7, 0x22, 0xff, 0xa5, 0x1f, 0xee, 0x03, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x70, 0x44, 0x24, 0xc4, + 0x02, 0x00, 0x00, } + func (m *Network) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -399,6 +560,9 @@ func (m *Network) MarshalTo(dAtA []byte) (int, error) { i += n } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -424,6 +588,9 @@ func (m *Network_NetworkEndpoints) MarshalTo(dAtA []byte) (int, error) { } i += nn1 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -476,6 +643,9 @@ func (m *Network_IstioNetworkGateway) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintNetwork(dAtA, i, uint64(len(m.Locality))) i += copy(dAtA[i:], m.Locality) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -538,6 +708,9 @@ func (m *MeshNetworks) MarshalTo(dAtA []byte) (int, error) { } } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -551,6 +724,9 @@ func encodeVarintNetwork(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *Network) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Endpoints) > 0 { @@ -565,19 +741,31 @@ func (m *Network) Size() (n int) { n += 1 + l + sovNetwork(uint64(l)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *Network_NetworkEndpoints) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Ne != nil { n += m.Ne.Size() } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *Network_NetworkEndpoints_FromCidr) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.FromCidr) @@ -585,6 +773,9 @@ func (m *Network_NetworkEndpoints_FromCidr) Size() (n int) { return n } func (m *Network_NetworkEndpoints_FromRegistry) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.FromRegistry) @@ -592,6 +783,9 @@ func (m *Network_NetworkEndpoints_FromRegistry) Size() (n int) { return n } func (m *Network_IstioNetworkGateway) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Gw != nil { @@ -604,10 +798,16 @@ func (m *Network_IstioNetworkGateway) Size() (n int) { if l > 0 { n += 1 + l + sovNetwork(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *Network_IstioNetworkGateway_RegistryServiceName) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.RegistryServiceName) @@ -615,6 +815,9 @@ func (m *Network_IstioNetworkGateway_RegistryServiceName) Size() (n int) { return n } func (m *Network_IstioNetworkGateway_Address) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Address) @@ -622,6 +825,9 @@ func (m *Network_IstioNetworkGateway_Address) Size() (n int) { return n } func (m *MeshNetworks) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Networks) > 0 { @@ -637,6 +843,9 @@ func (m *MeshNetworks) Size() (n int) { n += mapEntrySize + 1 + sovNetwork(uint64(mapEntrySize)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -668,7 +877,7 @@ func (m *Network) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -696,7 +905,7 @@ func (m *Network) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -705,6 +914,9 @@ func (m *Network) Unmarshal(dAtA []byte) error { return ErrInvalidLengthNetwork } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthNetwork + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -727,7 +939,7 @@ func (m *Network) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -736,6 +948,9 @@ func (m *Network) Unmarshal(dAtA []byte) error { return ErrInvalidLengthNetwork } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthNetwork + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -753,9 +968,13 @@ func (m *Network) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthNetwork } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthNetwork + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -780,7 +999,7 @@ func (m *Network_NetworkEndpoints) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -808,7 +1027,7 @@ func (m *Network_NetworkEndpoints) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -818,6 +1037,9 @@ func (m *Network_NetworkEndpoints) Unmarshal(dAtA []byte) error { return ErrInvalidLengthNetwork } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthNetwork + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -837,7 +1059,7 @@ func (m *Network_NetworkEndpoints) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -847,6 +1069,9 @@ func (m *Network_NetworkEndpoints) Unmarshal(dAtA []byte) error { return ErrInvalidLengthNetwork } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthNetwork + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -861,9 +1086,13 @@ func (m *Network_NetworkEndpoints) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthNetwork } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthNetwork + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -888,7 +1117,7 @@ func (m *Network_IstioNetworkGateway) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -916,7 +1145,7 @@ func (m *Network_IstioNetworkGateway) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -926,6 +1155,9 @@ func (m *Network_IstioNetworkGateway) Unmarshal(dAtA []byte) error { return ErrInvalidLengthNetwork } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthNetwork + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -945,7 +1177,7 @@ func (m *Network_IstioNetworkGateway) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -955,6 +1187,9 @@ func (m *Network_IstioNetworkGateway) Unmarshal(dAtA []byte) error { return ErrInvalidLengthNetwork } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthNetwork + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -974,7 +1209,7 @@ func (m *Network_IstioNetworkGateway) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Port |= (uint32(b) & 0x7F) << shift + m.Port |= uint32(b&0x7F) << shift if b < 0x80 { break } @@ -993,7 +1228,7 @@ func (m *Network_IstioNetworkGateway) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1003,6 +1238,9 @@ func (m *Network_IstioNetworkGateway) Unmarshal(dAtA []byte) error { return ErrInvalidLengthNetwork } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthNetwork + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1017,9 +1255,13 @@ func (m *Network_IstioNetworkGateway) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthNetwork } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthNetwork + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -1044,7 +1286,7 @@ func (m *MeshNetworks) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1072,7 +1314,7 @@ func (m *MeshNetworks) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1081,6 +1323,9 @@ func (m *MeshNetworks) Unmarshal(dAtA []byte) error { return ErrInvalidLengthNetwork } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthNetwork + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1101,7 +1346,7 @@ func (m *MeshNetworks) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1118,7 +1363,7 @@ func (m *MeshNetworks) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1128,6 +1373,9 @@ func (m *MeshNetworks) Unmarshal(dAtA []byte) error { return ErrInvalidLengthNetwork } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthNetwork + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -1144,7 +1392,7 @@ func (m *MeshNetworks) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapmsglen |= (int(b) & 0x7F) << shift + mapmsglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1153,7 +1401,7 @@ func (m *MeshNetworks) Unmarshal(dAtA []byte) error { return ErrInvalidLengthNetwork } postmsgIndex := iNdEx + mapmsglen - if mapmsglen < 0 { + if postmsgIndex < 0 { return ErrInvalidLengthNetwork } if postmsgIndex > l { @@ -1190,9 +1438,13 @@ func (m *MeshNetworks) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthNetwork } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthNetwork + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -1256,10 +1508,13 @@ func skipNetwork(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthNetwork } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthNetwork + } return iNdEx, nil case 3: for { @@ -1288,6 +1543,9 @@ func skipNetwork(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthNetwork + } } return iNdEx, nil case 4: @@ -1306,35 +1564,3 @@ var ( ErrInvalidLengthNetwork = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowNetwork = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("mesh/v1alpha1/network.proto", fileDescriptorNetwork) } - -var fileDescriptorNetwork = []byte{ - // 403 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xcf, 0x8e, 0xda, 0x30, - 0x10, 0xc6, 0xeb, 0x84, 0x96, 0x30, 0x80, 0x84, 0x8c, 0x2a, 0x45, 0x69, 0x8b, 0x10, 0x52, 0xa5, - 0x5c, 0x9a, 0x14, 0xda, 0x43, 0xd5, 0x23, 0x15, 0x6a, 0x2b, 0x5a, 0x0e, 0xee, 0xa9, 0x3d, 0x14, - 0xb9, 0xc4, 0x05, 0x8b, 0x24, 0x8e, 0x6c, 0x2f, 0x28, 0x0f, 0xb3, 0xb7, 0x7d, 0x86, 0x7d, 0x86, - 0x3d, 0xee, 0x23, 0xac, 0x78, 0x92, 0x55, 0xfe, 0xee, 0xb2, 0x42, 0x9c, 0x6c, 0xcf, 0xf7, 0xfd, - 0x66, 0xc6, 0x63, 0xc3, 0xab, 0x88, 0xa9, 0x8d, 0xbf, 0x1b, 0xd3, 0x30, 0xd9, 0xd0, 0xb1, 0x1f, - 0x33, 0xbd, 0x17, 0x72, 0xeb, 0x25, 0x52, 0x68, 0x81, 0xfb, 0x5c, 0x69, 0x2e, 0xbc, 0xcc, 0xe2, - 0x55, 0x96, 0xd1, 0x95, 0x09, 0xcd, 0x45, 0x61, 0xc3, 0x73, 0x68, 0xb1, 0x38, 0x48, 0x04, 0x8f, - 0xb5, 0xb2, 0x8d, 0xa1, 0xe9, 0xb6, 0x27, 0xef, 0xbc, 0x13, 0x90, 0x57, 0x02, 0xd5, 0x3a, 0xab, - 0x20, 0xf2, 0xc0, 0xe3, 0x1f, 0x60, 0xad, 0xa9, 0x66, 0x7b, 0x9a, 0x2a, 0xdb, 0xcc, 0x73, 0xbd, - 0x3f, 0x9b, 0xeb, 0x7b, 0xa6, 0x95, 0x87, 0xaf, 0x05, 0x48, 0xea, 0x0c, 0xce, 0x5f, 0xe8, 0x3d, - 0x2d, 0x86, 0xdf, 0x40, 0xeb, 0xbf, 0x14, 0xd1, 0x72, 0xc5, 0x03, 0x69, 0xa3, 0x21, 0x72, 0x5b, - 0xdf, 0x9e, 0x11, 0x2b, 0x0b, 0x7d, 0xe1, 0x81, 0xc4, 0x6f, 0xa1, 0x9b, 0xcb, 0x92, 0xad, 0xb9, - 0xd2, 0x32, 0xb5, 0x8d, 0xd2, 0xd2, 0xc9, 0xc2, 0xa4, 0x8c, 0x4e, 0x1b, 0x60, 0xc4, 0xcc, 0xb9, - 0x44, 0xd0, 0x3f, 0xd1, 0x01, 0xfe, 0x08, 0x2f, 0x2b, 0x7e, 0xa9, 0x98, 0xdc, 0xf1, 0x15, 0x5b, - 0xc6, 0x34, 0x62, 0x75, 0xbd, 0x7e, 0x25, 0xff, 0x2a, 0xd4, 0x05, 0x8d, 0x18, 0x76, 0xa0, 0x49, - 0x83, 0x40, 0x32, 0xa5, 0xea, 0xa2, 0x55, 0x00, 0x63, 0x68, 0x24, 0x42, 0x6a, 0xdb, 0x1c, 0x22, - 0xb7, 0x4b, 0xf2, 0x3d, 0x76, 0xc0, 0x0a, 0xc5, 0x8a, 0x86, 0x5c, 0xa7, 0x76, 0x23, 0x03, 0x48, - 0x7d, 0xce, 0xfa, 0x5b, 0xef, 0x47, 0xd7, 0x08, 0x3a, 0x3f, 0x99, 0xda, 0x94, 0xed, 0x29, 0x3c, - 0x07, 0xab, 0x7c, 0x5d, 0x65, 0xa3, 0x7c, 0xbc, 0xfe, 0xc9, 0xf1, 0x3e, 0x86, 0xaa, 0x59, 0xab, - 0x59, 0xac, 0x65, 0x4a, 0xea, 0x04, 0xce, 0x6f, 0xe8, 0x1e, 0x49, 0xb8, 0x07, 0xe6, 0x96, 0xa5, - 0xc5, 0x25, 0x49, 0xb6, 0xc5, 0x13, 0x78, 0xbe, 0xa3, 0xe1, 0x05, 0xcb, 0x2f, 0xd4, 0x9e, 0xbc, - 0x3e, 0xf7, 0x96, 0xa4, 0xb0, 0x7e, 0x36, 0x3e, 0xa1, 0xa9, 0x7b, 0x73, 0x18, 0xa0, 0xdb, 0xc3, - 0x00, 0xdd, 0x1d, 0x06, 0xe8, 0x8f, 0x53, 0x50, 0x5c, 0xf8, 0x34, 0xe1, 0xfe, 0xd1, 0x67, 0xfd, - 0xf7, 0x22, 0xff, 0xa5, 0x1f, 0xee, 0x03, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x70, 0x44, 0x24, 0xc4, - 0x02, 0x00, 0x00, -} diff --git a/mesh/v1alpha1/network.proto b/mesh/v1alpha1/network.proto index 1fed56778e3..a55c416cfe5 100644 --- a/mesh/v1alpha1/network.proto +++ b/mesh/v1alpha1/network.proto @@ -99,7 +99,7 @@ message Network { // networks: // - network1: // - endpoints: -// - fromRegistry: registry1 #must match secret name in kubernetes +// - fromRegistry: registry1 #must match secret name inKubernetes // - fromCidr: 192.168.100.0/22 #a VM network for example // gateways: // - registryServiceName: istio-ingressgateway.istio-system.svc.cluster.local diff --git a/mesh/v1alpha1/proxy.pb.go b/mesh/v1alpha1/proxy.pb.go index e14c1bafb50..793bdf348ad 100644 --- a/mesh/v1alpha1/proxy.pb.go +++ b/mesh/v1alpha1/proxy.pb.go @@ -3,18 +3,25 @@ package v1alpha1 -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf "github.com/gogo/protobuf/types" - -import io "io" +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + types "github.com/gogo/protobuf/types" + io "io" + math "math" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + // AuthenticationPolicy defines authentication policy. It can be set for // different scopes (mesh, service …), and the most narrow scope with // non-INHERIT value will be used. @@ -36,6 +43,7 @@ var AuthenticationPolicy_name = map[int32]string{ 1: "MUTUAL_TLS", 1000: "INHERIT", } + var AuthenticationPolicy_value = map[string]int32{ "NONE": 0, "MUTUAL_TLS": 1, @@ -45,7 +53,10 @@ var AuthenticationPolicy_value = map[string]int32{ func (x AuthenticationPolicy) String() string { return proto.EnumName(AuthenticationPolicy_name, int32(x)) } -func (AuthenticationPolicy) EnumDescriptor() ([]byte, []int) { return fileDescriptorProxy, []int{0} } + +func (AuthenticationPolicy) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_5efecd978cf3d28d, []int{0} +} // The mode used to redirect inbound traffic to Envoy. // This setting has no effect on outbound traffic: iptables REDIRECT is always used for @@ -67,6 +78,7 @@ var ProxyConfig_InboundInterceptionMode_name = map[int32]string{ 0: "REDIRECT", 1: "TPROXY", } + var ProxyConfig_InboundInterceptionMode_value = map[string]int32{ "REDIRECT": 0, "TPROXY": 1, @@ -75,8 +87,9 @@ var ProxyConfig_InboundInterceptionMode_value = map[string]int32{ func (x ProxyConfig_InboundInterceptionMode) String() string { return proto.EnumName(ProxyConfig_InboundInterceptionMode_name, int32(x)) } + func (ProxyConfig_InboundInterceptionMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptorProxy, []int{1, 0} + return fileDescriptor_5efecd978cf3d28d, []int{1, 0} } // Tracing defines configuration for the tracing performed by Envoy instances. @@ -87,13 +100,44 @@ type Tracing struct { // *Tracing_Zipkin_ // *Tracing_Lightstep_ // *Tracing_Datadog_ - Tracer isTracing_Tracer `protobuf_oneof:"tracer"` + Tracer isTracing_Tracer `protobuf_oneof:"tracer"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Tracing) Reset() { *m = Tracing{} } +func (m *Tracing) String() string { return proto.CompactTextString(m) } +func (*Tracing) ProtoMessage() {} +func (*Tracing) Descriptor() ([]byte, []int) { + return fileDescriptor_5efecd978cf3d28d, []int{0} +} +func (m *Tracing) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Tracing) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Tracing.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Tracing) XXX_Merge(src proto.Message) { + xxx_messageInfo_Tracing.Merge(m, src) +} +func (m *Tracing) XXX_Size() int { + return m.Size() +} +func (m *Tracing) XXX_DiscardUnknown() { + xxx_messageInfo_Tracing.DiscardUnknown(m) } -func (m *Tracing) Reset() { *m = Tracing{} } -func (m *Tracing) String() string { return proto.CompactTextString(m) } -func (*Tracing) ProtoMessage() {} -func (*Tracing) Descriptor() ([]byte, []int) { return fileDescriptorProxy, []int{0} } +var xxx_messageInfo_Tracing proto.InternalMessageInfo type isTracing_Tracer interface { isTracing_Tracer() @@ -102,13 +146,13 @@ type isTracing_Tracer interface { } type Tracing_Zipkin_ struct { - Zipkin *Tracing_Zipkin `protobuf:"bytes,1,opt,name=zipkin,oneof"` + Zipkin *Tracing_Zipkin `protobuf:"bytes,1,opt,name=zipkin,proto3,oneof"` } type Tracing_Lightstep_ struct { - Lightstep *Tracing_Lightstep `protobuf:"bytes,2,opt,name=lightstep,oneof"` + Lightstep *Tracing_Lightstep `protobuf:"bytes,2,opt,name=lightstep,proto3,oneof"` } type Tracing_Datadog_ struct { - Datadog *Tracing_Datadog `protobuf:"bytes,3,opt,name=datadog,oneof"` + Datadog *Tracing_Datadog `protobuf:"bytes,3,opt,name=datadog,proto3,oneof"` } func (*Tracing_Zipkin_) isTracing_Tracer() {} @@ -216,17 +260,17 @@ func _Tracing_OneofSizer(msg proto.Message) (n int) { switch x := m.Tracer.(type) { case *Tracing_Zipkin_: s := proto.Size(x.Zipkin) - n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Tracing_Lightstep_: s := proto.Size(x.Lightstep) - n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Tracing_Datadog_: s := proto.Size(x.Datadog) - n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case nil: @@ -239,13 +283,44 @@ func _Tracing_OneofSizer(msg proto.Message) (n int) { // Zipkin defines configuration for a Zipkin tracer. type Tracing_Zipkin struct { // Address of the Zipkin service (e.g. _zipkin:9411_). - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Tracing_Zipkin) Reset() { *m = Tracing_Zipkin{} } +func (m *Tracing_Zipkin) String() string { return proto.CompactTextString(m) } +func (*Tracing_Zipkin) ProtoMessage() {} +func (*Tracing_Zipkin) Descriptor() ([]byte, []int) { + return fileDescriptor_5efecd978cf3d28d, []int{0, 0} +} +func (m *Tracing_Zipkin) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Tracing_Zipkin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Tracing_Zipkin.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Tracing_Zipkin) XXX_Merge(src proto.Message) { + xxx_messageInfo_Tracing_Zipkin.Merge(m, src) +} +func (m *Tracing_Zipkin) XXX_Size() int { + return m.Size() +} +func (m *Tracing_Zipkin) XXX_DiscardUnknown() { + xxx_messageInfo_Tracing_Zipkin.DiscardUnknown(m) } -func (m *Tracing_Zipkin) Reset() { *m = Tracing_Zipkin{} } -func (m *Tracing_Zipkin) String() string { return proto.CompactTextString(m) } -func (*Tracing_Zipkin) ProtoMessage() {} -func (*Tracing_Zipkin) Descriptor() ([]byte, []int) { return fileDescriptorProxy, []int{0, 0} } +var xxx_messageInfo_Tracing_Zipkin proto.InternalMessageInfo func (m *Tracing_Zipkin) GetAddress() string { if m != nil { @@ -263,13 +338,44 @@ type Tracing_Lightstep struct { // True if a secure connection should be used when communicating with the pool. Secure bool `protobuf:"varint,3,opt,name=secure,proto3" json:"secure,omitempty"` // Path to the trusted cacert used to authenticate the pool. - CacertPath string `protobuf:"bytes,4,opt,name=cacert_path,json=cacertPath,proto3" json:"cacert_path,omitempty"` + CacertPath string `protobuf:"bytes,4,opt,name=cacert_path,json=cacertPath,proto3" json:"cacert_path,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Tracing_Lightstep) Reset() { *m = Tracing_Lightstep{} } +func (m *Tracing_Lightstep) String() string { return proto.CompactTextString(m) } +func (*Tracing_Lightstep) ProtoMessage() {} +func (*Tracing_Lightstep) Descriptor() ([]byte, []int) { + return fileDescriptor_5efecd978cf3d28d, []int{0, 1} +} +func (m *Tracing_Lightstep) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Tracing_Lightstep) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Tracing_Lightstep.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Tracing_Lightstep) XXX_Merge(src proto.Message) { + xxx_messageInfo_Tracing_Lightstep.Merge(m, src) +} +func (m *Tracing_Lightstep) XXX_Size() int { + return m.Size() +} +func (m *Tracing_Lightstep) XXX_DiscardUnknown() { + xxx_messageInfo_Tracing_Lightstep.DiscardUnknown(m) } -func (m *Tracing_Lightstep) Reset() { *m = Tracing_Lightstep{} } -func (m *Tracing_Lightstep) String() string { return proto.CompactTextString(m) } -func (*Tracing_Lightstep) ProtoMessage() {} -func (*Tracing_Lightstep) Descriptor() ([]byte, []int) { return fileDescriptorProxy, []int{0, 1} } +var xxx_messageInfo_Tracing_Lightstep proto.InternalMessageInfo func (m *Tracing_Lightstep) GetAddress() string { if m != nil { @@ -302,13 +408,44 @@ func (m *Tracing_Lightstep) GetCacertPath() string { // Datadog defines configuration for a Datadog tracer. type Tracing_Datadog struct { // Address of the Datadog Agent. - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Tracing_Datadog) Reset() { *m = Tracing_Datadog{} } +func (m *Tracing_Datadog) String() string { return proto.CompactTextString(m) } +func (*Tracing_Datadog) ProtoMessage() {} +func (*Tracing_Datadog) Descriptor() ([]byte, []int) { + return fileDescriptor_5efecd978cf3d28d, []int{0, 2} +} +func (m *Tracing_Datadog) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Tracing_Datadog) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Tracing_Datadog.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Tracing_Datadog) XXX_Merge(src proto.Message) { + xxx_messageInfo_Tracing_Datadog.Merge(m, src) +} +func (m *Tracing_Datadog) XXX_Size() int { + return m.Size() +} +func (m *Tracing_Datadog) XXX_DiscardUnknown() { + xxx_messageInfo_Tracing_Datadog.DiscardUnknown(m) } -func (m *Tracing_Datadog) Reset() { *m = Tracing_Datadog{} } -func (m *Tracing_Datadog) String() string { return proto.CompactTextString(m) } -func (*Tracing_Datadog) ProtoMessage() {} -func (*Tracing_Datadog) Descriptor() ([]byte, []int) { return fileDescriptorProxy, []int{0, 2} } +var xxx_messageInfo_Tracing_Datadog proto.InternalMessageInfo func (m *Tracing_Datadog) GetAddress() string { if m != nil { @@ -340,26 +477,30 @@ type ProxyConfig struct { ServiceCluster string `protobuf:"bytes,3,opt,name=service_cluster,json=serviceCluster,proto3" json:"service_cluster,omitempty"` // The time in seconds that Envoy will drain connections during a hot // restart. MUST be >=1s (e.g., _1s/1m/1h_) - DrainDuration *google_protobuf.Duration `protobuf:"bytes,4,opt,name=drain_duration,json=drainDuration" json:"drain_duration,omitempty"` + DrainDuration *types.Duration `protobuf:"bytes,4,opt,name=drain_duration,json=drainDuration,proto3" json:"drain_duration,omitempty"` // The time in seconds that Envoy will wait before shutting down the // parent process during a hot restart. MUST be >=1s (e.g., _1s/1m/1h_). // MUST BE greater than _drain_duration_ parameter. - ParentShutdownDuration *google_protobuf.Duration `protobuf:"bytes,5,opt,name=parent_shutdown_duration,json=parentShutdownDuration" json:"parent_shutdown_duration,omitempty"` + ParentShutdownDuration *types.Duration `protobuf:"bytes,5,opt,name=parent_shutdown_duration,json=parentShutdownDuration,proto3" json:"parent_shutdown_duration,omitempty"` // Address of the discovery service exposing xDS with mTLS connection. DiscoveryAddress string `protobuf:"bytes,6,opt,name=discovery_address,json=discoveryAddress,proto3" json:"discovery_address,omitempty"` // $hide_from_docs - DiscoveryRefreshDelay *google_protobuf.Duration `protobuf:"bytes,7,opt,name=discovery_refresh_delay,json=discoveryRefreshDelay" json:"discovery_refresh_delay,omitempty"` + DiscoveryRefreshDelay *types.Duration `protobuf:"bytes,7,opt,name=discovery_refresh_delay,json=discoveryRefreshDelay,proto3" json:"discovery_refresh_delay,omitempty"` // Deprecated: Do not use. // Address of the Zipkin service (e.g. _zipkin:9411_). // DEPRECATED: Use [tracing][istio.mesh.v1alpha1.ProxyConfig.tracing] instead. - ZipkinAddress string `protobuf:"bytes,8,opt,name=zipkin_address,json=zipkinAddress,proto3" json:"zipkin_address,omitempty"` + ZipkinAddress string `protobuf:"bytes,8,opt,name=zipkin_address,json=zipkinAddress,proto3" json:"zipkin_address,omitempty"` // Deprecated: Do not use. // Connection timeout used by Envoy for supporting services. (MUST BE >=1ms) - ConnectTimeout *google_protobuf.Duration `protobuf:"bytes,9,opt,name=connect_timeout,json=connectTimeout" json:"connect_timeout,omitempty"` + ConnectTimeout *types.Duration `protobuf:"bytes,9,opt,name=connect_timeout,json=connectTimeout,proto3" json:"connect_timeout,omitempty"` // IP Address and Port of a statsd UDP listener (e.g. _10.75.241.127:9125_). StatsdUdpAddress string `protobuf:"bytes,10,opt,name=statsd_udp_address,json=statsdUdpAddress,proto3" json:"statsd_udp_address,omitempty"` + // Address of the Envoy Metrics Service implementation (e.g. metrics-service:15000). + // See https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/metrics/v2/metrics_service.proto + // for details about Envoy's Metrics Service API. + EnvoyMetricsServiceAddress string `protobuf:"bytes,20,opt,name=envoy_metrics_service_address,json=envoyMetricsServiceAddress,proto3" json:"envoy_metrics_service_address,omitempty"` // Port on which Envoy should listen for administrative commands. ProxyAdminPort int32 `protobuf:"varint,11,opt,name=proxy_admin_port,json=proxyAdminPort,proto3" json:"proxy_admin_port,omitempty"` // $hide_from_docs - AvailabilityZone string `protobuf:"bytes,12,opt,name=availability_zone,json=availabilityZone,proto3" json:"availability_zone,omitempty"` + AvailabilityZone string `protobuf:"bytes,12,opt,name=availability_zone,json=availabilityZone,proto3" json:"availability_zone,omitempty"` // Deprecated: Do not use. // Authentication policy defines the global switch to control authentication // for Envoy-to-Envoy communication for istio components Mixer and Pilot. ControlPlaneAuthPolicy AuthenticationPolicy `protobuf:"varint,13,opt,name=control_plane_auth_policy,json=controlPlaneAuthPolicy,proto3,enum=istio.mesh.v1alpha1.AuthenticationPolicy" json:"control_plane_auth_policy,omitempty"` @@ -379,13 +520,44 @@ type ProxyConfig struct { // The mode used to redirect inbound traffic to Envoy. InterceptionMode ProxyConfig_InboundInterceptionMode `protobuf:"varint,18,opt,name=interception_mode,json=interceptionMode,proto3,enum=istio.mesh.v1alpha1.ProxyConfig_InboundInterceptionMode" json:"interception_mode,omitempty"` // Tracing configuration to be used by the proxy. - Tracing *Tracing `protobuf:"bytes,19,opt,name=tracing" json:"tracing,omitempty"` + Tracing *Tracing `protobuf:"bytes,19,opt,name=tracing,proto3" json:"tracing,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ProxyConfig) Reset() { *m = ProxyConfig{} } +func (m *ProxyConfig) String() string { return proto.CompactTextString(m) } +func (*ProxyConfig) ProtoMessage() {} +func (*ProxyConfig) Descriptor() ([]byte, []int) { + return fileDescriptor_5efecd978cf3d28d, []int{1} +} +func (m *ProxyConfig) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ProxyConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ProxyConfig.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ProxyConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_ProxyConfig.Merge(m, src) +} +func (m *ProxyConfig) XXX_Size() int { + return m.Size() +} +func (m *ProxyConfig) XXX_DiscardUnknown() { + xxx_messageInfo_ProxyConfig.DiscardUnknown(m) } -func (m *ProxyConfig) Reset() { *m = ProxyConfig{} } -func (m *ProxyConfig) String() string { return proto.CompactTextString(m) } -func (*ProxyConfig) ProtoMessage() {} -func (*ProxyConfig) Descriptor() ([]byte, []int) { return fileDescriptorProxy, []int{1} } +var xxx_messageInfo_ProxyConfig proto.InternalMessageInfo func (m *ProxyConfig) GetConfigPath() string { if m != nil { @@ -408,14 +580,14 @@ func (m *ProxyConfig) GetServiceCluster() string { return "" } -func (m *ProxyConfig) GetDrainDuration() *google_protobuf.Duration { +func (m *ProxyConfig) GetDrainDuration() *types.Duration { if m != nil { return m.DrainDuration } return nil } -func (m *ProxyConfig) GetParentShutdownDuration() *google_protobuf.Duration { +func (m *ProxyConfig) GetParentShutdownDuration() *types.Duration { if m != nil { return m.ParentShutdownDuration } @@ -429,13 +601,15 @@ func (m *ProxyConfig) GetDiscoveryAddress() string { return "" } -func (m *ProxyConfig) GetDiscoveryRefreshDelay() *google_protobuf.Duration { +// Deprecated: Do not use. +func (m *ProxyConfig) GetDiscoveryRefreshDelay() *types.Duration { if m != nil { return m.DiscoveryRefreshDelay } return nil } +// Deprecated: Do not use. func (m *ProxyConfig) GetZipkinAddress() string { if m != nil { return m.ZipkinAddress @@ -443,7 +617,7 @@ func (m *ProxyConfig) GetZipkinAddress() string { return "" } -func (m *ProxyConfig) GetConnectTimeout() *google_protobuf.Duration { +func (m *ProxyConfig) GetConnectTimeout() *types.Duration { if m != nil { return m.ConnectTimeout } @@ -457,6 +631,13 @@ func (m *ProxyConfig) GetStatsdUdpAddress() string { return "" } +func (m *ProxyConfig) GetEnvoyMetricsServiceAddress() string { + if m != nil { + return m.EnvoyMetricsServiceAddress + } + return "" +} + func (m *ProxyConfig) GetProxyAdminPort() int32 { if m != nil { return m.ProxyAdminPort @@ -464,6 +645,7 @@ func (m *ProxyConfig) GetProxyAdminPort() int32 { return 0 } +// Deprecated: Do not use. func (m *ProxyConfig) GetAvailabilityZone() string { if m != nil { return m.AvailabilityZone @@ -521,14 +703,79 @@ func (m *ProxyConfig) GetTracing() *Tracing { } func init() { + proto.RegisterEnum("istio.mesh.v1alpha1.AuthenticationPolicy", AuthenticationPolicy_name, AuthenticationPolicy_value) + proto.RegisterEnum("istio.mesh.v1alpha1.ProxyConfig_InboundInterceptionMode", ProxyConfig_InboundInterceptionMode_name, ProxyConfig_InboundInterceptionMode_value) proto.RegisterType((*Tracing)(nil), "istio.mesh.v1alpha1.Tracing") proto.RegisterType((*Tracing_Zipkin)(nil), "istio.mesh.v1alpha1.Tracing.Zipkin") proto.RegisterType((*Tracing_Lightstep)(nil), "istio.mesh.v1alpha1.Tracing.Lightstep") proto.RegisterType((*Tracing_Datadog)(nil), "istio.mesh.v1alpha1.Tracing.Datadog") proto.RegisterType((*ProxyConfig)(nil), "istio.mesh.v1alpha1.ProxyConfig") - proto.RegisterEnum("istio.mesh.v1alpha1.AuthenticationPolicy", AuthenticationPolicy_name, AuthenticationPolicy_value) - proto.RegisterEnum("istio.mesh.v1alpha1.ProxyConfig_InboundInterceptionMode", ProxyConfig_InboundInterceptionMode_name, ProxyConfig_InboundInterceptionMode_value) } + +func init() { proto.RegisterFile("mesh/v1alpha1/proxy.proto", fileDescriptor_5efecd978cf3d28d) } + +var fileDescriptor_5efecd978cf3d28d = []byte{ + // 919 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x55, 0x5d, 0x6f, 0xdb, 0x36, + 0x14, 0x8d, 0xfa, 0x61, 0xc7, 0xd7, 0x89, 0xa3, 0xb0, 0x5d, 0xaa, 0x18, 0x5b, 0x96, 0xa5, 0xc3, + 0xe6, 0x6e, 0x83, 0x8c, 0xa6, 0xc0, 0xb0, 0x97, 0x0d, 0xb5, 0x93, 0x14, 0x31, 0x90, 0xa4, 0x86, + 0xe2, 0x00, 0x5b, 0x5e, 0x08, 0x5a, 0xba, 0xb1, 0x88, 0xca, 0xa4, 0x40, 0x51, 0xde, 0xdc, 0xb7, + 0xfd, 0x9c, 0xfd, 0x90, 0x01, 0x7b, 0xdc, 0x4f, 0x18, 0xf2, 0xb4, 0x9f, 0x31, 0x88, 0x94, 0x5c, + 0xaf, 0xc8, 0xc7, 0x9b, 0x75, 0x78, 0xce, 0xe1, 0xbd, 0x87, 0xbc, 0x34, 0x6c, 0x4f, 0x31, 0x8b, + 0xbb, 0xb3, 0x97, 0x2c, 0x49, 0x63, 0xf6, 0xb2, 0x9b, 0x2a, 0xf9, 0xdb, 0xdc, 0x4f, 0x95, 0xd4, + 0x92, 0x3c, 0xe1, 0x99, 0xe6, 0xd2, 0x2f, 0x08, 0x7e, 0x45, 0x68, 0xef, 0x4c, 0xa4, 0x9c, 0x24, + 0xd8, 0x35, 0x94, 0x71, 0x7e, 0xd5, 0x8d, 0x72, 0xc5, 0x34, 0x97, 0xc2, 0x8a, 0xf6, 0xfe, 0x78, + 0x08, 0xf5, 0x91, 0x62, 0x21, 0x17, 0x13, 0xf2, 0x23, 0xd4, 0xde, 0xf3, 0xf4, 0x1d, 0x17, 0x9e, + 0xb3, 0xeb, 0x74, 0x9a, 0xfb, 0xcf, 0xfd, 0x1b, 0x1c, 0xfd, 0x92, 0xed, 0x5f, 0x1a, 0xea, 0xf1, + 0x4a, 0x50, 0x8a, 0xc8, 0x1b, 0x68, 0x24, 0x7c, 0x12, 0xeb, 0x4c, 0x63, 0xea, 0x3d, 0x30, 0x0e, + 0x5f, 0xdd, 0xe9, 0x70, 0x52, 0xb1, 0x8f, 0x57, 0x82, 0x0f, 0x52, 0xf2, 0x1a, 0xea, 0x11, 0xd3, + 0x2c, 0x92, 0x13, 0xef, 0xa1, 0x71, 0xf9, 0xf2, 0x4e, 0x97, 0x43, 0xcb, 0x3d, 0x5e, 0x09, 0x2a, + 0x59, 0x7b, 0x0f, 0x6a, 0xb6, 0x3a, 0xe2, 0x41, 0x9d, 0x45, 0x91, 0xc2, 0x2c, 0x33, 0x3d, 0x35, + 0x82, 0xea, 0xb3, 0xfd, 0xbb, 0x03, 0x8d, 0x45, 0x01, 0xb7, 0xf3, 0xc8, 0x17, 0xb0, 0xc6, 0xc2, + 0x10, 0xb3, 0x8c, 0x6a, 0xf9, 0x0e, 0x85, 0x69, 0xac, 0x11, 0x34, 0x2d, 0x36, 0x2a, 0x20, 0xb2, + 0x05, 0xb5, 0x0c, 0xc3, 0x5c, 0xa1, 0xa9, 0x77, 0x35, 0x28, 0xbf, 0xc8, 0xe7, 0xd0, 0x0c, 0x59, + 0x88, 0x4a, 0xd3, 0x94, 0xe9, 0xd8, 0x7b, 0x64, 0x94, 0x60, 0xa1, 0x21, 0xd3, 0x71, 0xfb, 0x39, + 0xd4, 0xcb, 0xea, 0x6f, 0x2f, 0xa0, 0xbf, 0x0a, 0x35, 0xad, 0x0a, 0xcd, 0xde, 0x9f, 0x0d, 0x68, + 0x0e, 0x8b, 0x03, 0x3f, 0x90, 0xe2, 0x8a, 0x4f, 0x8c, 0xbf, 0xf9, 0x65, 0xfd, 0x9d, 0xd2, 0xdf, + 0x40, 0x85, 0x7f, 0x41, 0x18, 0x73, 0xc1, 0xd4, 0xdc, 0x12, 0x6c, 0xe9, 0x60, 0x21, 0x43, 0xf8, + 0x1a, 0x36, 0x32, 0x54, 0x33, 0x1e, 0x22, 0x0d, 0x93, 0x3c, 0xd3, 0xa8, 0x4c, 0x0b, 0x8d, 0xa0, + 0x55, 0xc2, 0x07, 0x16, 0x25, 0xaf, 0xa1, 0x15, 0x29, 0xc6, 0x05, 0xad, 0xae, 0x8f, 0xe9, 0xa6, + 0xb9, 0xbf, 0xed, 0xdb, 0xfb, 0xe5, 0x57, 0xf7, 0xcb, 0x3f, 0x2c, 0x09, 0xc1, 0xba, 0x11, 0x54, + 0x9f, 0xe4, 0x1c, 0xbc, 0x94, 0x29, 0x14, 0x9a, 0x66, 0x71, 0xae, 0x23, 0xf9, 0xeb, 0x92, 0xd7, + 0xe3, 0xfb, 0xbc, 0xb6, 0xac, 0xf4, 0xbc, 0x54, 0x2e, 0x4c, 0xbf, 0x85, 0xcd, 0x88, 0x67, 0xa1, + 0x9c, 0xa1, 0x9a, 0xd3, 0x2a, 0xbf, 0x9a, 0xe9, 0xc0, 0x5d, 0x2c, 0xf4, 0xca, 0x93, 0xbc, 0x80, + 0x67, 0x1f, 0xc8, 0x0a, 0xaf, 0x14, 0x66, 0x31, 0x8d, 0x30, 0x61, 0x73, 0xaf, 0x7e, 0x4f, 0x01, + 0xfd, 0x07, 0x9e, 0x13, 0x7c, 0xb2, 0x50, 0x07, 0x56, 0x7c, 0x58, 0x68, 0xc9, 0x0b, 0x68, 0xd9, + 0x01, 0x58, 0x14, 0xb0, 0x5a, 0x14, 0x60, 0x24, 0xeb, 0x76, 0xa5, 0xaa, 0xa0, 0x0f, 0x1b, 0xa1, + 0x14, 0x02, 0x43, 0x4d, 0x35, 0x9f, 0xa2, 0xcc, 0xb5, 0xd7, 0xb8, 0xaf, 0xf5, 0x56, 0xa9, 0x18, + 0x59, 0x01, 0xf9, 0x0e, 0x48, 0xa6, 0x99, 0xce, 0x22, 0x9a, 0x47, 0xe9, 0x62, 0x4b, 0xb0, 0x3d, + 0xdb, 0x95, 0x8b, 0x28, 0xad, 0x76, 0xec, 0xc1, 0x67, 0x28, 0x66, 0x72, 0x4e, 0xa7, 0xa8, 0x15, + 0x0f, 0x33, 0x5a, 0x1d, 0x77, 0x25, 0x7c, 0x6a, 0x84, 0x6d, 0x43, 0x3a, 0xb5, 0x9c, 0x73, 0x4b, + 0xa9, 0x2c, 0x3a, 0xe0, 0x9a, 0x57, 0x86, 0xb2, 0x68, 0xca, 0x05, 0x4d, 0xa5, 0xd2, 0x5e, 0x73, + 0xd7, 0xe9, 0x3c, 0x0e, 0x5a, 0x06, 0xef, 0x15, 0xf0, 0x50, 0x2a, 0x4d, 0xba, 0xb0, 0xc9, 0x66, + 0x8c, 0x27, 0x6c, 0xcc, 0x13, 0xae, 0xe7, 0xf4, 0xbd, 0x14, 0xe8, 0xad, 0x2d, 0xc2, 0x70, 0x97, + 0x17, 0x2f, 0xa5, 0x40, 0x12, 0xc1, 0x76, 0x28, 0x85, 0x56, 0x32, 0xa1, 0x69, 0xc2, 0x04, 0x52, + 0x96, 0xeb, 0x98, 0xa6, 0x32, 0xe1, 0xe1, 0xdc, 0x5b, 0xdf, 0x75, 0x3a, 0xad, 0xfd, 0x17, 0x37, + 0xce, 0x7e, 0x2f, 0xd7, 0x31, 0x0a, 0xcd, 0x43, 0x93, 0xd1, 0xd0, 0x08, 0x82, 0xad, 0xd2, 0x6b, + 0x58, 0x58, 0x15, 0x0c, 0x8b, 0x17, 0x89, 0x85, 0x79, 0xa6, 0xe5, 0x94, 0x96, 0xd3, 0x72, 0xc5, + 0x13, 0xf4, 0x5a, 0x36, 0x31, 0xbb, 0x62, 0x07, 0xea, 0x0d, 0x4f, 0xb0, 0x68, 0xb7, 0x48, 0x91, + 0x0a, 0x36, 0x45, 0x9a, 0xa0, 0x98, 0xe8, 0xd8, 0xdb, 0xb0, 0xed, 0x16, 0xf8, 0x19, 0x9b, 0xe2, + 0x89, 0x41, 0xc9, 0xae, 0x19, 0xbf, 0x30, 0x57, 0x0a, 0x45, 0x38, 0xf7, 0x5c, 0x43, 0x5a, 0x86, + 0x8a, 0xf4, 0x6d, 0x74, 0x63, 0x29, 0x75, 0xa6, 0x15, 0x4b, 0xa9, 0xc6, 0x69, 0x9a, 0x30, 0x8d, + 0x76, 0x22, 0x37, 0x6d, 0xfa, 0x86, 0xd4, 0xaf, 0x38, 0xa3, 0x92, 0x62, 0x26, 0x14, 0x61, 0x93, + 0x0b, 0x8d, 0x2a, 0xc4, 0xb4, 0x68, 0x95, 0x4e, 0x65, 0x84, 0x1e, 0x31, 0xd1, 0xfc, 0x70, 0x63, + 0x34, 0x4b, 0x0f, 0x84, 0x3f, 0x10, 0x63, 0x99, 0x8b, 0x68, 0xb0, 0x64, 0x70, 0x2a, 0x23, 0x0c, + 0x5c, 0xfe, 0x11, 0x42, 0xbe, 0x87, 0xba, 0xb6, 0xef, 0xa9, 0xf7, 0xc4, 0xdc, 0xc8, 0x4f, 0xef, + 0x7a, 0x73, 0x83, 0x8a, 0xbc, 0xf7, 0x0a, 0x9e, 0xdd, 0xb2, 0x09, 0x59, 0x83, 0xd5, 0xe0, 0xe8, + 0x70, 0x10, 0x1c, 0x1d, 0x8c, 0xdc, 0x15, 0x02, 0x50, 0x1b, 0x0d, 0x83, 0xb7, 0x3f, 0xff, 0xe2, + 0x3a, 0xdf, 0xfc, 0x04, 0x4f, 0x6f, 0x3a, 0x40, 0xb2, 0x0a, 0x8f, 0xce, 0xde, 0x9e, 0x1d, 0xb9, + 0x2b, 0xa4, 0x05, 0x70, 0x7a, 0x31, 0xba, 0xe8, 0x9d, 0xd0, 0xd1, 0xc9, 0xb9, 0xeb, 0x90, 0x35, + 0xa8, 0x0f, 0xce, 0x8e, 0x8f, 0x82, 0xc1, 0xc8, 0xfd, 0xb7, 0xde, 0xef, 0xfc, 0x75, 0xbd, 0xe3, + 0xfc, 0x7d, 0xbd, 0xe3, 0xfc, 0x73, 0xbd, 0xe3, 0x5c, 0xb6, 0x6d, 0xa1, 0x5c, 0x76, 0x59, 0xca, + 0xbb, 0xff, 0xfb, 0x7b, 0x1c, 0xd7, 0xcc, 0x3c, 0xbd, 0xfa, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x38, + 0x0f, 0xe1, 0x8f, 0x36, 0x07, 0x00, 0x00, +} + func (m *Tracing) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -551,6 +798,9 @@ func (m *Tracing) MarshalTo(dAtA []byte) (int, error) { } i += nn1 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -617,6 +867,9 @@ func (m *Tracing_Zipkin) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintProxy(dAtA, i, uint64(len(m.Address))) i += copy(dAtA[i:], m.Address) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -663,6 +916,9 @@ func (m *Tracing_Lightstep) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintProxy(dAtA, i, uint64(len(m.CacertPath))) i += copy(dAtA[i:], m.CacertPath) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -687,6 +943,9 @@ func (m *Tracing_Datadog) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintProxy(dAtA, i, uint64(len(m.Address))) i += copy(dAtA[i:], m.Address) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -842,6 +1101,17 @@ func (m *ProxyConfig) MarshalTo(dAtA []byte) (int, error) { } i += n9 } + if len(m.EnvoyMetricsServiceAddress) > 0 { + dAtA[i] = 0xa2 + i++ + dAtA[i] = 0x1 + i++ + i = encodeVarintProxy(dAtA, i, uint64(len(m.EnvoyMetricsServiceAddress))) + i += copy(dAtA[i:], m.EnvoyMetricsServiceAddress) + } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -855,15 +1125,24 @@ func encodeVarintProxy(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *Tracing) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Tracer != nil { n += m.Tracer.Size() } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *Tracing_Zipkin_) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Zipkin != nil { @@ -873,6 +1152,9 @@ func (m *Tracing_Zipkin_) Size() (n int) { return n } func (m *Tracing_Lightstep_) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Lightstep != nil { @@ -882,6 +1164,9 @@ func (m *Tracing_Lightstep_) Size() (n int) { return n } func (m *Tracing_Datadog_) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Datadog != nil { @@ -891,16 +1176,25 @@ func (m *Tracing_Datadog_) Size() (n int) { return n } func (m *Tracing_Zipkin) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Address) if l > 0 { n += 1 + l + sovProxy(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *Tracing_Lightstep) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Address) @@ -918,20 +1212,32 @@ func (m *Tracing_Lightstep) Size() (n int) { if l > 0 { n += 1 + l + sovProxy(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *Tracing_Datadog) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Address) if l > 0 { n += 1 + l + sovProxy(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *ProxyConfig) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.ConfigPath) @@ -1005,6 +1311,13 @@ func (m *ProxyConfig) Size() (n int) { l = m.Tracing.Size() n += 2 + l + sovProxy(uint64(l)) } + l = len(m.EnvoyMetricsServiceAddress) + if l > 0 { + n += 2 + l + sovProxy(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -1036,7 +1349,7 @@ func (m *Tracing) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1064,7 +1377,7 @@ func (m *Tracing) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1073,6 +1386,9 @@ func (m *Tracing) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1096,7 +1412,7 @@ func (m *Tracing) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1105,6 +1421,9 @@ func (m *Tracing) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1128,7 +1447,7 @@ func (m *Tracing) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1137,6 +1456,9 @@ func (m *Tracing) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1155,9 +1477,13 @@ func (m *Tracing) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthProxy } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthProxy + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -1182,7 +1508,7 @@ func (m *Tracing_Zipkin) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1210,7 +1536,7 @@ func (m *Tracing_Zipkin) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1220,6 +1546,9 @@ func (m *Tracing_Zipkin) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1234,9 +1563,13 @@ func (m *Tracing_Zipkin) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthProxy } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthProxy + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -1261,7 +1594,7 @@ func (m *Tracing_Lightstep) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1289,7 +1622,7 @@ func (m *Tracing_Lightstep) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1299,6 +1632,9 @@ func (m *Tracing_Lightstep) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1318,7 +1654,7 @@ func (m *Tracing_Lightstep) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1328,6 +1664,9 @@ func (m *Tracing_Lightstep) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1347,7 +1686,7 @@ func (m *Tracing_Lightstep) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1367,7 +1706,7 @@ func (m *Tracing_Lightstep) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1377,6 +1716,9 @@ func (m *Tracing_Lightstep) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1391,9 +1733,13 @@ func (m *Tracing_Lightstep) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthProxy } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthProxy + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -1418,7 +1764,7 @@ func (m *Tracing_Datadog) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1446,7 +1792,7 @@ func (m *Tracing_Datadog) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1456,6 +1802,9 @@ func (m *Tracing_Datadog) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1470,9 +1819,13 @@ func (m *Tracing_Datadog) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthProxy } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthProxy + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -1497,7 +1850,7 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1525,7 +1878,7 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1535,6 +1888,9 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1554,7 +1910,7 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1564,6 +1920,9 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1583,7 +1942,7 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1593,6 +1952,9 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1612,7 +1974,7 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1621,11 +1983,14 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } if m.DrainDuration == nil { - m.DrainDuration = &google_protobuf.Duration{} + m.DrainDuration = &types.Duration{} } if err := m.DrainDuration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1645,7 +2010,7 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1654,11 +2019,14 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } if m.ParentShutdownDuration == nil { - m.ParentShutdownDuration = &google_protobuf.Duration{} + m.ParentShutdownDuration = &types.Duration{} } if err := m.ParentShutdownDuration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1678,7 +2046,7 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1688,6 +2056,9 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1707,7 +2078,7 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1716,11 +2087,14 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } if m.DiscoveryRefreshDelay == nil { - m.DiscoveryRefreshDelay = &google_protobuf.Duration{} + m.DiscoveryRefreshDelay = &types.Duration{} } if err := m.DiscoveryRefreshDelay.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1740,7 +2114,7 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1750,6 +2124,9 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1769,7 +2146,7 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1778,11 +2155,14 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } if m.ConnectTimeout == nil { - m.ConnectTimeout = &google_protobuf.Duration{} + m.ConnectTimeout = &types.Duration{} } if err := m.ConnectTimeout.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1802,7 +2182,7 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1812,6 +2192,9 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1831,7 +2214,7 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ProxyAdminPort |= (int32(b) & 0x7F) << shift + m.ProxyAdminPort |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -1850,7 +2233,7 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1860,6 +2243,9 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1879,7 +2265,7 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ControlPlaneAuthPolicy |= (AuthenticationPolicy(b) & 0x7F) << shift + m.ControlPlaneAuthPolicy |= AuthenticationPolicy(b&0x7F) << shift if b < 0x80 { break } @@ -1898,7 +2284,7 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1908,6 +2294,9 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1927,7 +2316,7 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.StatNameLength |= (int32(b) & 0x7F) << shift + m.StatNameLength |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -1946,7 +2335,7 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Concurrency |= (int32(b) & 0x7F) << shift + m.Concurrency |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -1965,7 +2354,7 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1975,6 +2364,9 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1994,7 +2386,7 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.InterceptionMode |= (ProxyConfig_InboundInterceptionMode(b) & 0x7F) << shift + m.InterceptionMode |= ProxyConfig_InboundInterceptionMode(b&0x7F) << shift if b < 0x80 { break } @@ -2013,7 +2405,7 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2022,6 +2414,9 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthProxy } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthProxy + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2032,6 +2427,38 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EnvoyMetricsServiceAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowProxy + } + 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 ErrInvalidLengthProxy + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthProxy + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EnvoyMetricsServiceAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipProxy(dAtA[iNdEx:]) @@ -2041,9 +2468,13 @@ func (m *ProxyConfig) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthProxy } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthProxy + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -2107,10 +2538,13 @@ func skipProxy(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthProxy } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthProxy + } return iNdEx, nil case 3: for { @@ -2139,6 +2573,9 @@ func skipProxy(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthProxy + } } return iNdEx, nil case 4: @@ -2157,65 +2594,3 @@ var ( ErrInvalidLengthProxy = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowProxy = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("mesh/v1alpha1/proxy.proto", fileDescriptorProxy) } - -var fileDescriptorProxy = []byte{ - // 891 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x55, 0xdd, 0x6e, 0xe3, 0x44, - 0x18, 0x8d, 0xf7, 0x27, 0x3f, 0x5f, 0xda, 0xd4, 0x9d, 0x85, 0xae, 0x1b, 0x41, 0x29, 0x5d, 0x04, - 0x59, 0x40, 0x8e, 0xb6, 0x2b, 0x21, 0x6e, 0x40, 0x9b, 0xb4, 0x5d, 0x35, 0x52, 0xb7, 0x1b, 0xb9, - 0xa9, 0x04, 0xbd, 0x19, 0x4d, 0xec, 0xaf, 0xf1, 0x68, 0x9d, 0x19, 0x6b, 0x3c, 0x2e, 0x64, 0xef, - 0xe0, 0x6d, 0x78, 0x13, 0x2e, 0x79, 0x04, 0xd4, 0x2b, 0x1e, 0x03, 0x79, 0xc6, 0xce, 0x06, 0xd4, - 0x9f, 0xbb, 0xf8, 0xcc, 0x39, 0xc7, 0xe7, 0x8c, 0xe7, 0x9b, 0xc0, 0xf6, 0x1c, 0xb3, 0xb8, 0x7f, - 0xf5, 0x82, 0x25, 0x69, 0xcc, 0x5e, 0xf4, 0x53, 0x25, 0x7f, 0x5d, 0xf8, 0xa9, 0x92, 0x5a, 0x92, - 0x27, 0x3c, 0xd3, 0x5c, 0xfa, 0x05, 0xc1, 0xaf, 0x08, 0xdd, 0x9d, 0x99, 0x94, 0xb3, 0x04, 0xfb, - 0x86, 0x32, 0xcd, 0x2f, 0xfb, 0x51, 0xae, 0x98, 0xe6, 0x52, 0x58, 0xd1, 0xde, 0x1f, 0x0f, 0xa1, - 0x31, 0x51, 0x2c, 0xe4, 0x62, 0x46, 0x7e, 0x80, 0xfa, 0x7b, 0x9e, 0xbe, 0xe3, 0xc2, 0x73, 0x76, - 0x9d, 0x5e, 0x7b, 0xff, 0x99, 0x7f, 0x83, 0xa3, 0x5f, 0xb2, 0xfd, 0x0b, 0x43, 0x3d, 0xae, 0x05, - 0xa5, 0x88, 0xbc, 0x86, 0x56, 0xc2, 0x67, 0xb1, 0xce, 0x34, 0xa6, 0xde, 0x03, 0xe3, 0xf0, 0xe5, - 0x9d, 0x0e, 0x27, 0x15, 0xfb, 0xb8, 0x16, 0x7c, 0x90, 0x92, 0x57, 0xd0, 0x88, 0x98, 0x66, 0x91, - 0x9c, 0x79, 0x0f, 0x8d, 0xcb, 0x17, 0x77, 0xba, 0x1c, 0x5a, 0xee, 0x71, 0x2d, 0xa8, 0x64, 0xdd, - 0x3d, 0xa8, 0xdb, 0x74, 0xc4, 0x83, 0x06, 0x8b, 0x22, 0x85, 0x59, 0x66, 0x3a, 0xb5, 0x82, 0xea, - 0xb1, 0xfb, 0x9b, 0x03, 0xad, 0x65, 0x80, 0xdb, 0x79, 0xe4, 0x73, 0x58, 0x63, 0x61, 0x88, 0x59, - 0x46, 0xb5, 0x7c, 0x87, 0xc2, 0x14, 0x6b, 0x05, 0x6d, 0x8b, 0x4d, 0x0a, 0x88, 0x6c, 0x41, 0x3d, - 0xc3, 0x30, 0x57, 0x68, 0xf2, 0x36, 0x83, 0xf2, 0x89, 0x7c, 0x06, 0xed, 0x90, 0x85, 0xa8, 0x34, - 0x4d, 0x99, 0x8e, 0xbd, 0x47, 0x46, 0x09, 0x16, 0x1a, 0x33, 0x1d, 0x77, 0x9f, 0x41, 0xa3, 0x4c, - 0x7f, 0x7b, 0x80, 0x61, 0x13, 0xea, 0x5a, 0x15, 0x9a, 0xbd, 0xdf, 0x5b, 0xd0, 0x1e, 0x17, 0x1f, - 0xfc, 0x40, 0x8a, 0x4b, 0x3e, 0x33, 0xfe, 0xe6, 0x97, 0xf5, 0x77, 0x4a, 0x7f, 0x03, 0x15, 0xfe, - 0x05, 0x61, 0xca, 0x05, 0x53, 0x0b, 0x4b, 0xb0, 0xd1, 0xc1, 0x42, 0x86, 0xf0, 0x15, 0x6c, 0x64, - 0xa8, 0xae, 0x78, 0x88, 0x34, 0x4c, 0xf2, 0x4c, 0xa3, 0x32, 0x15, 0x5a, 0x41, 0xa7, 0x84, 0x0f, - 0x2c, 0x4a, 0x5e, 0x41, 0x27, 0x52, 0x8c, 0x0b, 0x5a, 0x1d, 0x1f, 0xd3, 0xa6, 0xbd, 0xbf, 0xed, - 0xdb, 0xf3, 0xe5, 0x57, 0xe7, 0xcb, 0x3f, 0x2c, 0x09, 0xc1, 0xba, 0x11, 0x54, 0x8f, 0xe4, 0x0c, - 0xbc, 0x94, 0x29, 0x14, 0x9a, 0x66, 0x71, 0xae, 0x23, 0xf9, 0xcb, 0x8a, 0xd7, 0xe3, 0xfb, 0xbc, - 0xb6, 0xac, 0xf4, 0xac, 0x54, 0x2e, 0x4d, 0xbf, 0x81, 0xcd, 0x88, 0x67, 0xa1, 0xbc, 0x42, 0xb5, - 0xa0, 0xd5, 0xfe, 0xd5, 0x4d, 0x03, 0x77, 0xb9, 0x30, 0x28, 0xbf, 0xe4, 0x39, 0x3c, 0xfd, 0x40, - 0x56, 0x78, 0xa9, 0x30, 0x8b, 0x69, 0x84, 0x09, 0x5b, 0x78, 0x8d, 0x7b, 0x02, 0x0c, 0x1f, 0x78, - 0x4e, 0xf0, 0xf1, 0x52, 0x1d, 0x58, 0xf1, 0x61, 0xa1, 0x25, 0xcf, 0xa1, 0x63, 0x07, 0x60, 0x19, - 0xa0, 0x59, 0x04, 0x30, 0x92, 0x75, 0xbb, 0x52, 0x25, 0x18, 0xc2, 0x46, 0x28, 0x85, 0xc0, 0x50, - 0x53, 0xcd, 0xe7, 0x28, 0x73, 0xed, 0xb5, 0xee, 0xab, 0xde, 0x29, 0x15, 0x13, 0x2b, 0x20, 0xdf, - 0x02, 0xc9, 0x34, 0xd3, 0x59, 0x44, 0xf3, 0x28, 0x5d, 0xbe, 0x12, 0x6c, 0x67, 0xbb, 0x72, 0x1e, - 0xa5, 0xd5, 0x1b, 0x7b, 0xe0, 0x9a, 0x2b, 0x82, 0xb2, 0x68, 0xce, 0x05, 0x4d, 0xa5, 0xd2, 0x5e, - 0x7b, 0xd7, 0xe9, 0x3d, 0x0e, 0x3a, 0x06, 0x1f, 0x14, 0xf0, 0x58, 0x2a, 0x4d, 0xfa, 0xb0, 0xc9, - 0xae, 0x18, 0x4f, 0xd8, 0x94, 0x27, 0x5c, 0x2f, 0xe8, 0x7b, 0x29, 0xd0, 0x5b, 0x5b, 0x36, 0x71, - 0x57, 0x17, 0x2f, 0xa4, 0x40, 0x12, 0xc1, 0x76, 0x28, 0x85, 0x56, 0x32, 0xa1, 0x69, 0xc2, 0x04, - 0x52, 0x96, 0xeb, 0x98, 0xa6, 0x32, 0xe1, 0xe1, 0xc2, 0x5b, 0xdf, 0x75, 0x7a, 0x9d, 0xfd, 0xe7, - 0x37, 0x0e, 0xee, 0x20, 0xd7, 0x31, 0x0a, 0xcd, 0x43, 0x53, 0x70, 0x6c, 0x04, 0xc1, 0x56, 0xe9, - 0x35, 0x2e, 0xac, 0x0a, 0x86, 0xc5, 0x8b, 0xba, 0x61, 0x9e, 0x69, 0x39, 0xa7, 0xe5, 0x51, 0xbf, - 0xe4, 0x09, 0x7a, 0x1d, 0x5b, 0xd7, 0xae, 0xd8, 0x69, 0x78, 0xcd, 0x13, 0x2c, 0xea, 0x16, 0x5b, - 0x40, 0x05, 0x9b, 0x23, 0x4d, 0x50, 0xcc, 0x74, 0xec, 0x6d, 0xd8, 0xba, 0x05, 0x7e, 0xca, 0xe6, - 0x78, 0x62, 0x50, 0xb2, 0x6b, 0x66, 0x27, 0xcc, 0x95, 0x42, 0x11, 0x2e, 0x3c, 0xd7, 0x90, 0x56, - 0x21, 0x32, 0x80, 0x4f, 0xed, 0xd6, 0x4d, 0xa5, 0xd4, 0x99, 0x56, 0x2c, 0xa5, 0x1a, 0xe7, 0x69, - 0xc2, 0x34, 0xda, 0x71, 0xda, 0x34, 0x21, 0xba, 0x86, 0x34, 0xac, 0x38, 0x93, 0x92, 0x62, 0xc6, - 0x0b, 0x61, 0x93, 0x0b, 0x8d, 0x2a, 0xc4, 0xb4, 0xa8, 0x4a, 0xe7, 0x32, 0x42, 0x8f, 0x98, 0xad, - 0xf9, 0xfe, 0xc6, 0xad, 0x59, 0x99, 0x6e, 0x7f, 0x24, 0xa6, 0x32, 0x17, 0xd1, 0x68, 0xc5, 0xe0, - 0x8d, 0x8c, 0x30, 0x70, 0xf9, 0xff, 0x10, 0xf2, 0x1d, 0x34, 0xb4, 0xbd, 0x0c, 0xbd, 0x27, 0xe6, - 0x38, 0x7d, 0x72, 0xd7, 0x85, 0x19, 0x54, 0xe4, 0xbd, 0x97, 0xf0, 0xf4, 0x96, 0x97, 0x90, 0x35, - 0x68, 0x06, 0x47, 0x87, 0xa3, 0xe0, 0xe8, 0x60, 0xe2, 0xd6, 0x08, 0x40, 0x7d, 0x32, 0x0e, 0xde, - 0xfe, 0xf4, 0xb3, 0xeb, 0x7c, 0xfd, 0x23, 0x7c, 0x74, 0xd3, 0x07, 0x24, 0x4d, 0x78, 0x74, 0xfa, - 0xf6, 0xf4, 0xc8, 0xad, 0x91, 0x0e, 0xc0, 0x9b, 0xf3, 0xc9, 0xf9, 0xe0, 0x84, 0x4e, 0x4e, 0xce, - 0x5c, 0x87, 0xac, 0x41, 0x63, 0x74, 0x7a, 0x7c, 0x14, 0x8c, 0x26, 0xee, 0x3f, 0x8d, 0x61, 0xef, - 0xcf, 0xeb, 0x1d, 0xe7, 0xaf, 0xeb, 0x1d, 0xe7, 0xef, 0xeb, 0x1d, 0xe7, 0xa2, 0x6b, 0x83, 0x72, - 0xd9, 0x67, 0x29, 0xef, 0xff, 0xe7, 0xbf, 0x6d, 0x5a, 0x37, 0xc3, 0xf0, 0xf2, 0xdf, 0x00, 0x00, - 0x00, 0xff, 0xff, 0xff, 0x17, 0x86, 0x5a, 0xf3, 0x06, 0x00, 0x00, -} diff --git a/mesh/v1alpha1/proxy.proto b/mesh/v1alpha1/proxy.proto index 91566b6e208..fcdcbae5d58 100644 --- a/mesh/v1alpha1/proxy.proto +++ b/mesh/v1alpha1/proxy.proto @@ -127,6 +127,11 @@ message ProxyConfig { // IP Address and Port of a statsd UDP listener (e.g. _10.75.241.127:9125_). string statsd_udp_address = 10; + // Address of the Envoy Metrics Service implementation (e.g. metrics-service:15000). + // See https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/metrics/v2/metrics_service.proto + // for details about Envoy's Metrics Service API. + string envoy_metrics_service_address = 20; + // Port on which Envoy should listen for administrative commands. int32 proxy_admin_port = 11; diff --git a/mixer/adapter/model/v1beta1/check.pb.go b/mixer/adapter/model/v1beta1/check.pb.go index 95a431c4786..93d0e8b1503 100644 --- a/mixer/adapter/model/v1beta1/check.pb.go +++ b/mixer/adapter/model/v1beta1/check.pb.go @@ -1,49 +1,21 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: mixer/adapter/model/v1beta1/check.proto -/* - Package v1beta1 is a generated protocol buffer package. - - It is generated from these files: - mixer/adapter/model/v1beta1/check.proto - mixer/adapter/model/v1beta1/extensions.proto - mixer/adapter/model/v1beta1/info.proto - mixer/adapter/model/v1beta1/infrastructure_backend.proto - mixer/adapter/model/v1beta1/quota.proto - mixer/adapter/model/v1beta1/report.proto - mixer/adapter/model/v1beta1/template.proto - - It has these top-level messages: - CheckResult - Info - CreateSessionRequest - CreateSessionResponse - ValidateRequest - ValidateResponse - CloseSessionRequest - CloseSessionResponse - QuotaRequest - QuotaResult - ReportResult - Template -*/ package v1beta1 -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "github.com/gogo/protobuf/gogoproto" -import _ "github.com/gogo/protobuf/types" -import google_rpc "github.com/gogo/googleapis/google/rpc" - -import time "time" - -import types "github.com/gogo/protobuf/types" - -import strings "strings" -import reflect "reflect" - -import io "io" +import ( + fmt "fmt" + rpc "github.com/gogo/googleapis/google/rpc" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" + _ "github.com/gogo/protobuf/types" + github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" + io "io" + math "math" + reflect "reflect" + strings "strings" + time "time" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -61,20 +33,78 @@ const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package type CheckResult struct { // A status code of OK indicates preconditions were satisfied. Any other code indicates preconditions were not // satisfied and details describe why. - Status google_rpc.Status `protobuf:"bytes,1,opt,name=status" json:"status"` + Status rpc.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` // The amount of time for which this result can be considered valid. - ValidDuration time.Duration `protobuf:"bytes,2,opt,name=valid_duration,json=validDuration,stdduration" json:"valid_duration"` + ValidDuration time.Duration `protobuf:"bytes,2,opt,name=valid_duration,json=validDuration,proto3,stdduration" json:"valid_duration"` // The number of uses for which this result can be considered valid. ValidUseCount int32 `protobuf:"varint,3,opt,name=valid_use_count,json=validUseCount,proto3" json:"valid_use_count,omitempty"` } -func (m *CheckResult) Reset() { *m = CheckResult{} } -func (*CheckResult) ProtoMessage() {} -func (*CheckResult) Descriptor() ([]byte, []int) { return fileDescriptorCheck, []int{0} } +func (m *CheckResult) Reset() { *m = CheckResult{} } +func (*CheckResult) ProtoMessage() {} +func (*CheckResult) Descriptor() ([]byte, []int) { + return fileDescriptor_b5cd393dc2a446fd, []int{0} +} +func (m *CheckResult) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CheckResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CheckResult.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CheckResult) XXX_Merge(src proto.Message) { + xxx_messageInfo_CheckResult.Merge(m, src) +} +func (m *CheckResult) XXX_Size() int { + return m.Size() +} +func (m *CheckResult) XXX_DiscardUnknown() { + xxx_messageInfo_CheckResult.DiscardUnknown(m) +} + +var xxx_messageInfo_CheckResult proto.InternalMessageInfo func init() { proto.RegisterType((*CheckResult)(nil), "istio.mixer.adapter.model.v1beta1.CheckResult") } + +func init() { + proto.RegisterFile("mixer/adapter/model/v1beta1/check.proto", fileDescriptor_b5cd393dc2a446fd) +} + +var fileDescriptor_b5cd393dc2a446fd = []byte{ + // 322 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x91, 0x3d, 0x4e, 0xc3, 0x30, + 0x18, 0x86, 0x6d, 0x7e, 0x2a, 0x94, 0x0a, 0x90, 0x22, 0x24, 0x4a, 0x87, 0xaf, 0x85, 0x01, 0x3a, + 0xd9, 0x14, 0x6e, 0xd0, 0x32, 0x31, 0x16, 0xb1, 0xb0, 0x54, 0x4e, 0x62, 0x82, 0x45, 0x5a, 0x47, + 0x89, 0x53, 0x31, 0x72, 0x04, 0x46, 0x8e, 0xc0, 0xce, 0x25, 0x3a, 0x76, 0xec, 0x04, 0xc4, 0x59, + 0x18, 0x7b, 0x04, 0x14, 0xdb, 0x59, 0xd9, 0x6c, 0x3f, 0xcf, 0xfb, 0xf9, 0x95, 0xed, 0x5d, 0xcc, + 0xc4, 0x0b, 0xcf, 0x28, 0x8b, 0x58, 0xaa, 0x78, 0x46, 0x67, 0x32, 0xe2, 0x09, 0x5d, 0x0c, 0x03, + 0xae, 0xd8, 0x90, 0x86, 0x4f, 0x3c, 0x7c, 0x26, 0x69, 0x26, 0x95, 0xf4, 0x4f, 0x45, 0xae, 0x84, + 0x24, 0x46, 0x27, 0x4e, 0x27, 0x46, 0x27, 0x4e, 0xef, 0x1e, 0xc5, 0x32, 0x96, 0xc6, 0xa6, 0xf5, + 0xca, 0x06, 0xbb, 0x10, 0x4b, 0x19, 0x27, 0x9c, 0x9a, 0x5d, 0x50, 0x3c, 0xd2, 0xa8, 0xc8, 0x98, + 0x12, 0x72, 0xee, 0xf8, 0xb1, 0xe3, 0x59, 0x1a, 0xd2, 0x5c, 0x31, 0x55, 0xe4, 0x16, 0x9c, 0x7d, + 0x62, 0xaf, 0x3d, 0xae, 0x1b, 0x4c, 0x78, 0x5e, 0x24, 0xca, 0xbf, 0xf4, 0x5a, 0x96, 0x77, 0x70, + 0x1f, 0x0f, 0xda, 0x57, 0x3e, 0xb1, 0x49, 0x92, 0xa5, 0x21, 0xb9, 0x33, 0x64, 0xb4, 0xb3, 0xfc, + 0xea, 0xa1, 0x89, 0xf3, 0xfc, 0x5b, 0xef, 0x60, 0xc1, 0x12, 0x11, 0x4d, 0x9b, 0x2b, 0x3b, 0x5b, + 0x26, 0x79, 0xd2, 0x24, 0x9b, 0x4e, 0xe4, 0xc6, 0x09, 0xa3, 0xbd, 0x7a, 0xc0, 0xfb, 0x77, 0x0f, + 0x4f, 0xf6, 0x4d, 0xb4, 0x01, 0xfe, 0xb9, 0x77, 0x68, 0x67, 0x15, 0x39, 0x9f, 0x86, 0xb2, 0x98, + 0xab, 0xce, 0x76, 0x1f, 0x0f, 0x76, 0x9d, 0x77, 0x9f, 0xf3, 0x71, 0x7d, 0x38, 0x0a, 0x96, 0x25, + 0xa0, 0x55, 0x09, 0x68, 0x5d, 0x02, 0xda, 0x94, 0x80, 0x5e, 0x35, 0xe0, 0x0f, 0x0d, 0x68, 0xa9, + 0x01, 0xaf, 0x34, 0xe0, 0x1f, 0x0d, 0xf8, 0x57, 0x03, 0xda, 0x68, 0xc0, 0x6f, 0x15, 0xa0, 0x55, + 0x05, 0x68, 0x5d, 0x01, 0x7a, 0x18, 0xd8, 0x17, 0x16, 0x92, 0xb2, 0x54, 0xd0, 0x7f, 0xfe, 0x25, + 0x68, 0x99, 0xde, 0xd7, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xc7, 0x5b, 0xc8, 0xb5, 0xbd, 0x01, + 0x00, 0x00, +} + func (m *CheckResult) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -100,8 +130,8 @@ func (m *CheckResult) MarshalTo(dAtA []byte) (int, error) { i += n1 dAtA[i] = 0x12 i++ - i = encodeVarintCheck(dAtA, i, uint64(types.SizeOfStdDuration(m.ValidDuration))) - n2, err := types.StdDurationMarshalTo(m.ValidDuration, dAtA[i:]) + i = encodeVarintCheck(dAtA, i, uint64(github_com_gogo_protobuf_types.SizeOfStdDuration(m.ValidDuration))) + n2, err := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.ValidDuration, dAtA[i:]) if err != nil { return 0, err } @@ -124,11 +154,14 @@ func encodeVarintCheck(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *CheckResult) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = m.Status.Size() n += 1 + l + sovCheck(uint64(l)) - l = types.SizeOfStdDuration(m.ValidDuration) + l = github_com_gogo_protobuf_types.SizeOfStdDuration(m.ValidDuration) n += 1 + l + sovCheck(uint64(l)) if m.ValidUseCount != 0 { n += 1 + sovCheck(uint64(m.ValidUseCount)) @@ -154,8 +187,8 @@ func (this *CheckResult) String() string { return "nil" } s := strings.Join([]string{`&CheckResult{`, - `Status:` + strings.Replace(strings.Replace(this.Status.String(), "Status", "google_rpc.Status", 1), `&`, ``, 1) + `,`, - `ValidDuration:` + strings.Replace(strings.Replace(this.ValidDuration.String(), "Duration", "google_protobuf1.Duration", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "Status", "rpc.Status", 1), `&`, ``, 1) + `,`, + `ValidDuration:` + strings.Replace(strings.Replace(this.ValidDuration.String(), "Duration", "types.Duration", 1), `&`, ``, 1) + `,`, `ValidUseCount:` + fmt.Sprintf("%v", this.ValidUseCount) + `,`, `}`, }, "") @@ -184,7 +217,7 @@ func (m *CheckResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -212,7 +245,7 @@ func (m *CheckResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -221,6 +254,9 @@ func (m *CheckResult) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCheck } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCheck + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -242,7 +278,7 @@ func (m *CheckResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -251,10 +287,13 @@ func (m *CheckResult) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCheck } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCheck + } if postIndex > l { return io.ErrUnexpectedEOF } - if err := types.StdDurationUnmarshal(&m.ValidDuration, dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_gogo_protobuf_types.StdDurationUnmarshal(&m.ValidDuration, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -272,7 +311,7 @@ func (m *CheckResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ValidUseCount |= (int32(b) & 0x7F) << shift + m.ValidUseCount |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -286,6 +325,9 @@ func (m *CheckResult) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthCheck } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthCheck + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -352,10 +394,13 @@ func skipCheck(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthCheck } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthCheck + } return iNdEx, nil case 3: for { @@ -384,6 +429,9 @@ func skipCheck(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthCheck + } } return iNdEx, nil case 4: @@ -402,29 +450,3 @@ var ( ErrInvalidLengthCheck = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowCheck = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("mixer/adapter/model/v1beta1/check.proto", fileDescriptorCheck) } - -var fileDescriptorCheck = []byte{ - // 317 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x91, 0x31, 0x4e, 0xf3, 0x30, - 0x18, 0x86, 0xed, 0xff, 0x87, 0x0a, 0xa5, 0x02, 0xa4, 0x08, 0x89, 0xd2, 0xe1, 0x6b, 0x61, 0x80, - 0x4e, 0x36, 0x85, 0x1b, 0xb4, 0x4c, 0x8c, 0x45, 0x2c, 0x5d, 0x2a, 0x37, 0x31, 0xc1, 0x22, 0xad, - 0xa3, 0xc4, 0xae, 0x18, 0x39, 0x02, 0x23, 0x47, 0x60, 0xe7, 0x12, 0x19, 0x3b, 0x32, 0x01, 0x31, - 0x0b, 0x63, 0x8f, 0x80, 0x62, 0x3b, 0x2b, 0x9b, 0xed, 0xe7, 0x79, 0x3f, 0xbf, 0xb2, 0x83, 0xb3, - 0x85, 0x78, 0xe4, 0x39, 0x65, 0x31, 0xcb, 0x14, 0xcf, 0xe9, 0x42, 0xc6, 0x3c, 0xa5, 0xab, 0xe1, - 0x9c, 0x2b, 0x36, 0xa4, 0xd1, 0x3d, 0x8f, 0x1e, 0x48, 0x96, 0x4b, 0x25, 0xc3, 0x63, 0x51, 0x28, - 0x21, 0x89, 0xd5, 0x89, 0xd7, 0x89, 0xd5, 0x89, 0xd7, 0xbb, 0x07, 0x89, 0x4c, 0xa4, 0xb5, 0x69, - 0xbd, 0x72, 0xc1, 0x2e, 0x24, 0x52, 0x26, 0x29, 0xa7, 0x76, 0x37, 0xd7, 0x77, 0x34, 0xd6, 0x39, - 0x53, 0x42, 0x2e, 0x3d, 0x3f, 0xf4, 0x3c, 0xcf, 0x22, 0x5a, 0x28, 0xa6, 0x74, 0xe1, 0xc0, 0xc9, - 0x1b, 0x0e, 0xda, 0xe3, 0xba, 0xc1, 0x84, 0x17, 0x3a, 0x55, 0xe1, 0x79, 0xd0, 0x72, 0xbc, 0x83, - 0xfb, 0x78, 0xd0, 0xbe, 0x08, 0x89, 0x4b, 0x92, 0x3c, 0x8b, 0xc8, 0x8d, 0x25, 0xa3, 0xad, 0xf2, - 0xa3, 0x87, 0x26, 0xde, 0x0b, 0xaf, 0x83, 0xbd, 0x15, 0x4b, 0x45, 0x3c, 0x6b, 0xae, 0xec, 0xfc, - 0xb3, 0xc9, 0xa3, 0x26, 0xd9, 0x74, 0x22, 0x57, 0x5e, 0x18, 0xed, 0xd4, 0x03, 0x5e, 0x3e, 0x7b, - 0x78, 0xb2, 0x6b, 0xa3, 0x0d, 0x08, 0x4f, 0x83, 0x7d, 0x37, 0x4b, 0x17, 0x7c, 0x16, 0x49, 0xbd, - 0x54, 0x9d, 0xff, 0x7d, 0x3c, 0xd8, 0xf6, 0xde, 0x6d, 0xc1, 0xc7, 0xf5, 0xe1, 0x68, 0x5a, 0x56, - 0x80, 0xd6, 0x15, 0xa0, 0xf7, 0x0a, 0xd0, 0xa6, 0x02, 0xf4, 0x64, 0x00, 0xbf, 0x1a, 0x40, 0xa5, - 0x01, 0xbc, 0x36, 0x80, 0xbf, 0x0c, 0xe0, 0x1f, 0x03, 0x68, 0x63, 0x00, 0x3f, 0x7f, 0x03, 0x9a, - 0x0e, 0xdc, 0xcb, 0x0a, 0x49, 0x59, 0x26, 0xe8, 0x1f, 0xff, 0x31, 0x6f, 0xd9, 0xbe, 0x97, 0xbf, - 0x01, 0x00, 0x00, 0xff, 0xff, 0x0a, 0x50, 0x63, 0xd3, 0xb5, 0x01, 0x00, 0x00, -} diff --git a/mixer/adapter/model/v1beta1/extensions.pb.go b/mixer/adapter/model/v1beta1/extensions.pb.go index 1d510977c52..074e787c05e 100644 --- a/mixer/adapter/model/v1beta1/extensions.pb.go +++ b/mixer/adapter/model/v1beta1/extensions.pb.go @@ -3,18 +3,25 @@ package v1beta1 -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf "github.com/gogo/protobuf/protoc-gen-gogo/descriptor" - -import strconv "strconv" +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + descriptor "github.com/gogo/protobuf/protoc-gen-gogo/descriptor" + math "math" + strconv "strconv" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + // The available varieties of templates, controlling the semantics of what an adapter does with each instance. type TemplateVariety int32 @@ -43,6 +50,7 @@ var TemplateVariety_name = map[int32]string{ 3: "TEMPLATE_VARIETY_ATTRIBUTE_GENERATOR", 4: "TEMPLATE_VARIETY_CHECK_WITH_OUTPUT", } + var TemplateVariety_value = map[string]int32{ "TEMPLATE_VARIETY_CHECK": 0, "TEMPLATE_VARIETY_REPORT": 1, @@ -51,23 +59,25 @@ var TemplateVariety_value = map[string]int32{ "TEMPLATE_VARIETY_CHECK_WITH_OUTPUT": 4, } -func (TemplateVariety) EnumDescriptor() ([]byte, []int) { return fileDescriptorExtensions, []int{0} } +func (TemplateVariety) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_3163b5e8dc3ddc37, []int{0} +} var E_TemplateVariety = &proto.ExtensionDesc{ - ExtendedType: (*google_protobuf.FileOptions)(nil), + ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*TemplateVariety)(nil), Field: 72295727, Name: "istio.mixer.adapter.model.v1beta1.template_variety", - Tag: "varint,72295727,opt,name=template_variety,json=templateVariety,enum=istio.mixer.adapter.model.v1beta1.TemplateVariety", + Tag: "varint,72295727,opt,name=template_variety,enum=istio.mixer.adapter.model.v1beta1.TemplateVariety", Filename: "mixer/adapter/model/v1beta1/extensions.proto", } var E_TemplateName = &proto.ExtensionDesc{ - ExtendedType: (*google_protobuf.FileOptions)(nil), + ExtendedType: (*descriptor.FileOptions)(nil), ExtensionType: (*string)(nil), Field: 72295888, Name: "istio.mixer.adapter.model.v1beta1.template_name", - Tag: "bytes,72295888,opt,name=template_name,json=templateName", + Tag: "bytes,72295888,opt,name=template_name", Filename: "mixer/adapter/model/v1beta1/extensions.proto", } @@ -76,6 +86,40 @@ func init() { proto.RegisterExtension(E_TemplateVariety) proto.RegisterExtension(E_TemplateName) } + +func init() { + proto.RegisterFile("mixer/adapter/model/v1beta1/extensions.proto", fileDescriptor_3163b5e8dc3ddc37) +} + +var fileDescriptor_3163b5e8dc3ddc37 = []byte{ + // 389 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0x41, 0xcb, 0xd3, 0x30, + 0x18, 0xc7, 0x1b, 0x15, 0xc1, 0xa0, 0xae, 0xf4, 0xa0, 0x32, 0x25, 0xcc, 0x21, 0x32, 0x44, 0x12, + 0x36, 0x6f, 0xbb, 0x75, 0x33, 0xba, 0xa1, 0xae, 0x33, 0xa4, 0x13, 0x3d, 0x58, 0x32, 0x17, 0x47, + 0xa0, 0x5d, 0x4a, 0x1b, 0xc7, 0xbc, 0x88, 0x1f, 0xc1, 0x8f, 0xe1, 0xcd, 0xab, 0x07, 0x3f, 0x80, + 0xe8, 0xa5, 0xc7, 0x1d, 0x5d, 0x77, 0xf1, 0xb8, 0x8f, 0x20, 0x76, 0xdd, 0x0b, 0xef, 0xbb, 0xf1, + 0xee, 0x9a, 0x87, 0x5f, 0xfe, 0xbf, 0xe7, 0xcf, 0x03, 0x1f, 0x46, 0x6a, 0x21, 0x13, 0x22, 0x26, + 0x22, 0x36, 0x32, 0x21, 0x91, 0x9e, 0xc8, 0x90, 0xcc, 0x9b, 0x63, 0x69, 0x44, 0x93, 0xc8, 0x85, + 0x91, 0xb3, 0x54, 0xe9, 0x59, 0x8a, 0xe3, 0x44, 0x1b, 0xed, 0xdc, 0x55, 0xa9, 0x51, 0x1a, 0x17, + 0x0c, 0x2e, 0x19, 0x5c, 0x30, 0xb8, 0x64, 0xaa, 0xb5, 0xa9, 0xd6, 0xd3, 0x50, 0x92, 0x02, 0x18, + 0x7f, 0x78, 0x4f, 0x26, 0x32, 0x7d, 0x97, 0xa8, 0xd8, 0xe8, 0x64, 0xfb, 0xc9, 0x83, 0xef, 0x00, + 0x56, 0xb8, 0x8c, 0xe2, 0x50, 0x18, 0x39, 0x12, 0x89, 0x92, 0xe6, 0xa3, 0x53, 0x85, 0x37, 0x38, + 0x7d, 0x31, 0x7c, 0xee, 0x72, 0x1a, 0x8c, 0x5c, 0xd6, 0xa7, 0xfc, 0x75, 0xd0, 0xed, 0xd1, 0xee, + 0x33, 0xdb, 0x72, 0x6e, 0xc3, 0x9b, 0x7b, 0x33, 0x46, 0x87, 0x1e, 0xe3, 0x36, 0x38, 0x08, 0xbe, + 0xf4, 0x3d, 0xee, 0xda, 0x17, 0x9c, 0x06, 0xbc, 0xb7, 0x37, 0x73, 0x39, 0x67, 0xfd, 0x8e, 0xcf, + 0x69, 0xf0, 0x94, 0x0e, 0x28, 0x73, 0xb9, 0xc7, 0xec, 0x8b, 0xce, 0x7d, 0x58, 0x3f, 0x1c, 0x1f, + 0xbc, 0xea, 0xf3, 0x5e, 0xe0, 0xf9, 0x7c, 0xe8, 0x73, 0xfb, 0x52, 0xfb, 0x13, 0xb4, 0x4d, 0x69, + 0x1e, 0xcc, 0x4b, 0xf5, 0x3b, 0x78, 0xbb, 0x31, 0xde, 0x6d, 0x8c, 0x9f, 0xa8, 0x50, 0x7a, 0xb1, + 0xf9, 0xdf, 0xdb, 0xad, 0x6f, 0xbf, 0x7e, 0xd4, 0x6b, 0xa0, 0x71, 0xbd, 0xd5, 0xc2, 0x47, 0xbb, + 0xc3, 0x67, 0x5a, 0x61, 0x15, 0x73, 0xfa, 0xa1, 0xfd, 0x18, 0x5e, 0x3b, 0xc9, 0x9f, 0x89, 0x48, + 0x1e, 0x09, 0xcf, 0x7e, 0x17, 0xe1, 0x57, 0xd8, 0xd5, 0x1d, 0x35, 0x10, 0x91, 0xec, 0xbc, 0xcd, + 0x56, 0xc8, 0x5a, 0xae, 0x90, 0xb5, 0x59, 0x21, 0xf0, 0x39, 0x47, 0xe0, 0x6b, 0x8e, 0xc0, 0xcf, + 0x1c, 0x81, 0x2c, 0x47, 0xe0, 0x4f, 0x8e, 0xc0, 0xdf, 0x1c, 0x59, 0x9b, 0x1c, 0x81, 0x2f, 0x6b, + 0x64, 0x65, 0x6b, 0x64, 0x2d, 0xd7, 0xc8, 0x7a, 0xd3, 0xd8, 0xfa, 0x2b, 0x4d, 0x44, 0xac, 0xc8, + 0x39, 0x67, 0x33, 0xbe, 0x5c, 0xc8, 0x3c, 0xfa, 0x17, 0x00, 0x00, 0xff, 0xff, 0x4d, 0x15, 0x3b, + 0xb8, 0x5c, 0x02, 0x00, 0x00, +} + func (x TemplateVariety) String() string { s, ok := TemplateVariety_name[int32(x)] if ok { @@ -83,35 +127,3 @@ func (x TemplateVariety) String() string { } return strconv.Itoa(int(x)) } - -func init() { - proto.RegisterFile("mixer/adapter/model/v1beta1/extensions.proto", fileDescriptorExtensions) -} - -var fileDescriptorExtensions = []byte{ - // 382 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0xc9, 0xcd, 0xac, 0x48, - 0x2d, 0xd2, 0x4f, 0x4c, 0x49, 0x2c, 0x28, 0x49, 0x2d, 0xd2, 0xcf, 0xcd, 0x4f, 0x49, 0xcd, 0xd1, - 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xd4, 0x4f, 0xad, 0x28, 0x49, 0xcd, 0x2b, 0xce, 0xcc, - 0xcf, 0x2b, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x52, 0xcc, 0x2c, 0x2e, 0xc9, 0xcc, 0xd7, - 0x03, 0xeb, 0xd1, 0x83, 0xea, 0xd1, 0x03, 0xeb, 0xd1, 0x83, 0xea, 0x91, 0x52, 0x48, 0xcf, 0xcf, - 0x4f, 0xcf, 0x49, 0xd5, 0x07, 0x6b, 0x48, 0x2a, 0x4d, 0xd3, 0x4f, 0x49, 0x2d, 0x4e, 0x2e, 0xca, - 0x2c, 0x28, 0xc9, 0x2f, 0x82, 0x18, 0xa2, 0xb5, 0x83, 0x91, 0x8b, 0x3f, 0x24, 0x35, 0xb7, 0x20, - 0x27, 0xb1, 0x24, 0x35, 0x2c, 0xb1, 0x28, 0x33, 0xb5, 0xa4, 0x52, 0x48, 0x8a, 0x4b, 0x2c, 0xc4, - 0xd5, 0x37, 0xc0, 0xc7, 0x31, 0xc4, 0x35, 0x3e, 0xcc, 0x31, 0xc8, 0xd3, 0x35, 0x24, 0x32, 0xde, - 0xd9, 0xc3, 0xd5, 0xd9, 0x5b, 0x80, 0x41, 0x48, 0x9a, 0x4b, 0x1c, 0x43, 0x2e, 0xc8, 0x35, 0xc0, - 0x3f, 0x28, 0x44, 0x80, 0x11, 0xab, 0xc6, 0xc0, 0x50, 0xff, 0x10, 0x47, 0x01, 0x26, 0x21, 0x0d, - 0x2e, 0x15, 0x0c, 0x39, 0xc7, 0x90, 0x90, 0x20, 0x4f, 0xa7, 0xd0, 0x10, 0xd7, 0x78, 0x77, 0x57, - 0x3f, 0xd7, 0x20, 0xc7, 0x10, 0xff, 0x20, 0x01, 0x66, 0x21, 0x35, 0x2e, 0x25, 0xec, 0xd6, 0xc7, - 0x87, 0x7b, 0x86, 0x78, 0xc4, 0xfb, 0x87, 0x86, 0x04, 0x84, 0x86, 0x08, 0xb0, 0x58, 0xd5, 0x71, - 0x09, 0x94, 0x40, 0x5d, 0x1e, 0x5f, 0x06, 0x75, 0xba, 0x8c, 0x1e, 0xc4, 0xc7, 0x7a, 0x30, 0x1f, - 0xeb, 0xb9, 0x65, 0xe6, 0xa4, 0xfa, 0x17, 0x94, 0x80, 0xc2, 0x4d, 0x62, 0xfd, 0xa9, 0x3d, 0x4a, - 0x0a, 0x8c, 0x1a, 0x7c, 0x46, 0x46, 0x7a, 0x04, 0xc3, 0x4e, 0x0f, 0x2d, 0x54, 0x82, 0xf8, 0x4b, - 0x50, 0x05, 0xac, 0x5c, 0xb8, 0x78, 0xe1, 0xf6, 0xe7, 0x25, 0xe6, 0xa6, 0x12, 0xb0, 0xfc, 0xc2, - 0x69, 0xb0, 0xe5, 0x9c, 0x41, 0x3c, 0x30, 0x5d, 0x7e, 0x89, 0xb9, 0xa9, 0x4e, 0x61, 0x17, 0x1e, - 0xca, 0x31, 0xdc, 0x78, 0x28, 0xc7, 0xf0, 0xe1, 0xa1, 0x1c, 0x63, 0xc3, 0x23, 0x39, 0xc6, 0x15, - 0x8f, 0xe4, 0x18, 0x4f, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, - 0x17, 0x8f, 0xe4, 0x18, 0x3e, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0x21, 0x4a, 0x03, 0xe2, - 0xee, 0xcc, 0x7c, 0xfd, 0xc4, 0x82, 0x4c, 0x7d, 0x3c, 0xc9, 0x25, 0x89, 0x0d, 0xec, 0x08, 0x63, - 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfd, 0x93, 0x1c, 0x86, 0x54, 0x02, 0x00, 0x00, -} diff --git a/mixer/adapter/model/v1beta1/info.pb.go b/mixer/adapter/model/v1beta1/info.pb.go index 86041840e6b..230fdaf47ba 100644 --- a/mixer/adapter/model/v1beta1/info.pb.go +++ b/mixer/adapter/model/v1beta1/info.pb.go @@ -3,20 +3,26 @@ package v1beta1 -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" - -import strings "strings" -import reflect "reflect" - -import io "io" +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + reflect "reflect" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + // Info describes an adapter or a backend that wants to provide telemetry and policy functionality to Mixer as an // out of process adapter. type Info struct { @@ -30,7 +36,7 @@ type Info struct { // User-friendly description of the adapter. Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` // Names of the templates the adapter supports. - Templates []string `protobuf:"bytes,3,rep,name=templates" json:"templates,omitempty"` + Templates []string `protobuf:"bytes,3,rep,name=templates,proto3" json:"templates,omitempty"` // Base64 encoded proto descriptor of the adapter configuration. Config string `protobuf:"bytes,4,opt,name=config,proto3" json:"config,omitempty"` // True if backend has implemented the @@ -49,9 +55,37 @@ type Info struct { SessionBased bool `protobuf:"varint,5,opt,name=session_based,json=sessionBased,proto3" json:"session_based,omitempty"` } -func (m *Info) Reset() { *m = Info{} } -func (*Info) ProtoMessage() {} -func (*Info) Descriptor() ([]byte, []int) { return fileDescriptorInfo, []int{0} } +func (m *Info) Reset() { *m = Info{} } +func (*Info) ProtoMessage() {} +func (*Info) Descriptor() ([]byte, []int) { + return fileDescriptor_62b7a6e7e280c38a, []int{0} +} +func (m *Info) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Info) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Info.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Info) XXX_Merge(src proto.Message) { + xxx_messageInfo_Info.Merge(m, src) +} +func (m *Info) XXX_Size() int { + return m.Size() +} +func (m *Info) XXX_DiscardUnknown() { + xxx_messageInfo_Info.DiscardUnknown(m) +} + +var xxx_messageInfo_Info proto.InternalMessageInfo func (m *Info) GetName() string { if m != nil { @@ -91,6 +125,32 @@ func (m *Info) GetSessionBased() bool { func init() { proto.RegisterType((*Info)(nil), "istio.mixer.adapter.model.v1beta1.Info") } + +func init() { + proto.RegisterFile("mixer/adapter/model/v1beta1/info.proto", fileDescriptor_62b7a6e7e280c38a) +} + +var fileDescriptor_62b7a6e7e280c38a = []byte{ + // 267 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x90, 0x31, 0x4e, 0xec, 0x30, + 0x10, 0x86, 0x3d, 0x6f, 0xf3, 0x56, 0xc4, 0x40, 0xe3, 0x02, 0xa5, 0x40, 0xa3, 0x00, 0x12, 0x4a, + 0x15, 0x6b, 0xc5, 0x0d, 0xb6, 0xa3, 0x4d, 0x49, 0x01, 0x72, 0x36, 0x0e, 0xb2, 0xb4, 0xb1, 0xad, + 0xd8, 0x42, 0x94, 0x1c, 0x81, 0x8e, 0x2b, 0x70, 0x14, 0xca, 0x94, 0x5b, 0x12, 0xa7, 0xa1, 0xdc, + 0x23, 0x20, 0x4c, 0x24, 0xa8, 0xe8, 0x66, 0xbe, 0xf9, 0xa6, 0xf8, 0x7f, 0x7a, 0xd9, 0xa9, 0x47, + 0xd9, 0x73, 0xd1, 0x08, 0xeb, 0x65, 0xcf, 0x3b, 0xd3, 0xc8, 0x2d, 0x7f, 0x58, 0xd5, 0xd2, 0x8b, + 0x15, 0x57, 0xba, 0x35, 0xa5, 0xed, 0x8d, 0x37, 0xec, 0x4c, 0x39, 0xaf, 0x4c, 0x19, 0xed, 0x72, + 0xb6, 0xcb, 0x68, 0x97, 0xb3, 0x7d, 0xfe, 0x02, 0x34, 0xb9, 0xd6, 0xad, 0x61, 0x8c, 0x26, 0x5a, + 0x74, 0x32, 0x83, 0x1c, 0x8a, 0xb4, 0x8a, 0x33, 0xcb, 0xe9, 0x61, 0x23, 0xdd, 0xa6, 0x57, 0xd6, + 0x2b, 0xa3, 0xb3, 0x7f, 0xf1, 0xf4, 0x1b, 0xb1, 0x53, 0x9a, 0x7a, 0xd9, 0xd9, 0xad, 0xf0, 0xd2, + 0x65, 0x8b, 0x7c, 0x51, 0xa4, 0xd5, 0x0f, 0x60, 0x27, 0x74, 0xb9, 0x31, 0xba, 0x55, 0xf7, 0x59, + 0x12, 0x5f, 0xe7, 0x8d, 0x5d, 0xd0, 0x63, 0x27, 0x9d, 0x53, 0x46, 0xdf, 0xd5, 0xc2, 0xc9, 0x26, + 0xfb, 0x9f, 0x43, 0x71, 0x50, 0x1d, 0xcd, 0x70, 0xfd, 0xc5, 0xd6, 0xb7, 0xc3, 0x88, 0x64, 0x37, + 0x22, 0xd9, 0x8f, 0x08, 0x4f, 0x01, 0xe1, 0x35, 0x20, 0xbc, 0x05, 0x84, 0x21, 0x20, 0xbc, 0x07, + 0x84, 0x8f, 0x80, 0x64, 0x1f, 0x10, 0x9e, 0x27, 0x24, 0xc3, 0x84, 0x64, 0x37, 0x21, 0xb9, 0x29, + 0xbe, 0x23, 0x2b, 0xc3, 0x85, 0x55, 0xfc, 0x8f, 0x9e, 0xea, 0x65, 0xec, 0xe8, 0xea, 0x33, 0x00, + 0x00, 0xff, 0xff, 0xf6, 0x62, 0xa4, 0x9d, 0x4d, 0x01, 0x00, 0x00, +} + func (this *Info) Equal(that interface{}) bool { if that == nil { return this == nil @@ -225,6 +285,9 @@ func encodeVarintInfo(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *Info) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Name) @@ -301,7 +364,7 @@ func (m *Info) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -329,7 +392,7 @@ func (m *Info) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -339,6 +402,9 @@ func (m *Info) Unmarshal(dAtA []byte) error { return ErrInvalidLengthInfo } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthInfo + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -358,7 +424,7 @@ func (m *Info) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -368,6 +434,9 @@ func (m *Info) Unmarshal(dAtA []byte) error { return ErrInvalidLengthInfo } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthInfo + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -387,7 +456,7 @@ func (m *Info) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -397,6 +466,9 @@ func (m *Info) Unmarshal(dAtA []byte) error { return ErrInvalidLengthInfo } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthInfo + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -416,7 +488,7 @@ func (m *Info) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -426,6 +498,9 @@ func (m *Info) Unmarshal(dAtA []byte) error { return ErrInvalidLengthInfo } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthInfo + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -445,7 +520,7 @@ func (m *Info) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -460,6 +535,9 @@ func (m *Info) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthInfo } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthInfo + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -526,10 +604,13 @@ func skipInfo(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthInfo } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthInfo + } return iNdEx, nil case 3: for { @@ -558,6 +639,9 @@ func skipInfo(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthInfo + } } return iNdEx, nil case 4: @@ -576,26 +660,3 @@ var ( ErrInvalidLengthInfo = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowInfo = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("mixer/adapter/model/v1beta1/info.proto", fileDescriptorInfo) } - -var fileDescriptorInfo = []byte{ - // 261 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x90, 0xb1, 0x4e, 0xc3, 0x30, - 0x10, 0x86, 0x73, 0x34, 0x54, 0xc4, 0xc0, 0xe2, 0x01, 0x65, 0x40, 0xa7, 0x00, 0x12, 0xca, 0x14, - 0xab, 0xe2, 0x0d, 0xba, 0xb1, 0x66, 0x60, 0x60, 0x41, 0x4e, 0xe3, 0x20, 0x4b, 0x8d, 0xcf, 0x8a, - 0x2d, 0xc4, 0xc8, 0x23, 0xb0, 0xf1, 0x0a, 0x3c, 0x0a, 0x63, 0x47, 0x46, 0x62, 0x16, 0xc6, 0x3e, - 0x02, 0xc2, 0x44, 0x82, 0xa9, 0xdb, 0xdd, 0x77, 0xdf, 0x0d, 0xff, 0xcf, 0x2e, 0x7b, 0xfd, 0xa8, - 0x06, 0x21, 0x5b, 0x69, 0xbd, 0x1a, 0x44, 0x4f, 0xad, 0x5a, 0x8b, 0x87, 0x45, 0xa3, 0xbc, 0x5c, - 0x08, 0x6d, 0x3a, 0xaa, 0xec, 0x40, 0x9e, 0xf8, 0x99, 0x76, 0x5e, 0x53, 0x15, 0xed, 0x6a, 0xb2, - 0xab, 0x68, 0x57, 0x93, 0x7d, 0xfe, 0x02, 0x2c, 0xbd, 0x36, 0x1d, 0x71, 0xce, 0x52, 0x23, 0x7b, - 0x95, 0x43, 0x01, 0x65, 0x56, 0xc7, 0x99, 0x17, 0xec, 0xb0, 0x55, 0x6e, 0x35, 0x68, 0xeb, 0x35, - 0x99, 0x7c, 0x2f, 0x9e, 0xfe, 0x23, 0x7e, 0xca, 0x32, 0xaf, 0x7a, 0xbb, 0x96, 0x5e, 0xb9, 0x7c, - 0x56, 0xcc, 0xca, 0xac, 0xfe, 0x03, 0xfc, 0x84, 0xcd, 0x57, 0x64, 0x3a, 0x7d, 0x9f, 0xa7, 0xf1, - 0x75, 0xda, 0xf8, 0x05, 0x3b, 0x76, 0xca, 0x39, 0x4d, 0xe6, 0xae, 0x91, 0x4e, 0xb5, 0xf9, 0x7e, - 0x01, 0xe5, 0x41, 0x7d, 0x34, 0xc1, 0xe5, 0x0f, 0x5b, 0xde, 0x6c, 0x46, 0x4c, 0xde, 0x47, 0x4c, - 0xb6, 0x23, 0xc2, 0x53, 0x40, 0x78, 0x0d, 0x08, 0x6f, 0x01, 0x61, 0x13, 0x10, 0x3e, 0x02, 0xc2, - 0x57, 0xc0, 0x64, 0x1b, 0x10, 0x9e, 0x3f, 0x31, 0xb9, 0x2d, 0x7f, 0xa3, 0x6a, 0x12, 0xd2, 0x6a, - 0xb1, 0xa3, 0x9f, 0x66, 0x1e, 0xbb, 0xb9, 0xfa, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xd2, 0xcb, 0x67, - 0x0a, 0x45, 0x01, 0x00, 0x00, -} diff --git a/mixer/adapter/model/v1beta1/infrastructure_backend.pb.go b/mixer/adapter/model/v1beta1/infrastructure_backend.pb.go index 1e0dadb8372..0cfdf0b5788 100644 --- a/mixer/adapter/model/v1beta1/infrastructure_backend.pb.go +++ b/mixer/adapter/model/v1beta1/infrastructure_backend.pb.go @@ -1,50 +1,84 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: mixer/adapter/model/v1beta1/infrastructure_backend.proto -package v1beta1 - -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf2 "github.com/gogo/protobuf/types" -import google_rpc "github.com/gogo/googleapis/google/rpc" +// This package defines the service and types used by adapter code to serve requests from Mixer. +// This package also defines the types that are used to create Mixer templates. -import strings "strings" -import reflect "reflect" -import sortkeys "github.com/gogo/protobuf/sortkeys" - -import context "golang.org/x/net/context" -import grpc "google.golang.org/grpc" +package v1beta1 -import io "io" +import ( + context "context" + fmt "fmt" + rpc "github.com/gogo/googleapis/google/rpc" + proto "github.com/gogo/protobuf/proto" + github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + types "github.com/gogo/protobuf/types" + grpc "google.golang.org/grpc" + io "io" + math "math" + reflect "reflect" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + // Request message for `CreateSession` method. type CreateSessionRequest struct { // Adapter specific configuration. - AdapterConfig *google_protobuf2.Any `protobuf:"bytes,1,opt,name=adapter_config,json=adapterConfig" json:"adapter_config,omitempty"` + AdapterConfig *types.Any `protobuf:"bytes,1,opt,name=adapter_config,json=adapterConfig,proto3" json:"adapter_config,omitempty"` // Map of instance names to their template-specific inferred type. - InferredTypes map[string]*google_protobuf2.Any `protobuf:"bytes,2,rep,name=inferred_types,json=inferredTypes" json:"inferred_types,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"` + InferredTypes map[string]*types.Any `protobuf:"bytes,2,rep,name=inferred_types,json=inferredTypes,proto3" json:"inferred_types,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (m *CreateSessionRequest) Reset() { *m = CreateSessionRequest{} } func (*CreateSessionRequest) ProtoMessage() {} func (*CreateSessionRequest) Descriptor() ([]byte, []int) { - return fileDescriptorInfrastructureBackend, []int{0} + return fileDescriptor_b62a0b3a6ebb4b55, []int{0} +} +func (m *CreateSessionRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) } +func (m *CreateSessionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CreateSessionRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CreateSessionRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateSessionRequest.Merge(m, src) +} +func (m *CreateSessionRequest) XXX_Size() int { + return m.Size() +} +func (m *CreateSessionRequest) XXX_DiscardUnknown() { + xxx_messageInfo_CreateSessionRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateSessionRequest proto.InternalMessageInfo -func (m *CreateSessionRequest) GetAdapterConfig() *google_protobuf2.Any { +func (m *CreateSessionRequest) GetAdapterConfig() *types.Any { if m != nil { return m.AdapterConfig } return nil } -func (m *CreateSessionRequest) GetInferredTypes() map[string]*google_protobuf2.Any { +func (m *CreateSessionRequest) GetInferredTypes() map[string]*types.Any { if m != nil { return m.InferredTypes } @@ -56,15 +90,41 @@ type CreateSessionResponse struct { // Id of the created session. SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` // The success/failure status of create session call. - Status *google_rpc.Status `protobuf:"bytes,2,opt,name=status" json:"status,omitempty"` + Status *rpc.Status `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` } func (m *CreateSessionResponse) Reset() { *m = CreateSessionResponse{} } func (*CreateSessionResponse) ProtoMessage() {} func (*CreateSessionResponse) Descriptor() ([]byte, []int) { - return fileDescriptorInfrastructureBackend, []int{1} + return fileDescriptor_b62a0b3a6ebb4b55, []int{1} +} +func (m *CreateSessionResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CreateSessionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CreateSessionResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CreateSessionResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateSessionResponse.Merge(m, src) +} +func (m *CreateSessionResponse) XXX_Size() int { + return m.Size() +} +func (m *CreateSessionResponse) XXX_DiscardUnknown() { + xxx_messageInfo_CreateSessionResponse.DiscardUnknown(m) } +var xxx_messageInfo_CreateSessionResponse proto.InternalMessageInfo + func (m *CreateSessionResponse) GetSessionId() string { if m != nil { return m.SessionId @@ -72,7 +132,7 @@ func (m *CreateSessionResponse) GetSessionId() string { return "" } -func (m *CreateSessionResponse) GetStatus() *google_rpc.Status { +func (m *CreateSessionResponse) GetStatus() *rpc.Status { if m != nil { return m.Status } @@ -82,25 +142,51 @@ func (m *CreateSessionResponse) GetStatus() *google_rpc.Status { // Request message for `Validate` method. type ValidateRequest struct { // Adapter specific configuration. - AdapterConfig *google_protobuf2.Any `protobuf:"bytes,1,opt,name=adapter_config,json=adapterConfig" json:"adapter_config,omitempty"` + AdapterConfig *types.Any `protobuf:"bytes,1,opt,name=adapter_config,json=adapterConfig,proto3" json:"adapter_config,omitempty"` // Map of instance names to their template-specific inferred type. - InferredTypes map[string]*google_protobuf2.Any `protobuf:"bytes,2,rep,name=inferred_types,json=inferredTypes" json:"inferred_types,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"` + InferredTypes map[string]*types.Any `protobuf:"bytes,2,rep,name=inferred_types,json=inferredTypes,proto3" json:"inferred_types,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (m *ValidateRequest) Reset() { *m = ValidateRequest{} } func (*ValidateRequest) ProtoMessage() {} func (*ValidateRequest) Descriptor() ([]byte, []int) { - return fileDescriptorInfrastructureBackend, []int{2} + return fileDescriptor_b62a0b3a6ebb4b55, []int{2} +} +func (m *ValidateRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ValidateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ValidateRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ValidateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ValidateRequest.Merge(m, src) +} +func (m *ValidateRequest) XXX_Size() int { + return m.Size() +} +func (m *ValidateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ValidateRequest.DiscardUnknown(m) } -func (m *ValidateRequest) GetAdapterConfig() *google_protobuf2.Any { +var xxx_messageInfo_ValidateRequest proto.InternalMessageInfo + +func (m *ValidateRequest) GetAdapterConfig() *types.Any { if m != nil { return m.AdapterConfig } return nil } -func (m *ValidateRequest) GetInferredTypes() map[string]*google_protobuf2.Any { +func (m *ValidateRequest) GetInferredTypes() map[string]*types.Any { if m != nil { return m.InferredTypes } @@ -110,16 +196,42 @@ func (m *ValidateRequest) GetInferredTypes() map[string]*google_protobuf2.Any { // Response message for `Validate` method. type ValidateResponse struct { // The success/failure status of validation call. - Status *google_rpc.Status `protobuf:"bytes,1,opt,name=status" json:"status,omitempty"` + Status *rpc.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` } func (m *ValidateResponse) Reset() { *m = ValidateResponse{} } func (*ValidateResponse) ProtoMessage() {} func (*ValidateResponse) Descriptor() ([]byte, []int) { - return fileDescriptorInfrastructureBackend, []int{3} + return fileDescriptor_b62a0b3a6ebb4b55, []int{3} +} +func (m *ValidateResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ValidateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ValidateResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } } +func (m *ValidateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ValidateResponse.Merge(m, src) +} +func (m *ValidateResponse) XXX_Size() int { + return m.Size() +} +func (m *ValidateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ValidateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ValidateResponse proto.InternalMessageInfo -func (m *ValidateResponse) GetStatus() *google_rpc.Status { +func (m *ValidateResponse) GetStatus() *rpc.Status { if m != nil { return m.Status } @@ -135,9 +247,35 @@ type CloseSessionRequest struct { func (m *CloseSessionRequest) Reset() { *m = CloseSessionRequest{} } func (*CloseSessionRequest) ProtoMessage() {} func (*CloseSessionRequest) Descriptor() ([]byte, []int) { - return fileDescriptorInfrastructureBackend, []int{4} + return fileDescriptor_b62a0b3a6ebb4b55, []int{4} +} +func (m *CloseSessionRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CloseSessionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CloseSessionRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CloseSessionRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CloseSessionRequest.Merge(m, src) +} +func (m *CloseSessionRequest) XXX_Size() int { + return m.Size() +} +func (m *CloseSessionRequest) XXX_DiscardUnknown() { + xxx_messageInfo_CloseSessionRequest.DiscardUnknown(m) } +var xxx_messageInfo_CloseSessionRequest proto.InternalMessageInfo + func (m *CloseSessionRequest) GetSessionId() string { if m != nil { return m.SessionId @@ -148,16 +286,42 @@ func (m *CloseSessionRequest) GetSessionId() string { // Response message for `CloseSession` method. type CloseSessionResponse struct { // The success/failure status of close session call. - Status *google_rpc.Status `protobuf:"bytes,1,opt,name=status" json:"status,omitempty"` + Status *rpc.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` } func (m *CloseSessionResponse) Reset() { *m = CloseSessionResponse{} } func (*CloseSessionResponse) ProtoMessage() {} func (*CloseSessionResponse) Descriptor() ([]byte, []int) { - return fileDescriptorInfrastructureBackend, []int{5} + return fileDescriptor_b62a0b3a6ebb4b55, []int{5} +} +func (m *CloseSessionResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) } +func (m *CloseSessionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CloseSessionResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CloseSessionResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CloseSessionResponse.Merge(m, src) +} +func (m *CloseSessionResponse) XXX_Size() int { + return m.Size() +} +func (m *CloseSessionResponse) XXX_DiscardUnknown() { + xxx_messageInfo_CloseSessionResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_CloseSessionResponse proto.InternalMessageInfo -func (m *CloseSessionResponse) GetStatus() *google_rpc.Status { +func (m *CloseSessionResponse) GetStatus() *rpc.Status { if m != nil { return m.Status } @@ -166,12 +330,57 @@ func (m *CloseSessionResponse) GetStatus() *google_rpc.Status { func init() { proto.RegisterType((*CreateSessionRequest)(nil), "istio.mixer.adapter.model.v1beta1.CreateSessionRequest") + proto.RegisterMapType((map[string]*types.Any)(nil), "istio.mixer.adapter.model.v1beta1.CreateSessionRequest.InferredTypesEntry") proto.RegisterType((*CreateSessionResponse)(nil), "istio.mixer.adapter.model.v1beta1.CreateSessionResponse") proto.RegisterType((*ValidateRequest)(nil), "istio.mixer.adapter.model.v1beta1.ValidateRequest") + proto.RegisterMapType((map[string]*types.Any)(nil), "istio.mixer.adapter.model.v1beta1.ValidateRequest.InferredTypesEntry") proto.RegisterType((*ValidateResponse)(nil), "istio.mixer.adapter.model.v1beta1.ValidateResponse") proto.RegisterType((*CloseSessionRequest)(nil), "istio.mixer.adapter.model.v1beta1.CloseSessionRequest") proto.RegisterType((*CloseSessionResponse)(nil), "istio.mixer.adapter.model.v1beta1.CloseSessionResponse") } + +func init() { + proto.RegisterFile("mixer/adapter/model/v1beta1/infrastructure_backend.proto", fileDescriptor_b62a0b3a6ebb4b55) +} + +var fileDescriptor_b62a0b3a6ebb4b55 = []byte{ + // 530 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x54, 0x41, 0x6f, 0xd3, 0x4c, + 0x10, 0xf5, 0x26, 0xfa, 0xaa, 0xaf, 0x5b, 0x52, 0xaa, 0x25, 0x15, 0xc1, 0x12, 0xab, 0x92, 0x53, + 0xd4, 0xc3, 0x5a, 0x4d, 0x11, 0x8d, 0x40, 0x42, 0x22, 0x51, 0x0f, 0xe1, 0xe8, 0xa2, 0x1e, 0xb8, + 0x44, 0x6b, 0x7b, 0x13, 0xad, 0xea, 0x7a, 0xdd, 0xdd, 0x75, 0x85, 0x4f, 0x54, 0xfc, 0x02, 0x84, + 0x38, 0x73, 0xe6, 0xa7, 0x70, 0xcc, 0xb1, 0x47, 0xe2, 0x5c, 0x38, 0xf6, 0x27, 0xa0, 0xda, 0x1b, + 0xb5, 0x49, 0x21, 0xad, 0x11, 0x12, 0x37, 0x6b, 0x67, 0xde, 0xbc, 0x37, 0x6f, 0x66, 0x0c, 0x3b, + 0xc7, 0xfc, 0x1d, 0x93, 0x0e, 0x0d, 0x68, 0xac, 0x99, 0x74, 0x8e, 0x45, 0xc0, 0x42, 0xe7, 0x74, + 0xc7, 0x63, 0x9a, 0xee, 0x38, 0x3c, 0x1a, 0x4a, 0xaa, 0xb4, 0x4c, 0x7c, 0x9d, 0x48, 0x36, 0xf0, + 0xa8, 0x7f, 0xc4, 0xa2, 0x80, 0xc4, 0x52, 0x68, 0x81, 0x9e, 0x70, 0xa5, 0xb9, 0x20, 0x39, 0x9e, + 0x18, 0x3c, 0xc9, 0xf1, 0xc4, 0xe0, 0xed, 0x47, 0x23, 0x21, 0x46, 0x21, 0x73, 0x72, 0x80, 0x97, + 0x0c, 0x1d, 0x1a, 0xa5, 0x05, 0xda, 0x7e, 0x68, 0x42, 0x32, 0xf6, 0x1d, 0xa5, 0xa9, 0x4e, 0x54, + 0x11, 0x68, 0x7e, 0xa9, 0xc0, 0x7a, 0x4f, 0x32, 0xaa, 0xd9, 0x01, 0x53, 0x8a, 0x8b, 0xc8, 0x65, + 0x27, 0x09, 0x53, 0x1a, 0xbd, 0x80, 0xeb, 0x86, 0x65, 0xe0, 0x8b, 0x68, 0xc8, 0x47, 0x0d, 0xb0, + 0x05, 0x5a, 0x6b, 0xed, 0x3a, 0x29, 0x4a, 0x91, 0x19, 0x0b, 0x79, 0x15, 0xa5, 0x6e, 0xcd, 0xe4, + 0xf6, 0xf2, 0x54, 0x74, 0x02, 0xd7, 0x79, 0x34, 0x64, 0x52, 0xb2, 0x60, 0xa0, 0xd3, 0x98, 0xa9, + 0x46, 0x65, 0xab, 0xda, 0x5a, 0x6b, 0xbf, 0x26, 0xb7, 0x76, 0x41, 0x7e, 0xa5, 0x86, 0xf4, 0x4d, + 0xb5, 0x37, 0x97, 0xc5, 0xf6, 0x23, 0x2d, 0x53, 0xb7, 0xc6, 0xaf, 0xbf, 0xd9, 0x87, 0x10, 0xdd, + 0x4c, 0x42, 0x1b, 0xb0, 0x7a, 0xc4, 0xd2, 0x5c, 0xfa, 0xaa, 0x7b, 0xf9, 0x89, 0xb6, 0xe1, 0x7f, + 0xa7, 0x34, 0x4c, 0x58, 0xa3, 0xb2, 0xa4, 0x9d, 0x22, 0xe5, 0x79, 0xa5, 0x03, 0x9a, 0x1e, 0xdc, + 0x5c, 0x50, 0xa4, 0x62, 0x11, 0x29, 0x86, 0x1e, 0x43, 0xa8, 0x8a, 0xa7, 0x01, 0x0f, 0x0c, 0xc3, + 0xaa, 0x79, 0xe9, 0x07, 0x68, 0x1b, 0xae, 0x14, 0x46, 0x1b, 0x22, 0x34, 0x23, 0x92, 0xb1, 0x4f, + 0x0e, 0xf2, 0x88, 0x6b, 0x32, 0x9a, 0x9f, 0x2b, 0xf0, 0xfe, 0x21, 0x0d, 0x79, 0x40, 0x35, 0xfb, + 0x2b, 0xfe, 0x87, 0xbf, 0xf1, 0x7f, 0xff, 0x0e, 0xfe, 0x2f, 0x08, 0xf9, 0x87, 0xd6, 0xbf, 0x84, + 0x1b, 0x57, 0x62, 0x8c, 0xeb, 0x57, 0xb6, 0x82, 0x5b, 0x6d, 0x7d, 0x0a, 0x1f, 0xf4, 0x42, 0xa1, + 0x16, 0x37, 0x7b, 0xf9, 0xe0, 0x9a, 0x5d, 0x58, 0x9f, 0x47, 0x95, 0x67, 0x6e, 0x7f, 0xaa, 0xc2, + 0xcd, 0xfe, 0xdc, 0x35, 0x77, 0x8b, 0x63, 0x46, 0x0a, 0xfe, 0x3f, 0xeb, 0x09, 0xb5, 0xcb, 0x4f, + 0xc3, 0xde, 0x2d, 0x85, 0x31, 0xd2, 0x3f, 0x00, 0x58, 0x9b, 0x5b, 0x62, 0xb4, 0xf7, 0x87, 0x87, + 0x68, 0x77, 0xca, 0x03, 0x8d, 0x88, 0xf7, 0xf0, 0xde, 0x75, 0x5f, 0xd1, 0xb3, 0xbb, 0x54, 0xba, + 0x39, 0x3e, 0x7b, 0xaf, 0x34, 0xae, 0x10, 0xd0, 0xa5, 0xe3, 0x09, 0xb6, 0xce, 0x27, 0xd8, 0xba, + 0x98, 0x60, 0x70, 0x96, 0x61, 0xf0, 0x35, 0xc3, 0xe0, 0x5b, 0x86, 0xc1, 0x38, 0xc3, 0xe0, 0x7b, + 0x86, 0xc1, 0x8f, 0x0c, 0x5b, 0x17, 0x19, 0x06, 0x1f, 0xa7, 0xd8, 0x1a, 0x4f, 0xb1, 0x75, 0x3e, + 0xc5, 0xd6, 0xdb, 0x56, 0xc1, 0xc6, 0x85, 0x43, 0x63, 0xee, 0x2c, 0xf9, 0x7d, 0x9f, 0x01, 0xe0, + 0xad, 0xe4, 0xab, 0xbc, 0xfb, 0x33, 0x00, 0x00, 0xff, 0xff, 0x35, 0xb4, 0xbe, 0x68, 0xe7, 0x05, + 0x00, 0x00, +} + func (this *CreateSessionRequest) Equal(that interface{}) bool { if that == nil { return this == nil @@ -348,8 +557,8 @@ func (this *CreateSessionRequest) GoString() string { for k, _ := range this.InferredTypes { keysForInferredTypes = append(keysForInferredTypes, k) } - sortkeys.Strings(keysForInferredTypes) - mapStringForInferredTypes := "map[string]*google_protobuf2.Any{" + github_com_gogo_protobuf_sortkeys.Strings(keysForInferredTypes) + mapStringForInferredTypes := "map[string]*types.Any{" for _, k := range keysForInferredTypes { mapStringForInferredTypes += fmt.Sprintf("%#v: %#v,", k, this.InferredTypes[k]) } @@ -386,8 +595,8 @@ func (this *ValidateRequest) GoString() string { for k, _ := range this.InferredTypes { keysForInferredTypes = append(keysForInferredTypes, k) } - sortkeys.Strings(keysForInferredTypes) - mapStringForInferredTypes := "map[string]*google_protobuf2.Any{" + github_com_gogo_protobuf_sortkeys.Strings(keysForInferredTypes) + mapStringForInferredTypes := "map[string]*types.Any{" for _, k := range keysForInferredTypes { mapStringForInferredTypes += fmt.Sprintf("%#v: %#v,", k, this.InferredTypes[k]) } @@ -449,8 +658,9 @@ var _ grpc.ClientConn // is compatible with the grpc package it is being compiled against. const _ = grpc.SupportPackageIsVersion4 -// Client API for InfrastructureBackend service - +// InfrastructureBackendClient is the client API for InfrastructureBackend service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type InfrastructureBackendClient interface { // Validates the handler configuration along with the template-specific instances that would be routed to that // handler. The `CreateSession` for a specific handler configuration is invoked only if its associated `Validate` @@ -492,7 +702,7 @@ func NewInfrastructureBackendClient(cc *grpc.ClientConn) InfrastructureBackendCl func (c *infrastructureBackendClient) Validate(ctx context.Context, in *ValidateRequest, opts ...grpc.CallOption) (*ValidateResponse, error) { out := new(ValidateResponse) - err := grpc.Invoke(ctx, "/istio.mixer.adapter.model.v1beta1.InfrastructureBackend/Validate", in, out, c.cc, opts...) + err := c.cc.Invoke(ctx, "/istio.mixer.adapter.model.v1beta1.InfrastructureBackend/Validate", in, out, opts...) if err != nil { return nil, err } @@ -501,7 +711,7 @@ func (c *infrastructureBackendClient) Validate(ctx context.Context, in *Validate func (c *infrastructureBackendClient) CreateSession(ctx context.Context, in *CreateSessionRequest, opts ...grpc.CallOption) (*CreateSessionResponse, error) { out := new(CreateSessionResponse) - err := grpc.Invoke(ctx, "/istio.mixer.adapter.model.v1beta1.InfrastructureBackend/CreateSession", in, out, c.cc, opts...) + err := c.cc.Invoke(ctx, "/istio.mixer.adapter.model.v1beta1.InfrastructureBackend/CreateSession", in, out, opts...) if err != nil { return nil, err } @@ -510,15 +720,14 @@ func (c *infrastructureBackendClient) CreateSession(ctx context.Context, in *Cre func (c *infrastructureBackendClient) CloseSession(ctx context.Context, in *CloseSessionRequest, opts ...grpc.CallOption) (*CloseSessionResponse, error) { out := new(CloseSessionResponse) - err := grpc.Invoke(ctx, "/istio.mixer.adapter.model.v1beta1.InfrastructureBackend/CloseSession", in, out, c.cc, opts...) + err := c.cc.Invoke(ctx, "/istio.mixer.adapter.model.v1beta1.InfrastructureBackend/CloseSession", in, out, opts...) if err != nil { return nil, err } return out, nil } -// Server API for InfrastructureBackend service - +// InfrastructureBackendServer is the server API for InfrastructureBackend service. type InfrastructureBackendServer interface { // Validates the handler configuration along with the template-specific instances that would be routed to that // handler. The `CreateSession` for a specific handler configuration is invoked only if its associated `Validate` @@ -865,6 +1074,9 @@ func encodeVarintInfrastructureBackend(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *CreateSessionRequest) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.AdapterConfig != nil { @@ -888,6 +1100,9 @@ func (m *CreateSessionRequest) Size() (n int) { } func (m *CreateSessionResponse) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.SessionId) @@ -902,6 +1117,9 @@ func (m *CreateSessionResponse) Size() (n int) { } func (m *ValidateRequest) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.AdapterConfig != nil { @@ -925,6 +1143,9 @@ func (m *ValidateRequest) Size() (n int) { } func (m *ValidateResponse) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Status != nil { @@ -935,6 +1156,9 @@ func (m *ValidateResponse) Size() (n int) { } func (m *CloseSessionRequest) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.SessionId) @@ -945,6 +1169,9 @@ func (m *CloseSessionRequest) Size() (n int) { } func (m *CloseSessionResponse) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Status != nil { @@ -975,14 +1202,14 @@ func (this *CreateSessionRequest) String() string { for k, _ := range this.InferredTypes { keysForInferredTypes = append(keysForInferredTypes, k) } - sortkeys.Strings(keysForInferredTypes) - mapStringForInferredTypes := "map[string]*google_protobuf2.Any{" + github_com_gogo_protobuf_sortkeys.Strings(keysForInferredTypes) + mapStringForInferredTypes := "map[string]*types.Any{" for _, k := range keysForInferredTypes { mapStringForInferredTypes += fmt.Sprintf("%v: %v,", k, this.InferredTypes[k]) } mapStringForInferredTypes += "}" s := strings.Join([]string{`&CreateSessionRequest{`, - `AdapterConfig:` + strings.Replace(fmt.Sprintf("%v", this.AdapterConfig), "Any", "google_protobuf2.Any", 1) + `,`, + `AdapterConfig:` + strings.Replace(fmt.Sprintf("%v", this.AdapterConfig), "Any", "types.Any", 1) + `,`, `InferredTypes:` + mapStringForInferredTypes + `,`, `}`, }, "") @@ -994,7 +1221,7 @@ func (this *CreateSessionResponse) String() string { } s := strings.Join([]string{`&CreateSessionResponse{`, `SessionId:` + fmt.Sprintf("%v", this.SessionId) + `,`, - `Status:` + strings.Replace(fmt.Sprintf("%v", this.Status), "Status", "google_rpc.Status", 1) + `,`, + `Status:` + strings.Replace(fmt.Sprintf("%v", this.Status), "Status", "rpc.Status", 1) + `,`, `}`, }, "") return s @@ -1007,14 +1234,14 @@ func (this *ValidateRequest) String() string { for k, _ := range this.InferredTypes { keysForInferredTypes = append(keysForInferredTypes, k) } - sortkeys.Strings(keysForInferredTypes) - mapStringForInferredTypes := "map[string]*google_protobuf2.Any{" + github_com_gogo_protobuf_sortkeys.Strings(keysForInferredTypes) + mapStringForInferredTypes := "map[string]*types.Any{" for _, k := range keysForInferredTypes { mapStringForInferredTypes += fmt.Sprintf("%v: %v,", k, this.InferredTypes[k]) } mapStringForInferredTypes += "}" s := strings.Join([]string{`&ValidateRequest{`, - `AdapterConfig:` + strings.Replace(fmt.Sprintf("%v", this.AdapterConfig), "Any", "google_protobuf2.Any", 1) + `,`, + `AdapterConfig:` + strings.Replace(fmt.Sprintf("%v", this.AdapterConfig), "Any", "types.Any", 1) + `,`, `InferredTypes:` + mapStringForInferredTypes + `,`, `}`, }, "") @@ -1025,7 +1252,7 @@ func (this *ValidateResponse) String() string { return "nil" } s := strings.Join([]string{`&ValidateResponse{`, - `Status:` + strings.Replace(fmt.Sprintf("%v", this.Status), "Status", "google_rpc.Status", 1) + `,`, + `Status:` + strings.Replace(fmt.Sprintf("%v", this.Status), "Status", "rpc.Status", 1) + `,`, `}`, }, "") return s @@ -1045,7 +1272,7 @@ func (this *CloseSessionResponse) String() string { return "nil" } s := strings.Join([]string{`&CloseSessionResponse{`, - `Status:` + strings.Replace(fmt.Sprintf("%v", this.Status), "Status", "google_rpc.Status", 1) + `,`, + `Status:` + strings.Replace(fmt.Sprintf("%v", this.Status), "Status", "rpc.Status", 1) + `,`, `}`, }, "") return s @@ -1073,7 +1300,7 @@ func (m *CreateSessionRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1101,7 +1328,7 @@ func (m *CreateSessionRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1110,11 +1337,14 @@ func (m *CreateSessionRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthInfrastructureBackend } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthInfrastructureBackend + } if postIndex > l { return io.ErrUnexpectedEOF } if m.AdapterConfig == nil { - m.AdapterConfig = &google_protobuf2.Any{} + m.AdapterConfig = &types.Any{} } if err := m.AdapterConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1134,7 +1364,7 @@ func (m *CreateSessionRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1143,14 +1373,17 @@ func (m *CreateSessionRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthInfrastructureBackend } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthInfrastructureBackend + } if postIndex > l { return io.ErrUnexpectedEOF } if m.InferredTypes == nil { - m.InferredTypes = make(map[string]*google_protobuf2.Any) + m.InferredTypes = make(map[string]*types.Any) } var mapkey string - var mapvalue *google_protobuf2.Any + var mapvalue *types.Any for iNdEx < postIndex { entryPreIndex := iNdEx var wire uint64 @@ -1163,7 +1396,7 @@ func (m *CreateSessionRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1180,7 +1413,7 @@ func (m *CreateSessionRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1190,6 +1423,9 @@ func (m *CreateSessionRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthInfrastructureBackend } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthInfrastructureBackend + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -1206,7 +1442,7 @@ func (m *CreateSessionRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapmsglen |= (int(b) & 0x7F) << shift + mapmsglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1215,13 +1451,13 @@ func (m *CreateSessionRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthInfrastructureBackend } postmsgIndex := iNdEx + mapmsglen - if mapmsglen < 0 { + if postmsgIndex < 0 { return ErrInvalidLengthInfrastructureBackend } if postmsgIndex > l { return io.ErrUnexpectedEOF } - mapvalue = &google_protobuf2.Any{} + mapvalue = &types.Any{} if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { return err } @@ -1252,6 +1488,9 @@ func (m *CreateSessionRequest) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthInfrastructureBackend } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthInfrastructureBackend + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1279,7 +1518,7 @@ func (m *CreateSessionResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1307,7 +1546,7 @@ func (m *CreateSessionResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1317,6 +1556,9 @@ func (m *CreateSessionResponse) Unmarshal(dAtA []byte) error { return ErrInvalidLengthInfrastructureBackend } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthInfrastructureBackend + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1336,7 +1578,7 @@ func (m *CreateSessionResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1345,11 +1587,14 @@ func (m *CreateSessionResponse) Unmarshal(dAtA []byte) error { return ErrInvalidLengthInfrastructureBackend } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthInfrastructureBackend + } if postIndex > l { return io.ErrUnexpectedEOF } if m.Status == nil { - m.Status = &google_rpc.Status{} + m.Status = &rpc.Status{} } if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1364,6 +1609,9 @@ func (m *CreateSessionResponse) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthInfrastructureBackend } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthInfrastructureBackend + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1391,7 +1639,7 @@ func (m *ValidateRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1419,7 +1667,7 @@ func (m *ValidateRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1428,11 +1676,14 @@ func (m *ValidateRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthInfrastructureBackend } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthInfrastructureBackend + } if postIndex > l { return io.ErrUnexpectedEOF } if m.AdapterConfig == nil { - m.AdapterConfig = &google_protobuf2.Any{} + m.AdapterConfig = &types.Any{} } if err := m.AdapterConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1452,7 +1703,7 @@ func (m *ValidateRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1461,14 +1712,17 @@ func (m *ValidateRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthInfrastructureBackend } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthInfrastructureBackend + } if postIndex > l { return io.ErrUnexpectedEOF } if m.InferredTypes == nil { - m.InferredTypes = make(map[string]*google_protobuf2.Any) + m.InferredTypes = make(map[string]*types.Any) } var mapkey string - var mapvalue *google_protobuf2.Any + var mapvalue *types.Any for iNdEx < postIndex { entryPreIndex := iNdEx var wire uint64 @@ -1481,7 +1735,7 @@ func (m *ValidateRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1498,7 +1752,7 @@ func (m *ValidateRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1508,6 +1762,9 @@ func (m *ValidateRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthInfrastructureBackend } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthInfrastructureBackend + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -1524,7 +1781,7 @@ func (m *ValidateRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapmsglen |= (int(b) & 0x7F) << shift + mapmsglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1533,13 +1790,13 @@ func (m *ValidateRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthInfrastructureBackend } postmsgIndex := iNdEx + mapmsglen - if mapmsglen < 0 { + if postmsgIndex < 0 { return ErrInvalidLengthInfrastructureBackend } if postmsgIndex > l { return io.ErrUnexpectedEOF } - mapvalue = &google_protobuf2.Any{} + mapvalue = &types.Any{} if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { return err } @@ -1570,6 +1827,9 @@ func (m *ValidateRequest) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthInfrastructureBackend } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthInfrastructureBackend + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1597,7 +1857,7 @@ func (m *ValidateResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1625,7 +1885,7 @@ func (m *ValidateResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1634,11 +1894,14 @@ func (m *ValidateResponse) Unmarshal(dAtA []byte) error { return ErrInvalidLengthInfrastructureBackend } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthInfrastructureBackend + } if postIndex > l { return io.ErrUnexpectedEOF } if m.Status == nil { - m.Status = &google_rpc.Status{} + m.Status = &rpc.Status{} } if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1653,6 +1916,9 @@ func (m *ValidateResponse) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthInfrastructureBackend } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthInfrastructureBackend + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1680,7 +1946,7 @@ func (m *CloseSessionRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1708,7 +1974,7 @@ func (m *CloseSessionRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1718,6 +1984,9 @@ func (m *CloseSessionRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthInfrastructureBackend } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthInfrastructureBackend + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1732,6 +2001,9 @@ func (m *CloseSessionRequest) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthInfrastructureBackend } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthInfrastructureBackend + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1759,7 +2031,7 @@ func (m *CloseSessionResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1787,7 +2059,7 @@ func (m *CloseSessionResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1796,11 +2068,14 @@ func (m *CloseSessionResponse) Unmarshal(dAtA []byte) error { return ErrInvalidLengthInfrastructureBackend } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthInfrastructureBackend + } if postIndex > l { return io.ErrUnexpectedEOF } if m.Status == nil { - m.Status = &google_rpc.Status{} + m.Status = &rpc.Status{} } if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1815,6 +2090,9 @@ func (m *CloseSessionResponse) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthInfrastructureBackend } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthInfrastructureBackend + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1881,10 +2159,13 @@ func skipInfrastructureBackend(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthInfrastructureBackend } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthInfrastructureBackend + } return iNdEx, nil case 3: for { @@ -1913,6 +2194,9 @@ func skipInfrastructureBackend(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthInfrastructureBackend + } } return iNdEx, nil case 4: @@ -1931,44 +2215,3 @@ var ( ErrInvalidLengthInfrastructureBackend = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowInfrastructureBackend = fmt.Errorf("proto: integer overflow") ) - -func init() { - proto.RegisterFile("mixer/adapter/model/v1beta1/infrastructure_backend.proto", fileDescriptorInfrastructureBackend) -} - -var fileDescriptorInfrastructureBackend = []byte{ - // 523 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x54, 0x41, 0x6b, 0x13, 0x41, - 0x14, 0xce, 0x24, 0x58, 0xec, 0xd4, 0xd4, 0x32, 0xa6, 0x18, 0x17, 0x1c, 0x6a, 0x4e, 0xa1, 0x87, - 0x59, 0x9a, 0x8a, 0x0d, 0x0a, 0x82, 0x09, 0x3d, 0xc4, 0x63, 0x2a, 0x05, 0xbd, 0x84, 0xc9, 0xee, - 0x4b, 0x18, 0xba, 0xdd, 0xd9, 0xce, 0xcc, 0x16, 0xf7, 0x64, 0xf1, 0x17, 0x88, 0x78, 0xf6, 0xec, - 0x4f, 0xf1, 0xd8, 0xa3, 0x47, 0xb3, 0x5e, 0x3c, 0xf6, 0x27, 0x48, 0x77, 0x27, 0xb4, 0x49, 0x35, - 0xed, 0x8a, 0xe0, 0x6d, 0x99, 0xf7, 0xbe, 0xf7, 0x7d, 0xef, 0x7b, 0xef, 0x2d, 0x6e, 0x1f, 0x8a, - 0xb7, 0xa0, 0x5c, 0xee, 0xf3, 0xc8, 0x80, 0x72, 0x0f, 0xa5, 0x0f, 0x81, 0x7b, 0xbc, 0x35, 0x04, - 0xc3, 0xb7, 0x5c, 0x11, 0x8e, 0x14, 0xd7, 0x46, 0xc5, 0x9e, 0x89, 0x15, 0x0c, 0x86, 0xdc, 0x3b, - 0x80, 0xd0, 0x67, 0x91, 0x92, 0x46, 0x92, 0x47, 0x42, 0x1b, 0x21, 0x59, 0x86, 0x67, 0x16, 0xcf, - 0x32, 0x3c, 0xb3, 0x78, 0xe7, 0xc1, 0x58, 0xca, 0x71, 0x00, 0x6e, 0x06, 0x18, 0xc6, 0x23, 0x97, - 0x87, 0x49, 0x8e, 0x76, 0xee, 0xdb, 0x90, 0x8a, 0x3c, 0x57, 0x1b, 0x6e, 0x62, 0x9d, 0x07, 0x1a, - 0x9f, 0xcb, 0xb8, 0xd6, 0x55, 0xc0, 0x0d, 0xec, 0x81, 0xd6, 0x42, 0x86, 0x7d, 0x38, 0x8a, 0x41, - 0x1b, 0xf2, 0x0c, 0xaf, 0x5a, 0x96, 0x81, 0x27, 0xc3, 0x91, 0x18, 0xd7, 0xd1, 0x06, 0x6a, 0xae, - 0xb4, 0x6a, 0x2c, 0x2f, 0xc5, 0xa6, 0x2c, 0xec, 0x45, 0x98, 0xf4, 0xab, 0x36, 0xb7, 0x9b, 0xa5, - 0x92, 0x23, 0xbc, 0x2a, 0xc2, 0x11, 0x28, 0x05, 0xfe, 0xc0, 0x24, 0x11, 0xe8, 0x7a, 0x79, 0xa3, - 0xd2, 0x5c, 0x69, 0xbd, 0x64, 0xd7, 0x76, 0xc1, 0x7e, 0xa7, 0x86, 0xf5, 0x6c, 0xb5, 0x57, 0xe7, - 0xc5, 0x76, 0x43, 0xa3, 0x92, 0x7e, 0x55, 0x5c, 0x7e, 0x73, 0xf6, 0x31, 0xb9, 0x9a, 0x44, 0xd6, - 0x70, 0xe5, 0x00, 0x92, 0x4c, 0xfa, 0x72, 0xff, 0xfc, 0x93, 0x6c, 0xe2, 0x5b, 0xc7, 0x3c, 0x88, - 0xa1, 0x5e, 0x5e, 0xd0, 0x4e, 0x9e, 0xf2, 0xb4, 0xdc, 0x46, 0x8d, 0x21, 0x5e, 0x9f, 0x53, 0xa4, - 0x23, 0x19, 0x6a, 0x20, 0x0f, 0x31, 0xd6, 0xf9, 0xd3, 0x40, 0xf8, 0x96, 0x61, 0xd9, 0xbe, 0xf4, - 0x7c, 0xb2, 0x89, 0x97, 0x72, 0xa3, 0x2d, 0x11, 0x99, 0x12, 0xa9, 0xc8, 0x63, 0x7b, 0x59, 0xa4, - 0x6f, 0x33, 0x1a, 0x9f, 0xca, 0xf8, 0xee, 0x3e, 0x0f, 0x84, 0xcf, 0x0d, 0xfc, 0x13, 0xff, 0x83, - 0x3f, 0xf8, 0xbf, 0x7b, 0x03, 0xff, 0xe7, 0x84, 0xfc, 0x47, 0xeb, 0x9f, 0xe3, 0xb5, 0x0b, 0x31, - 0xd6, 0xf5, 0x0b, 0x5b, 0xd1, 0xb5, 0xb6, 0x3e, 0xc6, 0xf7, 0xba, 0x81, 0xd4, 0xf3, 0x9b, 0xbd, - 0x78, 0x70, 0x8d, 0x0e, 0xae, 0xcd, 0xa2, 0x8a, 0x33, 0xb7, 0x3e, 0x56, 0xf0, 0x7a, 0x6f, 0xe6, - 0x9a, 0x3b, 0xf9, 0x31, 0x13, 0x8d, 0x6f, 0x4f, 0x7b, 0x22, 0xad, 0xe2, 0xd3, 0x70, 0xb6, 0x0b, - 0x61, 0xac, 0xf4, 0xf7, 0x08, 0x57, 0x67, 0x96, 0x98, 0xec, 0xfc, 0xe5, 0x21, 0x3a, 0xed, 0xe2, - 0x40, 0x2b, 0xe2, 0x1d, 0xbe, 0x73, 0xd9, 0x57, 0xf2, 0xe4, 0x26, 0x95, 0xae, 0x8e, 0xcf, 0xd9, - 0x29, 0x8c, 0xcb, 0x05, 0x74, 0x5e, 0x9f, 0x4e, 0x68, 0xe9, 0xdb, 0x84, 0x96, 0xce, 0x26, 0x14, - 0x9d, 0xa4, 0x14, 0x7d, 0x49, 0x29, 0xfa, 0x9a, 0x52, 0x74, 0x9a, 0x52, 0xf4, 0x3d, 0xa5, 0xe8, - 0x67, 0x4a, 0x4b, 0x67, 0x29, 0x45, 0x1f, 0x7e, 0xd0, 0xd2, 0x9b, 0x66, 0xce, 0x22, 0xa4, 0xcb, - 0x23, 0xe1, 0x2e, 0xf8, 0x6d, 0x9f, 0x20, 0x34, 0x5c, 0xca, 0x56, 0x78, 0xfb, 0x57, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x07, 0x94, 0xef, 0x33, 0xdf, 0x05, 0x00, 0x00, -} diff --git a/mixer/adapter/model/v1beta1/istio.mixer.adapter.model.v1beta1.pb.html b/mixer/adapter/model/v1beta1/istio.mixer.adapter.model.v1beta1.pb.html index 8ab59eb324a..2686c2826cc 100644 --- a/mixer/adapter/model/v1beta1/istio.mixer.adapter.model.v1beta1.pb.html +++ b/mixer/adapter/model/v1beta1/istio.mixer.adapter.model.v1beta1.pb.html @@ -407,7 +407,7 @@

ReportResult

Template

-

Template provides the details of a mixer template.

+

Template provides the details of a Mixer template.

diff --git a/mixer/adapter/model/v1beta1/quota.pb.go b/mixer/adapter/model/v1beta1/quota.pb.go index 49eee5aa0bf..b9e9d848395 100644 --- a/mixer/adapter/model/v1beta1/quota.pb.go +++ b/mixer/adapter/model/v1beta1/quota.pb.go @@ -3,21 +3,19 @@ package v1beta1 -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "github.com/gogo/protobuf/gogoproto" -import _ "github.com/gogo/protobuf/types" - -import time "time" - -import types "github.com/gogo/protobuf/types" - -import strings "strings" -import reflect "reflect" -import sortkeys "github.com/gogo/protobuf/sortkeys" - -import io "io" +import ( + fmt "fmt" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" + github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + _ "github.com/gogo/protobuf/types" + github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" + io "io" + math "math" + reflect "reflect" + strings "strings" + time "time" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -25,15 +23,49 @@ var _ = fmt.Errorf var _ = math.Inf var _ = time.Kitchen +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + // Expresses the quota allocation request. type QuotaRequest struct { // The individual quotas to allocate - Quotas map[string]QuotaRequest_QuotaParams `protobuf:"bytes,1,rep,name=quotas" json:"quotas" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"` + Quotas map[string]QuotaRequest_QuotaParams `protobuf:"bytes,1,rep,name=quotas,proto3" json:"quotas" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *QuotaRequest) Reset() { *m = QuotaRequest{} } -func (*QuotaRequest) ProtoMessage() {} -func (*QuotaRequest) Descriptor() ([]byte, []int) { return fileDescriptorQuota, []int{0} } +func (m *QuotaRequest) Reset() { *m = QuotaRequest{} } +func (*QuotaRequest) ProtoMessage() {} +func (*QuotaRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_f07acf62b4429357, []int{0} +} +func (m *QuotaRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QuotaRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QuotaRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QuotaRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QuotaRequest.Merge(m, src) +} +func (m *QuotaRequest) XXX_Size() int { + return m.Size() +} +func (m *QuotaRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QuotaRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QuotaRequest proto.InternalMessageInfo // parameters for a quota allocation type QuotaRequest_QuotaParams struct { @@ -43,39 +75,163 @@ type QuotaRequest_QuotaParams struct { BestEffort bool `protobuf:"varint,2,opt,name=best_effort,json=bestEffort,proto3" json:"best_effort,omitempty"` } -func (m *QuotaRequest_QuotaParams) Reset() { *m = QuotaRequest_QuotaParams{} } -func (*QuotaRequest_QuotaParams) ProtoMessage() {} -func (*QuotaRequest_QuotaParams) Descriptor() ([]byte, []int) { return fileDescriptorQuota, []int{0, 0} } +func (m *QuotaRequest_QuotaParams) Reset() { *m = QuotaRequest_QuotaParams{} } +func (*QuotaRequest_QuotaParams) ProtoMessage() {} +func (*QuotaRequest_QuotaParams) Descriptor() ([]byte, []int) { + return fileDescriptor_f07acf62b4429357, []int{0, 0} +} +func (m *QuotaRequest_QuotaParams) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QuotaRequest_QuotaParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QuotaRequest_QuotaParams.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QuotaRequest_QuotaParams) XXX_Merge(src proto.Message) { + xxx_messageInfo_QuotaRequest_QuotaParams.Merge(m, src) +} +func (m *QuotaRequest_QuotaParams) XXX_Size() int { + return m.Size() +} +func (m *QuotaRequest_QuotaParams) XXX_DiscardUnknown() { + xxx_messageInfo_QuotaRequest_QuotaParams.DiscardUnknown(m) +} + +var xxx_messageInfo_QuotaRequest_QuotaParams proto.InternalMessageInfo // Expresses the result of multiple quota allocations. type QuotaResult struct { // The resulting quota, one entry per requested quota. - Quotas map[string]QuotaResult_Result `protobuf:"bytes,1,rep,name=quotas" json:"quotas" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"` + Quotas map[string]QuotaResult_Result `protobuf:"bytes,1,rep,name=quotas,proto3" json:"quotas" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *QuotaResult) Reset() { *m = QuotaResult{} } -func (*QuotaResult) ProtoMessage() {} -func (*QuotaResult) Descriptor() ([]byte, []int) { return fileDescriptorQuota, []int{1} } +func (m *QuotaResult) Reset() { *m = QuotaResult{} } +func (*QuotaResult) ProtoMessage() {} +func (*QuotaResult) Descriptor() ([]byte, []int) { + return fileDescriptor_f07acf62b4429357, []int{1} +} +func (m *QuotaResult) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QuotaResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QuotaResult.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QuotaResult) XXX_Merge(src proto.Message) { + xxx_messageInfo_QuotaResult.Merge(m, src) +} +func (m *QuotaResult) XXX_Size() int { + return m.Size() +} +func (m *QuotaResult) XXX_DiscardUnknown() { + xxx_messageInfo_QuotaResult.DiscardUnknown(m) +} + +var xxx_messageInfo_QuotaResult proto.InternalMessageInfo // Expresses the result of a quota allocation. type QuotaResult_Result struct { // The amount of time for which this result can be considered valid. - ValidDuration time.Duration `protobuf:"bytes,2,opt,name=valid_duration,json=validDuration,stdduration" json:"valid_duration"` + ValidDuration time.Duration `protobuf:"bytes,2,opt,name=valid_duration,json=validDuration,proto3,stdduration" json:"valid_duration"` // The amount of granted quota. When `QuotaParams.best_effort` is true, this will be >= 0. // If `QuotaParams.best_effort` is false, this will be either 0 or >= `QuotaParams.amount`. GrantedAmount int64 `protobuf:"varint,3,opt,name=granted_amount,json=grantedAmount,proto3" json:"granted_amount,omitempty"` } -func (m *QuotaResult_Result) Reset() { *m = QuotaResult_Result{} } -func (*QuotaResult_Result) ProtoMessage() {} -func (*QuotaResult_Result) Descriptor() ([]byte, []int) { return fileDescriptorQuota, []int{1, 0} } +func (m *QuotaResult_Result) Reset() { *m = QuotaResult_Result{} } +func (*QuotaResult_Result) ProtoMessage() {} +func (*QuotaResult_Result) Descriptor() ([]byte, []int) { + return fileDescriptor_f07acf62b4429357, []int{1, 0} +} +func (m *QuotaResult_Result) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QuotaResult_Result) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QuotaResult_Result.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QuotaResult_Result) XXX_Merge(src proto.Message) { + xxx_messageInfo_QuotaResult_Result.Merge(m, src) +} +func (m *QuotaResult_Result) XXX_Size() int { + return m.Size() +} +func (m *QuotaResult_Result) XXX_DiscardUnknown() { + xxx_messageInfo_QuotaResult_Result.DiscardUnknown(m) +} + +var xxx_messageInfo_QuotaResult_Result proto.InternalMessageInfo func init() { proto.RegisterType((*QuotaRequest)(nil), "istio.mixer.adapter.model.v1beta1.QuotaRequest") + proto.RegisterMapType((map[string]QuotaRequest_QuotaParams)(nil), "istio.mixer.adapter.model.v1beta1.QuotaRequest.QuotasEntry") proto.RegisterType((*QuotaRequest_QuotaParams)(nil), "istio.mixer.adapter.model.v1beta1.QuotaRequest.QuotaParams") proto.RegisterType((*QuotaResult)(nil), "istio.mixer.adapter.model.v1beta1.QuotaResult") + proto.RegisterMapType((map[string]QuotaResult_Result)(nil), "istio.mixer.adapter.model.v1beta1.QuotaResult.QuotasEntry") proto.RegisterType((*QuotaResult_Result)(nil), "istio.mixer.adapter.model.v1beta1.QuotaResult.Result") } + +func init() { + proto.RegisterFile("mixer/adapter/model/v1beta1/quota.proto", fileDescriptor_f07acf62b4429357) +} + +var fileDescriptor_f07acf62b4429357 = []byte{ + // 451 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x53, 0x3d, 0x8f, 0xd3, 0x30, + 0x18, 0xb6, 0x5b, 0xa8, 0x0e, 0x97, 0x3b, 0x21, 0x0b, 0xa1, 0x92, 0xc1, 0x2d, 0x27, 0x21, 0x3a, + 0xd9, 0x3a, 0x10, 0x12, 0x3a, 0x26, 0x2a, 0x8e, 0x01, 0x16, 0xce, 0x13, 0xb0, 0x54, 0x8e, 0xe2, + 0x46, 0x11, 0x49, 0x9c, 0x73, 0x9c, 0x88, 0x13, 0x0b, 0x3f, 0x81, 0x91, 0x9f, 0x00, 0xff, 0xa4, + 0x63, 0x27, 0x74, 0x13, 0x90, 0x74, 0x61, 0xbc, 0x9f, 0x80, 0x62, 0xbb, 0xd2, 0xc1, 0x70, 0x05, + 0xa6, 0xbc, 0x1f, 0xcf, 0xfb, 0x3c, 0x79, 0x9f, 0x57, 0x46, 0xf7, 0xb2, 0xe4, 0x9d, 0xd4, 0x4c, + 0x44, 0xa2, 0x30, 0x52, 0xb3, 0x4c, 0x45, 0x32, 0x65, 0xf5, 0x41, 0x28, 0x8d, 0x38, 0x60, 0x27, + 0x95, 0x32, 0x82, 0x16, 0x5a, 0x19, 0x85, 0xef, 0x24, 0xa5, 0x49, 0x14, 0xb5, 0x70, 0xea, 0xe1, + 0xd4, 0xc2, 0xa9, 0x87, 0x07, 0x37, 0x63, 0x15, 0x2b, 0x8b, 0x66, 0x5d, 0xe4, 0x06, 0x03, 0x12, + 0x2b, 0x15, 0xa7, 0x92, 0xd9, 0x2c, 0xac, 0x16, 0x2c, 0xaa, 0xb4, 0x30, 0x89, 0xca, 0x5d, 0x7f, + 0xff, 0x4b, 0x0f, 0x5d, 0x3f, 0xee, 0x84, 0xb8, 0x3c, 0xa9, 0x64, 0x69, 0xf0, 0x6b, 0x34, 0xb0, + 0xc2, 0xe5, 0x08, 0x4e, 0xfa, 0xd3, 0xe1, 0xfd, 0xc7, 0x74, 0xab, 0x34, 0xbd, 0x48, 0xe0, 0x92, + 0xf2, 0x28, 0x37, 0xfa, 0x74, 0x76, 0x65, 0xf9, 0x6d, 0x0c, 0xb8, 0x27, 0x0c, 0x9e, 0xa1, 0xa1, + 0x6d, 0xbe, 0x14, 0x5a, 0x64, 0x25, 0xbe, 0x85, 0x06, 0x22, 0x53, 0x55, 0x6e, 0x46, 0x70, 0x02, + 0xa7, 0x7d, 0xee, 0x33, 0x3c, 0x46, 0xc3, 0x50, 0x96, 0x66, 0x2e, 0x17, 0x0b, 0xa5, 0xcd, 0xa8, + 0x37, 0x81, 0xd3, 0x1d, 0x8e, 0xba, 0xd2, 0x91, 0xad, 0x04, 0xb5, 0xe7, 0x71, 0x22, 0xf8, 0x06, + 0xea, 0xbf, 0x95, 0xa7, 0x96, 0xe4, 0x1a, 0xef, 0x42, 0x7c, 0x8c, 0xae, 0xd6, 0x22, 0xad, 0xa4, + 0x9d, 0xfd, 0xdf, 0x15, 0xdc, 0x5f, 0x72, 0xc7, 0x74, 0xd8, 0x7b, 0x04, 0xf7, 0xbf, 0xf6, 0xbc, + 0x30, 0x97, 0x65, 0x95, 0x1a, 0xfc, 0xea, 0x0f, 0xab, 0x0e, 0xff, 0x5e, 0xa7, 0x9b, 0xbf, 0xc4, + 0xa9, 0xf7, 0x68, 0xe0, 0x35, 0x9e, 0xa3, 0xbd, 0x5a, 0xa4, 0x49, 0x34, 0xdf, 0xdc, 0xcd, 0xef, + 0x74, 0x9b, 0xba, 0xc3, 0xd2, 0xcd, 0x61, 0xe9, 0x53, 0x0f, 0x98, 0xed, 0x74, 0x54, 0x9f, 0xbe, + 0x8f, 0x21, 0xdf, 0xb5, 0xa3, 0x9b, 0x06, 0xbe, 0x8b, 0xf6, 0x62, 0x2d, 0x72, 0x23, 0xa3, 0xb9, + 0x37, 0xbe, 0x6f, 0x8d, 0xdf, 0xf5, 0xd5, 0x27, 0xb6, 0x18, 0x14, 0xdb, 0xec, 0x7d, 0xf1, 0xbb, + 0xbd, 0x0f, 0xff, 0x71, 0x6d, 0xf7, 0xb9, 0x60, 0xec, 0x2c, 0x5c, 0x36, 0x04, 0xac, 0x1a, 0x02, + 0xce, 0x1a, 0x02, 0xce, 0x1b, 0x02, 0x3e, 0xb4, 0x04, 0x7e, 0x6e, 0x09, 0x58, 0xb6, 0x04, 0xae, + 0x5a, 0x02, 0x7f, 0xb4, 0x04, 0xfe, 0x6c, 0x09, 0x38, 0x6f, 0x09, 0xfc, 0xb8, 0x26, 0x60, 0xb5, + 0x26, 0xe0, 0x6c, 0x4d, 0xc0, 0x9b, 0xa9, 0x93, 0x4e, 0x14, 0x13, 0x45, 0xc2, 0x2e, 0x79, 0x4d, + 0xe1, 0xc0, 0x1a, 0xf5, 0xe0, 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf5, 0xdb, 0x42, 0x83, 0x73, + 0x03, 0x00, 0x00, +} + func (m *QuotaRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -214,8 +370,8 @@ func (m *QuotaResult_Result) MarshalTo(dAtA []byte) (int, error) { _ = l dAtA[i] = 0x12 i++ - i = encodeVarintQuota(dAtA, i, uint64(types.SizeOfStdDuration(m.ValidDuration))) - n3, err := types.StdDurationMarshalTo(m.ValidDuration, dAtA[i:]) + i = encodeVarintQuota(dAtA, i, uint64(github_com_gogo_protobuf_types.SizeOfStdDuration(m.ValidDuration))) + n3, err := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.ValidDuration, dAtA[i:]) if err != nil { return 0, err } @@ -238,6 +394,9 @@ func encodeVarintQuota(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *QuotaRequest) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Quotas) > 0 { @@ -253,6 +412,9 @@ func (m *QuotaRequest) Size() (n int) { } func (m *QuotaRequest_QuotaParams) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Amount != 0 { @@ -265,6 +427,9 @@ func (m *QuotaRequest_QuotaParams) Size() (n int) { } func (m *QuotaResult) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Quotas) > 0 { @@ -280,9 +445,12 @@ func (m *QuotaResult) Size() (n int) { } func (m *QuotaResult_Result) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l - l = types.SizeOfStdDuration(m.ValidDuration) + l = github_com_gogo_protobuf_types.SizeOfStdDuration(m.ValidDuration) n += 1 + l + sovQuota(uint64(l)) if m.GrantedAmount != 0 { n += 1 + sovQuota(uint64(m.GrantedAmount)) @@ -311,7 +479,7 @@ func (this *QuotaRequest) String() string { for k, _ := range this.Quotas { keysForQuotas = append(keysForQuotas, k) } - sortkeys.Strings(keysForQuotas) + github_com_gogo_protobuf_sortkeys.Strings(keysForQuotas) mapStringForQuotas := "map[string]QuotaRequest_QuotaParams{" for _, k := range keysForQuotas { mapStringForQuotas += fmt.Sprintf("%v: %v,", k, this.Quotas[k]) @@ -342,7 +510,7 @@ func (this *QuotaResult) String() string { for k, _ := range this.Quotas { keysForQuotas = append(keysForQuotas, k) } - sortkeys.Strings(keysForQuotas) + github_com_gogo_protobuf_sortkeys.Strings(keysForQuotas) mapStringForQuotas := "map[string]QuotaResult_Result{" for _, k := range keysForQuotas { mapStringForQuotas += fmt.Sprintf("%v: %v,", k, this.Quotas[k]) @@ -359,7 +527,7 @@ func (this *QuotaResult_Result) String() string { return "nil" } s := strings.Join([]string{`&QuotaResult_Result{`, - `ValidDuration:` + strings.Replace(strings.Replace(this.ValidDuration.String(), "Duration", "google_protobuf1.Duration", 1), `&`, ``, 1) + `,`, + `ValidDuration:` + strings.Replace(strings.Replace(this.ValidDuration.String(), "Duration", "types.Duration", 1), `&`, ``, 1) + `,`, `GrantedAmount:` + fmt.Sprintf("%v", this.GrantedAmount) + `,`, `}`, }, "") @@ -388,7 +556,7 @@ func (m *QuotaRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -416,7 +584,7 @@ func (m *QuotaRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -425,6 +593,9 @@ func (m *QuotaRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuota + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -445,7 +616,7 @@ func (m *QuotaRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -462,7 +633,7 @@ func (m *QuotaRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -472,6 +643,9 @@ func (m *QuotaRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthQuota + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -488,7 +662,7 @@ func (m *QuotaRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapmsglen |= (int(b) & 0x7F) << shift + mapmsglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -497,7 +671,7 @@ func (m *QuotaRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postmsgIndex := iNdEx + mapmsglen - if mapmsglen < 0 { + if postmsgIndex < 0 { return ErrInvalidLengthQuota } if postmsgIndex > l { @@ -534,6 +708,9 @@ func (m *QuotaRequest) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthQuota } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthQuota + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -561,7 +738,7 @@ func (m *QuotaRequest_QuotaParams) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -589,7 +766,7 @@ func (m *QuotaRequest_QuotaParams) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Amount |= (int64(b) & 0x7F) << shift + m.Amount |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -608,7 +785,7 @@ func (m *QuotaRequest_QuotaParams) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -623,6 +800,9 @@ func (m *QuotaRequest_QuotaParams) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthQuota } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthQuota + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -650,7 +830,7 @@ func (m *QuotaResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -678,7 +858,7 @@ func (m *QuotaResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -687,6 +867,9 @@ func (m *QuotaResult) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuota + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -707,7 +890,7 @@ func (m *QuotaResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -724,7 +907,7 @@ func (m *QuotaResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -734,6 +917,9 @@ func (m *QuotaResult) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthQuota + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -750,7 +936,7 @@ func (m *QuotaResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapmsglen |= (int(b) & 0x7F) << shift + mapmsglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -759,7 +945,7 @@ func (m *QuotaResult) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postmsgIndex := iNdEx + mapmsglen - if mapmsglen < 0 { + if postmsgIndex < 0 { return ErrInvalidLengthQuota } if postmsgIndex > l { @@ -796,6 +982,9 @@ func (m *QuotaResult) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthQuota } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthQuota + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -823,7 +1012,7 @@ func (m *QuotaResult_Result) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -851,7 +1040,7 @@ func (m *QuotaResult_Result) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -860,10 +1049,13 @@ func (m *QuotaResult_Result) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuota + } if postIndex > l { return io.ErrUnexpectedEOF } - if err := types.StdDurationUnmarshal(&m.ValidDuration, dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_gogo_protobuf_types.StdDurationUnmarshal(&m.ValidDuration, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -881,7 +1073,7 @@ func (m *QuotaResult_Result) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.GrantedAmount |= (int64(b) & 0x7F) << shift + m.GrantedAmount |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -895,6 +1087,9 @@ func (m *QuotaResult_Result) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthQuota } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthQuota + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -961,10 +1156,13 @@ func skipQuota(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthQuota } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthQuota + } return iNdEx, nil case 3: for { @@ -993,6 +1191,9 @@ func skipQuota(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthQuota + } } return iNdEx, nil case 4: @@ -1011,37 +1212,3 @@ var ( ErrInvalidLengthQuota = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowQuota = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("mixer/adapter/model/v1beta1/quota.proto", fileDescriptorQuota) } - -var fileDescriptorQuota = []byte{ - // 444 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x53, 0x3d, 0x6f, 0xd4, 0x30, - 0x18, 0xb6, 0xef, 0xe0, 0x54, 0x7c, 0xb4, 0x42, 0x16, 0x42, 0x47, 0x06, 0xdf, 0x51, 0x09, 0x91, - 0xc9, 0x56, 0x41, 0x48, 0xa8, 0x4c, 0x9c, 0x28, 0x03, 0x2c, 0xd4, 0x13, 0x74, 0x39, 0x39, 0x8a, - 0x2f, 0x8a, 0x48, 0xe2, 0xd4, 0x71, 0x22, 0x2a, 0x16, 0x7e, 0x02, 0x23, 0x3f, 0x01, 0xfe, 0xc9, - 0x8d, 0x9d, 0x10, 0x13, 0x90, 0xb0, 0x30, 0xf6, 0x27, 0xa0, 0xd8, 0x3e, 0xa9, 0x30, 0xf4, 0xa0, - 0x53, 0xde, 0x8f, 0xe7, 0x7d, 0x9e, 0xbc, 0xcf, 0x2b, 0xa3, 0x7b, 0x79, 0xfa, 0x56, 0x6a, 0x26, - 0x62, 0x51, 0x1a, 0xa9, 0x59, 0xae, 0x62, 0x99, 0xb1, 0x66, 0x2f, 0x92, 0x46, 0xec, 0xb1, 0xe3, - 0x5a, 0x19, 0x41, 0x4b, 0xad, 0x8c, 0xc2, 0x77, 0xd2, 0xca, 0xa4, 0x8a, 0x5a, 0x38, 0xf5, 0x70, - 0x6a, 0xe1, 0xd4, 0xc3, 0x83, 0x9b, 0x89, 0x4a, 0x94, 0x45, 0xb3, 0x3e, 0x72, 0x83, 0x01, 0x49, - 0x94, 0x4a, 0x32, 0xc9, 0x6c, 0x16, 0xd5, 0x4b, 0x16, 0xd7, 0x5a, 0x98, 0x54, 0x15, 0xae, 0xbf, - 0xfb, 0x79, 0x80, 0xae, 0x1f, 0xf6, 0x42, 0x5c, 0x1e, 0xd7, 0xb2, 0x32, 0xf8, 0x35, 0x1a, 0x59, - 0xe1, 0x6a, 0x02, 0x67, 0xc3, 0x70, 0x7c, 0xff, 0x31, 0xdd, 0x28, 0x4d, 0xcf, 0x13, 0xb8, 0xa4, - 0x3a, 0x28, 0x8c, 0x3e, 0x99, 0x5f, 0x59, 0x7d, 0x9b, 0x02, 0xee, 0x09, 0x83, 0x67, 0x68, 0x6c, - 0x9b, 0x2f, 0x85, 0x16, 0x79, 0x85, 0x6f, 0xa1, 0x91, 0xc8, 0x55, 0x5d, 0x98, 0x09, 0x9c, 0xc1, - 0x70, 0xc8, 0x7d, 0x86, 0xa7, 0x68, 0x1c, 0xc9, 0xca, 0x2c, 0xe4, 0x72, 0xa9, 0xb4, 0x99, 0x0c, - 0x66, 0x30, 0xdc, 0xe2, 0xa8, 0x2f, 0x1d, 0xd8, 0x4a, 0xd0, 0x78, 0x1e, 0x27, 0x82, 0x6f, 0xa0, - 0xe1, 0x1b, 0x79, 0x62, 0x49, 0xae, 0xf1, 0x3e, 0xc4, 0x87, 0xe8, 0x6a, 0x23, 0xb2, 0x5a, 0xda, - 0xd9, 0xcb, 0xae, 0xe0, 0xfe, 0x92, 0x3b, 0xa6, 0xfd, 0xc1, 0x23, 0xb8, 0xfb, 0x65, 0xe0, 0x85, - 0xb9, 0xac, 0xea, 0xcc, 0xe0, 0x57, 0x7f, 0x59, 0xb5, 0xff, 0xef, 0x3a, 0xfd, 0xfc, 0x05, 0x4e, - 0xbd, 0x43, 0x23, 0xaf, 0xf1, 0x1c, 0xed, 0x34, 0x22, 0x4b, 0xe3, 0xc5, 0xfa, 0x6e, 0x7e, 0xa7, - 0xdb, 0xd4, 0x1d, 0x96, 0xae, 0x0f, 0x4b, 0x9f, 0x7a, 0xc0, 0x7c, 0xab, 0xa7, 0xfa, 0xf8, 0x7d, - 0x0a, 0xf9, 0xb6, 0x1d, 0x5d, 0x37, 0xf0, 0x5d, 0xb4, 0x93, 0x68, 0x51, 0x18, 0x19, 0x2f, 0xbc, - 0xf1, 0x43, 0x6b, 0xfc, 0xb6, 0xaf, 0x3e, 0xb1, 0xc5, 0xa0, 0xdc, 0x64, 0xef, 0x8b, 0x3f, 0xed, - 0x7d, 0xf8, 0x9f, 0x6b, 0xbb, 0xcf, 0x39, 0x63, 0xe7, 0x47, 0xab, 0x96, 0x80, 0xd3, 0x96, 0x80, - 0xaf, 0x2d, 0x01, 0x67, 0x2d, 0x01, 0xef, 0x3b, 0x02, 0x3f, 0x75, 0x04, 0xac, 0x3a, 0x02, 0x4f, - 0x3b, 0x02, 0x7f, 0x74, 0x04, 0xfe, 0xea, 0x08, 0x38, 0xeb, 0x08, 0xfc, 0xf0, 0x93, 0x80, 0xa3, - 0xd0, 0x49, 0xa6, 0x8a, 0x89, 0x32, 0x65, 0x17, 0xbc, 0xa2, 0x68, 0x64, 0x0d, 0x7a, 0xf0, 0x3b, - 0x00, 0x00, 0xff, 0xff, 0xf7, 0xfa, 0xfe, 0x63, 0x6b, 0x03, 0x00, 0x00, -} diff --git a/mixer/adapter/model/v1beta1/report.pb.go b/mixer/adapter/model/v1beta1/report.pb.go index 1ec33b37bff..3ca2dca28e6 100644 --- a/mixer/adapter/model/v1beta1/report.pb.go +++ b/mixer/adapter/model/v1beta1/report.pb.go @@ -3,32 +3,87 @@ package v1beta1 -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "github.com/gogo/protobuf/gogoproto" - -import strings "strings" -import reflect "reflect" - -import io "io" +import ( + fmt "fmt" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + reflect "reflect" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + // Expresses the result of a report call. type ReportResult struct { } -func (m *ReportResult) Reset() { *m = ReportResult{} } -func (*ReportResult) ProtoMessage() {} -func (*ReportResult) Descriptor() ([]byte, []int) { return fileDescriptorReport, []int{0} } +func (m *ReportResult) Reset() { *m = ReportResult{} } +func (*ReportResult) ProtoMessage() {} +func (*ReportResult) Descriptor() ([]byte, []int) { + return fileDescriptor_abc732328b315eb4, []int{0} +} +func (m *ReportResult) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ReportResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ReportResult.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ReportResult) XXX_Merge(src proto.Message) { + xxx_messageInfo_ReportResult.Merge(m, src) +} +func (m *ReportResult) XXX_Size() int { + return m.Size() +} +func (m *ReportResult) XXX_DiscardUnknown() { + xxx_messageInfo_ReportResult.DiscardUnknown(m) +} + +var xxx_messageInfo_ReportResult proto.InternalMessageInfo func init() { proto.RegisterType((*ReportResult)(nil), "istio.mixer.adapter.model.v1beta1.ReportResult") } + +func init() { + proto.RegisterFile("mixer/adapter/model/v1beta1/report.proto", fileDescriptor_abc732328b315eb4) +} + +var fileDescriptor_abc732328b315eb4 = []byte{ + // 191 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0xce, 0xa1, 0x0e, 0xc2, 0x30, + 0x10, 0x80, 0xe1, 0xab, 0x41, 0x2c, 0x04, 0x41, 0x50, 0x88, 0x4b, 0x40, 0x4d, 0xb5, 0x59, 0x78, + 0x03, 0x1e, 0x61, 0x12, 0xd7, 0x65, 0xcd, 0xd2, 0x64, 0xcb, 0x35, 0x5d, 0x21, 0x48, 0x1e, 0x81, + 0xc7, 0xe0, 0x51, 0x26, 0x27, 0x27, 0x69, 0x67, 0x90, 0x7b, 0x04, 0x42, 0x37, 0x8d, 0x3b, 0xf1, + 0xdd, 0xdd, 0x9f, 0xa4, 0x8d, 0xbe, 0x2b, 0x2b, 0x64, 0x29, 0x8d, 0x53, 0x56, 0x34, 0x54, 0xaa, + 0x5a, 0xdc, 0xb2, 0x42, 0x39, 0x99, 0x09, 0xab, 0x0c, 0x59, 0xc7, 0x8d, 0x25, 0x47, 0xdb, 0x83, + 0x6e, 0x9d, 0x26, 0x1e, 0x3d, 0x5f, 0x3c, 0x8f, 0x9e, 0x2f, 0x7e, 0xbf, 0xab, 0xa8, 0xa2, 0xa8, + 0xc5, 0x6f, 0x9a, 0x17, 0x8f, 0x9b, 0x64, 0x9d, 0xc7, 0x43, 0xb9, 0x6a, 0xaf, 0xb5, 0x3b, 0x17, + 0x9d, 0x47, 0xe8, 0x3d, 0xc2, 0xe0, 0x11, 0x26, 0x8f, 0xf0, 0x08, 0xc8, 0x5e, 0x01, 0xa1, 0x0b, + 0xc8, 0xfa, 0x80, 0xec, 0x1d, 0x90, 0x7d, 0x02, 0xc2, 0x14, 0x90, 0x3d, 0x47, 0x84, 0x7e, 0x44, + 0x18, 0x46, 0x84, 0x4b, 0x3a, 0x27, 0x68, 0x12, 0xd2, 0x68, 0xf1, 0xa7, 0xbc, 0x58, 0xc5, 0xd7, + 0xa7, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3b, 0x63, 0xe9, 0xbe, 0xdf, 0x00, 0x00, 0x00, +} + func (m *ReportResult) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -57,6 +112,9 @@ func encodeVarintReport(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *ReportResult) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l return n @@ -107,7 +165,7 @@ func (m *ReportResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -130,6 +188,9 @@ func (m *ReportResult) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthReport } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthReport + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -196,10 +257,13 @@ func skipReport(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthReport } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthReport + } return iNdEx, nil case 3: for { @@ -228,6 +292,9 @@ func skipReport(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthReport + } } return iNdEx, nil case 4: @@ -246,21 +313,3 @@ var ( ErrInvalidLengthReport = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowReport = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("mixer/adapter/model/v1beta1/report.proto", fileDescriptorReport) } - -var fileDescriptorReport = []byte{ - // 183 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0xc8, 0xcd, 0xac, 0x48, - 0x2d, 0xd2, 0x4f, 0x4c, 0x49, 0x2c, 0x28, 0x49, 0x2d, 0xd2, 0xcf, 0xcd, 0x4f, 0x49, 0xcd, 0xd1, - 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xd4, 0x2f, 0x4a, 0x2d, 0xc8, 0x2f, 0x2a, 0xd1, 0x2b, - 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x52, 0xcc, 0x2c, 0x2e, 0xc9, 0xcc, 0xd7, 0x03, 0xab, 0xd7, 0x83, - 0xaa, 0xd7, 0x03, 0xab, 0xd7, 0x83, 0xaa, 0x97, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0xab, 0xd6, - 0x07, 0xb1, 0x20, 0x1a, 0x95, 0xf8, 0xb8, 0x78, 0x82, 0xc0, 0x06, 0x05, 0xa5, 0x16, 0x97, 0xe6, - 0x94, 0x38, 0x45, 0x9d, 0x78, 0x28, 0xc7, 0x70, 0xe1, 0xa1, 0x1c, 0xc3, 0x8d, 0x87, 0x72, 0x0c, - 0x1f, 0x1e, 0xca, 0x31, 0x34, 0x3c, 0x92, 0x63, 0x5c, 0xf1, 0x48, 0x8e, 0xe1, 0xc4, 0x23, 0x39, - 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x7c, 0xf1, 0x48, 0x8e, 0xe1, 0xc3, 0x23, - 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0xa2, 0x34, 0x20, 0x56, 0x67, 0xe6, 0xeb, 0x27, 0x16, 0x64, - 0xea, 0xe3, 0x71, 0x71, 0x12, 0x1b, 0xd8, 0x4a, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbc, - 0x98, 0x6a, 0x09, 0xd7, 0x00, 0x00, 0x00, -} diff --git a/mixer/adapter/model/v1beta1/template.pb.go b/mixer/adapter/model/v1beta1/template.pb.go index 2c81649cb32..ac853940e78 100644 --- a/mixer/adapter/model/v1beta1/template.pb.go +++ b/mixer/adapter/model/v1beta1/template.pb.go @@ -3,29 +3,63 @@ package v1beta1 -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" - -import strings "strings" -import reflect "reflect" - -import io "io" +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + reflect "reflect" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf -// Template provides the details of a mixer template. +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +// Template provides the details of a Mixer template. type Template struct { // Base64 encoded proto descriptor of the template. Descriptor_ string `protobuf:"bytes,1,opt,name=descriptor,proto3" json:"descriptor,omitempty"` } -func (m *Template) Reset() { *m = Template{} } -func (*Template) ProtoMessage() {} -func (*Template) Descriptor() ([]byte, []int) { return fileDescriptorTemplate, []int{0} } +func (m *Template) Reset() { *m = Template{} } +func (*Template) ProtoMessage() {} +func (*Template) Descriptor() ([]byte, []int) { + return fileDescriptor_bfb51c5f8ecd0171, []int{0} +} +func (m *Template) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Template) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Template.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Template) XXX_Merge(src proto.Message) { + xxx_messageInfo_Template.Merge(m, src) +} +func (m *Template) XXX_Size() int { + return m.Size() +} +func (m *Template) XXX_DiscardUnknown() { + xxx_messageInfo_Template.DiscardUnknown(m) +} + +var xxx_messageInfo_Template proto.InternalMessageInfo func (m *Template) GetDescriptor_() string { if m != nil { @@ -37,6 +71,28 @@ func (m *Template) GetDescriptor_() string { func init() { proto.RegisterType((*Template)(nil), "istio.mixer.adapter.model.v1beta1.Template") } + +func init() { + proto.RegisterFile("mixer/adapter/model/v1beta1/template.proto", fileDescriptor_bfb51c5f8ecd0171) +} + +var fileDescriptor_bfb51c5f8ecd0171 = []byte{ + // 193 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0xca, 0xcd, 0xac, 0x48, + 0x2d, 0xd2, 0x4f, 0x4c, 0x49, 0x2c, 0x28, 0x49, 0x2d, 0xd2, 0xcf, 0xcd, 0x4f, 0x49, 0xcd, 0xd1, + 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xd4, 0x2f, 0x49, 0xcd, 0x2d, 0xc8, 0x49, 0x2c, 0x49, + 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x52, 0xcc, 0x2c, 0x2e, 0xc9, 0xcc, 0xd7, 0x03, 0xeb, + 0xd0, 0x83, 0xea, 0xd0, 0x03, 0xeb, 0xd0, 0x83, 0xea, 0x50, 0xd2, 0xe2, 0xe2, 0x08, 0x81, 0x6a, + 0x12, 0x92, 0xe3, 0xe2, 0x4a, 0x49, 0x2d, 0x4e, 0x2e, 0xca, 0x2c, 0x28, 0xc9, 0x2f, 0x92, 0x60, + 0x54, 0x60, 0xd4, 0xe0, 0x0c, 0x42, 0x12, 0x71, 0x8a, 0xbb, 0xf0, 0x50, 0x8e, 0xe1, 0xc6, 0x43, + 0x39, 0x86, 0x0f, 0x0f, 0xe5, 0x18, 0x1b, 0x1e, 0xc9, 0x31, 0xae, 0x78, 0x24, 0xc7, 0x78, 0xe2, + 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0xbe, 0x78, 0x24, 0xc7, 0xf0, + 0xe1, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, + 0x10, 0xa5, 0x01, 0x71, 0x44, 0x66, 0xbe, 0x7e, 0x62, 0x41, 0xa6, 0x3e, 0x1e, 0xd7, 0x27, 0xb1, + 0x81, 0x5d, 0x6d, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x3a, 0xe9, 0x16, 0x20, 0xe3, 0x00, 0x00, + 0x00, +} + func (this *Template) Equal(that interface{}) bool { if that == nil { return this == nil @@ -113,6 +169,9 @@ func encodeVarintTemplate(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *Template) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Descriptor_) @@ -168,7 +227,7 @@ func (m *Template) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -196,7 +255,7 @@ func (m *Template) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -206,6 +265,9 @@ func (m *Template) Unmarshal(dAtA []byte) error { return ErrInvalidLengthTemplate } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTemplate + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -220,6 +282,9 @@ func (m *Template) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthTemplate } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthTemplate + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -286,10 +351,13 @@ func skipTemplate(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthTemplate } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthTemplate + } return iNdEx, nil case 3: for { @@ -318,6 +386,9 @@ func skipTemplate(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthTemplate + } } return iNdEx, nil case 4: @@ -336,21 +407,3 @@ var ( ErrInvalidLengthTemplate = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowTemplate = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("mixer/adapter/model/v1beta1/template.proto", fileDescriptorTemplate) } - -var fileDescriptorTemplate = []byte{ - // 185 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0xca, 0xcd, 0xac, 0x48, - 0x2d, 0xd2, 0x4f, 0x4c, 0x49, 0x2c, 0x28, 0x49, 0x2d, 0xd2, 0xcf, 0xcd, 0x4f, 0x49, 0xcd, 0xd1, - 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xd4, 0x2f, 0x49, 0xcd, 0x2d, 0xc8, 0x49, 0x2c, 0x49, - 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x52, 0xcc, 0x2c, 0x2e, 0xc9, 0xcc, 0xd7, 0x03, 0xeb, - 0xd0, 0x83, 0xea, 0xd0, 0x03, 0xeb, 0xd0, 0x83, 0xea, 0x50, 0xd2, 0xe2, 0xe2, 0x08, 0x81, 0x6a, - 0x12, 0x92, 0xe3, 0xe2, 0x4a, 0x49, 0x2d, 0x4e, 0x2e, 0xca, 0x2c, 0x28, 0xc9, 0x2f, 0x92, 0x60, - 0x54, 0x60, 0xd4, 0xe0, 0x0c, 0x42, 0x12, 0x71, 0x0a, 0xbb, 0xf0, 0x50, 0x8e, 0xe1, 0xc6, 0x43, - 0x39, 0x86, 0x0f, 0x0f, 0xe5, 0x18, 0x1b, 0x1e, 0xc9, 0x31, 0xae, 0x78, 0x24, 0xc7, 0x78, 0xe2, - 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0xbe, 0x78, 0x24, 0xc7, 0xf0, - 0xe1, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x51, 0x1a, 0x10, 0xcb, 0x33, 0xf3, 0xf5, 0x13, - 0x0b, 0x32, 0xf5, 0xf1, 0xb8, 0x3a, 0x89, 0x0d, 0xec, 0x5a, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, - 0xff, 0xf1, 0x57, 0x3e, 0x72, 0xdb, 0x00, 0x00, 0x00, -} diff --git a/mixer/adapter/model/v1beta1/template.proto b/mixer/adapter/model/v1beta1/template.proto index 59d2b7381dc..935e232b028 100644 --- a/mixer/adapter/model/v1beta1/template.proto +++ b/mixer/adapter/model/v1beta1/template.proto @@ -18,7 +18,7 @@ package istio.mixer.adapter.model.v1beta1; option go_package="istio.io/api/mixer/adapter/model/v1beta1"; -// Template provides the details of a mixer template. +// Template provides the details of a Mixer template. message Template { // Base64 encoded proto descriptor of the template. string descriptor = 1; diff --git a/mixer/v1/attributes.pb.go b/mixer/v1/attributes.pb.go index 4543320353b..af3a17af5bf 100644 --- a/mixer/v1/attributes.pb.go +++ b/mixer/v1/attributes.pb.go @@ -1,44 +1,22 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: mixer/v1/attributes.proto -/* - Package v1 is a generated protocol buffer package. - - It is generated from these files: - mixer/v1/attributes.proto - mixer/v1/mixer.proto - - It has these top-level messages: - Attributes - CompressedAttributes - StringMap - CheckRequest - CheckResponse - ReferencedAttributes - HeaderOperation - RouteDirective - ReportRequest - ReportResponse -*/ package v1 -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "github.com/gogo/protobuf/gogoproto" -import google_protobuf1 "github.com/gogo/protobuf/types" -import google_protobuf2 "github.com/gogo/protobuf/types" - -import time "time" - -import binary "encoding/binary" -import types "github.com/gogo/protobuf/types" - -import strings "strings" -import reflect "reflect" -import sortkeys "github.com/gogo/protobuf/sortkeys" - -import io "io" +import ( + encoding_binary "encoding/binary" + fmt "fmt" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" + github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" + types "github.com/gogo/protobuf/types" + io "io" + math "math" + reflect "reflect" + strings "strings" + time "time" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -89,12 +67,40 @@ const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package // 3) Forward attributes from client proxy to server proxy for HTTP requests. type Attributes struct { // A map of attribute name to its value. - Attributes map[string]*Attributes_AttributeValue `protobuf:"bytes,1,rep,name=attributes" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"` + Attributes map[string]*Attributes_AttributeValue `protobuf:"bytes,1,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *Attributes) Reset() { *m = Attributes{} } -func (*Attributes) ProtoMessage() {} -func (*Attributes) Descriptor() ([]byte, []int) { return fileDescriptorAttributes, []int{0} } +func (m *Attributes) Reset() { *m = Attributes{} } +func (*Attributes) ProtoMessage() {} +func (*Attributes) Descriptor() ([]byte, []int) { + return fileDescriptor_6504964367320bd3, []int{0} +} +func (m *Attributes) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Attributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Attributes.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Attributes) XXX_Merge(src proto.Message) { + xxx_messageInfo_Attributes.Merge(m, src) +} +func (m *Attributes) XXX_Size() int { + return m.Size() +} +func (m *Attributes) XXX_DiscardUnknown() { + xxx_messageInfo_Attributes.DiscardUnknown(m) +} + +var xxx_messageInfo_Attributes proto.InternalMessageInfo // Specifies one attribute value with different type. type Attributes_AttributeValue struct { @@ -115,8 +121,34 @@ type Attributes_AttributeValue struct { func (m *Attributes_AttributeValue) Reset() { *m = Attributes_AttributeValue{} } func (*Attributes_AttributeValue) ProtoMessage() {} func (*Attributes_AttributeValue) Descriptor() ([]byte, []int) { - return fileDescriptorAttributes, []int{0, 1} + return fileDescriptor_6504964367320bd3, []int{0, 1} +} +func (m *Attributes_AttributeValue) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) } +func (m *Attributes_AttributeValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Attributes_AttributeValue.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Attributes_AttributeValue) XXX_Merge(src proto.Message) { + xxx_messageInfo_Attributes_AttributeValue.Merge(m, src) +} +func (m *Attributes_AttributeValue) XXX_Size() int { + return m.Size() +} +func (m *Attributes_AttributeValue) XXX_DiscardUnknown() { + xxx_messageInfo_Attributes_AttributeValue.DiscardUnknown(m) +} + +var xxx_messageInfo_Attributes_AttributeValue proto.InternalMessageInfo type isAttributes_AttributeValue_Value interface { isAttributes_AttributeValue_Value() @@ -140,13 +172,13 @@ type Attributes_AttributeValue_BytesValue struct { BytesValue []byte `protobuf:"bytes,6,opt,name=bytes_value,json=bytesValue,proto3,oneof"` } type Attributes_AttributeValue_TimestampValue struct { - TimestampValue *google_protobuf2.Timestamp `protobuf:"bytes,7,opt,name=timestamp_value,json=timestampValue,oneof"` + TimestampValue *types.Timestamp `protobuf:"bytes,7,opt,name=timestamp_value,json=timestampValue,proto3,oneof"` } type Attributes_AttributeValue_DurationValue struct { - DurationValue *google_protobuf1.Duration `protobuf:"bytes,8,opt,name=duration_value,json=durationValue,oneof"` + DurationValue *types.Duration `protobuf:"bytes,8,opt,name=duration_value,json=durationValue,proto3,oneof"` } type Attributes_AttributeValue_StringMapValue struct { - StringMapValue *Attributes_StringMap `protobuf:"bytes,9,opt,name=string_map_value,json=stringMapValue,oneof"` + StringMapValue *Attributes_StringMap `protobuf:"bytes,9,opt,name=string_map_value,json=stringMapValue,proto3,oneof"` } func (*Attributes_AttributeValue_StringValue) isAttributes_AttributeValue_Value() {} @@ -200,14 +232,14 @@ func (m *Attributes_AttributeValue) GetBytesValue() []byte { return nil } -func (m *Attributes_AttributeValue) GetTimestampValue() *google_protobuf2.Timestamp { +func (m *Attributes_AttributeValue) GetTimestampValue() *types.Timestamp { if x, ok := m.GetValue().(*Attributes_AttributeValue_TimestampValue); ok { return x.TimestampValue } return nil } -func (m *Attributes_AttributeValue) GetDurationValue() *google_protobuf1.Duration { +func (m *Attributes_AttributeValue) GetDurationValue() *types.Duration { if x, ok := m.GetValue().(*Attributes_AttributeValue_DurationValue); ok { return x.DurationValue } @@ -322,7 +354,7 @@ func _Attributes_AttributeValue_OneofUnmarshaler(msg proto.Message, tag, wire in if wire != proto.WireBytes { return true, proto.ErrInternalBadWireType } - msg := new(google_protobuf2.Timestamp) + msg := new(types.Timestamp) err := b.DecodeMessage(msg) m.Value = &Attributes_AttributeValue_TimestampValue{msg} return true, err @@ -330,7 +362,7 @@ func _Attributes_AttributeValue_OneofUnmarshaler(msg proto.Message, tag, wire in if wire != proto.WireBytes { return true, proto.ErrInternalBadWireType } - msg := new(google_protobuf1.Duration) + msg := new(types.Duration) err := b.DecodeMessage(msg) m.Value = &Attributes_AttributeValue_DurationValue{msg} return true, err @@ -352,35 +384,35 @@ func _Attributes_AttributeValue_OneofSizer(msg proto.Message) (n int) { // value switch x := m.Value.(type) { case *Attributes_AttributeValue_StringValue: - n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.StringValue))) n += len(x.StringValue) case *Attributes_AttributeValue_Int64Value: - n += proto.SizeVarint(3<<3 | proto.WireVarint) + n += 1 // tag and wire n += proto.SizeVarint(uint64(x.Int64Value)) case *Attributes_AttributeValue_DoubleValue: - n += proto.SizeVarint(4<<3 | proto.WireFixed64) + n += 1 // tag and wire n += 8 case *Attributes_AttributeValue_BoolValue: - n += proto.SizeVarint(5<<3 | proto.WireVarint) + n += 1 // tag and wire n += 1 case *Attributes_AttributeValue_BytesValue: - n += proto.SizeVarint(6<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.BytesValue))) n += len(x.BytesValue) case *Attributes_AttributeValue_TimestampValue: s := proto.Size(x.TimestampValue) - n += proto.SizeVarint(7<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Attributes_AttributeValue_DurationValue: s := proto.Size(x.DurationValue) - n += proto.SizeVarint(8<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Attributes_AttributeValue_StringMapValue: s := proto.Size(x.StringMapValue) - n += proto.SizeVarint(9<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case nil: @@ -393,15 +425,41 @@ func _Attributes_AttributeValue_OneofSizer(msg proto.Message) (n int) { // Defines a string map. type Attributes_StringMap struct { // Holds a set of name/value pairs. - Entries map[string]string `protobuf:"bytes,1,rep,name=entries" json:"entries,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Entries map[string]string `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (m *Attributes_StringMap) Reset() { *m = Attributes_StringMap{} } func (*Attributes_StringMap) ProtoMessage() {} func (*Attributes_StringMap) Descriptor() ([]byte, []int) { - return fileDescriptorAttributes, []int{0, 2} + return fileDescriptor_6504964367320bd3, []int{0, 2} +} +func (m *Attributes_StringMap) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Attributes_StringMap) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Attributes_StringMap.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Attributes_StringMap) XXX_Merge(src proto.Message) { + xxx_messageInfo_Attributes_StringMap.Merge(m, src) +} +func (m *Attributes_StringMap) XXX_Size() int { + return m.Size() +} +func (m *Attributes_StringMap) XXX_DiscardUnknown() { + xxx_messageInfo_Attributes_StringMap.DiscardUnknown(m) } +var xxx_messageInfo_Attributes_StringMap proto.InternalMessageInfo + // Defines a list of attributes in compressed format optimized for transport. // Within this message, strings are referenced using integer indices into // one of two string dictionaries. Positive integers index into the global @@ -411,47 +469,172 @@ func (*Attributes_StringMap) Descriptor() ([]byte, []int) { // configuration. type CompressedAttributes struct { // The message-level dictionary. - Words []string `protobuf:"bytes,1,rep,name=words" json:"words,omitempty"` + Words []string `protobuf:"bytes,1,rep,name=words,proto3" json:"words,omitempty"` // Holds attributes of type STRING, DNS_NAME, EMAIL_ADDRESS, URI - Strings map[int32]int32 `protobuf:"bytes,2,rep,name=strings" json:"strings,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"zigzag32,2,opt,name=value,proto3"` + Strings map[int32]int32 `protobuf:"bytes,2,rep,name=strings,proto3" json:"strings,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"zigzag32,2,opt,name=value,proto3"` // Holds attributes of type INT64 - Int64S map[int32]int64 `protobuf:"bytes,3,rep,name=int64s" json:"int64s,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + Int64S map[int32]int64 `protobuf:"bytes,3,rep,name=int64s,proto3" json:"int64s,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // Holds attributes of type DOUBLE - Doubles map[int32]float64 `protobuf:"bytes,4,rep,name=doubles" json:"doubles,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"` + Doubles map[int32]float64 `protobuf:"bytes,4,rep,name=doubles,proto3" json:"doubles,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"` // Holds attributes of type BOOL - Bools map[int32]bool `protobuf:"bytes,5,rep,name=bools" json:"bools,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + Bools map[int32]bool `protobuf:"bytes,5,rep,name=bools,proto3" json:"bools,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // Holds attributes of type TIMESTAMP - Timestamps map[int32]time.Time `protobuf:"bytes,6,rep,name=timestamps,stdtime" json:"timestamps" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"` + Timestamps map[int32]time.Time `protobuf:"bytes,6,rep,name=timestamps,proto3,stdtime" json:"timestamps" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Holds attributes of type DURATION - Durations map[int32]time.Duration `protobuf:"bytes,7,rep,name=durations,stdduration" json:"durations" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"` + Durations map[int32]time.Duration `protobuf:"bytes,7,rep,name=durations,proto3,stdduration" json:"durations" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Holds attributes of type BYTES - Bytes map[int32][]byte `protobuf:"bytes,8,rep,name=bytes" json:"bytes,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Bytes map[int32][]byte `protobuf:"bytes,8,rep,name=bytes,proto3" json:"bytes,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Holds attributes of type STRING_MAP - StringMaps map[int32]StringMap `protobuf:"bytes,9,rep,name=string_maps,json=stringMaps" json:"string_maps" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"` + StringMaps map[int32]StringMap `protobuf:"bytes,9,rep,name=string_maps,json=stringMaps,proto3" json:"string_maps" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *CompressedAttributes) Reset() { *m = CompressedAttributes{} } -func (*CompressedAttributes) ProtoMessage() {} -func (*CompressedAttributes) Descriptor() ([]byte, []int) { return fileDescriptorAttributes, []int{1} } +func (m *CompressedAttributes) Reset() { *m = CompressedAttributes{} } +func (*CompressedAttributes) ProtoMessage() {} +func (*CompressedAttributes) Descriptor() ([]byte, []int) { + return fileDescriptor_6504964367320bd3, []int{1} +} +func (m *CompressedAttributes) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CompressedAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CompressedAttributes.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CompressedAttributes) XXX_Merge(src proto.Message) { + xxx_messageInfo_CompressedAttributes.Merge(m, src) +} +func (m *CompressedAttributes) XXX_Size() int { + return m.Size() +} +func (m *CompressedAttributes) XXX_DiscardUnknown() { + xxx_messageInfo_CompressedAttributes.DiscardUnknown(m) +} + +var xxx_messageInfo_CompressedAttributes proto.InternalMessageInfo // A map of string to string. The keys and values in this map are dictionary // indices (see the [Attributes][istio.mixer.v1.CompressedAttributes] message for an explanation) type StringMap struct { // Holds a set of name/value pairs. - Entries map[int32]int32 `protobuf:"bytes,1,rep,name=entries" json:"entries,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"zigzag32,2,opt,name=value,proto3"` + Entries map[int32]int32 `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"zigzag32,2,opt,name=value,proto3"` } -func (m *StringMap) Reset() { *m = StringMap{} } -func (*StringMap) ProtoMessage() {} -func (*StringMap) Descriptor() ([]byte, []int) { return fileDescriptorAttributes, []int{2} } +func (m *StringMap) Reset() { *m = StringMap{} } +func (*StringMap) ProtoMessage() {} +func (*StringMap) Descriptor() ([]byte, []int) { + return fileDescriptor_6504964367320bd3, []int{2} +} +func (m *StringMap) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *StringMap) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_StringMap.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *StringMap) XXX_Merge(src proto.Message) { + xxx_messageInfo_StringMap.Merge(m, src) +} +func (m *StringMap) XXX_Size() int { + return m.Size() +} +func (m *StringMap) XXX_DiscardUnknown() { + xxx_messageInfo_StringMap.DiscardUnknown(m) +} + +var xxx_messageInfo_StringMap proto.InternalMessageInfo func init() { proto.RegisterType((*Attributes)(nil), "istio.mixer.v1.Attributes") + proto.RegisterMapType((map[string]*Attributes_AttributeValue)(nil), "istio.mixer.v1.Attributes.AttributesEntry") proto.RegisterType((*Attributes_AttributeValue)(nil), "istio.mixer.v1.Attributes.AttributeValue") proto.RegisterType((*Attributes_StringMap)(nil), "istio.mixer.v1.Attributes.StringMap") + proto.RegisterMapType((map[string]string)(nil), "istio.mixer.v1.Attributes.StringMap.EntriesEntry") proto.RegisterType((*CompressedAttributes)(nil), "istio.mixer.v1.CompressedAttributes") + proto.RegisterMapType((map[int32]bool)(nil), "istio.mixer.v1.CompressedAttributes.BoolsEntry") + proto.RegisterMapType((map[int32][]byte)(nil), "istio.mixer.v1.CompressedAttributes.BytesEntry") + proto.RegisterMapType((map[int32]float64)(nil), "istio.mixer.v1.CompressedAttributes.DoublesEntry") + proto.RegisterMapType((map[int32]time.Duration)(nil), "istio.mixer.v1.CompressedAttributes.DurationsEntry") + proto.RegisterMapType((map[int32]int64)(nil), "istio.mixer.v1.CompressedAttributes.Int64sEntry") + proto.RegisterMapType((map[int32]StringMap)(nil), "istio.mixer.v1.CompressedAttributes.StringMapsEntry") + proto.RegisterMapType((map[int32]int32)(nil), "istio.mixer.v1.CompressedAttributes.StringsEntry") + proto.RegisterMapType((map[int32]time.Time)(nil), "istio.mixer.v1.CompressedAttributes.TimestampsEntry") proto.RegisterType((*StringMap)(nil), "istio.mixer.v1.StringMap") + proto.RegisterMapType((map[int32]int32)(nil), "istio.mixer.v1.StringMap.EntriesEntry") } + +func init() { proto.RegisterFile("mixer/v1/attributes.proto", fileDescriptor_6504964367320bd3) } + +var fileDescriptor_6504964367320bd3 = []byte{ + // 815 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x96, 0xcd, 0x6f, 0xd3, 0x48, + 0x18, 0xc6, 0x67, 0x9a, 0xe6, 0xc3, 0x6f, 0xb2, 0x49, 0x6b, 0x65, 0x25, 0x37, 0x87, 0x49, 0xb6, + 0xbb, 0x5a, 0x65, 0xf7, 0x60, 0xf7, 0x4b, 0xa8, 0xf4, 0x02, 0x84, 0x46, 0x0a, 0x20, 0x24, 0x64, + 0x10, 0x5f, 0x95, 0x40, 0x89, 0x62, 0x82, 0x45, 0x12, 0x47, 0x1e, 0xa7, 0x90, 0x1b, 0x12, 0x27, + 0x6e, 0x3d, 0x70, 0xe0, 0x3f, 0x80, 0x3f, 0xa5, 0xc7, 0x1e, 0x7b, 0x02, 0x92, 0x5e, 0xb8, 0x20, + 0xf5, 0xc8, 0x11, 0x79, 0x66, 0xec, 0x4c, 0x42, 0xda, 0x38, 0x37, 0x7b, 0xe6, 0x7d, 0x7e, 0x7e, + 0x66, 0xe6, 0x99, 0x37, 0x81, 0xb5, 0x8e, 0xfd, 0xc6, 0x72, 0x8d, 0xc3, 0x4d, 0xa3, 0xee, 0x79, + 0xae, 0xdd, 0xe8, 0x7b, 0x16, 0xd5, 0x7b, 0xae, 0xe3, 0x39, 0x6a, 0xd6, 0xa6, 0x9e, 0xed, 0xe8, + 0xac, 0x40, 0x3f, 0xdc, 0x2c, 0xe4, 0x5b, 0x4e, 0xcb, 0x61, 0x53, 0x86, 0xff, 0xc4, 0xab, 0x0a, + 0xa4, 0xe5, 0x38, 0xad, 0xb6, 0x65, 0xb0, 0xb7, 0x46, 0xff, 0x85, 0xd1, 0xec, 0xbb, 0x75, 0xcf, + 0x76, 0xba, 0x62, 0xbe, 0x38, 0x3d, 0xef, 0xd9, 0x1d, 0x8b, 0x7a, 0xf5, 0x4e, 0x8f, 0x17, 0xac, + 0xbf, 0x4b, 0x00, 0xdc, 0x08, 0xbf, 0xad, 0xde, 0x06, 0x18, 0x3b, 0xd1, 0x70, 0x29, 0x56, 0x4e, + 0x6f, 0xfd, 0xaf, 0x4f, 0x5a, 0xd1, 0xc7, 0xf5, 0xd2, 0x63, 0xb5, 0xeb, 0xb9, 0x03, 0x53, 0x52, + 0x17, 0x5e, 0x42, 0x6e, 0x6a, 0x5a, 0x5d, 0x81, 0xd8, 0x2b, 0x6b, 0xa0, 0xe1, 0x12, 0x2e, 0x2b, + 0xa6, 0xff, 0xa8, 0x5e, 0x83, 0xf8, 0x61, 0xbd, 0xdd, 0xb7, 0xb4, 0xa5, 0x12, 0x2e, 0xa7, 0xb7, + 0xfe, 0x8b, 0xf2, 0xad, 0x87, 0xbe, 0xc0, 0xe4, 0xba, 0xbd, 0xa5, 0x5d, 0x5c, 0xf8, 0x14, 0x83, + 0xec, 0xe4, 0xac, 0xfa, 0x37, 0x64, 0xa8, 0xe7, 0xda, 0xdd, 0xd6, 0xf3, 0x31, 0x5e, 0xa9, 0x21, + 0x33, 0xcd, 0x47, 0x79, 0xd1, 0x5f, 0x90, 0xb6, 0xbb, 0xde, 0x95, 0x1d, 0x51, 0x13, 0x2b, 0xe1, + 0x72, 0xac, 0x86, 0x4c, 0x60, 0x83, 0x21, 0xa7, 0xe9, 0xf4, 0x1b, 0x6d, 0x4b, 0xd4, 0x2c, 0x97, + 0x70, 0x19, 0xfb, 0x1c, 0x3e, 0xca, 0x8b, 0x8a, 0x00, 0x0d, 0xc7, 0x69, 0x8b, 0x92, 0x78, 0x09, + 0x97, 0x53, 0x35, 0x64, 0x2a, 0xfe, 0x58, 0xf8, 0xa1, 0xc6, 0xc0, 0xb3, 0xa8, 0xa8, 0x48, 0x94, + 0x70, 0x39, 0xe3, 0x7f, 0x88, 0x0d, 0xf2, 0x92, 0x2a, 0xe4, 0xc2, 0xb3, 0x11, 0x65, 0x49, 0xb6, + 0x25, 0x05, 0x9d, 0x9f, 0xa1, 0x1e, 0x9c, 0xa1, 0xfe, 0x20, 0xa8, 0xab, 0x21, 0x33, 0x1b, 0x8a, + 0x38, 0xa6, 0x02, 0xd9, 0x20, 0x02, 0x82, 0x92, 0x62, 0x94, 0xb5, 0xdf, 0x28, 0xfb, 0xa2, 0xac, + 0x86, 0xcc, 0x3f, 0x02, 0x09, 0x67, 0xdc, 0x83, 0x15, 0xb1, 0x77, 0x9d, 0x7a, 0xe0, 0x45, 0x61, + 0x94, 0x7f, 0x2e, 0x39, 0x9e, 0xfb, 0x4c, 0x72, 0xb7, 0xce, 0x5c, 0xd1, 0xe0, 0x85, 0x11, 0x2b, + 0x49, 0x71, 0xca, 0x85, 0x0f, 0x18, 0x94, 0xb0, 0x50, 0xbd, 0x03, 0x49, 0xab, 0xeb, 0xb9, 0x76, + 0x18, 0xb5, 0xcd, 0x28, 0x7c, 0xbd, 0xca, 0x35, 0x3c, 0x71, 0x01, 0xa1, 0xb0, 0x07, 0x19, 0x79, + 0x62, 0x46, 0xd6, 0xf2, 0x72, 0xd6, 0x14, 0x29, 0x40, 0xeb, 0x3f, 0x14, 0xc8, 0xdf, 0x74, 0x3a, + 0x3d, 0xd7, 0xa2, 0xd4, 0x6a, 0x4a, 0xf7, 0x21, 0x0f, 0xf1, 0xd7, 0x8e, 0xdb, 0xe4, 0xfe, 0x14, + 0x93, 0xbf, 0xf8, 0xbe, 0xf9, 0x02, 0xa9, 0xb6, 0x34, 0xdb, 0xf7, 0x2c, 0x98, 0x58, 0x41, 0xe0, + 0x5b, 0x10, 0xd4, 0x1a, 0x24, 0x58, 0xde, 0xa8, 0x16, 0x63, 0xac, 0x8d, 0x48, 0xac, 0x5b, 0x4c, + 0xc2, 0x51, 0x42, 0xef, 0xdb, 0xe2, 0xa9, 0xa4, 0xda, 0xf2, 0x02, 0xb6, 0xf6, 0xb9, 0x46, 0xd8, + 0x12, 0x04, 0xb5, 0x0a, 0x71, 0x3f, 0xbf, 0x54, 0x8b, 0x33, 0x94, 0x11, 0x09, 0x55, 0xf1, 0x15, + 0x1c, 0xc4, 0xd5, 0xea, 0x33, 0x80, 0x30, 0xa1, 0x54, 0x4b, 0x30, 0xd6, 0x4e, 0x24, 0x56, 0x98, + 0x72, 0x0e, 0xac, 0xa4, 0x8e, 0xbf, 0x14, 0xd1, 0xd1, 0xd7, 0x22, 0x36, 0x25, 0xa2, 0x7a, 0x00, + 0x4a, 0x10, 0x5e, 0xaa, 0x25, 0x19, 0x7e, 0x3b, 0xda, 0xaa, 0x03, 0x95, 0x44, 0xff, 0xe8, 0xd3, + 0xc7, 0x3c, 0xb6, 0x07, 0xfe, 0x0d, 0xd5, 0x52, 0x8b, 0xec, 0xc1, 0x20, 0xec, 0x86, 0x5c, 0xad, + 0x1e, 0x40, 0x7a, 0x7c, 0x9f, 0xa8, 0xa6, 0x2c, 0xb0, 0x09, 0x61, 0xe8, 0x85, 0xcd, 0x65, 0xdf, + 0xa6, 0x09, 0xe1, 0xf5, 0x62, 0xb1, 0x97, 0x73, 0x25, 0xc7, 0x7e, 0x75, 0x46, 0xec, 0x57, 0xe5, + 0xbe, 0x79, 0x15, 0xd2, 0x52, 0x8e, 0xe6, 0x49, 0x63, 0xb2, 0x74, 0x0f, 0x32, 0x72, 0x6e, 0xe6, + 0x69, 0xb1, 0xac, 0xdd, 0x05, 0x18, 0x07, 0x65, 0x9e, 0x32, 0x25, 0x2b, 0x9f, 0x40, 0x6e, 0x2a, + 0x16, 0x33, 0xe4, 0x1b, 0x93, 0x3f, 0x29, 0x97, 0xf4, 0x4f, 0x19, 0xfd, 0x08, 0xb2, 0x93, 0x91, + 0x98, 0x41, 0x36, 0x26, 0xc9, 0x17, 0xf7, 0xd4, 0xe9, 0xd5, 0x0e, 0xbc, 0x88, 0xfb, 0x94, 0x91, + 0x95, 0x8f, 0x21, 0x37, 0x75, 0xfe, 0x51, 0x3c, 0x4d, 0xc5, 0x2a, 0x24, 0xc8, 0xfd, 0xee, 0xfd, + 0x44, 0x1b, 0xbe, 0x3e, 0xdd, 0x86, 0xff, 0xbd, 0x10, 0xb2, 0x78, 0xef, 0x9d, 0x17, 0xc2, 0x8a, + 0x79, 0x3c, 0x24, 0xe8, 0x64, 0x48, 0xd0, 0xe9, 0x90, 0xa0, 0xf3, 0x21, 0x41, 0x6f, 0x47, 0x04, + 0x7f, 0x1e, 0x11, 0x74, 0x3c, 0x22, 0xf8, 0x64, 0x44, 0xf0, 0xb7, 0x11, 0xc1, 0xdf, 0x47, 0x04, + 0x9d, 0x8f, 0x08, 0x3e, 0x3a, 0x23, 0xe8, 0xe4, 0x8c, 0xa0, 0xd3, 0x33, 0x82, 0x9e, 0xfe, 0xc9, + 0x5d, 0xda, 0x8e, 0x51, 0xef, 0xd9, 0x46, 0xf0, 0x57, 0xea, 0x27, 0xc6, 0x8d, 0x04, 0x3b, 0x91, + 0xed, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb3, 0xaa, 0x85, 0xf6, 0x60, 0x09, 0x00, 0x00, +} + func (m *Attributes) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -542,7 +725,7 @@ func (m *Attributes_AttributeValue_DoubleValue) MarshalTo(dAtA []byte) (int, err i := 0 dAtA[i] = 0x21 i++ - binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.DoubleValue)))) + encoding_binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.DoubleValue)))) i += 8 return i, nil } @@ -717,7 +900,7 @@ func (m *CompressedAttributes) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintAttributes(dAtA, i, uint64((uint32(k)<<1)^uint32((k>>31)))) dAtA[i] = 0x11 i++ - binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(v)))) + encoding_binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(v)))) i += 8 } } @@ -748,7 +931,7 @@ func (m *CompressedAttributes) MarshalTo(dAtA []byte) (int, error) { v := m.Timestamps[k] msgSize := 0 if (&v) != nil { - msgSize = types.SizeOfStdTime(*(&v)) + msgSize = github_com_gogo_protobuf_types.SizeOfStdTime(*(&v)) msgSize += 1 + sovAttributes(uint64(msgSize)) } mapSize := 1 + sozAttributes(uint64(k)) + msgSize @@ -758,8 +941,8 @@ func (m *CompressedAttributes) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintAttributes(dAtA, i, uint64((uint32(k)<<1)^uint32((k>>31)))) dAtA[i] = 0x12 i++ - i = encodeVarintAttributes(dAtA, i, uint64(types.SizeOfStdTime(*(&v)))) - n6, err := types.StdTimeMarshalTo(*(&v), dAtA[i:]) + i = encodeVarintAttributes(dAtA, i, uint64(github_com_gogo_protobuf_types.SizeOfStdTime(*(&v)))) + n6, err := github_com_gogo_protobuf_types.StdTimeMarshalTo(*(&v), dAtA[i:]) if err != nil { return 0, err } @@ -773,7 +956,7 @@ func (m *CompressedAttributes) MarshalTo(dAtA []byte) (int, error) { v := m.Durations[k] msgSize := 0 if (&v) != nil { - msgSize = types.SizeOfStdDuration(*(&v)) + msgSize = github_com_gogo_protobuf_types.SizeOfStdDuration(*(&v)) msgSize += 1 + sovAttributes(uint64(msgSize)) } mapSize := 1 + sozAttributes(uint64(k)) + msgSize @@ -783,8 +966,8 @@ func (m *CompressedAttributes) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintAttributes(dAtA, i, uint64((uint32(k)<<1)^uint32((k>>31)))) dAtA[i] = 0x12 i++ - i = encodeVarintAttributes(dAtA, i, uint64(types.SizeOfStdDuration(*(&v)))) - n7, err := types.StdDurationMarshalTo(*(&v), dAtA[i:]) + i = encodeVarintAttributes(dAtA, i, uint64(github_com_gogo_protobuf_types.SizeOfStdDuration(*(&v)))) + n7, err := github_com_gogo_protobuf_types.StdDurationMarshalTo(*(&v), dAtA[i:]) if err != nil { return 0, err } @@ -884,6 +1067,9 @@ func encodeVarintAttributes(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *Attributes) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Attributes) > 0 { @@ -903,6 +1089,9 @@ func (m *Attributes) Size() (n int) { } func (m *Attributes_AttributeValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Value != nil { @@ -912,6 +1101,9 @@ func (m *Attributes_AttributeValue) Size() (n int) { } func (m *Attributes_AttributeValue_StringValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.StringValue) @@ -919,24 +1111,36 @@ func (m *Attributes_AttributeValue_StringValue) Size() (n int) { return n } func (m *Attributes_AttributeValue_Int64Value) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l n += 1 + sovAttributes(uint64(m.Int64Value)) return n } func (m *Attributes_AttributeValue_DoubleValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l n += 9 return n } func (m *Attributes_AttributeValue_BoolValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l n += 2 return n } func (m *Attributes_AttributeValue_BytesValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.BytesValue != nil { @@ -946,6 +1150,9 @@ func (m *Attributes_AttributeValue_BytesValue) Size() (n int) { return n } func (m *Attributes_AttributeValue_TimestampValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.TimestampValue != nil { @@ -955,6 +1162,9 @@ func (m *Attributes_AttributeValue_TimestampValue) Size() (n int) { return n } func (m *Attributes_AttributeValue_DurationValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.DurationValue != nil { @@ -964,6 +1174,9 @@ func (m *Attributes_AttributeValue_DurationValue) Size() (n int) { return n } func (m *Attributes_AttributeValue_StringMapValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.StringMapValue != nil { @@ -973,6 +1186,9 @@ func (m *Attributes_AttributeValue_StringMapValue) Size() (n int) { return n } func (m *Attributes_StringMap) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Entries) > 0 { @@ -987,6 +1203,9 @@ func (m *Attributes_StringMap) Size() (n int) { } func (m *CompressedAttributes) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Words) > 0 { @@ -1031,7 +1250,7 @@ func (m *CompressedAttributes) Size() (n int) { for k, v := range m.Timestamps { _ = k _ = v - l = types.SizeOfStdTime(v) + l = github_com_gogo_protobuf_types.SizeOfStdTime(v) mapEntrySize := 1 + sozAttributes(uint64(k)) + 1 + l + sovAttributes(uint64(l)) n += mapEntrySize + 1 + sovAttributes(uint64(mapEntrySize)) } @@ -1040,7 +1259,7 @@ func (m *CompressedAttributes) Size() (n int) { for k, v := range m.Durations { _ = k _ = v - l = types.SizeOfStdDuration(v) + l = github_com_gogo_protobuf_types.SizeOfStdDuration(v) mapEntrySize := 1 + sozAttributes(uint64(k)) + 1 + l + sovAttributes(uint64(l)) n += mapEntrySize + 1 + sovAttributes(uint64(mapEntrySize)) } @@ -1070,6 +1289,9 @@ func (m *CompressedAttributes) Size() (n int) { } func (m *StringMap) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Entries) > 0 { @@ -1104,7 +1326,7 @@ func (this *Attributes) String() string { for k, _ := range this.Attributes { keysForAttributes = append(keysForAttributes, k) } - sortkeys.Strings(keysForAttributes) + github_com_gogo_protobuf_sortkeys.Strings(keysForAttributes) mapStringForAttributes := "map[string]*Attributes_AttributeValue{" for _, k := range keysForAttributes { mapStringForAttributes += fmt.Sprintf("%v: %v,", k, this.Attributes[k]) @@ -1181,7 +1403,7 @@ func (this *Attributes_AttributeValue_TimestampValue) String() string { return "nil" } s := strings.Join([]string{`&Attributes_AttributeValue_TimestampValue{`, - `TimestampValue:` + strings.Replace(fmt.Sprintf("%v", this.TimestampValue), "Timestamp", "google_protobuf2.Timestamp", 1) + `,`, + `TimestampValue:` + strings.Replace(fmt.Sprintf("%v", this.TimestampValue), "Timestamp", "types.Timestamp", 1) + `,`, `}`, }, "") return s @@ -1191,7 +1413,7 @@ func (this *Attributes_AttributeValue_DurationValue) String() string { return "nil" } s := strings.Join([]string{`&Attributes_AttributeValue_DurationValue{`, - `DurationValue:` + strings.Replace(fmt.Sprintf("%v", this.DurationValue), "Duration", "google_protobuf1.Duration", 1) + `,`, + `DurationValue:` + strings.Replace(fmt.Sprintf("%v", this.DurationValue), "Duration", "types.Duration", 1) + `,`, `}`, }, "") return s @@ -1214,7 +1436,7 @@ func (this *Attributes_StringMap) String() string { for k, _ := range this.Entries { keysForEntries = append(keysForEntries, k) } - sortkeys.Strings(keysForEntries) + github_com_gogo_protobuf_sortkeys.Strings(keysForEntries) mapStringForEntries := "map[string]string{" for _, k := range keysForEntries { mapStringForEntries += fmt.Sprintf("%v: %v,", k, this.Entries[k]) @@ -1234,7 +1456,7 @@ func (this *CompressedAttributes) String() string { for k, _ := range this.Strings { keysForStrings = append(keysForStrings, k) } - sortkeys.Int32s(keysForStrings) + github_com_gogo_protobuf_sortkeys.Int32s(keysForStrings) mapStringForStrings := "map[int32]int32{" for _, k := range keysForStrings { mapStringForStrings += fmt.Sprintf("%v: %v,", k, this.Strings[k]) @@ -1244,7 +1466,7 @@ func (this *CompressedAttributes) String() string { for k, _ := range this.Int64S { keysForInt64S = append(keysForInt64S, k) } - sortkeys.Int32s(keysForInt64S) + github_com_gogo_protobuf_sortkeys.Int32s(keysForInt64S) mapStringForInt64S := "map[int32]int64{" for _, k := range keysForInt64S { mapStringForInt64S += fmt.Sprintf("%v: %v,", k, this.Int64S[k]) @@ -1254,7 +1476,7 @@ func (this *CompressedAttributes) String() string { for k, _ := range this.Doubles { keysForDoubles = append(keysForDoubles, k) } - sortkeys.Int32s(keysForDoubles) + github_com_gogo_protobuf_sortkeys.Int32s(keysForDoubles) mapStringForDoubles := "map[int32]float64{" for _, k := range keysForDoubles { mapStringForDoubles += fmt.Sprintf("%v: %v,", k, this.Doubles[k]) @@ -1264,7 +1486,7 @@ func (this *CompressedAttributes) String() string { for k, _ := range this.Bools { keysForBools = append(keysForBools, k) } - sortkeys.Int32s(keysForBools) + github_com_gogo_protobuf_sortkeys.Int32s(keysForBools) mapStringForBools := "map[int32]bool{" for _, k := range keysForBools { mapStringForBools += fmt.Sprintf("%v: %v,", k, this.Bools[k]) @@ -1274,7 +1496,7 @@ func (this *CompressedAttributes) String() string { for k, _ := range this.Timestamps { keysForTimestamps = append(keysForTimestamps, k) } - sortkeys.Int32s(keysForTimestamps) + github_com_gogo_protobuf_sortkeys.Int32s(keysForTimestamps) mapStringForTimestamps := "map[int32]time.Time{" for _, k := range keysForTimestamps { mapStringForTimestamps += fmt.Sprintf("%v: %v,", k, this.Timestamps[k]) @@ -1284,7 +1506,7 @@ func (this *CompressedAttributes) String() string { for k, _ := range this.Durations { keysForDurations = append(keysForDurations, k) } - sortkeys.Int32s(keysForDurations) + github_com_gogo_protobuf_sortkeys.Int32s(keysForDurations) mapStringForDurations := "map[int32]time.Duration{" for _, k := range keysForDurations { mapStringForDurations += fmt.Sprintf("%v: %v,", k, this.Durations[k]) @@ -1294,7 +1516,7 @@ func (this *CompressedAttributes) String() string { for k, _ := range this.Bytes { keysForBytes = append(keysForBytes, k) } - sortkeys.Int32s(keysForBytes) + github_com_gogo_protobuf_sortkeys.Int32s(keysForBytes) mapStringForBytes := "map[int32][]byte{" for _, k := range keysForBytes { mapStringForBytes += fmt.Sprintf("%v: %v,", k, this.Bytes[k]) @@ -1304,7 +1526,7 @@ func (this *CompressedAttributes) String() string { for k, _ := range this.StringMaps { keysForStringMaps = append(keysForStringMaps, k) } - sortkeys.Int32s(keysForStringMaps) + github_com_gogo_protobuf_sortkeys.Int32s(keysForStringMaps) mapStringForStringMaps := "map[int32]StringMap{" for _, k := range keysForStringMaps { mapStringForStringMaps += fmt.Sprintf("%v: %v,", k, this.StringMaps[k]) @@ -1332,7 +1554,7 @@ func (this *StringMap) String() string { for k, _ := range this.Entries { keysForEntries = append(keysForEntries, k) } - sortkeys.Int32s(keysForEntries) + github_com_gogo_protobuf_sortkeys.Int32s(keysForEntries) mapStringForEntries := "map[int32]int32{" for _, k := range keysForEntries { mapStringForEntries += fmt.Sprintf("%v: %v,", k, this.Entries[k]) @@ -1367,7 +1589,7 @@ func (m *Attributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1395,7 +1617,7 @@ func (m *Attributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1404,6 +1626,9 @@ func (m *Attributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAttributes + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1424,7 +1649,7 @@ func (m *Attributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1441,7 +1666,7 @@ func (m *Attributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1451,6 +1676,9 @@ func (m *Attributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthAttributes + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -1467,7 +1695,7 @@ func (m *Attributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapmsglen |= (int(b) & 0x7F) << shift + mapmsglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1476,7 +1704,7 @@ func (m *Attributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postmsgIndex := iNdEx + mapmsglen - if mapmsglen < 0 { + if postmsgIndex < 0 { return ErrInvalidLengthAttributes } if postmsgIndex > l { @@ -1513,6 +1741,9 @@ func (m *Attributes) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthAttributes } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthAttributes + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1540,7 +1771,7 @@ func (m *Attributes_AttributeValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1568,7 +1799,7 @@ func (m *Attributes_AttributeValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1578,6 +1809,9 @@ func (m *Attributes_AttributeValue) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAttributes + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1597,7 +1831,7 @@ func (m *Attributes_AttributeValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int64(b) & 0x7F) << shift + v |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -1611,7 +1845,7 @@ func (m *Attributes_AttributeValue) Unmarshal(dAtA []byte) error { if (iNdEx + 8) > l { return io.ErrUnexpectedEOF } - v = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:])) + v = uint64(encoding_binary.LittleEndian.Uint64(dAtA[iNdEx:])) iNdEx += 8 m.Value = &Attributes_AttributeValue_DoubleValue{float64(math.Float64frombits(v))} case 5: @@ -1628,7 +1862,7 @@ func (m *Attributes_AttributeValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1649,7 +1883,7 @@ func (m *Attributes_AttributeValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= (int(b) & 0x7F) << shift + byteLen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1658,6 +1892,9 @@ func (m *Attributes_AttributeValue) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthAttributes + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1679,7 +1916,7 @@ func (m *Attributes_AttributeValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1688,10 +1925,13 @@ func (m *Attributes_AttributeValue) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAttributes + } if postIndex > l { return io.ErrUnexpectedEOF } - v := &google_protobuf2.Timestamp{} + v := &types.Timestamp{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } @@ -1711,7 +1951,7 @@ func (m *Attributes_AttributeValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1720,10 +1960,13 @@ func (m *Attributes_AttributeValue) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAttributes + } if postIndex > l { return io.ErrUnexpectedEOF } - v := &google_protobuf1.Duration{} + v := &types.Duration{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } @@ -1743,7 +1986,7 @@ func (m *Attributes_AttributeValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1752,6 +1995,9 @@ func (m *Attributes_AttributeValue) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAttributes + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1770,6 +2016,9 @@ func (m *Attributes_AttributeValue) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthAttributes } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthAttributes + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1797,7 +2046,7 @@ func (m *Attributes_StringMap) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1825,7 +2074,7 @@ func (m *Attributes_StringMap) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1834,6 +2083,9 @@ func (m *Attributes_StringMap) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAttributes + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1854,7 +2106,7 @@ func (m *Attributes_StringMap) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1871,7 +2123,7 @@ func (m *Attributes_StringMap) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1881,6 +2133,9 @@ func (m *Attributes_StringMap) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthAttributes + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -1897,7 +2152,7 @@ func (m *Attributes_StringMap) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1907,6 +2162,9 @@ func (m *Attributes_StringMap) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthAttributes + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -1938,6 +2196,9 @@ func (m *Attributes_StringMap) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthAttributes } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthAttributes + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1965,7 +2226,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1993,7 +2254,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2003,6 +2264,9 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAttributes + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2022,7 +2286,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2031,6 +2295,9 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAttributes + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2051,7 +2318,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2068,7 +2335,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapkeytemp |= (int32(b) & 0x7F) << shift + mapkeytemp |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -2086,7 +2353,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapvaluetemp |= (int32(b) & 0x7F) << shift + mapvaluetemp |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -2124,7 +2391,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2133,6 +2400,9 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAttributes + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2153,7 +2423,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2170,7 +2440,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapkeytemp |= (int32(b) & 0x7F) << shift + mapkeytemp |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -2187,7 +2457,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapvalue |= (int64(b) & 0x7F) << shift + mapvalue |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -2223,7 +2493,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2232,6 +2502,9 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAttributes + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2252,7 +2525,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2269,7 +2542,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapkeytemp |= (int32(b) & 0x7F) << shift + mapkeytemp |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -2281,7 +2554,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { if (iNdEx + 8) > l { return io.ErrUnexpectedEOF } - mapvaluetemp = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:])) + mapvaluetemp = uint64(encoding_binary.LittleEndian.Uint64(dAtA[iNdEx:])) iNdEx += 8 mapvalue = math.Float64frombits(mapvaluetemp) } else { @@ -2315,7 +2588,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2324,6 +2597,9 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAttributes + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2344,7 +2620,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2361,7 +2637,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapkeytemp |= (int32(b) & 0x7F) << shift + mapkeytemp |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -2379,7 +2655,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapvaluetemp |= (int(b) & 0x7F) << shift + mapvaluetemp |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2416,7 +2692,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2425,6 +2701,9 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAttributes + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2445,7 +2724,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2462,7 +2741,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapkeytemp |= (int32(b) & 0x7F) << shift + mapkeytemp |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -2480,7 +2759,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapmsglen |= (int(b) & 0x7F) << shift + mapmsglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2489,13 +2768,13 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postmsgIndex := iNdEx + mapmsglen - if mapmsglen < 0 { + if postmsgIndex < 0 { return ErrInvalidLengthAttributes } if postmsgIndex > l { return io.ErrUnexpectedEOF } - if err := types.StdTimeUnmarshal(mapvalue, dAtA[iNdEx:postmsgIndex]); err != nil { + if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(mapvalue, dAtA[iNdEx:postmsgIndex]); err != nil { return err } iNdEx = postmsgIndex @@ -2530,7 +2809,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2539,6 +2818,9 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAttributes + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2559,7 +2841,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2576,7 +2858,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapkeytemp |= (int32(b) & 0x7F) << shift + mapkeytemp |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -2594,7 +2876,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapmsglen |= (int(b) & 0x7F) << shift + mapmsglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2603,13 +2885,13 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postmsgIndex := iNdEx + mapmsglen - if mapmsglen < 0 { + if postmsgIndex < 0 { return ErrInvalidLengthAttributes } if postmsgIndex > l { return io.ErrUnexpectedEOF } - if err := types.StdDurationUnmarshal(mapvalue, dAtA[iNdEx:postmsgIndex]); err != nil { + if err := github_com_gogo_protobuf_types.StdDurationUnmarshal(mapvalue, dAtA[iNdEx:postmsgIndex]); err != nil { return err } iNdEx = postmsgIndex @@ -2644,7 +2926,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2653,6 +2935,9 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAttributes + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2673,7 +2958,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2690,7 +2975,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapkeytemp |= (int32(b) & 0x7F) << shift + mapkeytemp |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -2708,7 +2993,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapbyteLen |= (uint64(b) & 0x7F) << shift + mapbyteLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2718,6 +3003,9 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postbytesIndex := iNdEx + intMapbyteLen + if postbytesIndex < 0 { + return ErrInvalidLengthAttributes + } if postbytesIndex > l { return io.ErrUnexpectedEOF } @@ -2755,7 +3043,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2764,6 +3052,9 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAttributes + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2784,7 +3075,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2801,7 +3092,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapkeytemp |= (int32(b) & 0x7F) << shift + mapkeytemp |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -2819,7 +3110,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapmsglen |= (int(b) & 0x7F) << shift + mapmsglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2828,7 +3119,7 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postmsgIndex := iNdEx + mapmsglen - if mapmsglen < 0 { + if postmsgIndex < 0 { return ErrInvalidLengthAttributes } if postmsgIndex > l { @@ -2865,6 +3156,9 @@ func (m *CompressedAttributes) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthAttributes } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthAttributes + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2892,7 +3186,7 @@ func (m *StringMap) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2920,7 +3214,7 @@ func (m *StringMap) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2929,6 +3223,9 @@ func (m *StringMap) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAttributes } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAttributes + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2949,7 +3246,7 @@ func (m *StringMap) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2966,7 +3263,7 @@ func (m *StringMap) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapkeytemp |= (int32(b) & 0x7F) << shift + mapkeytemp |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -2984,7 +3281,7 @@ func (m *StringMap) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapvaluetemp |= (int32(b) & 0x7F) << shift + mapvaluetemp |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -3017,6 +3314,9 @@ func (m *StringMap) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthAttributes } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthAttributes + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -3083,10 +3383,13 @@ func skipAttributes(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthAttributes } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthAttributes + } return iNdEx, nil case 3: for { @@ -3115,6 +3418,9 @@ func skipAttributes(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthAttributes + } } return iNdEx, nil case 4: @@ -3133,60 +3439,3 @@ var ( ErrInvalidLengthAttributes = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowAttributes = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("mixer/v1/attributes.proto", fileDescriptorAttributes) } - -var fileDescriptorAttributes = []byte{ - // 808 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x96, 0xcd, 0x6f, 0xd3, 0x48, - 0x18, 0xc6, 0x3d, 0x4d, 0xf3, 0xe1, 0x37, 0xd9, 0xa4, 0xb5, 0xb2, 0x92, 0x9b, 0x83, 0x93, 0xed, - 0xae, 0x56, 0x81, 0x83, 0xdd, 0x2f, 0xa1, 0xd2, 0x0b, 0x10, 0x1a, 0x29, 0x14, 0x21, 0x21, 0x83, - 0xf8, 0xaa, 0x04, 0x4a, 0x14, 0x13, 0x2c, 0x92, 0x4c, 0xe4, 0x99, 0x14, 0x72, 0x43, 0xe2, 0xc4, - 0xad, 0x07, 0x0e, 0xfc, 0x07, 0xf0, 0xa7, 0xf4, 0xd8, 0x23, 0x27, 0x20, 0xe1, 0xc2, 0x05, 0xa9, - 0x47, 0x8e, 0xc8, 0x33, 0x63, 0x67, 0x12, 0xd2, 0xc6, 0xb9, 0xd9, 0x33, 0xef, 0xf3, 0xf3, 0x33, - 0x33, 0xcf, 0xbc, 0x09, 0xac, 0x75, 0xdc, 0xd7, 0x8e, 0x67, 0x1d, 0x6d, 0x5a, 0x75, 0x4a, 0x3d, - 0xb7, 0xd1, 0xa7, 0x0e, 0x31, 0x7b, 0x1e, 0xa6, 0x58, 0xcb, 0xba, 0x84, 0xba, 0xd8, 0x64, 0x05, - 0xe6, 0xd1, 0x66, 0x21, 0xdf, 0xc2, 0x2d, 0xcc, 0xa6, 0x2c, 0xff, 0x89, 0x57, 0x15, 0x8c, 0x16, - 0xc6, 0xad, 0xb6, 0x63, 0xb1, 0xb7, 0x46, 0xff, 0xb9, 0xd5, 0xec, 0x7b, 0x75, 0xea, 0xe2, 0xae, - 0x98, 0x2f, 0x4e, 0xcf, 0x53, 0xb7, 0xe3, 0x10, 0x5a, 0xef, 0xf4, 0x78, 0xc1, 0xfa, 0xdb, 0x04, - 0xc0, 0x8d, 0xf0, 0xdb, 0xda, 0x01, 0xc0, 0xd8, 0x89, 0x8e, 0x4a, 0xb1, 0x72, 0x7a, 0xeb, 0xb2, - 0x39, 0x69, 0xc5, 0x1c, 0xd7, 0x4b, 0x8f, 0xd5, 0x2e, 0xf5, 0x06, 0xb6, 0xa4, 0x2e, 0xbc, 0x80, - 0xdc, 0xd4, 0xb4, 0xb6, 0x02, 0xb1, 0x97, 0xce, 0x40, 0x47, 0x25, 0x54, 0x56, 0x6d, 0xff, 0x51, - 0xbb, 0x06, 0xf1, 0xa3, 0x7a, 0xbb, 0xef, 0xe8, 0x4b, 0x25, 0x54, 0x4e, 0x6f, 0x5d, 0x8a, 0xf2, - 0xad, 0x07, 0xbe, 0xc0, 0xe6, 0xba, 0xbd, 0xa5, 0x5d, 0x54, 0xf8, 0x18, 0x83, 0xec, 0xe4, 0xac, - 0xf6, 0x2f, 0x64, 0x08, 0xf5, 0xdc, 0x6e, 0xeb, 0xd9, 0x18, 0xaf, 0xd6, 0x14, 0x3b, 0xcd, 0x47, - 0x79, 0xd1, 0x3f, 0x90, 0x76, 0xbb, 0xf4, 0xca, 0x8e, 0xa8, 0x89, 0x95, 0x50, 0x39, 0x56, 0x53, - 0x6c, 0x60, 0x83, 0x21, 0xa7, 0x89, 0xfb, 0x8d, 0xb6, 0x23, 0x6a, 0x96, 0x4b, 0xa8, 0x8c, 0x7c, - 0x0e, 0x1f, 0xe5, 0x45, 0x45, 0x80, 0x06, 0xc6, 0x6d, 0x51, 0x12, 0x2f, 0xa1, 0x72, 0xaa, 0xa6, - 0xd8, 0xaa, 0x3f, 0x16, 0x7e, 0xa8, 0x31, 0xa0, 0x0e, 0x11, 0x15, 0x89, 0x12, 0x2a, 0x67, 0xfc, - 0x0f, 0xb1, 0x41, 0x5e, 0x52, 0x85, 0x5c, 0x78, 0x36, 0xa2, 0x2c, 0xc9, 0xb6, 0xa4, 0x60, 0xf2, - 0x33, 0x34, 0x83, 0x33, 0x34, 0xef, 0x07, 0x75, 0x35, 0xc5, 0xce, 0x86, 0x22, 0x8e, 0xa9, 0x40, - 0x36, 0x88, 0x80, 0xa0, 0xa4, 0x18, 0x65, 0xed, 0x0f, 0xca, 0xbe, 0x28, 0xab, 0x29, 0xf6, 0x5f, - 0x81, 0x84, 0x33, 0xee, 0xc2, 0x8a, 0xd8, 0xbb, 0x4e, 0x3d, 0xf0, 0xa2, 0x32, 0xca, 0x7f, 0x17, - 0x1c, 0xcf, 0x3d, 0x26, 0xb9, 0x53, 0x67, 0xae, 0x48, 0xf0, 0xc2, 0x88, 0x95, 0xa4, 0x38, 0xe5, - 0xc2, 0x7b, 0x04, 0x6a, 0x58, 0xa8, 0xdd, 0x86, 0xa4, 0xd3, 0xa5, 0x9e, 0x1b, 0x46, 0x6d, 0x33, - 0x0a, 0xdf, 0xac, 0x72, 0x0d, 0x4f, 0x5c, 0x40, 0x28, 0xec, 0x41, 0x46, 0x9e, 0x98, 0x91, 0xb5, - 0xbc, 0x9c, 0x35, 0x55, 0x0a, 0xd0, 0xfa, 0x4f, 0x15, 0xf2, 0x37, 0x71, 0xa7, 0xe7, 0x39, 0x84, - 0x38, 0x4d, 0xe9, 0x3e, 0xe4, 0x21, 0xfe, 0x0a, 0x7b, 0x4d, 0xee, 0x4f, 0xb5, 0xf9, 0x8b, 0xef, - 0x9b, 0x2f, 0x90, 0xe8, 0x4b, 0xb3, 0x7d, 0xcf, 0x82, 0x89, 0x15, 0x04, 0xbe, 0x05, 0x41, 0xab, - 0x41, 0x82, 0xe5, 0x8d, 0xe8, 0x31, 0xc6, 0xda, 0x88, 0xc4, 0xba, 0xc5, 0x24, 0x1c, 0x25, 0xf4, - 0xbe, 0x2d, 0x9e, 0x4a, 0xa2, 0x2f, 0x2f, 0x60, 0x6b, 0x9f, 0x6b, 0x84, 0x2d, 0x41, 0xd0, 0xaa, - 0x10, 0xf7, 0xf3, 0x4b, 0xf4, 0x38, 0x43, 0x59, 0x91, 0x50, 0x15, 0x5f, 0xc1, 0x41, 0x5c, 0xad, - 0x3d, 0x05, 0x08, 0x13, 0x4a, 0xf4, 0x04, 0x63, 0xed, 0x44, 0x62, 0x85, 0x29, 0xe7, 0xc0, 0x4a, - 0xea, 0xe4, 0x4b, 0x51, 0x39, 0xfe, 0x5a, 0x44, 0xb6, 0x44, 0xd4, 0x0e, 0x41, 0x0d, 0xc2, 0x4b, - 0xf4, 0x24, 0xc3, 0x6f, 0x47, 0x5b, 0x75, 0xa0, 0x92, 0xe8, 0x1f, 0x7c, 0xfa, 0x98, 0xc7, 0xf6, - 0xc0, 0xbf, 0xa1, 0x7a, 0x6a, 0x91, 0x3d, 0x18, 0x84, 0xdd, 0x90, 0xab, 0xb5, 0x43, 0x48, 0x8f, - 0xef, 0x13, 0xd1, 0xd5, 0x05, 0x36, 0x21, 0x0c, 0xbd, 0xb0, 0xb9, 0xec, 0xdb, 0xb4, 0x21, 0xbc, - 0x5e, 0x2c, 0xf6, 0x72, 0xae, 0xe4, 0xd8, 0xaf, 0xce, 0x88, 0xfd, 0xaa, 0xdc, 0x37, 0xaf, 0x42, - 0x5a, 0xca, 0xd1, 0x3c, 0x69, 0x4c, 0x96, 0xee, 0x41, 0x46, 0xce, 0xcd, 0x3c, 0x2d, 0x92, 0xb5, - 0xbb, 0x00, 0xe3, 0xa0, 0xcc, 0x53, 0xa6, 0x64, 0xe5, 0x63, 0xc8, 0x4d, 0xc5, 0x62, 0x86, 0x7c, - 0x63, 0xf2, 0x27, 0xe5, 0x82, 0xfe, 0x29, 0xa3, 0x1f, 0x42, 0x76, 0x32, 0x12, 0x33, 0xc8, 0xd6, - 0x24, 0xf9, 0xfc, 0x9e, 0x3a, 0xbd, 0xda, 0x01, 0x8d, 0xb8, 0x4f, 0x19, 0x59, 0xf9, 0x08, 0x72, - 0x53, 0xe7, 0x1f, 0xc5, 0xd3, 0x54, 0xac, 0x42, 0x82, 0xdc, 0xef, 0xde, 0x4d, 0xb4, 0xe1, 0xeb, - 0xd3, 0x6d, 0xf8, 0xff, 0x73, 0x21, 0x8b, 0xf7, 0xde, 0x79, 0x21, 0xac, 0x1c, 0x9c, 0x0c, 0x0d, - 0xe5, 0x74, 0x68, 0x28, 0x9f, 0x87, 0x86, 0x72, 0x36, 0x34, 0x94, 0x37, 0x23, 0x03, 0x7d, 0x1a, - 0x19, 0xca, 0xc9, 0xc8, 0x40, 0xa7, 0x23, 0x03, 0x7d, 0x1b, 0x19, 0xe8, 0xc7, 0xc8, 0x50, 0xce, - 0x46, 0x06, 0x3a, 0xfe, 0x6e, 0x28, 0x4f, 0xfe, 0xe6, 0xee, 0x5c, 0x6c, 0xd5, 0x7b, 0xae, 0x15, - 0xfc, 0x85, 0xfa, 0x85, 0x50, 0x23, 0xc1, 0x4e, 0x62, 0xfb, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xe3, 0xd9, 0xac, 0x62, 0x58, 0x09, 0x00, 0x00, -} diff --git a/mixer/v1/config/client/api_spec.pb.go b/mixer/v1/config/client/api_spec.pb.go index 689f21a3c23..ad6be4e7592 100644 --- a/mixer/v1/config/client/api_spec.pb.go +++ b/mixer/v1/config/client/api_spec.pb.go @@ -1,46 +1,18 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: mixer/v1/config/client/api_spec.proto -/* - Package client is a generated protocol buffer package. - - It is generated from these files: - mixer/v1/config/client/api_spec.proto - mixer/v1/config/client/client_config.proto - mixer/v1/config/client/quota.proto - mixer/v1/config/client/service.proto - - It has these top-level messages: - HTTPAPISpec - HTTPAPISpecPattern - APIKey - HTTPAPISpecReference - HTTPAPISpecBinding - NetworkFailPolicy - ServiceConfig - TransportConfig - HttpClientConfig - TcpClientConfig - QuotaSpec - QuotaRule - StringMatch - AttributeMatch - Quota - QuotaSpecBinding - IstioService -*/ package client -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "github.com/gogo/protobuf/gogoproto" -import istio_mixer_v1 "istio.io/api/mixer/v1" - -import strings "strings" -import reflect "reflect" - -import io "io" +import ( + fmt "fmt" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" + io "io" + v1 "istio.io/api/mixer/v1" + math "math" + reflect "reflect" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -112,9 +84,9 @@ type HTTPAPISpec struct { // List of attributes that are generated when *any* of the HTTP // patterns match. This list typically includes the "api.service" // and "api.version" attributes. - Attributes *istio_mixer_v1.Attributes `protobuf:"bytes,1,opt,name=attributes" json:"attributes,omitempty"` + Attributes *v1.Attributes `protobuf:"bytes,1,opt,name=attributes,proto3" json:"attributes,omitempty"` // List of HTTP patterns to match. - Patterns []*HTTPAPISpecPattern `protobuf:"bytes,2,rep,name=patterns" json:"patterns,omitempty"` + Patterns []*HTTPAPISpecPattern `protobuf:"bytes,2,rep,name=patterns,proto3" json:"patterns,omitempty"` // List of APIKey that describes how to extract an API-KEY from an // HTTP request. The first API-Key match found in the list is used, // i.e. 'OR' semantics. @@ -124,12 +96,40 @@ type HTTPAPISpec struct { // // `query: key, `query: api_key`, and then `header: x-api-key` // - ApiKeys []*APIKey `protobuf:"bytes,3,rep,name=api_keys,json=apiKeys" json:"api_keys,omitempty"` + ApiKeys []*APIKey `protobuf:"bytes,3,rep,name=api_keys,json=apiKeys,proto3" json:"api_keys,omitempty"` +} + +func (m *HTTPAPISpec) Reset() { *m = HTTPAPISpec{} } +func (*HTTPAPISpec) ProtoMessage() {} +func (*HTTPAPISpec) Descriptor() ([]byte, []int) { + return fileDescriptor_fb6b15fd2f44b459, []int{0} +} +func (m *HTTPAPISpec) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *HTTPAPISpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_HTTPAPISpec.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *HTTPAPISpec) XXX_Merge(src proto.Message) { + xxx_messageInfo_HTTPAPISpec.Merge(m, src) +} +func (m *HTTPAPISpec) XXX_Size() int { + return m.Size() +} +func (m *HTTPAPISpec) XXX_DiscardUnknown() { + xxx_messageInfo_HTTPAPISpec.DiscardUnknown(m) } -func (m *HTTPAPISpec) Reset() { *m = HTTPAPISpec{} } -func (*HTTPAPISpec) ProtoMessage() {} -func (*HTTPAPISpec) Descriptor() ([]byte, []int) { return fileDescriptorApiSpec, []int{0} } +var xxx_messageInfo_HTTPAPISpec proto.InternalMessageInfo // HTTPAPISpecPattern defines a single pattern to match against // incoming HTTP requests. The per-pattern list of attributes is @@ -148,7 +148,7 @@ type HTTPAPISpecPattern struct { // List of attributes that are generated if the HTTP request matches // the specified http_method and uri_template. This typically // includes the "api.operation" attribute. - Attributes *istio_mixer_v1.Attributes `protobuf:"bytes,1,opt,name=attributes" json:"attributes,omitempty"` + Attributes *v1.Attributes `protobuf:"bytes,1,opt,name=attributes,proto3" json:"attributes,omitempty"` // HTTP request method to match against as defined by // [rfc7231](https://tools.ietf.org/html/rfc7231#page-21). For // example: GET, HEAD, POST, PUT, DELETE. @@ -159,9 +159,37 @@ type HTTPAPISpecPattern struct { Pattern isHTTPAPISpecPattern_Pattern `protobuf_oneof:"pattern"` } -func (m *HTTPAPISpecPattern) Reset() { *m = HTTPAPISpecPattern{} } -func (*HTTPAPISpecPattern) ProtoMessage() {} -func (*HTTPAPISpecPattern) Descriptor() ([]byte, []int) { return fileDescriptorApiSpec, []int{1} } +func (m *HTTPAPISpecPattern) Reset() { *m = HTTPAPISpecPattern{} } +func (*HTTPAPISpecPattern) ProtoMessage() {} +func (*HTTPAPISpecPattern) Descriptor() ([]byte, []int) { + return fileDescriptor_fb6b15fd2f44b459, []int{1} +} +func (m *HTTPAPISpecPattern) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *HTTPAPISpecPattern) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_HTTPAPISpecPattern.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *HTTPAPISpecPattern) XXX_Merge(src proto.Message) { + xxx_messageInfo_HTTPAPISpecPattern.Merge(m, src) +} +func (m *HTTPAPISpecPattern) XXX_Size() int { + return m.Size() +} +func (m *HTTPAPISpecPattern) XXX_DiscardUnknown() { + xxx_messageInfo_HTTPAPISpecPattern.DiscardUnknown(m) +} + +var xxx_messageInfo_HTTPAPISpecPattern proto.InternalMessageInfo type isHTTPAPISpecPattern_Pattern interface { isHTTPAPISpecPattern_Pattern() @@ -252,11 +280,11 @@ func _HTTPAPISpecPattern_OneofSizer(msg proto.Message) (n int) { // pattern switch x := m.Pattern.(type) { case *HTTPAPISpecPattern_UriTemplate: - n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.UriTemplate))) n += len(x.UriTemplate) case *HTTPAPISpecPattern_Regex: - n += proto.SizeVarint(4<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.Regex))) n += len(x.Regex) case nil: @@ -269,7 +297,7 @@ func _HTTPAPISpecPattern_OneofSizer(msg proto.Message) (n int) { // APIKey defines the explicit configuration for generating the // `request.api_key` attribute from HTTP requests. // -// See https://swagger.io/docs/specification/authentication/api-keys +// See [API Keys](https://swagger.io/docs/specification/authentication/api-keys) // for a general overview of API keys as defined by OpenAPI. type APIKey struct { // Types that are valid to be assigned to Key: @@ -279,9 +307,37 @@ type APIKey struct { Key isAPIKey_Key `protobuf_oneof:"key"` } -func (m *APIKey) Reset() { *m = APIKey{} } -func (*APIKey) ProtoMessage() {} -func (*APIKey) Descriptor() ([]byte, []int) { return fileDescriptorApiSpec, []int{2} } +func (m *APIKey) Reset() { *m = APIKey{} } +func (*APIKey) ProtoMessage() {} +func (*APIKey) Descriptor() ([]byte, []int) { + return fileDescriptor_fb6b15fd2f44b459, []int{2} +} +func (m *APIKey) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *APIKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_APIKey.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *APIKey) XXX_Merge(src proto.Message) { + xxx_messageInfo_APIKey.Merge(m, src) +} +func (m *APIKey) XXX_Size() int { + return m.Size() +} +func (m *APIKey) XXX_DiscardUnknown() { + xxx_messageInfo_APIKey.DiscardUnknown(m) +} + +var xxx_messageInfo_APIKey proto.InternalMessageInfo type isAPIKey_Key interface { isAPIKey_Key() @@ -394,15 +450,15 @@ func _APIKey_OneofSizer(msg proto.Message) (n int) { // key switch x := m.Key.(type) { case *APIKey_Query: - n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.Query))) n += len(x.Query) case *APIKey_Header: - n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.Header))) n += len(x.Header) case *APIKey_Cookie: - n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.Cookie))) n += len(x.Cookie) case nil: @@ -430,9 +486,37 @@ type HTTPAPISpecReference struct { Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` } -func (m *HTTPAPISpecReference) Reset() { *m = HTTPAPISpecReference{} } -func (*HTTPAPISpecReference) ProtoMessage() {} -func (*HTTPAPISpecReference) Descriptor() ([]byte, []int) { return fileDescriptorApiSpec, []int{3} } +func (m *HTTPAPISpecReference) Reset() { *m = HTTPAPISpecReference{} } +func (*HTTPAPISpecReference) ProtoMessage() {} +func (*HTTPAPISpecReference) Descriptor() ([]byte, []int) { + return fileDescriptor_fb6b15fd2f44b459, []int{3} +} +func (m *HTTPAPISpecReference) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *HTTPAPISpecReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_HTTPAPISpecReference.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *HTTPAPISpecReference) XXX_Merge(src proto.Message) { + xxx_messageInfo_HTTPAPISpecReference.Merge(m, src) +} +func (m *HTTPAPISpecReference) XXX_Size() int { + return m.Size() +} +func (m *HTTPAPISpecReference) XXX_DiscardUnknown() { + xxx_messageInfo_HTTPAPISpecReference.DiscardUnknown(m) +} + +var xxx_messageInfo_HTTPAPISpecReference proto.InternalMessageInfo // HTTPAPISpecBinding defines the binding between HTTPAPISpecs and one or more // IstioService. For example, the following establishes a binding @@ -454,16 +538,44 @@ func (*HTTPAPISpecReference) Descriptor() ([]byte, []int) { return fileDescripto // ``` type HTTPAPISpecBinding struct { // REQUIRED. One or more services to map the listed HTTPAPISpec onto. - Services []*IstioService `protobuf:"bytes,1,rep,name=services" json:"services,omitempty"` + Services []*IstioService `protobuf:"bytes,1,rep,name=services,proto3" json:"services,omitempty"` // REQUIRED. One or more HTTPAPISpec references that should be mapped to // the specified service(s). The aggregate collection of match // conditions defined in the HTTPAPISpecs should not overlap. - ApiSpecs []*HTTPAPISpecReference `protobuf:"bytes,2,rep,name=api_specs,json=apiSpecs" json:"api_specs,omitempty"` + ApiSpecs []*HTTPAPISpecReference `protobuf:"bytes,2,rep,name=api_specs,json=apiSpecs,proto3" json:"api_specs,omitempty"` } -func (m *HTTPAPISpecBinding) Reset() { *m = HTTPAPISpecBinding{} } -func (*HTTPAPISpecBinding) ProtoMessage() {} -func (*HTTPAPISpecBinding) Descriptor() ([]byte, []int) { return fileDescriptorApiSpec, []int{4} } +func (m *HTTPAPISpecBinding) Reset() { *m = HTTPAPISpecBinding{} } +func (*HTTPAPISpecBinding) ProtoMessage() {} +func (*HTTPAPISpecBinding) Descriptor() ([]byte, []int) { + return fileDescriptor_fb6b15fd2f44b459, []int{4} +} +func (m *HTTPAPISpecBinding) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *HTTPAPISpecBinding) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_HTTPAPISpecBinding.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *HTTPAPISpecBinding) XXX_Merge(src proto.Message) { + xxx_messageInfo_HTTPAPISpecBinding.Merge(m, src) +} +func (m *HTTPAPISpecBinding) XXX_Size() int { + return m.Size() +} +func (m *HTTPAPISpecBinding) XXX_DiscardUnknown() { + xxx_messageInfo_HTTPAPISpecBinding.DiscardUnknown(m) +} + +var xxx_messageInfo_HTTPAPISpecBinding proto.InternalMessageInfo func init() { proto.RegisterType((*HTTPAPISpec)(nil), "istio.mixer.v1.config.client.HTTPAPISpec") @@ -472,6 +584,48 @@ func init() { proto.RegisterType((*HTTPAPISpecReference)(nil), "istio.mixer.v1.config.client.HTTPAPISpecReference") proto.RegisterType((*HTTPAPISpecBinding)(nil), "istio.mixer.v1.config.client.HTTPAPISpecBinding") } + +func init() { + proto.RegisterFile("mixer/v1/config/client/api_spec.proto", fileDescriptor_fb6b15fd2f44b459) +} + +var fileDescriptor_fb6b15fd2f44b459 = []byte{ + // 524 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x53, 0xcf, 0x6e, 0xda, 0x4e, + 0x10, 0x5e, 0x87, 0x84, 0xc0, 0xf0, 0x3b, 0xad, 0xa2, 0x9f, 0x5c, 0x14, 0x6d, 0x11, 0x49, 0x25, + 0xd4, 0x83, 0xdd, 0xd0, 0x5b, 0x2f, 0x15, 0x1c, 0x2a, 0x50, 0x5a, 0x15, 0x39, 0x9c, 0x5a, 0x55, + 0xc8, 0x31, 0x13, 0x58, 0x11, 0xbc, 0xee, 0x7a, 0x41, 0xe1, 0xd6, 0x47, 0xe8, 0x63, 0xf4, 0xd2, + 0x07, 0xe8, 0x1b, 0xe4, 0xc8, 0x91, 0x63, 0x31, 0x97, 0x1e, 0xf3, 0x08, 0xd5, 0x7a, 0x1d, 0xa0, + 0xff, 0x50, 0xa5, 0x9e, 0xec, 0x99, 0xf9, 0x66, 0xbe, 0xf9, 0x66, 0x67, 0xe0, 0xd1, 0x98, 0xdf, + 0xa0, 0x74, 0xa7, 0x67, 0x6e, 0x20, 0xc2, 0x2b, 0x3e, 0x70, 0x83, 0x6b, 0x8e, 0xa1, 0x72, 0xfd, + 0x88, 0xf7, 0xe2, 0x08, 0x03, 0x27, 0x92, 0x42, 0x09, 0x7a, 0xcc, 0x63, 0xc5, 0x85, 0x93, 0x82, + 0x9d, 0xe9, 0x99, 0x63, 0xc0, 0x8e, 0x01, 0x97, 0x8f, 0x06, 0x62, 0x20, 0x52, 0xa0, 0xab, 0xff, + 0x4c, 0x4e, 0xf9, 0xc1, 0xba, 0xb4, 0xaf, 0x94, 0xe4, 0x97, 0x13, 0x85, 0x71, 0x16, 0x3a, 0xfd, + 0x03, 0x6b, 0x8c, 0x72, 0xca, 0x03, 0x34, 0xa8, 0xea, 0xc2, 0x82, 0x52, 0xab, 0xdb, 0xed, 0x34, + 0x3a, 0xed, 0x8b, 0x08, 0x03, 0xfa, 0x0c, 0x60, 0x53, 0xc9, 0xb6, 0x2a, 0x56, 0xad, 0x54, 0x2f, + 0x3b, 0x3f, 0x75, 0xd6, 0x58, 0x23, 0xbc, 0x2d, 0x34, 0x7d, 0x09, 0x85, 0xc8, 0x57, 0x0a, 0x65, + 0x18, 0xdb, 0x7b, 0x95, 0x5c, 0xad, 0x54, 0x7f, 0xe2, 0xec, 0xd2, 0xe4, 0x6c, 0x11, 0x77, 0x4c, + 0xa2, 0xb7, 0xae, 0x40, 0x9f, 0x43, 0x41, 0x0f, 0x68, 0x84, 0xb3, 0xd8, 0xce, 0xa5, 0xd5, 0x4e, + 0x77, 0x57, 0x6b, 0x74, 0xda, 0xe7, 0x38, 0xf3, 0x0e, 0xfd, 0x88, 0x9f, 0xe3, 0x2c, 0xae, 0x7e, + 0xb1, 0x80, 0xfe, 0xca, 0xf0, 0x4f, 0x0a, 0x1f, 0x42, 0x69, 0xa8, 0x54, 0xd4, 0x1b, 0xa3, 0x1a, + 0x8a, 0xbe, 0xbd, 0x57, 0xb1, 0x6a, 0x45, 0x0f, 0xb4, 0xeb, 0x55, 0xea, 0xa1, 0x27, 0xf0, 0xdf, + 0x44, 0xf2, 0x9e, 0xc2, 0x71, 0x74, 0xed, 0x2b, 0xb4, 0x73, 0x1a, 0xd1, 0x22, 0x5e, 0x69, 0x22, + 0x79, 0x37, 0x73, 0xd2, 0xff, 0xe1, 0x40, 0xe2, 0x00, 0x6f, 0xec, 0xfd, 0x2c, 0x6a, 0xcc, 0x66, + 0x11, 0x0e, 0x33, 0xf5, 0xd5, 0xb7, 0x90, 0x37, 0x72, 0x34, 0xf8, 0xfd, 0x04, 0xe5, 0x2c, 0xed, + 0x34, 0x05, 0xa7, 0x26, 0xb5, 0x21, 0x3f, 0x44, 0xbf, 0x8f, 0xd2, 0x74, 0xd1, 0x22, 0x5e, 0x66, + 0xeb, 0x48, 0x20, 0xc4, 0x88, 0x6f, 0xd8, 0x33, 0xbb, 0x79, 0x00, 0xb9, 0x11, 0xce, 0xaa, 0x2d, + 0x38, 0xda, 0x9a, 0x8b, 0x87, 0x57, 0x28, 0x31, 0x0c, 0x90, 0x52, 0xd8, 0x0f, 0xfd, 0x31, 0x1a, + 0x26, 0x2f, 0xfd, 0xa7, 0xc7, 0x50, 0xd4, 0xdf, 0x38, 0xf2, 0x03, 0xcc, 0xf4, 0x6e, 0x1c, 0xd5, + 0xcf, 0x3f, 0x8e, 0xb8, 0xc9, 0xc3, 0x3e, 0x0f, 0x07, 0xf4, 0x05, 0x14, 0xb2, 0x2d, 0xd3, 0x03, + 0xd6, 0x4f, 0xf7, 0x78, 0xf7, 0xd3, 0xb5, 0x75, 0xf0, 0xc2, 0xa4, 0x78, 0xeb, 0x5c, 0xfa, 0x1a, + 0x8a, 0xf7, 0x37, 0x72, 0xbf, 0x51, 0xf5, 0xbf, 0xde, 0xa8, 0xb5, 0x2e, 0x4f, 0xef, 0x91, 0xf6, + 0xc4, 0xcd, 0x77, 0xb7, 0x4b, 0x46, 0xe6, 0x4b, 0x46, 0x16, 0x4b, 0x46, 0xee, 0x96, 0x8c, 0x7c, + 0x48, 0x98, 0xf5, 0x29, 0x61, 0xe4, 0x36, 0x61, 0xd6, 0x3c, 0x61, 0xd6, 0xd7, 0x84, 0x59, 0xdf, + 0x12, 0x46, 0xee, 0x12, 0x66, 0x7d, 0x5c, 0x31, 0x32, 0x5f, 0x31, 0xb2, 0x58, 0x31, 0xf2, 0xe6, + 0xc4, 0xd0, 0x72, 0xa1, 0xaf, 0xd6, 0xfd, 0xfd, 0x69, 0x5d, 0xe6, 0xd3, 0x9b, 0x7a, 0xfa, 0x3d, + 0x00, 0x00, 0xff, 0xff, 0x74, 0x4a, 0xd4, 0x0b, 0xf1, 0x03, 0x00, 0x00, +} + func (m *HTTPAPISpec) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -712,6 +866,9 @@ func encodeVarintApiSpec(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *HTTPAPISpec) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Attributes != nil { @@ -734,6 +891,9 @@ func (m *HTTPAPISpec) Size() (n int) { } func (m *HTTPAPISpecPattern) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Attributes != nil { @@ -751,6 +911,9 @@ func (m *HTTPAPISpecPattern) Size() (n int) { } func (m *HTTPAPISpecPattern_UriTemplate) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.UriTemplate) @@ -758,6 +921,9 @@ func (m *HTTPAPISpecPattern_UriTemplate) Size() (n int) { return n } func (m *HTTPAPISpecPattern_Regex) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Regex) @@ -765,6 +931,9 @@ func (m *HTTPAPISpecPattern_Regex) Size() (n int) { return n } func (m *APIKey) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Key != nil { @@ -774,6 +943,9 @@ func (m *APIKey) Size() (n int) { } func (m *APIKey_Query) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Query) @@ -781,6 +953,9 @@ func (m *APIKey_Query) Size() (n int) { return n } func (m *APIKey_Header) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Header) @@ -788,6 +963,9 @@ func (m *APIKey_Header) Size() (n int) { return n } func (m *APIKey_Cookie) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Cookie) @@ -795,6 +973,9 @@ func (m *APIKey_Cookie) Size() (n int) { return n } func (m *HTTPAPISpecReference) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Name) @@ -809,6 +990,9 @@ func (m *HTTPAPISpecReference) Size() (n int) { } func (m *HTTPAPISpecBinding) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Services) > 0 { @@ -844,7 +1028,7 @@ func (this *HTTPAPISpec) String() string { return "nil" } s := strings.Join([]string{`&HTTPAPISpec{`, - `Attributes:` + strings.Replace(fmt.Sprintf("%v", this.Attributes), "Attributes", "istio_mixer_v1.Attributes", 1) + `,`, + `Attributes:` + strings.Replace(fmt.Sprintf("%v", this.Attributes), "Attributes", "v1.Attributes", 1) + `,`, `Patterns:` + strings.Replace(fmt.Sprintf("%v", this.Patterns), "HTTPAPISpecPattern", "HTTPAPISpecPattern", 1) + `,`, `ApiKeys:` + strings.Replace(fmt.Sprintf("%v", this.ApiKeys), "APIKey", "APIKey", 1) + `,`, `}`, @@ -856,7 +1040,7 @@ func (this *HTTPAPISpecPattern) String() string { return "nil" } s := strings.Join([]string{`&HTTPAPISpecPattern{`, - `Attributes:` + strings.Replace(fmt.Sprintf("%v", this.Attributes), "Attributes", "istio_mixer_v1.Attributes", 1) + `,`, + `Attributes:` + strings.Replace(fmt.Sprintf("%v", this.Attributes), "Attributes", "v1.Attributes", 1) + `,`, `HttpMethod:` + fmt.Sprintf("%v", this.HttpMethod) + `,`, `Pattern:` + fmt.Sprintf("%v", this.Pattern) + `,`, `}`, @@ -968,7 +1152,7 @@ func (m *HTTPAPISpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -996,7 +1180,7 @@ func (m *HTTPAPISpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1005,11 +1189,14 @@ func (m *HTTPAPISpec) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApiSpec } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApiSpec + } if postIndex > l { return io.ErrUnexpectedEOF } if m.Attributes == nil { - m.Attributes = &istio_mixer_v1.Attributes{} + m.Attributes = &v1.Attributes{} } if err := m.Attributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1029,7 +1216,7 @@ func (m *HTTPAPISpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1038,6 +1225,9 @@ func (m *HTTPAPISpec) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApiSpec } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApiSpec + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1060,7 +1250,7 @@ func (m *HTTPAPISpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1069,6 +1259,9 @@ func (m *HTTPAPISpec) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApiSpec } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApiSpec + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1086,6 +1279,9 @@ func (m *HTTPAPISpec) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthApiSpec } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthApiSpec + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1113,7 +1309,7 @@ func (m *HTTPAPISpecPattern) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1141,7 +1337,7 @@ func (m *HTTPAPISpecPattern) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1150,11 +1346,14 @@ func (m *HTTPAPISpecPattern) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApiSpec } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApiSpec + } if postIndex > l { return io.ErrUnexpectedEOF } if m.Attributes == nil { - m.Attributes = &istio_mixer_v1.Attributes{} + m.Attributes = &v1.Attributes{} } if err := m.Attributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1174,7 +1373,7 @@ func (m *HTTPAPISpecPattern) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1184,6 +1383,9 @@ func (m *HTTPAPISpecPattern) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApiSpec } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApiSpec + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1203,7 +1405,7 @@ func (m *HTTPAPISpecPattern) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1213,6 +1415,9 @@ func (m *HTTPAPISpecPattern) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApiSpec } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApiSpec + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1232,7 +1437,7 @@ func (m *HTTPAPISpecPattern) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1242,6 +1447,9 @@ func (m *HTTPAPISpecPattern) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApiSpec } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApiSpec + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1256,6 +1464,9 @@ func (m *HTTPAPISpecPattern) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthApiSpec } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthApiSpec + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1283,7 +1494,7 @@ func (m *APIKey) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1311,7 +1522,7 @@ func (m *APIKey) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1321,6 +1532,9 @@ func (m *APIKey) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApiSpec } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApiSpec + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1340,7 +1554,7 @@ func (m *APIKey) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1350,6 +1564,9 @@ func (m *APIKey) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApiSpec } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApiSpec + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1369,7 +1586,7 @@ func (m *APIKey) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1379,6 +1596,9 @@ func (m *APIKey) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApiSpec } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApiSpec + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1393,6 +1613,9 @@ func (m *APIKey) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthApiSpec } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthApiSpec + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1420,7 +1643,7 @@ func (m *HTTPAPISpecReference) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1448,7 +1671,7 @@ func (m *HTTPAPISpecReference) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1458,6 +1681,9 @@ func (m *HTTPAPISpecReference) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApiSpec } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApiSpec + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1477,7 +1703,7 @@ func (m *HTTPAPISpecReference) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1487,6 +1713,9 @@ func (m *HTTPAPISpecReference) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApiSpec } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApiSpec + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1501,6 +1730,9 @@ func (m *HTTPAPISpecReference) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthApiSpec } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthApiSpec + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1528,7 +1760,7 @@ func (m *HTTPAPISpecBinding) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1556,7 +1788,7 @@ func (m *HTTPAPISpecBinding) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1565,6 +1797,9 @@ func (m *HTTPAPISpecBinding) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApiSpec } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApiSpec + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1587,7 +1822,7 @@ func (m *HTTPAPISpecBinding) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1596,6 +1831,9 @@ func (m *HTTPAPISpecBinding) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApiSpec } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApiSpec + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1613,6 +1851,9 @@ func (m *HTTPAPISpecBinding) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthApiSpec } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthApiSpec + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1679,10 +1920,13 @@ func skipApiSpec(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthApiSpec } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthApiSpec + } return iNdEx, nil case 3: for { @@ -1711,6 +1955,9 @@ func skipApiSpec(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthApiSpec + } } return iNdEx, nil case 4: @@ -1729,42 +1976,3 @@ var ( ErrInvalidLengthApiSpec = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowApiSpec = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("mixer/v1/config/client/api_spec.proto", fileDescriptorApiSpec) } - -var fileDescriptorApiSpec = []byte{ - // 517 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x53, 0xbd, 0x6e, 0x13, 0x41, - 0x10, 0xbe, 0x8d, 0xf3, 0x63, 0x8f, 0xa9, 0x56, 0x11, 0x3a, 0xac, 0x68, 0xb1, 0x9c, 0x20, 0x59, - 0x14, 0x77, 0xc4, 0x74, 0x34, 0xc8, 0x2e, 0x90, 0xad, 0x80, 0xb0, 0x36, 0xa6, 0x81, 0xc2, 0xba, - 0x9c, 0x27, 0xf6, 0xca, 0xf1, 0xed, 0xb1, 0xb7, 0xb6, 0xe2, 0x8e, 0x47, 0xe0, 0x31, 0x68, 0x78, - 0x00, 0xde, 0x20, 0x65, 0xca, 0x94, 0xf8, 0x68, 0x28, 0xf3, 0x08, 0x68, 0x6f, 0x2f, 0xb6, 0xf9, - 0xb3, 0x90, 0xa8, 0xee, 0x66, 0xe6, 0x9b, 0xf9, 0xe6, 0x9b, 0x9d, 0x81, 0x47, 0x13, 0x71, 0x89, - 0xca, 0x9f, 0x1d, 0xfb, 0xa1, 0x8c, 0xce, 0xc5, 0xd0, 0x0f, 0x2f, 0x04, 0x46, 0xda, 0x0f, 0x62, - 0xd1, 0x4f, 0x62, 0x0c, 0xbd, 0x58, 0x49, 0x2d, 0xe9, 0x81, 0x48, 0xb4, 0x90, 0x5e, 0x06, 0xf6, - 0x66, 0xc7, 0x9e, 0x05, 0x7b, 0x16, 0x5c, 0xd9, 0x1f, 0xca, 0xa1, 0xcc, 0x80, 0xbe, 0xf9, 0xb3, - 0x39, 0x95, 0x07, 0xcb, 0xd2, 0x81, 0xd6, 0x4a, 0x9c, 0x4d, 0x35, 0x26, 0x79, 0xe8, 0xe8, 0x2f, - 0xac, 0x09, 0xaa, 0x99, 0x08, 0xd1, 0xa2, 0x6a, 0x37, 0x04, 0xca, 0xed, 0x5e, 0xaf, 0xdb, 0xec, - 0x76, 0x4e, 0x63, 0x0c, 0xe9, 0x33, 0x80, 0x55, 0x25, 0x97, 0x54, 0x49, 0xbd, 0xdc, 0xa8, 0x78, - 0xbf, 0x74, 0xd6, 0x5c, 0x22, 0xf8, 0x1a, 0x9a, 0xbe, 0x84, 0x62, 0x1c, 0x68, 0x8d, 0x2a, 0x4a, - 0xdc, 0xad, 0x6a, 0xa1, 0x5e, 0x6e, 0x3c, 0xf1, 0x36, 0x69, 0xf2, 0xd6, 0x88, 0xbb, 0x36, 0x91, - 0x2f, 0x2b, 0xd0, 0xe7, 0x50, 0x34, 0x03, 0x1a, 0xe3, 0x3c, 0x71, 0x0b, 0x59, 0xb5, 0xa3, 0xcd, - 0xd5, 0x9a, 0xdd, 0xce, 0x09, 0xce, 0xf9, 0x5e, 0x10, 0x8b, 0x13, 0x9c, 0x27, 0xb5, 0x2f, 0x04, - 0xe8, 0xef, 0x0c, 0xff, 0xa5, 0xf0, 0x21, 0x94, 0x47, 0x5a, 0xc7, 0xfd, 0x09, 0xea, 0x91, 0x1c, - 0xb8, 0x5b, 0x55, 0x52, 0x2f, 0x71, 0x30, 0xae, 0x57, 0x99, 0x87, 0x1e, 0xc2, 0xbd, 0xa9, 0x12, - 0x7d, 0x8d, 0x93, 0xf8, 0x22, 0xd0, 0xe8, 0x16, 0x0c, 0xa2, 0xed, 0xf0, 0xf2, 0x54, 0x89, 0x5e, - 0xee, 0xa4, 0xf7, 0x61, 0x47, 0xe1, 0x10, 0x2f, 0xdd, 0xed, 0x3c, 0x6a, 0xcd, 0x56, 0x09, 0xf6, - 0x72, 0xf5, 0xb5, 0x77, 0xb0, 0x6b, 0xe5, 0x18, 0xf0, 0xfb, 0x29, 0xaa, 0x79, 0xd6, 0x69, 0x06, - 0xce, 0x4c, 0xea, 0xc2, 0xee, 0x08, 0x83, 0x01, 0x2a, 0xdb, 0x45, 0xdb, 0xe1, 0xb9, 0x6d, 0x22, - 0xa1, 0x94, 0x63, 0xb1, 0x62, 0xcf, 0xed, 0xd6, 0x0e, 0x14, 0xc6, 0x38, 0xaf, 0xb5, 0x61, 0x7f, - 0x6d, 0x2e, 0x1c, 0xcf, 0x51, 0x61, 0x14, 0x22, 0xa5, 0xb0, 0x1d, 0x05, 0x13, 0xb4, 0x4c, 0x3c, - 0xfb, 0xa7, 0x07, 0x50, 0x32, 0xdf, 0x24, 0x0e, 0x42, 0xcc, 0xf5, 0xae, 0x1c, 0xb5, 0xcf, 0x3f, - 0x8f, 0xb8, 0x25, 0xa2, 0x81, 0x88, 0x86, 0xf4, 0x05, 0x14, 0xf3, 0x2d, 0x33, 0x03, 0x36, 0x4f, - 0xf7, 0x78, 0xf3, 0xd3, 0x75, 0x4c, 0xf0, 0xd4, 0xa6, 0xf0, 0x65, 0x2e, 0x7d, 0x0d, 0xa5, 0xbb, - 0x1b, 0xb9, 0xdb, 0xa8, 0xc6, 0x3f, 0x6f, 0xd4, 0x52, 0x17, 0x37, 0x7b, 0x64, 0x3c, 0x49, 0xeb, - 0xcd, 0xd5, 0x82, 0x39, 0xd7, 0x0b, 0xe6, 0xdc, 0x2c, 0x98, 0x73, 0xbb, 0x60, 0xce, 0x87, 0x94, - 0x91, 0x4f, 0x29, 0x73, 0xae, 0x52, 0x46, 0xae, 0x53, 0x46, 0xbe, 0xa6, 0x8c, 0x7c, 0x4f, 0x99, - 0x73, 0x9b, 0x32, 0xf2, 0xf1, 0x1b, 0x73, 0xde, 0x1e, 0x5a, 0x3a, 0x21, 0xcd, 0xb5, 0xfa, 0x7f, - 0x3e, 0xa9, 0xb3, 0xdd, 0xec, 0x96, 0x9e, 0xfe, 0x08, 0x00, 0x00, 0xff, 0xff, 0xd9, 0xe5, 0x31, - 0x31, 0xe9, 0x03, 0x00, 0x00, -} diff --git a/mixer/v1/config/client/api_spec.proto b/mixer/v1/config/client/api_spec.proto index e5c25230244..27fafee8275 100644 --- a/mixer/v1/config/client/api_spec.proto +++ b/mixer/v1/config/client/api_spec.proto @@ -154,7 +154,7 @@ message HTTPAPISpecPattern { // APIKey defines the explicit configuration for generating the // `request.api_key` attribute from HTTP requests. // -// See https://swagger.io/docs/specification/authentication/api-keys +// See [API Keys](https://swagger.io/docs/specification/authentication/api-keys) // for a general overview of API keys as defined by OpenAPI. message APIKey { oneof key { diff --git a/mixer/v1/config/client/client_config.pb.go b/mixer/v1/config/client/client_config.pb.go index dee422b03a8..85f5b24cd49 100644 --- a/mixer/v1/config/client/client_config.pb.go +++ b/mixer/v1/config/client/client_config.pb.go @@ -3,26 +3,31 @@ package client -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "github.com/gogo/protobuf/gogoproto" -import google_protobuf1 "github.com/gogo/protobuf/types" -import istio_mixer_v1 "istio.io/api/mixer/v1" - -import strconv "strconv" - -import strings "strings" -import reflect "reflect" -import sortkeys "github.com/gogo/protobuf/sortkeys" - -import io "io" +import ( + fmt "fmt" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" + github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + types "github.com/gogo/protobuf/types" + io "io" + v1 "istio.io/api/mixer/v1" + math "math" + reflect "reflect" + strconv "strconv" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + // Describes the policy. type NetworkFailPolicy_FailPolicy int32 @@ -38,13 +43,14 @@ var NetworkFailPolicy_FailPolicy_name = map[int32]string{ 0: "FAIL_OPEN", 1: "FAIL_CLOSE", } + var NetworkFailPolicy_FailPolicy_value = map[string]int32{ "FAIL_OPEN": 0, "FAIL_CLOSE": 1, } func (NetworkFailPolicy_FailPolicy) EnumDescriptor() ([]byte, []int) { - return fileDescriptorClientConfig, []int{0, 0} + return fileDescriptor_27bf0dec365e2f6f, []int{0, 0} } // Specifies the behavior when the client is unable to connect to Mixer. @@ -55,14 +61,42 @@ type NetworkFailPolicy struct { MaxRetry uint32 `protobuf:"varint,2,opt,name=max_retry,json=maxRetry,proto3" json:"max_retry,omitempty"` // Base time to wait between retries. Will be adjusted by exponential // backoff and jitter. - BaseRetryWait *google_protobuf1.Duration `protobuf:"bytes,3,opt,name=base_retry_wait,json=baseRetryWait" json:"base_retry_wait,omitempty"` + BaseRetryWait *types.Duration `protobuf:"bytes,3,opt,name=base_retry_wait,json=baseRetryWait,proto3" json:"base_retry_wait,omitempty"` // Max time to wait between retries. - MaxRetryWait *google_protobuf1.Duration `protobuf:"bytes,4,opt,name=max_retry_wait,json=maxRetryWait" json:"max_retry_wait,omitempty"` + MaxRetryWait *types.Duration `protobuf:"bytes,4,opt,name=max_retry_wait,json=maxRetryWait,proto3" json:"max_retry_wait,omitempty"` +} + +func (m *NetworkFailPolicy) Reset() { *m = NetworkFailPolicy{} } +func (*NetworkFailPolicy) ProtoMessage() {} +func (*NetworkFailPolicy) Descriptor() ([]byte, []int) { + return fileDescriptor_27bf0dec365e2f6f, []int{0} +} +func (m *NetworkFailPolicy) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *NetworkFailPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_NetworkFailPolicy.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *NetworkFailPolicy) XXX_Merge(src proto.Message) { + xxx_messageInfo_NetworkFailPolicy.Merge(m, src) +} +func (m *NetworkFailPolicy) XXX_Size() int { + return m.Size() +} +func (m *NetworkFailPolicy) XXX_DiscardUnknown() { + xxx_messageInfo_NetworkFailPolicy.DiscardUnknown(m) } -func (m *NetworkFailPolicy) Reset() { *m = NetworkFailPolicy{} } -func (*NetworkFailPolicy) ProtoMessage() {} -func (*NetworkFailPolicy) Descriptor() ([]byte, []int) { return fileDescriptorClientConfig, []int{0} } +var xxx_messageInfo_NetworkFailPolicy proto.InternalMessageInfo // Defines the per-service client configuration. type ServiceConfig struct { @@ -74,16 +108,16 @@ type ServiceConfig struct { // typically includes the "destination.service" attribute. // In case of a per-route override, per-route attributes take precedence // over the attributes supplied in the client configuration. - MixerAttributes *istio_mixer_v1.Attributes `protobuf:"bytes,3,opt,name=mixer_attributes,json=mixerAttributes" json:"mixer_attributes,omitempty"` + MixerAttributes *v1.Attributes `protobuf:"bytes,3,opt,name=mixer_attributes,json=mixerAttributes,proto3" json:"mixer_attributes,omitempty"` // HTTP API specifications to generate API attributes. - HttpApiSpec []*HTTPAPISpec `protobuf:"bytes,4,rep,name=http_api_spec,json=httpApiSpec" json:"http_api_spec,omitempty"` + HttpApiSpec []*HTTPAPISpec `protobuf:"bytes,4,rep,name=http_api_spec,json=httpApiSpec,proto3" json:"http_api_spec,omitempty"` // Quota specifications to generate quota requirements. - QuotaSpec []*QuotaSpec `protobuf:"bytes,5,rep,name=quota_spec,json=quotaSpec" json:"quota_spec,omitempty"` + QuotaSpec []*QuotaSpec `protobuf:"bytes,5,rep,name=quota_spec,json=quotaSpec,proto3" json:"quota_spec,omitempty"` // Specifies the behavior when the client is unable to connect to Mixer. // This is the service-level policy. It overrides // [mesh-level // policy][istio.mixer.v1.config.client.TransportConfig.network_fail_policy]. - NetworkFailPolicy *NetworkFailPolicy `protobuf:"bytes,7,opt,name=network_fail_policy,json=networkFailPolicy" json:"network_fail_policy,omitempty"` + NetworkFailPolicy *NetworkFailPolicy `protobuf:"bytes,7,opt,name=network_fail_policy,json=networkFailPolicy,proto3" json:"network_fail_policy,omitempty"` // Default attributes to forward to upstream. This typically // includes the "source.ip" and "source.uid" attributes. // In case of a per-route override, per-route attributes take precedence @@ -96,12 +130,40 @@ type ServiceConfig struct { // 3. forwarded attributes from the source filter config (if any); // 4. forwarded attributes from the source route config (if any); // 5. derived attributes from the request metadata. - ForwardAttributes *istio_mixer_v1.Attributes `protobuf:"bytes,8,opt,name=forward_attributes,json=forwardAttributes" json:"forward_attributes,omitempty"` + ForwardAttributes *v1.Attributes `protobuf:"bytes,8,opt,name=forward_attributes,json=forwardAttributes,proto3" json:"forward_attributes,omitempty"` +} + +func (m *ServiceConfig) Reset() { *m = ServiceConfig{} } +func (*ServiceConfig) ProtoMessage() {} +func (*ServiceConfig) Descriptor() ([]byte, []int) { + return fileDescriptor_27bf0dec365e2f6f, []int{1} +} +func (m *ServiceConfig) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ServiceConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ServiceConfig.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ServiceConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceConfig.Merge(m, src) +} +func (m *ServiceConfig) XXX_Size() int { + return m.Size() +} +func (m *ServiceConfig) XXX_DiscardUnknown() { + xxx_messageInfo_ServiceConfig.DiscardUnknown(m) } -func (m *ServiceConfig) Reset() { *m = ServiceConfig{} } -func (*ServiceConfig) ProtoMessage() {} -func (*ServiceConfig) Descriptor() ([]byte, []int) { return fileDescriptorClientConfig, []int{1} } +var xxx_messageInfo_ServiceConfig proto.InternalMessageInfo // Defines the transport config on how to call Mixer. type TransportConfig struct { @@ -113,14 +175,14 @@ type TransportConfig struct { DisableReportBatch bool `protobuf:"varint,3,opt,name=disable_report_batch,json=disableReportBatch,proto3" json:"disable_report_batch,omitempty"` // Specifies the behavior when the client is unable to connect to Mixer. // This is the mesh level policy. The default value for policy is FAIL_OPEN. - NetworkFailPolicy *NetworkFailPolicy `protobuf:"bytes,4,opt,name=network_fail_policy,json=networkFailPolicy" json:"network_fail_policy,omitempty"` - // Specify refresh interval to write mixer client statistics to Envoy share + NetworkFailPolicy *NetworkFailPolicy `protobuf:"bytes,4,opt,name=network_fail_policy,json=networkFailPolicy,proto3" json:"network_fail_policy,omitempty"` + // Specify refresh interval to write Mixer client statistics to Envoy share // memory. If not specified, the interval is 10 seconds. - StatsUpdateInterval *google_protobuf1.Duration `protobuf:"bytes,5,opt,name=stats_update_interval,json=statsUpdateInterval" json:"stats_update_interval,omitempty"` + StatsUpdateInterval *types.Duration `protobuf:"bytes,5,opt,name=stats_update_interval,json=statsUpdateInterval,proto3" json:"stats_update_interval,omitempty"` // Name of the cluster that will forward check calls to a pool of mixer // servers. Defaults to "mixer_server". By using different names for // checkCluster and reportCluster, it is possible to have one set of - // mixer servers handle check calls, while another set of mixer servers + // Mixer servers handle check calls, while another set of Mixer servers // handle report calls. // // NOTE: Any value other than the default "mixer_server" will require the @@ -129,79 +191,233 @@ type TransportConfig struct { // Name of the cluster that will forward report calls to a pool of mixer // servers. Defaults to "mixer_server". By using different names for // checkCluster and reportCluster, it is possible to have one set of - // mixer servers handle check calls, while another set of mixer servers + // Mixer servers handle check calls, while another set of Mixer servers // handle report calls. // // NOTE: Any value other than the default "mixer_server" will require the // Istio Grafana dashboards to be reconfigured to use the new name. ReportCluster string `protobuf:"bytes,7,opt,name=report_cluster,json=reportCluster,proto3" json:"report_cluster,omitempty"` - // Default attributes to forward to mixer upstream. This typically + // Default attributes to forward to Mixer upstream. This typically // includes the "source.ip" and "source.uid" attributes. These // attributes are consumed by the proxy in front of mixer. - AttributesForMixerProxy *istio_mixer_v1.Attributes `protobuf:"bytes,8,opt,name=attributes_for_mixer_proxy,json=attributesForMixerProxy" json:"attributes_for_mixer_proxy,omitempty"` + AttributesForMixerProxy *v1.Attributes `protobuf:"bytes,8,opt,name=attributes_for_mixer_proxy,json=attributesForMixerProxy,proto3" json:"attributes_for_mixer_proxy,omitempty"` +} + +func (m *TransportConfig) Reset() { *m = TransportConfig{} } +func (*TransportConfig) ProtoMessage() {} +func (*TransportConfig) Descriptor() ([]byte, []int) { + return fileDescriptor_27bf0dec365e2f6f, []int{2} +} +func (m *TransportConfig) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TransportConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TransportConfig.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *TransportConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_TransportConfig.Merge(m, src) +} +func (m *TransportConfig) XXX_Size() int { + return m.Size() +} +func (m *TransportConfig) XXX_DiscardUnknown() { + xxx_messageInfo_TransportConfig.DiscardUnknown(m) } -func (m *TransportConfig) Reset() { *m = TransportConfig{} } -func (*TransportConfig) ProtoMessage() {} -func (*TransportConfig) Descriptor() ([]byte, []int) { return fileDescriptorClientConfig, []int{2} } +var xxx_messageInfo_TransportConfig proto.InternalMessageInfo // Defines the client config for HTTP. type HttpClientConfig struct { // The transport config. - Transport *TransportConfig `protobuf:"bytes,1,opt,name=transport" json:"transport,omitempty"` + Transport *TransportConfig `protobuf:"bytes,1,opt,name=transport,proto3" json:"transport,omitempty"` // Map of control configuration indexed by destination.service. This // is used to support per-service configuration for cases where a // mixerclient serves multiple services. - ServiceConfigs map[string]*ServiceConfig `protobuf:"bytes,2,rep,name=service_configs,json=serviceConfigs" json:"service_configs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"` + ServiceConfigs map[string]*ServiceConfig `protobuf:"bytes,2,rep,name=service_configs,json=serviceConfigs,proto3" json:"service_configs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Default destination service name if none was specified in the // client request. DefaultDestinationService string `protobuf:"bytes,3,opt,name=default_destination_service,json=defaultDestinationService,proto3" json:"default_destination_service,omitempty"` // Default attributes to send to Mixer in both Check and // Report. This typically includes "destination.ip" and // "destination.uid" attributes. - MixerAttributes *istio_mixer_v1.Attributes `protobuf:"bytes,4,opt,name=mixer_attributes,json=mixerAttributes" json:"mixer_attributes,omitempty"` + MixerAttributes *v1.Attributes `protobuf:"bytes,4,opt,name=mixer_attributes,json=mixerAttributes,proto3" json:"mixer_attributes,omitempty"` // Default attributes to forward to upstream. This typically // includes the "source.ip" and "source.uid" attributes. - ForwardAttributes *istio_mixer_v1.Attributes `protobuf:"bytes,5,opt,name=forward_attributes,json=forwardAttributes" json:"forward_attributes,omitempty"` + ForwardAttributes *v1.Attributes `protobuf:"bytes,5,opt,name=forward_attributes,json=forwardAttributes,proto3" json:"forward_attributes,omitempty"` } -func (m *HttpClientConfig) Reset() { *m = HttpClientConfig{} } -func (*HttpClientConfig) ProtoMessage() {} -func (*HttpClientConfig) Descriptor() ([]byte, []int) { return fileDescriptorClientConfig, []int{3} } +func (m *HttpClientConfig) Reset() { *m = HttpClientConfig{} } +func (*HttpClientConfig) ProtoMessage() {} +func (*HttpClientConfig) Descriptor() ([]byte, []int) { + return fileDescriptor_27bf0dec365e2f6f, []int{3} +} +func (m *HttpClientConfig) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *HttpClientConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_HttpClientConfig.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *HttpClientConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_HttpClientConfig.Merge(m, src) +} +func (m *HttpClientConfig) XXX_Size() int { + return m.Size() +} +func (m *HttpClientConfig) XXX_DiscardUnknown() { + xxx_messageInfo_HttpClientConfig.DiscardUnknown(m) +} + +var xxx_messageInfo_HttpClientConfig proto.InternalMessageInfo // Defines the client config for TCP. type TcpClientConfig struct { // The transport config. - Transport *TransportConfig `protobuf:"bytes,1,opt,name=transport" json:"transport,omitempty"` + Transport *TransportConfig `protobuf:"bytes,1,opt,name=transport,proto3" json:"transport,omitempty"` // Default attributes to send to Mixer in both Check and // Report. This typically includes "destination.ip" and // "destination.uid" attributes. - MixerAttributes *istio_mixer_v1.Attributes `protobuf:"bytes,2,opt,name=mixer_attributes,json=mixerAttributes" json:"mixer_attributes,omitempty"` - // If set to true, disables mixer check calls. + MixerAttributes *v1.Attributes `protobuf:"bytes,2,opt,name=mixer_attributes,json=mixerAttributes,proto3" json:"mixer_attributes,omitempty"` + // If set to true, disables Mixer check calls. DisableCheckCalls bool `protobuf:"varint,3,opt,name=disable_check_calls,json=disableCheckCalls,proto3" json:"disable_check_calls,omitempty"` - // If set to true, disables mixer check calls. + // If set to true, disables Mixer check calls. DisableReportCalls bool `protobuf:"varint,4,opt,name=disable_report_calls,json=disableReportCalls,proto3" json:"disable_report_calls,omitempty"` // Quota specifications to generate quota requirements. // It applies on the new TCP connections. - ConnectionQuotaSpec *QuotaSpec `protobuf:"bytes,5,opt,name=connection_quota_spec,json=connectionQuotaSpec" json:"connection_quota_spec,omitempty"` + ConnectionQuotaSpec *QuotaSpec `protobuf:"bytes,5,opt,name=connection_quota_spec,json=connectionQuotaSpec,proto3" json:"connection_quota_spec,omitempty"` // Specify report interval to send periodical reports for long TCP // connections. If not specified, the interval is 10 seconds. This interval // should not be less than 1 second, otherwise it will be reset to 1 second. - ReportInterval *google_protobuf1.Duration `protobuf:"bytes,6,opt,name=report_interval,json=reportInterval" json:"report_interval,omitempty"` + ReportInterval *types.Duration `protobuf:"bytes,6,opt,name=report_interval,json=reportInterval,proto3" json:"report_interval,omitempty"` } -func (m *TcpClientConfig) Reset() { *m = TcpClientConfig{} } -func (*TcpClientConfig) ProtoMessage() {} -func (*TcpClientConfig) Descriptor() ([]byte, []int) { return fileDescriptorClientConfig, []int{4} } +func (m *TcpClientConfig) Reset() { *m = TcpClientConfig{} } +func (*TcpClientConfig) ProtoMessage() {} +func (*TcpClientConfig) Descriptor() ([]byte, []int) { + return fileDescriptor_27bf0dec365e2f6f, []int{4} +} +func (m *TcpClientConfig) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TcpClientConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TcpClientConfig.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *TcpClientConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_TcpClientConfig.Merge(m, src) +} +func (m *TcpClientConfig) XXX_Size() int { + return m.Size() +} +func (m *TcpClientConfig) XXX_DiscardUnknown() { + xxx_messageInfo_TcpClientConfig.DiscardUnknown(m) +} + +var xxx_messageInfo_TcpClientConfig proto.InternalMessageInfo func init() { + proto.RegisterEnum("istio.mixer.v1.config.client.NetworkFailPolicy_FailPolicy", NetworkFailPolicy_FailPolicy_name, NetworkFailPolicy_FailPolicy_value) proto.RegisterType((*NetworkFailPolicy)(nil), "istio.mixer.v1.config.client.NetworkFailPolicy") proto.RegisterType((*ServiceConfig)(nil), "istio.mixer.v1.config.client.ServiceConfig") proto.RegisterType((*TransportConfig)(nil), "istio.mixer.v1.config.client.TransportConfig") proto.RegisterType((*HttpClientConfig)(nil), "istio.mixer.v1.config.client.HttpClientConfig") + proto.RegisterMapType((map[string]*ServiceConfig)(nil), "istio.mixer.v1.config.client.HttpClientConfig.ServiceConfigsEntry") proto.RegisterType((*TcpClientConfig)(nil), "istio.mixer.v1.config.client.TcpClientConfig") - proto.RegisterEnum("istio.mixer.v1.config.client.NetworkFailPolicy_FailPolicy", NetworkFailPolicy_FailPolicy_name, NetworkFailPolicy_FailPolicy_value) } + +func init() { + proto.RegisterFile("mixer/v1/config/client/client_config.proto", fileDescriptor_27bf0dec365e2f6f) +} + +var fileDescriptor_27bf0dec365e2f6f = []byte{ + // 954 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0x4d, 0x6f, 0x1a, 0x47, + 0x18, 0xde, 0x05, 0xec, 0x98, 0x71, 0xf8, 0xf0, 0x90, 0xa8, 0x98, 0x54, 0x2b, 0x44, 0x14, 0x95, + 0x36, 0xea, 0xd2, 0xd0, 0x4b, 0x95, 0x43, 0x2b, 0x4c, 0x6c, 0xc5, 0x6a, 0x9c, 0xd0, 0xb5, 0xab, + 0x48, 0xad, 0xaa, 0xd1, 0xb0, 0x0c, 0x30, 0xf2, 0x7a, 0x67, 0x33, 0x3b, 0x60, 0xfb, 0xd6, 0x5f, + 0x50, 0xf5, 0x67, 0xe4, 0x0f, 0xf4, 0x3f, 0xe4, 0xe8, 0x63, 0x8e, 0x35, 0xbe, 0xf4, 0x98, 0x63, + 0xa5, 0x5e, 0xaa, 0x9d, 0x19, 0x58, 0x63, 0xf3, 0x51, 0xaa, 0xf6, 0xc4, 0xec, 0xfb, 0x3e, 0xcf, + 0xcb, 0xec, 0xf3, 0x3e, 0xf3, 0xce, 0x82, 0xcf, 0x4e, 0xe8, 0x19, 0xe1, 0xb5, 0xe1, 0x93, 0x9a, + 0xcb, 0xfc, 0x2e, 0xed, 0xd5, 0x5c, 0x8f, 0x12, 0x5f, 0xe8, 0x1f, 0xa4, 0x82, 0x76, 0xc0, 0x99, + 0x60, 0xf0, 0x63, 0x1a, 0x0a, 0xca, 0x6c, 0xc9, 0xb0, 0x87, 0x4f, 0x6c, 0x9d, 0x54, 0xd0, 0xd2, + 0xbd, 0x1e, 0xeb, 0x31, 0x09, 0xac, 0x45, 0x2b, 0xc5, 0x29, 0x59, 0x3d, 0xc6, 0x7a, 0x1e, 0xa9, + 0xc9, 0xa7, 0xf6, 0xa0, 0x5b, 0xeb, 0x0c, 0x38, 0x16, 0x94, 0xf9, 0x3a, 0xbf, 0x3d, 0xf9, 0x7f, + 0x2c, 0x04, 0xa7, 0xed, 0x81, 0x20, 0xa1, 0x4e, 0x3d, 0x9a, 0xb3, 0x35, 0x1c, 0x50, 0x14, 0x06, + 0xc4, 0xd5, 0xb0, 0xca, 0x1c, 0xd8, 0x9b, 0x01, 0x13, 0x58, 0x61, 0x2a, 0xbf, 0x25, 0xc0, 0xd6, + 0x4b, 0x22, 0x4e, 0x19, 0x3f, 0xde, 0xc3, 0xd4, 0x6b, 0x31, 0x8f, 0xba, 0xe7, 0xd0, 0x01, 0xeb, + 0x81, 0x5c, 0x15, 0xcd, 0xb2, 0x59, 0xcd, 0xd6, 0x9f, 0xda, 0x8b, 0x5e, 0xd0, 0xbe, 0x55, 0xc0, + 0x8e, 0x97, 0x8e, 0xae, 0x04, 0x1f, 0x80, 0xf4, 0x09, 0x3e, 0x43, 0x9c, 0x08, 0x7e, 0x5e, 0x4c, + 0x94, 0xcd, 0x6a, 0xc6, 0xd9, 0x38, 0xc1, 0x67, 0x4e, 0xf4, 0x0c, 0x1b, 0x20, 0xd7, 0xc6, 0x21, + 0x51, 0x59, 0x74, 0x8a, 0xa9, 0x28, 0x26, 0xcb, 0x66, 0x75, 0xb3, 0xbe, 0x6d, 0x2b, 0x99, 0xec, + 0xb1, 0x4c, 0xf6, 0x33, 0x2d, 0x93, 0x93, 0x89, 0x18, 0x92, 0xfe, 0x1a, 0x53, 0x01, 0xbf, 0x01, + 0xd9, 0x49, 0x7d, 0x55, 0x21, 0xb5, 0xac, 0xc2, 0xdd, 0xf1, 0xff, 0x47, 0x05, 0x2a, 0x8f, 0x01, + 0xb8, 0x26, 0x41, 0x06, 0xa4, 0xf7, 0x1a, 0xfb, 0x2f, 0xd0, 0xab, 0xd6, 0xee, 0xcb, 0xbc, 0x01, + 0xb3, 0x00, 0xc8, 0xc7, 0xe6, 0x8b, 0x57, 0x87, 0xbb, 0x79, 0xb3, 0xf2, 0x57, 0x12, 0x64, 0x0e, + 0x09, 0x1f, 0x52, 0x97, 0x34, 0xa5, 0x16, 0xd0, 0x06, 0x85, 0x0e, 0x0d, 0x71, 0xdb, 0x23, 0xc8, + 0xed, 0x13, 0xf7, 0x18, 0xb9, 0xd8, 0xf3, 0x42, 0x29, 0xe0, 0x86, 0xb3, 0xa5, 0x53, 0xcd, 0x28, + 0xd3, 0x8c, 0x12, 0xf0, 0x0b, 0x70, 0x6f, 0x8c, 0xe7, 0x24, 0x60, 0x5c, 0x68, 0x42, 0x42, 0x12, + 0xa0, 0xce, 0x39, 0x32, 0xa5, 0x18, 0xbb, 0x20, 0x2f, 0x1b, 0x80, 0x62, 0x43, 0x68, 0x95, 0x4a, + 0x37, 0xfb, 0xd3, 0x98, 0x20, 0x9c, 0x9c, 0x0c, 0xc6, 0x01, 0x78, 0x00, 0x32, 0x7d, 0x21, 0x02, + 0x34, 0x76, 0x4b, 0x31, 0x55, 0x4e, 0x56, 0x37, 0xeb, 0x9f, 0x2e, 0xee, 0xf1, 0xf3, 0xa3, 0xa3, + 0x56, 0xa3, 0xb5, 0x7f, 0x18, 0x10, 0xd7, 0xd9, 0x8c, 0xf8, 0x8d, 0x80, 0x46, 0x0f, 0x70, 0x0f, + 0x00, 0x69, 0x28, 0x55, 0x6b, 0x4d, 0xd6, 0xfa, 0x64, 0x71, 0xad, 0xef, 0x22, 0xbc, 0xac, 0x94, + 0x7e, 0x33, 0x5e, 0x42, 0x04, 0x0a, 0xbe, 0xf2, 0x11, 0xea, 0x62, 0xea, 0x21, 0x6d, 0xc0, 0x3b, + 0xf2, 0x05, 0x6b, 0x2b, 0x1a, 0xd0, 0xd9, 0xf2, 0x6f, 0x99, 0x7a, 0x1f, 0xc0, 0x2e, 0xe3, 0xa7, + 0x98, 0x77, 0xae, 0x0b, 0xb8, 0xb1, 0x54, 0xc0, 0x2d, 0xcd, 0x8a, 0x43, 0x95, 0x3f, 0x93, 0x20, + 0x77, 0xc4, 0xb1, 0x1f, 0xca, 0xe6, 0xcc, 0xed, 0xbf, 0xdb, 0x27, 0xb3, 0xfb, 0xef, 0xf6, 0xc9, + 0x75, 0xbc, 0xd2, 0x4f, 0xe1, 0x13, 0x53, 0x78, 0xa9, 0x94, 0xc2, 0xdf, 0xf6, 0x4b, 0x1b, 0x0b, + 0xb7, 0x2f, 0x1d, 0x70, 0xd3, 0x2f, 0x3b, 0x51, 0x66, 0x9e, 0xa2, 0xa9, 0xff, 0x4c, 0xd1, 0x03, + 0x70, 0x3f, 0x14, 0x58, 0x84, 0x68, 0x10, 0x74, 0xb0, 0x20, 0x88, 0xfa, 0x82, 0xf0, 0x21, 0xf6, + 0x8a, 0x6b, 0xcb, 0x4e, 0x5e, 0x41, 0xf2, 0xbe, 0x97, 0xb4, 0x7d, 0xcd, 0x82, 0x0f, 0x41, 0x46, + 0x2b, 0xe7, 0x0d, 0x42, 0x41, 0x78, 0x71, 0xbd, 0x6c, 0x56, 0xd3, 0xce, 0x5d, 0x19, 0x6c, 0xaa, + 0x18, 0x7c, 0x04, 0xb2, 0xe3, 0xe3, 0xa2, 0x51, 0x77, 0x24, 0x2a, 0xa3, 0xa2, 0x63, 0xd8, 0x6b, + 0x50, 0x8a, 0x9b, 0x8c, 0xba, 0x8c, 0x23, 0x75, 0x74, 0x02, 0xce, 0xce, 0xce, 0xff, 0x41, 0xd3, + 0x3f, 0x8a, 0xd9, 0x7b, 0x8c, 0x1f, 0x44, 0x88, 0x56, 0x44, 0xad, 0xfc, 0x92, 0x02, 0xf9, 0xe7, + 0x42, 0x04, 0x4d, 0xa9, 0x93, 0xee, 0xfd, 0xb7, 0x20, 0x2d, 0xc6, 0x76, 0x90, 0x1d, 0xdf, 0xac, + 0x7f, 0xbe, 0x58, 0xdf, 0x1b, 0xee, 0x71, 0x62, 0x3e, 0x3c, 0x06, 0xb9, 0x50, 0x4d, 0x16, 0x7d, + 0xc9, 0x44, 0x33, 0x21, 0x3a, 0x55, 0x3b, 0x4b, 0x4e, 0xe8, 0x8d, 0x5d, 0xd9, 0x53, 0xf3, 0x29, + 0xdc, 0xf5, 0x05, 0x3f, 0x77, 0xb2, 0xe1, 0x54, 0x10, 0x7e, 0x0d, 0x1e, 0x74, 0x48, 0x17, 0x0f, + 0x3c, 0x81, 0x3a, 0x24, 0x14, 0xd4, 0x97, 0xfd, 0x41, 0x1a, 0x25, 0xcd, 0x95, 0x76, 0xb6, 0x35, + 0xe4, 0x59, 0x8c, 0xd0, 0xb5, 0x67, 0xce, 0xa4, 0xd4, 0xea, 0x33, 0x69, 0xf6, 0xd9, 0x5c, 0xfb, + 0x17, 0x67, 0xb3, 0xe4, 0x83, 0xc2, 0x8c, 0x17, 0x87, 0x79, 0x90, 0x3c, 0x26, 0xea, 0x3e, 0x4b, + 0x3b, 0xd1, 0x12, 0x36, 0xc0, 0xda, 0x10, 0x7b, 0x03, 0x75, 0xe4, 0x36, 0xeb, 0x8f, 0x17, 0xab, + 0x3b, 0x55, 0xd3, 0x51, 0xcc, 0xa7, 0x89, 0xaf, 0xcc, 0xca, 0xdb, 0x68, 0x16, 0xb8, 0xff, 0xa3, + 0x1f, 0x66, 0x49, 0x9c, 0x58, 0x5d, 0xe2, 0x39, 0xf7, 0x53, 0x72, 0xd5, 0xfb, 0x29, 0x35, 0xf7, + 0x7e, 0xfa, 0x11, 0xdc, 0x77, 0x99, 0xef, 0x13, 0x57, 0x5a, 0x68, 0xea, 0x52, 0x30, 0x57, 0xb9, + 0x14, 0x0a, 0x71, 0x95, 0x49, 0x10, 0xee, 0x80, 0x9c, 0xde, 0xc6, 0x64, 0xca, 0xac, 0x2f, 0x9b, + 0x32, 0x7a, 0x52, 0x8c, 0x07, 0xcc, 0xce, 0x4f, 0xef, 0x2e, 0x2d, 0xe3, 0xe2, 0xd2, 0x32, 0xde, + 0x5f, 0x5a, 0xc6, 0x87, 0x4b, 0xcb, 0xf8, 0x79, 0x64, 0x99, 0x6f, 0x47, 0x96, 0xf1, 0x6e, 0x64, + 0x99, 0x17, 0x23, 0xcb, 0xfc, 0x7d, 0x64, 0x99, 0x7f, 0x8c, 0x2c, 0xe3, 0xc3, 0xc8, 0x32, 0x7f, + 0xbd, 0xb2, 0x8c, 0x8b, 0x2b, 0xcb, 0x78, 0x7f, 0x65, 0x19, 0x3f, 0x3c, 0x54, 0x5b, 0xa7, 0x2c, + 0xfa, 0xc6, 0xaa, 0xcd, 0xfe, 0xae, 0x6a, 0xaf, 0xcb, 0x1d, 0x7c, 0xf9, 0x77, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x1b, 0xe3, 0x81, 0xd2, 0x3a, 0x0a, 0x00, 0x00, +} + func (x NetworkFailPolicy_FailPolicy) String() string { s, ok := NetworkFailPolicy_FailPolicy_name[int32(x)] if ok { @@ -609,6 +825,9 @@ func encodeVarintClientConfig(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *NetworkFailPolicy) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Policy != 0 { @@ -629,6 +848,9 @@ func (m *NetworkFailPolicy) Size() (n int) { } func (m *ServiceConfig) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.DisableCheckCalls { @@ -665,6 +887,9 @@ func (m *ServiceConfig) Size() (n int) { } func (m *TransportConfig) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.DisableCheckCache { @@ -700,6 +925,9 @@ func (m *TransportConfig) Size() (n int) { } func (m *HttpClientConfig) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Transport != nil { @@ -735,6 +963,9 @@ func (m *HttpClientConfig) Size() (n int) { } func (m *TcpClientConfig) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Transport != nil { @@ -782,8 +1013,8 @@ func (this *NetworkFailPolicy) String() string { s := strings.Join([]string{`&NetworkFailPolicy{`, `Policy:` + fmt.Sprintf("%v", this.Policy) + `,`, `MaxRetry:` + fmt.Sprintf("%v", this.MaxRetry) + `,`, - `BaseRetryWait:` + strings.Replace(fmt.Sprintf("%v", this.BaseRetryWait), "Duration", "google_protobuf1.Duration", 1) + `,`, - `MaxRetryWait:` + strings.Replace(fmt.Sprintf("%v", this.MaxRetryWait), "Duration", "google_protobuf1.Duration", 1) + `,`, + `BaseRetryWait:` + strings.Replace(fmt.Sprintf("%v", this.BaseRetryWait), "Duration", "types.Duration", 1) + `,`, + `MaxRetryWait:` + strings.Replace(fmt.Sprintf("%v", this.MaxRetryWait), "Duration", "types.Duration", 1) + `,`, `}`, }, "") return s @@ -795,11 +1026,11 @@ func (this *ServiceConfig) String() string { s := strings.Join([]string{`&ServiceConfig{`, `DisableCheckCalls:` + fmt.Sprintf("%v", this.DisableCheckCalls) + `,`, `DisableReportCalls:` + fmt.Sprintf("%v", this.DisableReportCalls) + `,`, - `MixerAttributes:` + strings.Replace(fmt.Sprintf("%v", this.MixerAttributes), "Attributes", "istio_mixer_v1.Attributes", 1) + `,`, + `MixerAttributes:` + strings.Replace(fmt.Sprintf("%v", this.MixerAttributes), "Attributes", "v1.Attributes", 1) + `,`, `HttpApiSpec:` + strings.Replace(fmt.Sprintf("%v", this.HttpApiSpec), "HTTPAPISpec", "HTTPAPISpec", 1) + `,`, `QuotaSpec:` + strings.Replace(fmt.Sprintf("%v", this.QuotaSpec), "QuotaSpec", "QuotaSpec", 1) + `,`, `NetworkFailPolicy:` + strings.Replace(fmt.Sprintf("%v", this.NetworkFailPolicy), "NetworkFailPolicy", "NetworkFailPolicy", 1) + `,`, - `ForwardAttributes:` + strings.Replace(fmt.Sprintf("%v", this.ForwardAttributes), "Attributes", "istio_mixer_v1.Attributes", 1) + `,`, + `ForwardAttributes:` + strings.Replace(fmt.Sprintf("%v", this.ForwardAttributes), "Attributes", "v1.Attributes", 1) + `,`, `}`, }, "") return s @@ -813,10 +1044,10 @@ func (this *TransportConfig) String() string { `DisableQuotaCache:` + fmt.Sprintf("%v", this.DisableQuotaCache) + `,`, `DisableReportBatch:` + fmt.Sprintf("%v", this.DisableReportBatch) + `,`, `NetworkFailPolicy:` + strings.Replace(fmt.Sprintf("%v", this.NetworkFailPolicy), "NetworkFailPolicy", "NetworkFailPolicy", 1) + `,`, - `StatsUpdateInterval:` + strings.Replace(fmt.Sprintf("%v", this.StatsUpdateInterval), "Duration", "google_protobuf1.Duration", 1) + `,`, + `StatsUpdateInterval:` + strings.Replace(fmt.Sprintf("%v", this.StatsUpdateInterval), "Duration", "types.Duration", 1) + `,`, `CheckCluster:` + fmt.Sprintf("%v", this.CheckCluster) + `,`, `ReportCluster:` + fmt.Sprintf("%v", this.ReportCluster) + `,`, - `AttributesForMixerProxy:` + strings.Replace(fmt.Sprintf("%v", this.AttributesForMixerProxy), "Attributes", "istio_mixer_v1.Attributes", 1) + `,`, + `AttributesForMixerProxy:` + strings.Replace(fmt.Sprintf("%v", this.AttributesForMixerProxy), "Attributes", "v1.Attributes", 1) + `,`, `}`, }, "") return s @@ -829,7 +1060,7 @@ func (this *HttpClientConfig) String() string { for k, _ := range this.ServiceConfigs { keysForServiceConfigs = append(keysForServiceConfigs, k) } - sortkeys.Strings(keysForServiceConfigs) + github_com_gogo_protobuf_sortkeys.Strings(keysForServiceConfigs) mapStringForServiceConfigs := "map[string]*ServiceConfig{" for _, k := range keysForServiceConfigs { mapStringForServiceConfigs += fmt.Sprintf("%v: %v,", k, this.ServiceConfigs[k]) @@ -839,8 +1070,8 @@ func (this *HttpClientConfig) String() string { `Transport:` + strings.Replace(fmt.Sprintf("%v", this.Transport), "TransportConfig", "TransportConfig", 1) + `,`, `ServiceConfigs:` + mapStringForServiceConfigs + `,`, `DefaultDestinationService:` + fmt.Sprintf("%v", this.DefaultDestinationService) + `,`, - `MixerAttributes:` + strings.Replace(fmt.Sprintf("%v", this.MixerAttributes), "Attributes", "istio_mixer_v1.Attributes", 1) + `,`, - `ForwardAttributes:` + strings.Replace(fmt.Sprintf("%v", this.ForwardAttributes), "Attributes", "istio_mixer_v1.Attributes", 1) + `,`, + `MixerAttributes:` + strings.Replace(fmt.Sprintf("%v", this.MixerAttributes), "Attributes", "v1.Attributes", 1) + `,`, + `ForwardAttributes:` + strings.Replace(fmt.Sprintf("%v", this.ForwardAttributes), "Attributes", "v1.Attributes", 1) + `,`, `}`, }, "") return s @@ -851,11 +1082,11 @@ func (this *TcpClientConfig) String() string { } s := strings.Join([]string{`&TcpClientConfig{`, `Transport:` + strings.Replace(fmt.Sprintf("%v", this.Transport), "TransportConfig", "TransportConfig", 1) + `,`, - `MixerAttributes:` + strings.Replace(fmt.Sprintf("%v", this.MixerAttributes), "Attributes", "istio_mixer_v1.Attributes", 1) + `,`, + `MixerAttributes:` + strings.Replace(fmt.Sprintf("%v", this.MixerAttributes), "Attributes", "v1.Attributes", 1) + `,`, `DisableCheckCalls:` + fmt.Sprintf("%v", this.DisableCheckCalls) + `,`, `DisableReportCalls:` + fmt.Sprintf("%v", this.DisableReportCalls) + `,`, `ConnectionQuotaSpec:` + strings.Replace(fmt.Sprintf("%v", this.ConnectionQuotaSpec), "QuotaSpec", "QuotaSpec", 1) + `,`, - `ReportInterval:` + strings.Replace(fmt.Sprintf("%v", this.ReportInterval), "Duration", "google_protobuf1.Duration", 1) + `,`, + `ReportInterval:` + strings.Replace(fmt.Sprintf("%v", this.ReportInterval), "Duration", "types.Duration", 1) + `,`, `}`, }, "") return s @@ -883,7 +1114,7 @@ func (m *NetworkFailPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -911,7 +1142,7 @@ func (m *NetworkFailPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Policy |= (NetworkFailPolicy_FailPolicy(b) & 0x7F) << shift + m.Policy |= NetworkFailPolicy_FailPolicy(b&0x7F) << shift if b < 0x80 { break } @@ -930,7 +1161,7 @@ func (m *NetworkFailPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.MaxRetry |= (uint32(b) & 0x7F) << shift + m.MaxRetry |= uint32(b&0x7F) << shift if b < 0x80 { break } @@ -949,7 +1180,7 @@ func (m *NetworkFailPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -958,11 +1189,14 @@ func (m *NetworkFailPolicy) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } if m.BaseRetryWait == nil { - m.BaseRetryWait = &google_protobuf1.Duration{} + m.BaseRetryWait = &types.Duration{} } if err := m.BaseRetryWait.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -982,7 +1216,7 @@ func (m *NetworkFailPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -991,11 +1225,14 @@ func (m *NetworkFailPolicy) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } if m.MaxRetryWait == nil { - m.MaxRetryWait = &google_protobuf1.Duration{} + m.MaxRetryWait = &types.Duration{} } if err := m.MaxRetryWait.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1010,6 +1247,9 @@ func (m *NetworkFailPolicy) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthClientConfig } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthClientConfig + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1037,7 +1277,7 @@ func (m *ServiceConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1065,7 +1305,7 @@ func (m *ServiceConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1085,7 +1325,7 @@ func (m *ServiceConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1105,7 +1345,7 @@ func (m *ServiceConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1114,11 +1354,14 @@ func (m *ServiceConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } if m.MixerAttributes == nil { - m.MixerAttributes = &istio_mixer_v1.Attributes{} + m.MixerAttributes = &v1.Attributes{} } if err := m.MixerAttributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1138,7 +1381,7 @@ func (m *ServiceConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1147,6 +1390,9 @@ func (m *ServiceConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1169,7 +1415,7 @@ func (m *ServiceConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1178,6 +1424,9 @@ func (m *ServiceConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1200,7 +1449,7 @@ func (m *ServiceConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1209,6 +1458,9 @@ func (m *ServiceConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1233,7 +1485,7 @@ func (m *ServiceConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1242,11 +1494,14 @@ func (m *ServiceConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } if m.ForwardAttributes == nil { - m.ForwardAttributes = &istio_mixer_v1.Attributes{} + m.ForwardAttributes = &v1.Attributes{} } if err := m.ForwardAttributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1261,6 +1516,9 @@ func (m *ServiceConfig) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthClientConfig } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthClientConfig + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1288,7 +1546,7 @@ func (m *TransportConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1316,7 +1574,7 @@ func (m *TransportConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1336,7 +1594,7 @@ func (m *TransportConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1356,7 +1614,7 @@ func (m *TransportConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1376,7 +1634,7 @@ func (m *TransportConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1385,6 +1643,9 @@ func (m *TransportConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1409,7 +1670,7 @@ func (m *TransportConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1418,11 +1679,14 @@ func (m *TransportConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } if m.StatsUpdateInterval == nil { - m.StatsUpdateInterval = &google_protobuf1.Duration{} + m.StatsUpdateInterval = &types.Duration{} } if err := m.StatsUpdateInterval.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1442,7 +1706,7 @@ func (m *TransportConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1452,6 +1716,9 @@ func (m *TransportConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1471,7 +1738,7 @@ func (m *TransportConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1481,6 +1748,9 @@ func (m *TransportConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1500,7 +1770,7 @@ func (m *TransportConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1509,11 +1779,14 @@ func (m *TransportConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } if m.AttributesForMixerProxy == nil { - m.AttributesForMixerProxy = &istio_mixer_v1.Attributes{} + m.AttributesForMixerProxy = &v1.Attributes{} } if err := m.AttributesForMixerProxy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1528,6 +1801,9 @@ func (m *TransportConfig) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthClientConfig } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthClientConfig + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1555,7 +1831,7 @@ func (m *HttpClientConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1583,7 +1859,7 @@ func (m *HttpClientConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1592,6 +1868,9 @@ func (m *HttpClientConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1616,7 +1895,7 @@ func (m *HttpClientConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1625,6 +1904,9 @@ func (m *HttpClientConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1645,7 +1927,7 @@ func (m *HttpClientConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1662,7 +1944,7 @@ func (m *HttpClientConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1672,6 +1954,9 @@ func (m *HttpClientConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthClientConfig + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -1688,7 +1973,7 @@ func (m *HttpClientConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapmsglen |= (int(b) & 0x7F) << shift + mapmsglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1697,7 +1982,7 @@ func (m *HttpClientConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postmsgIndex := iNdEx + mapmsglen - if mapmsglen < 0 { + if postmsgIndex < 0 { return ErrInvalidLengthClientConfig } if postmsgIndex > l { @@ -1739,7 +2024,7 @@ func (m *HttpClientConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1749,6 +2034,9 @@ func (m *HttpClientConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1768,7 +2056,7 @@ func (m *HttpClientConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1777,11 +2065,14 @@ func (m *HttpClientConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } if m.MixerAttributes == nil { - m.MixerAttributes = &istio_mixer_v1.Attributes{} + m.MixerAttributes = &v1.Attributes{} } if err := m.MixerAttributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1801,7 +2092,7 @@ func (m *HttpClientConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1810,11 +2101,14 @@ func (m *HttpClientConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } if m.ForwardAttributes == nil { - m.ForwardAttributes = &istio_mixer_v1.Attributes{} + m.ForwardAttributes = &v1.Attributes{} } if err := m.ForwardAttributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1829,6 +2123,9 @@ func (m *HttpClientConfig) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthClientConfig } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthClientConfig + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1856,7 +2153,7 @@ func (m *TcpClientConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1884,7 +2181,7 @@ func (m *TcpClientConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1893,6 +2190,9 @@ func (m *TcpClientConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1917,7 +2217,7 @@ func (m *TcpClientConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1926,11 +2226,14 @@ func (m *TcpClientConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } if m.MixerAttributes == nil { - m.MixerAttributes = &istio_mixer_v1.Attributes{} + m.MixerAttributes = &v1.Attributes{} } if err := m.MixerAttributes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1950,7 +2253,7 @@ func (m *TcpClientConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1970,7 +2273,7 @@ func (m *TcpClientConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1990,7 +2293,7 @@ func (m *TcpClientConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1999,6 +2302,9 @@ func (m *TcpClientConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2023,7 +2329,7 @@ func (m *TcpClientConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2032,11 +2338,14 @@ func (m *TcpClientConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthClientConfig } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthClientConfig + } if postIndex > l { return io.ErrUnexpectedEOF } if m.ReportInterval == nil { - m.ReportInterval = &google_protobuf1.Duration{} + m.ReportInterval = &types.Duration{} } if err := m.ReportInterval.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -2051,6 +2360,9 @@ func (m *TcpClientConfig) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthClientConfig } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthClientConfig + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2117,10 +2429,13 @@ func skipClientConfig(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthClientConfig } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthClientConfig + } return iNdEx, nil case 3: for { @@ -2149,6 +2464,9 @@ func skipClientConfig(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthClientConfig + } } return iNdEx, nil case 4: @@ -2167,71 +2485,3 @@ var ( ErrInvalidLengthClientConfig = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowClientConfig = fmt.Errorf("proto: integer overflow") ) - -func init() { - proto.RegisterFile("mixer/v1/config/client/client_config.proto", fileDescriptorClientConfig) -} - -var fileDescriptorClientConfig = []byte{ - // 945 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0x4d, 0x6f, 0x1a, 0x47, - 0x18, 0x66, 0x01, 0x3b, 0x66, 0x08, 0x1f, 0x1e, 0x12, 0x15, 0x93, 0x6a, 0x85, 0x88, 0xa2, 0xd2, - 0x46, 0x5d, 0x1a, 0x7a, 0xa9, 0x72, 0x68, 0x85, 0x89, 0xad, 0x58, 0x8d, 0x13, 0xba, 0x76, 0x14, - 0xa9, 0x3d, 0x8c, 0x86, 0x65, 0x80, 0x91, 0xd7, 0x3b, 0x9b, 0xd9, 0x01, 0xdb, 0xb7, 0xfe, 0x82, - 0xaa, 0x3f, 0x23, 0x7f, 0xa0, 0xff, 0x21, 0xc7, 0x1c, 0x7b, 0xac, 0xe9, 0xa5, 0x47, 0x1f, 0x2b, - 0xf5, 0x52, 0xed, 0xcc, 0x2c, 0x6b, 0x6c, 0x3e, 0x4a, 0xd5, 0x9e, 0x98, 0x7d, 0xdf, 0xe7, 0x79, - 0x77, 0xf6, 0x79, 0x9f, 0x79, 0x07, 0xf0, 0xd9, 0x29, 0x3d, 0x27, 0xbc, 0x31, 0x7e, 0xd2, 0x70, - 0x98, 0xd7, 0xa7, 0x83, 0x86, 0xe3, 0x52, 0xe2, 0x09, 0xfd, 0x83, 0x54, 0xd0, 0xf2, 0x39, 0x13, - 0x0c, 0x7e, 0x4c, 0x03, 0x41, 0x99, 0x25, 0x19, 0xd6, 0xf8, 0x89, 0xa5, 0x93, 0x0a, 0x5a, 0xb9, - 0x37, 0x60, 0x03, 0x26, 0x81, 0x8d, 0x70, 0xa5, 0x38, 0x15, 0x73, 0xc0, 0xd8, 0xc0, 0x25, 0x0d, - 0xf9, 0xd4, 0x1d, 0xf5, 0x1b, 0xbd, 0x11, 0xc7, 0x82, 0x32, 0x4f, 0xe7, 0x77, 0xa6, 0xef, 0xc7, - 0x42, 0x70, 0xda, 0x1d, 0x09, 0x12, 0xe8, 0xd4, 0xa3, 0x05, 0x5b, 0xc3, 0x3e, 0x45, 0x81, 0x4f, - 0x1c, 0x0d, 0xab, 0x2d, 0x80, 0xbd, 0x1d, 0x31, 0x81, 0x15, 0xa6, 0xf6, 0x4b, 0x12, 0x6c, 0xbf, - 0x24, 0xe2, 0x8c, 0xf1, 0x93, 0x7d, 0x4c, 0xdd, 0x0e, 0x73, 0xa9, 0x73, 0x01, 0x6d, 0xb0, 0xe9, - 0xcb, 0x55, 0xd9, 0xa8, 0x1a, 0xf5, 0x7c, 0xf3, 0xa9, 0xb5, 0xec, 0x03, 0xad, 0x5b, 0x05, 0xac, - 0x78, 0x69, 0xeb, 0x4a, 0xf0, 0x01, 0xc8, 0x9c, 0xe2, 0x73, 0xc4, 0x89, 0xe0, 0x17, 0xe5, 0x64, - 0xd5, 0xa8, 0xe7, 0xec, 0xad, 0x53, 0x7c, 0x6e, 0x87, 0xcf, 0xb0, 0x05, 0x0a, 0x5d, 0x1c, 0x10, - 0x95, 0x45, 0x67, 0x98, 0x8a, 0x72, 0xaa, 0x6a, 0xd4, 0xb3, 0xcd, 0x1d, 0x4b, 0xc9, 0x64, 0x45, - 0x32, 0x59, 0xcf, 0xb4, 0x4c, 0x76, 0x2e, 0x64, 0x48, 0xfa, 0x1b, 0x4c, 0x05, 0xfc, 0x06, 0xe4, - 0xa7, 0xf5, 0x55, 0x85, 0xf4, 0xaa, 0x0a, 0x77, 0xa3, 0xf7, 0x87, 0x05, 0x6a, 0x8f, 0x01, 0xb8, - 0x26, 0x41, 0x0e, 0x64, 0xf6, 0x5b, 0x07, 0x2f, 0xd0, 0xab, 0xce, 0xde, 0xcb, 0x62, 0x02, 0xe6, - 0x01, 0x90, 0x8f, 0xed, 0x17, 0xaf, 0x8e, 0xf6, 0x8a, 0x46, 0xed, 0xaf, 0x14, 0xc8, 0x1d, 0x11, - 0x3e, 0xa6, 0x0e, 0x69, 0x4b, 0x2d, 0xa0, 0x05, 0x4a, 0x3d, 0x1a, 0xe0, 0xae, 0x4b, 0x90, 0x33, - 0x24, 0xce, 0x09, 0x72, 0xb0, 0xeb, 0x06, 0x52, 0xc0, 0x2d, 0x7b, 0x5b, 0xa7, 0xda, 0x61, 0xa6, - 0x1d, 0x26, 0xe0, 0x17, 0xe0, 0x5e, 0x84, 0xe7, 0xc4, 0x67, 0x5c, 0x68, 0x42, 0x52, 0x12, 0xa0, - 0xce, 0xd9, 0x32, 0xa5, 0x18, 0x7b, 0xa0, 0x28, 0x1b, 0x80, 0x62, 0x43, 0x68, 0x95, 0x2a, 0x37, - 0xfb, 0xd3, 0x9a, 0x22, 0xec, 0x82, 0x0c, 0xc6, 0x01, 0x78, 0x08, 0x72, 0x43, 0x21, 0x7c, 0x14, - 0xb9, 0xa5, 0x9c, 0xae, 0xa6, 0xea, 0xd9, 0xe6, 0xa7, 0xcb, 0x7b, 0xfc, 0xfc, 0xf8, 0xb8, 0xd3, - 0xea, 0x1c, 0x1c, 0xf9, 0xc4, 0xb1, 0xb3, 0x21, 0xbf, 0xe5, 0xd3, 0xf0, 0x01, 0xee, 0x03, 0x20, - 0x0d, 0xa5, 0x6a, 0x6d, 0xc8, 0x5a, 0x9f, 0x2c, 0xaf, 0xf5, 0x5d, 0x88, 0x97, 0x95, 0x32, 0x6f, - 0xa3, 0x25, 0x44, 0xa0, 0xe4, 0x29, 0x1f, 0xa1, 0x3e, 0xa6, 0x2e, 0xd2, 0x06, 0xbc, 0x23, 0x3f, - 0xb0, 0xb1, 0xa6, 0x01, 0xed, 0x6d, 0xef, 0x96, 0xa9, 0x0f, 0x00, 0xec, 0x33, 0x7e, 0x86, 0x79, - 0xef, 0xba, 0x80, 0x5b, 0x2b, 0x05, 0xdc, 0xd6, 0xac, 0x38, 0x54, 0xfb, 0x33, 0x05, 0x0a, 0xc7, - 0x1c, 0x7b, 0x81, 0x6c, 0xce, 0xc2, 0xfe, 0x3b, 0x43, 0x32, 0xbf, 0xff, 0xce, 0x90, 0x5c, 0xc7, - 0x2b, 0xfd, 0x14, 0x3e, 0x39, 0x83, 0x97, 0x4a, 0x29, 0xfc, 0x6d, 0xbf, 0x74, 0xb1, 0x70, 0x86, - 0xd2, 0x01, 0x37, 0xfd, 0xb2, 0x1b, 0x66, 0x16, 0x29, 0x9a, 0xfe, 0xcf, 0x14, 0x3d, 0x04, 0xf7, - 0x03, 0x81, 0x45, 0x80, 0x46, 0x7e, 0x0f, 0x0b, 0x82, 0xa8, 0x27, 0x08, 0x1f, 0x63, 0xb7, 0xbc, - 0xb1, 0xea, 0xe4, 0x95, 0x24, 0xef, 0xb5, 0xa4, 0x1d, 0x68, 0x16, 0x7c, 0x08, 0x72, 0x5a, 0x39, - 0x77, 0x14, 0x08, 0xc2, 0xcb, 0x9b, 0x55, 0xa3, 0x9e, 0xb1, 0xef, 0xca, 0x60, 0x5b, 0xc5, 0xe0, - 0x23, 0x90, 0x8f, 0x8e, 0x8b, 0x46, 0xdd, 0x91, 0xa8, 0x9c, 0x8a, 0x46, 0xb0, 0x37, 0xa0, 0x12, - 0x37, 0x19, 0xf5, 0x19, 0x47, 0xea, 0xe8, 0xf8, 0x9c, 0x9d, 0x5f, 0xfc, 0x83, 0xa6, 0x7f, 0x14, - 0xb3, 0xf7, 0x19, 0x3f, 0x0c, 0x11, 0x9d, 0x90, 0x5a, 0xfb, 0x29, 0x0d, 0x8a, 0xcf, 0x85, 0xf0, - 0xdb, 0x52, 0x27, 0xdd, 0xfb, 0x6f, 0x41, 0x46, 0x44, 0x76, 0x90, 0x1d, 0xcf, 0x36, 0x3f, 0x5f, - 0xae, 0xef, 0x0d, 0xf7, 0xd8, 0x31, 0x1f, 0x9e, 0x80, 0x42, 0xa0, 0x26, 0x8b, 0xbe, 0x64, 0xc2, - 0x99, 0x10, 0x9e, 0xaa, 0xdd, 0x15, 0x27, 0xf4, 0xc6, 0xae, 0xac, 0x99, 0xf9, 0x14, 0xec, 0x79, - 0x82, 0x5f, 0xd8, 0xf9, 0x60, 0x26, 0x08, 0xbf, 0x06, 0x0f, 0x7a, 0xa4, 0x8f, 0x47, 0xae, 0x40, - 0x3d, 0x12, 0x08, 0xea, 0xc9, 0xfe, 0x20, 0x8d, 0x92, 0xe6, 0xca, 0xd8, 0x3b, 0x1a, 0xf2, 0x2c, - 0x46, 0xe8, 0xda, 0x73, 0x67, 0x52, 0x7a, 0xfd, 0x99, 0x34, 0xff, 0x6c, 0x6e, 0xfc, 0x8b, 0xb3, - 0x59, 0xf1, 0x40, 0x69, 0xce, 0x87, 0xc3, 0x22, 0x48, 0x9d, 0x10, 0x75, 0x9f, 0x65, 0xec, 0x70, - 0x09, 0x5b, 0x60, 0x63, 0x8c, 0xdd, 0x91, 0x3a, 0x72, 0xd9, 0xe6, 0xe3, 0xe5, 0xea, 0xce, 0xd4, - 0xb4, 0x15, 0xf3, 0x69, 0xf2, 0x2b, 0xa3, 0xf6, 0x2e, 0x9c, 0x05, 0xce, 0xff, 0xe8, 0x87, 0x79, - 0x12, 0x27, 0xd7, 0x97, 0x78, 0xc1, 0xfd, 0x94, 0x5a, 0xf7, 0x7e, 0x4a, 0x2f, 0xbc, 0x9f, 0x7e, - 0x00, 0xf7, 0x1d, 0xe6, 0x79, 0xc4, 0x91, 0x16, 0x9a, 0xb9, 0x14, 0x8c, 0x75, 0x2e, 0x85, 0x52, - 0x5c, 0x65, 0x1a, 0x84, 0xbb, 0xa0, 0xa0, 0xb7, 0x31, 0x9d, 0x32, 0x9b, 0xab, 0xa6, 0x8c, 0x9e, - 0x14, 0xd1, 0x80, 0xd9, 0x7d, 0xfd, 0xfe, 0xd2, 0x4c, 0x7c, 0xb8, 0x34, 0x13, 0xbf, 0x5e, 0x9a, - 0x89, 0xab, 0x4b, 0x33, 0xf1, 0xe3, 0xc4, 0x34, 0xde, 0x4d, 0xcc, 0xc4, 0xfb, 0x89, 0x69, 0x7c, - 0x98, 0x98, 0xc6, 0x6f, 0x13, 0xd3, 0xf8, 0x63, 0x62, 0x26, 0xae, 0x26, 0xa6, 0xf1, 0xf3, 0xef, - 0x66, 0xe2, 0xfb, 0x87, 0x6a, 0xcb, 0x94, 0x85, 0xff, 0xad, 0x1a, 0xf3, 0xff, 0x4f, 0x75, 0x37, - 0xe5, 0x9b, 0xbf, 0xfc, 0x3b, 0x00, 0x00, 0xff, 0xff, 0x85, 0x74, 0xc6, 0xd6, 0x32, 0x0a, 0x00, - 0x00, -} diff --git a/mixer/v1/config/client/client_config.proto b/mixer/v1/config/client/client_config.proto index d5f0c603a98..27568888f20 100644 --- a/mixer/v1/config/client/client_config.proto +++ b/mixer/v1/config/client/client_config.proto @@ -114,14 +114,14 @@ message TransportConfig { // This is the mesh level policy. The default value for policy is FAIL_OPEN. NetworkFailPolicy network_fail_policy = 4; - // Specify refresh interval to write mixer client statistics to Envoy share + // Specify refresh interval to write Mixer client statistics to Envoy share // memory. If not specified, the interval is 10 seconds. google.protobuf.Duration stats_update_interval = 5; // Name of the cluster that will forward check calls to a pool of mixer // servers. Defaults to "mixer_server". By using different names for // checkCluster and reportCluster, it is possible to have one set of - // mixer servers handle check calls, while another set of mixer servers + // Mixer servers handle check calls, while another set of Mixer servers // handle report calls. // // NOTE: Any value other than the default "mixer_server" will require the @@ -131,14 +131,14 @@ message TransportConfig { // Name of the cluster that will forward report calls to a pool of mixer // servers. Defaults to "mixer_server". By using different names for // checkCluster and reportCluster, it is possible to have one set of - // mixer servers handle check calls, while another set of mixer servers + // Mixer servers handle check calls, while another set of Mixer servers // handle report calls. // // NOTE: Any value other than the default "mixer_server" will require the // Istio Grafana dashboards to be reconfigured to use the new name. string report_cluster = 7; - // Default attributes to forward to mixer upstream. This typically + // Default attributes to forward to Mixer upstream. This typically // includes the "source.ip" and "source.uid" attributes. These // attributes are consumed by the proxy in front of mixer. Attributes attributes_for_mixer_proxy = 8; @@ -178,10 +178,10 @@ message TcpClientConfig { // "destination.uid" attributes. Attributes mixer_attributes = 2; - // If set to true, disables mixer check calls. + // If set to true, disables Mixer check calls. bool disable_check_calls = 3; - // If set to true, disables mixer check calls. + // If set to true, disables Mixer check calls. bool disable_report_calls = 4; // Quota specifications to generate quota requirements. diff --git a/mixer/v1/config/client/istio.mixer.v1.config.client.pb.html b/mixer/v1/config/client/istio.mixer.v1.config.client.pb.html index bc27741ddd5..90fdffac767 100644 --- a/mixer/v1/config/client/istio.mixer.v1.config.client.pb.html +++ b/mixer/v1/config/client/istio.mixer.v1.config.client.pb.html @@ -9,7 +9,7 @@

APIKey

APIKey defines the explicit configuration for generating the request.api_key attribute from HTTP requests.

-

See https://swagger.io/docs/specification/authentication/api-keys +

See API Keys for a general overview of API keys as defined by OpenAPI.

@@ -902,7 +902,7 @@

TcpClientConfig

@@ -910,7 +910,7 @@

TcpClientConfig

@@ -986,7 +986,7 @@

TransportConfig

@@ -998,7 +998,7 @@

TransportConfig

Name of the cluster that will forward check calls to a pool of mixer servers. Defaults to “mixer_server”. By using different names for checkCluster and reportCluster, it is possible to have one set of -mixer servers handle check calls, while another set of mixer servers +Mixer servers handle check calls, while another set of Mixer servers handle report calls.

NOTE: Any value other than the default “mixer_server” will require the @@ -1013,7 +1013,7 @@

TransportConfig

Name of the cluster that will forward report calls to a pool of mixer servers. Defaults to “mixer_server”. By using different names for checkCluster and reportCluster, it is possible to have one set of -mixer servers handle check calls, while another set of mixer servers +Mixer servers handle check calls, while another set of Mixer servers handle report calls.

NOTE: Any value other than the default “mixer_server” will require the @@ -1025,7 +1025,7 @@

TransportConfig

@@ -845,7 +845,7 @@

HttpStatusCode

IPAddress

-

An instance field of type IPAddress denotes that the expression for the field must evalaute to +

An instance field of type IPAddress denotes that the expression for the field must evaluate to ValueType.IP_ADDRESS

Objects of type IPAddress are also passed to the adapters during request-time for the instance fields of @@ -968,7 +968,7 @@

Instance

Mutual

-

Mutual let operator specify tls config for mixer as client if mtls is used to +

Mutual let operator specify TLS configuration for Mixer as client if mutual TLS is used to secure connection to adapter backend.

disableCheckCalls bool -

If set to true, disables mixer check calls.

+

If set to true, disables Mixer check calls.

disableReportCalls bool -

If set to true, disables mixer check calls.

+

If set to true, disables Mixer check calls.

statsUpdateInterval google.protobuf.Duration -

Specify refresh interval to write mixer client statistics to Envoy share +

Specify refresh interval to write Mixer client statistics to Envoy share memory. If not specified, the interval is 10 seconds.

attributesForMixerProxy istio.mixer.v1.Attributes -

Default attributes to forward to mixer upstream. This typically +

Default attributes to forward to Mixer upstream. This typically includes the “source.ip” and “source.uid” attributes. These attributes are consumed by the proxy in front of mixer.

diff --git a/mixer/v1/config/client/quota.pb.go b/mixer/v1/config/client/quota.pb.go index 4ef4f86cfab..02e71e22b1c 100644 --- a/mixer/v1/config/client/quota.pb.go +++ b/mixer/v1/config/client/quota.pb.go @@ -3,45 +3,107 @@ package client -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "github.com/gogo/protobuf/gogoproto" - -import strings "strings" -import reflect "reflect" -import sortkeys "github.com/gogo/protobuf/sortkeys" - -import io "io" +import ( + fmt "fmt" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" + github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + io "io" + math "math" + reflect "reflect" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + // Determines the quotas used for individual requests. type QuotaSpec struct { // A list of Quota rules. - Rules []*QuotaRule `protobuf:"bytes,1,rep,name=rules" json:"rules,omitempty"` + Rules []*QuotaRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` } -func (m *QuotaSpec) Reset() { *m = QuotaSpec{} } -func (*QuotaSpec) ProtoMessage() {} -func (*QuotaSpec) Descriptor() ([]byte, []int) { return fileDescriptorQuota, []int{0} } +func (m *QuotaSpec) Reset() { *m = QuotaSpec{} } +func (*QuotaSpec) ProtoMessage() {} +func (*QuotaSpec) Descriptor() ([]byte, []int) { + return fileDescriptor_81777b5d047af315, []int{0} +} +func (m *QuotaSpec) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QuotaSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QuotaSpec.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QuotaSpec) XXX_Merge(src proto.Message) { + xxx_messageInfo_QuotaSpec.Merge(m, src) +} +func (m *QuotaSpec) XXX_Size() int { + return m.Size() +} +func (m *QuotaSpec) XXX_DiscardUnknown() { + xxx_messageInfo_QuotaSpec.DiscardUnknown(m) +} + +var xxx_messageInfo_QuotaSpec proto.InternalMessageInfo // Specifies a rule with list of matches and list of quotas. // If any clause matched, the list of quotas will be used. type QuotaRule struct { // If empty, match all request. // If any of match is true, it is matched. - Match []*AttributeMatch `protobuf:"bytes,1,rep,name=match" json:"match,omitempty"` + Match []*AttributeMatch `protobuf:"bytes,1,rep,name=match,proto3" json:"match,omitempty"` // The list of quotas to charge. - Quotas []*Quota `protobuf:"bytes,2,rep,name=quotas" json:"quotas,omitempty"` + Quotas []*Quota `protobuf:"bytes,2,rep,name=quotas,proto3" json:"quotas,omitempty"` } -func (m *QuotaRule) Reset() { *m = QuotaRule{} } -func (*QuotaRule) ProtoMessage() {} -func (*QuotaRule) Descriptor() ([]byte, []int) { return fileDescriptorQuota, []int{1} } +func (m *QuotaRule) Reset() { *m = QuotaRule{} } +func (*QuotaRule) ProtoMessage() {} +func (*QuotaRule) Descriptor() ([]byte, []int) { + return fileDescriptor_81777b5d047af315, []int{1} +} +func (m *QuotaRule) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QuotaRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QuotaRule.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QuotaRule) XXX_Merge(src proto.Message) { + xxx_messageInfo_QuotaRule.Merge(m, src) +} +func (m *QuotaRule) XXX_Size() int { + return m.Size() +} +func (m *QuotaRule) XXX_DiscardUnknown() { + xxx_messageInfo_QuotaRule.DiscardUnknown(m) +} + +var xxx_messageInfo_QuotaRule proto.InternalMessageInfo // Describes how to match a given string in HTTP headers. Match is // case-sensitive. @@ -53,9 +115,37 @@ type StringMatch struct { MatchType isStringMatch_MatchType `protobuf_oneof:"match_type"` } -func (m *StringMatch) Reset() { *m = StringMatch{} } -func (*StringMatch) ProtoMessage() {} -func (*StringMatch) Descriptor() ([]byte, []int) { return fileDescriptorQuota, []int{2} } +func (m *StringMatch) Reset() { *m = StringMatch{} } +func (*StringMatch) ProtoMessage() {} +func (*StringMatch) Descriptor() ([]byte, []int) { + return fileDescriptor_81777b5d047af315, []int{2} +} +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.MarshalTo(b) + if err != nil { + return nil, err + } + return b[: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) +} + +var xxx_messageInfo_StringMatch proto.InternalMessageInfo type isStringMatch_MatchType interface { isStringMatch_MatchType() @@ -168,15 +258,15 @@ func _StringMatch_OneofSizer(msg proto.Message) (n int) { // match_type switch x := m.MatchType.(type) { case *StringMatch_Exact: - n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.Exact))) n += len(x.Exact) case *StringMatch_Prefix: - n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.Prefix))) n += len(x.Prefix) case *StringMatch_Regex: - n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.Regex))) n += len(x.Regex) case nil: @@ -198,12 +288,40 @@ type AttributeMatch struct { // exact: SOURCE_UID // request.http_method: // exact: POST - Clause map[string]*StringMatch `protobuf:"bytes,1,rep,name=clause" json:"clause,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"` + Clause map[string]*StringMatch `protobuf:"bytes,1,rep,name=clause,proto3" json:"clause,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *AttributeMatch) Reset() { *m = AttributeMatch{} } -func (*AttributeMatch) ProtoMessage() {} -func (*AttributeMatch) Descriptor() ([]byte, []int) { return fileDescriptorQuota, []int{3} } +func (m *AttributeMatch) Reset() { *m = AttributeMatch{} } +func (*AttributeMatch) ProtoMessage() {} +func (*AttributeMatch) Descriptor() ([]byte, []int) { + return fileDescriptor_81777b5d047af315, []int{3} +} +func (m *AttributeMatch) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AttributeMatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AttributeMatch.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AttributeMatch) XXX_Merge(src proto.Message) { + xxx_messageInfo_AttributeMatch.Merge(m, src) +} +func (m *AttributeMatch) XXX_Size() int { + return m.Size() +} +func (m *AttributeMatch) XXX_DiscardUnknown() { + xxx_messageInfo_AttributeMatch.DiscardUnknown(m) +} + +var xxx_messageInfo_AttributeMatch proto.InternalMessageInfo // Specifies a quota to use with quota name and amount. type Quota struct { @@ -213,24 +331,80 @@ type Quota struct { Charge int64 `protobuf:"varint,2,opt,name=charge,proto3" json:"charge,omitempty"` } -func (m *Quota) Reset() { *m = Quota{} } -func (*Quota) ProtoMessage() {} -func (*Quota) Descriptor() ([]byte, []int) { return fileDescriptorQuota, []int{4} } +func (m *Quota) Reset() { *m = Quota{} } +func (*Quota) ProtoMessage() {} +func (*Quota) Descriptor() ([]byte, []int) { + return fileDescriptor_81777b5d047af315, []int{4} +} +func (m *Quota) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Quota) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Quota.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Quota) XXX_Merge(src proto.Message) { + xxx_messageInfo_Quota.Merge(m, src) +} +func (m *Quota) XXX_Size() int { + return m.Size() +} +func (m *Quota) XXX_DiscardUnknown() { + xxx_messageInfo_Quota.DiscardUnknown(m) +} + +var xxx_messageInfo_Quota proto.InternalMessageInfo // QuotaSpecBinding defines the binding between QuotaSpecs and one or more // IstioService. type QuotaSpecBinding struct { // REQUIRED. One or more services to map the listed QuotaSpec onto. - Services []*IstioService `protobuf:"bytes,1,rep,name=services" json:"services,omitempty"` + Services []*IstioService `protobuf:"bytes,1,rep,name=services,proto3" json:"services,omitempty"` // REQUIRED. One or more QuotaSpec references that should be mapped to // the specified service(s). The aggregate collection of match // conditions defined in the QuotaSpecs should not overlap. - QuotaSpecs []*QuotaSpecBinding_QuotaSpecReference `protobuf:"bytes,2,rep,name=quota_specs,json=quotaSpecs" json:"quota_specs,omitempty"` + QuotaSpecs []*QuotaSpecBinding_QuotaSpecReference `protobuf:"bytes,2,rep,name=quota_specs,json=quotaSpecs,proto3" json:"quota_specs,omitempty"` +} + +func (m *QuotaSpecBinding) Reset() { *m = QuotaSpecBinding{} } +func (*QuotaSpecBinding) ProtoMessage() {} +func (*QuotaSpecBinding) Descriptor() ([]byte, []int) { + return fileDescriptor_81777b5d047af315, []int{5} +} +func (m *QuotaSpecBinding) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QuotaSpecBinding) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QuotaSpecBinding.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QuotaSpecBinding) XXX_Merge(src proto.Message) { + xxx_messageInfo_QuotaSpecBinding.Merge(m, src) +} +func (m *QuotaSpecBinding) XXX_Size() int { + return m.Size() +} +func (m *QuotaSpecBinding) XXX_DiscardUnknown() { + xxx_messageInfo_QuotaSpecBinding.DiscardUnknown(m) } -func (m *QuotaSpecBinding) Reset() { *m = QuotaSpecBinding{} } -func (*QuotaSpecBinding) ProtoMessage() {} -func (*QuotaSpecBinding) Descriptor() ([]byte, []int) { return fileDescriptorQuota, []int{5} } +var xxx_messageInfo_QuotaSpecBinding proto.InternalMessageInfo // QuotaSpecReference uniquely identifies the QuotaSpec used in the // Binding. @@ -246,18 +420,86 @@ type QuotaSpecBinding_QuotaSpecReference struct { func (m *QuotaSpecBinding_QuotaSpecReference) Reset() { *m = QuotaSpecBinding_QuotaSpecReference{} } func (*QuotaSpecBinding_QuotaSpecReference) ProtoMessage() {} func (*QuotaSpecBinding_QuotaSpecReference) Descriptor() ([]byte, []int) { - return fileDescriptorQuota, []int{5, 0} + return fileDescriptor_81777b5d047af315, []int{5, 0} +} +func (m *QuotaSpecBinding_QuotaSpecReference) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QuotaSpecBinding_QuotaSpecReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QuotaSpecBinding_QuotaSpecReference.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } } +func (m *QuotaSpecBinding_QuotaSpecReference) XXX_Merge(src proto.Message) { + xxx_messageInfo_QuotaSpecBinding_QuotaSpecReference.Merge(m, src) +} +func (m *QuotaSpecBinding_QuotaSpecReference) XXX_Size() int { + return m.Size() +} +func (m *QuotaSpecBinding_QuotaSpecReference) XXX_DiscardUnknown() { + xxx_messageInfo_QuotaSpecBinding_QuotaSpecReference.DiscardUnknown(m) +} + +var xxx_messageInfo_QuotaSpecBinding_QuotaSpecReference proto.InternalMessageInfo func init() { proto.RegisterType((*QuotaSpec)(nil), "istio.mixer.v1.config.client.QuotaSpec") proto.RegisterType((*QuotaRule)(nil), "istio.mixer.v1.config.client.QuotaRule") proto.RegisterType((*StringMatch)(nil), "istio.mixer.v1.config.client.StringMatch") proto.RegisterType((*AttributeMatch)(nil), "istio.mixer.v1.config.client.AttributeMatch") + proto.RegisterMapType((map[string]*StringMatch)(nil), "istio.mixer.v1.config.client.AttributeMatch.ClauseEntry") proto.RegisterType((*Quota)(nil), "istio.mixer.v1.config.client.Quota") proto.RegisterType((*QuotaSpecBinding)(nil), "istio.mixer.v1.config.client.QuotaSpecBinding") proto.RegisterType((*QuotaSpecBinding_QuotaSpecReference)(nil), "istio.mixer.v1.config.client.QuotaSpecBinding.QuotaSpecReference") } + +func init() { proto.RegisterFile("mixer/v1/config/client/quota.proto", fileDescriptor_81777b5d047af315) } + +var fileDescriptor_81777b5d047af315 = []byte{ + // 540 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0xcf, 0x6a, 0x13, 0x5f, + 0x14, 0xc7, 0x67, 0x92, 0xdf, 0x84, 0x5f, 0x4e, 0x44, 0xca, 0xa5, 0x94, 0x21, 0x94, 0x4b, 0x99, + 0x0a, 0x56, 0x91, 0x19, 0x5a, 0x11, 0x8a, 0x22, 0xd2, 0x88, 0x45, 0x05, 0x41, 0x6f, 0x76, 0x82, + 0x94, 0xc9, 0xf4, 0x64, 0x7a, 0x31, 0x99, 0x99, 0xde, 0xb9, 0x13, 0x92, 0x9d, 0x2b, 0x57, 0x2e, + 0x7c, 0x0c, 0x1f, 0x25, 0xcb, 0x2c, 0xbb, 0x34, 0x93, 0x8d, 0xcb, 0x3e, 0x82, 0xcc, 0xbd, 0x37, + 0x6d, 0x44, 0x0d, 0x75, 0x35, 0xe7, 0x9c, 0x39, 0x9f, 0xef, 0xf9, 0xc3, 0xb9, 0xe0, 0x0d, 0xf9, + 0x18, 0x45, 0x30, 0xda, 0x0f, 0xa2, 0x34, 0xe9, 0xf3, 0x38, 0x88, 0x06, 0x1c, 0x13, 0x19, 0x9c, + 0x17, 0xa9, 0x0c, 0xfd, 0x4c, 0xa4, 0x32, 0x25, 0xdb, 0x3c, 0x97, 0x3c, 0xf5, 0x55, 0xa6, 0x3f, + 0xda, 0xf7, 0x75, 0xa6, 0xaf, 0x33, 0xdb, 0x9b, 0x71, 0x1a, 0xa7, 0x2a, 0x31, 0xa8, 0x2c, 0xcd, + 0xb4, 0xef, 0xfc, 0x45, 0x37, 0x47, 0x31, 0xe2, 0x11, 0xea, 0x2c, 0xef, 0x35, 0x34, 0xdf, 0x55, + 0x85, 0xba, 0x19, 0x46, 0xe4, 0x29, 0x38, 0xa2, 0x18, 0x60, 0xee, 0xda, 0x3b, 0xf5, 0xbd, 0xd6, + 0xc1, 0x5d, 0x7f, 0x5d, 0x59, 0x5f, 0x71, 0xac, 0x18, 0x20, 0xd3, 0x94, 0xf7, 0xc5, 0x36, 0x62, + 0x55, 0x90, 0x74, 0xc0, 0x19, 0x86, 0x32, 0x3a, 0x33, 0x62, 0x0f, 0xd6, 0x8b, 0x1d, 0x49, 0x29, + 0x78, 0xaf, 0x90, 0xf8, 0xa6, 0x62, 0x98, 0x46, 0xc9, 0x13, 0x68, 0xa8, 0x35, 0xe4, 0x6e, 0x4d, + 0x89, 0xec, 0xde, 0xa4, 0x23, 0x83, 0x78, 0x08, 0xad, 0xae, 0x14, 0x3c, 0x89, 0x95, 0x24, 0xd9, + 0x02, 0x07, 0xc7, 0x61, 0x24, 0x5d, 0x7b, 0xc7, 0xde, 0x6b, 0xbe, 0xb4, 0x98, 0x76, 0x89, 0x0b, + 0x8d, 0x4c, 0x60, 0x9f, 0x8f, 0xdd, 0x9a, 0xf9, 0x61, 0xfc, 0x8a, 0x10, 0x18, 0xe3, 0xd8, 0xad, + 0x2f, 0x09, 0xe5, 0x76, 0x6e, 0x01, 0xa8, 0xf6, 0x4e, 0xe4, 0x24, 0x43, 0x6f, 0x6a, 0xc3, 0xed, + 0x5f, 0xbb, 0x27, 0x6f, 0xa1, 0x11, 0x0d, 0xc2, 0x22, 0x47, 0x33, 0xfb, 0xe1, 0xbf, 0xcc, 0xee, + 0x3f, 0x57, 0xe8, 0x8b, 0x44, 0x8a, 0x09, 0x33, 0x3a, 0xed, 0x53, 0x68, 0xad, 0x84, 0xc9, 0x06, + 0xd4, 0x3f, 0xe2, 0x44, 0x4f, 0xc2, 0x2a, 0x93, 0x3c, 0x03, 0x67, 0x14, 0x0e, 0x0a, 0x54, 0x43, + 0xb4, 0x0e, 0xee, 0xad, 0xaf, 0xb8, 0xb2, 0x17, 0xa6, 0xb9, 0xc7, 0xb5, 0x43, 0xdb, 0x7b, 0x04, + 0x8e, 0x5a, 0x21, 0xd9, 0x04, 0x47, 0x2d, 0xd1, 0x54, 0xd0, 0x0e, 0xd9, 0x82, 0x46, 0x74, 0x16, + 0x8a, 0x58, 0x17, 0xa9, 0x33, 0xe3, 0x79, 0x9f, 0x6b, 0xb0, 0x71, 0x75, 0x44, 0x1d, 0x9e, 0x9c, + 0xf2, 0x24, 0x26, 0xc7, 0xf0, 0xbf, 0xb9, 0xb4, 0xe5, 0x39, 0xdd, 0x5f, 0xdf, 0xd3, 0xab, 0xea, + 0x67, 0x57, 0x23, 0xec, 0x8a, 0x25, 0x3d, 0x68, 0xa9, 0xea, 0x27, 0x79, 0x86, 0xd1, 0xf2, 0x0e, + 0x8e, 0x6e, 0x70, 0x07, 0x2b, 0xcd, 0x5c, 0x07, 0x18, 0xf6, 0x51, 0x60, 0x12, 0x21, 0x83, 0xf3, + 0x65, 0x2c, 0x6f, 0x1f, 0x03, 0xf9, 0x3d, 0x83, 0x10, 0xf8, 0x2f, 0x09, 0x87, 0x68, 0x76, 0xa0, + 0x6c, 0xb2, 0x0d, 0xcd, 0xea, 0x9b, 0x67, 0x61, 0xa4, 0xb7, 0xd0, 0x64, 0xd7, 0x81, 0xce, 0x87, + 0xe9, 0x9c, 0x5a, 0xb3, 0x39, 0xb5, 0x2e, 0xe6, 0xd4, 0xba, 0x9c, 0x53, 0xeb, 0x53, 0x49, 0xed, + 0x6f, 0x25, 0xb5, 0xa6, 0x25, 0xb5, 0x67, 0x25, 0xb5, 0xbf, 0x97, 0xd4, 0xfe, 0x51, 0x52, 0xeb, + 0xb2, 0xa4, 0xf6, 0xd7, 0x05, 0xb5, 0x66, 0x0b, 0x6a, 0x5d, 0x2c, 0xa8, 0xf5, 0x7e, 0x57, 0xcf, + 0xc3, 0xd3, 0x20, 0xcc, 0x78, 0xf0, 0xe7, 0x97, 0xdb, 0x6b, 0xa8, 0x27, 0xfb, 0xf0, 0x67, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x07, 0x28, 0x43, 0xd1, 0x32, 0x04, 0x00, 0x00, +} + func (m *QuotaSpec) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -536,6 +778,9 @@ func encodeVarintQuota(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *QuotaSpec) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Rules) > 0 { @@ -548,6 +793,9 @@ func (m *QuotaSpec) Size() (n int) { } func (m *QuotaRule) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Match) > 0 { @@ -566,6 +814,9 @@ func (m *QuotaRule) Size() (n int) { } func (m *StringMatch) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.MatchType != nil { @@ -575,6 +826,9 @@ func (m *StringMatch) Size() (n int) { } func (m *StringMatch_Exact) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Exact) @@ -582,6 +836,9 @@ func (m *StringMatch_Exact) Size() (n int) { return n } func (m *StringMatch_Prefix) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Prefix) @@ -589,6 +846,9 @@ func (m *StringMatch_Prefix) Size() (n int) { return n } func (m *StringMatch_Regex) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Regex) @@ -596,6 +856,9 @@ func (m *StringMatch_Regex) Size() (n int) { return n } func (m *AttributeMatch) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Clause) > 0 { @@ -615,6 +878,9 @@ func (m *AttributeMatch) Size() (n int) { } func (m *Quota) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Quota) @@ -628,6 +894,9 @@ func (m *Quota) Size() (n int) { } func (m *QuotaSpecBinding) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Services) > 0 { @@ -646,6 +915,9 @@ func (m *QuotaSpecBinding) Size() (n int) { } func (m *QuotaSpecBinding_QuotaSpecReference) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Name) @@ -741,7 +1013,7 @@ func (this *AttributeMatch) String() string { for k, _ := range this.Clause { keysForClause = append(keysForClause, k) } - sortkeys.Strings(keysForClause) + github_com_gogo_protobuf_sortkeys.Strings(keysForClause) mapStringForClause := "map[string]*StringMatch{" for _, k := range keysForClause { mapStringForClause += fmt.Sprintf("%v: %v,", k, this.Clause[k]) @@ -809,7 +1081,7 @@ func (m *QuotaSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -837,7 +1109,7 @@ func (m *QuotaSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -846,6 +1118,9 @@ func (m *QuotaSpec) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuota + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -863,6 +1138,9 @@ func (m *QuotaSpec) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthQuota } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthQuota + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -890,7 +1168,7 @@ func (m *QuotaRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -918,7 +1196,7 @@ func (m *QuotaRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -927,6 +1205,9 @@ func (m *QuotaRule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuota + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -949,7 +1230,7 @@ func (m *QuotaRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -958,6 +1239,9 @@ func (m *QuotaRule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuota + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -975,6 +1259,9 @@ func (m *QuotaRule) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthQuota } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthQuota + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1002,7 +1289,7 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1030,7 +1317,7 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1040,6 +1327,9 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuota + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1059,7 +1349,7 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1069,6 +1359,9 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuota + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1088,7 +1381,7 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1098,6 +1391,9 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuota + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1112,6 +1408,9 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthQuota } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthQuota + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1139,7 +1438,7 @@ func (m *AttributeMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1167,7 +1466,7 @@ func (m *AttributeMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1176,6 +1475,9 @@ func (m *AttributeMatch) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuota + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1196,7 +1498,7 @@ func (m *AttributeMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1213,7 +1515,7 @@ func (m *AttributeMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1223,6 +1525,9 @@ func (m *AttributeMatch) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthQuota + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -1239,7 +1544,7 @@ func (m *AttributeMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapmsglen |= (int(b) & 0x7F) << shift + mapmsglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1248,7 +1553,7 @@ func (m *AttributeMatch) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postmsgIndex := iNdEx + mapmsglen - if mapmsglen < 0 { + if postmsgIndex < 0 { return ErrInvalidLengthQuota } if postmsgIndex > l { @@ -1285,6 +1590,9 @@ func (m *AttributeMatch) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthQuota } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthQuota + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1312,7 +1620,7 @@ func (m *Quota) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1340,7 +1648,7 @@ func (m *Quota) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1350,6 +1658,9 @@ func (m *Quota) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuota + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1369,7 +1680,7 @@ func (m *Quota) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Charge |= (int64(b) & 0x7F) << shift + m.Charge |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -1383,6 +1694,9 @@ func (m *Quota) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthQuota } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthQuota + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1410,7 +1724,7 @@ func (m *QuotaSpecBinding) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1438,7 +1752,7 @@ func (m *QuotaSpecBinding) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1447,6 +1761,9 @@ func (m *QuotaSpecBinding) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuota + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1469,7 +1786,7 @@ func (m *QuotaSpecBinding) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1478,6 +1795,9 @@ func (m *QuotaSpecBinding) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuota + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1495,6 +1815,9 @@ func (m *QuotaSpecBinding) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthQuota } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthQuota + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1522,7 +1845,7 @@ func (m *QuotaSpecBinding_QuotaSpecReference) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1550,7 +1873,7 @@ func (m *QuotaSpecBinding_QuotaSpecReference) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1560,6 +1883,9 @@ func (m *QuotaSpecBinding_QuotaSpecReference) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuota + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1579,7 +1905,7 @@ func (m *QuotaSpecBinding_QuotaSpecReference) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1589,6 +1915,9 @@ func (m *QuotaSpecBinding_QuotaSpecReference) Unmarshal(dAtA []byte) error { return ErrInvalidLengthQuota } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthQuota + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1603,6 +1932,9 @@ func (m *QuotaSpecBinding_QuotaSpecReference) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthQuota } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthQuota + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1669,10 +2001,13 @@ func skipQuota(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthQuota } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthQuota + } return iNdEx, nil case 3: for { @@ -1701,6 +2036,9 @@ func skipQuota(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthQuota + } } return iNdEx, nil case 4: @@ -1719,43 +2057,3 @@ var ( ErrInvalidLengthQuota = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowQuota = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("mixer/v1/config/client/quota.proto", fileDescriptorQuota) } - -var fileDescriptorQuota = []byte{ - // 533 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0x4f, 0x6b, 0x13, 0x4f, - 0x18, 0xc7, 0x77, 0x93, 0xdf, 0x86, 0x5f, 0x9e, 0x88, 0x94, 0xa1, 0x94, 0x25, 0x94, 0xa1, 0x6c, - 0x05, 0xab, 0xc8, 0x2e, 0xad, 0x08, 0x45, 0x11, 0x69, 0xc4, 0xa2, 0x82, 0xa0, 0x53, 0xbc, 0x78, - 0x29, 0x9b, 0xe9, 0x93, 0xed, 0x60, 0xb2, 0xbb, 0x9d, 0x9d, 0x0d, 0xc9, 0xcd, 0x93, 0x27, 0x0f, - 0xbe, 0x0c, 0x5f, 0x4a, 0x8e, 0x3d, 0x7a, 0x34, 0xeb, 0xc5, 0x63, 0x5f, 0x82, 0xec, 0xcc, 0xa4, - 0x8d, 0xa8, 0xa1, 0x9e, 0xf6, 0x79, 0x9e, 0x7d, 0x3e, 0xdf, 0xe7, 0x0f, 0xcf, 0x40, 0x30, 0x12, - 0x13, 0x94, 0xd1, 0x78, 0x37, 0xe2, 0x59, 0x3a, 0x10, 0x49, 0xc4, 0x87, 0x02, 0x53, 0x15, 0x9d, - 0x95, 0x99, 0x8a, 0xc3, 0x5c, 0x66, 0x2a, 0x23, 0x9b, 0xa2, 0x50, 0x22, 0x0b, 0x75, 0x66, 0x38, - 0xde, 0x0d, 0x4d, 0x66, 0x68, 0x32, 0xbb, 0xeb, 0x49, 0x96, 0x64, 0x3a, 0x31, 0xaa, 0x2d, 0xc3, - 0x74, 0x6f, 0xfd, 0x45, 0xb7, 0x40, 0x39, 0x16, 0x1c, 0x4d, 0x56, 0xf0, 0x12, 0xda, 0x6f, 0xea, - 0x42, 0x47, 0x39, 0x72, 0xf2, 0x18, 0x3c, 0x59, 0x0e, 0xb1, 0xf0, 0xdd, 0xad, 0xe6, 0x4e, 0x67, - 0xef, 0x76, 0xb8, 0xaa, 0x6c, 0xa8, 0x39, 0x56, 0x0e, 0x91, 0x19, 0x2a, 0xf8, 0xe4, 0x5a, 0xb1, - 0x3a, 0x48, 0x7a, 0xe0, 0x8d, 0x62, 0xc5, 0x4f, 0xad, 0xd8, 0xbd, 0xd5, 0x62, 0x07, 0x4a, 0x49, - 0xd1, 0x2f, 0x15, 0xbe, 0xaa, 0x19, 0x66, 0x50, 0xf2, 0x08, 0x5a, 0x7a, 0x0d, 0x85, 0xdf, 0xd0, - 0x22, 0xdb, 0xd7, 0xe9, 0xc8, 0x22, 0x01, 0x42, 0xe7, 0x48, 0x49, 0x91, 0x26, 0x5a, 0x92, 0x6c, - 0x80, 0x87, 0x93, 0x98, 0x2b, 0xdf, 0xdd, 0x72, 0x77, 0xda, 0xcf, 0x1d, 0x66, 0x5c, 0xe2, 0x43, - 0x2b, 0x97, 0x38, 0x10, 0x13, 0xbf, 0x61, 0x7f, 0x58, 0xbf, 0x26, 0x24, 0x26, 0x38, 0xf1, 0x9b, - 0x0b, 0x42, 0xbb, 0xbd, 0x1b, 0x00, 0xba, 0xbd, 0x63, 0x35, 0xcd, 0x31, 0x98, 0xb9, 0x70, 0xf3, - 0xd7, 0xee, 0xc9, 0x6b, 0x68, 0xf1, 0x61, 0x5c, 0x16, 0x68, 0x67, 0xdf, 0xff, 0x97, 0xd9, 0xc3, - 0xa7, 0x1a, 0x7d, 0x96, 0x2a, 0x39, 0x65, 0x56, 0xa7, 0x7b, 0x02, 0x9d, 0xa5, 0x30, 0x59, 0x83, - 0xe6, 0x7b, 0x9c, 0x9a, 0x49, 0x58, 0x6d, 0x92, 0x27, 0xe0, 0x8d, 0xe3, 0x61, 0x89, 0x7a, 0x88, - 0xce, 0xde, 0x9d, 0xd5, 0x15, 0x97, 0xf6, 0xc2, 0x0c, 0xf7, 0xb0, 0xb1, 0xef, 0x06, 0x0f, 0xc0, - 0xd3, 0x2b, 0x24, 0xeb, 0xe0, 0xe9, 0x25, 0xda, 0x0a, 0xc6, 0x21, 0x1b, 0xd0, 0xe2, 0xa7, 0xb1, - 0x4c, 0x4c, 0x91, 0x26, 0xb3, 0x5e, 0xf0, 0xb1, 0x01, 0x6b, 0x97, 0x47, 0xd4, 0x13, 0xe9, 0x89, - 0x48, 0x13, 0x72, 0x08, 0xff, 0xdb, 0x4b, 0x5b, 0x9c, 0xd3, 0xdd, 0xd5, 0x3d, 0xbd, 0xa8, 0x7f, - 0x1e, 0x19, 0x84, 0x5d, 0xb2, 0xa4, 0x0f, 0x1d, 0x5d, 0xfd, 0xb8, 0xc8, 0x91, 0x2f, 0xee, 0xe0, - 0xe0, 0x1a, 0x77, 0xb0, 0xd4, 0xcc, 0x55, 0x80, 0xe1, 0x00, 0x25, 0xa6, 0x1c, 0x19, 0x9c, 0x2d, - 0x62, 0x45, 0xf7, 0x10, 0xc8, 0xef, 0x19, 0x84, 0xc0, 0x7f, 0x69, 0x3c, 0x42, 0xbb, 0x03, 0x6d, - 0x93, 0x4d, 0x68, 0xd7, 0xdf, 0x22, 0x8f, 0xb9, 0xd9, 0x42, 0x9b, 0x5d, 0x05, 0x7a, 0x6f, 0x67, - 0x73, 0xea, 0x9c, 0xcf, 0xa9, 0xf3, 0x75, 0x4e, 0x9d, 0x8b, 0x39, 0x75, 0x3e, 0x54, 0xd4, 0xfd, - 0x52, 0x51, 0x67, 0x56, 0x51, 0xf7, 0xbc, 0xa2, 0xee, 0xb7, 0x8a, 0xba, 0x3f, 0x2a, 0xea, 0x5c, - 0x54, 0xd4, 0xfd, 0xfc, 0x9d, 0x3a, 0xef, 0xb6, 0xcd, 0x1c, 0x22, 0x8b, 0xe2, 0x5c, 0x44, 0x7f, - 0x7e, 0xb1, 0xfd, 0x96, 0x7e, 0xaa, 0xf7, 0x7f, 0x06, 0x00, 0x00, 0xff, 0xff, 0x84, 0xe2, 0xec, - 0x62, 0x2a, 0x04, 0x00, 0x00, -} diff --git a/mixer/v1/config/client/service.pb.go b/mixer/v1/config/client/service.pb.go index bbf3e660920..11e541be687 100644 --- a/mixer/v1/config/client/service.pb.go +++ b/mixer/v1/config/client/service.pb.go @@ -3,22 +3,28 @@ package client -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "github.com/gogo/protobuf/gogoproto" - -import strings "strings" -import reflect "reflect" -import sortkeys "github.com/gogo/protobuf/sortkeys" - -import io "io" +import ( + fmt "fmt" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" + github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + io "io" + math "math" + reflect "reflect" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + // IstioService identifies a service and optionally service version. // The FQDN of the service is composed from the name, namespace, and implementation-specific domain suffix // (e.g. on Kubernetes, "reviews" + "default" + "svc.cluster.local" -> "reviews.default.svc.cluster.local"). @@ -35,16 +41,74 @@ type IstioService struct { // // *Note:* When used for a VirtualService destination, labels MUST be empty. // - Labels map[string]string `protobuf:"bytes,5,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *IstioService) Reset() { *m = IstioService{} } -func (*IstioService) ProtoMessage() {} -func (*IstioService) Descriptor() ([]byte, []int) { return fileDescriptorService, []int{0} } +func (m *IstioService) Reset() { *m = IstioService{} } +func (*IstioService) ProtoMessage() {} +func (*IstioService) Descriptor() ([]byte, []int) { + return fileDescriptor_3358a28a51c817d5, []int{0} +} +func (m *IstioService) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *IstioService) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_IstioService.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *IstioService) XXX_Merge(src proto.Message) { + xxx_messageInfo_IstioService.Merge(m, src) +} +func (m *IstioService) XXX_Size() int { + return m.Size() +} +func (m *IstioService) XXX_DiscardUnknown() { + xxx_messageInfo_IstioService.DiscardUnknown(m) +} + +var xxx_messageInfo_IstioService proto.InternalMessageInfo func init() { proto.RegisterType((*IstioService)(nil), "istio.mixer.v1.config.client.IstioService") + proto.RegisterMapType((map[string]string)(nil), "istio.mixer.v1.config.client.IstioService.LabelsEntry") +} + +func init() { + proto.RegisterFile("mixer/v1/config/client/service.proto", fileDescriptor_3358a28a51c817d5) +} + +var fileDescriptor_3358a28a51c817d5 = []byte{ + // 315 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x51, 0x3f, 0x4b, 0x03, 0x31, + 0x1c, 0x4d, 0xfa, 0x4f, 0x9a, 0x3a, 0x48, 0x28, 0x12, 0x4a, 0xf9, 0x51, 0xd4, 0xa1, 0x53, 0x42, + 0x15, 0x44, 0x1d, 0x05, 0x07, 0x41, 0x1c, 0xea, 0x26, 0x38, 0xa4, 0x67, 0x2c, 0xc1, 0xeb, 0xa5, + 0xdc, 0x9d, 0x87, 0xdd, 0xfc, 0x08, 0x7e, 0x0c, 0x3f, 0x4a, 0xc7, 0x8e, 0x1d, 0xbd, 0x74, 0x71, + 0xec, 0x17, 0x10, 0xe4, 0x92, 0x2b, 0x76, 0x10, 0xa7, 0xbc, 0xf7, 0x7b, 0xef, 0xfd, 0x78, 0x49, + 0xc8, 0xd1, 0x44, 0xbf, 0xaa, 0x58, 0x64, 0x03, 0x11, 0x98, 0xe8, 0x49, 0x8f, 0x45, 0x10, 0x6a, + 0x15, 0xa5, 0x22, 0x51, 0x71, 0xa6, 0x03, 0xc5, 0xa7, 0xb1, 0x49, 0x0d, 0xed, 0xea, 0x24, 0xd5, + 0x86, 0x3b, 0x2f, 0xcf, 0x06, 0xdc, 0x7b, 0xb9, 0xf7, 0x76, 0xda, 0x63, 0x33, 0x36, 0xce, 0x28, + 0x0a, 0xe4, 0x33, 0x07, 0xdf, 0x98, 0xec, 0x5e, 0x17, 0xb1, 0x3b, 0xbf, 0x8a, 0x52, 0x52, 0x8b, + 0xe4, 0x44, 0x31, 0xdc, 0xc3, 0xfd, 0xe6, 0xd0, 0x61, 0xda, 0x25, 0xcd, 0xe2, 0x4c, 0xa6, 0x32, + 0x50, 0xac, 0xe2, 0x84, 0xdf, 0x01, 0xdd, 0x27, 0x8d, 0x47, 0x33, 0x91, 0x3a, 0x62, 0x55, 0x27, + 0x95, 0x8c, 0x32, 0xb2, 0x53, 0xf6, 0x63, 0x35, 0x27, 0x6c, 0x28, 0xbd, 0x25, 0x8d, 0x50, 0x8e, + 0x54, 0x98, 0xb0, 0x7a, 0xaf, 0xda, 0x6f, 0x1d, 0x9f, 0xf2, 0xff, 0x9a, 0xf3, 0xed, 0x7e, 0xfc, + 0xc6, 0x05, 0xaf, 0xa2, 0x34, 0x9e, 0x0d, 0xcb, 0x2d, 0x9d, 0x73, 0xd2, 0xda, 0x1a, 0xd3, 0x3d, + 0x52, 0x7d, 0x56, 0xb3, 0xf2, 0x06, 0x05, 0xa4, 0x6d, 0x52, 0xcf, 0x64, 0xf8, 0xb2, 0x29, 0xef, + 0xc9, 0x45, 0xe5, 0x0c, 0x5f, 0x3e, 0xcc, 0x73, 0x40, 0x8b, 0x1c, 0xd0, 0x32, 0x07, 0xb4, 0xce, + 0x01, 0xbd, 0x59, 0xc0, 0x1f, 0x16, 0xd0, 0xdc, 0x02, 0x5e, 0x58, 0xc0, 0x9f, 0x16, 0xf0, 0x97, + 0x05, 0xb4, 0xb6, 0x80, 0xdf, 0x57, 0x80, 0x16, 0x2b, 0x40, 0xcb, 0x15, 0xa0, 0xfb, 0x43, 0xdf, + 0x59, 0x1b, 0x21, 0xa7, 0x5a, 0xfc, 0xfd, 0x41, 0xa3, 0x86, 0x7b, 0xe5, 0x93, 0x9f, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xc4, 0x69, 0x6e, 0x30, 0xc1, 0x01, 0x00, 0x00, } + func (m *IstioService) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -114,6 +178,9 @@ func encodeVarintService(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *IstioService) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Name) @@ -164,7 +231,7 @@ func (this *IstioService) String() string { for k, _ := range this.Labels { keysForLabels = append(keysForLabels, k) } - sortkeys.Strings(keysForLabels) + github_com_gogo_protobuf_sortkeys.Strings(keysForLabels) mapStringForLabels := "map[string]string{" for _, k := range keysForLabels { mapStringForLabels += fmt.Sprintf("%v: %v,", k, this.Labels[k]) @@ -203,7 +270,7 @@ func (m *IstioService) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -231,7 +298,7 @@ func (m *IstioService) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -241,6 +308,9 @@ func (m *IstioService) Unmarshal(dAtA []byte) error { return ErrInvalidLengthService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -260,7 +330,7 @@ func (m *IstioService) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -270,6 +340,9 @@ func (m *IstioService) Unmarshal(dAtA []byte) error { return ErrInvalidLengthService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -289,7 +362,7 @@ func (m *IstioService) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -299,6 +372,9 @@ func (m *IstioService) Unmarshal(dAtA []byte) error { return ErrInvalidLengthService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -318,7 +394,7 @@ func (m *IstioService) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -328,6 +404,9 @@ func (m *IstioService) Unmarshal(dAtA []byte) error { return ErrInvalidLengthService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -347,7 +426,7 @@ func (m *IstioService) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -356,6 +435,9 @@ func (m *IstioService) Unmarshal(dAtA []byte) error { return ErrInvalidLengthService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -376,7 +458,7 @@ func (m *IstioService) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -393,7 +475,7 @@ func (m *IstioService) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -403,6 +485,9 @@ func (m *IstioService) Unmarshal(dAtA []byte) error { return ErrInvalidLengthService } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthService + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -419,7 +504,7 @@ func (m *IstioService) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -429,6 +514,9 @@ func (m *IstioService) Unmarshal(dAtA []byte) error { return ErrInvalidLengthService } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthService + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -460,6 +548,9 @@ func (m *IstioService) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthService } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthService + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -526,10 +617,13 @@ func skipService(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthService } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthService + } return iNdEx, nil case 3: for { @@ -558,6 +652,9 @@ func skipService(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthService + } } return iNdEx, nil case 4: @@ -576,29 +673,3 @@ var ( ErrInvalidLengthService = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowService = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("mixer/v1/config/client/service.proto", fileDescriptorService) } - -var fileDescriptorService = []byte{ - // 308 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0xc9, 0xcd, 0xac, 0x48, - 0x2d, 0xd2, 0x2f, 0x33, 0xd4, 0x4f, 0xce, 0xcf, 0x4b, 0xcb, 0x4c, 0xd7, 0x4f, 0xce, 0xc9, 0x4c, - 0xcd, 0x2b, 0xd1, 0x2f, 0x4e, 0x2d, 0x2a, 0xcb, 0x4c, 0x4e, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, - 0x17, 0x92, 0xc9, 0x2c, 0x2e, 0xc9, 0xcc, 0xd7, 0x03, 0xab, 0xd5, 0x2b, 0x33, 0xd4, 0x83, 0xa8, - 0xd5, 0x83, 0xa8, 0x95, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0x2b, 0xd4, 0x07, 0xb1, 0x20, 0x7a, - 0x94, 0xfe, 0x32, 0x72, 0xf1, 0x78, 0x82, 0xb4, 0x05, 0x43, 0x8c, 0x12, 0x12, 0xe2, 0x62, 0xc9, - 0x4b, 0xcc, 0x4d, 0x95, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x0c, 0x02, 0xb3, 0x85, 0x64, 0xb8, 0x38, - 0x41, 0x74, 0x71, 0x41, 0x62, 0x72, 0xaa, 0x04, 0x13, 0x58, 0x02, 0x21, 0x20, 0x24, 0xc6, 0xc5, - 0x96, 0x92, 0x9f, 0x9b, 0x98, 0x99, 0x27, 0xc1, 0x0c, 0x96, 0x82, 0xf2, 0x84, 0x24, 0xb8, 0xd8, - 0xa1, 0xee, 0x93, 0x60, 0x01, 0x4b, 0xc0, 0xb8, 0x42, 0x7e, 0x5c, 0x6c, 0x39, 0x89, 0x49, 0xa9, - 0x39, 0xc5, 0x12, 0xac, 0x0a, 0xcc, 0x1a, 0xdc, 0x46, 0x66, 0x7a, 0xf8, 0x5c, 0xae, 0x87, 0xec, - 0x3e, 0x3d, 0x1f, 0xb0, 0x46, 0xd7, 0xbc, 0x92, 0xa2, 0xca, 0x20, 0xa8, 0x29, 0x52, 0x96, 0x5c, - 0xdc, 0x48, 0xc2, 0x42, 0x02, 0x5c, 0xcc, 0xd9, 0xa9, 0x95, 0x50, 0x1f, 0x80, 0x98, 0x42, 0x22, - 0x5c, 0xac, 0x65, 0x89, 0x39, 0xa5, 0x30, 0xc7, 0x43, 0x38, 0x56, 0x4c, 0x16, 0x8c, 0x4e, 0xa1, - 0x27, 0x1e, 0xca, 0x31, 0x5c, 0x78, 0x28, 0xc7, 0x70, 0xe3, 0xa1, 0x1c, 0xc3, 0x87, 0x87, 0x72, - 0x0c, 0x0d, 0x8f, 0xe4, 0x18, 0x57, 0x3c, 0x92, 0x63, 0x38, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, - 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x5f, 0x3c, 0x92, 0x63, 0xf8, 0xf0, 0x48, 0x8e, 0x71, 0xc2, - 0x63, 0x39, 0x86, 0x28, 0x65, 0x88, 0x5b, 0x33, 0xf3, 0xf5, 0x13, 0x0b, 0x32, 0xf5, 0xb1, 0x47, - 0x4c, 0x12, 0x1b, 0x38, 0x74, 0x8d, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xc8, 0x61, 0xda, 0x1b, - 0xb9, 0x01, 0x00, 0x00, -} diff --git a/mixer/v1/mixer.pb.go b/mixer/v1/mixer.pb.go index c413a36f50b..be9a088d51c 100644 --- a/mixer/v1/mixer.pb.go +++ b/mixer/v1/mixer.pb.go @@ -1,29 +1,28 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: mixer/v1/mixer.proto -package v1 - -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "github.com/gogo/protobuf/gogoproto" -import _ "github.com/gogo/protobuf/types" -import google_rpc "github.com/gogo/googleapis/google/rpc" - -import time "time" - -import strconv "strconv" +// This package defines the Mixer API that the sidecar proxy uses to perform +// precondition checks, manage quotas, and report telemetry. -import context "golang.org/x/net/context" -import grpc "google.golang.org/grpc" - -import types "github.com/gogo/protobuf/types" - -import strings "strings" -import reflect "reflect" -import sortkeys "github.com/gogo/protobuf/sortkeys" +package v1 -import io "io" +import ( + context "context" + fmt "fmt" + rpc "github.com/gogo/googleapis/google/rpc" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" + github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + _ "github.com/gogo/protobuf/types" + github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" + grpc "google.golang.org/grpc" + io "io" + math "math" + reflect "reflect" + strconv "strconv" + strings "strings" + time "time" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -31,6 +30,12 @@ var _ = fmt.Errorf var _ = math.Inf var _ = time.Kitchen +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + // How an attribute's value was matched type ReferencedAttributes_Condition int32 @@ -47,6 +52,7 @@ var ReferencedAttributes_Condition_name = map[int32]string{ 2: "EXACT", 3: "REGEX", } + var ReferencedAttributes_Condition_value = map[string]int32{ "CONDITION_UNSPECIFIED": 0, "ABSENCE": 1, @@ -55,7 +61,7 @@ var ReferencedAttributes_Condition_value = map[string]int32{ } func (ReferencedAttributes_Condition) EnumDescriptor() ([]byte, []int) { - return fileDescriptorMixer, []int{2, 0} + return fileDescriptor_f6f59c90bff4c1e2, []int{2, 0} } // Operation type. @@ -72,6 +78,7 @@ var HeaderOperation_Operation_name = map[int32]string{ 1: "REMOVE", 2: "APPEND", } + var HeaderOperation_Operation_value = map[string]int32{ "REPLACE": 0, "REMOVE": 1, @@ -79,7 +86,7 @@ var HeaderOperation_Operation_value = map[string]int32{ } func (HeaderOperation_Operation) EnumDescriptor() ([]byte, []int) { - return fileDescriptorMixer, []int{3, 0} + return fileDescriptor_f6f59c90bff4c1e2, []int{3, 0} } // Used to signal how the sets of compressed attributes should be reconstitued server-side. @@ -101,13 +108,14 @@ var ReportRequest_RepeatedAttributesSemantics_name = map[int32]string{ 0: "DELTA_ENCODING", 1: "INDEPENDENT_ENCODING", } + var ReportRequest_RepeatedAttributesSemantics_value = map[string]int32{ "DELTA_ENCODING": 0, "INDEPENDENT_ENCODING": 1, } func (ReportRequest_RepeatedAttributesSemantics) EnumDescriptor() ([]byte, []int) { - return fileDescriptorMixer, []int{5, 0} + return fileDescriptor_f6f59c90bff4c1e2, []int{5, 0} } // Used to get a thumbs-up/thumbs-down before performing an action. @@ -116,7 +124,7 @@ type CheckRequest struct { // // Mixer's configuration determines how these attributes are used to // establish the result returned in the response. - Attributes CompressedAttributes `protobuf:"bytes,1,opt,name=attributes" json:"attributes"` + Attributes CompressedAttributes `protobuf:"bytes,1,opt,name=attributes,proto3" json:"attributes"` // The number of words in the global dictionary, used with to populate the attributes. // This value is used as a quick way to determine whether the client is using a dictionary that // the server understands. @@ -125,12 +133,40 @@ type CheckRequest struct { // per call, where the same UUID is used for retries of the same call. DeduplicationId string `protobuf:"bytes,3,opt,name=deduplication_id,json=deduplicationId,proto3" json:"deduplication_id,omitempty"` // The individual quotas to allocate - Quotas map[string]CheckRequest_QuotaParams `protobuf:"bytes,4,rep,name=quotas" json:"quotas" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"` + Quotas map[string]CheckRequest_QuotaParams `protobuf:"bytes,4,rep,name=quotas,proto3" json:"quotas" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *CheckRequest) Reset() { *m = CheckRequest{} } -func (*CheckRequest) ProtoMessage() {} -func (*CheckRequest) Descriptor() ([]byte, []int) { return fileDescriptorMixer, []int{0} } +func (m *CheckRequest) Reset() { *m = CheckRequest{} } +func (*CheckRequest) ProtoMessage() {} +func (*CheckRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_f6f59c90bff4c1e2, []int{0} +} +func (m *CheckRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CheckRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CheckRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CheckRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CheckRequest.Merge(m, src) +} +func (m *CheckRequest) XXX_Size() int { + return m.Size() +} +func (m *CheckRequest) XXX_DiscardUnknown() { + xxx_messageInfo_CheckRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_CheckRequest proto.InternalMessageInfo // parameters for a quota allocation type CheckRequest_QuotaParams struct { @@ -140,76 +176,212 @@ type CheckRequest_QuotaParams struct { BestEffort bool `protobuf:"varint,2,opt,name=best_effort,json=bestEffort,proto3" json:"best_effort,omitempty"` } -func (m *CheckRequest_QuotaParams) Reset() { *m = CheckRequest_QuotaParams{} } -func (*CheckRequest_QuotaParams) ProtoMessage() {} -func (*CheckRequest_QuotaParams) Descriptor() ([]byte, []int) { return fileDescriptorMixer, []int{0, 0} } +func (m *CheckRequest_QuotaParams) Reset() { *m = CheckRequest_QuotaParams{} } +func (*CheckRequest_QuotaParams) ProtoMessage() {} +func (*CheckRequest_QuotaParams) Descriptor() ([]byte, []int) { + return fileDescriptor_f6f59c90bff4c1e2, []int{0, 0} +} +func (m *CheckRequest_QuotaParams) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CheckRequest_QuotaParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CheckRequest_QuotaParams.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CheckRequest_QuotaParams) XXX_Merge(src proto.Message) { + xxx_messageInfo_CheckRequest_QuotaParams.Merge(m, src) +} +func (m *CheckRequest_QuotaParams) XXX_Size() int { + return m.Size() +} +func (m *CheckRequest_QuotaParams) XXX_DiscardUnknown() { + xxx_messageInfo_CheckRequest_QuotaParams.DiscardUnknown(m) +} + +var xxx_messageInfo_CheckRequest_QuotaParams proto.InternalMessageInfo // The response generated by the Check method. type CheckResponse struct { // The precondition check results. - Precondition CheckResponse_PreconditionResult `protobuf:"bytes,2,opt,name=precondition" json:"precondition"` + Precondition CheckResponse_PreconditionResult `protobuf:"bytes,2,opt,name=precondition,proto3" json:"precondition"` // The resulting quota, one entry per requested quota. - Quotas map[string]CheckResponse_QuotaResult `protobuf:"bytes,3,rep,name=quotas" json:"quotas" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"` + Quotas map[string]CheckResponse_QuotaResult `protobuf:"bytes,3,rep,name=quotas,proto3" json:"quotas" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *CheckResponse) Reset() { *m = CheckResponse{} } -func (*CheckResponse) ProtoMessage() {} -func (*CheckResponse) Descriptor() ([]byte, []int) { return fileDescriptorMixer, []int{1} } +func (m *CheckResponse) Reset() { *m = CheckResponse{} } +func (*CheckResponse) ProtoMessage() {} +func (*CheckResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_f6f59c90bff4c1e2, []int{1} +} +func (m *CheckResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CheckResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CheckResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CheckResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CheckResponse.Merge(m, src) +} +func (m *CheckResponse) XXX_Size() int { + return m.Size() +} +func (m *CheckResponse) XXX_DiscardUnknown() { + xxx_messageInfo_CheckResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_CheckResponse proto.InternalMessageInfo // Expresses the result of a precondition check. type CheckResponse_PreconditionResult struct { // A status code of OK indicates all preconditions were satisfied. Any other code indicates not // all preconditions were satisfied and details describe why. - Status google_rpc.Status `protobuf:"bytes,1,opt,name=status" json:"status"` + Status rpc.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status"` // The amount of time for which this result can be considered valid. - ValidDuration time.Duration `protobuf:"bytes,2,opt,name=valid_duration,json=validDuration,stdduration" json:"valid_duration"` + ValidDuration time.Duration `protobuf:"bytes,2,opt,name=valid_duration,json=validDuration,proto3,stdduration" json:"valid_duration"` // The number of uses for which this result can be considered valid. ValidUseCount int32 `protobuf:"varint,3,opt,name=valid_use_count,json=validUseCount,proto3" json:"valid_use_count,omitempty"` // The total set of attributes that were used in producing the result // along with matching conditions. - ReferencedAttributes *ReferencedAttributes `protobuf:"bytes,5,opt,name=referenced_attributes,json=referencedAttributes" json:"referenced_attributes,omitempty"` + ReferencedAttributes *ReferencedAttributes `protobuf:"bytes,5,opt,name=referenced_attributes,json=referencedAttributes,proto3" json:"referenced_attributes,omitempty"` // An optional routing directive, used to manipulate the traffic metadata // whenever all preconditions are satisfied. - RouteDirective *RouteDirective `protobuf:"bytes,6,opt,name=route_directive,json=routeDirective" json:"route_directive,omitempty"` + RouteDirective *RouteDirective `protobuf:"bytes,6,opt,name=route_directive,json=routeDirective,proto3" json:"route_directive,omitempty"` } func (m *CheckResponse_PreconditionResult) Reset() { *m = CheckResponse_PreconditionResult{} } func (*CheckResponse_PreconditionResult) ProtoMessage() {} func (*CheckResponse_PreconditionResult) Descriptor() ([]byte, []int) { - return fileDescriptorMixer, []int{1, 0} + return fileDescriptor_f6f59c90bff4c1e2, []int{1, 0} +} +func (m *CheckResponse_PreconditionResult) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CheckResponse_PreconditionResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CheckResponse_PreconditionResult.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CheckResponse_PreconditionResult) XXX_Merge(src proto.Message) { + xxx_messageInfo_CheckResponse_PreconditionResult.Merge(m, src) +} +func (m *CheckResponse_PreconditionResult) XXX_Size() int { + return m.Size() +} +func (m *CheckResponse_PreconditionResult) XXX_DiscardUnknown() { + xxx_messageInfo_CheckResponse_PreconditionResult.DiscardUnknown(m) } +var xxx_messageInfo_CheckResponse_PreconditionResult proto.InternalMessageInfo + // Expresses the result of a quota allocation. type CheckResponse_QuotaResult struct { // The amount of time for which this result can be considered valid. - ValidDuration time.Duration `protobuf:"bytes,1,opt,name=valid_duration,json=validDuration,stdduration" json:"valid_duration"` + ValidDuration time.Duration `protobuf:"bytes,1,opt,name=valid_duration,json=validDuration,proto3,stdduration" json:"valid_duration"` // The amount of granted quota. When `QuotaParams.best_effort` is true, this will be >= 0. // If `QuotaParams.best_effort` is false, this will be either 0 or >= `QuotaParams.amount`. GrantedAmount int64 `protobuf:"varint,2,opt,name=granted_amount,json=grantedAmount,proto3" json:"granted_amount,omitempty"` // The total set of attributes that were used in producing the result // along with matching conditions. - ReferencedAttributes ReferencedAttributes `protobuf:"bytes,5,opt,name=referenced_attributes,json=referencedAttributes" json:"referenced_attributes"` + ReferencedAttributes ReferencedAttributes `protobuf:"bytes,5,opt,name=referenced_attributes,json=referencedAttributes,proto3" json:"referenced_attributes"` } func (m *CheckResponse_QuotaResult) Reset() { *m = CheckResponse_QuotaResult{} } func (*CheckResponse_QuotaResult) ProtoMessage() {} func (*CheckResponse_QuotaResult) Descriptor() ([]byte, []int) { - return fileDescriptorMixer, []int{1, 1} + return fileDescriptor_f6f59c90bff4c1e2, []int{1, 1} +} +func (m *CheckResponse_QuotaResult) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CheckResponse_QuotaResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CheckResponse_QuotaResult.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CheckResponse_QuotaResult) XXX_Merge(src proto.Message) { + xxx_messageInfo_CheckResponse_QuotaResult.Merge(m, src) +} +func (m *CheckResponse_QuotaResult) XXX_Size() int { + return m.Size() +} +func (m *CheckResponse_QuotaResult) XXX_DiscardUnknown() { + xxx_messageInfo_CheckResponse_QuotaResult.DiscardUnknown(m) } +var xxx_messageInfo_CheckResponse_QuotaResult proto.InternalMessageInfo + // Describes the attributes that were used to determine the response. // This can be used to construct a response cache. type ReferencedAttributes struct { // The message-level dictionary. Refer to [CompressedAttributes][istio.mixer.v1.CompressedAttributes] for information // on using dictionaries. - Words []string `protobuf:"bytes,1,rep,name=words" json:"words,omitempty"` + Words []string `protobuf:"bytes,1,rep,name=words,proto3" json:"words,omitempty"` // Describes a set of attributes. - AttributeMatches []ReferencedAttributes_AttributeMatch `protobuf:"bytes,2,rep,name=attribute_matches,json=attributeMatches" json:"attribute_matches"` + AttributeMatches []ReferencedAttributes_AttributeMatch `protobuf:"bytes,2,rep,name=attribute_matches,json=attributeMatches,proto3" json:"attribute_matches"` } -func (m *ReferencedAttributes) Reset() { *m = ReferencedAttributes{} } -func (*ReferencedAttributes) ProtoMessage() {} -func (*ReferencedAttributes) Descriptor() ([]byte, []int) { return fileDescriptorMixer, []int{2} } +func (m *ReferencedAttributes) Reset() { *m = ReferencedAttributes{} } +func (*ReferencedAttributes) ProtoMessage() {} +func (*ReferencedAttributes) Descriptor() ([]byte, []int) { + return fileDescriptor_f6f59c90bff4c1e2, []int{2} +} +func (m *ReferencedAttributes) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ReferencedAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ReferencedAttributes.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ReferencedAttributes) XXX_Merge(src proto.Message) { + xxx_messageInfo_ReferencedAttributes.Merge(m, src) +} +func (m *ReferencedAttributes) XXX_Size() int { + return m.Size() +} +func (m *ReferencedAttributes) XXX_DiscardUnknown() { + xxx_messageInfo_ReferencedAttributes.DiscardUnknown(m) +} + +var xxx_messageInfo_ReferencedAttributes proto.InternalMessageInfo // Describes a single attribute match. type ReferencedAttributes_AttributeMatch struct { @@ -237,8 +409,34 @@ type ReferencedAttributes_AttributeMatch struct { func (m *ReferencedAttributes_AttributeMatch) Reset() { *m = ReferencedAttributes_AttributeMatch{} } func (*ReferencedAttributes_AttributeMatch) ProtoMessage() {} func (*ReferencedAttributes_AttributeMatch) Descriptor() ([]byte, []int) { - return fileDescriptorMixer, []int{2, 0} + return fileDescriptor_f6f59c90bff4c1e2, []int{2, 0} +} +func (m *ReferencedAttributes_AttributeMatch) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) } +func (m *ReferencedAttributes_AttributeMatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ReferencedAttributes_AttributeMatch.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ReferencedAttributes_AttributeMatch) XXX_Merge(src proto.Message) { + xxx_messageInfo_ReferencedAttributes_AttributeMatch.Merge(m, src) +} +func (m *ReferencedAttributes_AttributeMatch) XXX_Size() int { + return m.Size() +} +func (m *ReferencedAttributes_AttributeMatch) XXX_DiscardUnknown() { + xxx_messageInfo_ReferencedAttributes_AttributeMatch.DiscardUnknown(m) +} + +var xxx_messageInfo_ReferencedAttributes_AttributeMatch proto.InternalMessageInfo // Operation on HTTP headers to replace, append, or remove a header. Header // names are normalized to lower-case with dashes, e.g. "x-request-id". @@ -253,17 +451,45 @@ type HeaderOperation struct { Operation HeaderOperation_Operation `protobuf:"varint,3,opt,name=operation,proto3,enum=istio.mixer.v1.HeaderOperation_Operation" json:"operation,omitempty"` } -func (m *HeaderOperation) Reset() { *m = HeaderOperation{} } -func (*HeaderOperation) ProtoMessage() {} -func (*HeaderOperation) Descriptor() ([]byte, []int) { return fileDescriptorMixer, []int{3} } +func (m *HeaderOperation) Reset() { *m = HeaderOperation{} } +func (*HeaderOperation) ProtoMessage() {} +func (*HeaderOperation) Descriptor() ([]byte, []int) { + return fileDescriptor_f6f59c90bff4c1e2, []int{3} +} +func (m *HeaderOperation) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *HeaderOperation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_HeaderOperation.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *HeaderOperation) XXX_Merge(src proto.Message) { + xxx_messageInfo_HeaderOperation.Merge(m, src) +} +func (m *HeaderOperation) XXX_Size() int { + return m.Size() +} +func (m *HeaderOperation) XXX_DiscardUnknown() { + xxx_messageInfo_HeaderOperation.DiscardUnknown(m) +} + +var xxx_messageInfo_HeaderOperation proto.InternalMessageInfo // Expresses the routing manipulation actions to be performed on behalf of // Mixer in response to a precondition check. type RouteDirective struct { // Operations on the request headers. - RequestHeaderOperations []HeaderOperation `protobuf:"bytes,1,rep,name=request_header_operations,json=requestHeaderOperations" json:"request_header_operations"` + RequestHeaderOperations []HeaderOperation `protobuf:"bytes,1,rep,name=request_header_operations,json=requestHeaderOperations,proto3" json:"request_header_operations"` // Operations on the response headers. - ResponseHeaderOperations []HeaderOperation `protobuf:"bytes,2,rep,name=response_header_operations,json=responseHeaderOperations" json:"response_header_operations"` + ResponseHeaderOperations []HeaderOperation `protobuf:"bytes,2,rep,name=response_header_operations,json=responseHeaderOperations,proto3" json:"response_header_operations"` // If set, enables a direct response without proxying the request to the routing // destination. Required to be a value in the 2xx or 3xx range. DirectResponseCode uint32 `protobuf:"varint,3,opt,name=direct_response_code,json=directResponseCode,proto3" json:"direct_response_code,omitempty"` @@ -272,9 +498,37 @@ type RouteDirective struct { DirectResponseBody string `protobuf:"bytes,4,opt,name=direct_response_body,json=directResponseBody,proto3" json:"direct_response_body,omitempty"` } -func (m *RouteDirective) Reset() { *m = RouteDirective{} } -func (*RouteDirective) ProtoMessage() {} -func (*RouteDirective) Descriptor() ([]byte, []int) { return fileDescriptorMixer, []int{4} } +func (m *RouteDirective) Reset() { *m = RouteDirective{} } +func (*RouteDirective) ProtoMessage() {} +func (*RouteDirective) Descriptor() ([]byte, []int) { + return fileDescriptor_f6f59c90bff4c1e2, []int{4} +} +func (m *RouteDirective) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RouteDirective) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RouteDirective.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RouteDirective) XXX_Merge(src proto.Message) { + xxx_messageInfo_RouteDirective.Merge(m, src) +} +func (m *RouteDirective) XXX_Size() int { + return m.Size() +} +func (m *RouteDirective) XXX_DiscardUnknown() { + xxx_messageInfo_RouteDirective.DiscardUnknown(m) +} + +var xxx_messageInfo_RouteDirective proto.InternalMessageInfo // Used to report telemetry after performing one or more actions. type ReportRequest struct { @@ -283,7 +537,7 @@ type ReportRequest struct { // Each `Attributes` element represents the state of a single action. Multiple actions // can be provided in a single message in order to improve communication efficiency. The // client can accumulate a set of actions and send them all in one single message. - Attributes []CompressedAttributes `protobuf:"bytes,1,rep,name=attributes" json:"attributes"` + Attributes []CompressedAttributes `protobuf:"bytes,1,rep,name=attributes,proto3" json:"attributes"` // Indicates how to decode the attributes sets in this request. RepeatedAttributesSemantics ReportRequest_RepeatedAttributesSemantics `protobuf:"varint,4,opt,name=repeated_attributes_semantics,json=repeatedAttributesSemantics,proto3,enum=istio.mixer.v1.ReportRequest_RepeatedAttributesSemantics" json:"repeated_attributes_semantics,omitempty"` // The default message-level dictionary for all the attributes. @@ -292,28 +546,89 @@ type ReportRequest struct { // // This makes it possible to share the same dictionary for all attributes in this // request, which can substantially reduce the overall request size. - DefaultWords []string `protobuf:"bytes,2,rep,name=default_words,json=defaultWords" json:"default_words,omitempty"` + DefaultWords []string `protobuf:"bytes,2,rep,name=default_words,json=defaultWords,proto3" json:"default_words,omitempty"` // The number of words in the global dictionary. // To detect global dictionary out of sync between client and server. GlobalWordCount uint32 `protobuf:"varint,3,opt,name=global_word_count,json=globalWordCount,proto3" json:"global_word_count,omitempty"` } -func (m *ReportRequest) Reset() { *m = ReportRequest{} } -func (*ReportRequest) ProtoMessage() {} -func (*ReportRequest) Descriptor() ([]byte, []int) { return fileDescriptorMixer, []int{5} } +func (m *ReportRequest) Reset() { *m = ReportRequest{} } +func (*ReportRequest) ProtoMessage() {} +func (*ReportRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_f6f59c90bff4c1e2, []int{5} +} +func (m *ReportRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ReportRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ReportRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ReportRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_ReportRequest.Merge(m, src) +} +func (m *ReportRequest) XXX_Size() int { + return m.Size() +} +func (m *ReportRequest) XXX_DiscardUnknown() { + xxx_messageInfo_ReportRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_ReportRequest proto.InternalMessageInfo // Used to carry responses to telemetry reports type ReportResponse struct { } -func (m *ReportResponse) Reset() { *m = ReportResponse{} } -func (*ReportResponse) ProtoMessage() {} -func (*ReportResponse) Descriptor() ([]byte, []int) { return fileDescriptorMixer, []int{6} } +func (m *ReportResponse) Reset() { *m = ReportResponse{} } +func (*ReportResponse) ProtoMessage() {} +func (*ReportResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_f6f59c90bff4c1e2, []int{6} +} +func (m *ReportResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ReportResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ReportResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ReportResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ReportResponse.Merge(m, src) +} +func (m *ReportResponse) XXX_Size() int { + return m.Size() +} +func (m *ReportResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ReportResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ReportResponse proto.InternalMessageInfo func init() { + proto.RegisterEnum("istio.mixer.v1.ReferencedAttributes_Condition", ReferencedAttributes_Condition_name, ReferencedAttributes_Condition_value) + proto.RegisterEnum("istio.mixer.v1.HeaderOperation_Operation", HeaderOperation_Operation_name, HeaderOperation_Operation_value) + proto.RegisterEnum("istio.mixer.v1.ReportRequest_RepeatedAttributesSemantics", ReportRequest_RepeatedAttributesSemantics_name, ReportRequest_RepeatedAttributesSemantics_value) proto.RegisterType((*CheckRequest)(nil), "istio.mixer.v1.CheckRequest") + proto.RegisterMapType((map[string]CheckRequest_QuotaParams)(nil), "istio.mixer.v1.CheckRequest.QuotasEntry") proto.RegisterType((*CheckRequest_QuotaParams)(nil), "istio.mixer.v1.CheckRequest.QuotaParams") proto.RegisterType((*CheckResponse)(nil), "istio.mixer.v1.CheckResponse") + proto.RegisterMapType((map[string]CheckResponse_QuotaResult)(nil), "istio.mixer.v1.CheckResponse.QuotasEntry") proto.RegisterType((*CheckResponse_PreconditionResult)(nil), "istio.mixer.v1.CheckResponse.PreconditionResult") proto.RegisterType((*CheckResponse_QuotaResult)(nil), "istio.mixer.v1.CheckResponse.QuotaResult") proto.RegisterType((*ReferencedAttributes)(nil), "istio.mixer.v1.ReferencedAttributes") @@ -322,10 +637,91 @@ func init() { proto.RegisterType((*RouteDirective)(nil), "istio.mixer.v1.RouteDirective") proto.RegisterType((*ReportRequest)(nil), "istio.mixer.v1.ReportRequest") proto.RegisterType((*ReportResponse)(nil), "istio.mixer.v1.ReportResponse") - proto.RegisterEnum("istio.mixer.v1.ReferencedAttributes_Condition", ReferencedAttributes_Condition_name, ReferencedAttributes_Condition_value) - proto.RegisterEnum("istio.mixer.v1.HeaderOperation_Operation", HeaderOperation_Operation_name, HeaderOperation_Operation_value) - proto.RegisterEnum("istio.mixer.v1.ReportRequest_RepeatedAttributesSemantics", ReportRequest_RepeatedAttributesSemantics_name, ReportRequest_RepeatedAttributesSemantics_value) } + +func init() { proto.RegisterFile("mixer/v1/mixer.proto", fileDescriptor_f6f59c90bff4c1e2) } + +var fileDescriptor_f6f59c90bff4c1e2 = []byte{ + // 1218 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x3b, 0x73, 0xdb, 0x46, + 0x10, 0x06, 0x08, 0x91, 0x36, 0x97, 0x26, 0x05, 0xdf, 0xd0, 0x31, 0x45, 0xc7, 0x90, 0x86, 0x79, + 0x8c, 0x9c, 0x02, 0x94, 0xe5, 0x26, 0x49, 0x91, 0x0c, 0x45, 0x42, 0x0a, 0xfd, 0xa0, 0x14, 0x48, + 0x8e, 0x1d, 0x37, 0x18, 0x08, 0x38, 0xd2, 0x18, 0x93, 0x3c, 0xf8, 0x00, 0x28, 0x56, 0x91, 0x19, + 0xcf, 0xe4, 0x0f, 0xa4, 0xcc, 0xa4, 0x4b, 0x93, 0xc9, 0x2f, 0x48, 0x95, 0x1f, 0xe0, 0xd2, 0xa5, + 0xab, 0x24, 0xa2, 0x93, 0x99, 0x94, 0x2e, 0x5d, 0x66, 0x70, 0x77, 0x00, 0x49, 0x91, 0x92, 0x95, + 0x47, 0x77, 0xb7, 0x8f, 0x6f, 0x77, 0x3f, 0xec, 0x2e, 0x0e, 0xca, 0x03, 0xef, 0x09, 0xa6, 0xf5, + 0x83, 0xeb, 0x75, 0x76, 0xd0, 0x7d, 0x4a, 0x42, 0x82, 0x4a, 0x5e, 0x10, 0x7a, 0x44, 0xe7, 0xa2, + 0x83, 0xeb, 0xd5, 0x72, 0x8f, 0xf4, 0x08, 0x53, 0xd5, 0xe3, 0x13, 0xb7, 0xaa, 0x6a, 0x3d, 0x42, + 0x7a, 0x7d, 0x5c, 0x67, 0xb7, 0xfd, 0xa8, 0x5b, 0x77, 0x23, 0x6a, 0x87, 0x1e, 0x19, 0x0a, 0xfd, + 0x65, 0xa1, 0xa7, 0xbe, 0x53, 0x0f, 0x42, 0x3b, 0x8c, 0x02, 0xa1, 0x58, 0x4a, 0x83, 0xda, 0x61, + 0x48, 0xbd, 0xfd, 0x28, 0xc4, 0x42, 0x55, 0xfb, 0x51, 0x81, 0x0b, 0xcd, 0x87, 0xd8, 0x79, 0x64, + 0xe2, 0xc7, 0x11, 0x0e, 0x42, 0x74, 0x13, 0x60, 0x6c, 0x54, 0x91, 0x57, 0xe4, 0xd5, 0xc2, 0xfa, + 0xbb, 0xfa, 0x74, 0x7e, 0x7a, 0x93, 0x0c, 0x7c, 0x8a, 0x83, 0x00, 0xbb, 0x8d, 0xd4, 0x76, 0x63, + 0xe1, 0xd9, 0xaf, 0xcb, 0x92, 0x39, 0xe1, 0x8d, 0x3e, 0x80, 0x8b, 0xbd, 0x3e, 0xd9, 0xb7, 0xfb, + 0xd6, 0x57, 0x84, 0xba, 0x96, 0x43, 0xa2, 0x61, 0x58, 0xc9, 0xac, 0xc8, 0xab, 0x45, 0x73, 0x91, + 0x2b, 0xee, 0x11, 0xea, 0x36, 0x63, 0x31, 0xba, 0x06, 0xaa, 0x8b, 0xdd, 0xc8, 0xef, 0x7b, 0x0e, + 0xab, 0xc9, 0xf2, 0xdc, 0x8a, 0xb2, 0x22, 0xaf, 0xe6, 0xcd, 0xc5, 0x29, 0x79, 0xdb, 0x45, 0x9b, + 0x90, 0x7b, 0x1c, 0x91, 0xd0, 0x0e, 0x2a, 0x0b, 0x2b, 0xca, 0x6a, 0x61, 0x7d, 0x75, 0x26, 0xbd, + 0x89, 0x82, 0xf4, 0xcf, 0x99, 0xa9, 0x31, 0x0c, 0xe9, 0xa1, 0x48, 0x51, 0x78, 0x57, 0x37, 0xa1, + 0xc0, 0x94, 0x3b, 0x36, 0xb5, 0x07, 0x01, 0x7a, 0x0b, 0x72, 0xf6, 0x80, 0xa5, 0x18, 0x57, 0xad, + 0x98, 0xe2, 0x86, 0x96, 0xa1, 0xb0, 0x8f, 0x83, 0xd0, 0xc2, 0xdd, 0x2e, 0xa1, 0x3c, 0xff, 0xf3, + 0x26, 0xc4, 0x22, 0x83, 0x49, 0xaa, 0x8e, 0xc0, 0xe1, 0x41, 0x90, 0x0a, 0xca, 0x23, 0x7c, 0xc8, + 0x40, 0xf2, 0x66, 0x7c, 0x44, 0x9f, 0x40, 0xf6, 0xc0, 0xee, 0x47, 0x98, 0xf9, 0x9e, 0x29, 0x5f, + 0x9e, 0x92, 0xc9, 0xdd, 0x3e, 0xce, 0x7c, 0x28, 0xd7, 0xfe, 0xcc, 0x41, 0x51, 0xd8, 0x05, 0x3e, + 0x19, 0x06, 0x18, 0x3d, 0x80, 0x0b, 0x3e, 0xc5, 0x0e, 0x19, 0xba, 0x5e, 0x4c, 0x8c, 0x00, 0x5f, + 0x3b, 0x01, 0x9c, 0x3b, 0xe9, 0x3b, 0x13, 0x1e, 0x26, 0x0e, 0xa2, 0x7e, 0x28, 0x48, 0x99, 0xc2, + 0x42, 0x5b, 0x29, 0xc5, 0x0a, 0xa3, 0xf8, 0xda, 0xe9, 0xa8, 0x27, 0x73, 0xfc, 0x47, 0x06, 0xd0, + 0x6c, 0x4c, 0xb4, 0x06, 0x39, 0xde, 0xa1, 0xa2, 0xc3, 0x90, 0xce, 0x7b, 0x57, 0xa7, 0xbe, 0xa3, + 0xef, 0x32, 0x4d, 0x02, 0xc4, 0xed, 0xd0, 0x4d, 0x28, 0x1d, 0xd8, 0x7d, 0xcf, 0xb5, 0x92, 0xa6, + 0x17, 0xf5, 0x2e, 0x25, 0x9e, 0xc9, 0x54, 0xe8, 0x2d, 0x61, 0xb0, 0x71, 0x3e, 0x06, 0xf8, 0xee, + 0xb7, 0x65, 0xd9, 0x2c, 0x32, 0xd7, 0x44, 0x81, 0xde, 0x87, 0x45, 0x8e, 0x15, 0x05, 0x58, 0x74, + 0x65, 0xdc, 0x6a, 0x59, 0x61, 0x77, 0x37, 0xc0, 0xbc, 0x27, 0xbf, 0x84, 0x4b, 0x14, 0x77, 0x31, + 0xc5, 0x43, 0x07, 0xbb, 0xd6, 0xc4, 0x58, 0x64, 0xe7, 0x8f, 0x85, 0x99, 0x1a, 0x8f, 0xc7, 0xc2, + 0x2c, 0xd3, 0x39, 0x52, 0xb4, 0x05, 0x8b, 0x94, 0x44, 0x21, 0xb6, 0x5c, 0x8f, 0x62, 0x27, 0xf4, + 0x0e, 0x70, 0x25, 0xc7, 0x40, 0xb5, 0x19, 0xd0, 0xd8, 0xac, 0x95, 0x58, 0x99, 0x25, 0x3a, 0x75, + 0xbf, 0xb9, 0x70, 0x7e, 0x41, 0xcd, 0x56, 0x8f, 0x64, 0xd1, 0x83, 0x82, 0xdf, 0x59, 0xb6, 0xe4, + 0x7f, 0xcd, 0xd6, 0x7b, 0x50, 0xea, 0x51, 0x7b, 0x18, 0xc6, 0x14, 0x0c, 0xd2, 0x11, 0x56, 0xcc, + 0xa2, 0x90, 0x36, 0xf8, 0x98, 0x58, 0xff, 0x03, 0x59, 0xe2, 0x9b, 0xcf, 0xa5, 0xac, 0xea, 0xbe, + 0x69, 0xcc, 0x3e, 0x9d, 0x1e, 0xb3, 0xb3, 0xf4, 0x2c, 0xa7, 0x6b, 0x72, 0xce, 0xbe, 0x51, 0xa0, + 0x3c, 0x2f, 0x35, 0x54, 0x86, 0x6c, 0xbc, 0xc5, 0xe2, 0x8e, 0x55, 0x56, 0xf3, 0x26, 0xbf, 0xa0, + 0x2e, 0x5c, 0x4c, 0x4b, 0xb5, 0x06, 0x76, 0xe8, 0x3c, 0xc4, 0x41, 0x25, 0xc3, 0x66, 0xe6, 0xc6, + 0x59, 0x2a, 0xd6, 0xd3, 0xe3, 0x9d, 0xd8, 0x59, 0x10, 0xa0, 0xda, 0x53, 0x52, 0x1c, 0x54, 0x7f, + 0x90, 0xa1, 0x34, 0x6d, 0x8a, 0x10, 0x2c, 0x0c, 0xed, 0x01, 0x66, 0x0c, 0x5c, 0x34, 0xd9, 0x19, + 0xdd, 0x86, 0xfc, 0xf4, 0x42, 0x28, 0xad, 0xeb, 0x67, 0x4a, 0xa3, 0x99, 0x0e, 0xe8, 0x18, 0x20, + 0x2e, 0x99, 0xe2, 0x1e, 0x7e, 0x22, 0x16, 0x31, 0xbf, 0xa0, 0xcb, 0x70, 0x6e, 0x60, 0xfb, 0x56, + 0x4c, 0xfe, 0x02, 0x0b, 0x9d, 0x1b, 0xd8, 0xfe, 0x2d, 0x7c, 0x58, 0x6b, 0x43, 0x3e, 0x85, 0x41, + 0x4b, 0x70, 0xa9, 0xb9, 0xdd, 0x69, 0xb5, 0xf7, 0xda, 0xdb, 0x1d, 0xeb, 0x6e, 0x67, 0x77, 0xc7, + 0x68, 0xb6, 0x37, 0xdb, 0x46, 0x4b, 0x95, 0x50, 0x01, 0xce, 0x35, 0x36, 0x76, 0x8d, 0x4e, 0xd3, + 0x50, 0x65, 0x94, 0x87, 0xac, 0x71, 0xbf, 0xd1, 0xdc, 0x53, 0x33, 0xf1, 0xd1, 0x34, 0xb6, 0x8c, + 0xfb, 0xaa, 0x52, 0xfb, 0x59, 0x86, 0xc5, 0xcf, 0xb0, 0xed, 0x62, 0xba, 0xed, 0x63, 0xd1, 0x87, + 0x93, 0xf5, 0xe6, 0x45, 0xbd, 0xe5, 0xc9, 0x4f, 0x9e, 0x17, 0xdf, 0x11, 0x6d, 0x41, 0x9e, 0x24, + 0x6e, 0x2c, 0xf7, 0xd2, 0x6c, 0x33, 0x1c, 0x43, 0xd7, 0xd3, 0x93, 0x39, 0xf6, 0xad, 0xad, 0x41, + 0x7e, 0x1c, 0xbf, 0x00, 0xe7, 0x4c, 0x63, 0xe7, 0x76, 0xa3, 0x69, 0xa8, 0x12, 0x02, 0xc8, 0x99, + 0xc6, 0x9d, 0xed, 0x2f, 0xe2, 0x12, 0x00, 0x72, 0x8d, 0x9d, 0x1d, 0xa3, 0xd3, 0x52, 0x33, 0xb5, + 0x5f, 0x32, 0x50, 0x9a, 0x9e, 0x58, 0x64, 0xc3, 0x12, 0xe5, 0xbb, 0xdd, 0x7a, 0xc8, 0x82, 0x5a, + 0x69, 0x00, 0xde, 0x4c, 0x85, 0xf5, 0xe5, 0x37, 0x64, 0x27, 0xda, 0xe2, 0xb2, 0xc0, 0x39, 0xa6, + 0x0d, 0x90, 0x03, 0x55, 0x2a, 0xfa, 0x7a, 0x4e, 0x8c, 0xcc, 0x3f, 0x89, 0x51, 0x49, 0x80, 0x66, + 0x82, 0xac, 0x41, 0x99, 0x2f, 0x2b, 0x2b, 0x8d, 0xe5, 0x10, 0x17, 0x33, 0x82, 0x8b, 0x26, 0xe2, + 0xba, 0x64, 0xbc, 0x9a, 0xc4, 0xc5, 0xf3, 0x3c, 0xf6, 0x89, 0xcb, 0xdb, 0x26, 0x7f, 0xdc, 0x63, + 0x83, 0xb8, 0x87, 0xb5, 0xd7, 0x19, 0x28, 0x9a, 0xd8, 0x27, 0x34, 0x3c, 0xe9, 0x3d, 0xa2, 0xfc, + 0x87, 0xf7, 0xc8, 0xd7, 0x70, 0x95, 0x62, 0x1f, 0xdb, 0xe1, 0xd4, 0x82, 0xb2, 0x02, 0x3c, 0xb0, + 0x87, 0xa1, 0xe7, 0x04, 0x2c, 0xb1, 0xd2, 0xfa, 0x47, 0xb3, 0x13, 0x33, 0x91, 0x51, 0x7c, 0x63, + 0x10, 0xe3, 0x50, 0xbb, 0x09, 0x80, 0x79, 0x85, 0x9e, 0xac, 0x44, 0xef, 0x40, 0xd1, 0xc5, 0x5d, + 0x3b, 0xea, 0x87, 0x16, 0xdf, 0x24, 0x19, 0xb6, 0x49, 0x2e, 0x08, 0xe1, 0x3d, 0xb6, 0x50, 0xe6, + 0xbe, 0x99, 0x94, 0xb9, 0x6f, 0xa6, 0xda, 0x2d, 0xb8, 0x72, 0x4a, 0x32, 0x08, 0x41, 0xa9, 0x65, + 0xdc, 0xde, 0x6b, 0x58, 0x46, 0xa7, 0xb9, 0xdd, 0x6a, 0x77, 0xb6, 0x54, 0x09, 0x55, 0xa0, 0xdc, + 0xee, 0xb4, 0x8c, 0xb8, 0x5b, 0x8d, 0xce, 0xde, 0x58, 0x23, 0xd7, 0x54, 0x28, 0x25, 0x75, 0xf2, + 0x0f, 0xb2, 0xfe, 0xbd, 0x0c, 0xd9, 0x3b, 0x31, 0x07, 0x68, 0x13, 0xb2, 0x6c, 0x79, 0xa2, 0xb7, + 0x4f, 0x7b, 0xba, 0x54, 0xaf, 0x9e, 0xba, 0x71, 0x6b, 0x12, 0x6a, 0x43, 0x8e, 0xc7, 0x40, 0x57, + 0x4f, 0xe5, 0xb8, 0xaa, 0x9d, 0xa4, 0x4e, 0xa0, 0x36, 0xee, 0x3e, 0x3b, 0xd2, 0xa4, 0xe7, 0x47, + 0x9a, 0xf4, 0xe2, 0x48, 0x93, 0x5e, 0x1d, 0x69, 0xd2, 0xd3, 0x91, 0x26, 0xff, 0x34, 0xd2, 0xa4, + 0x67, 0x23, 0x4d, 0x7e, 0x3e, 0xd2, 0xe4, 0xdf, 0x47, 0x9a, 0xfc, 0xd7, 0x48, 0x93, 0x5e, 0x8d, + 0x34, 0xf9, 0xdb, 0x97, 0x9a, 0xf4, 0xfc, 0xa5, 0x26, 0xbd, 0x78, 0xa9, 0x49, 0x0f, 0x2e, 0x71, + 0x68, 0x8f, 0xd4, 0x6d, 0xdf, 0xab, 0x27, 0x4f, 0xe3, 0xa7, 0xb2, 0xfc, 0x5a, 0x96, 0xf7, 0x73, + 0xec, 0xc7, 0x78, 0xe3, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0xb5, 0x66, 0x8d, 0xa8, 0x0b, + 0x00, 0x00, +} + func (x ReferencedAttributes_Condition) String() string { s, ok := ReferencedAttributes_Condition_name[int32(x)] if ok { @@ -356,8 +752,9 @@ var _ grpc.ClientConn // is compatible with the grpc package it is being compiled against. const _ = grpc.SupportPackageIsVersion4 -// Client API for Mixer service - +// MixerClient is the client API for Mixer service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type MixerClient interface { // Checks preconditions and allocate quota before performing an operation. // The preconditions enforced depend on the set of supplied attributes and @@ -379,7 +776,7 @@ func NewMixerClient(cc *grpc.ClientConn) MixerClient { func (c *mixerClient) Check(ctx context.Context, in *CheckRequest, opts ...grpc.CallOption) (*CheckResponse, error) { out := new(CheckResponse) - err := grpc.Invoke(ctx, "/istio.mixer.v1.Mixer/Check", in, out, c.cc, opts...) + err := c.cc.Invoke(ctx, "/istio.mixer.v1.Mixer/Check", in, out, opts...) if err != nil { return nil, err } @@ -388,15 +785,14 @@ func (c *mixerClient) Check(ctx context.Context, in *CheckRequest, opts ...grpc. func (c *mixerClient) Report(ctx context.Context, in *ReportRequest, opts ...grpc.CallOption) (*ReportResponse, error) { out := new(ReportResponse) - err := grpc.Invoke(ctx, "/istio.mixer.v1.Mixer/Report", in, out, c.cc, opts...) + err := c.cc.Invoke(ctx, "/istio.mixer.v1.Mixer/Report", in, out, opts...) if err != nil { return nil, err } return out, nil } -// Server API for Mixer service - +// MixerServer is the server API for Mixer service. type MixerServer interface { // Checks preconditions and allocate quota before performing an operation. // The preconditions enforced depend on the set of supplied attributes and @@ -638,8 +1034,8 @@ func (m *CheckResponse_PreconditionResult) MarshalTo(dAtA []byte) (int, error) { i += n5 dAtA[i] = 0x12 i++ - i = encodeVarintMixer(dAtA, i, uint64(types.SizeOfStdDuration(m.ValidDuration))) - n6, err := types.StdDurationMarshalTo(m.ValidDuration, dAtA[i:]) + i = encodeVarintMixer(dAtA, i, uint64(github_com_gogo_protobuf_types.SizeOfStdDuration(m.ValidDuration))) + n6, err := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.ValidDuration, dAtA[i:]) if err != nil { return 0, err } @@ -689,8 +1085,8 @@ func (m *CheckResponse_QuotaResult) MarshalTo(dAtA []byte) (int, error) { _ = l dAtA[i] = 0xa i++ - i = encodeVarintMixer(dAtA, i, uint64(types.SizeOfStdDuration(m.ValidDuration))) - n9, err := types.StdDurationMarshalTo(m.ValidDuration, dAtA[i:]) + i = encodeVarintMixer(dAtA, i, uint64(github_com_gogo_protobuf_types.SizeOfStdDuration(m.ValidDuration))) + n9, err := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.ValidDuration, dAtA[i:]) if err != nil { return 0, err } @@ -966,6 +1362,9 @@ func encodeVarintMixer(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *CheckRequest) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = m.Attributes.Size() @@ -990,6 +1389,9 @@ func (m *CheckRequest) Size() (n int) { } func (m *CheckRequest_QuotaParams) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Amount != 0 { @@ -1002,6 +1404,9 @@ func (m *CheckRequest_QuotaParams) Size() (n int) { } func (m *CheckResponse) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = m.Precondition.Size() @@ -1019,11 +1424,14 @@ func (m *CheckResponse) Size() (n int) { } func (m *CheckResponse_PreconditionResult) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = m.Status.Size() n += 1 + l + sovMixer(uint64(l)) - l = types.SizeOfStdDuration(m.ValidDuration) + l = github_com_gogo_protobuf_types.SizeOfStdDuration(m.ValidDuration) n += 1 + l + sovMixer(uint64(l)) if m.ValidUseCount != 0 { n += 1 + sovMixer(uint64(m.ValidUseCount)) @@ -1040,9 +1448,12 @@ func (m *CheckResponse_PreconditionResult) Size() (n int) { } func (m *CheckResponse_QuotaResult) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l - l = types.SizeOfStdDuration(m.ValidDuration) + l = github_com_gogo_protobuf_types.SizeOfStdDuration(m.ValidDuration) n += 1 + l + sovMixer(uint64(l)) if m.GrantedAmount != 0 { n += 1 + sovMixer(uint64(m.GrantedAmount)) @@ -1053,6 +1464,9 @@ func (m *CheckResponse_QuotaResult) Size() (n int) { } func (m *ReferencedAttributes) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Words) > 0 { @@ -1071,6 +1485,9 @@ func (m *ReferencedAttributes) Size() (n int) { } func (m *ReferencedAttributes_AttributeMatch) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Name != 0 { @@ -1090,6 +1507,9 @@ func (m *ReferencedAttributes_AttributeMatch) Size() (n int) { } func (m *HeaderOperation) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Name) @@ -1107,6 +1527,9 @@ func (m *HeaderOperation) Size() (n int) { } func (m *RouteDirective) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.RequestHeaderOperations) > 0 { @@ -1132,6 +1555,9 @@ func (m *RouteDirective) Size() (n int) { } func (m *ReportRequest) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Attributes) > 0 { @@ -1156,6 +1582,9 @@ func (m *ReportRequest) Size() (n int) { } func (m *ReportResponse) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l return n @@ -1182,7 +1611,7 @@ func (this *CheckRequest) String() string { for k, _ := range this.Quotas { keysForQuotas = append(keysForQuotas, k) } - sortkeys.Strings(keysForQuotas) + github_com_gogo_protobuf_sortkeys.Strings(keysForQuotas) mapStringForQuotas := "map[string]CheckRequest_QuotaParams{" for _, k := range keysForQuotas { mapStringForQuotas += fmt.Sprintf("%v: %v,", k, this.Quotas[k]) @@ -1216,7 +1645,7 @@ func (this *CheckResponse) String() string { for k, _ := range this.Quotas { keysForQuotas = append(keysForQuotas, k) } - sortkeys.Strings(keysForQuotas) + github_com_gogo_protobuf_sortkeys.Strings(keysForQuotas) mapStringForQuotas := "map[string]CheckResponse_QuotaResult{" for _, k := range keysForQuotas { mapStringForQuotas += fmt.Sprintf("%v: %v,", k, this.Quotas[k]) @@ -1234,8 +1663,8 @@ func (this *CheckResponse_PreconditionResult) String() string { return "nil" } s := strings.Join([]string{`&CheckResponse_PreconditionResult{`, - `Status:` + strings.Replace(strings.Replace(this.Status.String(), "Status", "google_rpc.Status", 1), `&`, ``, 1) + `,`, - `ValidDuration:` + strings.Replace(strings.Replace(this.ValidDuration.String(), "Duration", "google_protobuf1.Duration", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "Status", "rpc.Status", 1), `&`, ``, 1) + `,`, + `ValidDuration:` + strings.Replace(strings.Replace(this.ValidDuration.String(), "Duration", "types.Duration", 1), `&`, ``, 1) + `,`, `ValidUseCount:` + fmt.Sprintf("%v", this.ValidUseCount) + `,`, `ReferencedAttributes:` + strings.Replace(fmt.Sprintf("%v", this.ReferencedAttributes), "ReferencedAttributes", "ReferencedAttributes", 1) + `,`, `RouteDirective:` + strings.Replace(fmt.Sprintf("%v", this.RouteDirective), "RouteDirective", "RouteDirective", 1) + `,`, @@ -1248,7 +1677,7 @@ func (this *CheckResponse_QuotaResult) String() string { return "nil" } s := strings.Join([]string{`&CheckResponse_QuotaResult{`, - `ValidDuration:` + strings.Replace(strings.Replace(this.ValidDuration.String(), "Duration", "google_protobuf1.Duration", 1), `&`, ``, 1) + `,`, + `ValidDuration:` + strings.Replace(strings.Replace(this.ValidDuration.String(), "Duration", "types.Duration", 1), `&`, ``, 1) + `,`, `GrantedAmount:` + fmt.Sprintf("%v", this.GrantedAmount) + `,`, `ReferencedAttributes:` + strings.Replace(strings.Replace(this.ReferencedAttributes.String(), "ReferencedAttributes", "ReferencedAttributes", 1), `&`, ``, 1) + `,`, `}`, @@ -1349,7 +1778,7 @@ func (m *CheckRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1377,7 +1806,7 @@ func (m *CheckRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1386,6 +1815,9 @@ func (m *CheckRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1407,7 +1839,7 @@ func (m *CheckRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.GlobalWordCount |= (uint32(b) & 0x7F) << shift + m.GlobalWordCount |= uint32(b&0x7F) << shift if b < 0x80 { break } @@ -1426,7 +1858,7 @@ func (m *CheckRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1436,6 +1868,9 @@ func (m *CheckRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1455,7 +1890,7 @@ func (m *CheckRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1464,6 +1899,9 @@ func (m *CheckRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1484,7 +1922,7 @@ func (m *CheckRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1501,7 +1939,7 @@ func (m *CheckRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1511,6 +1949,9 @@ func (m *CheckRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthMixer + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -1527,7 +1968,7 @@ func (m *CheckRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapmsglen |= (int(b) & 0x7F) << shift + mapmsglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1536,7 +1977,7 @@ func (m *CheckRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postmsgIndex := iNdEx + mapmsglen - if mapmsglen < 0 { + if postmsgIndex < 0 { return ErrInvalidLengthMixer } if postmsgIndex > l { @@ -1573,6 +2014,9 @@ func (m *CheckRequest) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthMixer } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthMixer + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1600,7 +2044,7 @@ func (m *CheckRequest_QuotaParams) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1628,7 +2072,7 @@ func (m *CheckRequest_QuotaParams) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Amount |= (int64(b) & 0x7F) << shift + m.Amount |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -1647,7 +2091,7 @@ func (m *CheckRequest_QuotaParams) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1662,6 +2106,9 @@ func (m *CheckRequest_QuotaParams) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthMixer } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthMixer + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1689,7 +2136,7 @@ func (m *CheckResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1717,7 +2164,7 @@ func (m *CheckResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1726,6 +2173,9 @@ func (m *CheckResponse) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1747,7 +2197,7 @@ func (m *CheckResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1756,6 +2206,9 @@ func (m *CheckResponse) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1776,7 +2229,7 @@ func (m *CheckResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1793,7 +2246,7 @@ func (m *CheckResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1803,6 +2256,9 @@ func (m *CheckResponse) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthMixer + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -1819,7 +2275,7 @@ func (m *CheckResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapmsglen |= (int(b) & 0x7F) << shift + mapmsglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1828,7 +2284,7 @@ func (m *CheckResponse) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postmsgIndex := iNdEx + mapmsglen - if mapmsglen < 0 { + if postmsgIndex < 0 { return ErrInvalidLengthMixer } if postmsgIndex > l { @@ -1865,6 +2321,9 @@ func (m *CheckResponse) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthMixer } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthMixer + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1892,7 +2351,7 @@ func (m *CheckResponse_PreconditionResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1920,7 +2379,7 @@ func (m *CheckResponse_PreconditionResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1929,6 +2388,9 @@ func (m *CheckResponse_PreconditionResult) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1950,7 +2412,7 @@ func (m *CheckResponse_PreconditionResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1959,10 +2421,13 @@ func (m *CheckResponse_PreconditionResult) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } - if err := types.StdDurationUnmarshal(&m.ValidDuration, dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_gogo_protobuf_types.StdDurationUnmarshal(&m.ValidDuration, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -1980,7 +2445,7 @@ func (m *CheckResponse_PreconditionResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ValidUseCount |= (int32(b) & 0x7F) << shift + m.ValidUseCount |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -1999,7 +2464,7 @@ func (m *CheckResponse_PreconditionResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2008,6 +2473,9 @@ func (m *CheckResponse_PreconditionResult) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2032,7 +2500,7 @@ func (m *CheckResponse_PreconditionResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2041,6 +2509,9 @@ func (m *CheckResponse_PreconditionResult) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2060,6 +2531,9 @@ func (m *CheckResponse_PreconditionResult) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthMixer } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthMixer + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2087,7 +2561,7 @@ func (m *CheckResponse_QuotaResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2115,7 +2589,7 @@ func (m *CheckResponse_QuotaResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2124,10 +2598,13 @@ func (m *CheckResponse_QuotaResult) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } - if err := types.StdDurationUnmarshal(&m.ValidDuration, dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_gogo_protobuf_types.StdDurationUnmarshal(&m.ValidDuration, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -2145,7 +2622,7 @@ func (m *CheckResponse_QuotaResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.GrantedAmount |= (int64(b) & 0x7F) << shift + m.GrantedAmount |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -2164,7 +2641,7 @@ func (m *CheckResponse_QuotaResult) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2173,6 +2650,9 @@ func (m *CheckResponse_QuotaResult) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2189,6 +2669,9 @@ func (m *CheckResponse_QuotaResult) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthMixer } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthMixer + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2216,7 +2699,7 @@ func (m *ReferencedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2244,7 +2727,7 @@ func (m *ReferencedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2254,6 +2737,9 @@ func (m *ReferencedAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2273,7 +2759,7 @@ func (m *ReferencedAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2282,6 +2768,9 @@ func (m *ReferencedAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2299,6 +2788,9 @@ func (m *ReferencedAttributes) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthMixer } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthMixer + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2326,7 +2818,7 @@ func (m *ReferencedAttributes_AttributeMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2354,7 +2846,7 @@ func (m *ReferencedAttributes_AttributeMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int32(b) & 0x7F) << shift + v |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -2375,7 +2867,7 @@ func (m *ReferencedAttributes_AttributeMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Condition |= (ReferencedAttributes_Condition(b) & 0x7F) << shift + m.Condition |= ReferencedAttributes_Condition(b&0x7F) << shift if b < 0x80 { break } @@ -2394,7 +2886,7 @@ func (m *ReferencedAttributes_AttributeMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2404,6 +2896,9 @@ func (m *ReferencedAttributes_AttributeMatch) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2423,7 +2918,7 @@ func (m *ReferencedAttributes_AttributeMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int32(b) & 0x7F) << shift + v |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -2439,6 +2934,9 @@ func (m *ReferencedAttributes_AttributeMatch) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthMixer } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthMixer + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2466,7 +2964,7 @@ func (m *HeaderOperation) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2494,7 +2992,7 @@ func (m *HeaderOperation) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2504,6 +3002,9 @@ func (m *HeaderOperation) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2523,7 +3024,7 @@ func (m *HeaderOperation) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2533,6 +3034,9 @@ func (m *HeaderOperation) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2552,7 +3056,7 @@ func (m *HeaderOperation) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Operation |= (HeaderOperation_Operation(b) & 0x7F) << shift + m.Operation |= HeaderOperation_Operation(b&0x7F) << shift if b < 0x80 { break } @@ -2566,6 +3070,9 @@ func (m *HeaderOperation) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthMixer } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthMixer + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2593,7 +3100,7 @@ func (m *RouteDirective) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2621,7 +3128,7 @@ func (m *RouteDirective) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2630,6 +3137,9 @@ func (m *RouteDirective) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2652,7 +3162,7 @@ func (m *RouteDirective) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2661,6 +3171,9 @@ func (m *RouteDirective) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2683,7 +3196,7 @@ func (m *RouteDirective) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.DirectResponseCode |= (uint32(b) & 0x7F) << shift + m.DirectResponseCode |= uint32(b&0x7F) << shift if b < 0x80 { break } @@ -2702,7 +3215,7 @@ func (m *RouteDirective) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2712,6 +3225,9 @@ func (m *RouteDirective) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2726,6 +3242,9 @@ func (m *RouteDirective) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthMixer } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthMixer + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2753,7 +3272,7 @@ func (m *ReportRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2781,7 +3300,7 @@ func (m *ReportRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2790,6 +3309,9 @@ func (m *ReportRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2812,7 +3334,7 @@ func (m *ReportRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2822,6 +3344,9 @@ func (m *ReportRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthMixer } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthMixer + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2841,7 +3366,7 @@ func (m *ReportRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.GlobalWordCount |= (uint32(b) & 0x7F) << shift + m.GlobalWordCount |= uint32(b&0x7F) << shift if b < 0x80 { break } @@ -2860,7 +3385,7 @@ func (m *ReportRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.RepeatedAttributesSemantics |= (ReportRequest_RepeatedAttributesSemantics(b) & 0x7F) << shift + m.RepeatedAttributesSemantics |= ReportRequest_RepeatedAttributesSemantics(b&0x7F) << shift if b < 0x80 { break } @@ -2874,6 +3399,9 @@ func (m *ReportRequest) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthMixer } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthMixer + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2901,7 +3429,7 @@ func (m *ReportResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2924,6 +3452,9 @@ func (m *ReportResponse) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthMixer } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthMixer + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2990,10 +3521,13 @@ func skipMixer(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthMixer } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthMixer + } return iNdEx, nil case 3: for { @@ -3022,6 +3556,9 @@ func skipMixer(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthMixer + } } return iNdEx, nil case 4: @@ -3040,85 +3577,3 @@ var ( ErrInvalidLengthMixer = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowMixer = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("mixer/v1/mixer.proto", fileDescriptorMixer) } - -var fileDescriptorMixer = []byte{ - // 1209 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4d, 0x73, 0xdb, 0x44, - 0x18, 0x96, 0xac, 0xd8, 0xad, 0x5f, 0xd7, 0x8e, 0xba, 0xe3, 0x52, 0xc7, 0xa5, 0x4a, 0xc6, 0x7c, - 0x4c, 0xca, 0x41, 0x4e, 0xd3, 0x0b, 0x70, 0x80, 0x71, 0x6c, 0x25, 0xb8, 0x6d, 0x9c, 0xa0, 0xa4, - 0xb4, 0xf4, 0xa2, 0x51, 0xa4, 0xb5, 0xab, 0xa9, 0xed, 0x55, 0x57, 0x52, 0x68, 0x0e, 0xcc, 0x74, - 0x86, 0x3f, 0xc0, 0x91, 0xe1, 0xc6, 0x85, 0xe1, 0x17, 0x70, 0xe2, 0x07, 0xf4, 0xd8, 0x23, 0x27, - 0x20, 0x06, 0x66, 0x38, 0xf6, 0xd8, 0x23, 0xa3, 0xdd, 0x95, 0x6c, 0xc7, 0x4e, 0x1a, 0x3e, 0x6e, - 0xbb, 0xfb, 0xbe, 0xef, 0xf3, 0x7e, 0xe8, 0x79, 0x56, 0x0b, 0xe5, 0x81, 0xf7, 0x14, 0xd3, 0xfa, - 0xe1, 0xcd, 0x3a, 0x5b, 0xe8, 0x3e, 0x25, 0x21, 0x41, 0x25, 0x2f, 0x08, 0x3d, 0xa2, 0xf3, 0xa3, - 0xc3, 0x9b, 0xd5, 0x72, 0x8f, 0xf4, 0x08, 0x33, 0xd5, 0xe3, 0x15, 0xf7, 0xaa, 0x6a, 0x3d, 0x42, - 0x7a, 0x7d, 0x5c, 0x67, 0xbb, 0x83, 0xa8, 0x5b, 0x77, 0x23, 0x6a, 0x87, 0x1e, 0x19, 0x0a, 0xfb, - 0x55, 0x61, 0xa7, 0xbe, 0x53, 0x0f, 0x42, 0x3b, 0x8c, 0x02, 0x61, 0x58, 0x4a, 0x93, 0xda, 0x61, - 0x48, 0xbd, 0x83, 0x28, 0xc4, 0xc2, 0x54, 0xfb, 0x5e, 0x81, 0x4b, 0xcd, 0x47, 0xd8, 0x79, 0x6c, - 0xe2, 0x27, 0x11, 0x0e, 0x42, 0x74, 0x1b, 0x60, 0xec, 0x54, 0x91, 0x57, 0xe4, 0xd5, 0xc2, 0xfa, - 0xdb, 0xfa, 0x74, 0x7d, 0x7a, 0x93, 0x0c, 0x7c, 0x8a, 0x83, 0x00, 0xbb, 0x8d, 0xd4, 0x77, 0x63, - 0xe1, 0xf9, 0x2f, 0xcb, 0x92, 0x39, 0x11, 0x8d, 0xde, 0x83, 0xcb, 0xbd, 0x3e, 0x39, 0xb0, 0xfb, - 0xd6, 0x17, 0x84, 0xba, 0x96, 0x43, 0xa2, 0x61, 0x58, 0xc9, 0xac, 0xc8, 0xab, 0x45, 0x73, 0x91, - 0x1b, 0xee, 0x13, 0xea, 0x36, 0xe3, 0x63, 0x74, 0x03, 0x54, 0x17, 0xbb, 0x91, 0xdf, 0xf7, 0x1c, - 0xd6, 0x93, 0xe5, 0xb9, 0x15, 0x65, 0x45, 0x5e, 0xcd, 0x9b, 0x8b, 0x53, 0xe7, 0x6d, 0x17, 0x6d, - 0x42, 0xee, 0x49, 0x44, 0x42, 0x3b, 0xa8, 0x2c, 0xac, 0x28, 0xab, 0x85, 0xf5, 0xd5, 0x99, 0xf2, - 0x26, 0x1a, 0xd2, 0x3f, 0x65, 0xae, 0xc6, 0x30, 0xa4, 0x47, 0xa2, 0x44, 0x11, 0x5d, 0xdd, 0x84, - 0x02, 0x33, 0xee, 0xda, 0xd4, 0x1e, 0x04, 0xe8, 0x0d, 0xc8, 0xd9, 0x03, 0x56, 0x62, 0xdc, 0xb5, - 0x62, 0x8a, 0x1d, 0x5a, 0x86, 0xc2, 0x01, 0x0e, 0x42, 0x0b, 0x77, 0xbb, 0x84, 0xf2, 0xfa, 0x2f, - 0x9a, 0x10, 0x1f, 0x19, 0xec, 0xa4, 0xea, 0x08, 0x1c, 0x9e, 0x04, 0xa9, 0xa0, 0x3c, 0xc6, 0x47, - 0x0c, 0x24, 0x6f, 0xc6, 0x4b, 0xf4, 0x11, 0x64, 0x0f, 0xed, 0x7e, 0x84, 0x59, 0xec, 0xb9, 0xea, - 0xe5, 0x25, 0x99, 0x3c, 0xec, 0xc3, 0xcc, 0xfb, 0x72, 0xed, 0xcf, 0x1c, 0x14, 0x85, 0x5f, 0xe0, - 0x93, 0x61, 0x80, 0xd1, 0x43, 0xb8, 0xe4, 0x53, 0xec, 0x90, 0xa1, 0xeb, 0xc5, 0x83, 0x11, 0xe0, - 0x6b, 0xa7, 0x80, 0xf3, 0x20, 0x7d, 0x77, 0x22, 0xc2, 0xc4, 0x41, 0xd4, 0x0f, 0xc5, 0x50, 0xa6, - 0xb0, 0xd0, 0x56, 0x3a, 0x62, 0x85, 0x8d, 0xf8, 0xc6, 0xd9, 0xa8, 0xa7, 0xcf, 0xf8, 0x8f, 0x0c, - 0xa0, 0xd9, 0x9c, 0x68, 0x0d, 0x72, 0x9c, 0xa1, 0x82, 0x61, 0x48, 0xe7, 0xdc, 0xd5, 0xa9, 0xef, - 0xe8, 0x7b, 0xcc, 0x92, 0x00, 0x71, 0x3f, 0x74, 0x1b, 0x4a, 0x87, 0x76, 0xdf, 0x73, 0xad, 0x84, - 0xf4, 0xa2, 0xdf, 0xa5, 0x24, 0x32, 0x51, 0x85, 0xde, 0x12, 0x0e, 0x1b, 0x17, 0x63, 0x80, 0x6f, - 0x7e, 0x5d, 0x96, 0xcd, 0x22, 0x0b, 0x4d, 0x0c, 0xe8, 0x5d, 0x58, 0xe4, 0x58, 0x51, 0x80, 0x05, - 0x2b, 0x63, 0xaa, 0x65, 0x85, 0xdf, 0xbd, 0x00, 0x73, 0x4e, 0x7e, 0x0e, 0x57, 0x28, 0xee, 0x62, - 0x8a, 0x87, 0x0e, 0x76, 0xad, 0x09, 0x59, 0x64, 0xe7, 0xcb, 0xc2, 0x4c, 0x9d, 0xc7, 0xb2, 0x30, - 0xcb, 0x74, 0xce, 0x29, 0xda, 0x82, 0x45, 0x4a, 0xa2, 0x10, 0x5b, 0xae, 0x47, 0xb1, 0x13, 0x7a, - 0x87, 0xb8, 0x92, 0x63, 0xa0, 0xda, 0x0c, 0x68, 0xec, 0xd6, 0x4a, 0xbc, 0xcc, 0x12, 0x9d, 0xda, - 0xdf, 0x5e, 0xb8, 0xb8, 0xa0, 0x66, 0xab, 0xc7, 0xb2, 0xe0, 0xa0, 0x98, 0xef, 0xec, 0xb4, 0xe4, - 0x7f, 0x3d, 0xad, 0x77, 0xa0, 0xd4, 0xa3, 0xf6, 0x30, 0x8c, 0x47, 0x30, 0x48, 0x25, 0xac, 0x98, - 0x45, 0x71, 0xda, 0xe0, 0x32, 0xb1, 0xfe, 0x87, 0x61, 0x89, 0x6f, 0x3e, 0x77, 0x64, 0x55, 0xf7, - 0x75, 0x32, 0xfb, 0x78, 0x5a, 0x66, 0xe7, 0xe1, 0x2c, 0x1f, 0xd7, 0xa4, 0xce, 0xbe, 0x52, 0xa0, - 0x3c, 0xaf, 0x34, 0x54, 0x86, 0x6c, 0x7c, 0x8b, 0xc5, 0x8c, 0x55, 0x56, 0xf3, 0x26, 0xdf, 0xa0, - 0x2e, 0x5c, 0x4e, 0x5b, 0xb5, 0x06, 0x76, 0xe8, 0x3c, 0xc2, 0x41, 0x25, 0xc3, 0x34, 0x73, 0xeb, - 0x3c, 0x1d, 0xeb, 0xe9, 0x72, 0x3b, 0x0e, 0x16, 0x03, 0x50, 0xed, 0xa9, 0x53, 0x1c, 0x54, 0xbf, - 0x93, 0xa1, 0x34, 0xed, 0x8a, 0x10, 0x2c, 0x0c, 0xed, 0x01, 0x66, 0x13, 0xb8, 0x6c, 0xb2, 0x35, - 0xba, 0x0b, 0xf9, 0xe9, 0x0b, 0xa1, 0xb4, 0xae, 0x9f, 0xab, 0x8c, 0x66, 0x2a, 0xd0, 0x31, 0x40, - 0xdc, 0x32, 0xc5, 0x3d, 0xfc, 0x54, 0x5c, 0xc4, 0x7c, 0x83, 0xae, 0xc2, 0x85, 0x81, 0xed, 0x5b, - 0xf1, 0xf0, 0x17, 0x58, 0xea, 0xdc, 0xc0, 0xf6, 0xef, 0xe0, 0xa3, 0x5a, 0x1b, 0xf2, 0x29, 0x0c, - 0x5a, 0x82, 0x2b, 0xcd, 0x9d, 0x4e, 0xab, 0xbd, 0xdf, 0xde, 0xe9, 0x58, 0xf7, 0x3a, 0x7b, 0xbb, - 0x46, 0xb3, 0xbd, 0xd9, 0x36, 0x5a, 0xaa, 0x84, 0x0a, 0x70, 0xa1, 0xb1, 0xb1, 0x67, 0x74, 0x9a, - 0x86, 0x2a, 0xa3, 0x3c, 0x64, 0x8d, 0x07, 0x8d, 0xe6, 0xbe, 0x9a, 0x89, 0x97, 0xa6, 0xb1, 0x65, - 0x3c, 0x50, 0x95, 0xda, 0x8f, 0x32, 0x2c, 0x7e, 0x82, 0x6d, 0x17, 0xd3, 0x1d, 0x1f, 0x0b, 0x1e, - 0x4e, 0xf6, 0x9b, 0x17, 0xfd, 0x96, 0x27, 0x3f, 0x79, 0x5e, 0x7c, 0x47, 0xb4, 0x05, 0x79, 0x92, - 0x84, 0xb1, 0xda, 0x4b, 0xb3, 0x64, 0x38, 0x81, 0xae, 0xa7, 0x2b, 0x73, 0x1c, 0x5b, 0x5b, 0x83, - 0xfc, 0x38, 0x7f, 0x01, 0x2e, 0x98, 0xc6, 0xee, 0xdd, 0x46, 0xd3, 0x50, 0x25, 0x04, 0x90, 0x33, - 0x8d, 0xed, 0x9d, 0xcf, 0xe2, 0x16, 0x00, 0x72, 0x8d, 0xdd, 0x5d, 0xa3, 0xd3, 0x52, 0x33, 0xb5, - 0x9f, 0x32, 0x50, 0x9a, 0x56, 0x2c, 0xb2, 0x61, 0x89, 0xf2, 0xbb, 0xdd, 0x7a, 0xc4, 0x92, 0x5a, - 0x69, 0x02, 0x4e, 0xa6, 0xc2, 0xfa, 0xf2, 0x6b, 0xaa, 0x13, 0xb4, 0xb8, 0x2a, 0x70, 0x4e, 0x58, - 0x03, 0xe4, 0x40, 0x95, 0x0a, 0x5e, 0xcf, 0xc9, 0x91, 0xf9, 0x27, 0x39, 0x2a, 0x09, 0xd0, 0x4c, - 0x92, 0x35, 0x28, 0xf3, 0xcb, 0xca, 0x4a, 0x73, 0x39, 0xc4, 0xc5, 0x6c, 0xc0, 0x45, 0x13, 0x71, - 0x5b, 0x22, 0xaf, 0x26, 0x71, 0xf1, 0xbc, 0x88, 0x03, 0xe2, 0x72, 0xda, 0xe4, 0x4f, 0x46, 0x6c, - 0x10, 0xf7, 0xa8, 0xf6, 0x2a, 0x03, 0x45, 0x13, 0xfb, 0x84, 0x86, 0xa7, 0xbd, 0x47, 0x94, 0xff, - 0xf0, 0x1e, 0x79, 0x0b, 0x8a, 0x2e, 0xee, 0xda, 0x51, 0x3f, 0xb4, 0xb8, 0x94, 0x33, 0x4c, 0xca, - 0x97, 0xc4, 0xe1, 0x7d, 0xa6, 0xe8, 0xb9, 0x8f, 0x16, 0x65, 0xfe, 0xa3, 0xe5, 0x4b, 0xb8, 0x4e, - 0xb1, 0x8f, 0xed, 0x70, 0xea, 0xc6, 0xb3, 0x02, 0x3c, 0xb0, 0x87, 0xa1, 0xe7, 0x04, 0xac, 0xd3, - 0xd2, 0xfa, 0x07, 0xb3, 0x12, 0x9c, 0x68, 0x31, 0xde, 0x31, 0x88, 0x71, 0xed, 0x7b, 0x09, 0x80, - 0x79, 0x8d, 0x9e, 0x6e, 0xac, 0xdd, 0x81, 0x6b, 0x67, 0xc4, 0x22, 0x04, 0xa5, 0x96, 0x71, 0x77, - 0xbf, 0x61, 0x19, 0x9d, 0xe6, 0x4e, 0xab, 0xdd, 0xd9, 0x52, 0x25, 0x54, 0x81, 0x72, 0xbb, 0xd3, - 0x32, 0x62, 0xb6, 0x1a, 0x9d, 0xfd, 0xb1, 0x45, 0xae, 0xa9, 0x50, 0x4a, 0xca, 0xe2, 0x1f, 0x64, - 0xfd, 0x5b, 0x19, 0xb2, 0xdb, 0x71, 0xc9, 0x68, 0x13, 0xb2, 0xec, 0xf2, 0x44, 0x6f, 0x9e, 0xf5, - 0x74, 0xa9, 0x5e, 0x3f, 0xf3, 0xc6, 0xad, 0x49, 0xa8, 0x0d, 0x39, 0x9e, 0x03, 0x5d, 0x3f, 0x73, - 0x24, 0x55, 0xed, 0x34, 0x73, 0x02, 0xb5, 0xb1, 0xfd, 0xfc, 0x58, 0x93, 0x5e, 0x1c, 0x6b, 0xd2, - 0xcf, 0xc7, 0x9a, 0xf4, 0xf2, 0x58, 0x93, 0x9e, 0x8d, 0x34, 0xf9, 0x87, 0x91, 0x26, 0x3d, 0x1f, - 0x69, 0xf2, 0x8b, 0x91, 0x26, 0xff, 0x36, 0xd2, 0xe4, 0xbf, 0x46, 0x9a, 0xf4, 0x72, 0xa4, 0xc9, - 0x5f, 0xff, 0xae, 0x49, 0x0f, 0xaf, 0x70, 0x48, 0x8f, 0xd4, 0x6d, 0xdf, 0xab, 0x27, 0x4f, 0xe2, - 0x67, 0xb2, 0xfc, 0x4a, 0x96, 0x0f, 0x72, 0xec, 0x87, 0x78, 0xeb, 0xef, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x7a, 0xa2, 0x01, 0x40, 0xa0, 0x0b, 0x00, 0x00, -} diff --git a/networking/v1alpha3/destination_rule.pb.go b/networking/v1alpha3/destination_rule.pb.go index 9b263002db7..b1de2f77b0d 100644 --- a/networking/v1alpha3/destination_rule.pb.go +++ b/networking/v1alpha3/destination_rule.pb.go @@ -1,67 +1,89 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: networking/v1alpha3/destination_rule.proto -/* - Package v1alpha3 is a generated protocol buffer package. - - It is generated from these files: - networking/v1alpha3/destination_rule.proto - networking/v1alpha3/envoy_filter.proto - networking/v1alpha3/gateway.proto - networking/v1alpha3/service_entry.proto - networking/v1alpha3/sidecar.proto - networking/v1alpha3/virtual_service.proto - - It has these top-level messages: - DestinationRule - TrafficPolicy - Subset - LoadBalancerSettings - ConnectionPoolSettings - OutlierDetection - TLSSettings - EnvoyFilter - Gateway - Server - Port - ServiceEntry - Sidecar - IstioIngressListener - IstioEgressListener - WorkloadSelector - VirtualService - Destination - HTTPRoute - Headers - TLSRoute - TCPRoute - HTTPMatchRequest - HTTPRouteDestination - RouteDestination - L4MatchAttributes - TLSMatchAttributes - HTTPRedirect - HTTPRewrite - StringMatch - HTTPRetry - CorsPolicy - HTTPFaultInjection - PortSelector - Percent -*/ -package v1alpha3 - -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf "github.com/gogo/protobuf/types" -import _ "github.com/gogo/protobuf/gogoproto" - -import time "time" +// `DestinationRule` defines policies that apply to traffic intended for a +// service after routing has occurred. These rules specify configuration +// for load balancing, connection pool size from the sidecar, and outlier +// detection settings to detect and evict unhealthy hosts from the load +// balancing pool. For example, a simple load balancing policy for the +// ratings service would look as follows: +// +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: DestinationRule +// metadata: +// name: bookinfo-ratings +// spec: +// host: ratings.prod.svc.cluster.local +// trafficPolicy: +// loadBalancer: +// simple: LEAST_CONN +// ``` +// +// Version specific policies can be specified by defining a named +// `subset` and overriding the settings specified at the service level. The +// following rule uses a round robin load balancing policy for all traffic +// going to a subset named testversion that is composed of endpoints (e.g., +// pods) with labels (version:v3). +// +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: DestinationRule +// metadata: +// name: bookinfo-ratings +// spec: +// host: ratings.prod.svc.cluster.local +// trafficPolicy: +// loadBalancer: +// simple: LEAST_CONN +// subsets: +// - name: testversion +// labels: +// version: v3 +// trafficPolicy: +// loadBalancer: +// simple: ROUND_ROBIN +// ``` +// +// **Note:** Policies specified for subsets will not take effect until +// a route rule explicitly sends traffic to this subset. +// +// Traffic policies can be customized to specific ports as well. The +// following rule uses the least connection load balancing policy for all +// traffic to port 80, while uses a round robin load balancing setting for +// traffic to the port 9080. +// +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: DestinationRule +// metadata: +// name: bookinfo-ratings-port +// spec: +// host: ratings.prod.svc.cluster.local +// trafficPolicy: # Apply to all ports +// portLevelSettings: +// - port: +// number: 80 +// loadBalancer: +// simple: LEAST_CONN +// - port: +// number: 9080 +// loadBalancer: +// simple: ROUND_ROBIN +// ``` -import types "github.com/gogo/protobuf/types" +package v1alpha3 -import io "io" +import ( + fmt "fmt" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" + github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" + types "github.com/gogo/protobuf/types" + io "io" + math "math" + time "time" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -103,6 +125,7 @@ var LoadBalancerSettings_SimpleLB_name = map[int32]string{ 2: "RANDOM", 3: "PASSTHROUGH", } + var LoadBalancerSettings_SimpleLB_value = map[string]int32{ "ROUND_ROBIN": 0, "LEAST_CONN": 1, @@ -113,8 +136,9 @@ var LoadBalancerSettings_SimpleLB_value = map[string]int32{ func (x LoadBalancerSettings_SimpleLB) String() string { return proto.EnumName(LoadBalancerSettings_SimpleLB_name, int32(x)) } + func (LoadBalancerSettings_SimpleLB) EnumDescriptor() ([]byte, []int) { - return fileDescriptorDestinationRule, []int{3, 0} + return fileDescriptor_12899beb695152c8, []int{3, 0} } // TLS connection mode @@ -142,6 +166,7 @@ var TLSSettings_TLSmode_name = map[int32]string{ 2: "MUTUAL", 3: "ISTIO_MUTUAL", } + var TLSSettings_TLSmode_value = map[string]int32{ "DISABLE": 0, "SIMPLE": 1, @@ -152,85 +177,16 @@ var TLSSettings_TLSmode_value = map[string]int32{ func (x TLSSettings_TLSmode) String() string { return proto.EnumName(TLSSettings_TLSmode_name, int32(x)) } + func (TLSSettings_TLSmode) EnumDescriptor() ([]byte, []int) { - return fileDescriptorDestinationRule, []int{6, 0} + return fileDescriptor_12899beb695152c8, []int{6, 0} } -// `DestinationRule` defines policies that apply to traffic intended for a -// service after routing has occurred. These rules specify configuration -// for load balancing, connection pool size from the sidecar, and outlier -// detection settings to detect and evict unhealthy hosts from the load -// balancing pool. For example, a simple load balancing policy for the -// ratings service would look as follows: -// -// ```yaml -// apiVersion: networking.istio.io/v1alpha3 -// kind: DestinationRule -// metadata: -// name: bookinfo-ratings -// spec: -// host: ratings.prod.svc.cluster.local -// trafficPolicy: -// loadBalancer: -// simple: LEAST_CONN -// ``` -// -// Version specific policies can be specified by defining a named -// `subset` and overriding the settings specified at the service level. The -// following rule uses a round robin load balancing policy for all traffic -// going to a subset named testversion that is composed of endpoints (e.g., -// pods) with labels (version:v3). -// -// ```yaml -// apiVersion: networking.istio.io/v1alpha3 -// kind: DestinationRule -// metadata: -// name: bookinfo-ratings -// spec: -// host: ratings.prod.svc.cluster.local -// trafficPolicy: -// loadBalancer: -// simple: LEAST_CONN -// subsets: -// - name: testversion -// labels: -// version: v3 -// trafficPolicy: -// loadBalancer: -// simple: ROUND_ROBIN -// ``` -// -// **Note:** Policies specified for subsets will not take effect until -// a route rule explicitly sends traffic to this subset. -// -// Traffic policies can be customized to specific ports as well. The -// following rule uses the least connection load balancing policy for all -// traffic to port 80, while uses a round robin load balancing setting for -// traffic to the port 9080. -// -// ```yaml -// apiVersion: networking.istio.io/v1alpha3 -// kind: DestinationRule -// metadata: -// name: bookinfo-ratings-port -// spec: -// host: ratings.prod.svc.cluster.local -// trafficPolicy: # Apply to all ports -// portLevelSettings: -// - port: -// number: 80 -// loadBalancer: -// simple: LEAST_CONN -// - port: -// number: 9080 -// loadBalancer: -// simple: ROUND_ROBIN -// ``` type DestinationRule struct { // REQUIRED. The name of a service from the service registry. Service // names are looked up from the platform's service registry (e.g., // Kubernetes services, Consul services, etc.) and from the hosts - // declared by [ServiceEntries](#ServiceEntry). Rules defined for + // declared by [ServiceEntries](/docs/reference/config/networking/v1alpha3/service-entry/#ServiceEntry). Rules defined for // services that do not exist in the service registry will be ignored. // // *Note for Kubernetes users*: When short names are used (e.g. "reviews" @@ -246,20 +202,65 @@ type DestinationRule struct { Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` // Traffic policies to apply (load balancing policy, connection pool // sizes, outlier detection). - TrafficPolicy *TrafficPolicy `protobuf:"bytes,2,opt,name=traffic_policy,json=trafficPolicy" json:"traffic_policy,omitempty"` + TrafficPolicy *TrafficPolicy `protobuf:"bytes,2,opt,name=traffic_policy,json=trafficPolicy,proto3" json:"traffic_policy,omitempty"` // One or more named sets that represent individual versions of a // service. Traffic policies can be overridden at subset level. - Subsets []*Subset `protobuf:"bytes,3,rep,name=subsets" json:"subsets,omitempty"` - // The resolution of a DestinationRule to apply to a service occurs in the - // context of a hierarchy of namespaces. This rule controls whether those - // namespaces are allowed to select this rule. - ExportTo []string `protobuf:"bytes,4,rep,name=export_to,json=exportTo" json:"export_to,omitempty"` + Subsets []*Subset `protobuf:"bytes,3,rep,name=subsets,proto3" json:"subsets,omitempty"` + // A list of namespaces to which this destination rule is exported. + // The resolution of a destination rule to apply to a service occurs in the + // context of a hierarchy of namespaces. Exporting a destination rule allows + // it to be included in the resolution hierarchy for services in + // other namespaces. This feature provides a mechanism for service owners + // and mesh administrators to control the visibility of destination rules + // across namespace boundaries. + // + // If no namespaces are specified then the destination rule is exported to all + // namespaces by default. + // + // The value "." is reserved and defines an export to the same namespace that + // the destination rule is declared in. Similarly, the value "*" is reserved and + // defines an export to all namespaces. + // + // NOTE: in the current release, the `exportTo` value is restricted to + // "." or "*" (i.e., the current namespace or all namespaces). + ExportTo []string `protobuf:"bytes,4,rep,name=export_to,json=exportTo,proto3" json:"export_to,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DestinationRule) Reset() { *m = DestinationRule{} } +func (m *DestinationRule) String() string { return proto.CompactTextString(m) } +func (*DestinationRule) ProtoMessage() {} +func (*DestinationRule) Descriptor() ([]byte, []int) { + return fileDescriptor_12899beb695152c8, []int{0} +} +func (m *DestinationRule) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DestinationRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DestinationRule.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *DestinationRule) XXX_Merge(src proto.Message) { + xxx_messageInfo_DestinationRule.Merge(m, src) +} +func (m *DestinationRule) XXX_Size() int { + return m.Size() +} +func (m *DestinationRule) XXX_DiscardUnknown() { + xxx_messageInfo_DestinationRule.DiscardUnknown(m) } -func (m *DestinationRule) Reset() { *m = DestinationRule{} } -func (m *DestinationRule) String() string { return proto.CompactTextString(m) } -func (*DestinationRule) ProtoMessage() {} -func (*DestinationRule) Descriptor() ([]byte, []int) { return fileDescriptorDestinationRule, []int{0} } +var xxx_messageInfo_DestinationRule proto.InternalMessageInfo func (m *DestinationRule) GetHost() string { if m != nil { @@ -293,25 +294,56 @@ func (m *DestinationRule) GetExportTo() []string { // destination ports. See DestinationRule for examples. type TrafficPolicy struct { // Settings controlling the load balancer algorithms. - LoadBalancer *LoadBalancerSettings `protobuf:"bytes,1,opt,name=load_balancer,json=loadBalancer" json:"load_balancer,omitempty"` + LoadBalancer *LoadBalancerSettings `protobuf:"bytes,1,opt,name=load_balancer,json=loadBalancer,proto3" json:"load_balancer,omitempty"` // Settings controlling the volume of connections to an upstream service - ConnectionPool *ConnectionPoolSettings `protobuf:"bytes,2,opt,name=connection_pool,json=connectionPool" json:"connection_pool,omitempty"` + ConnectionPool *ConnectionPoolSettings `protobuf:"bytes,2,opt,name=connection_pool,json=connectionPool,proto3" json:"connection_pool,omitempty"` // Settings controlling eviction of unhealthy hosts from the load balancing pool - OutlierDetection *OutlierDetection `protobuf:"bytes,3,opt,name=outlier_detection,json=outlierDetection" json:"outlier_detection,omitempty"` + OutlierDetection *OutlierDetection `protobuf:"bytes,3,opt,name=outlier_detection,json=outlierDetection,proto3" json:"outlier_detection,omitempty"` // TLS related settings for connections to the upstream service. - Tls *TLSSettings `protobuf:"bytes,4,opt,name=tls" json:"tls,omitempty"` + Tls *TLSSettings `protobuf:"bytes,4,opt,name=tls,proto3" json:"tls,omitempty"` // Traffic policies specific to individual ports. Note that port level // settings will override the destination-level settings. Traffic // settings specified at the destination-level will not be inherited when // overridden by port-level settings, i.e. default values will be applied // to fields omitted in port-level traffic policies. - PortLevelSettings []*TrafficPolicy_PortTrafficPolicy `protobuf:"bytes,5,rep,name=port_level_settings,json=portLevelSettings" json:"port_level_settings,omitempty"` + PortLevelSettings []*TrafficPolicy_PortTrafficPolicy `protobuf:"bytes,5,rep,name=port_level_settings,json=portLevelSettings,proto3" json:"port_level_settings,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *TrafficPolicy) Reset() { *m = TrafficPolicy{} } +func (m *TrafficPolicy) String() string { return proto.CompactTextString(m) } +func (*TrafficPolicy) ProtoMessage() {} +func (*TrafficPolicy) Descriptor() ([]byte, []int) { + return fileDescriptor_12899beb695152c8, []int{1} +} +func (m *TrafficPolicy) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TrafficPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TrafficPolicy.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *TrafficPolicy) XXX_Merge(src proto.Message) { + xxx_messageInfo_TrafficPolicy.Merge(m, src) +} +func (m *TrafficPolicy) XXX_Size() int { + return m.Size() +} +func (m *TrafficPolicy) XXX_DiscardUnknown() { + xxx_messageInfo_TrafficPolicy.DiscardUnknown(m) } -func (m *TrafficPolicy) Reset() { *m = TrafficPolicy{} } -func (m *TrafficPolicy) String() string { return proto.CompactTextString(m) } -func (*TrafficPolicy) ProtoMessage() {} -func (*TrafficPolicy) Descriptor() ([]byte, []int) { return fileDescriptorDestinationRule, []int{1} } +var xxx_messageInfo_TrafficPolicy proto.InternalMessageInfo func (m *TrafficPolicy) GetLoadBalancer() *LoadBalancerSettings { if m != nil { @@ -357,23 +389,52 @@ type TrafficPolicy_PortTrafficPolicy struct { // collide with numbers. If there are multiple ports on a service with // the same protocol the names should be of the form -. - Port *PortSelector `protobuf:"bytes,1,opt,name=port" json:"port,omitempty"` + Port *PortSelector `protobuf:"bytes,1,opt,name=port,proto3" json:"port,omitempty"` // Settings controlling the load balancer algorithms. - LoadBalancer *LoadBalancerSettings `protobuf:"bytes,2,opt,name=load_balancer,json=loadBalancer" json:"load_balancer,omitempty"` + LoadBalancer *LoadBalancerSettings `protobuf:"bytes,2,opt,name=load_balancer,json=loadBalancer,proto3" json:"load_balancer,omitempty"` // Settings controlling the volume of connections to an upstream service - ConnectionPool *ConnectionPoolSettings `protobuf:"bytes,3,opt,name=connection_pool,json=connectionPool" json:"connection_pool,omitempty"` + ConnectionPool *ConnectionPoolSettings `protobuf:"bytes,3,opt,name=connection_pool,json=connectionPool,proto3" json:"connection_pool,omitempty"` // Settings controlling eviction of unhealthy hosts from the load balancing pool - OutlierDetection *OutlierDetection `protobuf:"bytes,4,opt,name=outlier_detection,json=outlierDetection" json:"outlier_detection,omitempty"` + OutlierDetection *OutlierDetection `protobuf:"bytes,4,opt,name=outlier_detection,json=outlierDetection,proto3" json:"outlier_detection,omitempty"` // TLS related settings for connections to the upstream service. - Tls *TLSSettings `protobuf:"bytes,5,opt,name=tls" json:"tls,omitempty"` + Tls *TLSSettings `protobuf:"bytes,5,opt,name=tls,proto3" json:"tls,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *TrafficPolicy_PortTrafficPolicy) Reset() { *m = TrafficPolicy_PortTrafficPolicy{} } func (m *TrafficPolicy_PortTrafficPolicy) String() string { return proto.CompactTextString(m) } func (*TrafficPolicy_PortTrafficPolicy) ProtoMessage() {} func (*TrafficPolicy_PortTrafficPolicy) Descriptor() ([]byte, []int) { - return fileDescriptorDestinationRule, []int{1, 0} + return fileDescriptor_12899beb695152c8, []int{1, 0} +} +func (m *TrafficPolicy_PortTrafficPolicy) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TrafficPolicy_PortTrafficPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TrafficPolicy_PortTrafficPolicy.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *TrafficPolicy_PortTrafficPolicy) XXX_Merge(src proto.Message) { + xxx_messageInfo_TrafficPolicy_PortTrafficPolicy.Merge(m, src) } +func (m *TrafficPolicy_PortTrafficPolicy) XXX_Size() int { + return m.Size() +} +func (m *TrafficPolicy_PortTrafficPolicy) XXX_DiscardUnknown() { + xxx_messageInfo_TrafficPolicy_PortTrafficPolicy.DiscardUnknown(m) +} + +var xxx_messageInfo_TrafficPolicy_PortTrafficPolicy proto.InternalMessageInfo func (m *TrafficPolicy_PortTrafficPolicy) GetPort() *PortSelector { if m != nil { @@ -412,7 +473,7 @@ func (m *TrafficPolicy_PortTrafficPolicy) GetTls() *TLSSettings { // A subset of endpoints of a service. Subsets can be used for scenarios // like A/B testing, or routing to a specific version of a service. Refer -// to [VirtualService](#VirtualService) documentation for examples of using +// to [VirtualService](/docs/reference/config/networking/v1alpha3/virtual-service/#VirtualService) documentation for examples of using // subsets in these scenarios. In addition, traffic policies defined at the // service-level can be overridden at a subset-level. The following rule // uses a round robin load balancing policy for all traffic going to a @@ -452,18 +513,49 @@ type Subset struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Labels apply a filter over the endpoints of a service in the // service registry. See route rules for examples of usage. - Labels map[string]string `protobuf:"bytes,2,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Traffic policies that apply to this subset. Subsets inherit the // traffic policies specified at the DestinationRule level. Settings // specified at the subset level will override the corresponding settings // specified at the DestinationRule level. - TrafficPolicy *TrafficPolicy `protobuf:"bytes,3,opt,name=traffic_policy,json=trafficPolicy" json:"traffic_policy,omitempty"` + TrafficPolicy *TrafficPolicy `protobuf:"bytes,3,opt,name=traffic_policy,json=trafficPolicy,proto3" json:"traffic_policy,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *Subset) Reset() { *m = Subset{} } -func (m *Subset) String() string { return proto.CompactTextString(m) } -func (*Subset) ProtoMessage() {} -func (*Subset) Descriptor() ([]byte, []int) { return fileDescriptorDestinationRule, []int{2} } +func (m *Subset) Reset() { *m = Subset{} } +func (m *Subset) String() string { return proto.CompactTextString(m) } +func (*Subset) ProtoMessage() {} +func (*Subset) Descriptor() ([]byte, []int) { + return fileDescriptor_12899beb695152c8, []int{2} +} +func (m *Subset) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Subset) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Subset.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Subset) XXX_Merge(src proto.Message) { + xxx_messageInfo_Subset.Merge(m, src) +} +func (m *Subset) XXX_Size() int { + return m.Size() +} +func (m *Subset) XXX_DiscardUnknown() { + xxx_messageInfo_Subset.DiscardUnknown(m) +} + +var xxx_messageInfo_Subset proto.InternalMessageInfo func (m *Subset) GetName() string { if m != nil { @@ -531,15 +623,44 @@ type LoadBalancerSettings struct { // Types that are valid to be assigned to LbPolicy: // *LoadBalancerSettings_Simple // *LoadBalancerSettings_ConsistentHash - LbPolicy isLoadBalancerSettings_LbPolicy `protobuf_oneof:"lb_policy"` + LbPolicy isLoadBalancerSettings_LbPolicy `protobuf_oneof:"lb_policy"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *LoadBalancerSettings) Reset() { *m = LoadBalancerSettings{} } func (m *LoadBalancerSettings) String() string { return proto.CompactTextString(m) } func (*LoadBalancerSettings) ProtoMessage() {} func (*LoadBalancerSettings) Descriptor() ([]byte, []int) { - return fileDescriptorDestinationRule, []int{3} + return fileDescriptor_12899beb695152c8, []int{3} +} +func (m *LoadBalancerSettings) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) } +func (m *LoadBalancerSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_LoadBalancerSettings.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *LoadBalancerSettings) XXX_Merge(src proto.Message) { + xxx_messageInfo_LoadBalancerSettings.Merge(m, src) +} +func (m *LoadBalancerSettings) XXX_Size() int { + return m.Size() +} +func (m *LoadBalancerSettings) XXX_DiscardUnknown() { + xxx_messageInfo_LoadBalancerSettings.DiscardUnknown(m) +} + +var xxx_messageInfo_LoadBalancerSettings proto.InternalMessageInfo type isLoadBalancerSettings_LbPolicy interface { isLoadBalancerSettings_LbPolicy() @@ -551,7 +672,7 @@ type LoadBalancerSettings_Simple struct { Simple LoadBalancerSettings_SimpleLB `protobuf:"varint,1,opt,name=simple,proto3,enum=istio.networking.v1alpha3.LoadBalancerSettings_SimpleLB,oneof"` } type LoadBalancerSettings_ConsistentHash struct { - ConsistentHash *LoadBalancerSettings_ConsistentHashLB `protobuf:"bytes,2,opt,name=consistent_hash,json=consistentHash,oneof"` + ConsistentHash *LoadBalancerSettings_ConsistentHashLB `protobuf:"bytes,2,opt,name=consistent_hash,json=consistentHash,proto3,oneof"` } func (*LoadBalancerSettings_Simple) isLoadBalancerSettings_LbPolicy() {} @@ -633,11 +754,11 @@ func _LoadBalancerSettings_OneofSizer(msg proto.Message) (n int) { // lb_policy switch x := m.LbPolicy.(type) { case *LoadBalancerSettings_Simple: - n += proto.SizeVarint(1<<3 | proto.WireVarint) + n += 1 // tag and wire n += proto.SizeVarint(uint64(x.Simple)) case *LoadBalancerSettings_ConsistentHash: s := proto.Size(x.ConsistentHash) - n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case nil: @@ -666,16 +787,45 @@ type LoadBalancerSettings_ConsistentHashLB struct { // load distributions. If the number of hosts in the load balancing // pool is larger than the ring size, each host will be assigned a // single virtual node. - MinimumRingSize uint64 `protobuf:"varint,4,opt,name=minimum_ring_size,json=minimumRingSize,proto3" json:"minimum_ring_size,omitempty"` + MinimumRingSize uint64 `protobuf:"varint,4,opt,name=minimum_ring_size,json=minimumRingSize,proto3" json:"minimum_ring_size,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *LoadBalancerSettings_ConsistentHashLB) Reset() { *m = LoadBalancerSettings_ConsistentHashLB{} } func (m *LoadBalancerSettings_ConsistentHashLB) String() string { return proto.CompactTextString(m) } func (*LoadBalancerSettings_ConsistentHashLB) ProtoMessage() {} func (*LoadBalancerSettings_ConsistentHashLB) Descriptor() ([]byte, []int) { - return fileDescriptorDestinationRule, []int{3, 0} + return fileDescriptor_12899beb695152c8, []int{3, 0} +} +func (m *LoadBalancerSettings_ConsistentHashLB) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *LoadBalancerSettings_ConsistentHashLB) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_LoadBalancerSettings_ConsistentHashLB.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *LoadBalancerSettings_ConsistentHashLB) XXX_Merge(src proto.Message) { + xxx_messageInfo_LoadBalancerSettings_ConsistentHashLB.Merge(m, src) +} +func (m *LoadBalancerSettings_ConsistentHashLB) XXX_Size() int { + return m.Size() +} +func (m *LoadBalancerSettings_ConsistentHashLB) XXX_DiscardUnknown() { + xxx_messageInfo_LoadBalancerSettings_ConsistentHashLB.DiscardUnknown(m) } +var xxx_messageInfo_LoadBalancerSettings_ConsistentHashLB proto.InternalMessageInfo + type isLoadBalancerSettings_ConsistentHashLB_HashKey interface { isLoadBalancerSettings_ConsistentHashLB_HashKey() MarshalTo([]byte) (int, error) @@ -686,7 +836,7 @@ type LoadBalancerSettings_ConsistentHashLB_HttpHeaderName struct { HttpHeaderName string `protobuf:"bytes,1,opt,name=http_header_name,json=httpHeaderName,proto3,oneof"` } type LoadBalancerSettings_ConsistentHashLB_HttpCookie struct { - HttpCookie *LoadBalancerSettings_ConsistentHashLB_HTTPCookie `protobuf:"bytes,2,opt,name=http_cookie,json=httpCookie,oneof"` + HttpCookie *LoadBalancerSettings_ConsistentHashLB_HTTPCookie `protobuf:"bytes,2,opt,name=http_cookie,json=httpCookie,proto3,oneof"` } type LoadBalancerSettings_ConsistentHashLB_UseSourceIp struct { UseSourceIp bool `protobuf:"varint,3,opt,name=use_source_ip,json=useSourceIp,proto3,oneof"` @@ -804,16 +954,16 @@ func _LoadBalancerSettings_ConsistentHashLB_OneofSizer(msg proto.Message) (n int // hash_key switch x := m.HashKey.(type) { case *LoadBalancerSettings_ConsistentHashLB_HttpHeaderName: - n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.HttpHeaderName))) n += len(x.HttpHeaderName) case *LoadBalancerSettings_ConsistentHashLB_HttpCookie: s := proto.Size(x.HttpCookie) - n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *LoadBalancerSettings_ConsistentHashLB_UseSourceIp: - n += proto.SizeVarint(3<<3 | proto.WireVarint) + n += 1 // tag and wire n += 1 case nil: default: @@ -831,7 +981,10 @@ type LoadBalancerSettings_ConsistentHashLB_HTTPCookie struct { // Path to set for the cookie. Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` // REQUIRED. Lifetime of the cookie. - Ttl *time.Duration `protobuf:"bytes,3,opt,name=ttl,stdduration" json:"ttl,omitempty"` + Ttl *time.Duration `protobuf:"bytes,3,opt,name=ttl,proto3,stdduration" json:"ttl,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) Reset() { @@ -842,8 +995,34 @@ func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) String() string { } func (*LoadBalancerSettings_ConsistentHashLB_HTTPCookie) ProtoMessage() {} func (*LoadBalancerSettings_ConsistentHashLB_HTTPCookie) Descriptor() ([]byte, []int) { - return fileDescriptorDestinationRule, []int{3, 0, 0} + return fileDescriptor_12899beb695152c8, []int{3, 0, 0} +} +func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_LoadBalancerSettings_ConsistentHashLB_HTTPCookie.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) XXX_Merge(src proto.Message) { + xxx_messageInfo_LoadBalancerSettings_ConsistentHashLB_HTTPCookie.Merge(m, src) +} +func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) XXX_Size() int { + return m.Size() } +func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) XXX_DiscardUnknown() { + xxx_messageInfo_LoadBalancerSettings_ConsistentHashLB_HTTPCookie.DiscardUnknown(m) +} + +var xxx_messageInfo_LoadBalancerSettings_ConsistentHashLB_HTTPCookie proto.InternalMessageInfo func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) GetName() string { if m != nil { @@ -893,17 +1072,46 @@ func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) GetTtl() *time.Durati // ``` type ConnectionPoolSettings struct { // Settings common to both HTTP and TCP upstream connections. - Tcp *ConnectionPoolSettings_TCPSettings `protobuf:"bytes,1,opt,name=tcp" json:"tcp,omitempty"` + Tcp *ConnectionPoolSettings_TCPSettings `protobuf:"bytes,1,opt,name=tcp,proto3" json:"tcp,omitempty"` // HTTP connection pool settings. - Http *ConnectionPoolSettings_HTTPSettings `protobuf:"bytes,2,opt,name=http" json:"http,omitempty"` + Http *ConnectionPoolSettings_HTTPSettings `protobuf:"bytes,2,opt,name=http,proto3" json:"http,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ConnectionPoolSettings) Reset() { *m = ConnectionPoolSettings{} } func (m *ConnectionPoolSettings) String() string { return proto.CompactTextString(m) } func (*ConnectionPoolSettings) ProtoMessage() {} func (*ConnectionPoolSettings) Descriptor() ([]byte, []int) { - return fileDescriptorDestinationRule, []int{4} + return fileDescriptor_12899beb695152c8, []int{4} +} +func (m *ConnectionPoolSettings) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ConnectionPoolSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ConnectionPoolSettings.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ConnectionPoolSettings) XXX_Merge(src proto.Message) { + xxx_messageInfo_ConnectionPoolSettings.Merge(m, src) } +func (m *ConnectionPoolSettings) XXX_Size() int { + return m.Size() +} +func (m *ConnectionPoolSettings) XXX_DiscardUnknown() { + xxx_messageInfo_ConnectionPoolSettings.DiscardUnknown(m) +} + +var xxx_messageInfo_ConnectionPoolSettings proto.InternalMessageInfo func (m *ConnectionPoolSettings) GetTcp() *ConnectionPoolSettings_TCPSettings { if m != nil { @@ -924,18 +1132,47 @@ type ConnectionPoolSettings_TCPSettings struct { // Maximum number of HTTP1 /TCP connections to a destination host. MaxConnections int32 `protobuf:"varint,1,opt,name=max_connections,json=maxConnections,proto3" json:"max_connections,omitempty"` // TCP connection timeout. - ConnectTimeout *google_protobuf.Duration `protobuf:"bytes,2,opt,name=connect_timeout,json=connectTimeout" json:"connect_timeout,omitempty"` + ConnectTimeout *types.Duration `protobuf:"bytes,2,opt,name=connect_timeout,json=connectTimeout,proto3" json:"connect_timeout,omitempty"` // If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives. - TcpKeepalive *ConnectionPoolSettings_TCPSettings_TcpKeepalive `protobuf:"bytes,3,opt,name=tcp_keepalive,json=tcpKeepalive" json:"tcp_keepalive,omitempty"` + TcpKeepalive *ConnectionPoolSettings_TCPSettings_TcpKeepalive `protobuf:"bytes,3,opt,name=tcp_keepalive,json=tcpKeepalive,proto3" json:"tcp_keepalive,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ConnectionPoolSettings_TCPSettings) Reset() { *m = ConnectionPoolSettings_TCPSettings{} } func (m *ConnectionPoolSettings_TCPSettings) String() string { return proto.CompactTextString(m) } func (*ConnectionPoolSettings_TCPSettings) ProtoMessage() {} func (*ConnectionPoolSettings_TCPSettings) Descriptor() ([]byte, []int) { - return fileDescriptorDestinationRule, []int{4, 0} + return fileDescriptor_12899beb695152c8, []int{4, 0} +} +func (m *ConnectionPoolSettings_TCPSettings) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ConnectionPoolSettings_TCPSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ConnectionPoolSettings_TCPSettings.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ConnectionPoolSettings_TCPSettings) XXX_Merge(src proto.Message) { + xxx_messageInfo_ConnectionPoolSettings_TCPSettings.Merge(m, src) +} +func (m *ConnectionPoolSettings_TCPSettings) XXX_Size() int { + return m.Size() +} +func (m *ConnectionPoolSettings_TCPSettings) XXX_DiscardUnknown() { + xxx_messageInfo_ConnectionPoolSettings_TCPSettings.DiscardUnknown(m) } +var xxx_messageInfo_ConnectionPoolSettings_TCPSettings proto.InternalMessageInfo + func (m *ConnectionPoolSettings_TCPSettings) GetMaxConnections() int32 { if m != nil { return m.MaxConnections @@ -943,7 +1180,7 @@ func (m *ConnectionPoolSettings_TCPSettings) GetMaxConnections() int32 { return 0 } -func (m *ConnectionPoolSettings_TCPSettings) GetConnectTimeout() *google_protobuf.Duration { +func (m *ConnectionPoolSettings_TCPSettings) GetConnectTimeout() *types.Duration { if m != nil { return m.ConnectTimeout } @@ -966,11 +1203,14 @@ type ConnectionPoolSettings_TCPSettings_TcpKeepalive struct { // The time duration a connection needs to be idle before keep-alive // probes start being sent. Default is to use the OS level configuration // (unless overridden, Linux defaults to 7200s (ie 2 hours.) - Time *google_protobuf.Duration `protobuf:"bytes,2,opt,name=time" json:"time,omitempty"` + Time *types.Duration `protobuf:"bytes,2,opt,name=time,proto3" json:"time,omitempty"` // The time duration between keep-alive probes. // Default is to use the OS level configuration // (unless overridden, Linux defaults to 75s.) - Interval *google_protobuf.Duration `protobuf:"bytes,3,opt,name=interval" json:"interval,omitempty"` + 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 *ConnectionPoolSettings_TCPSettings_TcpKeepalive) Reset() { @@ -981,8 +1221,34 @@ func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) String() string { } func (*ConnectionPoolSettings_TCPSettings_TcpKeepalive) ProtoMessage() {} func (*ConnectionPoolSettings_TCPSettings_TcpKeepalive) Descriptor() ([]byte, []int) { - return fileDescriptorDestinationRule, []int{4, 0, 0} + return fileDescriptor_12899beb695152c8, []int{4, 0, 0} +} +func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ConnectionPoolSettings_TCPSettings_TcpKeepalive.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) XXX_Merge(src proto.Message) { + xxx_messageInfo_ConnectionPoolSettings_TCPSettings_TcpKeepalive.Merge(m, src) +} +func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) XXX_Size() int { + return m.Size() } +func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) XXX_DiscardUnknown() { + xxx_messageInfo_ConnectionPoolSettings_TCPSettings_TcpKeepalive.DiscardUnknown(m) +} + +var xxx_messageInfo_ConnectionPoolSettings_TCPSettings_TcpKeepalive proto.InternalMessageInfo func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) GetProbes() uint32 { if m != nil { @@ -991,14 +1257,14 @@ func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) GetProbes() uint32 { return 0 } -func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) GetTime() *google_protobuf.Duration { +func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) GetTime() *types.Duration { if m != nil { return m.Time } return nil } -func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) GetInterval() *google_protobuf.Duration { +func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) GetInterval() *types.Duration { if m != nil { return m.Interval } @@ -1016,15 +1282,44 @@ type ConnectionPoolSettings_HTTPSettings struct { MaxRequestsPerConnection int32 `protobuf:"varint,3,opt,name=max_requests_per_connection,json=maxRequestsPerConnection,proto3" json:"max_requests_per_connection,omitempty"` // Maximum number of retries that can be outstanding to all hosts in a // cluster at a given time. Defaults to 3. - MaxRetries int32 `protobuf:"varint,4,opt,name=max_retries,json=maxRetries,proto3" json:"max_retries,omitempty"` + MaxRetries int32 `protobuf:"varint,4,opt,name=max_retries,json=maxRetries,proto3" json:"max_retries,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ConnectionPoolSettings_HTTPSettings) Reset() { *m = ConnectionPoolSettings_HTTPSettings{} } func (m *ConnectionPoolSettings_HTTPSettings) String() string { return proto.CompactTextString(m) } func (*ConnectionPoolSettings_HTTPSettings) ProtoMessage() {} func (*ConnectionPoolSettings_HTTPSettings) Descriptor() ([]byte, []int) { - return fileDescriptorDestinationRule, []int{4, 1} + return fileDescriptor_12899beb695152c8, []int{4, 1} +} +func (m *ConnectionPoolSettings_HTTPSettings) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) } +func (m *ConnectionPoolSettings_HTTPSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ConnectionPoolSettings_HTTPSettings.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ConnectionPoolSettings_HTTPSettings) XXX_Merge(src proto.Message) { + xxx_messageInfo_ConnectionPoolSettings_HTTPSettings.Merge(m, src) +} +func (m *ConnectionPoolSettings_HTTPSettings) XXX_Size() int { + return m.Size() +} +func (m *ConnectionPoolSettings_HTTPSettings) XXX_DiscardUnknown() { + xxx_messageInfo_ConnectionPoolSettings_HTTPSettings.DiscardUnknown(m) +} + +var xxx_messageInfo_ConnectionPoolSettings_HTTPSettings proto.InternalMessageInfo func (m *ConnectionPoolSettings_HTTPSettings) GetHttp1MaxPendingRequests() int32 { if m != nil { @@ -1098,13 +1393,13 @@ type OutlierDetection struct { ConsecutiveErrors int32 `protobuf:"varint,1,opt,name=consecutive_errors,json=consecutiveErrors,proto3" json:"consecutive_errors,omitempty"` // Time interval between ejection sweep analysis. format: // 1h/1m/1s/1ms. MUST BE >=1ms. Default is 10s. - Interval *google_protobuf.Duration `protobuf:"bytes,2,opt,name=interval" json:"interval,omitempty"` + Interval *types.Duration `protobuf:"bytes,2,opt,name=interval,proto3" json:"interval,omitempty"` // Minimum ejection duration. A host will remain ejected for a period // equal to the product of minimum ejection duration and the number of // times the host has been ejected. This technique allows the system to // automatically increase the ejection period for unhealthy upstream // servers. format: 1h/1m/1s/1ms. MUST BE >=1ms. Default is 30s. - BaseEjectionTime *google_protobuf.Duration `protobuf:"bytes,3,opt,name=base_ejection_time,json=baseEjectionTime" json:"base_ejection_time,omitempty"` + BaseEjectionTime *types.Duration `protobuf:"bytes,3,opt,name=base_ejection_time,json=baseEjectionTime,proto3" json:"base_ejection_time,omitempty"` // Maximum % of hosts in the load balancing pool for the upstream // service that can be ejected. Defaults to 10%. MaxEjectionPercent int32 `protobuf:"varint,4,opt,name=max_ejection_percent,json=maxEjectionPercent,proto3" json:"max_ejection_percent,omitempty"` @@ -1113,13 +1408,44 @@ type OutlierDetection struct { // percentage of healthy hosts in the load balancing pool drops below this // threshold, outlier detection will be disabled and the proxy will load balance // across all hosts in the pool (healthy and unhealthy). The default is 50%. - MinHealthPercent int32 `protobuf:"varint,5,opt,name=min_health_percent,json=minHealthPercent,proto3" json:"min_health_percent,omitempty"` + MinHealthPercent int32 `protobuf:"varint,5,opt,name=min_health_percent,json=minHealthPercent,proto3" json:"min_health_percent,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *OutlierDetection) Reset() { *m = OutlierDetection{} } +func (m *OutlierDetection) String() string { return proto.CompactTextString(m) } +func (*OutlierDetection) ProtoMessage() {} +func (*OutlierDetection) Descriptor() ([]byte, []int) { + return fileDescriptor_12899beb695152c8, []int{5} +} +func (m *OutlierDetection) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *OutlierDetection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_OutlierDetection.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *OutlierDetection) XXX_Merge(src proto.Message) { + xxx_messageInfo_OutlierDetection.Merge(m, src) +} +func (m *OutlierDetection) XXX_Size() int { + return m.Size() +} +func (m *OutlierDetection) XXX_DiscardUnknown() { + xxx_messageInfo_OutlierDetection.DiscardUnknown(m) } -func (m *OutlierDetection) Reset() { *m = OutlierDetection{} } -func (m *OutlierDetection) String() string { return proto.CompactTextString(m) } -func (*OutlierDetection) ProtoMessage() {} -func (*OutlierDetection) Descriptor() ([]byte, []int) { return fileDescriptorDestinationRule, []int{5} } +var xxx_messageInfo_OutlierDetection proto.InternalMessageInfo func (m *OutlierDetection) GetConsecutiveErrors() int32 { if m != nil { @@ -1128,14 +1454,14 @@ func (m *OutlierDetection) GetConsecutiveErrors() int32 { return 0 } -func (m *OutlierDetection) GetInterval() *google_protobuf.Duration { +func (m *OutlierDetection) GetInterval() *types.Duration { if m != nil { return m.Interval } return nil } -func (m *OutlierDetection) GetBaseEjectionTime() *google_protobuf.Duration { +func (m *OutlierDetection) GetBaseEjectionTime() *types.Duration { if m != nil { return m.BaseEjectionTime } @@ -1229,15 +1555,46 @@ type TLSSettings struct { // certificate's subject alt name matches one of the specified values. // If specified, this list overrides the value of subject_alt_names // from the ServiceEntry. - SubjectAltNames []string `protobuf:"bytes,5,rep,name=subject_alt_names,json=subjectAltNames" json:"subject_alt_names,omitempty"` + SubjectAltNames []string `protobuf:"bytes,5,rep,name=subject_alt_names,json=subjectAltNames,proto3" json:"subject_alt_names,omitempty"` // SNI string to present to the server during TLS handshake. - Sni string `protobuf:"bytes,6,opt,name=sni,proto3" json:"sni,omitempty"` + Sni string `protobuf:"bytes,6,opt,name=sni,proto3" json:"sni,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *TLSSettings) Reset() { *m = TLSSettings{} } +func (m *TLSSettings) String() string { return proto.CompactTextString(m) } +func (*TLSSettings) ProtoMessage() {} +func (*TLSSettings) Descriptor() ([]byte, []int) { + return fileDescriptor_12899beb695152c8, []int{6} +} +func (m *TLSSettings) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TLSSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TLSSettings.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *TLSSettings) XXX_Merge(src proto.Message) { + xxx_messageInfo_TLSSettings.Merge(m, src) +} +func (m *TLSSettings) XXX_Size() int { + return m.Size() +} +func (m *TLSSettings) XXX_DiscardUnknown() { + xxx_messageInfo_TLSSettings.DiscardUnknown(m) } -func (m *TLSSettings) Reset() { *m = TLSSettings{} } -func (m *TLSSettings) String() string { return proto.CompactTextString(m) } -func (*TLSSettings) ProtoMessage() {} -func (*TLSSettings) Descriptor() ([]byte, []int) { return fileDescriptorDestinationRule, []int{6} } +var xxx_messageInfo_TLSSettings proto.InternalMessageInfo func (m *TLSSettings) GetMode() TLSSettings_TLSmode { if m != nil { @@ -1282,10 +1639,13 @@ func (m *TLSSettings) GetSni() string { } func init() { + proto.RegisterEnum("istio.networking.v1alpha3.LoadBalancerSettings_SimpleLB", LoadBalancerSettings_SimpleLB_name, LoadBalancerSettings_SimpleLB_value) + proto.RegisterEnum("istio.networking.v1alpha3.TLSSettings_TLSmode", TLSSettings_TLSmode_name, TLSSettings_TLSmode_value) proto.RegisterType((*DestinationRule)(nil), "istio.networking.v1alpha3.DestinationRule") proto.RegisterType((*TrafficPolicy)(nil), "istio.networking.v1alpha3.TrafficPolicy") proto.RegisterType((*TrafficPolicy_PortTrafficPolicy)(nil), "istio.networking.v1alpha3.TrafficPolicy.PortTrafficPolicy") proto.RegisterType((*Subset)(nil), "istio.networking.v1alpha3.Subset") + proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1alpha3.Subset.LabelsEntry") proto.RegisterType((*LoadBalancerSettings)(nil), "istio.networking.v1alpha3.LoadBalancerSettings") proto.RegisterType((*LoadBalancerSettings_ConsistentHashLB)(nil), "istio.networking.v1alpha3.LoadBalancerSettings.ConsistentHashLB") proto.RegisterType((*LoadBalancerSettings_ConsistentHashLB_HTTPCookie)(nil), "istio.networking.v1alpha3.LoadBalancerSettings.ConsistentHashLB.HTTPCookie") @@ -1295,9 +1655,104 @@ func init() { proto.RegisterType((*ConnectionPoolSettings_HTTPSettings)(nil), "istio.networking.v1alpha3.ConnectionPoolSettings.HTTPSettings") proto.RegisterType((*OutlierDetection)(nil), "istio.networking.v1alpha3.OutlierDetection") proto.RegisterType((*TLSSettings)(nil), "istio.networking.v1alpha3.TLSSettings") - proto.RegisterEnum("istio.networking.v1alpha3.LoadBalancerSettings_SimpleLB", LoadBalancerSettings_SimpleLB_name, LoadBalancerSettings_SimpleLB_value) - proto.RegisterEnum("istio.networking.v1alpha3.TLSSettings_TLSmode", TLSSettings_TLSmode_name, TLSSettings_TLSmode_value) } + +func init() { + proto.RegisterFile("networking/v1alpha3/destination_rule.proto", fileDescriptor_12899beb695152c8) +} + +var fileDescriptor_12899beb695152c8 = []byte{ + // 1396 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xcf, 0x6e, 0x1b, 0xb7, + 0x13, 0xb6, 0xfe, 0xc6, 0x1a, 0xd9, 0xb2, 0xcc, 0x9f, 0x91, 0x9f, 0xa2, 0x00, 0x8e, 0x2b, 0x14, + 0x8d, 0x9b, 0x36, 0xab, 0xda, 0x41, 0x81, 0x34, 0x41, 0x8a, 0x58, 0xb6, 0x10, 0xb9, 0x91, 0x2d, + 0x81, 0x92, 0x81, 0x22, 0x97, 0x05, 0xb5, 0xa2, 0x25, 0xc6, 0xab, 0xe5, 0x76, 0xc9, 0x55, 0xed, + 0x3c, 0x43, 0xcf, 0x41, 0xaf, 0xbd, 0xf4, 0x59, 0x8a, 0x9e, 0x72, 0x6d, 0x2f, 0x2d, 0xf2, 0x02, + 0x3d, 0xf5, 0xd2, 0x53, 0x41, 0x2e, 0x57, 0x92, 0x13, 0xc7, 0x8e, 0xe1, 0xe6, 0xc6, 0xe5, 0xcc, + 0xf7, 0x91, 0x9c, 0x6f, 0x38, 0xc3, 0x85, 0x3b, 0x1e, 0x95, 0xdf, 0xf3, 0xe0, 0x88, 0x79, 0x83, + 0xea, 0x78, 0x83, 0xb8, 0xfe, 0x90, 0xdc, 0xab, 0xf6, 0xa9, 0x90, 0xcc, 0x23, 0x92, 0x71, 0xcf, + 0x0e, 0x42, 0x97, 0x5a, 0x7e, 0xc0, 0x25, 0x47, 0x37, 0x98, 0x90, 0x8c, 0x5b, 0x53, 0x84, 0x15, + 0x23, 0xca, 0xab, 0x03, 0xce, 0x07, 0x2e, 0xad, 0x6a, 0xc7, 0x5e, 0x78, 0x58, 0xed, 0x87, 0x81, + 0xc6, 0x47, 0xd0, 0xf2, 0xa7, 0x67, 0x2d, 0x33, 0x66, 0x81, 0x0c, 0x89, 0x6b, 0x0b, 0x1a, 0x8c, + 0x99, 0x63, 0x56, 0x29, 0xaf, 0x0c, 0xf8, 0x80, 0xeb, 0x61, 0x55, 0x8d, 0xa2, 0xd9, 0xca, 0xab, + 0x04, 0x2c, 0xed, 0x4c, 0xb7, 0x85, 0x43, 0x97, 0x22, 0x04, 0xe9, 0x21, 0x17, 0xb2, 0x94, 0x58, + 0x4b, 0xac, 0xe7, 0xb0, 0x1e, 0xa3, 0x16, 0x14, 0x64, 0x40, 0x0e, 0x0f, 0x99, 0x63, 0xfb, 0xdc, + 0x65, 0xce, 0x49, 0x29, 0xb9, 0x96, 0x58, 0xcf, 0x6f, 0xae, 0x5b, 0xef, 0xdc, 0xbc, 0xd5, 0x8d, + 0x00, 0x6d, 0xed, 0x8f, 0x17, 0xe5, 0xec, 0x27, 0x7a, 0x08, 0xd7, 0x44, 0xd8, 0x13, 0x54, 0x8a, + 0x52, 0x6a, 0x2d, 0xb5, 0x9e, 0xdf, 0xfc, 0xe8, 0x1c, 0xa6, 0x8e, 0xf6, 0xc4, 0x31, 0x02, 0xdd, + 0x84, 0x1c, 0x3d, 0xf6, 0x79, 0x20, 0x6d, 0xc9, 0x4b, 0xe9, 0xb5, 0xd4, 0x7a, 0x0e, 0xcf, 0x47, + 0x13, 0x5d, 0x5e, 0xf9, 0x3d, 0x0b, 0x8b, 0xa7, 0x96, 0x46, 0x5d, 0x58, 0x74, 0x39, 0xe9, 0xdb, + 0x3d, 0xe2, 0x12, 0xcf, 0xa1, 0x81, 0x3e, 0x59, 0x7e, 0xb3, 0x7a, 0xce, 0x8a, 0x4d, 0x4e, 0xfa, + 0x35, 0xe3, 0xde, 0xa1, 0x52, 0x32, 0x6f, 0x20, 0xf0, 0x82, 0x3b, 0x33, 0x8b, 0x9e, 0xc1, 0x92, + 0xc3, 0x3d, 0x8f, 0x3a, 0x5a, 0x4f, 0x9f, 0x73, 0xd7, 0xc4, 0x64, 0xe3, 0x1c, 0xde, 0xed, 0x09, + 0xa2, 0xcd, 0xb9, 0x3b, 0x61, 0x2e, 0x38, 0xa7, 0xe6, 0xd1, 0xb7, 0xb0, 0xcc, 0x43, 0xe9, 0x32, + 0x1a, 0xd8, 0x7d, 0x2a, 0x23, 0x43, 0x29, 0xa5, 0xd9, 0x3f, 0x3b, 0x87, 0xbd, 0x15, 0x61, 0x76, + 0x62, 0x08, 0x2e, 0xf2, 0x37, 0x66, 0xd0, 0x7d, 0x48, 0x49, 0x57, 0x94, 0xd2, 0x9a, 0xeb, 0x93, + 0xf3, 0xd4, 0x6b, 0x76, 0x26, 0xdb, 0x53, 0x10, 0xf4, 0x1c, 0xfe, 0xa7, 0x43, 0xee, 0xd2, 0x31, + 0x55, 0xc9, 0x15, 0xd9, 0x4a, 0x19, 0xad, 0xde, 0x83, 0xf7, 0xcd, 0x03, 0xab, 0xad, 0x54, 0x3a, + 0x95, 0x19, 0xcb, 0x8a, 0xb6, 0xa9, 0x58, 0xe3, 0x05, 0xcb, 0x2f, 0x53, 0xb0, 0xfc, 0x96, 0x23, + 0x7a, 0x08, 0x69, 0xe5, 0x6a, 0xe4, 0xbb, 0x7d, 0xce, 0x92, 0x0a, 0xdb, 0xa1, 0x2e, 0x75, 0x24, + 0x0f, 0xb0, 0x06, 0xbd, 0x9d, 0x04, 0xc9, 0x0f, 0x94, 0x04, 0xa9, 0x0f, 0x9a, 0x04, 0xe9, 0xff, + 0x30, 0x09, 0x32, 0x97, 0x4e, 0x82, 0xca, 0x5f, 0x09, 0xc8, 0x46, 0xb7, 0x51, 0x95, 0x09, 0x8f, + 0x8c, 0x68, 0x5c, 0x26, 0xd4, 0x18, 0xd5, 0x21, 0xeb, 0x92, 0x1e, 0x75, 0x45, 0x29, 0xa9, 0xd3, + 0xe2, 0xee, 0x85, 0x97, 0xda, 0x6a, 0x6a, 0xff, 0xba, 0x27, 0x83, 0x13, 0x6c, 0xc0, 0x67, 0x54, + 0x9b, 0xd4, 0x95, 0xaa, 0x4d, 0xf9, 0x2b, 0xc8, 0xcf, 0xac, 0x83, 0x8a, 0x90, 0x3a, 0xa2, 0x27, + 0x66, 0xe7, 0x6a, 0x88, 0x56, 0x20, 0x33, 0x26, 0x6e, 0x48, 0x75, 0x56, 0xe4, 0x70, 0xf4, 0xf1, + 0x20, 0x79, 0x3f, 0x51, 0xf9, 0x39, 0x03, 0x2b, 0x67, 0x25, 0x02, 0xc2, 0x90, 0x15, 0x6c, 0xe4, + 0xbb, 0x51, 0x04, 0x0a, 0x9b, 0xf7, 0x2f, 0x99, 0x49, 0x56, 0x47, 0xa3, 0x9b, 0xb5, 0xc6, 0x1c, + 0x36, 0x4c, 0xe8, 0x48, 0xa7, 0x93, 0x60, 0x42, 0x52, 0x4f, 0xda, 0x43, 0x22, 0x86, 0x26, 0x4d, + 0x1f, 0x5f, 0x96, 0x7c, 0x7b, 0x42, 0xd3, 0x20, 0x62, 0xa8, 0x17, 0x29, 0x38, 0xa7, 0xe6, 0xca, + 0x7f, 0x27, 0xa1, 0xf8, 0xa6, 0x1b, 0xba, 0x03, 0xc5, 0xa1, 0x94, 0xbe, 0x3d, 0xa4, 0xa4, 0x4f, + 0x03, 0x7b, 0xaa, 0xb0, 0x22, 0x50, 0x96, 0x86, 0x36, 0xec, 0x2b, 0xb5, 0x3d, 0xc8, 0x6b, 0x5f, + 0x87, 0xf3, 0x23, 0x46, 0xcd, 0x4e, 0x9f, 0x5e, 0x75, 0xa7, 0x56, 0xa3, 0xdb, 0x6d, 0x6f, 0x6b, + 0xca, 0xc6, 0x1c, 0x06, 0xb5, 0x42, 0xf4, 0x85, 0x3e, 0x86, 0xc5, 0x50, 0x50, 0x5b, 0xf0, 0x30, + 0x70, 0xa8, 0xcd, 0x7c, 0x9d, 0x15, 0xf3, 0x8d, 0x39, 0x9c, 0x0f, 0x05, 0xed, 0xe8, 0xd9, 0x5d, + 0x1f, 0xdd, 0x81, 0xe5, 0x11, 0xf3, 0xd8, 0x28, 0x1c, 0xd9, 0x01, 0xf3, 0x06, 0xb6, 0x60, 0x2f, + 0xa8, 0xbe, 0x36, 0x69, 0xbc, 0x64, 0x0c, 0x98, 0x79, 0x83, 0x0e, 0x7b, 0x41, 0xcb, 0x03, 0x80, + 0xe9, 0x6a, 0x67, 0x66, 0x34, 0x82, 0xb4, 0x4f, 0xe4, 0xd0, 0xe4, 0x85, 0x1e, 0xa3, 0x0d, 0x48, + 0x49, 0x19, 0x5f, 0xf4, 0x1b, 0x56, 0xd4, 0xa3, 0xad, 0xb8, 0x47, 0x5b, 0x3b, 0xa6, 0x47, 0xd7, + 0xd2, 0x3f, 0xfe, 0x71, 0x2b, 0x81, 0x95, 0x6f, 0x0d, 0x60, 0x5e, 0xa9, 0x69, 0x1f, 0xd1, 0x93, + 0x4a, 0x03, 0xe6, 0x63, 0xe9, 0xd1, 0x12, 0xe4, 0x71, 0xeb, 0x60, 0x7f, 0xc7, 0xc6, 0xad, 0xda, + 0xee, 0x7e, 0x71, 0x0e, 0x15, 0x00, 0x9a, 0xf5, 0xad, 0x4e, 0xd7, 0xde, 0x6e, 0xed, 0xef, 0x17, + 0x13, 0x08, 0x20, 0x8b, 0xb7, 0xf6, 0x77, 0x5a, 0x7b, 0xc5, 0xa4, 0x72, 0x6e, 0x6f, 0x75, 0x3a, + 0xdd, 0x06, 0x6e, 0x1d, 0x3c, 0x69, 0x14, 0x53, 0xb5, 0x3c, 0xe4, 0xdc, 0x9e, 0xb9, 0x22, 0x95, + 0x97, 0x59, 0xb8, 0x7e, 0x76, 0x65, 0x41, 0x2d, 0x48, 0x49, 0xc7, 0x37, 0x75, 0xf3, 0xd1, 0xa5, + 0x2b, 0x93, 0xd5, 0xdd, 0x6e, 0xcf, 0x94, 0x01, 0xc7, 0x47, 0x18, 0xd2, 0x4a, 0x17, 0x23, 0xf9, + 0xd7, 0x97, 0x67, 0x54, 0x51, 0x9f, 0x50, 0x6a, 0xae, 0xf2, 0x3f, 0x49, 0xc8, 0xcf, 0x2c, 0x84, + 0x6e, 0xc3, 0xd2, 0x88, 0x1c, 0xdb, 0xd3, 0xa2, 0x28, 0xf4, 0x01, 0x32, 0xb8, 0x30, 0x22, 0xc7, + 0x53, 0x5a, 0x81, 0x6a, 0x93, 0x1a, 0x6c, 0x4b, 0x36, 0xa2, 0x3c, 0x94, 0x66, 0x5f, 0xef, 0x96, + 0x66, 0x52, 0x6b, 0xbb, 0x11, 0x00, 0x71, 0x58, 0x94, 0x8e, 0x6f, 0x1f, 0x51, 0xea, 0x13, 0x97, + 0x8d, 0xa9, 0x11, 0xf7, 0x9b, 0x2b, 0xc5, 0xca, 0xea, 0x3a, 0xfe, 0xd3, 0x98, 0x11, 0x2f, 0xc8, + 0x99, 0xaf, 0xf2, 0x0f, 0x09, 0x58, 0x98, 0x35, 0xa3, 0xeb, 0x90, 0xf5, 0x03, 0xde, 0xa3, 0xd1, + 0x29, 0x17, 0xb1, 0xf9, 0x42, 0x77, 0x21, 0xad, 0x4e, 0x75, 0xf1, 0x91, 0xb4, 0x1b, 0xfa, 0x12, + 0xe6, 0x99, 0x27, 0x69, 0x30, 0x26, 0x17, 0x27, 0x28, 0x9e, 0xb8, 0x96, 0x7f, 0x4b, 0xc0, 0xc2, + 0xac, 0x26, 0xe8, 0x21, 0x94, 0x95, 0x2a, 0x1b, 0xb6, 0xd2, 0xc0, 0xa7, 0x5e, 0x5f, 0x5d, 0xa5, + 0x80, 0x7e, 0x17, 0x52, 0x21, 0x63, 0x21, 0xfe, 0xaf, 0x3d, 0xf6, 0xc8, 0x71, 0x3b, 0xb2, 0x63, + 0x63, 0x46, 0x9f, 0x03, 0x52, 0xa6, 0x4d, 0x0d, 0x9e, 0x80, 0x92, 0x1a, 0xa4, 0xcb, 0xcb, 0xe6, + 0x1e, 0x39, 0x9e, 0x78, 0x3f, 0x82, 0x9b, 0xb3, 0x7e, 0xb6, 0x4f, 0x83, 0x19, 0xd5, 0xf5, 0x29, + 0x32, 0xb8, 0x34, 0x9a, 0x22, 0xda, 0x34, 0x98, 0x06, 0x1f, 0xdd, 0x82, 0x7c, 0x04, 0x97, 0x01, + 0xa3, 0xd1, 0xcb, 0x26, 0x83, 0x41, 0xbb, 0xeb, 0x99, 0xca, 0x4f, 0x49, 0x28, 0xbe, 0xd9, 0x14, + 0xd1, 0x5d, 0x40, 0xaa, 0x1c, 0x52, 0x27, 0x94, 0x6c, 0x4c, 0x6d, 0x1a, 0x04, 0x3c, 0x88, 0xcf, + 0xb5, 0x3c, 0x63, 0xa9, 0x6b, 0xc3, 0xa9, 0xb0, 0x26, 0xdf, 0x3b, 0xac, 0xe8, 0x09, 0xa0, 0x1e, + 0x11, 0xd4, 0xa6, 0xcf, 0xcd, 0x0b, 0x41, 0x4b, 0x79, 0xa1, 0x2e, 0x45, 0x05, 0xaa, 0x1b, 0x8c, + 0x4a, 0x51, 0xf4, 0x05, 0xac, 0xa8, 0x43, 0x4e, 0x78, 0x7c, 0x1a, 0x38, 0xd4, 0x93, 0xe6, 0xb4, + 0x68, 0x44, 0x8e, 0x63, 0xf7, 0x76, 0x64, 0x51, 0x1a, 0x8c, 0x98, 0xa7, 0xea, 0xb8, 0x2b, 0x87, + 0x13, 0xff, 0x4c, 0xa4, 0xc1, 0x88, 0x79, 0x0d, 0x6d, 0x30, 0xde, 0x95, 0x5f, 0xd5, 0xe5, 0x9b, + 0x36, 0x7b, 0x54, 0x83, 0xf4, 0x88, 0xf7, 0xe3, 0xd6, 0x66, 0xbd, 0xdf, 0x13, 0x41, 0x8d, 0x15, + 0x0a, 0x6b, 0xac, 0x0e, 0xb1, 0xcb, 0x54, 0x23, 0x73, 0x68, 0x20, 0xd9, 0x21, 0x73, 0x88, 0x8c, + 0x1b, 0xec, 0x72, 0x64, 0xd9, 0x9e, 0x1a, 0x94, 0x8e, 0x7e, 0xc0, 0xc6, 0x44, 0x52, 0x55, 0x25, + 0x75, 0x90, 0x72, 0x18, 0xcc, 0xd4, 0x53, 0x7a, 0xa2, 0x0a, 0x82, 0x43, 0x66, 0xb9, 0x22, 0xb1, + 0x73, 0xb8, 0xe0, 0x90, 0x19, 0x22, 0xa1, 0x3a, 0x80, 0x08, 0x7b, 0x2a, 0x1e, 0x36, 0x71, 0xa5, + 0xee, 0x61, 0xd1, 0x3b, 0x35, 0x87, 0x97, 0x8c, 0x61, 0xcb, 0x95, 0xaa, 0x85, 0x09, 0xf5, 0x14, + 0x10, 0x1e, 0x2b, 0x65, 0xa3, 0xa7, 0x80, 0xf0, 0x58, 0xe5, 0x31, 0x5c, 0x33, 0xe7, 0x40, 0x79, + 0xb8, 0xb6, 0xb3, 0xdb, 0xd9, 0xaa, 0x35, 0xeb, 0xc5, 0x39, 0x55, 0x89, 0x3b, 0xbb, 0x7b, 0xed, + 0x66, 0x3d, 0xaa, 0xca, 0x7b, 0x07, 0xdd, 0x83, 0xad, 0x66, 0x31, 0x89, 0x8a, 0xb0, 0xb0, 0xdb, + 0xe9, 0xee, 0xb6, 0x6c, 0x33, 0x93, 0xaa, 0x59, 0xbf, 0xbc, 0x5e, 0x4d, 0xbc, 0x7a, 0xbd, 0x9a, + 0xf8, 0xf3, 0xf5, 0x6a, 0xe2, 0xd9, 0x5a, 0x14, 0x3b, 0xc6, 0xab, 0xc4, 0x67, 0xd5, 0x33, 0x7e, + 0xd8, 0x7a, 0x59, 0x9d, 0x01, 0xf7, 0xfe, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xfd, 0x7d, 0x30, 0x94, + 0x35, 0x0e, 0x00, 0x00, +} + func (m *DestinationRule) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1356,6 +1811,9 @@ func (m *DestinationRule) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], s) } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -1426,6 +1884,9 @@ func (m *TrafficPolicy) MarshalTo(dAtA []byte) (int, error) { i += n } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -1494,6 +1955,9 @@ func (m *TrafficPolicy_PortTrafficPolicy) MarshalTo(dAtA []byte) (int, error) { } i += n10 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -1545,6 +2009,9 @@ func (m *Subset) MarshalTo(dAtA []byte) (int, error) { } i += n11 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -1570,6 +2037,9 @@ func (m *LoadBalancerSettings) MarshalTo(dAtA []byte) (int, error) { } i += nn12 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -1621,6 +2091,9 @@ func (m *LoadBalancerSettings_ConsistentHashLB) MarshalTo(dAtA []byte) (int, err i++ i = encodeVarintDestinationRule(dAtA, i, uint64(m.MinimumRingSize)) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -1688,13 +2161,16 @@ func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) MarshalTo(dAtA []byte if m.Ttl != nil { dAtA[i] = 0x1a i++ - i = encodeVarintDestinationRule(dAtA, i, uint64(types.SizeOfStdDuration(*m.Ttl))) - n16, err := types.StdDurationMarshalTo(*m.Ttl, dAtA[i:]) + i = encodeVarintDestinationRule(dAtA, i, uint64(github_com_gogo_protobuf_types.SizeOfStdDuration(*m.Ttl))) + n16, err := github_com_gogo_protobuf_types.StdDurationMarshalTo(*m.Ttl, dAtA[i:]) if err != nil { return 0, err } i += n16 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -1733,6 +2209,9 @@ func (m *ConnectionPoolSettings) MarshalTo(dAtA []byte) (int, error) { } i += n18 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -1776,6 +2255,9 @@ func (m *ConnectionPoolSettings_TCPSettings) MarshalTo(dAtA []byte) (int, error) } i += n20 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -1819,6 +2301,9 @@ func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) MarshalTo(dAtA []byte) } i += n22 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -1857,6 +2342,9 @@ func (m *ConnectionPoolSettings_HTTPSettings) MarshalTo(dAtA []byte) (int, error i++ i = encodeVarintDestinationRule(dAtA, i, uint64(m.MaxRetries)) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -1910,6 +2398,9 @@ func (m *OutlierDetection) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintDestinationRule(dAtA, i, uint64(m.MinHealthPercent)) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -1972,6 +2463,9 @@ func (m *TLSSettings) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintDestinationRule(dAtA, i, uint64(len(m.Sni))) i += copy(dAtA[i:], m.Sni) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -1985,6 +2479,9 @@ func encodeVarintDestinationRule(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *DestinationRule) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Host) @@ -2007,10 +2504,16 @@ func (m *DestinationRule) Size() (n int) { n += 1 + l + sovDestinationRule(uint64(l)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *TrafficPolicy) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.LoadBalancer != nil { @@ -2035,10 +2538,16 @@ func (m *TrafficPolicy) Size() (n int) { n += 1 + l + sovDestinationRule(uint64(l)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *TrafficPolicy_PortTrafficPolicy) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Port != nil { @@ -2061,10 +2570,16 @@ func (m *TrafficPolicy_PortTrafficPolicy) Size() (n int) { l = m.Tls.Size() n += 1 + l + sovDestinationRule(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *Subset) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Name) @@ -2083,25 +2598,40 @@ func (m *Subset) Size() (n int) { l = m.TrafficPolicy.Size() n += 1 + l + sovDestinationRule(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *LoadBalancerSettings) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.LbPolicy != nil { n += m.LbPolicy.Size() } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *LoadBalancerSettings_Simple) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l n += 1 + sovDestinationRule(uint64(m.Simple)) return n } func (m *LoadBalancerSettings_ConsistentHash) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.ConsistentHash != nil { @@ -2111,6 +2641,9 @@ func (m *LoadBalancerSettings_ConsistentHash) Size() (n int) { return n } func (m *LoadBalancerSettings_ConsistentHashLB) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.HashKey != nil { @@ -2119,10 +2652,16 @@ func (m *LoadBalancerSettings_ConsistentHashLB) Size() (n int) { if m.MinimumRingSize != 0 { n += 1 + sovDestinationRule(uint64(m.MinimumRingSize)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *LoadBalancerSettings_ConsistentHashLB_HttpHeaderName) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.HttpHeaderName) @@ -2130,6 +2669,9 @@ func (m *LoadBalancerSettings_ConsistentHashLB_HttpHeaderName) Size() (n int) { return n } func (m *LoadBalancerSettings_ConsistentHashLB_HttpCookie) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.HttpCookie != nil { @@ -2139,12 +2681,18 @@ func (m *LoadBalancerSettings_ConsistentHashLB_HttpCookie) Size() (n int) { return n } func (m *LoadBalancerSettings_ConsistentHashLB_UseSourceIp) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l n += 2 return n } func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Name) @@ -2156,13 +2704,19 @@ func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) Size() (n int) { n += 1 + l + sovDestinationRule(uint64(l)) } if m.Ttl != nil { - l = types.SizeOfStdDuration(*m.Ttl) + l = github_com_gogo_protobuf_types.SizeOfStdDuration(*m.Ttl) n += 1 + l + sovDestinationRule(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *ConnectionPoolSettings) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Tcp != nil { @@ -2173,10 +2727,16 @@ func (m *ConnectionPoolSettings) Size() (n int) { l = m.Http.Size() n += 1 + l + sovDestinationRule(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *ConnectionPoolSettings_TCPSettings) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.MaxConnections != 0 { @@ -2190,10 +2750,16 @@ func (m *ConnectionPoolSettings_TCPSettings) Size() (n int) { l = m.TcpKeepalive.Size() n += 1 + l + sovDestinationRule(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Probes != 0 { @@ -2207,10 +2773,16 @@ func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) Size() (n int) { l = m.Interval.Size() n += 1 + l + sovDestinationRule(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *ConnectionPoolSettings_HTTPSettings) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Http1MaxPendingRequests != 0 { @@ -2225,10 +2797,16 @@ func (m *ConnectionPoolSettings_HTTPSettings) Size() (n int) { if m.MaxRetries != 0 { n += 1 + sovDestinationRule(uint64(m.MaxRetries)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *OutlierDetection) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.ConsecutiveErrors != 0 { @@ -2248,10 +2826,16 @@ func (m *OutlierDetection) Size() (n int) { if m.MinHealthPercent != 0 { n += 1 + sovDestinationRule(uint64(m.MinHealthPercent)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *TLSSettings) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Mode != 0 { @@ -2279,6 +2863,9 @@ func (m *TLSSettings) Size() (n int) { if l > 0 { n += 1 + l + sovDestinationRule(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -2310,7 +2897,7 @@ func (m *DestinationRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2338,7 +2925,7 @@ func (m *DestinationRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2348,6 +2935,9 @@ func (m *DestinationRule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2367,7 +2957,7 @@ func (m *DestinationRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2376,6 +2966,9 @@ func (m *DestinationRule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2400,7 +2993,7 @@ func (m *DestinationRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2409,6 +3002,9 @@ func (m *DestinationRule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2431,7 +3027,7 @@ func (m *DestinationRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2441,6 +3037,9 @@ func (m *DestinationRule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2455,9 +3054,13 @@ func (m *DestinationRule) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthDestinationRule } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthDestinationRule + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -2482,7 +3085,7 @@ func (m *TrafficPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2510,7 +3113,7 @@ func (m *TrafficPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2519,6 +3122,9 @@ func (m *TrafficPolicy) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2543,7 +3149,7 @@ func (m *TrafficPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2552,6 +3158,9 @@ func (m *TrafficPolicy) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2576,7 +3185,7 @@ func (m *TrafficPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2585,6 +3194,9 @@ func (m *TrafficPolicy) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2609,7 +3221,7 @@ func (m *TrafficPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2618,6 +3230,9 @@ func (m *TrafficPolicy) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2642,7 +3257,7 @@ func (m *TrafficPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2651,6 +3266,9 @@ func (m *TrafficPolicy) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2668,9 +3286,13 @@ func (m *TrafficPolicy) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthDestinationRule } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthDestinationRule + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -2695,7 +3317,7 @@ func (m *TrafficPolicy_PortTrafficPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2723,7 +3345,7 @@ func (m *TrafficPolicy_PortTrafficPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2732,6 +3354,9 @@ func (m *TrafficPolicy_PortTrafficPolicy) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2756,7 +3381,7 @@ func (m *TrafficPolicy_PortTrafficPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2765,6 +3390,9 @@ func (m *TrafficPolicy_PortTrafficPolicy) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2789,7 +3417,7 @@ func (m *TrafficPolicy_PortTrafficPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2798,6 +3426,9 @@ func (m *TrafficPolicy_PortTrafficPolicy) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2822,7 +3453,7 @@ func (m *TrafficPolicy_PortTrafficPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2831,6 +3462,9 @@ func (m *TrafficPolicy_PortTrafficPolicy) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2855,7 +3489,7 @@ func (m *TrafficPolicy_PortTrafficPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2864,6 +3498,9 @@ func (m *TrafficPolicy_PortTrafficPolicy) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2883,9 +3520,13 @@ func (m *TrafficPolicy_PortTrafficPolicy) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthDestinationRule } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthDestinationRule + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -2910,7 +3551,7 @@ func (m *Subset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2938,7 +3579,7 @@ func (m *Subset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2948,6 +3589,9 @@ func (m *Subset) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2967,7 +3611,7 @@ func (m *Subset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2976,6 +3620,9 @@ func (m *Subset) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2996,7 +3643,7 @@ func (m *Subset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3013,7 +3660,7 @@ func (m *Subset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3023,6 +3670,9 @@ func (m *Subset) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthDestinationRule + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -3039,7 +3689,7 @@ func (m *Subset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3049,6 +3699,9 @@ func (m *Subset) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthDestinationRule + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -3085,7 +3738,7 @@ func (m *Subset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -3094,6 +3747,9 @@ func (m *Subset) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3113,9 +3769,13 @@ func (m *Subset) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthDestinationRule } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthDestinationRule + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -3140,7 +3800,7 @@ func (m *LoadBalancerSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3168,7 +3828,7 @@ func (m *LoadBalancerSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (LoadBalancerSettings_SimpleLB(b) & 0x7F) << shift + v |= LoadBalancerSettings_SimpleLB(b&0x7F) << shift if b < 0x80 { break } @@ -3188,7 +3848,7 @@ func (m *LoadBalancerSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -3197,6 +3857,9 @@ func (m *LoadBalancerSettings) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3215,9 +3878,13 @@ func (m *LoadBalancerSettings) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthDestinationRule } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthDestinationRule + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -3242,7 +3909,7 @@ func (m *LoadBalancerSettings_ConsistentHashLB) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3270,7 +3937,7 @@ func (m *LoadBalancerSettings_ConsistentHashLB) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3280,6 +3947,9 @@ func (m *LoadBalancerSettings_ConsistentHashLB) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3299,7 +3969,7 @@ func (m *LoadBalancerSettings_ConsistentHashLB) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -3308,6 +3978,9 @@ func (m *LoadBalancerSettings_ConsistentHashLB) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3331,7 +4004,7 @@ func (m *LoadBalancerSettings_ConsistentHashLB) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -3352,7 +4025,7 @@ func (m *LoadBalancerSettings_ConsistentHashLB) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.MinimumRingSize |= (uint64(b) & 0x7F) << shift + m.MinimumRingSize |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3366,9 +4039,13 @@ func (m *LoadBalancerSettings_ConsistentHashLB) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthDestinationRule } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthDestinationRule + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -3393,7 +4070,7 @@ func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) Unmarshal(dAtA []byte } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3421,7 +4098,7 @@ func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) Unmarshal(dAtA []byte } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3431,6 +4108,9 @@ func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) Unmarshal(dAtA []byte return ErrInvalidLengthDestinationRule } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3450,7 +4130,7 @@ func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) Unmarshal(dAtA []byte } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3460,6 +4140,9 @@ func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) Unmarshal(dAtA []byte return ErrInvalidLengthDestinationRule } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3479,7 +4162,7 @@ func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) Unmarshal(dAtA []byte } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -3488,13 +4171,16 @@ func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) Unmarshal(dAtA []byte return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } if m.Ttl == nil { m.Ttl = new(time.Duration) } - if err := types.StdDurationUnmarshal(m.Ttl, dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_gogo_protobuf_types.StdDurationUnmarshal(m.Ttl, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -3507,9 +4193,13 @@ func (m *LoadBalancerSettings_ConsistentHashLB_HTTPCookie) Unmarshal(dAtA []byte if skippy < 0 { return ErrInvalidLengthDestinationRule } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthDestinationRule + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -3534,7 +4224,7 @@ func (m *ConnectionPoolSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3562,7 +4252,7 @@ func (m *ConnectionPoolSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -3571,6 +4261,9 @@ func (m *ConnectionPoolSettings) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3595,7 +4288,7 @@ func (m *ConnectionPoolSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -3604,6 +4297,9 @@ func (m *ConnectionPoolSettings) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3623,9 +4319,13 @@ func (m *ConnectionPoolSettings) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthDestinationRule } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthDestinationRule + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -3650,7 +4350,7 @@ func (m *ConnectionPoolSettings_TCPSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3678,7 +4378,7 @@ func (m *ConnectionPoolSettings_TCPSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.MaxConnections |= (int32(b) & 0x7F) << shift + m.MaxConnections |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -3697,7 +4397,7 @@ func (m *ConnectionPoolSettings_TCPSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -3706,11 +4406,14 @@ func (m *ConnectionPoolSettings_TCPSettings) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } if m.ConnectTimeout == nil { - m.ConnectTimeout = &google_protobuf.Duration{} + m.ConnectTimeout = &types.Duration{} } if err := m.ConnectTimeout.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -3730,7 +4433,7 @@ func (m *ConnectionPoolSettings_TCPSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -3739,6 +4442,9 @@ func (m *ConnectionPoolSettings_TCPSettings) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3758,9 +4464,13 @@ func (m *ConnectionPoolSettings_TCPSettings) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthDestinationRule } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthDestinationRule + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -3785,7 +4495,7 @@ func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) Unmarshal(dAtA []byte) } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3813,7 +4523,7 @@ func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) Unmarshal(dAtA []byte) } b := dAtA[iNdEx] iNdEx++ - m.Probes |= (uint32(b) & 0x7F) << shift + m.Probes |= uint32(b&0x7F) << shift if b < 0x80 { break } @@ -3832,7 +4542,7 @@ func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) Unmarshal(dAtA []byte) } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -3841,11 +4551,14 @@ func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) Unmarshal(dAtA []byte) return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } if m.Time == nil { - m.Time = &google_protobuf.Duration{} + m.Time = &types.Duration{} } if err := m.Time.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -3865,7 +4578,7 @@ func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) Unmarshal(dAtA []byte) } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -3874,11 +4587,14 @@ func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) Unmarshal(dAtA []byte) return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } if m.Interval == nil { - m.Interval = &google_protobuf.Duration{} + m.Interval = &types.Duration{} } if err := m.Interval.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -3893,9 +4609,13 @@ func (m *ConnectionPoolSettings_TCPSettings_TcpKeepalive) Unmarshal(dAtA []byte) if skippy < 0 { return ErrInvalidLengthDestinationRule } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthDestinationRule + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -3920,7 +4640,7 @@ func (m *ConnectionPoolSettings_HTTPSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3948,7 +4668,7 @@ func (m *ConnectionPoolSettings_HTTPSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Http1MaxPendingRequests |= (int32(b) & 0x7F) << shift + m.Http1MaxPendingRequests |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -3967,7 +4687,7 @@ func (m *ConnectionPoolSettings_HTTPSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Http2MaxRequests |= (int32(b) & 0x7F) << shift + m.Http2MaxRequests |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -3986,7 +4706,7 @@ func (m *ConnectionPoolSettings_HTTPSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.MaxRequestsPerConnection |= (int32(b) & 0x7F) << shift + m.MaxRequestsPerConnection |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -4005,7 +4725,7 @@ func (m *ConnectionPoolSettings_HTTPSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.MaxRetries |= (int32(b) & 0x7F) << shift + m.MaxRetries |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -4019,9 +4739,13 @@ func (m *ConnectionPoolSettings_HTTPSettings) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthDestinationRule } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthDestinationRule + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -4046,7 +4770,7 @@ func (m *OutlierDetection) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4074,7 +4798,7 @@ func (m *OutlierDetection) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ConsecutiveErrors |= (int32(b) & 0x7F) << shift + m.ConsecutiveErrors |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -4093,7 +4817,7 @@ func (m *OutlierDetection) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4102,11 +4826,14 @@ func (m *OutlierDetection) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } if m.Interval == nil { - m.Interval = &google_protobuf.Duration{} + m.Interval = &types.Duration{} } if err := m.Interval.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -4126,7 +4853,7 @@ func (m *OutlierDetection) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4135,11 +4862,14 @@ func (m *OutlierDetection) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } if m.BaseEjectionTime == nil { - m.BaseEjectionTime = &google_protobuf.Duration{} + m.BaseEjectionTime = &types.Duration{} } if err := m.BaseEjectionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -4159,7 +4889,7 @@ func (m *OutlierDetection) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.MaxEjectionPercent |= (int32(b) & 0x7F) << shift + m.MaxEjectionPercent |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -4178,7 +4908,7 @@ func (m *OutlierDetection) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.MinHealthPercent |= (int32(b) & 0x7F) << shift + m.MinHealthPercent |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -4192,9 +4922,13 @@ func (m *OutlierDetection) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthDestinationRule } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthDestinationRule + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -4219,7 +4953,7 @@ func (m *TLSSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4247,7 +4981,7 @@ func (m *TLSSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Mode |= (TLSSettings_TLSmode(b) & 0x7F) << shift + m.Mode |= TLSSettings_TLSmode(b&0x7F) << shift if b < 0x80 { break } @@ -4266,7 +5000,7 @@ func (m *TLSSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4276,6 +5010,9 @@ func (m *TLSSettings) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4295,7 +5032,7 @@ func (m *TLSSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4305,6 +5042,9 @@ func (m *TLSSettings) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4324,7 +5064,7 @@ func (m *TLSSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4334,6 +5074,9 @@ func (m *TLSSettings) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4353,7 +5096,7 @@ func (m *TLSSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4363,6 +5106,9 @@ func (m *TLSSettings) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4382,7 +5128,7 @@ func (m *TLSSettings) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4392,6 +5138,9 @@ func (m *TLSSettings) Unmarshal(dAtA []byte) error { return ErrInvalidLengthDestinationRule } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDestinationRule + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4406,9 +5155,13 @@ func (m *TLSSettings) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthDestinationRule } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthDestinationRule + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -4472,10 +5225,13 @@ func skipDestinationRule(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthDestinationRule } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthDestinationRule + } return iNdEx, nil case 3: for { @@ -4504,6 +5260,9 @@ func skipDestinationRule(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthDestinationRule + } } return iNdEx, nil case 4: @@ -4522,99 +5281,3 @@ var ( ErrInvalidLengthDestinationRule = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowDestinationRule = fmt.Errorf("proto: integer overflow") ) - -func init() { - proto.RegisterFile("networking/v1alpha3/destination_rule.proto", fileDescriptorDestinationRule) -} - -var fileDescriptorDestinationRule = []byte{ - // 1396 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xcf, 0x6e, 0x1b, 0xb7, - 0x13, 0xb6, 0xfe, 0xc6, 0x1a, 0xd9, 0xb2, 0xcc, 0x9f, 0x91, 0x9f, 0xa2, 0x00, 0x8e, 0x2b, 0x14, - 0x8d, 0x9b, 0x36, 0xab, 0xda, 0x41, 0x81, 0x34, 0x41, 0x8a, 0x58, 0xb6, 0x10, 0xb9, 0x91, 0x2d, - 0x81, 0x92, 0x81, 0x22, 0x97, 0x05, 0xb5, 0xa2, 0x25, 0xc6, 0xab, 0xe5, 0x76, 0xc9, 0x55, 0xed, - 0x3c, 0x43, 0xcf, 0x41, 0xaf, 0xbd, 0xf4, 0x59, 0x8a, 0x9e, 0x72, 0x6d, 0x2f, 0x2d, 0xf2, 0x02, - 0x3d, 0xf5, 0xd2, 0x53, 0x41, 0x2e, 0x57, 0x92, 0x13, 0xc7, 0x8e, 0xe1, 0xe6, 0xc6, 0xe5, 0xcc, - 0xf7, 0x91, 0x9c, 0x6f, 0x38, 0xc3, 0x85, 0x3b, 0x1e, 0x95, 0xdf, 0xf3, 0xe0, 0x88, 0x79, 0x83, - 0xea, 0x78, 0x83, 0xb8, 0xfe, 0x90, 0xdc, 0xab, 0xf6, 0xa9, 0x90, 0xcc, 0x23, 0x92, 0x71, 0xcf, - 0x0e, 0x42, 0x97, 0x5a, 0x7e, 0xc0, 0x25, 0x47, 0x37, 0x98, 0x90, 0x8c, 0x5b, 0x53, 0x84, 0x15, - 0x23, 0xca, 0xab, 0x03, 0xce, 0x07, 0x2e, 0xad, 0x6a, 0xc7, 0x5e, 0x78, 0x58, 0xed, 0x87, 0x81, - 0xc6, 0x47, 0xd0, 0xf2, 0xa7, 0x67, 0x2d, 0x33, 0x66, 0x81, 0x0c, 0x89, 0x6b, 0x0b, 0x1a, 0x8c, - 0x99, 0x63, 0x56, 0x29, 0xaf, 0x0c, 0xf8, 0x80, 0xeb, 0x61, 0x55, 0x8d, 0xa2, 0xd9, 0xca, 0xab, - 0x04, 0x2c, 0xed, 0x4c, 0xb7, 0x85, 0x43, 0x97, 0x22, 0x04, 0xe9, 0x21, 0x17, 0xb2, 0x94, 0x58, - 0x4b, 0xac, 0xe7, 0xb0, 0x1e, 0xa3, 0x16, 0x14, 0x64, 0x40, 0x0e, 0x0f, 0x99, 0x63, 0xfb, 0xdc, - 0x65, 0xce, 0x49, 0x29, 0xb9, 0x96, 0x58, 0xcf, 0x6f, 0xae, 0x5b, 0xef, 0xdc, 0xbc, 0xd5, 0x8d, - 0x00, 0x6d, 0xed, 0x8f, 0x17, 0xe5, 0xec, 0x27, 0x7a, 0x08, 0xd7, 0x44, 0xd8, 0x13, 0x54, 0x8a, - 0x52, 0x6a, 0x2d, 0xb5, 0x9e, 0xdf, 0xfc, 0xe8, 0x1c, 0xa6, 0x8e, 0xf6, 0xc4, 0x31, 0x02, 0xdd, - 0x84, 0x1c, 0x3d, 0xf6, 0x79, 0x20, 0x6d, 0xc9, 0x4b, 0xe9, 0xb5, 0xd4, 0x7a, 0x0e, 0xcf, 0x47, - 0x13, 0x5d, 0x5e, 0xf9, 0x3d, 0x0b, 0x8b, 0xa7, 0x96, 0x46, 0x5d, 0x58, 0x74, 0x39, 0xe9, 0xdb, - 0x3d, 0xe2, 0x12, 0xcf, 0xa1, 0x81, 0x3e, 0x59, 0x7e, 0xb3, 0x7a, 0xce, 0x8a, 0x4d, 0x4e, 0xfa, - 0x35, 0xe3, 0xde, 0xa1, 0x52, 0x32, 0x6f, 0x20, 0xf0, 0x82, 0x3b, 0x33, 0x8b, 0x9e, 0xc1, 0x92, - 0xc3, 0x3d, 0x8f, 0x3a, 0x5a, 0x4f, 0x9f, 0x73, 0xd7, 0xc4, 0x64, 0xe3, 0x1c, 0xde, 0xed, 0x09, - 0xa2, 0xcd, 0xb9, 0x3b, 0x61, 0x2e, 0x38, 0xa7, 0xe6, 0xd1, 0xb7, 0xb0, 0xcc, 0x43, 0xe9, 0x32, - 0x1a, 0xd8, 0x7d, 0x2a, 0x23, 0x43, 0x29, 0xa5, 0xd9, 0x3f, 0x3b, 0x87, 0xbd, 0x15, 0x61, 0x76, - 0x62, 0x08, 0x2e, 0xf2, 0x37, 0x66, 0xd0, 0x7d, 0x48, 0x49, 0x57, 0x94, 0xd2, 0x9a, 0xeb, 0x93, - 0xf3, 0xd4, 0x6b, 0x76, 0x26, 0xdb, 0x53, 0x10, 0xf4, 0x1c, 0xfe, 0xa7, 0x43, 0xee, 0xd2, 0x31, - 0x55, 0xc9, 0x15, 0xd9, 0x4a, 0x19, 0xad, 0xde, 0x83, 0xf7, 0xcd, 0x03, 0xab, 0xad, 0x54, 0x3a, - 0x95, 0x19, 0xcb, 0x8a, 0xb6, 0xa9, 0x58, 0xe3, 0x05, 0xcb, 0x2f, 0x53, 0xb0, 0xfc, 0x96, 0x23, - 0x7a, 0x08, 0x69, 0xe5, 0x6a, 0xe4, 0xbb, 0x7d, 0xce, 0x92, 0x0a, 0xdb, 0xa1, 0x2e, 0x75, 0x24, - 0x0f, 0xb0, 0x06, 0xbd, 0x9d, 0x04, 0xc9, 0x0f, 0x94, 0x04, 0xa9, 0x0f, 0x9a, 0x04, 0xe9, 0xff, - 0x30, 0x09, 0x32, 0x97, 0x4e, 0x82, 0xca, 0x5f, 0x09, 0xc8, 0x46, 0xb7, 0x51, 0x95, 0x09, 0x8f, - 0x8c, 0x68, 0x5c, 0x26, 0xd4, 0x18, 0xd5, 0x21, 0xeb, 0x92, 0x1e, 0x75, 0x45, 0x29, 0xa9, 0xd3, - 0xe2, 0xee, 0x85, 0x97, 0xda, 0x6a, 0x6a, 0xff, 0xba, 0x27, 0x83, 0x13, 0x6c, 0xc0, 0x67, 0x54, - 0x9b, 0xd4, 0x95, 0xaa, 0x4d, 0xf9, 0x2b, 0xc8, 0xcf, 0xac, 0x83, 0x8a, 0x90, 0x3a, 0xa2, 0x27, - 0x66, 0xe7, 0x6a, 0x88, 0x56, 0x20, 0x33, 0x26, 0x6e, 0x48, 0x75, 0x56, 0xe4, 0x70, 0xf4, 0xf1, - 0x20, 0x79, 0x3f, 0x51, 0xf9, 0x39, 0x03, 0x2b, 0x67, 0x25, 0x02, 0xc2, 0x90, 0x15, 0x6c, 0xe4, - 0xbb, 0x51, 0x04, 0x0a, 0x9b, 0xf7, 0x2f, 0x99, 0x49, 0x56, 0x47, 0xa3, 0x9b, 0xb5, 0xc6, 0x1c, - 0x36, 0x4c, 0xe8, 0x48, 0xa7, 0x93, 0x60, 0x42, 0x52, 0x4f, 0xda, 0x43, 0x22, 0x86, 0x26, 0x4d, - 0x1f, 0x5f, 0x96, 0x7c, 0x7b, 0x42, 0xd3, 0x20, 0x62, 0xa8, 0x17, 0x29, 0x38, 0xa7, 0xe6, 0xca, - 0x7f, 0x27, 0xa1, 0xf8, 0xa6, 0x1b, 0xba, 0x03, 0xc5, 0xa1, 0x94, 0xbe, 0x3d, 0xa4, 0xa4, 0x4f, - 0x03, 0x7b, 0xaa, 0xb0, 0x22, 0x50, 0x96, 0x86, 0x36, 0xec, 0x2b, 0xb5, 0x3d, 0xc8, 0x6b, 0x5f, - 0x87, 0xf3, 0x23, 0x46, 0xcd, 0x4e, 0x9f, 0x5e, 0x75, 0xa7, 0x56, 0xa3, 0xdb, 0x6d, 0x6f, 0x6b, - 0xca, 0xc6, 0x1c, 0x06, 0xb5, 0x42, 0xf4, 0x85, 0x3e, 0x86, 0xc5, 0x50, 0x50, 0x5b, 0xf0, 0x30, - 0x70, 0xa8, 0xcd, 0x7c, 0x9d, 0x15, 0xf3, 0x8d, 0x39, 0x9c, 0x0f, 0x05, 0xed, 0xe8, 0xd9, 0x5d, - 0x1f, 0xdd, 0x81, 0xe5, 0x11, 0xf3, 0xd8, 0x28, 0x1c, 0xd9, 0x01, 0xf3, 0x06, 0xb6, 0x60, 0x2f, - 0xa8, 0xbe, 0x36, 0x69, 0xbc, 0x64, 0x0c, 0x98, 0x79, 0x83, 0x0e, 0x7b, 0x41, 0xcb, 0x03, 0x80, - 0xe9, 0x6a, 0x67, 0x66, 0x34, 0x82, 0xb4, 0x4f, 0xe4, 0xd0, 0xe4, 0x85, 0x1e, 0xa3, 0x0d, 0x48, - 0x49, 0x19, 0x5f, 0xf4, 0x1b, 0x56, 0xd4, 0xa3, 0xad, 0xb8, 0x47, 0x5b, 0x3b, 0xa6, 0x47, 0xd7, - 0xd2, 0x3f, 0xfe, 0x71, 0x2b, 0x81, 0x95, 0x6f, 0x0d, 0x60, 0x5e, 0xa9, 0x69, 0x1f, 0xd1, 0x93, - 0x4a, 0x03, 0xe6, 0x63, 0xe9, 0xd1, 0x12, 0xe4, 0x71, 0xeb, 0x60, 0x7f, 0xc7, 0xc6, 0xad, 0xda, - 0xee, 0x7e, 0x71, 0x0e, 0x15, 0x00, 0x9a, 0xf5, 0xad, 0x4e, 0xd7, 0xde, 0x6e, 0xed, 0xef, 0x17, - 0x13, 0x08, 0x20, 0x8b, 0xb7, 0xf6, 0x77, 0x5a, 0x7b, 0xc5, 0xa4, 0x72, 0x6e, 0x6f, 0x75, 0x3a, - 0xdd, 0x06, 0x6e, 0x1d, 0x3c, 0x69, 0x14, 0x53, 0xb5, 0x3c, 0xe4, 0xdc, 0x9e, 0xb9, 0x22, 0x95, - 0x97, 0x59, 0xb8, 0x7e, 0x76, 0x65, 0x41, 0x2d, 0x48, 0x49, 0xc7, 0x37, 0x75, 0xf3, 0xd1, 0xa5, - 0x2b, 0x93, 0xd5, 0xdd, 0x6e, 0xcf, 0x94, 0x01, 0xc7, 0x47, 0x18, 0xd2, 0x4a, 0x17, 0x23, 0xf9, - 0xd7, 0x97, 0x67, 0x54, 0x51, 0x9f, 0x50, 0x6a, 0xae, 0xf2, 0x3f, 0x49, 0xc8, 0xcf, 0x2c, 0x84, - 0x6e, 0xc3, 0xd2, 0x88, 0x1c, 0xdb, 0xd3, 0xa2, 0x28, 0xf4, 0x01, 0x32, 0xb8, 0x30, 0x22, 0xc7, - 0x53, 0x5a, 0x81, 0x6a, 0x93, 0x1a, 0x6c, 0x4b, 0x36, 0xa2, 0x3c, 0x94, 0x66, 0x5f, 0xef, 0x96, - 0x66, 0x52, 0x6b, 0xbb, 0x11, 0x00, 0x71, 0x58, 0x94, 0x8e, 0x6f, 0x1f, 0x51, 0xea, 0x13, 0x97, - 0x8d, 0xa9, 0x11, 0xf7, 0x9b, 0x2b, 0xc5, 0xca, 0xea, 0x3a, 0xfe, 0xd3, 0x98, 0x11, 0x2f, 0xc8, - 0x99, 0xaf, 0xf2, 0x0f, 0x09, 0x58, 0x98, 0x35, 0xa3, 0xeb, 0x90, 0xf5, 0x03, 0xde, 0xa3, 0xd1, - 0x29, 0x17, 0xb1, 0xf9, 0x42, 0x77, 0x21, 0xad, 0x4e, 0x75, 0xf1, 0x91, 0xb4, 0x1b, 0xfa, 0x12, - 0xe6, 0x99, 0x27, 0x69, 0x30, 0x26, 0x17, 0x27, 0x28, 0x9e, 0xb8, 0x96, 0x7f, 0x4b, 0xc0, 0xc2, - 0xac, 0x26, 0xe8, 0x21, 0x94, 0x95, 0x2a, 0x1b, 0xb6, 0xd2, 0xc0, 0xa7, 0x5e, 0x5f, 0x5d, 0xa5, - 0x80, 0x7e, 0x17, 0x52, 0x21, 0x63, 0x21, 0xfe, 0xaf, 0x3d, 0xf6, 0xc8, 0x71, 0x3b, 0xb2, 0x63, - 0x63, 0x46, 0x9f, 0x03, 0x52, 0xa6, 0x4d, 0x0d, 0x9e, 0x80, 0x92, 0x1a, 0xa4, 0xcb, 0xcb, 0xe6, - 0x1e, 0x39, 0x9e, 0x78, 0x3f, 0x82, 0x9b, 0xb3, 0x7e, 0xb6, 0x4f, 0x83, 0x19, 0xd5, 0xf5, 0x29, - 0x32, 0xb8, 0x34, 0x9a, 0x22, 0xda, 0x34, 0x98, 0x06, 0x1f, 0xdd, 0x82, 0x7c, 0x04, 0x97, 0x01, - 0xa3, 0xd1, 0xcb, 0x26, 0x83, 0x41, 0xbb, 0xeb, 0x99, 0xca, 0x4f, 0x49, 0x28, 0xbe, 0xd9, 0x14, - 0xd1, 0x5d, 0x40, 0xaa, 0x1c, 0x52, 0x27, 0x94, 0x6c, 0x4c, 0x6d, 0x1a, 0x04, 0x3c, 0x88, 0xcf, - 0xb5, 0x3c, 0x63, 0xa9, 0x6b, 0xc3, 0xa9, 0xb0, 0x26, 0xdf, 0x3b, 0xac, 0xe8, 0x09, 0xa0, 0x1e, - 0x11, 0xd4, 0xa6, 0xcf, 0xcd, 0x0b, 0x41, 0x4b, 0x79, 0xa1, 0x2e, 0x45, 0x05, 0xaa, 0x1b, 0x8c, - 0x4a, 0x51, 0xf4, 0x05, 0xac, 0xa8, 0x43, 0x4e, 0x78, 0x7c, 0x1a, 0x38, 0xd4, 0x93, 0xe6, 0xb4, - 0x68, 0x44, 0x8e, 0x63, 0xf7, 0x76, 0x64, 0x51, 0x1a, 0x8c, 0x98, 0xa7, 0xea, 0xb8, 0x2b, 0x87, - 0x13, 0xff, 0x4c, 0xa4, 0xc1, 0x88, 0x79, 0x0d, 0x6d, 0x30, 0xde, 0x95, 0x5f, 0xd5, 0xe5, 0x9b, - 0x36, 0x7b, 0x54, 0x83, 0xf4, 0x88, 0xf7, 0xe3, 0xd6, 0x66, 0xbd, 0xdf, 0x13, 0x41, 0x8d, 0x15, - 0x0a, 0x6b, 0xac, 0x0e, 0xb1, 0xcb, 0x54, 0x23, 0x73, 0x68, 0x20, 0xd9, 0x21, 0x73, 0x88, 0x8c, - 0x1b, 0xec, 0x72, 0x64, 0xd9, 0x9e, 0x1a, 0x94, 0x8e, 0x7e, 0xc0, 0xc6, 0x44, 0x52, 0x55, 0x25, - 0x75, 0x90, 0x72, 0x18, 0xcc, 0xd4, 0x53, 0x7a, 0xa2, 0x0a, 0x82, 0x43, 0x66, 0xb9, 0x22, 0xb1, - 0x73, 0xb8, 0xe0, 0x90, 0x19, 0x22, 0xa1, 0x3a, 0x80, 0x08, 0x7b, 0x2a, 0x1e, 0x36, 0x71, 0xa5, - 0xee, 0x61, 0xd1, 0x3b, 0x35, 0x87, 0x97, 0x8c, 0x61, 0xcb, 0x95, 0xaa, 0x85, 0x09, 0xf5, 0x14, - 0x10, 0x1e, 0x2b, 0x65, 0xa3, 0xa7, 0x80, 0xf0, 0x58, 0xe5, 0x31, 0x5c, 0x33, 0xe7, 0x40, 0x79, - 0xb8, 0xb6, 0xb3, 0xdb, 0xd9, 0xaa, 0x35, 0xeb, 0xc5, 0x39, 0x55, 0x89, 0x3b, 0xbb, 0x7b, 0xed, - 0x66, 0x3d, 0xaa, 0xca, 0x7b, 0x07, 0xdd, 0x83, 0xad, 0x66, 0x31, 0x89, 0x8a, 0xb0, 0xb0, 0xdb, - 0xe9, 0xee, 0xb6, 0x6c, 0x33, 0x93, 0xaa, 0x59, 0xbf, 0xbc, 0x5e, 0x4d, 0xbc, 0x7a, 0xbd, 0x9a, - 0xf8, 0xf3, 0xf5, 0x6a, 0xe2, 0xd9, 0x5a, 0x14, 0x3b, 0xc6, 0xab, 0xc4, 0x67, 0xd5, 0x33, 0x7e, - 0xd8, 0x7a, 0x59, 0x9d, 0x01, 0xf7, 0xfe, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xfd, 0x7d, 0x30, 0x94, - 0x35, 0x0e, 0x00, 0x00, -} diff --git a/networking/v1alpha3/destination_rule.pb.html b/networking/v1alpha3/destination_rule.pb.html new file mode 100644 index 00000000000..badb8ec90b0 --- /dev/null +++ b/networking/v1alpha3/destination_rule.pb.html @@ -0,0 +1,1035 @@ +--- +title: Destination Rule +description: Configuration affecting load balancing, outlier detection, etc. +location: https://istio.io/docs/reference/config/networking/v1alpha3/destination-rule.html +layout: protoc-gen-docs +generator: protoc-gen-docs +number_of_entries: 15 +--- +

DestinationRule defines policies that apply to traffic intended for a +service after routing has occurred. These rules specify configuration +for load balancing, connection pool size from the sidecar, and outlier +detection settings to detect and evict unhealthy hosts from the load +balancing pool. For example, a simple load balancing policy for the +ratings service would look as follows:

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+  name: bookinfo-ratings
+spec:
+  host: ratings.prod.svc.cluster.local
+  trafficPolicy:
+    loadBalancer:
+      simple: LEAST_CONN
+
+ +

Version specific policies can be specified by defining a named +subset and overriding the settings specified at the service level. The +following rule uses a round robin load balancing policy for all traffic +going to a subset named testversion that is composed of endpoints (e.g., +pods) with labels (version:v3).

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+  name: bookinfo-ratings
+spec:
+  host: ratings.prod.svc.cluster.local
+  trafficPolicy:
+    loadBalancer:
+      simple: LEAST_CONN
+  subsets:
+  - name: testversion
+    labels:
+      version: v3
+    trafficPolicy:
+      loadBalancer:
+        simple: ROUND_ROBIN
+
+ +

Note: Policies specified for subsets will not take effect until +a route rule explicitly sends traffic to this subset.

+ +

Traffic policies can be customized to specific ports as well. The +following rule uses the least connection load balancing policy for all +traffic to port 80, while uses a round robin load balancing setting for +traffic to the port 9080.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+  name: bookinfo-ratings-port
+spec:
+  host: ratings.prod.svc.cluster.local
+  trafficPolicy: # Apply to all ports
+    portLevelSettings:
+    - port:
+        number: 80
+      loadBalancer:
+        simple: LEAST_CONN
+    - port:
+        number: 9080
+      loadBalancer:
+        simple: ROUND_ROBIN
+
+ +

ConnectionPoolSettings

+
+

Connection pool settings for an upstream host. The settings apply to +each individual host in the upstream service. See Envoy’s circuit +breaker +for more details. Connection pool settings can be applied at the TCP +level as well as at HTTP level.

+ +

For example, the following rule sets a limit of 100 connections to redis +service called myredissrv with a connect timeout of 30ms

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+  name: bookinfo-redis
+spec:
+  host: myredissrv.prod.svc.cluster.local
+  trafficPolicy:
+    connectionPool:
+      tcp:
+        maxConnections: 100
+        connectTimeout: 30ms
+        tcpKeepalive:
+          time: 7200s
+          interval: 75s
+
+ + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
tcpConnectionPoolSettings.TCPSettings +

Settings common to both HTTP and TCP upstream connections.

+ +
httpConnectionPoolSettings.HTTPSettings +

HTTP connection pool settings.

+ +
+
+

ConnectionPoolSettings.HTTPSettings

+
+

Settings applicable to HTTP1.1/HTTP2/GRPC connections.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
http1MaxPendingRequestsint32 +

Maximum number of pending HTTP requests to a destination. Default 1024.

+ +
http2MaxRequestsint32 +

Maximum number of requests to a backend. Default 1024.

+ +
maxRequestsPerConnectionint32 +

Maximum number of requests per connection to a backend. Setting this +parameter to 1 disables keep alive.

+ +
maxRetriesint32 +

Maximum number of retries that can be outstanding to all hosts in a +cluster at a given time. Defaults to 3.

+ +
+
+

ConnectionPoolSettings.TCPSettings

+
+

Settings common to both HTTP and TCP upstream connections.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
maxConnectionsint32 +

Maximum number of HTTP1 /TCP connections to a destination host.

+ +
connectTimeoutgoogle.protobuf.Duration +

TCP connection timeout.

+ +
tcpKeepaliveConnectionPoolSettings.TCPSettings.TcpKeepalive +

If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.

+ +
+
+

ConnectionPoolSettings.TCPSettings.TcpKeepalive

+
+

TCP keepalive.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
probesuint32 +

Maximum number of keepalive probes to send without response before +deciding the connection is dead. Default is to use the OS level configuration +(unless overridden, Linux defaults to 9.)

+ +
timegoogle.protobuf.Duration +

The time duration a connection needs to be idle before keep-alive +probes start being sent. Default is to use the OS level configuration +(unless overridden, Linux defaults to 7200s (ie 2 hours.)

+ +
intervalgoogle.protobuf.Duration +

The time duration between keep-alive probes. +Default is to use the OS level configuration +(unless overridden, Linux defaults to 75s.)

+ +
+
+

DestinationRule

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
hoststring +

REQUIRED. The name of a service from the service registry. Service +names are looked up from the platform’s service registry (e.g., +Kubernetes services, Consul services, etc.) and from the hosts +declared by ServiceEntries. Rules defined for +services that do not exist in the service registry will be ignored.

+ +

Note for Kubernetes users: When short names are used (e.g. “reviews” +instead of “reviews.default.svc.cluster.local”), Istio will interpret +the short name based on the namespace of the rule, not the service. A +rule in the “default” namespace containing a host “reviews will be +interpreted as “reviews.default.svc.cluster.local”, irrespective of +the actual namespace associated with the reviews service. To avoid +potential misconfigurations, it is recommended to always use fully +qualified domain names over short names.

+ +

Note that the host field applies to both HTTP and TCP services.

+ +
trafficPolicyTrafficPolicy +

Traffic policies to apply (load balancing policy, connection pool +sizes, outlier detection).

+ +
subsetsSubset[] +

One or more named sets that represent individual versions of a +service. Traffic policies can be overridden at subset level.

+ +
exportTostring[] +

A list of namespaces to which this destination rule is exported. +The resolution of a destination rule to apply to a service occurs in the +context of a hierarchy of namespaces. Exporting a destination rule allows +it to be included in the resolution hierarchy for services in +other namespaces. This feature provides a mechanism for service owners +and mesh administrators to control the visibility of destination rules +across namespace boundaries.

+ +

If no namespaces are specified then the destination rule is exported to all +namespaces by default.

+ +

The value “.” is reserved and defines an export to the same namespace that +the destination rule is declared in. Similarly, the value “*” is reserved and +defines an export to all namespaces.

+ +

NOTE: in the current release, the exportTo value is restricted to +“.” or “*” (i.e., the current namespace or all namespaces).

+ +
+
+

LoadBalancerSettings

+
+

Load balancing policies to apply for a specific destination. See Envoy’s +load balancing +documentation +for more details.

+ +

For example, the following rule uses a round robin load balancing policy +for all traffic going to the ratings service.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+  name: bookinfo-ratings
+spec:
+  host: ratings.prod.svc.cluster.local
+  trafficPolicy:
+    loadBalancer:
+      simple: ROUND_ROBIN
+
+ +

The following example sets up sticky sessions for the ratings service +hashing-based load balancer for the same ratings service using the +the User cookie as the hash key.

+ +
 apiVersion: networking.istio.io/v1alpha3
+ kind: DestinationRule
+ metadata:
+   name: bookinfo-ratings
+ spec:
+   host: ratings.prod.svc.cluster.local
+   trafficPolicy:
+     loadBalancer:
+       consistentHash:
+         httpCookie:
+           name: user
+           ttl: 0s
+
+ + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
simpleLoadBalancerSettings.SimpleLB (oneof) +
consistentHashLoadBalancerSettings.ConsistentHashLB (oneof) +
+
+

LoadBalancerSettings.ConsistentHashLB

+
+

Consistent Hash-based load balancing can be used to provide soft +session affinity based on HTTP headers, cookies or other +properties. This load balancing policy is applicable only for HTTP +connections. The affinity to a particular destination host will be +lost when one or more hosts are added/removed from the destination +service.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
httpHeaderNamestring (oneof) +

Hash based on a specific HTTP header.

+ +
useSourceIpbool (oneof) +

Hash based on the source IP address.

+ +
minimumRingSizeuint64 +

The minimum number of virtual nodes to use for the hash +ring. Defaults to 1024. Larger ring sizes result in more granular +load distributions. If the number of hosts in the load balancing +pool is larger than the ring size, each host will be assigned a +single virtual node.

+ +
+
+

LoadBalancerSettings.ConsistentHashLB.HTTPCookie

+
+

Describes a HTTP cookie that will be used as the hash key for the +Consistent Hash load balancer. If the cookie is not present, it will +be generated.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
namestring +

REQUIRED. Name of the cookie.

+ +
pathstring +

Path to set for the cookie.

+ +
ttlgoogle.protobuf.Duration +

REQUIRED. Lifetime of the cookie.

+ +
+
+

LoadBalancerSettings.SimpleLB

+
+

Standard load balancing algorithms that require no tuning.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescription
ROUND_ROBIN +

Round Robin policy. Default

+ +
LEAST_CONN +

The least request load balancer uses an O(1) algorithm which selects +two random healthy hosts and picks the host which has fewer active +requests.

+ +
RANDOM +

The random load balancer selects a random healthy host. The random +load balancer generally performs better than round robin if no health +checking policy is configured.

+ +
PASSTHROUGH +

This option will forward the connection to the original IP address +requested by the caller without doing any form of load +balancing. This option must be used with care. It is meant for +advanced use cases. Refer to Original Destination load balancer in +Envoy for further details.

+ +
+
+

OutlierDetection

+
+

A Circuit breaker implementation that tracks the status of each +individual host in the upstream service. Applicable to both HTTP and +TCP services. For HTTP services, hosts that continually return 5xx +errors for API calls are ejected from the pool for a pre-defined period +of time. For TCP services, connection timeouts or connection +failures to a given host counts as an error when measuring the +consecutive errors metric. See Envoy’s outlier +detection +for more details.

+ +

The following rule sets a connection pool size of 100 connections and +1000 concurrent HTTP2 requests, with no more than 10 req/connection to +“reviews” service. In addition, it configures upstream hosts to be +scanned every 5 mins, such that any host that fails 7 consecutive times +with 5XX error code will be ejected for 15 minutes.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+  name: reviews-cb-policy
+spec:
+  host: reviews.prod.svc.cluster.local
+  trafficPolicy:
+    connectionPool:
+      tcp:
+        maxConnections: 100
+      http:
+        http2MaxRequests: 1000
+        maxRequestsPerConnection: 10
+    outlierDetection:
+      consecutiveErrors: 7
+      interval: 5m
+      baseEjectionTime: 15m
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
consecutiveErrorsint32 +

Number of errors before a host is ejected from the connection +pool. Defaults to 5. When the upstream host is accessed over HTTP, a +502, 503 or 504 return code qualifies as an error. When the upstream host +is accessed over an opaque TCP connection, connect timeouts and +connection error/failure events qualify as an error.

+ +
intervalgoogle.protobuf.Duration +

Time interval between ejection sweep analysis. format: +1h/1m/1s/1ms. MUST BE >=1ms. Default is 10s.

+ +
baseEjectionTimegoogle.protobuf.Duration +

Minimum ejection duration. A host will remain ejected for a period +equal to the product of minimum ejection duration and the number of +times the host has been ejected. This technique allows the system to +automatically increase the ejection period for unhealthy upstream +servers. format: 1h/1m/1s/1ms. MUST BE >=1ms. Default is 30s.

+ +
maxEjectionPercentint32 +

Maximum % of hosts in the load balancing pool for the upstream +service that can be ejected. Defaults to 10%.

+ +
minHealthPercentint32 +

Outlier detection will be enabled as long as the associated load balancing +pool has at least minhealthpercent hosts in healthy mode. When the +percentage of healthy hosts in the load balancing pool drops below this +threshold, outlier detection will be disabled and the proxy will load balance +across all hosts in the pool (healthy and unhealthy). The default is 50%.

+ +
+
+

Subset

+
+

A subset of endpoints of a service. Subsets can be used for scenarios +like A/B testing, or routing to a specific version of a service. Refer +to VirtualService documentation for examples of using +subsets in these scenarios. In addition, traffic policies defined at the +service-level can be overridden at a subset-level. The following rule +uses a round robin load balancing policy for all traffic going to a +subset named testversion that is composed of endpoints (e.g., pods) with +labels (version:v3).

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+  name: bookinfo-ratings
+spec:
+  host: ratings.prod.svc.cluster.local
+  trafficPolicy:
+    loadBalancer:
+      simple: LEAST_CONN
+  subsets:
+  - name: testversion
+    labels:
+      version: v3
+    trafficPolicy:
+      loadBalancer:
+        simple: ROUND_ROBIN
+
+ +

Note: Policies specified for subsets will not take effect until +a route rule explicitly sends traffic to this subset.

+ +

One or more labels are typically required to identify the subset destination, +however, when the corresponding DestinationRule represents a host that +supports multiple SNI hosts (e.g., an egress gateway), a subset without labels +may be meaningful. In this case a traffic policy with TLSSettings +can be used to identify a specific SNI host corresponding to the named subset.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
namestring +

REQUIRED. Name of the subset. The service name and the subset name can +be used for traffic splitting in a route rule.

+ +
labelsmap<string, string> +

Labels apply a filter over the endpoints of a service in the +service registry. See route rules for examples of usage.

+ +
trafficPolicyTrafficPolicy +

Traffic policies that apply to this subset. Subsets inherit the +traffic policies specified at the DestinationRule level. Settings +specified at the subset level will override the corresponding settings +specified at the DestinationRule level.

+ +
+
+

TLSSettings

+
+

SSL/TLS related settings for upstream connections. See Envoy’s TLS +context +for more details. These settings are common to both HTTP and TCP upstreams.

+ +

For example, the following rule configures a client to use mutual TLS +for connections to upstream database cluster.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+  name: db-mtls
+spec:
+  host: mydbserver.prod.svc.cluster.local
+  trafficPolicy:
+    tls:
+      mode: MUTUAL
+      clientCertificate: /etc/certs/myclientcert.pem
+      privateKey: /etc/certs/client_private_key.pem
+      caCertificates: /etc/certs/rootcacerts.pem
+
+ +

The following rule configures a client to use TLS when talking to a +foreign service whose domain matches *.foo.com.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+  name: tls-foo
+spec:
+  host: "*.foo.com"
+  trafficPolicy:
+    tls:
+      mode: SIMPLE
+
+ +

The following rule configures a client to use Istio mutual TLS when talking +to rating services.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+  name: ratings-istio-mtls
+spec:
+  host: ratings.prod.svc.cluster.local
+  trafficPolicy:
+    tls:
+      mode: ISTIO_MUTUAL
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
modeTLSSettings.TLSmode +

REQUIRED: Indicates whether connections to this port should be secured +using TLS. The value of this field determines how TLS is enforced.

+ +
clientCertificatestring +

REQUIRED if mode is MUTUAL. The path to the file holding the +client-side TLS certificate to use. +Should be empty if mode is ISTIO_MUTUAL.

+ +
privateKeystring +

REQUIRED if mode is MUTUAL. The path to the file holding the +client’s private key. +Should be empty if mode is ISTIO_MUTUAL.

+ +
caCertificatesstring +

OPTIONAL: The path to the file containing certificate authority +certificates to use in verifying a presented server certificate. If +omitted, the proxy will not verify the server’s certificate. +Should be empty if mode is ISTIO_MUTUAL.

+ +
subjectAltNamesstring[] +

A list of alternate names to verify the subject identity in the +certificate. If specified, the proxy will verify that the server +certificate’s subject alt name matches one of the specified values. +If specified, this list overrides the value of subjectaltnames +from the ServiceEntry.

+ +
snistring +

SNI string to present to the server during TLS handshake.

+ +
+
+

TLSSettings.TLSmode

+
+

TLS connection mode

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescription
DISABLE +

Do not setup a TLS connection to the upstream endpoint.

+ +
SIMPLE +

Originate a TLS connection to the upstream endpoint.

+ +
MUTUAL +

Secure connections to the upstream using mutual TLS by presenting +client certificates for authentication.

+ +
ISTIO_MUTUAL +

Secure connections to the upstream using mutual TLS by presenting +client certificates for authentication. +Compared to Mutual mode, this mode uses certificates generated +automatically by Istio for mTLS authentication. When this mode is +used, all other fields in TLSSettings should be empty.

+ +
+
+

TrafficPolicy

+
+

Traffic policies to apply for a specific destination, across all +destination ports. See DestinationRule for examples.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
loadBalancerLoadBalancerSettings +

Settings controlling the load balancer algorithms.

+ +
connectionPoolConnectionPoolSettings +

Settings controlling the volume of connections to an upstream service

+ +
outlierDetectionOutlierDetection +

Settings controlling eviction of unhealthy hosts from the load balancing pool

+ +
tlsTLSSettings +

TLS related settings for connections to the upstream service.

+ +
portLevelSettingsTrafficPolicy.PortTrafficPolicy[] +

Traffic policies specific to individual ports. Note that port level +settings will override the destination-level settings. Traffic +settings specified at the destination-level will not be inherited when +overridden by port-level settings, i.e. default values will be applied +to fields omitted in port-level traffic policies.

+ +
+
+

TrafficPolicy.PortTrafficPolicy

+
+

Traffic policies that apply to specific ports of the service

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
portPortSelector +

Specifies the port name or number of a port on the destination service +on which this policy is being applied.

+ +

Names must comply with DNS label syntax (rfc1035) and therefore cannot +collide with numbers. If there are multiple ports on a service with +the same protocol the names should be of the form -.

+ +
loadBalancerLoadBalancerSettings +

Settings controlling the load balancer algorithms.

+ +
connectionPoolConnectionPoolSettings +

Settings controlling the volume of connections to an upstream service

+ +
outlierDetectionOutlierDetection +

Settings controlling eviction of unhealthy hosts from the load balancing pool

+ +
tlsTLSSettings +

TLS related settings for connections to the upstream service.

+ +
+
diff --git a/networking/v1alpha3/destination_rule.proto b/networking/v1alpha3/destination_rule.proto index 1c340f8bbf6..6dfae5ce0ff 100644 --- a/networking/v1alpha3/destination_rule.proto +++ b/networking/v1alpha3/destination_rule.proto @@ -17,9 +17,9 @@ import "google/protobuf/duration.proto"; import "networking/v1alpha3/virtual_service.proto"; import "gogoproto/gogo.proto"; -package istio.networking.v1alpha3; - -option go_package = "istio.io/api/networking/v1alpha3"; +// $title: Destination Rule +// $description: Configuration affecting load balancing, outlier detection, etc. +// $location: https://istio.io/docs/reference/config/networking/v1alpha3/destination-rule.html // `DestinationRule` defines policies that apply to traffic intended for a // service after routing has occurred. These rules specify configuration @@ -91,11 +91,15 @@ option go_package = "istio.io/api/networking/v1alpha3"; // loadBalancer: // simple: ROUND_ROBIN // ``` +package istio.networking.v1alpha3; + +option go_package = "istio.io/api/networking/v1alpha3"; + message DestinationRule { // REQUIRED. The name of a service from the service registry. Service // names are looked up from the platform's service registry (e.g., // Kubernetes services, Consul services, etc.) and from the hosts - // declared by [ServiceEntries](#ServiceEntry). Rules defined for + // declared by [ServiceEntries](/docs/reference/config/networking/v1alpha3/service-entry/#ServiceEntry). Rules defined for // services that do not exist in the service registry will be ignored. // // *Note for Kubernetes users*: When short names are used (e.g. "reviews" @@ -118,9 +122,23 @@ message DestinationRule { // service. Traffic policies can be overridden at subset level. repeated Subset subsets = 3; - // The resolution of a DestinationRule to apply to a service occurs in the - // context of a hierarchy of namespaces. This rule controls whether those - // namespaces are allowed to select this rule. + // A list of namespaces to which this destination rule is exported. + // The resolution of a destination rule to apply to a service occurs in the + // context of a hierarchy of namespaces. Exporting a destination rule allows + // it to be included in the resolution hierarchy for services in + // other namespaces. This feature provides a mechanism for service owners + // and mesh administrators to control the visibility of destination rules + // across namespace boundaries. + // + // If no namespaces are specified then the destination rule is exported to all + // namespaces by default. + // + // The value "." is reserved and defines an export to the same namespace that + // the destination rule is declared in. Similarly, the value "*" is reserved and + // defines an export to all namespaces. + // + // NOTE: in the current release, the `exportTo` value is restricted to + // "." or "*" (i.e., the current namespace or all namespaces). repeated string export_to = 4; } @@ -173,7 +191,7 @@ message TrafficPolicy { // A subset of endpoints of a service. Subsets can be used for scenarios // like A/B testing, or routing to a specific version of a service. Refer -// to [VirtualService](#VirtualService) documentation for examples of using +// to [VirtualService](/docs/reference/config/networking/v1alpha3/virtual-service/#VirtualService) documentation for examples of using // subsets in these scenarios. In addition, traffic policies defined at the // service-level can be overridden at a subset-level. The following rule // uses a round robin load balancing policy for all traffic going to a diff --git a/networking/v1alpha3/envoy_filter.pb.go b/networking/v1alpha3/envoy_filter.pb.go index f71ab80395d..bbe92a378f3 100644 --- a/networking/v1alpha3/envoy_filter.pb.go +++ b/networking/v1alpha3/envoy_filter.pb.go @@ -1,20 +1,65 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: networking/v1alpha3/envoy_filter.proto -package v1alpha3 +// `EnvoyFilter` describes Envoy proxy-specific filters that can be used to +// customize the Envoy proxy configuration generated by Istio networking +// subsystem (Pilot). This feature must be used with care, as incorrect +// configurations could potentially destabilize the entire mesh. +// +// NOTE 1: Since this is break glass configuration, there will not be any +// backward compatibility across different Istio releases. In other words, +// this configuration is subject to change based on internal implementation +// of Istio networking subsystem. +// +// NOTE 2: When multiple EnvoyFilters are bound to the same workload, all filter +// configurations will be processed sequentially in order of creation time. +// The behavior is undefined if multiple EnvoyFilter configurations conflict +// with each other. +// +// The following example for Kubernetes enables Envoy's Lua filter for all +// inbound calls arriving at service port 8080 of the reviews service pod with +// labels "app: reviews". +// +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: EnvoyFilter +// metadata: +// name: reviews-lua +// spec: +// workloadLabels: +// app: reviews +// filters: +// - listenerMatch: +// portNumber: 8080 +// listenerType: SIDECAR_INBOUND # will match with the inbound listener for reviews:8080 +// filterName: envoy.lua +// filterType: HTTP +// filterConfig: +// inlineCode: | +// ... lua code ... +// ``` -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf3 "github.com/gogo/protobuf/types" +package v1alpha3 -import io "io" +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + types "github.com/gogo/protobuf/types" + io "io" + math "math" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + type EnvoyFilter_ListenerMatch_ListenerType int32 const ( @@ -34,6 +79,7 @@ var EnvoyFilter_ListenerMatch_ListenerType_name = map[int32]string{ 2: "SIDECAR_OUTBOUND", 3: "GATEWAY", } + var EnvoyFilter_ListenerMatch_ListenerType_value = map[string]int32{ "ANY": 0, "SIDECAR_INBOUND": 1, @@ -44,8 +90,9 @@ var EnvoyFilter_ListenerMatch_ListenerType_value = map[string]int32{ func (x EnvoyFilter_ListenerMatch_ListenerType) String() string { return proto.EnumName(EnvoyFilter_ListenerMatch_ListenerType_name, int32(x)) } + func (EnvoyFilter_ListenerMatch_ListenerType) EnumDescriptor() ([]byte, []int) { - return fileDescriptorEnvoyFilter, []int{0, 1, 0} + return fileDescriptor_16d9b2922bd3e4a9, []int{0, 1, 0} } type EnvoyFilter_ListenerMatch_ListenerProtocol int32 @@ -64,6 +111,7 @@ var EnvoyFilter_ListenerMatch_ListenerProtocol_name = map[int32]string{ 1: "HTTP", 2: "TCP", } + var EnvoyFilter_ListenerMatch_ListenerProtocol_value = map[string]int32{ "ALL": 0, "HTTP": 1, @@ -73,8 +121,9 @@ var EnvoyFilter_ListenerMatch_ListenerProtocol_value = map[string]int32{ func (x EnvoyFilter_ListenerMatch_ListenerProtocol) String() string { return proto.EnumName(EnvoyFilter_ListenerMatch_ListenerProtocol_name, int32(x)) } + func (EnvoyFilter_ListenerMatch_ListenerProtocol) EnumDescriptor() ([]byte, []int) { - return fileDescriptorEnvoyFilter, []int{0, 1, 1} + return fileDescriptor_16d9b2922bd3e4a9, []int{0, 1, 1} } // Index/position in the filter chain. @@ -97,6 +146,7 @@ var EnvoyFilter_InsertPosition_Index_name = map[int32]string{ 2: "BEFORE", 3: "AFTER", } + var EnvoyFilter_InsertPosition_Index_value = map[string]int32{ "FIRST": 0, "LAST": 1, @@ -107,8 +157,9 @@ var EnvoyFilter_InsertPosition_Index_value = map[string]int32{ func (x EnvoyFilter_InsertPosition_Index) String() string { return proto.EnumName(EnvoyFilter_InsertPosition_Index_name, int32(x)) } + func (EnvoyFilter_InsertPosition_Index) EnumDescriptor() ([]byte, []int) { - return fileDescriptorEnvoyFilter, []int{0, 2, 0} + return fileDescriptor_16d9b2922bd3e4a9, []int{0, 2, 0} } type EnvoyFilter_Filter_FilterType int32 @@ -127,6 +178,7 @@ var EnvoyFilter_Filter_FilterType_name = map[int32]string{ 1: "HTTP", 2: "NETWORK", } + var EnvoyFilter_Filter_FilterType_value = map[string]int32{ "INVALID": 0, "HTTP": 1, @@ -136,47 +188,11 @@ var EnvoyFilter_Filter_FilterType_value = map[string]int32{ func (x EnvoyFilter_Filter_FilterType) String() string { return proto.EnumName(EnvoyFilter_Filter_FilterType_name, int32(x)) } + func (EnvoyFilter_Filter_FilterType) EnumDescriptor() ([]byte, []int) { - return fileDescriptorEnvoyFilter, []int{0, 3, 0} + return fileDescriptor_16d9b2922bd3e4a9, []int{0, 3, 0} } -// `EnvoyFilter` describes Envoy proxy-specific filters that can be used to -// customize the Envoy proxy configuration generated by Istio networking -// subsystem (Pilot). This feature must be used with care, as incorrect -// configurations could potentially destabilize the entire mesh. -// -// NOTE 1: Since this is break glass configuration, there will not be any -// backward compatibility across different Istio releases. In other words, -// this configuration is subject to change based on internal implementation -// of Istio networking subsystem. -// -// NOTE 2: When multiple EnvoyFilters are bound to the same workload, all filter -// configurations will be processed sequentially in order of creation time. -// The behavior is undefined if multiple EnvoyFilter configurations conflict -// with each other. -// -// The following example for Kubernetes enables Envoy's Lua filter for all -// inbound calls arriving at service port 8080 of the reviews service pod with -// labels "app: reviews". -// -// ```yaml -// apiVersion: networking.istio.io/v1alpha3 -// kind: EnvoyFilter -// metadata: -// name: reviews-lua -// spec: -// workloadLabels: -// app: reviews -// filters: -// - listenerMatch: -// portNumber: 8080 -// listenerType: SIDECAR_INBOUND #will match with the inbound listener for reviews:8080 -// filterName: envoy.lua -// filterType: HTTP -// filterConfig: -// inlineCode: | -// ... lua code ... -// ``` type EnvoyFilter struct { // One or more labels that indicate a specific set of pods/VMs whose // proxies should be configured to use these additional filters. The @@ -187,18 +203,49 @@ type EnvoyFilter struct { // NOTE: There can be only one EnvoyFilter bound to a specific workload. // The behavior is undefined if multiple EnvoyFilter configurations are // specified for the same workload. - WorkloadLabels map[string]string `protobuf:"bytes,1,rep,name=workload_labels,json=workloadLabels" json:"workload_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + WorkloadLabels map[string]string `protobuf:"bytes,1,rep,name=workload_labels,json=workloadLabels,proto3" json:"workload_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // REQUIRED: Envoy network filters/http filters to be added to matching // listeners. When adding network filters to http connections, care // should be taken to ensure that the filter is added before // envoy.http_connection_manager. - Filters []*EnvoyFilter_Filter `protobuf:"bytes,2,rep,name=filters" json:"filters,omitempty"` + Filters []*EnvoyFilter_Filter `protobuf:"bytes,2,rep,name=filters,proto3" json:"filters,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *EnvoyFilter) Reset() { *m = EnvoyFilter{} } -func (m *EnvoyFilter) String() string { return proto.CompactTextString(m) } -func (*EnvoyFilter) ProtoMessage() {} -func (*EnvoyFilter) Descriptor() ([]byte, []int) { return fileDescriptorEnvoyFilter, []int{0} } +func (m *EnvoyFilter) Reset() { *m = EnvoyFilter{} } +func (m *EnvoyFilter) String() string { return proto.CompactTextString(m) } +func (*EnvoyFilter) ProtoMessage() {} +func (*EnvoyFilter) Descriptor() ([]byte, []int) { + return fileDescriptor_16d9b2922bd3e4a9, []int{0} +} +func (m *EnvoyFilter) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EnvoyFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_EnvoyFilter.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *EnvoyFilter) XXX_Merge(src proto.Message) { + xxx_messageInfo_EnvoyFilter.Merge(m, src) +} +func (m *EnvoyFilter) XXX_Size() int { + return m.Size() +} +func (m *EnvoyFilter) XXX_DiscardUnknown() { + xxx_messageInfo_EnvoyFilter.DiscardUnknown(m) +} + +var xxx_messageInfo_EnvoyFilter proto.InternalMessageInfo func (m *EnvoyFilter) GetWorkloadLabels() map[string]string { if m != nil { @@ -239,16 +286,45 @@ type EnvoyFilter_ListenerMatch struct { ListenerProtocol EnvoyFilter_ListenerMatch_ListenerProtocol `protobuf:"varint,4,opt,name=listener_protocol,json=listenerProtocol,proto3,enum=istio.networking.v1alpha3.EnvoyFilter_ListenerMatch_ListenerProtocol" json:"listener_protocol,omitempty"` // One or more IP addresses to which the listener is bound. If // specified, should match at least one address in the list. - Address []string `protobuf:"bytes,5,rep,name=address" json:"address,omitempty"` + Address []string `protobuf:"bytes,5,rep,name=address,proto3" json:"address,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *EnvoyFilter_ListenerMatch) Reset() { *m = EnvoyFilter_ListenerMatch{} } func (m *EnvoyFilter_ListenerMatch) String() string { return proto.CompactTextString(m) } func (*EnvoyFilter_ListenerMatch) ProtoMessage() {} func (*EnvoyFilter_ListenerMatch) Descriptor() ([]byte, []int) { - return fileDescriptorEnvoyFilter, []int{0, 1} + return fileDescriptor_16d9b2922bd3e4a9, []int{0, 1} +} +func (m *EnvoyFilter_ListenerMatch) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EnvoyFilter_ListenerMatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_EnvoyFilter_ListenerMatch.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *EnvoyFilter_ListenerMatch) XXX_Merge(src proto.Message) { + xxx_messageInfo_EnvoyFilter_ListenerMatch.Merge(m, src) +} +func (m *EnvoyFilter_ListenerMatch) XXX_Size() int { + return m.Size() +} +func (m *EnvoyFilter_ListenerMatch) XXX_DiscardUnknown() { + xxx_messageInfo_EnvoyFilter_ListenerMatch.DiscardUnknown(m) } +var xxx_messageInfo_EnvoyFilter_ListenerMatch proto.InternalMessageInfo + func (m *EnvoyFilter_ListenerMatch) GetPortNumber() uint32 { if m != nil { return m.PortNumber @@ -290,16 +366,45 @@ type EnvoyFilter_InsertPosition struct { Index EnvoyFilter_InsertPosition_Index `protobuf:"varint,1,opt,name=index,proto3,enum=istio.networking.v1alpha3.EnvoyFilter_InsertPosition_Index" json:"index,omitempty"` // If BEFORE or AFTER position is specified, specify the name of the // filter relative to which this filter should be inserted. - RelativeTo string `protobuf:"bytes,2,opt,name=relative_to,json=relativeTo,proto3" json:"relative_to,omitempty"` + RelativeTo string `protobuf:"bytes,2,opt,name=relative_to,json=relativeTo,proto3" json:"relative_to,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *EnvoyFilter_InsertPosition) Reset() { *m = EnvoyFilter_InsertPosition{} } func (m *EnvoyFilter_InsertPosition) String() string { return proto.CompactTextString(m) } func (*EnvoyFilter_InsertPosition) ProtoMessage() {} func (*EnvoyFilter_InsertPosition) Descriptor() ([]byte, []int) { - return fileDescriptorEnvoyFilter, []int{0, 2} + return fileDescriptor_16d9b2922bd3e4a9, []int{0, 2} +} +func (m *EnvoyFilter_InsertPosition) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EnvoyFilter_InsertPosition) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_EnvoyFilter_InsertPosition.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *EnvoyFilter_InsertPosition) XXX_Merge(src proto.Message) { + xxx_messageInfo_EnvoyFilter_InsertPosition.Merge(m, src) +} +func (m *EnvoyFilter_InsertPosition) XXX_Size() int { + return m.Size() +} +func (m *EnvoyFilter_InsertPosition) XXX_DiscardUnknown() { + xxx_messageInfo_EnvoyFilter_InsertPosition.DiscardUnknown(m) } +var xxx_messageInfo_EnvoyFilter_InsertPosition proto.InternalMessageInfo + func (m *EnvoyFilter_InsertPosition) GetIndex() EnvoyFilter_InsertPosition_Index { if m != nil { return m.Index @@ -318,9 +423,9 @@ func (m *EnvoyFilter_InsertPosition) GetRelativeTo() string { type EnvoyFilter_Filter struct { // Filter will be added to the listener only if the match conditions are true. // If not specified, the filters will be applied to all listeners. - ListenerMatch *EnvoyFilter_ListenerMatch `protobuf:"bytes,1,opt,name=listener_match,json=listenerMatch" json:"listener_match,omitempty"` + ListenerMatch *EnvoyFilter_ListenerMatch `protobuf:"bytes,1,opt,name=listener_match,json=listenerMatch,proto3" json:"listener_match,omitempty"` // Insert position in the filter chain. Defaults to FIRST - InsertPosition *EnvoyFilter_InsertPosition `protobuf:"bytes,2,opt,name=insert_position,json=insertPosition" json:"insert_position,omitempty"` + InsertPosition *EnvoyFilter_InsertPosition `protobuf:"bytes,2,opt,name=insert_position,json=insertPosition,proto3" json:"insert_position,omitempty"` // REQUIRED: The type of filter to instantiate. FilterType EnvoyFilter_Filter_FilterType `protobuf:"varint,3,opt,name=filter_type,json=filterType,proto3,enum=istio.networking.v1alpha3.EnvoyFilter_Filter_FilterType" json:"filter_type,omitempty"` // REQUIRED: The name of the filter to instantiate. The name must match a supported @@ -328,13 +433,44 @@ type EnvoyFilter_Filter struct { FilterName string `protobuf:"bytes,4,opt,name=filter_name,json=filterName,proto3" json:"filter_name,omitempty"` // REQUIRED: Filter specific configuration which depends on the filter being // instantiated. - FilterConfig *google_protobuf3.Struct `protobuf:"bytes,5,opt,name=filter_config,json=filterConfig" json:"filter_config,omitempty"` + FilterConfig *types.Struct `protobuf:"bytes,5,opt,name=filter_config,json=filterConfig,proto3" json:"filter_config,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *EnvoyFilter_Filter) Reset() { *m = EnvoyFilter_Filter{} } +func (m *EnvoyFilter_Filter) String() string { return proto.CompactTextString(m) } +func (*EnvoyFilter_Filter) ProtoMessage() {} +func (*EnvoyFilter_Filter) Descriptor() ([]byte, []int) { + return fileDescriptor_16d9b2922bd3e4a9, []int{0, 3} +} +func (m *EnvoyFilter_Filter) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EnvoyFilter_Filter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_EnvoyFilter_Filter.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *EnvoyFilter_Filter) XXX_Merge(src proto.Message) { + xxx_messageInfo_EnvoyFilter_Filter.Merge(m, src) +} +func (m *EnvoyFilter_Filter) XXX_Size() int { + return m.Size() +} +func (m *EnvoyFilter_Filter) XXX_DiscardUnknown() { + xxx_messageInfo_EnvoyFilter_Filter.DiscardUnknown(m) } -func (m *EnvoyFilter_Filter) Reset() { *m = EnvoyFilter_Filter{} } -func (m *EnvoyFilter_Filter) String() string { return proto.CompactTextString(m) } -func (*EnvoyFilter_Filter) ProtoMessage() {} -func (*EnvoyFilter_Filter) Descriptor() ([]byte, []int) { return fileDescriptorEnvoyFilter, []int{0, 3} } +var xxx_messageInfo_EnvoyFilter_Filter proto.InternalMessageInfo func (m *EnvoyFilter_Filter) GetListenerMatch() *EnvoyFilter_ListenerMatch { if m != nil { @@ -364,7 +500,7 @@ func (m *EnvoyFilter_Filter) GetFilterName() string { return "" } -func (m *EnvoyFilter_Filter) GetFilterConfig() *google_protobuf3.Struct { +func (m *EnvoyFilter_Filter) GetFilterConfig() *types.Struct { if m != nil { return m.FilterConfig } @@ -372,15 +508,70 @@ func (m *EnvoyFilter_Filter) GetFilterConfig() *google_protobuf3.Struct { } func init() { - proto.RegisterType((*EnvoyFilter)(nil), "istio.networking.v1alpha3.EnvoyFilter") - proto.RegisterType((*EnvoyFilter_ListenerMatch)(nil), "istio.networking.v1alpha3.EnvoyFilter.ListenerMatch") - proto.RegisterType((*EnvoyFilter_InsertPosition)(nil), "istio.networking.v1alpha3.EnvoyFilter.InsertPosition") - proto.RegisterType((*EnvoyFilter_Filter)(nil), "istio.networking.v1alpha3.EnvoyFilter.Filter") proto.RegisterEnum("istio.networking.v1alpha3.EnvoyFilter_ListenerMatch_ListenerType", EnvoyFilter_ListenerMatch_ListenerType_name, EnvoyFilter_ListenerMatch_ListenerType_value) proto.RegisterEnum("istio.networking.v1alpha3.EnvoyFilter_ListenerMatch_ListenerProtocol", EnvoyFilter_ListenerMatch_ListenerProtocol_name, EnvoyFilter_ListenerMatch_ListenerProtocol_value) proto.RegisterEnum("istio.networking.v1alpha3.EnvoyFilter_InsertPosition_Index", EnvoyFilter_InsertPosition_Index_name, EnvoyFilter_InsertPosition_Index_value) proto.RegisterEnum("istio.networking.v1alpha3.EnvoyFilter_Filter_FilterType", EnvoyFilter_Filter_FilterType_name, EnvoyFilter_Filter_FilterType_value) + proto.RegisterType((*EnvoyFilter)(nil), "istio.networking.v1alpha3.EnvoyFilter") + proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1alpha3.EnvoyFilter.WorkloadLabelsEntry") + proto.RegisterType((*EnvoyFilter_ListenerMatch)(nil), "istio.networking.v1alpha3.EnvoyFilter.ListenerMatch") + proto.RegisterType((*EnvoyFilter_InsertPosition)(nil), "istio.networking.v1alpha3.EnvoyFilter.InsertPosition") + proto.RegisterType((*EnvoyFilter_Filter)(nil), "istio.networking.v1alpha3.EnvoyFilter.Filter") +} + +func init() { + proto.RegisterFile("networking/v1alpha3/envoy_filter.proto", fileDescriptor_16d9b2922bd3e4a9) +} + +var fileDescriptor_16d9b2922bd3e4a9 = []byte{ + // 706 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0x41, 0x6f, 0xda, 0x4c, + 0x10, 0x8d, 0x71, 0x08, 0x1f, 0xe3, 0x40, 0xfc, 0x6d, 0x22, 0xd5, 0x45, 0x55, 0x8a, 0x38, 0x54, + 0x5c, 0x6a, 0x5a, 0xd2, 0x4a, 0x51, 0xda, 0x8b, 0x93, 0x98, 0x14, 0x95, 0x02, 0x5d, 0x9c, 0x46, + 0x69, 0xa5, 0x5a, 0x06, 0x16, 0xb2, 0x8a, 0xf1, 0x5a, 0xf6, 0x42, 0xc2, 0xcf, 0xea, 0xb1, 0xd7, + 0x9e, 0x7a, 0x6c, 0xff, 0x41, 0x95, 0x5f, 0x52, 0x79, 0x6d, 0x08, 0x44, 0xa9, 0x94, 0xa6, 0x27, + 0x7b, 0x9f, 0xde, 0xbc, 0x99, 0xd9, 0x79, 0xb3, 0xf0, 0xc4, 0x23, 0xfc, 0x82, 0x05, 0xe7, 0xd4, + 0x1b, 0x56, 0x26, 0xcf, 0x1d, 0xd7, 0x3f, 0x73, 0x76, 0x2a, 0xc4, 0x9b, 0xb0, 0xa9, 0x3d, 0xa0, + 0x2e, 0x27, 0x81, 0xee, 0x07, 0x8c, 0x33, 0xf4, 0x90, 0x86, 0x9c, 0x32, 0xfd, 0x9a, 0xad, 0xcf, + 0xd8, 0x85, 0x47, 0x43, 0xc6, 0x86, 0x2e, 0xa9, 0x08, 0x62, 0x77, 0x3c, 0xa8, 0x84, 0x3c, 0x18, + 0xf7, 0x78, 0x1c, 0x58, 0xfa, 0x06, 0xa0, 0x98, 0x91, 0x5e, 0x4d, 0xc8, 0xa1, 0x1e, 0x6c, 0x44, + 0x0a, 0x2e, 0x73, 0xfa, 0xb6, 0xeb, 0x74, 0x89, 0x1b, 0x6a, 0x52, 0x51, 0x2e, 0x2b, 0xd5, 0x3d, + 0xfd, 0x8f, 0x29, 0xf4, 0x05, 0x01, 0xfd, 0x24, 0x89, 0x6e, 0x88, 0x60, 0xd3, 0xe3, 0xc1, 0x14, + 0xe7, 0x2f, 0x96, 0x40, 0x74, 0x04, 0x99, 0xb8, 0xfa, 0x50, 0x4b, 0x09, 0xf1, 0xa7, 0x77, 0x14, + 0x8f, 0x3f, 0x78, 0x16, 0x5d, 0x30, 0x60, 0xf3, 0x96, 0x7c, 0x48, 0x05, 0xf9, 0x9c, 0x4c, 0x35, + 0xa9, 0x28, 0x95, 0xb3, 0x38, 0xfa, 0x45, 0x5b, 0x90, 0x9e, 0x38, 0xee, 0x98, 0x68, 0x29, 0x81, + 0xc5, 0x87, 0xbd, 0xd4, 0xae, 0x54, 0xf8, 0x29, 0x43, 0xae, 0x41, 0x43, 0x4e, 0x3c, 0x12, 0xbc, + 0x73, 0x78, 0xef, 0x0c, 0x3d, 0x06, 0xc5, 0x67, 0x01, 0xb7, 0xbd, 0xf1, 0xa8, 0x4b, 0x02, 0xa1, + 0x92, 0xc3, 0x10, 0x41, 0x4d, 0x81, 0xa0, 0x32, 0xa8, 0x31, 0xc1, 0x19, 0x11, 0xdb, 0x0f, 0xc8, + 0x80, 0x5e, 0x26, 0xba, 0x79, 0xc1, 0x72, 0x46, 0xa4, 0x2d, 0x50, 0x34, 0x80, 0x9c, 0x9b, 0x68, + 0xdb, 0x7c, 0xea, 0x13, 0x4d, 0x2e, 0x4a, 0xe5, 0x7c, 0xd5, 0xb8, 0x63, 0xbb, 0x4b, 0x75, 0xcd, + 0x4f, 0xd6, 0xd4, 0x27, 0x78, 0xdd, 0x5d, 0x38, 0xa1, 0x00, 0xfe, 0x9f, 0xe7, 0x11, 0x73, 0xed, + 0x31, 0x57, 0x5b, 0x15, 0xb9, 0xcc, 0x7f, 0xca, 0xd5, 0x4e, 0xc4, 0xb0, 0xea, 0xde, 0x40, 0x90, + 0x06, 0x19, 0xa7, 0xdf, 0x0f, 0x48, 0x18, 0x6a, 0xe9, 0xa2, 0x5c, 0xce, 0xe2, 0xd9, 0xb1, 0xd4, + 0x82, 0xf5, 0xc5, 0x5a, 0x51, 0x06, 0x64, 0xa3, 0x79, 0xaa, 0xae, 0xa0, 0x4d, 0xd8, 0xe8, 0xd4, + 0x0f, 0xcd, 0x03, 0x03, 0xdb, 0xf5, 0xe6, 0x7e, 0xeb, 0xb8, 0x79, 0xa8, 0x4a, 0x68, 0x0b, 0xd4, + 0x19, 0xd8, 0x3a, 0xb6, 0x62, 0x34, 0x85, 0x14, 0xc8, 0x1c, 0x19, 0x96, 0x79, 0x62, 0x9c, 0xaa, + 0x72, 0x49, 0x07, 0xf5, 0x66, 0x41, 0x42, 0xb4, 0xd1, 0x50, 0x57, 0xd0, 0x7f, 0xb0, 0xfa, 0xc6, + 0xb2, 0xda, 0xaa, 0x14, 0x41, 0xd6, 0x41, 0x5b, 0x4d, 0x15, 0xbe, 0x4a, 0x90, 0xaf, 0x7b, 0x21, + 0x09, 0x78, 0x9b, 0x85, 0x94, 0x53, 0xe6, 0xa1, 0xf7, 0x90, 0xa6, 0x5e, 0x9f, 0x5c, 0x8a, 0x71, + 0xe6, 0xab, 0xaf, 0xee, 0x78, 0x2b, 0xcb, 0x2a, 0x7a, 0x3d, 0x92, 0xc0, 0xb1, 0x52, 0xe4, 0x93, + 0x80, 0xb8, 0x0e, 0xa7, 0x13, 0x62, 0x73, 0x96, 0x38, 0x00, 0x66, 0x90, 0xc5, 0x4a, 0x3b, 0x90, + 0x16, 0x01, 0x28, 0x0b, 0xe9, 0x5a, 0x1d, 0x77, 0xac, 0xb8, 0xda, 0x86, 0xd1, 0xb1, 0x54, 0x09, + 0x01, 0xac, 0xed, 0x9b, 0xb5, 0x16, 0x36, 0xd5, 0x54, 0x44, 0x30, 0x6a, 0x96, 0x89, 0x55, 0xb9, + 0xf0, 0x45, 0x86, 0xb5, 0x64, 0x17, 0x3f, 0x41, 0x7e, 0x3e, 0xd5, 0x51, 0x34, 0x16, 0x51, 0xbc, + 0x52, 0x7d, 0x71, 0x9f, 0x91, 0xe2, 0xb9, 0x13, 0x63, 0x97, 0x7f, 0x86, 0x0d, 0x2a, 0x9a, 0xb3, + 0xfd, 0xa4, 0x3b, 0xd1, 0x81, 0x52, 0x7d, 0x79, 0xaf, 0xab, 0xc1, 0x79, 0xba, 0x7c, 0xe1, 0xa7, + 0xa0, 0xc4, 0x5b, 0xba, 0x68, 0xfc, 0xdd, 0xbf, 0xda, 0xf3, 0xe4, 0x23, 0xfc, 0x0e, 0x83, 0xf9, + 0x7f, 0x74, 0xf1, 0x89, 0x74, 0xb4, 0x81, 0xc2, 0xe7, 0xd9, 0x19, 0x21, 0x5a, 0x3e, 0xf4, 0x1a, + 0x72, 0x09, 0xa1, 0xc7, 0xbc, 0x01, 0x1d, 0x6a, 0x69, 0xd1, 0xd9, 0x03, 0x3d, 0x7e, 0x0a, 0xf5, + 0xd9, 0x53, 0xa8, 0x77, 0xc4, 0x53, 0x88, 0xd7, 0x63, 0xf6, 0x81, 0x20, 0x97, 0x9e, 0x01, 0x5c, + 0x27, 0x8e, 0x8c, 0x58, 0x6f, 0x7e, 0x30, 0x1a, 0xf5, 0xc3, 0x25, 0xaf, 0x29, 0x90, 0x69, 0x9a, + 0xd6, 0x49, 0x0b, 0xbf, 0x55, 0x53, 0xfb, 0xfa, 0xf7, 0xab, 0x6d, 0xe9, 0xc7, 0xd5, 0xb6, 0xf4, + 0xeb, 0x6a, 0x5b, 0xfa, 0x58, 0x8c, 0x7b, 0xa4, 0xac, 0xe2, 0xf8, 0xb4, 0x72, 0xcb, 0x03, 0xde, + 0x5d, 0x13, 0x05, 0xec, 0xfc, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x26, 0x48, 0xc9, 0xfc, 0xde, 0x05, + 0x00, 0x00, } + func (m *EnvoyFilter) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -425,6 +616,9 @@ func (m *EnvoyFilter) MarshalTo(dAtA []byte) (int, error) { i += n } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -479,6 +673,9 @@ func (m *EnvoyFilter_ListenerMatch) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], s) } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -508,6 +705,9 @@ func (m *EnvoyFilter_InsertPosition) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintEnvoyFilter(dAtA, i, uint64(len(m.RelativeTo))) i += copy(dAtA[i:], m.RelativeTo) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -567,6 +767,9 @@ func (m *EnvoyFilter_Filter) MarshalTo(dAtA []byte) (int, error) { } i += n3 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -580,6 +783,9 @@ func encodeVarintEnvoyFilter(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *EnvoyFilter) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.WorkloadLabels) > 0 { @@ -596,10 +802,16 @@ func (m *EnvoyFilter) Size() (n int) { n += 1 + l + sovEnvoyFilter(uint64(l)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *EnvoyFilter_ListenerMatch) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.PortNumber != 0 { @@ -621,10 +833,16 @@ func (m *EnvoyFilter_ListenerMatch) Size() (n int) { n += 1 + l + sovEnvoyFilter(uint64(l)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *EnvoyFilter_InsertPosition) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Index != 0 { @@ -634,10 +852,16 @@ func (m *EnvoyFilter_InsertPosition) Size() (n int) { if l > 0 { n += 1 + l + sovEnvoyFilter(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *EnvoyFilter_Filter) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.ListenerMatch != nil { @@ -659,6 +883,9 @@ func (m *EnvoyFilter_Filter) Size() (n int) { l = m.FilterConfig.Size() n += 1 + l + sovEnvoyFilter(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -690,7 +917,7 @@ func (m *EnvoyFilter) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -718,7 +945,7 @@ func (m *EnvoyFilter) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -727,6 +954,9 @@ func (m *EnvoyFilter) Unmarshal(dAtA []byte) error { return ErrInvalidLengthEnvoyFilter } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEnvoyFilter + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -747,7 +977,7 @@ func (m *EnvoyFilter) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -764,7 +994,7 @@ func (m *EnvoyFilter) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -774,6 +1004,9 @@ func (m *EnvoyFilter) Unmarshal(dAtA []byte) error { return ErrInvalidLengthEnvoyFilter } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthEnvoyFilter + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -790,7 +1023,7 @@ func (m *EnvoyFilter) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -800,6 +1033,9 @@ func (m *EnvoyFilter) Unmarshal(dAtA []byte) error { return ErrInvalidLengthEnvoyFilter } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthEnvoyFilter + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -836,7 +1072,7 @@ func (m *EnvoyFilter) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -845,6 +1081,9 @@ func (m *EnvoyFilter) Unmarshal(dAtA []byte) error { return ErrInvalidLengthEnvoyFilter } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEnvoyFilter + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -862,9 +1101,13 @@ func (m *EnvoyFilter) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthEnvoyFilter } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthEnvoyFilter + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -889,7 +1132,7 @@ func (m *EnvoyFilter_ListenerMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -917,7 +1160,7 @@ func (m *EnvoyFilter_ListenerMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PortNumber |= (uint32(b) & 0x7F) << shift + m.PortNumber |= uint32(b&0x7F) << shift if b < 0x80 { break } @@ -936,7 +1179,7 @@ func (m *EnvoyFilter_ListenerMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -946,6 +1189,9 @@ func (m *EnvoyFilter_ListenerMatch) Unmarshal(dAtA []byte) error { return ErrInvalidLengthEnvoyFilter } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEnvoyFilter + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -965,7 +1211,7 @@ func (m *EnvoyFilter_ListenerMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ListenerType |= (EnvoyFilter_ListenerMatch_ListenerType(b) & 0x7F) << shift + m.ListenerType |= EnvoyFilter_ListenerMatch_ListenerType(b&0x7F) << shift if b < 0x80 { break } @@ -984,7 +1230,7 @@ func (m *EnvoyFilter_ListenerMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ListenerProtocol |= (EnvoyFilter_ListenerMatch_ListenerProtocol(b) & 0x7F) << shift + m.ListenerProtocol |= EnvoyFilter_ListenerMatch_ListenerProtocol(b&0x7F) << shift if b < 0x80 { break } @@ -1003,7 +1249,7 @@ func (m *EnvoyFilter_ListenerMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1013,6 +1259,9 @@ func (m *EnvoyFilter_ListenerMatch) Unmarshal(dAtA []byte) error { return ErrInvalidLengthEnvoyFilter } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEnvoyFilter + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1027,9 +1276,13 @@ func (m *EnvoyFilter_ListenerMatch) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthEnvoyFilter } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthEnvoyFilter + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -1054,7 +1307,7 @@ func (m *EnvoyFilter_InsertPosition) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1082,7 +1335,7 @@ func (m *EnvoyFilter_InsertPosition) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Index |= (EnvoyFilter_InsertPosition_Index(b) & 0x7F) << shift + m.Index |= EnvoyFilter_InsertPosition_Index(b&0x7F) << shift if b < 0x80 { break } @@ -1101,7 +1354,7 @@ func (m *EnvoyFilter_InsertPosition) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1111,6 +1364,9 @@ func (m *EnvoyFilter_InsertPosition) Unmarshal(dAtA []byte) error { return ErrInvalidLengthEnvoyFilter } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEnvoyFilter + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1125,9 +1381,13 @@ func (m *EnvoyFilter_InsertPosition) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthEnvoyFilter } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthEnvoyFilter + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -1152,7 +1412,7 @@ func (m *EnvoyFilter_Filter) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1180,7 +1440,7 @@ func (m *EnvoyFilter_Filter) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1189,6 +1449,9 @@ func (m *EnvoyFilter_Filter) Unmarshal(dAtA []byte) error { return ErrInvalidLengthEnvoyFilter } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEnvoyFilter + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1213,7 +1476,7 @@ func (m *EnvoyFilter_Filter) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1222,6 +1485,9 @@ func (m *EnvoyFilter_Filter) Unmarshal(dAtA []byte) error { return ErrInvalidLengthEnvoyFilter } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEnvoyFilter + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1246,7 +1512,7 @@ func (m *EnvoyFilter_Filter) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.FilterType |= (EnvoyFilter_Filter_FilterType(b) & 0x7F) << shift + m.FilterType |= EnvoyFilter_Filter_FilterType(b&0x7F) << shift if b < 0x80 { break } @@ -1265,7 +1531,7 @@ func (m *EnvoyFilter_Filter) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1275,6 +1541,9 @@ func (m *EnvoyFilter_Filter) Unmarshal(dAtA []byte) error { return ErrInvalidLengthEnvoyFilter } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEnvoyFilter + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1294,7 +1563,7 @@ func (m *EnvoyFilter_Filter) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1303,11 +1572,14 @@ func (m *EnvoyFilter_Filter) Unmarshal(dAtA []byte) error { return ErrInvalidLengthEnvoyFilter } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEnvoyFilter + } if postIndex > l { return io.ErrUnexpectedEOF } if m.FilterConfig == nil { - m.FilterConfig = &google_protobuf3.Struct{} + m.FilterConfig = &types.Struct{} } if err := m.FilterConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -1322,9 +1594,13 @@ func (m *EnvoyFilter_Filter) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthEnvoyFilter } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthEnvoyFilter + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -1388,10 +1664,13 @@ func skipEnvoyFilter(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthEnvoyFilter } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthEnvoyFilter + } return iNdEx, nil case 3: for { @@ -1420,6 +1699,9 @@ func skipEnvoyFilter(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthEnvoyFilter + } } return iNdEx, nil case 4: @@ -1438,54 +1720,3 @@ var ( ErrInvalidLengthEnvoyFilter = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowEnvoyFilter = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("networking/v1alpha3/envoy_filter.proto", fileDescriptorEnvoyFilter) } - -var fileDescriptorEnvoyFilter = []byte{ - // 706 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0x41, 0x6f, 0xda, 0x4c, - 0x10, 0x8d, 0x71, 0x08, 0x1f, 0xe3, 0x40, 0xfc, 0x6d, 0x22, 0xd5, 0x45, 0x55, 0x8a, 0x38, 0x54, - 0x5c, 0x6a, 0x5a, 0xd2, 0x4a, 0x51, 0xda, 0x8b, 0x93, 0x98, 0x14, 0x95, 0x02, 0x5d, 0x9c, 0x46, - 0x69, 0xa5, 0x5a, 0x06, 0x16, 0xb2, 0x8a, 0xf1, 0x5a, 0xf6, 0x42, 0xc2, 0xcf, 0xea, 0xb1, 0xd7, - 0x9e, 0x7a, 0x6c, 0xff, 0x41, 0x95, 0x5f, 0x52, 0x79, 0x6d, 0x08, 0x44, 0xa9, 0x94, 0xa6, 0x27, - 0x7b, 0x9f, 0xde, 0xbc, 0x99, 0xd9, 0x79, 0xb3, 0xf0, 0xc4, 0x23, 0xfc, 0x82, 0x05, 0xe7, 0xd4, - 0x1b, 0x56, 0x26, 0xcf, 0x1d, 0xd7, 0x3f, 0x73, 0x76, 0x2a, 0xc4, 0x9b, 0xb0, 0xa9, 0x3d, 0xa0, - 0x2e, 0x27, 0x81, 0xee, 0x07, 0x8c, 0x33, 0xf4, 0x90, 0x86, 0x9c, 0x32, 0xfd, 0x9a, 0xad, 0xcf, - 0xd8, 0x85, 0x47, 0x43, 0xc6, 0x86, 0x2e, 0xa9, 0x08, 0x62, 0x77, 0x3c, 0xa8, 0x84, 0x3c, 0x18, - 0xf7, 0x78, 0x1c, 0x58, 0xfa, 0x06, 0xa0, 0x98, 0x91, 0x5e, 0x4d, 0xc8, 0xa1, 0x1e, 0x6c, 0x44, - 0x0a, 0x2e, 0x73, 0xfa, 0xb6, 0xeb, 0x74, 0x89, 0x1b, 0x6a, 0x52, 0x51, 0x2e, 0x2b, 0xd5, 0x3d, - 0xfd, 0x8f, 0x29, 0xf4, 0x05, 0x01, 0xfd, 0x24, 0x89, 0x6e, 0x88, 0x60, 0xd3, 0xe3, 0xc1, 0x14, - 0xe7, 0x2f, 0x96, 0x40, 0x74, 0x04, 0x99, 0xb8, 0xfa, 0x50, 0x4b, 0x09, 0xf1, 0xa7, 0x77, 0x14, - 0x8f, 0x3f, 0x78, 0x16, 0x5d, 0x30, 0x60, 0xf3, 0x96, 0x7c, 0x48, 0x05, 0xf9, 0x9c, 0x4c, 0x35, - 0xa9, 0x28, 0x95, 0xb3, 0x38, 0xfa, 0x45, 0x5b, 0x90, 0x9e, 0x38, 0xee, 0x98, 0x68, 0x29, 0x81, - 0xc5, 0x87, 0xbd, 0xd4, 0xae, 0x54, 0xf8, 0x29, 0x43, 0xae, 0x41, 0x43, 0x4e, 0x3c, 0x12, 0xbc, - 0x73, 0x78, 0xef, 0x0c, 0x3d, 0x06, 0xc5, 0x67, 0x01, 0xb7, 0xbd, 0xf1, 0xa8, 0x4b, 0x02, 0xa1, - 0x92, 0xc3, 0x10, 0x41, 0x4d, 0x81, 0xa0, 0x32, 0xa8, 0x31, 0xc1, 0x19, 0x11, 0xdb, 0x0f, 0xc8, - 0x80, 0x5e, 0x26, 0xba, 0x79, 0xc1, 0x72, 0x46, 0xa4, 0x2d, 0x50, 0x34, 0x80, 0x9c, 0x9b, 0x68, - 0xdb, 0x7c, 0xea, 0x13, 0x4d, 0x2e, 0x4a, 0xe5, 0x7c, 0xd5, 0xb8, 0x63, 0xbb, 0x4b, 0x75, 0xcd, - 0x4f, 0xd6, 0xd4, 0x27, 0x78, 0xdd, 0x5d, 0x38, 0xa1, 0x00, 0xfe, 0x9f, 0xe7, 0x11, 0x73, 0xed, - 0x31, 0x57, 0x5b, 0x15, 0xb9, 0xcc, 0x7f, 0xca, 0xd5, 0x4e, 0xc4, 0xb0, 0xea, 0xde, 0x40, 0x90, - 0x06, 0x19, 0xa7, 0xdf, 0x0f, 0x48, 0x18, 0x6a, 0xe9, 0xa2, 0x5c, 0xce, 0xe2, 0xd9, 0xb1, 0xd4, - 0x82, 0xf5, 0xc5, 0x5a, 0x51, 0x06, 0x64, 0xa3, 0x79, 0xaa, 0xae, 0xa0, 0x4d, 0xd8, 0xe8, 0xd4, - 0x0f, 0xcd, 0x03, 0x03, 0xdb, 0xf5, 0xe6, 0x7e, 0xeb, 0xb8, 0x79, 0xa8, 0x4a, 0x68, 0x0b, 0xd4, - 0x19, 0xd8, 0x3a, 0xb6, 0x62, 0x34, 0x85, 0x14, 0xc8, 0x1c, 0x19, 0x96, 0x79, 0x62, 0x9c, 0xaa, - 0x72, 0x49, 0x07, 0xf5, 0x66, 0x41, 0x42, 0xb4, 0xd1, 0x50, 0x57, 0xd0, 0x7f, 0xb0, 0xfa, 0xc6, - 0xb2, 0xda, 0xaa, 0x14, 0x41, 0xd6, 0x41, 0x5b, 0x4d, 0x15, 0xbe, 0x4a, 0x90, 0xaf, 0x7b, 0x21, - 0x09, 0x78, 0x9b, 0x85, 0x94, 0x53, 0xe6, 0xa1, 0xf7, 0x90, 0xa6, 0x5e, 0x9f, 0x5c, 0x8a, 0x71, - 0xe6, 0xab, 0xaf, 0xee, 0x78, 0x2b, 0xcb, 0x2a, 0x7a, 0x3d, 0x92, 0xc0, 0xb1, 0x52, 0xe4, 0x93, - 0x80, 0xb8, 0x0e, 0xa7, 0x13, 0x62, 0x73, 0x96, 0x38, 0x00, 0x66, 0x90, 0xc5, 0x4a, 0x3b, 0x90, - 0x16, 0x01, 0x28, 0x0b, 0xe9, 0x5a, 0x1d, 0x77, 0xac, 0xb8, 0xda, 0x86, 0xd1, 0xb1, 0x54, 0x09, - 0x01, 0xac, 0xed, 0x9b, 0xb5, 0x16, 0x36, 0xd5, 0x54, 0x44, 0x30, 0x6a, 0x96, 0x89, 0x55, 0xb9, - 0xf0, 0x45, 0x86, 0xb5, 0x64, 0x17, 0x3f, 0x41, 0x7e, 0x3e, 0xd5, 0x51, 0x34, 0x16, 0x51, 0xbc, - 0x52, 0x7d, 0x71, 0x9f, 0x91, 0xe2, 0xb9, 0x13, 0x63, 0x97, 0x7f, 0x86, 0x0d, 0x2a, 0x9a, 0xb3, - 0xfd, 0xa4, 0x3b, 0xd1, 0x81, 0x52, 0x7d, 0x79, 0xaf, 0xab, 0xc1, 0x79, 0xba, 0x7c, 0xe1, 0xa7, - 0xa0, 0xc4, 0x5b, 0xba, 0x68, 0xfc, 0xdd, 0xbf, 0xda, 0xf3, 0xe4, 0x23, 0xfc, 0x0e, 0x83, 0xf9, - 0x7f, 0x74, 0xf1, 0x89, 0x74, 0xb4, 0x81, 0xc2, 0xe7, 0xd9, 0x19, 0x21, 0x5a, 0x3e, 0xf4, 0x1a, - 0x72, 0x09, 0xa1, 0xc7, 0xbc, 0x01, 0x1d, 0x6a, 0x69, 0xd1, 0xd9, 0x03, 0x3d, 0x7e, 0x0a, 0xf5, - 0xd9, 0x53, 0xa8, 0x77, 0xc4, 0x53, 0x88, 0xd7, 0x63, 0xf6, 0x81, 0x20, 0x97, 0x9e, 0x01, 0x5c, - 0x27, 0x8e, 0x8c, 0x58, 0x6f, 0x7e, 0x30, 0x1a, 0xf5, 0xc3, 0x25, 0xaf, 0x29, 0x90, 0x69, 0x9a, - 0xd6, 0x49, 0x0b, 0xbf, 0x55, 0x53, 0xfb, 0xfa, 0xf7, 0xab, 0x6d, 0xe9, 0xc7, 0xd5, 0xb6, 0xf4, - 0xeb, 0x6a, 0x5b, 0xfa, 0x58, 0x8c, 0x7b, 0xa4, 0xac, 0xe2, 0xf8, 0xb4, 0x72, 0xcb, 0x03, 0xde, - 0x5d, 0x13, 0x05, 0xec, 0xfc, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x26, 0x48, 0xc9, 0xfc, 0xde, 0x05, - 0x00, 0x00, -} diff --git a/networking/v1alpha3/envoy_filter.pb.html b/networking/v1alpha3/envoy_filter.pb.html new file mode 100644 index 00000000000..3144a0d15d2 --- /dev/null +++ b/networking/v1alpha3/envoy_filter.pb.html @@ -0,0 +1,400 @@ +--- +title: Envoy Filter +description: Configuration affecting insertion of custom Envoy filters. +location: https://istio.io/docs/reference/config/networking/v1alpha3/envoy-filter.html +layout: protoc-gen-docs +generator: protoc-gen-docs +number_of_entries: 8 +--- +

EnvoyFilter describes Envoy proxy-specific filters that can be used to +customize the Envoy proxy configuration generated by Istio networking +subsystem (Pilot). This feature must be used with care, as incorrect +configurations could potentially destabilize the entire mesh.

+ +

NOTE 1: Since this is break glass configuration, there will not be any +backward compatibility across different Istio releases. In other words, +this configuration is subject to change based on internal implementation +of Istio networking subsystem.

+ +

NOTE 2: When multiple EnvoyFilters are bound to the same workload, all filter +configurations will be processed sequentially in order of creation time. +The behavior is undefined if multiple EnvoyFilter configurations conflict +with each other.

+ +

The following example for Kubernetes enables Envoy’s Lua filter for all +inbound calls arriving at service port 8080 of the reviews service pod with +labels “app: reviews”.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: EnvoyFilter
+metadata:
+  name: reviews-lua
+spec:
+  workloadLabels:
+    app: reviews
+  filters:
+  - listenerMatch:
+      portNumber: 8080
+      listenerType: SIDECAR_INBOUND # will match with the inbound listener for reviews:8080
+    filterName: envoy.lua
+    filterType: HTTP
+    filterConfig:
+      inlineCode: |
+        ... lua code ...
+
+ +

EnvoyFilter

+
+ + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
workloadLabelsmap<string, string> +

One or more labels that indicate a specific set of pods/VMs whose +proxies should be configured to use these additional filters. The +scope of label search is platform dependent. On Kubernetes, for +example, the scope includes pods running in all reachable +namespaces. Omitting the selector applies the filter to all proxies in +the mesh. +NOTE: There can be only one EnvoyFilter bound to a specific workload. +The behavior is undefined if multiple EnvoyFilter configurations are +specified for the same workload.

+ +
filtersEnvoyFilter.Filter[] +

REQUIRED: Envoy network filters/http filters to be added to matching +listeners. When adding network filters to http connections, care +should be taken to ensure that the filter is added before +envoy.httpconnectionmanager.

+ +
+
+

EnvoyFilter.Filter

+
+

Envoy filters to be added to a network or http filter chain.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
listenerMatchEnvoyFilter.ListenerMatch +

Filter will be added to the listener only if the match conditions are true. +If not specified, the filters will be applied to all listeners.

+ +
insertPositionEnvoyFilter.InsertPosition +

Insert position in the filter chain. Defaults to FIRST

+ +
filterTypeEnvoyFilter.Filter.FilterType +

REQUIRED: The type of filter to instantiate.

+ +
filterNamestring +

REQUIRED: The name of the filter to instantiate. The name must match a supported +filter compiled into Envoy.

+ +
filterConfiggoogle.protobuf.Struct +

REQUIRED: Filter specific configuration which depends on the filter being +instantiated.

+ +
+
+

EnvoyFilter.Filter.FilterType

+
+ + + + + + + + + + + + + + + + + + + + + +
NameDescription
INVALID +

placeholder

+ +
HTTP +

Http filter

+ +
NETWORK +

Network filter

+ +
+
+

EnvoyFilter.InsertPosition

+
+

Indicates the relative index in the filter chain where the filter should be inserted.

+ + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
indexEnvoyFilter.InsertPosition.Index +

Position of this filter in the filter chain.

+ +
relativeTostring +

If BEFORE or AFTER position is specified, specify the name of the +filter relative to which this filter should be inserted.

+ +
+
+

EnvoyFilter.InsertPosition.Index

+
+

Index/position in the filter chain.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescription
FIRST +

Insert first

+ +
LAST +

Insert last

+ +
BEFORE +

Insert before the named filter.

+ +
AFTER +

Insert after the named filter.

+ +
+
+

EnvoyFilter.ListenerMatch

+
+

Select a listener to add the filter to based on the match conditions. +All conditions specified in the ListenerMatch must be met for the filter +to be applied to a listener.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
portNumberuint32 +

The service port/gateway port to which traffic is being +sent/received. If not specified, matches all listeners. Even though +inbound listeners are generated for the instance/pod ports, only +service ports should be used to match listeners.

+ +
portNamePrefixstring +

Instead of using specific port numbers, a set of ports matching a +given port name prefix can be selected. E.g., “mongo” selects ports +named mongo-port, mongo, mongoDB, MONGO, etc. Matching is case +insensitive.

+ +
listenerTypeEnvoyFilter.ListenerMatch.ListenerType +

Inbound vs outbound sidecar listener or gateway listener. If not specified, +matches all listeners.

+ +
listenerProtocolEnvoyFilter.ListenerMatch.ListenerProtocol +

Selects a class of listeners for the same protocol. If not +specified, applies to listeners on all protocols. Use the protocol +selection to select all HTTP listeners (includes HTTP2/gRPC/HTTPS +where Envoy terminates TLS) or all TCP listeners (includes HTTPS +passthrough using SNI).

+ +
addressstring[] +

One or more IP addresses to which the listener is bound. If +specified, should match at least one address in the list.

+ +
+
+

EnvoyFilter.ListenerMatch.ListenerProtocol

+
+ + + + + + + + + + + + + + + + + + + + + +
NameDescription
ALL +

All protocols

+ +
HTTP +

HTTP or HTTPS (with termination) / HTTP2/gRPC

+ +
TCP +

Any non-HTTP listener

+ +
+
+

EnvoyFilter.ListenerMatch.ListenerType

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescription
ANY +

All listeners

+ +
SIDECAR_INBOUND +

Inbound listener in sidecar

+ +
SIDECAR_OUTBOUND +

Outbound listener in sidecar

+ +
GATEWAY +

Gateway listener

+ +
+
diff --git a/networking/v1alpha3/envoy_filter.proto b/networking/v1alpha3/envoy_filter.proto index c944675e558..6f271d1f0a9 100644 --- a/networking/v1alpha3/envoy_filter.proto +++ b/networking/v1alpha3/envoy_filter.proto @@ -16,9 +16,9 @@ syntax = "proto3"; import "google/protobuf/struct.proto"; -package istio.networking.v1alpha3; - -option go_package = "istio.io/api/networking/v1alpha3"; +// $title: Envoy Filter +// $description: Configuration affecting insertion of custom Envoy filters. +// $location: https://istio.io/docs/reference/config/networking/v1alpha3/envoy-filter.html // `EnvoyFilter` describes Envoy proxy-specific filters that can be used to // customize the Envoy proxy configuration generated by Istio networking @@ -50,13 +50,17 @@ option go_package = "istio.io/api/networking/v1alpha3"; // filters: // - listenerMatch: // portNumber: 8080 -// listenerType: SIDECAR_INBOUND #will match with the inbound listener for reviews:8080 +// listenerType: SIDECAR_INBOUND # will match with the inbound listener for reviews:8080 // filterName: envoy.lua // filterType: HTTP // filterConfig: // inlineCode: | // ... lua code ... // ``` +package istio.networking.v1alpha3; + +option go_package = "istio.io/api/networking/v1alpha3"; + message EnvoyFilter { // One or more labels that indicate a specific set of pods/VMs whose // proxies should be configured to use these additional filters. The diff --git a/networking/v1alpha3/gateway.pb.go b/networking/v1alpha3/gateway.pb.go index 0bb2c9e736f..53ff90247ba 100644 --- a/networking/v1alpha3/gateway.pb.go +++ b/networking/v1alpha3/gateway.pb.go @@ -1,115 +1,18 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: networking/v1alpha3/gateway.proto -package v1alpha3 - -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" - -import io "io" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// TLS modes enforced by the proxy -type Server_TLSOptions_TLSmode int32 - -const ( - // The SNI string presented by the client will be used as the match - // criterion in a VirtualService TLS route to determine the - // destination service from the service registry. - Server_TLSOptions_PASSTHROUGH Server_TLSOptions_TLSmode = 0 - // Secure connections with standard TLS semantics. - Server_TLSOptions_SIMPLE Server_TLSOptions_TLSmode = 1 - // Secure connections to the upstream using mutual TLS by presenting - // client certificates for authentication. - Server_TLSOptions_MUTUAL Server_TLSOptions_TLSmode = 2 - // Similar to the passthrough mode, except servers with this TLS mode - // do not require an associated VirtualService to map from the SNI - // value to service in the registry. The destination details such as - // the service/subset/port are encoded in the SNI value. The proxy - // will forward to the upstream (Envoy) cluster (a group of - // endpoints) specified by the SNI value. This server is typically - // used to provide connectivity between services in disparate L3 - // networks that otherwise do not have direct connectivity between - // their respective endpoints. Use of this mode assumes that both the - // source and the destination are using Istio mTLS to secure traffic. - Server_TLSOptions_AUTO_PASSTHROUGH Server_TLSOptions_TLSmode = 3 -) - -var Server_TLSOptions_TLSmode_name = map[int32]string{ - 0: "PASSTHROUGH", - 1: "SIMPLE", - 2: "MUTUAL", - 3: "AUTO_PASSTHROUGH", -} -var Server_TLSOptions_TLSmode_value = map[string]int32{ - "PASSTHROUGH": 0, - "SIMPLE": 1, - "MUTUAL": 2, - "AUTO_PASSTHROUGH": 3, -} - -func (x Server_TLSOptions_TLSmode) String() string { - return proto.EnumName(Server_TLSOptions_TLSmode_name, int32(x)) -} -func (Server_TLSOptions_TLSmode) EnumDescriptor() ([]byte, []int) { - return fileDescriptorGateway, []int{1, 0, 0} -} - -// TLS protocol versions. -type Server_TLSOptions_TLSProtocol int32 - -const ( - // Automatically choose the optimal TLS version. - Server_TLSOptions_TLS_AUTO Server_TLSOptions_TLSProtocol = 0 - // TLS version 1.0 - Server_TLSOptions_TLSV1_0 Server_TLSOptions_TLSProtocol = 1 - // TLS version 1.1 - Server_TLSOptions_TLSV1_1 Server_TLSOptions_TLSProtocol = 2 - // TLS version 1.2 - Server_TLSOptions_TLSV1_2 Server_TLSOptions_TLSProtocol = 3 - // TLS version 1.3 - Server_TLSOptions_TLSV1_3 Server_TLSOptions_TLSProtocol = 4 -) - -var Server_TLSOptions_TLSProtocol_name = map[int32]string{ - 0: "TLS_AUTO", - 1: "TLSV1_0", - 2: "TLSV1_1", - 3: "TLSV1_2", - 4: "TLSV1_3", -} -var Server_TLSOptions_TLSProtocol_value = map[string]int32{ - "TLS_AUTO": 0, - "TLSV1_0": 1, - "TLSV1_1": 2, - "TLSV1_2": 3, - "TLSV1_3": 4, -} - -func (x Server_TLSOptions_TLSProtocol) String() string { - return proto.EnumName(Server_TLSOptions_TLSProtocol_name, int32(x)) -} -func (Server_TLSOptions_TLSProtocol) EnumDescriptor() ([]byte, []int) { - return fileDescriptorGateway, []int{1, 0, 1} -} - // `Gateway` describes a load balancer operating at the edge of the mesh // receiving incoming or outgoing HTTP/TCP connections. The specification // describes a set of ports that should be exposed, the type of protocol to // use, SNI configuration for the load balancer, etc. // // For example, the following Gateway configuration sets up a proxy to act -// as a load balancer exposing port 80 and 9080 (http), 443 (https), and -// port 2379 (TCP) for ingress. The gateway will be applied to the proxy -// running on a pod with labels `app: my-gateway-controller`. While Istio -// will configure the proxy to listen on these ports, it is the -// responsibility of the user to ensure that external traffic to these -// ports are allowed into the mesh. +// as a load balancer exposing port 80 and 9080 (http), 443 (https), +// 9443(https) and port 2379 (TCP) for ingress. The gateway will be +// applied to the proxy running on a pod with labels `app: +// my-gateway-controller`. While Istio will configure the proxy to listen +// on these ports, it is the responsibility of the user to ensure that +// external traffic to these ports are allowed into the mesh. // // ```yaml // apiVersion: networking.istio.io/v1alpha3 @@ -138,10 +41,19 @@ func (Server_TLSOptions_TLSProtocol) EnumDescriptor() ([]byte, []int) { // - uk.bookinfo.com // - eu.bookinfo.com // tls: -// mode: SIMPLE #enables HTTPS on this port +// mode: SIMPLE # enables HTTPS on this port // serverCertificate: /etc/certs/servercert.pem // privateKey: /etc/certs/privatekey.pem // - port: +// number: 9443 +// name: https +// protocol: HTTPS +// hosts: +// - "bookinfo-namespace/*.bookinfo.com" +// tls: +// mode: SIMPLE # enables HTTPS on this port +// credentialName: bookinfo-secret # fetches certs from kubernetes secret +// - port: // number: 9080 // name: http-wildcard // protocol: HTTP @@ -154,6 +66,7 @@ func (Server_TLSOptions_TLSProtocol) EnumDescriptor() ([]byte, []int) { // hosts: // - "*" // ``` +// // The Gateway specification above describes the L4-L6 properties of a load // balancer. A `VirtualService` can then be bound to a gateway to control // the forwarding of traffic arriving at a particular host or gateway port. @@ -220,7 +133,7 @@ func (Server_TLSOptions_TLSProtocol) EnumDescriptor() ([]byte, []int) { // namespace: bookinfo-namespace // spec: // hosts: -// - mongosvr.prod.svc.cluster.local #name of internal Mongo service +// - mongosvr.prod.svc.cluster.local # name of internal Mongo service // gateways: // - some-config-namespace/my-gateway # can omit the namespace if gateway is in same // namespace as virtual service. @@ -233,21 +146,187 @@ func (Server_TLSOptions_TLSProtocol) EnumDescriptor() ([]byte, []int) { // port: // number: 5555 // ``` +// +// It is possible to restrict the set of virtual services that can bind to +// a gateway server using the namespace/hostname syntax in the hosts field. +// For example, the following Gateway allows any virtual service in the ns1 +// namespace to bind to it, while restricting only the virtual service with +// foo.bar.com host in the ns2 namespace to bind to it. +// +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: Gateway +// metadata: +// name: my-gateway +// namespace: some-config-namespace +// spec: +// selector: +// app: my-gateway-controller +// servers: +// - port: +// number: 80 +// name: http +// protocol: HTTP +// hosts: +// - "ns1/*" +// - "ns2/foo.bar.com" +// ``` +// + +package v1alpha3 + +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +// TLS modes enforced by the proxy +type Server_TLSOptions_TLSmode int32 + +const ( + // The SNI string presented by the client will be used as the match + // criterion in a VirtualService TLS route to determine the + // destination service from the service registry. + Server_TLSOptions_PASSTHROUGH Server_TLSOptions_TLSmode = 0 + // Secure connections with standard TLS semantics. + Server_TLSOptions_SIMPLE Server_TLSOptions_TLSmode = 1 + // Secure connections to the upstream using mutual TLS by presenting + // client certificates for authentication. + Server_TLSOptions_MUTUAL Server_TLSOptions_TLSmode = 2 + // Similar to the passthrough mode, except servers with this TLS mode + // do not require an associated VirtualService to map from the SNI + // value to service in the registry. The destination details such as + // the service/subset/port are encoded in the SNI value. The proxy + // will forward to the upstream (Envoy) cluster (a group of + // endpoints) specified by the SNI value. This server is typically + // used to provide connectivity between services in disparate L3 + // networks that otherwise do not have direct connectivity between + // their respective endpoints. Use of this mode assumes that both the + // source and the destination are using Istio mTLS to secure traffic. + Server_TLSOptions_AUTO_PASSTHROUGH Server_TLSOptions_TLSmode = 3 +) + +var Server_TLSOptions_TLSmode_name = map[int32]string{ + 0: "PASSTHROUGH", + 1: "SIMPLE", + 2: "MUTUAL", + 3: "AUTO_PASSTHROUGH", +} + +var Server_TLSOptions_TLSmode_value = map[string]int32{ + "PASSTHROUGH": 0, + "SIMPLE": 1, + "MUTUAL": 2, + "AUTO_PASSTHROUGH": 3, +} + +func (x Server_TLSOptions_TLSmode) String() string { + return proto.EnumName(Server_TLSOptions_TLSmode_name, int32(x)) +} + +func (Server_TLSOptions_TLSmode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_067d98d02f84cc0b, []int{1, 0, 0} +} + +// TLS protocol versions. +type Server_TLSOptions_TLSProtocol int32 + +const ( + // Automatically choose the optimal TLS version. + Server_TLSOptions_TLS_AUTO Server_TLSOptions_TLSProtocol = 0 + // TLS version 1.0 + Server_TLSOptions_TLSV1_0 Server_TLSOptions_TLSProtocol = 1 + // TLS version 1.1 + Server_TLSOptions_TLSV1_1 Server_TLSOptions_TLSProtocol = 2 + // TLS version 1.2 + Server_TLSOptions_TLSV1_2 Server_TLSOptions_TLSProtocol = 3 + // TLS version 1.3 + Server_TLSOptions_TLSV1_3 Server_TLSOptions_TLSProtocol = 4 +) + +var Server_TLSOptions_TLSProtocol_name = map[int32]string{ + 0: "TLS_AUTO", + 1: "TLSV1_0", + 2: "TLSV1_1", + 3: "TLSV1_2", + 4: "TLSV1_3", +} + +var Server_TLSOptions_TLSProtocol_value = map[string]int32{ + "TLS_AUTO": 0, + "TLSV1_0": 1, + "TLSV1_1": 2, + "TLSV1_2": 3, + "TLSV1_3": 4, +} + +func (x Server_TLSOptions_TLSProtocol) String() string { + return proto.EnumName(Server_TLSOptions_TLSProtocol_name, int32(x)) +} + +func (Server_TLSOptions_TLSProtocol) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_067d98d02f84cc0b, []int{1, 0, 1} +} + type Gateway struct { // REQUIRED: A list of server specifications. - Servers []*Server `protobuf:"bytes,1,rep,name=servers" json:"servers,omitempty"` + Servers []*Server `protobuf:"bytes,1,rep,name=servers,proto3" json:"servers,omitempty"` // REQUIRED: One or more labels that indicate a specific set of pods/VMs // on which this gateway configuration should be applied. The scope of // label search is restricted to the configuration namespace in which the // the resource is present. In other words, the Gateway resource must // reside in the same namespace as the gateway workload. - Selector map[string]string `protobuf:"bytes,2,rep,name=selector" json:"selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Selector map[string]string `protobuf:"bytes,2,rep,name=selector,proto3" json:"selector,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *Gateway) Reset() { *m = Gateway{} } -func (m *Gateway) String() string { return proto.CompactTextString(m) } -func (*Gateway) ProtoMessage() {} -func (*Gateway) Descriptor() ([]byte, []int) { return fileDescriptorGateway, []int{0} } +func (m *Gateway) Reset() { *m = Gateway{} } +func (m *Gateway) String() string { return proto.CompactTextString(m) } +func (*Gateway) ProtoMessage() {} +func (*Gateway) Descriptor() ([]byte, []int) { + return fileDescriptor_067d98d02f84cc0b, []int{0} +} +func (m *Gateway) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Gateway) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Gateway.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Gateway) XXX_Merge(src proto.Message) { + xxx_messageInfo_Gateway.Merge(m, src) +} +func (m *Gateway) XXX_Size() int { + return m.Size() +} +func (m *Gateway) XXX_DiscardUnknown() { + xxx_messageInfo_Gateway.DiscardUnknown(m) +} + +var xxx_messageInfo_Gateway proto.InternalMessageInfo func (m *Gateway) GetServers() []*Server { if m != nil { @@ -326,43 +405,84 @@ func (m *Gateway) GetSelector() map[string]string { // ``` type Server struct { // REQUIRED: The Port on which the proxy should listen for incoming - // connections. If using unix domain socket, use 0 as the port number, - // with a valid protocol and port name, along with the bind parameter. - Port *Port `protobuf:"bytes,1,opt,name=port" json:"port,omitempty"` + // connections. + Port *Port `protobuf:"bytes,1,opt,name=port,proto3" json:"port,omitempty"` // $hide_from_docs - // The ip or the unix domain socket to which the listener should be bound - // to. Format: x.x.x.x or unix:///path/to/uds or unix://@foobar (Linux - // abstract namespace). + // The ip or the Unix domain socket to which the listener should be bound + // to. Format: `x.x.x.x` or `unix:///path/to/uds` or `unix://@foobar` + // (Linux abstract namespace). When using unix domain sockets, the port + // number should be 0. Bind string `protobuf:"bytes,4,opt,name=bind,proto3" json:"bind,omitempty"` - // REQUIRED. A list of hosts exposed by this gateway. At least one - // host is required. While typically applicable to - // HTTP services, it can also be used for TCP services using TLS with - // SNI. May contain a wildcard prefix for the bottom-level component of - // a domain name. For example `*.foo.com` matches `bar.foo.com` - // and `*.com` matches `bar.foo.com`, `example.com`, and so on. + // REQUIRED. One or more hosts exposed by this gateway. + // While typically applicable to + // HTTP services, it can also be used for TCP services using TLS with SNI. + // A host is specified as a `dnsName` with an optional `namespace/` prefix. + // The `dnsName` should be specified using FQDN format, opionally including + // a wildcard character in the left-most component (e.g., `prod/*.example.com`). + // Set the `dnsName` to `*` to select all `VirtualService` hosts from the + // specified namespace (e.g.,`prod/*`). If no `namespace/` is specified, + // the `VirtualService` hosts will be selected from any available namespace. + // Any associated `DestinationRule` in the same namespace will also be used. // - // **Note**: A `VirtualService` that is bound to a gateway must have one - // or more hosts that match the hosts specified in a server. The match + // A `VirtualService` must be bound to the gateway and must have one or + // more hosts that match the hosts specified in a server. The match // could be an exact match or a suffix match with the server's hosts. For - // example, if the server's hosts specifies "*.example.com", - // VirtualServices with hosts dev.example.com, prod.example.com will - // match. However, VirtualServices with hosts example.com or - // newexample.com will not match. - Hosts []string `protobuf:"bytes,2,rep,name=hosts" json:"hosts,omitempty"` + // example, if the server's hosts specifies `*.example.com`, a + // `VirtualService` with hosts `dev.example.com` or `prod.example.com` will + // match. However, a `VirtualService` with host `example.com` or + // `newexample.com` will not match. + // + // NOTE: Only virtual services exported to the gateway's namespace + // (e.g., `exportTo` value of `*`) can be referenced. + // Private configurations (e.g., `exportTo` set to `.`) will not be + // available. Refer to the `exportTo` setting in `VirtualService`, + // `DestinationRule`, and `ServiceEntry` configurations for details. + Hosts []string `protobuf:"bytes,2,rep,name=hosts,proto3" json:"hosts,omitempty"` // Set of TLS related options that govern the server's behavior. Use // these options to control if all http requests should be redirected to // https, and the TLS modes to use. - Tls *Server_TLSOptions `protobuf:"bytes,3,opt,name=tls" json:"tls,omitempty"` - // The loopback IP endpoint or unix domain socket to which traffic should - // be forwarded to by default. Format should be 127.0.0.1:PORT or - // unix:///path/to/socket or unix://@foobar (Linux abstract namespace). - DefaultEndpoint string `protobuf:"bytes,5,opt,name=default_endpoint,json=defaultEndpoint,proto3" json:"default_endpoint,omitempty"` + Tls *Server_TLSOptions `protobuf:"bytes,3,opt,name=tls,proto3" json:"tls,omitempty"` + // The loopback IP endpoint or Unix domain socket to which traffic should + // be forwarded to by default. Format should be `127.0.0.1:PORT` or + // `unix:///path/to/socket` or `unix://@foobar` (Linux abstract namespace). + DefaultEndpoint string `protobuf:"bytes,5,opt,name=default_endpoint,json=defaultEndpoint,proto3" json:"default_endpoint,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *Server) Reset() { *m = Server{} } -func (m *Server) String() string { return proto.CompactTextString(m) } -func (*Server) ProtoMessage() {} -func (*Server) Descriptor() ([]byte, []int) { return fileDescriptorGateway, []int{1} } +func (m *Server) Reset() { *m = Server{} } +func (m *Server) String() string { return proto.CompactTextString(m) } +func (*Server) ProtoMessage() {} +func (*Server) Descriptor() ([]byte, []int) { + return fileDescriptor_067d98d02f84cc0b, []int{1} +} +func (m *Server) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Server) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Server.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Server) XXX_Merge(src proto.Message) { + xxx_messageInfo_Server.Merge(m, src) +} +func (m *Server) XXX_Size() int { + return m.Size() +} +func (m *Server) XXX_DiscardUnknown() { + xxx_messageInfo_Server.DiscardUnknown(m) +} + +var xxx_messageInfo_Server proto.InternalMessageInfo func (m *Server) GetPort() *Port { if m != nil { @@ -418,35 +538,69 @@ type Server_TLSOptions struct { // client side certificate. CaCertificates string `protobuf:"bytes,5,opt,name=ca_certificates,json=caCertificates,proto3" json:"ca_certificates,omitempty"` // The credentialName stands for a unique identifier that can be used - // to identify the serverCertificate and the privateKey. The credentialName - // appended with suffix "-cacert" is used to identify the CaCertificates - // associated with this server. Gateway workloads capable of fetching - // credentials from a remote credential store will be configured to retrieve - // the serverCertificate and the privateKey using credentialName, instead of - // using the file system paths specified above. If using mutual TLS, + // to identify the serverCertificate and the privateKey. The + // credentialName appended with suffix "-cacert" is used to identify + // the CaCertificates associated with this server. Gateway workloads + // capable of fetching credentials from a remote credential store such + // as kubernetes secrets, will be configured to retrieve the + // serverCertificate and the privateKey using credentialName, instead + // of using the file system paths specified above. If using mutual TLS, // gateway workloads will retrieve the CaCertificates using - // credentialName-cacert. The semantics of the name are platform dependent. - // In Kubernetes, the default Istio supplied credential server expects the - // credentialName to match the name of the Kubernetes secret that holds the - // server certificate, the private key, and the CA certificate - // (if using mutual TLS). + // credentialName-cacert. The semantics of the name are platform + // dependent. In Kubernetes, the default Istio supplied credential + // server expects the credentialName to match the name of the + // Kubernetes secret that holds the server certificate, the private + // key, and the CA certificate (if using mutual TLS). Set the + // ISTIO_META_USER_SDS metadata variable in the gateway's proxy to + // enable the dynamic credential fetching feature. CredentialName string `protobuf:"bytes,10,opt,name=credential_name,json=credentialName,proto3" json:"credential_name,omitempty"` // A list of alternate names to verify the subject identity in the // certificate presented by the client. - SubjectAltNames []string `protobuf:"bytes,6,rep,name=subject_alt_names,json=subjectAltNames" json:"subject_alt_names,omitempty"` + SubjectAltNames []string `protobuf:"bytes,6,rep,name=subject_alt_names,json=subjectAltNames,proto3" json:"subject_alt_names,omitempty"` // Optional: Minimum TLS protocol version. MinProtocolVersion Server_TLSOptions_TLSProtocol `protobuf:"varint,7,opt,name=min_protocol_version,json=minProtocolVersion,proto3,enum=istio.networking.v1alpha3.Server_TLSOptions_TLSProtocol" json:"min_protocol_version,omitempty"` // Optional: Maximum TLS protocol version. MaxProtocolVersion Server_TLSOptions_TLSProtocol `protobuf:"varint,8,opt,name=max_protocol_version,json=maxProtocolVersion,proto3,enum=istio.networking.v1alpha3.Server_TLSOptions_TLSProtocol" json:"max_protocol_version,omitempty"` // Optional: If specified, only support the specified cipher list. // Otherwise default to the default cipher list supported by Envoy. - CipherSuites []string `protobuf:"bytes,9,rep,name=cipher_suites,json=cipherSuites" json:"cipher_suites,omitempty"` + CipherSuites []string `protobuf:"bytes,9,rep,name=cipher_suites,json=cipherSuites,proto3" json:"cipher_suites,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Server_TLSOptions) Reset() { *m = Server_TLSOptions{} } +func (m *Server_TLSOptions) String() string { return proto.CompactTextString(m) } +func (*Server_TLSOptions) ProtoMessage() {} +func (*Server_TLSOptions) Descriptor() ([]byte, []int) { + return fileDescriptor_067d98d02f84cc0b, []int{1, 0} +} +func (m *Server_TLSOptions) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Server_TLSOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Server_TLSOptions.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Server_TLSOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_Server_TLSOptions.Merge(m, src) +} +func (m *Server_TLSOptions) XXX_Size() int { + return m.Size() +} +func (m *Server_TLSOptions) XXX_DiscardUnknown() { + xxx_messageInfo_Server_TLSOptions.DiscardUnknown(m) } -func (m *Server_TLSOptions) Reset() { *m = Server_TLSOptions{} } -func (m *Server_TLSOptions) String() string { return proto.CompactTextString(m) } -func (*Server_TLSOptions) ProtoMessage() {} -func (*Server_TLSOptions) Descriptor() ([]byte, []int) { return fileDescriptorGateway, []int{1, 0} } +var xxx_messageInfo_Server_TLSOptions proto.InternalMessageInfo func (m *Server_TLSOptions) GetHttpsRedirect() bool { if m != nil { @@ -528,13 +682,44 @@ type Port struct { // the destination without terminating the TLS connection. Protocol string `protobuf:"bytes,2,opt,name=protocol,proto3" json:"protocol,omitempty"` // Label assigned to the port. - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Port) Reset() { *m = Port{} } +func (m *Port) String() string { return proto.CompactTextString(m) } +func (*Port) ProtoMessage() {} +func (*Port) Descriptor() ([]byte, []int) { + return fileDescriptor_067d98d02f84cc0b, []int{2} +} +func (m *Port) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Port) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Port.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Port) XXX_Merge(src proto.Message) { + xxx_messageInfo_Port.Merge(m, src) +} +func (m *Port) XXX_Size() int { + return m.Size() +} +func (m *Port) XXX_DiscardUnknown() { + xxx_messageInfo_Port.DiscardUnknown(m) } -func (m *Port) Reset() { *m = Port{} } -func (m *Port) String() string { return proto.CompactTextString(m) } -func (*Port) ProtoMessage() {} -func (*Port) Descriptor() ([]byte, []int) { return fileDescriptorGateway, []int{2} } +var xxx_messageInfo_Port proto.InternalMessageInfo func (m *Port) GetNumber() uint32 { if m != nil { @@ -558,13 +743,64 @@ func (m *Port) GetName() string { } func init() { + proto.RegisterEnum("istio.networking.v1alpha3.Server_TLSOptions_TLSmode", Server_TLSOptions_TLSmode_name, Server_TLSOptions_TLSmode_value) + proto.RegisterEnum("istio.networking.v1alpha3.Server_TLSOptions_TLSProtocol", Server_TLSOptions_TLSProtocol_name, Server_TLSOptions_TLSProtocol_value) proto.RegisterType((*Gateway)(nil), "istio.networking.v1alpha3.Gateway") + proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1alpha3.Gateway.SelectorEntry") proto.RegisterType((*Server)(nil), "istio.networking.v1alpha3.Server") proto.RegisterType((*Server_TLSOptions)(nil), "istio.networking.v1alpha3.Server.TLSOptions") proto.RegisterType((*Port)(nil), "istio.networking.v1alpha3.Port") - proto.RegisterEnum("istio.networking.v1alpha3.Server_TLSOptions_TLSmode", Server_TLSOptions_TLSmode_name, Server_TLSOptions_TLSmode_value) - proto.RegisterEnum("istio.networking.v1alpha3.Server_TLSOptions_TLSProtocol", Server_TLSOptions_TLSProtocol_name, Server_TLSOptions_TLSProtocol_value) } + +func init() { proto.RegisterFile("networking/v1alpha3/gateway.proto", fileDescriptor_067d98d02f84cc0b) } + +var fileDescriptor_067d98d02f84cc0b = []byte{ + // 674 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0x5d, 0x4f, 0x1a, 0x4d, + 0x14, 0x76, 0x01, 0xf9, 0x38, 0x88, 0xac, 0x13, 0xf3, 0x66, 0x5f, 0x2f, 0xfc, 0xa0, 0x69, 0x6a, + 0x9b, 0x76, 0x51, 0xe8, 0x85, 0xa9, 0x49, 0x13, 0xda, 0x18, 0x69, 0x8a, 0x42, 0x76, 0xc1, 0x8b, + 0xde, 0x6c, 0x86, 0x65, 0x94, 0xd1, 0x65, 0x67, 0x33, 0x33, 0xa0, 0xfc, 0xb3, 0xfe, 0x84, 0x5e, + 0xb6, 0xff, 0xa0, 0xb1, 0x7f, 0xa4, 0xd9, 0xd9, 0x41, 0xe8, 0x97, 0x8d, 0xe9, 0xdd, 0x39, 0xcf, + 0x3c, 0xcf, 0x73, 0xe6, 0x9c, 0xf9, 0x80, 0x9d, 0x90, 0xc8, 0x6b, 0xc6, 0xaf, 0x68, 0x78, 0x51, + 0x9d, 0xec, 0xe3, 0x20, 0x1a, 0xe2, 0x7a, 0xf5, 0x02, 0x4b, 0x72, 0x8d, 0xa7, 0x76, 0xc4, 0x99, + 0x64, 0xe8, 0x7f, 0x2a, 0x24, 0x65, 0xf6, 0x9c, 0x68, 0xcf, 0x88, 0x95, 0x2f, 0x06, 0xe4, 0x8e, + 0x13, 0x32, 0x3a, 0x84, 0x9c, 0x20, 0x7c, 0x42, 0xb8, 0xb0, 0x8c, 0xed, 0xf4, 0x6e, 0xb1, 0xb6, + 0x63, 0xff, 0x51, 0x68, 0xbb, 0x8a, 0xe9, 0xcc, 0x14, 0xa8, 0x05, 0x79, 0x41, 0x02, 0xe2, 0x4b, + 0xc6, 0xad, 0x94, 0x52, 0xef, 0xdd, 0xa3, 0xd6, 0x25, 0x6d, 0x57, 0x4b, 0x8e, 0x42, 0xc9, 0xa7, + 0xce, 0x9d, 0xc3, 0xc6, 0x21, 0x94, 0x7e, 0x58, 0x42, 0x26, 0xa4, 0xaf, 0xc8, 0xd4, 0x32, 0xb6, + 0x8d, 0xdd, 0x82, 0x13, 0x87, 0x68, 0x1d, 0x96, 0x27, 0x38, 0x18, 0x13, 0x2b, 0xa5, 0xb0, 0x24, + 0x79, 0x95, 0x3a, 0x30, 0x2a, 0x1f, 0x73, 0x90, 0x4d, 0xb6, 0x87, 0xea, 0x90, 0x89, 0x18, 0x97, + 0x4a, 0x57, 0xac, 0x6d, 0xdd, 0xb3, 0xa3, 0x0e, 0xe3, 0xd2, 0x51, 0x64, 0x84, 0x20, 0xd3, 0xa7, + 0xe1, 0xc0, 0xca, 0x28, 0x63, 0x15, 0xc7, 0xd5, 0x86, 0x4c, 0x48, 0xa1, 0x7a, 0x2b, 0x38, 0x49, + 0x82, 0x5e, 0x43, 0x5a, 0x06, 0xc2, 0x4a, 0x2b, 0xf7, 0xe7, 0x7f, 0x9d, 0x96, 0xdd, 0x6d, 0xb9, + 0xed, 0x48, 0x52, 0x16, 0x0a, 0x27, 0x16, 0xa2, 0xa7, 0x60, 0x0e, 0xc8, 0x39, 0x1e, 0x07, 0xd2, + 0x23, 0xe1, 0x20, 0x62, 0x34, 0x94, 0xd6, 0xb2, 0xaa, 0x5a, 0xd6, 0xf8, 0x91, 0x86, 0x37, 0xbe, + 0x2d, 0x03, 0xcc, 0xe5, 0xe8, 0x31, 0xac, 0x0e, 0xa5, 0x8c, 0x84, 0xc7, 0xc9, 0x80, 0x72, 0xe2, + 0x27, 0x2d, 0xe6, 0x9d, 0x92, 0x42, 0x1d, 0x0d, 0xa2, 0x26, 0x64, 0x46, 0x6c, 0x90, 0xcc, 0x68, + 0xb5, 0xf6, 0xf2, 0x21, 0x3b, 0x8c, 0xc3, 0x58, 0xeb, 0x28, 0x07, 0xf4, 0x02, 0x50, 0x72, 0xd4, + 0x9e, 0x4f, 0xb8, 0xa4, 0xe7, 0xd4, 0xc7, 0x92, 0xa8, 0xce, 0x0b, 0xce, 0x5a, 0xb2, 0xf2, 0x76, + 0xbe, 0x80, 0xb6, 0xa0, 0x18, 0x71, 0x3a, 0xc1, 0x92, 0x78, 0xf1, 0xb9, 0x25, 0xa3, 0x04, 0x0d, + 0xbd, 0x27, 0x53, 0xf4, 0x04, 0xca, 0x3e, 0x5e, 0xf4, 0x12, 0xba, 0xf3, 0x55, 0x1f, 0x2f, 0x18, + 0x09, 0x45, 0xe4, 0x64, 0x40, 0x42, 0x49, 0x71, 0xe0, 0x85, 0x78, 0x44, 0x2c, 0xd0, 0xc4, 0x3b, + 0xf8, 0x14, 0x8f, 0x08, 0x7a, 0x06, 0x6b, 0x62, 0xdc, 0xbf, 0x24, 0xbe, 0xf4, 0x70, 0x20, 0x15, + 0x53, 0x58, 0x59, 0x75, 0x5c, 0x65, 0xbd, 0xd0, 0x08, 0x64, 0x4c, 0x15, 0xe8, 0x12, 0xd6, 0x47, + 0x34, 0xf4, 0xd4, 0xf3, 0xf0, 0x59, 0xe0, 0xc5, 0x57, 0x98, 0xb2, 0xd0, 0xca, 0xa9, 0x39, 0x1d, + 0x3c, 0x74, 0x4e, 0x1d, 0xed, 0xe3, 0xa0, 0x11, 0x0d, 0x67, 0xc9, 0x59, 0xe2, 0xa9, 0x6a, 0xe1, + 0x9b, 0x5f, 0x6b, 0xe5, 0xff, 0xb9, 0x16, 0xbe, 0xf9, 0xb9, 0xd6, 0x23, 0x28, 0xf9, 0x34, 0x1a, + 0x12, 0xee, 0x89, 0x31, 0x8d, 0x67, 0x5a, 0x50, 0xfd, 0xaf, 0x24, 0xa0, 0xab, 0xb0, 0x4a, 0x13, + 0x72, 0xfa, 0x6c, 0x51, 0x19, 0x8a, 0x9d, 0x86, 0xeb, 0x76, 0x9b, 0x4e, 0xbb, 0x77, 0xdc, 0x34, + 0x97, 0x10, 0x40, 0xd6, 0x7d, 0x77, 0xd2, 0x69, 0x1d, 0x99, 0x46, 0x1c, 0x9f, 0xf4, 0xba, 0xbd, + 0x46, 0xcb, 0x4c, 0xa1, 0x75, 0x30, 0x1b, 0xbd, 0x6e, 0xdb, 0x5b, 0x64, 0xa7, 0x2b, 0x6d, 0x28, + 0x2e, 0xec, 0x08, 0xad, 0x40, 0xbe, 0xdb, 0x72, 0xbd, 0x98, 0x68, 0x2e, 0xa1, 0xa2, 0x2a, 0x73, + 0xb6, 0xef, 0xed, 0x99, 0xc6, 0x3c, 0xd9, 0x37, 0x53, 0xf3, 0xa4, 0x66, 0xa6, 0xe7, 0x49, 0xdd, + 0xcc, 0x54, 0x4e, 0x21, 0x13, 0x3f, 0x44, 0xf4, 0x1f, 0x64, 0xc3, 0xf1, 0xa8, 0x4f, 0xb8, 0xba, + 0xd6, 0x25, 0x47, 0x67, 0x68, 0x03, 0xf2, 0xb3, 0x39, 0xea, 0x77, 0x7f, 0x97, 0xc7, 0xcf, 0x56, + 0xdd, 0x8e, 0xe4, 0x4e, 0xaa, 0xf8, 0x8d, 0xfd, 0xe9, 0x76, 0xd3, 0xf8, 0x7c, 0xbb, 0x69, 0x7c, + 0xbd, 0xdd, 0x34, 0x3e, 0x6c, 0x27, 0xa3, 0xa6, 0xac, 0x8a, 0x23, 0x5a, 0xfd, 0xcd, 0xbf, 0xd9, + 0xcf, 0x2a, 0xb7, 0xfa, 0xf7, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd0, 0x11, 0xfe, 0x50, 0x55, 0x05, + 0x00, 0x00, +} + func (m *Gateway) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -609,6 +845,9 @@ func (m *Gateway) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], v) } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -674,6 +913,9 @@ func (m *Server) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintGateway(dAtA, i, uint64(len(m.DefaultEndpoint))) i += copy(dAtA[i:], m.DefaultEndpoint) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -771,6 +1013,9 @@ func (m *Server_TLSOptions) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintGateway(dAtA, i, uint64(len(m.CredentialName))) i += copy(dAtA[i:], m.CredentialName) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -806,6 +1051,9 @@ func (m *Port) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintGateway(dAtA, i, uint64(len(m.Name))) i += copy(dAtA[i:], m.Name) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -819,6 +1067,9 @@ func encodeVarintGateway(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *Gateway) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Servers) > 0 { @@ -835,10 +1086,16 @@ func (m *Gateway) Size() (n int) { n += mapEntrySize + 1 + sovGateway(uint64(mapEntrySize)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *Server) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Port != nil { @@ -863,10 +1120,16 @@ func (m *Server) Size() (n int) { if l > 0 { n += 1 + l + sovGateway(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *Server_TLSOptions) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.HttpsRedirect { @@ -909,10 +1172,16 @@ func (m *Server_TLSOptions) Size() (n int) { if l > 0 { n += 1 + l + sovGateway(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *Port) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Number != 0 { @@ -926,6 +1195,9 @@ func (m *Port) Size() (n int) { if l > 0 { n += 1 + l + sovGateway(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -957,7 +1229,7 @@ func (m *Gateway) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -985,7 +1257,7 @@ func (m *Gateway) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -994,6 +1266,9 @@ func (m *Gateway) Unmarshal(dAtA []byte) error { return ErrInvalidLengthGateway } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGateway + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1016,7 +1291,7 @@ func (m *Gateway) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1025,6 +1300,9 @@ func (m *Gateway) Unmarshal(dAtA []byte) error { return ErrInvalidLengthGateway } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGateway + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1045,7 +1323,7 @@ func (m *Gateway) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1062,7 +1340,7 @@ func (m *Gateway) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1072,6 +1350,9 @@ func (m *Gateway) Unmarshal(dAtA []byte) error { return ErrInvalidLengthGateway } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthGateway + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -1088,7 +1369,7 @@ func (m *Gateway) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1098,6 +1379,9 @@ func (m *Gateway) Unmarshal(dAtA []byte) error { return ErrInvalidLengthGateway } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthGateway + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -1129,9 +1413,13 @@ func (m *Gateway) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthGateway } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthGateway + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -1156,7 +1444,7 @@ func (m *Server) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1184,7 +1472,7 @@ func (m *Server) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1193,6 +1481,9 @@ func (m *Server) Unmarshal(dAtA []byte) error { return ErrInvalidLengthGateway } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGateway + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1217,7 +1508,7 @@ func (m *Server) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1227,6 +1518,9 @@ func (m *Server) Unmarshal(dAtA []byte) error { return ErrInvalidLengthGateway } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGateway + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1246,7 +1540,7 @@ func (m *Server) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1255,6 +1549,9 @@ func (m *Server) Unmarshal(dAtA []byte) error { return ErrInvalidLengthGateway } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGateway + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1279,7 +1576,7 @@ func (m *Server) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1289,6 +1586,9 @@ func (m *Server) Unmarshal(dAtA []byte) error { return ErrInvalidLengthGateway } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGateway + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1308,7 +1608,7 @@ func (m *Server) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1318,6 +1618,9 @@ func (m *Server) Unmarshal(dAtA []byte) error { return ErrInvalidLengthGateway } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGateway + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1332,9 +1635,13 @@ func (m *Server) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthGateway } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthGateway + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -1359,7 +1666,7 @@ func (m *Server_TLSOptions) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1387,7 +1694,7 @@ func (m *Server_TLSOptions) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1407,7 +1714,7 @@ func (m *Server_TLSOptions) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Mode |= (Server_TLSOptions_TLSmode(b) & 0x7F) << shift + m.Mode |= Server_TLSOptions_TLSmode(b&0x7F) << shift if b < 0x80 { break } @@ -1426,7 +1733,7 @@ func (m *Server_TLSOptions) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1436,6 +1743,9 @@ func (m *Server_TLSOptions) Unmarshal(dAtA []byte) error { return ErrInvalidLengthGateway } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGateway + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1455,7 +1765,7 @@ func (m *Server_TLSOptions) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1465,6 +1775,9 @@ func (m *Server_TLSOptions) Unmarshal(dAtA []byte) error { return ErrInvalidLengthGateway } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGateway + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1484,7 +1797,7 @@ func (m *Server_TLSOptions) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1494,6 +1807,9 @@ func (m *Server_TLSOptions) Unmarshal(dAtA []byte) error { return ErrInvalidLengthGateway } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGateway + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1513,7 +1829,7 @@ func (m *Server_TLSOptions) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1523,6 +1839,9 @@ func (m *Server_TLSOptions) Unmarshal(dAtA []byte) error { return ErrInvalidLengthGateway } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGateway + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1542,7 +1861,7 @@ func (m *Server_TLSOptions) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.MinProtocolVersion |= (Server_TLSOptions_TLSProtocol(b) & 0x7F) << shift + m.MinProtocolVersion |= Server_TLSOptions_TLSProtocol(b&0x7F) << shift if b < 0x80 { break } @@ -1561,7 +1880,7 @@ func (m *Server_TLSOptions) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.MaxProtocolVersion |= (Server_TLSOptions_TLSProtocol(b) & 0x7F) << shift + m.MaxProtocolVersion |= Server_TLSOptions_TLSProtocol(b&0x7F) << shift if b < 0x80 { break } @@ -1580,7 +1899,7 @@ func (m *Server_TLSOptions) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1590,6 +1909,9 @@ func (m *Server_TLSOptions) Unmarshal(dAtA []byte) error { return ErrInvalidLengthGateway } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGateway + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1609,7 +1931,7 @@ func (m *Server_TLSOptions) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1619,6 +1941,9 @@ func (m *Server_TLSOptions) Unmarshal(dAtA []byte) error { return ErrInvalidLengthGateway } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGateway + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1633,9 +1958,13 @@ func (m *Server_TLSOptions) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthGateway } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthGateway + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -1660,7 +1989,7 @@ func (m *Port) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1688,7 +2017,7 @@ func (m *Port) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Number |= (uint32(b) & 0x7F) << shift + m.Number |= uint32(b&0x7F) << shift if b < 0x80 { break } @@ -1707,7 +2036,7 @@ func (m *Port) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1717,6 +2046,9 @@ func (m *Port) Unmarshal(dAtA []byte) error { return ErrInvalidLengthGateway } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGateway + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1736,7 +2068,7 @@ func (m *Port) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1746,6 +2078,9 @@ func (m *Port) Unmarshal(dAtA []byte) error { return ErrInvalidLengthGateway } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGateway + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1760,9 +2095,13 @@ func (m *Port) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthGateway } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthGateway + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -1826,10 +2165,13 @@ func skipGateway(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthGateway } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthGateway + } return iNdEx, nil case 3: for { @@ -1858,6 +2200,9 @@ func skipGateway(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthGateway + } } return iNdEx, nil case 4: @@ -1876,52 +2221,3 @@ var ( ErrInvalidLengthGateway = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowGateway = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("networking/v1alpha3/gateway.proto", fileDescriptorGateway) } - -var fileDescriptorGateway = []byte{ - // 674 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0xdb, 0x4e, 0xdb, 0x4c, - 0x10, 0xc6, 0x49, 0xc8, 0x61, 0x42, 0x88, 0x59, 0xa1, 0x5f, 0xfe, 0xb9, 0xe0, 0x90, 0xaa, 0x2a, - 0xad, 0x5a, 0x07, 0x92, 0x5e, 0xa0, 0x22, 0x55, 0x4a, 0x2b, 0x44, 0xaa, 0x06, 0x12, 0xd9, 0x09, - 0x17, 0xbd, 0xb1, 0x36, 0xce, 0x42, 0x16, 0x1c, 0xaf, 0xb5, 0xbb, 0x09, 0xe4, 0xcd, 0xfa, 0x08, - 0xbd, 0x6c, 0xdf, 0xa0, 0xa2, 0x2f, 0x52, 0xed, 0xda, 0x21, 0xe9, 0x89, 0x0a, 0xf5, 0x6e, 0xe6, - 0x9b, 0x99, 0x6f, 0x66, 0xbe, 0x59, 0x1b, 0x76, 0x42, 0x22, 0xaf, 0x19, 0xbf, 0xa2, 0xe1, 0x45, - 0x75, 0xb2, 0x8f, 0x83, 0x68, 0x88, 0xeb, 0xd5, 0x0b, 0x2c, 0xc9, 0x35, 0x9e, 0xda, 0x11, 0x67, - 0x92, 0xa1, 0xff, 0xa9, 0x90, 0x94, 0xd9, 0xf3, 0x44, 0x7b, 0x96, 0x58, 0xf9, 0x62, 0x40, 0xee, - 0x38, 0x4e, 0x46, 0x87, 0x90, 0x13, 0x84, 0x4f, 0x08, 0x17, 0x96, 0xb1, 0x9d, 0xde, 0x2d, 0xd6, - 0x76, 0xec, 0x3f, 0x16, 0xda, 0xae, 0xce, 0x74, 0x66, 0x15, 0xa8, 0x05, 0x79, 0x41, 0x02, 0xe2, - 0x4b, 0xc6, 0xad, 0x94, 0xae, 0xde, 0xbb, 0xa7, 0x3a, 0x69, 0x69, 0xbb, 0x49, 0xc9, 0x51, 0x28, - 0xf9, 0xd4, 0xb9, 0x63, 0xd8, 0x38, 0x84, 0xd2, 0x0f, 0x21, 0x64, 0x42, 0xfa, 0x8a, 0x4c, 0x2d, - 0x63, 0xdb, 0xd8, 0x2d, 0x38, 0xca, 0x44, 0xeb, 0xb0, 0x3c, 0xc1, 0xc1, 0x98, 0x58, 0x29, 0x8d, - 0xc5, 0xce, 0xab, 0xd4, 0x81, 0x51, 0xf9, 0x98, 0x83, 0x6c, 0x3c, 0x1e, 0xaa, 0x43, 0x26, 0x62, - 0x5c, 0xea, 0xba, 0x62, 0x6d, 0xeb, 0x9e, 0x89, 0x3a, 0x8c, 0x4b, 0x47, 0x27, 0x2b, 0xe6, 0x21, - 0x13, 0x52, 0xe8, 0x3d, 0x0a, 0x4e, 0xec, 0xa0, 0xd7, 0x90, 0x96, 0x81, 0xb0, 0xd2, 0x9a, 0xe9, - 0xf9, 0x5f, 0x95, 0xb1, 0xbb, 0x2d, 0xb7, 0x1d, 0x49, 0xca, 0x42, 0xe1, 0xa8, 0x42, 0x84, 0x20, - 0xd3, 0xa7, 0xe1, 0xc0, 0xca, 0xe8, 0x71, 0xb5, 0x8d, 0x9e, 0x82, 0x39, 0x20, 0xe7, 0x78, 0x1c, - 0x48, 0x8f, 0x84, 0x83, 0x88, 0xd1, 0x50, 0x5a, 0xcb, 0x3a, 0x5e, 0x4e, 0xf0, 0xa3, 0x04, 0xde, - 0xf8, 0xb6, 0x0c, 0x30, 0xa7, 0x44, 0x8f, 0x61, 0x75, 0x28, 0x65, 0x24, 0x3c, 0x4e, 0x06, 0x94, - 0x13, 0x3f, 0x5e, 0x31, 0xef, 0x94, 0x34, 0xea, 0x24, 0x20, 0x6a, 0x42, 0x66, 0xc4, 0x06, 0xb1, - 0x46, 0xab, 0xb5, 0x97, 0x0f, 0x99, 0x5a, 0x99, 0xaa, 0xd6, 0xd1, 0x0c, 0xe8, 0x05, 0xa0, 0xf8, - 0xd4, 0x9e, 0x4f, 0xb8, 0xa4, 0xe7, 0xd4, 0xc7, 0x92, 0x68, 0x35, 0x0a, 0xce, 0x5a, 0x1c, 0x79, - 0x3b, 0x0f, 0xa0, 0x2d, 0x28, 0x46, 0x9c, 0x4e, 0xb0, 0x24, 0x9e, 0xba, 0x5b, 0xbc, 0x34, 0x24, - 0xd0, 0x7b, 0x32, 0x45, 0x4f, 0xa0, 0xec, 0xe3, 0x45, 0x2e, 0x91, 0x6c, 0xbe, 0xea, 0xe3, 0x05, - 0x22, 0x81, 0x9e, 0xc1, 0x9a, 0x18, 0xf7, 0x2f, 0x89, 0x2f, 0x3d, 0x1c, 0x48, 0x2f, 0xc4, 0x23, - 0x22, 0xac, 0xac, 0xbe, 0x4c, 0x39, 0x09, 0x34, 0x02, 0x79, 0xaa, 0x60, 0x74, 0x09, 0xeb, 0x23, - 0x1a, 0x7a, 0xfa, 0xd5, 0xfb, 0x2c, 0xf0, 0xd4, 0xcb, 0xa4, 0x2c, 0xb4, 0x72, 0x7a, 0xfd, 0x83, - 0x87, 0xae, 0xdf, 0x49, 0x78, 0x1c, 0x34, 0xa2, 0xe1, 0xcc, 0x39, 0x8b, 0x39, 0x75, 0x2f, 0x7c, - 0xf3, 0x6b, 0xaf, 0xfc, 0x3f, 0xf7, 0xc2, 0x37, 0x3f, 0xf7, 0x7a, 0x04, 0x25, 0x9f, 0x46, 0x43, - 0xc2, 0x3d, 0x31, 0xa6, 0x4a, 0xaa, 0x82, 0xde, 0x7f, 0x25, 0x06, 0x5d, 0x8d, 0x69, 0x45, 0x39, - 0x19, 0x90, 0x50, 0x52, 0x1c, 0x68, 0x9d, 0x2c, 0x48, 0x14, 0xbd, 0x83, 0x95, 0x4c, 0x95, 0x26, - 0xe4, 0x92, 0xdb, 0xa2, 0x32, 0x14, 0x3b, 0x0d, 0xd7, 0xed, 0x36, 0x9d, 0x76, 0xef, 0xb8, 0x69, - 0x2e, 0x21, 0x80, 0xac, 0xfb, 0xee, 0xa4, 0xd3, 0x3a, 0x32, 0x0d, 0x65, 0x9f, 0xf4, 0xba, 0xbd, - 0x46, 0xcb, 0x4c, 0xa1, 0x75, 0x30, 0x1b, 0xbd, 0x6e, 0xdb, 0x5b, 0xcc, 0x4e, 0x57, 0xda, 0x50, - 0x5c, 0x18, 0x1d, 0xad, 0x40, 0xbe, 0xdb, 0x72, 0x3d, 0x95, 0x68, 0x2e, 0xa1, 0xa2, 0x6e, 0x73, - 0xb6, 0xef, 0xed, 0x99, 0xc6, 0xdc, 0xd9, 0x37, 0x53, 0x73, 0xa7, 0x66, 0xa6, 0xe7, 0x4e, 0xdd, - 0xcc, 0x54, 0x4e, 0x21, 0xa3, 0x3e, 0x44, 0xf4, 0x1f, 0x64, 0xc3, 0xf1, 0xa8, 0x4f, 0xb8, 0x7e, - 0xd6, 0x25, 0x27, 0xf1, 0xd0, 0x06, 0xe4, 0x67, 0x82, 0x27, 0xdf, 0xfd, 0x9d, 0xaf, 0x3e, 0x30, - 0xbd, 0x74, 0xfc, 0x26, 0xb5, 0xfd, 0xc6, 0xfe, 0x74, 0xbb, 0x69, 0x7c, 0xbe, 0xdd, 0x34, 0xbe, - 0xde, 0x6e, 0x1a, 0x1f, 0xb6, 0xe3, 0x9b, 0x50, 0x56, 0xc5, 0x11, 0xad, 0xfe, 0xe6, 0xbf, 0xd9, - 0xcf, 0x6a, 0xb6, 0xfa, 0xf7, 0x00, 0x00, 0x00, 0xff, 0xff, 0xaa, 0xbd, 0x84, 0xff, 0x55, 0x05, - 0x00, 0x00, -} diff --git a/networking/v1alpha3/gateway.pb.html b/networking/v1alpha3/gateway.pb.html new file mode 100644 index 00000000000..2e8bd131e75 --- /dev/null +++ b/networking/v1alpha3/gateway.pb.html @@ -0,0 +1,608 @@ +--- +title: Gateway +description: Configuration affecting edge load balancer. +location: https://istio.io/docs/reference/config/networking/v1alpha3/gateway.html +layout: protoc-gen-docs +generator: protoc-gen-docs +number_of_entries: 6 +--- +

Gateway describes a load balancer operating at the edge of the mesh +receiving incoming or outgoing HTTP/TCP connections. The specification +describes a set of ports that should be exposed, the type of protocol to +use, SNI configuration for the load balancer, etc.

+ +

For example, the following Gateway configuration sets up a proxy to act +as a load balancer exposing port 80 and 9080 (http), 443 (https), +9443(https) and port 2379 (TCP) for ingress. The gateway will be +applied to the proxy running on a pod with labels app: +my-gateway-controller. While Istio will configure the proxy to listen +on these ports, it is the responsibility of the user to ensure that +external traffic to these ports are allowed into the mesh.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: Gateway
+metadata:
+  name: my-gateway
+  namespace: some-config-namespace
+spec:
+  selector:
+    app: my-gateway-controller
+  servers:
+  - port:
+      number: 80
+      name: http
+      protocol: HTTP
+    hosts:
+    - uk.bookinfo.com
+    - eu.bookinfo.com
+    tls:
+      httpsRedirect: true # sends 301 redirect for http requests
+  - port:
+      number: 443
+      name: https
+      protocol: HTTPS
+    hosts:
+    - uk.bookinfo.com
+    - eu.bookinfo.com
+    tls:
+      mode: SIMPLE # enables HTTPS on this port
+      serverCertificate: /etc/certs/servercert.pem
+      privateKey: /etc/certs/privatekey.pem
+  - port:
+      number: 9443
+      name: https
+      protocol: HTTPS
+    hosts:
+    - "bookinfo-namespace/*.bookinfo.com"
+    tls:
+      mode: SIMPLE # enables HTTPS on this port
+      credentialName: bookinfo-secret # fetches certs from kubernetes secret
+  - port:
+      number: 9080
+      name: http-wildcard
+      protocol: HTTP
+    hosts:
+    - "*"
+  - port:
+      number: 2379 # to expose internal service via external port 2379
+      name: mongo
+      protocol: MONGO
+    hosts:
+    - "*"
+
+ +

The Gateway specification above describes the L4-L6 properties of a load +balancer. A VirtualService can then be bound to a gateway to control +the forwarding of traffic arriving at a particular host or gateway port.

+ +

For example, the following VirtualService splits traffic for +“https://uk.bookinfo.com/reviews”, “https://eu.bookinfo.com/reviews”, +“http://uk.bookinfo.com:9080/reviews”, +“http://eu.bookinfo.com:9080/reviews” into two versions (prod and qa) of +an internal reviews service on port 9080. In addition, requests +containing the cookie “user: dev-123” will be sent to special port 7777 +in the qa version. The same rule is also applicable inside the mesh for +requests to the “reviews.prod.svc.cluster.local” service. This rule is +applicable across ports 443, 9080. Note that “http://uk.bookinfo.com” +gets redirected to “https://uk.bookinfo.com” (i.e. 80 redirects to 443).

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: VirtualService
+metadata:
+  name: bookinfo-rule
+  namespace: bookinfo-namespace
+spec:
+  hosts:
+  - reviews.prod.svc.cluster.local
+  - uk.bookinfo.com
+  - eu.bookinfo.com
+  gateways:
+  - some-config-namespace/my-gateway
+  - mesh # applies to all the sidecars in the mesh
+  http:
+  - match:
+    - headers:
+        cookie:
+          user: dev-123
+    route:
+    - destination:
+        port:
+          number: 7777
+        host: reviews.qa.svc.cluster.local
+  - match:
+      uri:
+        prefix: /reviews/
+    route:
+    - destination:
+        port:
+          number: 9080 # can be omitted if its the only port for reviews
+        host: reviews.prod.svc.cluster.local
+      weight: 80
+    - destination:
+        host: reviews.qa.svc.cluster.local
+      weight: 20
+
+ +

The following VirtualService forwards traffic arriving at (external) +port 27017 to internal Mongo server on port 5555. This rule is not +applicable internally in the mesh as the gateway list omits the +reserved name mesh.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: VirtualService
+metadata:
+  name: bookinfo-Mongo
+  namespace: bookinfo-namespace
+spec:
+  hosts:
+  - mongosvr.prod.svc.cluster.local # name of internal Mongo service
+  gateways:
+  - some-config-namespace/my-gateway # can omit the namespace if gateway is in same
+                                       namespace as virtual service.
+  tcp:
+  - match:
+    - port: 27017
+    route:
+    - destination:
+        host: mongo.prod.svc.cluster.local
+        port:
+          number: 5555
+
+ +

It is possible to restrict the set of virtual services that can bind to +a gateway server using the namespace/hostname syntax in the hosts field. +For example, the following Gateway allows any virtual service in the ns1 +namespace to bind to it, while restricting only the virtual service with +foo.bar.com host in the ns2 namespace to bind to it.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: Gateway
+metadata:
+  name: my-gateway
+  namespace: some-config-namespace
+spec:
+  selector:
+    app: my-gateway-controller
+  servers:
+  - port:
+      number: 80
+      name: http
+      protocol: HTTP
+    hosts:
+    - "ns1/*"
+    - "ns2/foo.bar.com"
+
+ +

Gateway

+
+ + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
serversServer[] +

REQUIRED: A list of server specifications.

+ +
selectormap<string, string> +

REQUIRED: One or more labels that indicate a specific set of pods/VMs +on which this gateway configuration should be applied. The scope of +label search is restricted to the configuration namespace in which the +the resource is present. In other words, the Gateway resource must +reside in the same namespace as the gateway workload.

+ +
+
+

Port

+
+

Port describes the properties of a specific port of a service.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
numberuint32 +

REQUIRED: A valid non-negative integer port number.

+ +
protocolstring +

REQUIRED: The protocol exposed on the port. +MUST BE one of HTTP|HTTPS|GRPC|HTTP2|MONGO|TCP|TLS. +TLS implies the connection will be routed based on the SNI header to +the destination without terminating the TLS connection.

+ +
namestring +

Label assigned to the port.

+ +
+
+

Server

+
+

Server describes the properties of the proxy on a given load balancer +port. For example,

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: Gateway
+metadata:
+  name: my-ingress
+spec:
+  selector:
+    app: my-ingress-gateway
+  servers:
+  - port:
+      number: 80
+      name: http2
+      protocol: HTTP2
+    hosts:
+    - "*"
+
+ +

Another example

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: Gateway
+metadata:
+  name: my-tcp-ingress
+spec:
+  selector:
+    app: my-tcp-ingress-gateway
+  servers:
+  - port:
+      number: 27018
+      name: mongo
+      protocol: MONGO
+    hosts:
+    - "*"
+
+ +

The following is an example of TLS configuration for port 443

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: Gateway
+metadata:
+  name: my-tls-ingress
+spec:
+  selector:
+    app: my-tls-ingress-gateway
+  servers:
+  - port:
+      number: 443
+      name: https
+      protocol: HTTPS
+    hosts:
+    - "*"
+    tls:
+      mode: SIMPLE
+      serverCertificate: /etc/certs/server.pem
+      privateKey: /etc/certs/privatekey.pem
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
portPort +

REQUIRED: The Port on which the proxy should listen for incoming +connections.

+ +
hostsstring[] +

REQUIRED. One or more hosts exposed by this gateway. +While typically applicable to +HTTP services, it can also be used for TCP services using TLS with SNI. +A host is specified as a dnsName with an optional namespace/ prefix. +The dnsName should be specified using FQDN format, opionally including +a wildcard character in the left-most component (e.g., prod/*.example.com). +Set the dnsName to * to select all VirtualService hosts from the +specified namespace (e.g.,prod/*). If no namespace/ is specified, +the VirtualService hosts will be selected from any available namespace. +Any associated DestinationRule in the same namespace will also be used.

+ +

A VirtualService must be bound to the gateway and must have one or +more hosts that match the hosts specified in a server. The match +could be an exact match or a suffix match with the server’s hosts. For +example, if the server’s hosts specifies *.example.com, a +VirtualService with hosts dev.example.com or prod.example.com will +match. However, a VirtualService with host example.com or +newexample.com will not match.

+ +

NOTE: Only virtual services exported to the gateway’s namespace +(e.g., exportTo value of *) can be referenced. +Private configurations (e.g., exportTo set to .) will not be +available. Refer to the exportTo setting in VirtualService, +DestinationRule, and ServiceEntry configurations for details.

+ +
tlsServer.TLSOptions +

Set of TLS related options that govern the server’s behavior. Use +these options to control if all http requests should be redirected to +https, and the TLS modes to use.

+ +
defaultEndpointstring +

The loopback IP endpoint or Unix domain socket to which traffic should +be forwarded to by default. Format should be 127.0.0.1:PORT or +unix:///path/to/socket or unix://@foobar (Linux abstract namespace).

+ +
+
+

Server.TLSOptions

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
httpsRedirectbool +

If set to true, the load balancer will send a 301 redirect for all +http connections, asking the clients to use HTTPS.

+ +
modeServer.TLSOptions.TLSmode +

Optional: Indicates whether connections to this port should be +secured using TLS. The value of this field determines how TLS is +enforced.

+ +
serverCertificatestring +

REQUIRED if mode is SIMPLE or MUTUAL. The path to the file +holding the server-side TLS certificate to use.

+ +
privateKeystring +

REQUIRED if mode is SIMPLE or MUTUAL. The path to the file +holding the server’s private key.

+ +
caCertificatesstring +

REQUIRED if mode is MUTUAL. The path to a file containing +certificate authority certificates to use in verifying a presented +client side certificate.

+ +
credentialNamestring +

The credentialName stands for a unique identifier that can be used +to identify the serverCertificate and the privateKey. The +credentialName appended with suffix “-cacert” is used to identify +the CaCertificates associated with this server. Gateway workloads +capable of fetching credentials from a remote credential store such +as kubernetes secrets, will be configured to retrieve the +serverCertificate and the privateKey using credentialName, instead +of using the file system paths specified above. If using mutual TLS, +gateway workloads will retrieve the CaCertificates using +credentialName-cacert. The semantics of the name are platform +dependent. In Kubernetes, the default Istio supplied credential +server expects the credentialName to match the name of the +Kubernetes secret that holds the server certificate, the private +key, and the CA certificate (if using mutual TLS). Set the +ISTIOMETAUSER_SDS metadata variable in the gateway’s proxy to +enable the dynamic credential fetching feature.

+ +
subjectAltNamesstring[] +

A list of alternate names to verify the subject identity in the +certificate presented by the client.

+ +
minProtocolVersionServer.TLSOptions.TLSProtocol +

Optional: Minimum TLS protocol version.

+ +
maxProtocolVersionServer.TLSOptions.TLSProtocol +

Optional: Maximum TLS protocol version.

+ +
cipherSuitesstring[] +

Optional: If specified, only support the specified cipher list. +Otherwise default to the default cipher list supported by Envoy.

+ +
+
+

Server.TLSOptions.TLSProtocol

+
+

TLS protocol versions.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescription
TLS_AUTO +

Automatically choose the optimal TLS version.

+ +
TLSV1_0 +

TLS version 1.0

+ +
TLSV1_1 +

TLS version 1.1

+ +
TLSV1_2 +

TLS version 1.2

+ +
TLSV1_3 +

TLS version 1.3

+ +
+
+

Server.TLSOptions.TLSmode

+
+

TLS modes enforced by the proxy

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescription
PASSTHROUGH +

The SNI string presented by the client will be used as the match +criterion in a VirtualService TLS route to determine the +destination service from the service registry.

+ +
SIMPLE +

Secure connections with standard TLS semantics.

+ +
MUTUAL +

Secure connections to the upstream using mutual TLS by presenting +client certificates for authentication.

+ +
AUTO_PASSTHROUGH +

Similar to the passthrough mode, except servers with this TLS mode +do not require an associated VirtualService to map from the SNI +value to service in the registry. The destination details such as +the service/subset/port are encoded in the SNI value. The proxy +will forward to the upstream (Envoy) cluster (a group of +endpoints) specified by the SNI value. This server is typically +used to provide connectivity between services in disparate L3 +networks that otherwise do not have direct connectivity between +their respective endpoints. Use of this mode assumes that both the +source and the destination are using Istio mTLS to secure traffic.

+ +
+
diff --git a/networking/v1alpha3/gateway.proto b/networking/v1alpha3/gateway.proto index bc567376bdf..ea314aa192c 100644 --- a/networking/v1alpha3/gateway.proto +++ b/networking/v1alpha3/gateway.proto @@ -14,9 +14,9 @@ syntax = "proto3"; -package istio.networking.v1alpha3; - -option go_package = "istio.io/api/networking/v1alpha3"; +// $title: Gateway +// $description: Configuration affecting edge load balancer. +// $location: https://istio.io/docs/reference/config/networking/v1alpha3/gateway.html // `Gateway` describes a load balancer operating at the edge of the mesh // receiving incoming or outgoing HTTP/TCP connections. The specification @@ -24,12 +24,12 @@ option go_package = "istio.io/api/networking/v1alpha3"; // use, SNI configuration for the load balancer, etc. // // For example, the following Gateway configuration sets up a proxy to act -// as a load balancer exposing port 80 and 9080 (http), 443 (https), and -// port 2379 (TCP) for ingress. The gateway will be applied to the proxy -// running on a pod with labels `app: my-gateway-controller`. While Istio -// will configure the proxy to listen on these ports, it is the -// responsibility of the user to ensure that external traffic to these -// ports are allowed into the mesh. +// as a load balancer exposing port 80 and 9080 (http), 443 (https), +// 9443(https) and port 2379 (TCP) for ingress. The gateway will be +// applied to the proxy running on a pod with labels `app: +// my-gateway-controller`. While Istio will configure the proxy to listen +// on these ports, it is the responsibility of the user to ensure that +// external traffic to these ports are allowed into the mesh. // // ```yaml // apiVersion: networking.istio.io/v1alpha3 @@ -58,10 +58,19 @@ option go_package = "istio.io/api/networking/v1alpha3"; // - uk.bookinfo.com // - eu.bookinfo.com // tls: -// mode: SIMPLE #enables HTTPS on this port +// mode: SIMPLE # enables HTTPS on this port // serverCertificate: /etc/certs/servercert.pem // privateKey: /etc/certs/privatekey.pem // - port: +// number: 9443 +// name: https +// protocol: HTTPS +// hosts: +// - "bookinfo-namespace/*.bookinfo.com" +// tls: +// mode: SIMPLE # enables HTTPS on this port +// credentialName: bookinfo-secret # fetches certs from kubernetes secret +// - port: // number: 9080 // name: http-wildcard // protocol: HTTP @@ -74,6 +83,7 @@ option go_package = "istio.io/api/networking/v1alpha3"; // hosts: // - "*" // ``` +// // The Gateway specification above describes the L4-L6 properties of a load // balancer. A `VirtualService` can then be bound to a gateway to control // the forwarding of traffic arriving at a particular host or gateway port. @@ -140,7 +150,7 @@ option go_package = "istio.io/api/networking/v1alpha3"; // namespace: bookinfo-namespace // spec: // hosts: -// - mongosvr.prod.svc.cluster.local #name of internal Mongo service +// - mongosvr.prod.svc.cluster.local # name of internal Mongo service // gateways: // - some-config-namespace/my-gateway # can omit the namespace if gateway is in same // namespace as virtual service. @@ -153,6 +163,36 @@ option go_package = "istio.io/api/networking/v1alpha3"; // port: // number: 5555 // ``` +// +// It is possible to restrict the set of virtual services that can bind to +// a gateway server using the namespace/hostname syntax in the hosts field. +// For example, the following Gateway allows any virtual service in the ns1 +// namespace to bind to it, while restricting only the virtual service with +// foo.bar.com host in the ns2 namespace to bind to it. +// +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: Gateway +// metadata: +// name: my-gateway +// namespace: some-config-namespace +// spec: +// selector: +// app: my-gateway-controller +// servers: +// - port: +// number: 80 +// name: http +// protocol: HTTP +// hosts: +// - "ns1/*" +// - "ns2/foo.bar.com" +// ``` +// +package istio.networking.v1alpha3; + +option go_package = "istio.io/api/networking/v1alpha3"; + message Gateway { // REQUIRED: A list of server specifications. repeated Server servers = 1; @@ -228,30 +268,40 @@ message Gateway { // ``` message Server { // REQUIRED: The Port on which the proxy should listen for incoming - // connections. If using unix domain socket, use 0 as the port number, - // with a valid protocol and port name, along with the bind parameter. + // connections. Port port = 1; // $hide_from_docs - // The ip or the unix domain socket to which the listener should be bound - // to. Format: x.x.x.x or unix:///path/to/uds or unix://@foobar (Linux - // abstract namespace). + // The ip or the Unix domain socket to which the listener should be bound + // to. Format: `x.x.x.x` or `unix:///path/to/uds` or `unix://@foobar` + // (Linux abstract namespace). When using unix domain sockets, the port + // number should be 0. string bind = 4; - // REQUIRED. A list of hosts exposed by this gateway. At least one - // host is required. While typically applicable to - // HTTP services, it can also be used for TCP services using TLS with - // SNI. May contain a wildcard prefix for the bottom-level component of - // a domain name. For example `*.foo.com` matches `bar.foo.com` - // and `*.com` matches `bar.foo.com`, `example.com`, and so on. + // REQUIRED. One or more hosts exposed by this gateway. + // While typically applicable to + // HTTP services, it can also be used for TCP services using TLS with SNI. + // A host is specified as a `dnsName` with an optional `namespace/` prefix. + // The `dnsName` should be specified using FQDN format, opionally including + // a wildcard character in the left-most component (e.g., `prod/*.example.com`). + // Set the `dnsName` to `*` to select all `VirtualService` hosts from the + // specified namespace (e.g.,`prod/*`). If no `namespace/` is specified, + // the `VirtualService` hosts will be selected from any available namespace. + // Any associated `DestinationRule` in the same namespace will also be used. // - // **Note**: A `VirtualService` that is bound to a gateway must have one - // or more hosts that match the hosts specified in a server. The match + // A `VirtualService` must be bound to the gateway and must have one or + // more hosts that match the hosts specified in a server. The match // could be an exact match or a suffix match with the server's hosts. For - // example, if the server's hosts specifies "*.example.com", - // VirtualServices with hosts dev.example.com, prod.example.com will - // match. However, VirtualServices with hosts example.com or - // newexample.com will not match. + // example, if the server's hosts specifies `*.example.com`, a + // `VirtualService` with hosts `dev.example.com` or `prod.example.com` will + // match. However, a `VirtualService` with host `example.com` or + // `newexample.com` will not match. + // + // NOTE: Only virtual services exported to the gateway's namespace + // (e.g., `exportTo` value of `*`) can be referenced. + // Private configurations (e.g., `exportTo` set to `.`) will not be + // available. Refer to the `exportTo` setting in `VirtualService`, + // `DestinationRule`, and `ServiceEntry` configurations for details. repeated string hosts = 2; message TLSOptions { @@ -305,18 +355,21 @@ message Server { string ca_certificates = 5; // The credentialName stands for a unique identifier that can be used - // to identify the serverCertificate and the privateKey. The credentialName - // appended with suffix "-cacert" is used to identify the CaCertificates - // associated with this server. Gateway workloads capable of fetching - // credentials from a remote credential store will be configured to retrieve - // the serverCertificate and the privateKey using credentialName, instead of - // using the file system paths specified above. If using mutual TLS, + // to identify the serverCertificate and the privateKey. The + // credentialName appended with suffix "-cacert" is used to identify + // the CaCertificates associated with this server. Gateway workloads + // capable of fetching credentials from a remote credential store such + // as kubernetes secrets, will be configured to retrieve the + // serverCertificate and the privateKey using credentialName, instead + // of using the file system paths specified above. If using mutual TLS, // gateway workloads will retrieve the CaCertificates using - // credentialName-cacert. The semantics of the name are platform dependent. - // In Kubernetes, the default Istio supplied credential server expects the - // credentialName to match the name of the Kubernetes secret that holds the - // server certificate, the private key, and the CA certificate - // (if using mutual TLS). + // credentialName-cacert. The semantics of the name are platform + // dependent. In Kubernetes, the default Istio supplied credential + // server expects the credentialName to match the name of the + // Kubernetes secret that holds the server certificate, the private + // key, and the CA certificate (if using mutual TLS). Set the + // ISTIO_META_USER_SDS metadata variable in the gateway's proxy to + // enable the dynamic credential fetching feature. string credential_name = 10; // A list of alternate names to verify the subject identity in the @@ -357,9 +410,9 @@ message Server { // https, and the TLS modes to use. TLSOptions tls = 3; - // The loopback IP endpoint or unix domain socket to which traffic should - // be forwarded to by default. Format should be 127.0.0.1:PORT or - // unix:///path/to/socket or unix://@foobar (Linux abstract namespace). + // The loopback IP endpoint or Unix domain socket to which traffic should + // be forwarded to by default. Format should be `127.0.0.1:PORT` or + // `unix:///path/to/socket` or `unix://@foobar` (Linux abstract namespace). string default_endpoint = 5; } diff --git a/networking/v1alpha3/service_entry.pb.go b/networking/v1alpha3/service_entry.pb.go index 30dd2329998..89e85e94ca3 100644 --- a/networking/v1alpha3/service_entry.pb.go +++ b/networking/v1alpha3/service_entry.pb.go @@ -1,104 +1,6 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: networking/v1alpha3/service_entry.proto -package v1alpha3 - -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" - -import io "io" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// Location specifies whether the service is part of Istio mesh or -// outside the mesh. Location determines the behavior of several -// features, such as service-to-service mTLS authentication, policy -// enforcement, etc. When communicating with services outside the mesh, -// Istio's mTLS authentication is disabled, and policy enforcement is -// performed on the client-side as opposed to server-side. -type ServiceEntry_Location int32 - -const ( - // Signifies that the service is external to the mesh. Typically used - // to indicate external services consumed through APIs. - ServiceEntry_MESH_EXTERNAL ServiceEntry_Location = 0 - // Signifies that the service is part of the mesh. Typically used to - // indicate services added explicitly as part of expanding the service - // mesh to include unmanaged infrastructure (e.g., VMs added to a - // Kubernetes based service mesh). - ServiceEntry_MESH_INTERNAL ServiceEntry_Location = 1 -) - -var ServiceEntry_Location_name = map[int32]string{ - 0: "MESH_EXTERNAL", - 1: "MESH_INTERNAL", -} -var ServiceEntry_Location_value = map[string]int32{ - "MESH_EXTERNAL": 0, - "MESH_INTERNAL": 1, -} - -func (x ServiceEntry_Location) String() string { - return proto.EnumName(ServiceEntry_Location_name, int32(x)) -} -func (ServiceEntry_Location) EnumDescriptor() ([]byte, []int) { - return fileDescriptorServiceEntry, []int{0, 0} -} - -// Resolution determines how the proxy will resolve the IP addresses of -// the network endpoints associated with the service, so that it can -// route to one of them. The resolution mode specified here has no impact -// on how the application resolves the IP address associated with the -// service. The application may still have to use DNS to resolve the -// service to an IP so that the outbound traffic can be captured by the -// Proxy. Alternatively, for HTTP services, the application could -// directly communicate with the proxy (e.g., by setting HTTP_PROXY) to -// talk to these services. -type ServiceEntry_Resolution int32 - -const ( - // Assume that incoming connections have already been resolved (to a - // specific destination IP address). Such connections are typically - // routed via the proxy using mechanisms such as IP table REDIRECT/ - // eBPF. After performing any routing related transformations, the - // proxy will forward the connection to the IP address to which the - // connection was bound. - ServiceEntry_NONE ServiceEntry_Resolution = 0 - // Use the static IP addresses specified in endpoints (see below) as the - // backing instances associated with the service. - ServiceEntry_STATIC ServiceEntry_Resolution = 1 - // Attempt to resolve the IP address by querying the ambient DNS, - // during request processing. If no endpoints are specified, the proxy - // will resolve the DNS address specified in the hosts field, if - // wildcards are not used. If endpoints are specified, the DNS - // addresses specified in the endpoints will be resolved to determine - // the destination IP address. DNS resolution cannot be used with unix - // domain socket endpoints. - ServiceEntry_DNS ServiceEntry_Resolution = 2 -) - -var ServiceEntry_Resolution_name = map[int32]string{ - 0: "NONE", - 1: "STATIC", - 2: "DNS", -} -var ServiceEntry_Resolution_value = map[string]int32{ - "NONE": 0, - "STATIC": 1, - "DNS": 2, -} - -func (x ServiceEntry_Resolution) String() string { - return proto.EnumName(ServiceEntry_Resolution_name, int32(x)) -} -func (ServiceEntry_Resolution) EnumDescriptor() ([]byte, []int) { - return fileDescriptorServiceEntry, []int{0, 1} -} - // `ServiceEntry` enables adding additional entries into Istio's internal // service registry, so that auto-discovered services in the mesh can // access/route to these manually specified services. A service entry @@ -107,6 +9,28 @@ func (ServiceEntry_Resolution) EnumDescriptor() ([]byte, []int) { // APIs) or mesh-internal services that are not part of the platform's // service registry (e.g., a set of VMs talking to services in Kubernetes). // +// The following example declares a few external APIs accessed by internal +// applications over HTTPS. The sidecar inspects the SNI value in the +// ClientHello message to route to the appropriate external service. +// +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: ServiceEntry +// metadata: +// name: external-svc-https +// spec: +// hosts: +// - api.dropboxapi.com +// - www.googleapis.com +// - api.facebook.com +// location: MESH_EXTERNAL +// ports: +// - number: 443 +// name: https +// protocol: TLS +// resolution: DNS +// ``` +// // The following configuration adds a set of MongoDB instances running on // unmanaged VMs to Istio's registry, so that these services can be treated // as any other service in the mesh. The associated DestinationRule is used @@ -151,27 +75,24 @@ func (ServiceEntry_Resolution) EnumDescriptor() ([]byte, []int) { // ``` // // The following example uses a combination of service entry and TLS -// routing in virtual service to demonstrate the use of SNI routing to -// forward unterminated TLS traffic from the application to external -// services via the sidecar. The sidecar inspects the SNI value in the -// ClientHello message to route to the appropriate external service. +// routing in a virtual service to steer traffic based on the SNI value to +// an internal egress firewall. // // ```yaml // apiVersion: networking.istio.io/v1alpha3 // kind: ServiceEntry // metadata: -// name: external-svc-https +// name: external-svc-redirect // spec: // hosts: -// - api.dropboxapi.com -// - www.googleapis.com -// - api.facebook.com +// - wikipedia.org +// - "*.wikipedia.org" // location: MESH_EXTERNAL // ports: // - number: 443 // name: https // protocol: TLS -// resolution: DNS +// resolution: NONE // ``` // // And the associated VirtualService to route based on the SNI value. @@ -183,38 +104,26 @@ func (ServiceEntry_Resolution) EnumDescriptor() ([]byte, []int) { // name: tls-routing // spec: // hosts: -// - api.dropboxapi.com -// - www.googleapis.com -// - api.facebook.com +// - wikipedia.org +// - "*.wikipedia.org" // tls: // - match: -// - port: 443 -// sniHosts: -// - api.dropboxapi.com -// route: -// - destination: -// host: api.dropboxapi.com -// - match: -// - port: 443 -// sniHosts: -// - www.googleapis.com -// route: -// - destination: -// host: www.googleapis.com -// - match: -// - port: 443 -// sniHosts: -// - api.facebook.com +// - sniHosts: +// - wikipedia.org +// - "*.wikipedia.org" // route: // - destination: -// host: api.facebook.com -// +// host: internal-egress-firewall.ns1.svc.cluster.local // ``` // +// The virtual service with TLS match serves to override the default SNI +// match. In the absence of a virtual service, traffic will be forwarded to +// the wikipedia domains. +// // The following example demonstrates the use of a dedicated egress gateway // through which all external service traffic is forwarded. // The 'exportTo' field allows for control over the visibility of a service -// declaration to other namespaces in the mesh. By default a service is exported +// declaration to other namespaces in the mesh. By default, a service is exported // to all namespaces. The following example restricts the visibility to the // current namespace, represented by ".", so that it cannot be used by other // namespaces. @@ -275,7 +184,7 @@ func (ServiceEntry_Resolution) EnumDescriptor() ([]byte, []int) { // hosts: // - httpbin.com // exportTo: -// - * +// - "*" // gateways: // - mesh // - istio-egressgateway @@ -405,6 +314,116 @@ func (ServiceEntry_Resolution) EnumDescriptor() ([]byte, []int) { // - "spiffe://cluster.local/ns/httpbin-ns/sa/httpbin-service-account" // ``` // + +package v1alpha3 + +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +// Location specifies whether the service is part of Istio mesh or +// outside the mesh. Location determines the behavior of several +// features, such as service-to-service mTLS authentication, policy +// enforcement, etc. When communicating with services outside the mesh, +// Istio's mTLS authentication is disabled, and policy enforcement is +// performed on the client-side as opposed to server-side. +type ServiceEntry_Location int32 + +const ( + // Signifies that the service is external to the mesh. Typically used + // to indicate external services consumed through APIs. + ServiceEntry_MESH_EXTERNAL ServiceEntry_Location = 0 + // Signifies that the service is part of the mesh. Typically used to + // indicate services added explicitly as part of expanding the service + // mesh to include unmanaged infrastructure (e.g., VMs added to a + // Kubernetes based service mesh). + ServiceEntry_MESH_INTERNAL ServiceEntry_Location = 1 +) + +var ServiceEntry_Location_name = map[int32]string{ + 0: "MESH_EXTERNAL", + 1: "MESH_INTERNAL", +} + +var ServiceEntry_Location_value = map[string]int32{ + "MESH_EXTERNAL": 0, + "MESH_INTERNAL": 1, +} + +func (x ServiceEntry_Location) String() string { + return proto.EnumName(ServiceEntry_Location_name, int32(x)) +} + +func (ServiceEntry_Location) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_9220e0fa673c4bf8, []int{0, 0} +} + +// Resolution determines how the proxy will resolve the IP addresses of +// the network endpoints associated with the service, so that it can +// route to one of them. The resolution mode specified here has no impact +// on how the application resolves the IP address associated with the +// service. The application may still have to use DNS to resolve the +// service to an IP so that the outbound traffic can be captured by the +// Proxy. Alternatively, for HTTP services, the application could +// directly communicate with the proxy (e.g., by setting HTTP_PROXY) to +// talk to these services. +type ServiceEntry_Resolution int32 + +const ( + // Assume that incoming connections have already been resolved (to a + // specific destination IP address). Such connections are typically + // routed via the proxy using mechanisms such as IP table REDIRECT/ + // eBPF. After performing any routing related transformations, the + // proxy will forward the connection to the IP address to which the + // connection was bound. + ServiceEntry_NONE ServiceEntry_Resolution = 0 + // Use the static IP addresses specified in endpoints (see below) as the + // backing instances associated with the service. + ServiceEntry_STATIC ServiceEntry_Resolution = 1 + // Attempt to resolve the IP address by querying the ambient DNS, + // during request processing. If no endpoints are specified, the proxy + // will resolve the DNS address specified in the hosts field, if + // wildcards are not used. If endpoints are specified, the DNS + // addresses specified in the endpoints will be resolved to determine + // the destination IP address. DNS resolution cannot be used with unix + // domain socket endpoints. + ServiceEntry_DNS ServiceEntry_Resolution = 2 +) + +var ServiceEntry_Resolution_name = map[int32]string{ + 0: "NONE", + 1: "STATIC", + 2: "DNS", +} + +var ServiceEntry_Resolution_value = map[string]int32{ + "NONE": 0, + "STATIC": 1, + "DNS": 2, +} + +func (x ServiceEntry_Resolution) String() string { + return proto.EnumName(ServiceEntry_Resolution_name, int32(x)) +} + +func (ServiceEntry_Resolution) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_9220e0fa673c4bf8, []int{0, 1} +} + type ServiceEntry struct { // REQUIRED. The hosts associated with the ServiceEntry. Could be a DNS // name with wildcard prefix (external services only). DNS names in hosts @@ -412,7 +431,7 @@ type ServiceEntry struct { // protocols such as mongo/opaque TCP/HTTPS. In such scenarios, the // IP addresses specified in the Addresses field or the port will be used // to uniquely identify the destination. - Hosts []string `protobuf:"bytes,1,rep,name=hosts" json:"hosts,omitempty"` + Hosts []string `protobuf:"bytes,1,rep,name=hosts,proto3" json:"hosts,omitempty"` // The virtual IP addresses associated with the service. Could be CIDR // prefix. For HTTP services, the addresses field will be ignored and // the destination will be identified based on the HTTP Host/Authority @@ -427,11 +446,11 @@ type ServiceEntry struct { // simple TCP proxy, forwarding incoming traffic on a specified port to // the specified destination endpoint IP/host. Unix domain socket // addresses are not supported in this field. - Addresses []string `protobuf:"bytes,2,rep,name=addresses" json:"addresses,omitempty"` + Addresses []string `protobuf:"bytes,2,rep,name=addresses,proto3" json:"addresses,omitempty"` // REQUIRED. The ports associated with the external service. If the - // Endpoints are unix domain socket addresses, there must be exactly one + // Endpoints are Unix domain socket addresses, there must be exactly one // port. - Ports []*Port `protobuf:"bytes,3,rep,name=ports" json:"ports,omitempty"` + Ports []*Port `protobuf:"bytes,3,rep,name=ports,proto3" json:"ports,omitempty"` // Specify whether the service should be considered external to the mesh // or part of the mesh. Location ServiceEntry_Location `protobuf:"varint,4,opt,name=location,proto3,enum=istio.networking.v1alpha3.ServiceEntry_Location" json:"location,omitempty"` @@ -441,9 +460,9 @@ type ServiceEntry struct { // said port will be allowed (i.e. 0.0.0.0:). Resolution ServiceEntry_Resolution `protobuf:"varint,5,opt,name=resolution,proto3,enum=istio.networking.v1alpha3.ServiceEntry_Resolution" json:"resolution,omitempty"` // One or more endpoints associated with the service. - Endpoints []*ServiceEntry_Endpoint `protobuf:"bytes,6,rep,name=endpoints" json:"endpoints,omitempty"` + Endpoints []*ServiceEntry_Endpoint `protobuf:"bytes,6,rep,name=endpoints,proto3" json:"endpoints,omitempty"` // A list of namespaces to which this service is exported. Exporting a service - // allows it to used by sidecars, gateways and virtual services defined in + // allows it to be used by sidecars, gateways and virtual services defined in // other namespaces. This feature provides a mechanism for service owners // and mesh administrators to control the visibility of services across // namespace boundaries. @@ -452,25 +471,59 @@ type ServiceEntry struct { // namespaces by default. // // The value "." is reserved and defines an export to the same namespace that - // the service is declared in, similarly the value "*" is reserved and + // the service is declared in. Similarly the value "*" is reserved and // defines an export to all namespaces. // - // For a Kubernetes Service the equivalent effect can be achieved by setting + // For a Kubernetes Service, the equivalent effect can be achieved by setting // the annotation "networking.istio.io/exportTo" to a comma-separated list // of namespace names. - ExportTo []string `protobuf:"bytes,7,rep,name=export_to,json=exportTo" json:"export_to,omitempty"` + // + // NOTE: in the current release, the `exportTo` value is restricted to + // "." or "*" (i.e., the current namespace or all namespaces). + ExportTo []string `protobuf:"bytes,7,rep,name=export_to,json=exportTo,proto3" json:"export_to,omitempty"` // The list of subject alternate names allowed for workloads that // implement this service. This information is used to enforce - // secure-naming . + // [secure-naming](/docs/concepts/security/#secure-naming). // If specified, the proxy will verify that the server // certificate's subject alternate name matches one of the specified values. - SubjectAltNames []string `protobuf:"bytes,8,rep,name=subject_alt_names,json=subjectAltNames" json:"subject_alt_names,omitempty"` + SubjectAltNames []string `protobuf:"bytes,8,rep,name=subject_alt_names,json=subjectAltNames,proto3" json:"subject_alt_names,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *ServiceEntry) Reset() { *m = ServiceEntry{} } -func (m *ServiceEntry) String() string { return proto.CompactTextString(m) } -func (*ServiceEntry) ProtoMessage() {} -func (*ServiceEntry) Descriptor() ([]byte, []int) { return fileDescriptorServiceEntry, []int{0} } +func (m *ServiceEntry) Reset() { *m = ServiceEntry{} } +func (m *ServiceEntry) String() string { return proto.CompactTextString(m) } +func (*ServiceEntry) ProtoMessage() {} +func (*ServiceEntry) Descriptor() ([]byte, []int) { + return fileDescriptor_9220e0fa673c4bf8, []int{0} +} +func (m *ServiceEntry) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ServiceEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ServiceEntry.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ServiceEntry) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceEntry.Merge(m, src) +} +func (m *ServiceEntry) XXX_Size() int { + return m.Size() +} +func (m *ServiceEntry) XXX_DiscardUnknown() { + xxx_messageInfo_ServiceEntry.DiscardUnknown(m) +} + +var xxx_messageInfo_ServiceEntry proto.InternalMessageInfo func (m *ServiceEntry) GetHosts() []string { if m != nil { @@ -534,14 +587,14 @@ type ServiceEntry_Endpoint struct { // REQUIRED: Address associated with the network endpoint without the // port. Domain names can be used if and only if the resolution is set // to DNS, and must be fully-qualified without wildcards. Use the form - // unix:///absolute/path/to/socket for unix domain socket endpoints. + // unix:///absolute/path/to/socket for Unix domain socket endpoints. Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` // Set of ports associated with the endpoint. The ports must be // associated with a port name that was declared as part of the // service. Do not use for unix:// addresses. - Ports map[string]uint32 `protobuf:"bytes,2,rep,name=ports" json:"ports,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + Ports map[string]uint32 `protobuf:"bytes,2,rep,name=ports,proto3" json:"ports,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // One or more labels associated with the endpoint. - Labels map[string]string `protobuf:"bytes,3,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Network enables Istio to group endpoints resident in the same L3 // domain/network. All endpoints in the same network are assumed to be // directly reachable from one another. When endpoints in different @@ -571,16 +624,45 @@ type ServiceEntry_Endpoint struct { Locality string `protobuf:"bytes,5,opt,name=locality,proto3" json:"locality,omitempty"` // The load balancing weight associated with the endpoint. Endpoints // with higher weights will receive proportionally higher traffic. - Weight uint32 `protobuf:"varint,6,opt,name=weight,proto3" json:"weight,omitempty"` + Weight uint32 `protobuf:"varint,6,opt,name=weight,proto3" json:"weight,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ServiceEntry_Endpoint) Reset() { *m = ServiceEntry_Endpoint{} } func (m *ServiceEntry_Endpoint) String() string { return proto.CompactTextString(m) } func (*ServiceEntry_Endpoint) ProtoMessage() {} func (*ServiceEntry_Endpoint) Descriptor() ([]byte, []int) { - return fileDescriptorServiceEntry, []int{0, 0} + return fileDescriptor_9220e0fa673c4bf8, []int{0, 0} +} +func (m *ServiceEntry_Endpoint) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ServiceEntry_Endpoint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ServiceEntry_Endpoint.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ServiceEntry_Endpoint) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceEntry_Endpoint.Merge(m, src) +} +func (m *ServiceEntry_Endpoint) XXX_Size() int { + return m.Size() +} +func (m *ServiceEntry_Endpoint) XXX_DiscardUnknown() { + xxx_messageInfo_ServiceEntry_Endpoint.DiscardUnknown(m) } +var xxx_messageInfo_ServiceEntry_Endpoint proto.InternalMessageInfo + func (m *ServiceEntry_Endpoint) GetAddress() string { if m != nil { return m.Address @@ -624,11 +706,55 @@ func (m *ServiceEntry_Endpoint) GetWeight() uint32 { } func init() { - proto.RegisterType((*ServiceEntry)(nil), "istio.networking.v1alpha3.ServiceEntry") - proto.RegisterType((*ServiceEntry_Endpoint)(nil), "istio.networking.v1alpha3.ServiceEntry.Endpoint") proto.RegisterEnum("istio.networking.v1alpha3.ServiceEntry_Location", ServiceEntry_Location_name, ServiceEntry_Location_value) proto.RegisterEnum("istio.networking.v1alpha3.ServiceEntry_Resolution", ServiceEntry_Resolution_name, ServiceEntry_Resolution_value) + proto.RegisterType((*ServiceEntry)(nil), "istio.networking.v1alpha3.ServiceEntry") + proto.RegisterType((*ServiceEntry_Endpoint)(nil), "istio.networking.v1alpha3.ServiceEntry.Endpoint") + proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1alpha3.ServiceEntry.Endpoint.LabelsEntry") + proto.RegisterMapType((map[string]uint32)(nil), "istio.networking.v1alpha3.ServiceEntry.Endpoint.PortsEntry") +} + +func init() { + proto.RegisterFile("networking/v1alpha3/service_entry.proto", fileDescriptor_9220e0fa673c4bf8) +} + +var fileDescriptor_9220e0fa673c4bf8 = []byte{ + // 527 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0xdf, 0x8e, 0xd2, 0x40, + 0x14, 0xc6, 0x77, 0xe8, 0x52, 0xda, 0xb3, 0xae, 0xb2, 0x13, 0x63, 0x46, 0x34, 0x58, 0xb9, 0x91, + 0x68, 0x52, 0x56, 0x36, 0x26, 0xeb, 0x9f, 0x1b, 0xd4, 0x26, 0x6e, 0x82, 0x55, 0x07, 0x2e, 0x8c, + 0x37, 0x64, 0x80, 0x09, 0xd4, 0xad, 0x1d, 0xd2, 0x19, 0x40, 0xde, 0xc2, 0xa7, 0xf0, 0x59, 0xbc, + 0xf4, 0x11, 0x0c, 0x4f, 0x62, 0x3a, 0x9d, 0x02, 0x17, 0xab, 0xbb, 0x7b, 0xd7, 0x73, 0xe6, 0x7c, + 0xbf, 0x7e, 0x73, 0xce, 0x19, 0x78, 0x94, 0x70, 0xb5, 0x14, 0xe9, 0x79, 0x94, 0x4c, 0x5a, 0x8b, + 0xa7, 0x2c, 0x9e, 0x4d, 0xd9, 0x49, 0x4b, 0xf2, 0x74, 0x11, 0x8d, 0xf8, 0x80, 0x27, 0x2a, 0x5d, + 0xf9, 0xb3, 0x54, 0x28, 0x81, 0xef, 0x46, 0x52, 0x45, 0xc2, 0xdf, 0x96, 0xfb, 0x45, 0x79, 0xed, + 0xe1, 0x45, 0x8c, 0x09, 0x53, 0x7c, 0xc9, 0x8c, 0xba, 0xf1, 0xb3, 0x02, 0x37, 0x7a, 0x39, 0x35, + 0xc8, 0xa0, 0xf8, 0x36, 0x94, 0xa7, 0x42, 0x2a, 0x49, 0x90, 0x67, 0x35, 0x5d, 0x9a, 0x07, 0xf8, + 0x3e, 0xb8, 0x6c, 0x3c, 0x4e, 0xb9, 0x94, 0x5c, 0x92, 0x92, 0x3e, 0xd9, 0x26, 0xf0, 0x33, 0x28, + 0xcf, 0x44, 0xaa, 0x24, 0xb1, 0x3c, 0xab, 0x79, 0xd0, 0x7e, 0xe0, 0xff, 0xd3, 0x92, 0xff, 0x51, + 0xa4, 0x8a, 0xe6, 0xd5, 0xb8, 0x0b, 0x4e, 0x2c, 0x46, 0x4c, 0x45, 0x22, 0x21, 0xfb, 0x1e, 0x6a, + 0xde, 0x6c, 0x1f, 0xff, 0x47, 0xb9, 0xeb, 0xd2, 0xef, 0x1a, 0x1d, 0xdd, 0x10, 0x30, 0x05, 0x48, + 0xb9, 0x14, 0xf1, 0x5c, 0xf3, 0xca, 0x9a, 0xd7, 0xbe, 0x2a, 0x8f, 0x6e, 0x94, 0x74, 0x87, 0x82, + 0x43, 0x70, 0x79, 0x32, 0x9e, 0x89, 0x28, 0x51, 0x92, 0xd8, 0xfa, 0x72, 0x57, 0xb6, 0x18, 0x18, + 0x21, 0xdd, 0x22, 0xf0, 0x3d, 0x70, 0xf9, 0xf7, 0xec, 0xf2, 0x03, 0x25, 0x48, 0x45, 0xb7, 0xd1, + 0xc9, 0x13, 0x7d, 0x81, 0x1f, 0xc3, 0x91, 0x9c, 0x0f, 0xbf, 0xf2, 0x91, 0x1a, 0xb0, 0x58, 0x0d, + 0x12, 0xf6, 0x8d, 0x4b, 0xe2, 0xe8, 0xa2, 0x5b, 0xe6, 0xa0, 0x13, 0xab, 0x30, 0x4b, 0xd7, 0x7e, + 0x58, 0xe0, 0x14, 0x3f, 0xc0, 0x04, 0x2a, 0x66, 0x16, 0x04, 0x79, 0xa8, 0xe9, 0xd2, 0x22, 0xc4, + 0x9f, 0x8a, 0xc1, 0x94, 0xb4, 0xf7, 0x97, 0xd7, 0xf5, 0xae, 0xc7, 0x25, 0x75, 0xae, 0x18, 0x5a, + 0x1f, 0xec, 0x98, 0x0d, 0x79, 0x5c, 0x0c, 0xfb, 0xd5, 0xb5, 0x99, 0x5d, 0x2d, 0xcf, 0xa1, 0x86, + 0x95, 0x5d, 0xc1, 0x00, 0xf4, 0x26, 0xb8, 0xb4, 0x08, 0x71, 0x2d, 0x5f, 0x92, 0x38, 0x52, 0x2b, + 0x3d, 0x54, 0x97, 0x6e, 0x62, 0x7c, 0x07, 0xec, 0x25, 0x8f, 0x26, 0x53, 0x45, 0x6c, 0x0f, 0x35, + 0x0f, 0xa9, 0x89, 0x6a, 0xa7, 0x00, 0x5b, 0xe3, 0xb8, 0x0a, 0xd6, 0x39, 0x5f, 0x99, 0xd6, 0x64, + 0x9f, 0xd9, 0x8e, 0x2f, 0x58, 0x3c, 0xe7, 0xa4, 0xa4, 0x65, 0x79, 0xf0, 0xa2, 0x74, 0x8a, 0x6a, + 0xcf, 0xe1, 0x60, 0xc7, 0xde, 0x65, 0x52, 0x77, 0x47, 0xda, 0x38, 0x06, 0xa7, 0xd8, 0x4a, 0x7c, + 0x04, 0x87, 0xef, 0x83, 0xde, 0xbb, 0x41, 0xf0, 0xb9, 0x1f, 0xd0, 0xb0, 0xd3, 0xad, 0xee, 0x6d, + 0x52, 0x67, 0xa1, 0x49, 0xa1, 0xc6, 0x13, 0x80, 0xed, 0xde, 0x61, 0x07, 0xf6, 0xc3, 0x0f, 0x61, + 0x50, 0xdd, 0xc3, 0x00, 0x76, 0xaf, 0xdf, 0xe9, 0x9f, 0xbd, 0xa9, 0x22, 0x5c, 0x01, 0xeb, 0x6d, + 0xd8, 0xab, 0x96, 0x5e, 0xfb, 0xbf, 0xd6, 0x75, 0xf4, 0x7b, 0x5d, 0x47, 0x7f, 0xd6, 0x75, 0xf4, + 0xc5, 0xcb, 0x9b, 0x1e, 0x89, 0x16, 0x9b, 0x45, 0xad, 0x0b, 0x9e, 0xf9, 0xd0, 0xd6, 0xef, 0xfb, + 0xe4, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x53, 0xa9, 0xc0, 0x48, 0x04, 0x00, 0x00, } + func (m *ServiceEntry) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -738,6 +864,9 @@ func (m *ServiceEntry) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], s) } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -812,6 +941,9 @@ func (m *ServiceEntry_Endpoint) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintServiceEntry(dAtA, i, uint64(m.Weight)) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -825,6 +957,9 @@ func encodeVarintServiceEntry(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *ServiceEntry) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Hosts) > 0 { @@ -869,10 +1004,16 @@ func (m *ServiceEntry) Size() (n int) { n += 1 + l + sovServiceEntry(uint64(l)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *ServiceEntry_Endpoint) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Address) @@ -906,6 +1047,9 @@ func (m *ServiceEntry_Endpoint) Size() (n int) { if m.Weight != 0 { n += 1 + sovServiceEntry(uint64(m.Weight)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -937,7 +1081,7 @@ func (m *ServiceEntry) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -965,7 +1109,7 @@ func (m *ServiceEntry) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -975,6 +1119,9 @@ func (m *ServiceEntry) Unmarshal(dAtA []byte) error { return ErrInvalidLengthServiceEntry } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthServiceEntry + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -994,7 +1141,7 @@ func (m *ServiceEntry) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1004,6 +1151,9 @@ func (m *ServiceEntry) Unmarshal(dAtA []byte) error { return ErrInvalidLengthServiceEntry } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthServiceEntry + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1023,7 +1173,7 @@ func (m *ServiceEntry) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1032,6 +1182,9 @@ func (m *ServiceEntry) Unmarshal(dAtA []byte) error { return ErrInvalidLengthServiceEntry } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthServiceEntry + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1054,7 +1207,7 @@ func (m *ServiceEntry) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Location |= (ServiceEntry_Location(b) & 0x7F) << shift + m.Location |= ServiceEntry_Location(b&0x7F) << shift if b < 0x80 { break } @@ -1073,7 +1226,7 @@ func (m *ServiceEntry) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Resolution |= (ServiceEntry_Resolution(b) & 0x7F) << shift + m.Resolution |= ServiceEntry_Resolution(b&0x7F) << shift if b < 0x80 { break } @@ -1092,7 +1245,7 @@ func (m *ServiceEntry) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1101,6 +1254,9 @@ func (m *ServiceEntry) Unmarshal(dAtA []byte) error { return ErrInvalidLengthServiceEntry } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthServiceEntry + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1123,7 +1279,7 @@ func (m *ServiceEntry) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1133,6 +1289,9 @@ func (m *ServiceEntry) Unmarshal(dAtA []byte) error { return ErrInvalidLengthServiceEntry } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthServiceEntry + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1152,7 +1311,7 @@ func (m *ServiceEntry) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1162,6 +1321,9 @@ func (m *ServiceEntry) Unmarshal(dAtA []byte) error { return ErrInvalidLengthServiceEntry } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthServiceEntry + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1176,9 +1338,13 @@ func (m *ServiceEntry) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthServiceEntry } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthServiceEntry + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -1203,7 +1369,7 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1231,7 +1397,7 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1241,6 +1407,9 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { return ErrInvalidLengthServiceEntry } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthServiceEntry + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1260,7 +1429,7 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1269,6 +1438,9 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { return ErrInvalidLengthServiceEntry } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthServiceEntry + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1289,7 +1461,7 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1306,7 +1478,7 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1316,6 +1488,9 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { return ErrInvalidLengthServiceEntry } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthServiceEntry + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -1331,7 +1506,7 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapvalue |= (uint32(b) & 0x7F) << shift + mapvalue |= uint32(b&0x7F) << shift if b < 0x80 { break } @@ -1367,7 +1542,7 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1376,6 +1551,9 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { return ErrInvalidLengthServiceEntry } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthServiceEntry + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1396,7 +1574,7 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1413,7 +1591,7 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1423,6 +1601,9 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { return ErrInvalidLengthServiceEntry } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthServiceEntry + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -1439,7 +1620,7 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1449,6 +1630,9 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { return ErrInvalidLengthServiceEntry } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthServiceEntry + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -1485,7 +1669,7 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1495,6 +1679,9 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { return ErrInvalidLengthServiceEntry } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthServiceEntry + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1514,7 +1701,7 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1524,6 +1711,9 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { return ErrInvalidLengthServiceEntry } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthServiceEntry + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1543,7 +1733,7 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Weight |= (uint32(b) & 0x7F) << shift + m.Weight |= uint32(b&0x7F) << shift if b < 0x80 { break } @@ -1557,9 +1747,13 @@ func (m *ServiceEntry_Endpoint) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthServiceEntry } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthServiceEntry + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -1623,10 +1817,13 @@ func skipServiceEntry(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthServiceEntry } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthServiceEntry + } return iNdEx, nil case 3: for { @@ -1655,6 +1852,9 @@ func skipServiceEntry(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthServiceEntry + } } return iNdEx, nil case 4: @@ -1673,42 +1873,3 @@ var ( ErrInvalidLengthServiceEntry = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowServiceEntry = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("networking/v1alpha3/service_entry.proto", fileDescriptorServiceEntry) } - -var fileDescriptorServiceEntry = []byte{ - // 527 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0xdf, 0x8e, 0xd2, 0x40, - 0x14, 0xc6, 0x77, 0xe8, 0x52, 0xda, 0xb3, 0xae, 0xb2, 0x13, 0x63, 0x46, 0x34, 0x58, 0xb9, 0x91, - 0x68, 0x52, 0x56, 0x36, 0x26, 0xeb, 0x9f, 0x1b, 0xd4, 0x26, 0x6e, 0x82, 0x55, 0x07, 0x2e, 0x8c, - 0x37, 0x64, 0x80, 0x09, 0xd4, 0xad, 0x1d, 0xd2, 0x19, 0x40, 0xde, 0xc2, 0xa7, 0xf0, 0x59, 0xbc, - 0xf4, 0x11, 0x0c, 0x4f, 0x62, 0x3a, 0x9d, 0x02, 0x17, 0xab, 0xbb, 0x7b, 0xd7, 0x73, 0xe6, 0x7c, - 0xbf, 0x7e, 0x73, 0xce, 0x19, 0x78, 0x94, 0x70, 0xb5, 0x14, 0xe9, 0x79, 0x94, 0x4c, 0x5a, 0x8b, - 0xa7, 0x2c, 0x9e, 0x4d, 0xd9, 0x49, 0x4b, 0xf2, 0x74, 0x11, 0x8d, 0xf8, 0x80, 0x27, 0x2a, 0x5d, - 0xf9, 0xb3, 0x54, 0x28, 0x81, 0xef, 0x46, 0x52, 0x45, 0xc2, 0xdf, 0x96, 0xfb, 0x45, 0x79, 0xed, - 0xe1, 0x45, 0x8c, 0x09, 0x53, 0x7c, 0xc9, 0x8c, 0xba, 0xf1, 0xb3, 0x02, 0x37, 0x7a, 0x39, 0x35, - 0xc8, 0xa0, 0xf8, 0x36, 0x94, 0xa7, 0x42, 0x2a, 0x49, 0x90, 0x67, 0x35, 0x5d, 0x9a, 0x07, 0xf8, - 0x3e, 0xb8, 0x6c, 0x3c, 0x4e, 0xb9, 0x94, 0x5c, 0x92, 0x92, 0x3e, 0xd9, 0x26, 0xf0, 0x33, 0x28, - 0xcf, 0x44, 0xaa, 0x24, 0xb1, 0x3c, 0xab, 0x79, 0xd0, 0x7e, 0xe0, 0xff, 0xd3, 0x92, 0xff, 0x51, - 0xa4, 0x8a, 0xe6, 0xd5, 0xb8, 0x0b, 0x4e, 0x2c, 0x46, 0x4c, 0x45, 0x22, 0x21, 0xfb, 0x1e, 0x6a, - 0xde, 0x6c, 0x1f, 0xff, 0x47, 0xb9, 0xeb, 0xd2, 0xef, 0x1a, 0x1d, 0xdd, 0x10, 0x30, 0x05, 0x48, - 0xb9, 0x14, 0xf1, 0x5c, 0xf3, 0xca, 0x9a, 0xd7, 0xbe, 0x2a, 0x8f, 0x6e, 0x94, 0x74, 0x87, 0x82, - 0x43, 0x70, 0x79, 0x32, 0x9e, 0x89, 0x28, 0x51, 0x92, 0xd8, 0xfa, 0x72, 0x57, 0xb6, 0x18, 0x18, - 0x21, 0xdd, 0x22, 0xf0, 0x3d, 0x70, 0xf9, 0xf7, 0xec, 0xf2, 0x03, 0x25, 0x48, 0x45, 0xb7, 0xd1, - 0xc9, 0x13, 0x7d, 0x81, 0x1f, 0xc3, 0x91, 0x9c, 0x0f, 0xbf, 0xf2, 0x91, 0x1a, 0xb0, 0x58, 0x0d, - 0x12, 0xf6, 0x8d, 0x4b, 0xe2, 0xe8, 0xa2, 0x5b, 0xe6, 0xa0, 0x13, 0xab, 0x30, 0x4b, 0xd7, 0x7e, - 0x58, 0xe0, 0x14, 0x3f, 0xc0, 0x04, 0x2a, 0x66, 0x16, 0x04, 0x79, 0xa8, 0xe9, 0xd2, 0x22, 0xc4, - 0x9f, 0x8a, 0xc1, 0x94, 0xb4, 0xf7, 0x97, 0xd7, 0xf5, 0xae, 0xc7, 0x25, 0x75, 0xae, 0x18, 0x5a, - 0x1f, 0xec, 0x98, 0x0d, 0x79, 0x5c, 0x0c, 0xfb, 0xd5, 0xb5, 0x99, 0x5d, 0x2d, 0xcf, 0xa1, 0x86, - 0x95, 0x5d, 0xc1, 0x00, 0xf4, 0x26, 0xb8, 0xb4, 0x08, 0x71, 0x2d, 0x5f, 0x92, 0x38, 0x52, 0x2b, - 0x3d, 0x54, 0x97, 0x6e, 0x62, 0x7c, 0x07, 0xec, 0x25, 0x8f, 0x26, 0x53, 0x45, 0x6c, 0x0f, 0x35, - 0x0f, 0xa9, 0x89, 0x6a, 0xa7, 0x00, 0x5b, 0xe3, 0xb8, 0x0a, 0xd6, 0x39, 0x5f, 0x99, 0xd6, 0x64, - 0x9f, 0xd9, 0x8e, 0x2f, 0x58, 0x3c, 0xe7, 0xa4, 0xa4, 0x65, 0x79, 0xf0, 0xa2, 0x74, 0x8a, 0x6a, - 0xcf, 0xe1, 0x60, 0xc7, 0xde, 0x65, 0x52, 0x77, 0x47, 0xda, 0x38, 0x06, 0xa7, 0xd8, 0x4a, 0x7c, - 0x04, 0x87, 0xef, 0x83, 0xde, 0xbb, 0x41, 0xf0, 0xb9, 0x1f, 0xd0, 0xb0, 0xd3, 0xad, 0xee, 0x6d, - 0x52, 0x67, 0xa1, 0x49, 0xa1, 0xc6, 0x13, 0x80, 0xed, 0xde, 0x61, 0x07, 0xf6, 0xc3, 0x0f, 0x61, - 0x50, 0xdd, 0xc3, 0x00, 0x76, 0xaf, 0xdf, 0xe9, 0x9f, 0xbd, 0xa9, 0x22, 0x5c, 0x01, 0xeb, 0x6d, - 0xd8, 0xab, 0x96, 0x5e, 0xfb, 0xbf, 0xd6, 0x75, 0xf4, 0x7b, 0x5d, 0x47, 0x7f, 0xd6, 0x75, 0xf4, - 0xc5, 0xcb, 0x9b, 0x1e, 0x89, 0x16, 0x9b, 0x45, 0xad, 0x0b, 0x9e, 0xf9, 0xd0, 0xd6, 0xef, 0xfb, - 0xe4, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x10, 0x53, 0xa9, 0xc0, 0x48, 0x04, 0x00, 0x00, -} diff --git a/networking/v1alpha3/service_entry.pb.html b/networking/v1alpha3/service_entry.pb.html new file mode 100644 index 00000000000..f63172e9037 --- /dev/null +++ b/networking/v1alpha3/service_entry.pb.html @@ -0,0 +1,621 @@ +--- +title: Service Entry +description: Configuration affecting service registry. +location: https://istio.io/docs/reference/config/networking/v1alpha3/service-entry.html +layout: protoc-gen-docs +generator: protoc-gen-docs +number_of_entries: 4 +--- +

ServiceEntry enables adding additional entries into Istio’s internal +service registry, so that auto-discovered services in the mesh can +access/route to these manually specified services. A service entry +describes the properties of a service (DNS name, VIPs, ports, protocols, +endpoints). These services could be external to the mesh (e.g., web +APIs) or mesh-internal services that are not part of the platform’s +service registry (e.g., a set of VMs talking to services in Kubernetes).

+ +

The following example declares a few external APIs accessed by internal +applications over HTTPS. The sidecar inspects the SNI value in the +ClientHello message to route to the appropriate external service.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: ServiceEntry
+metadata:
+  name: external-svc-https
+spec:
+  hosts:
+  - api.dropboxapi.com
+  - www.googleapis.com
+  - api.facebook.com
+  location: MESH_EXTERNAL
+  ports:
+  - number: 443
+    name: https
+    protocol: TLS
+  resolution: DNS
+
+ +

The following configuration adds a set of MongoDB instances running on +unmanaged VMs to Istio’s registry, so that these services can be treated +as any other service in the mesh. The associated DestinationRule is used +to initiate mTLS connections to the database instances.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: ServiceEntry
+metadata:
+  name: external-svc-mongocluster
+spec:
+  hosts:
+  - mymongodb.somedomain # not used
+  addresses:
+  - 192.192.192.192/24 # VIPs
+  ports:
+  - number: 27018
+    name: mongodb
+    protocol: MONGO
+  location: MESH_INTERNAL
+  resolution: STATIC
+  endpoints:
+  - address: 2.2.2.2
+  - address: 3.3.3.3
+
+ +

and the associated DestinationRule

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+  name: mtls-mongocluster
+spec:
+  host: mymongodb.somedomain
+  trafficPolicy:
+    tls:
+      mode: MUTUAL
+      clientCertificate: /etc/certs/myclientcert.pem
+      privateKey: /etc/certs/client_private_key.pem
+      caCertificates: /etc/certs/rootcacerts.pem
+
+ +

The following example uses a combination of service entry and TLS +routing in a virtual service to steer traffic based on the SNI value to +an internal egress firewall.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: ServiceEntry
+metadata:
+  name: external-svc-redirect
+spec:
+  hosts:
+  - wikipedia.org
+  - "*.wikipedia.org"
+  location: MESH_EXTERNAL
+  ports:
+  - number: 443
+    name: https
+    protocol: TLS
+  resolution: NONE
+
+ +

And the associated VirtualService to route based on the SNI value.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: VirtualService
+metadata:
+  name: tls-routing
+spec:
+  hosts:
+  - wikipedia.org
+  - "*.wikipedia.org"
+  tls:
+  - match:
+    - sniHosts:
+      - wikipedia.org
+      - "*.wikipedia.org"
+    route:
+    - destination:
+        host: internal-egress-firewall.ns1.svc.cluster.local
+
+ +

The virtual service with TLS match serves to override the default SNI +match. In the absence of a virtual service, traffic will be forwarded to +the wikipedia domains.

+ +

The following example demonstrates the use of a dedicated egress gateway +through which all external service traffic is forwarded. +The ‘exportTo’ field allows for control over the visibility of a service +declaration to other namespaces in the mesh. By default, a service is exported +to all namespaces. The following example restricts the visibility to the +current namespace, represented by “.”, so that it cannot be used by other +namespaces.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: ServiceEntry
+metadata:
+  name: external-svc-httpbin
+  namespace : egress
+spec:
+  hosts:
+  - httpbin.com
+  exportTo:
+  - "."
+  location: MESH_EXTERNAL
+  ports:
+  - number: 80
+    name: http
+    protocol: HTTP
+  resolution: DNS
+
+ +

Define a gateway to handle all egress traffic.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: Gateway
+metadata:
+ name: istio-egressgateway
+ namespace: egress
+spec:
+ selector:
+   istio: egressgateway
+ servers:
+ - port:
+     number: 80
+     name: http
+     protocol: HTTP
+   hosts:
+   - "*"
+
+ +

And the associated VirtualService to route from the sidecar to the +gateway service (istio-egressgateway.istio-system.svc.cluster.local), as +well as route from the gateway to the external service. Note that the +virtual service is exported to all namespaces enabling them to route traffic +through the gateway to the external service. Forcing traffic to go through +a managed middle proxy like this is a common practice.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: VirtualService
+metadata:
+  name: gateway-routing
+  namespace: egress
+spec:
+  hosts:
+  - httpbin.com
+  exportTo:
+  - "*"
+  gateways:
+  - mesh
+  - istio-egressgateway
+  http:
+  - match:
+    - port: 80
+      gateways:
+      - mesh
+    route:
+    - destination:
+        host: istio-egressgateway.istio-system.svc.cluster.local
+  - match:
+    - port: 80
+      gateways:
+      - istio-egressgateway
+    route:
+    - destination:
+        host: httpbin.com
+
+ +

The following example demonstrates the use of wildcards in the hosts for +external services. If the connection has to be routed to the IP address +requested by the application (i.e. application resolves DNS and attempts +to connect to a specific IP), the discovery mode must be set to NONE.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: ServiceEntry
+metadata:
+  name: external-svc-wildcard-example
+spec:
+  hosts:
+  - "*.bar.com"
+  location: MESH_EXTERNAL
+  ports:
+  - number: 80
+    name: http
+    protocol: HTTP
+  resolution: NONE
+
+ +

The following example demonstrates a service that is available via a +Unix Domain Socket on the host of the client. The resolution must be +set to STATIC to use unix address endpoints.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: ServiceEntry
+metadata:
+  name: unix-domain-socket-example
+spec:
+  hosts:
+  - "example.unix.local"
+  location: MESH_EXTERNAL
+  ports:
+  - number: 80
+    name: http
+    protocol: HTTP
+  resolution: STATIC
+  endpoints:
+  - address: unix:///var/run/example/socket
+
+ +

For HTTP-based services, it is possible to create a VirtualService +backed by multiple DNS addressable endpoints. In such a scenario, the +application can use the HTTP_PROXY environment variable to transparently +reroute API calls for the VirtualService to a chosen backend. For +example, the following configuration creates a non-existent external +service called foo.bar.com backed by three domains: us.foo.bar.com:8080, +uk.foo.bar.com:9080, and in.foo.bar.com:7080

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: ServiceEntry
+metadata:
+  name: external-svc-dns
+spec:
+  hosts:
+  - foo.bar.com
+  location: MESH_EXTERNAL
+  ports:
+  - number: 80
+    name: http
+    protocol: HTTP
+  resolution: DNS
+  endpoints:
+  - address: us.foo.bar.com
+    ports:
+      https: 8080
+  - address: uk.foo.bar.com
+    ports:
+      https: 9080
+  - address: in.foo.bar.com
+    ports:
+      https: 7080
+
+ +

With HTTP_PROXY=http://localhost/, calls from the application to +http://foo.bar.com will be load balanced across the three domains +specified above. In other words, a call to http://foo.bar.com/baz would +be translated to http://uk.foo.bar.com/baz.

+ +

The following example illustrates the usage of a ServiceEntry +containing a subject alternate name +whose format conforms to the SPIFEE standard +https://github.com/spiffe/spiffe/blob/master/standards/SPIFFE-ID.md:

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: ServiceEntry
+metadata:
+  name: httpbin
+  namespace : httpbin-ns
+spec:
+  hosts:
+  - httpbin.com
+  location: MESH_INTERNAL
+  ports:
+  - number: 80
+    name: http
+    protocol: HTTP
+  resolution: STATIC
+  endpoints:
+  - address: 2.2.2.2
+  - address: 3.3.3.3
+  subjectAltNames:
+  - "spiffe://cluster.local/ns/httpbin-ns/sa/httpbin-service-account"
+
+ +

ServiceEntry

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
hostsstring[] +

REQUIRED. The hosts associated with the ServiceEntry. Could be a DNS +name with wildcard prefix (external services only). DNS names in hosts +will be ignored if the application accesses the service over non-HTTP +protocols such as mongo/opaque TCP/HTTPS. In such scenarios, the +IP addresses specified in the Addresses field or the port will be used +to uniquely identify the destination.

+ +
addressesstring[] +

The virtual IP addresses associated with the service. Could be CIDR +prefix. For HTTP services, the addresses field will be ignored and +the destination will be identified based on the HTTP Host/Authority +header. For non-HTTP protocols such as mongo/opaque TCP/HTTPS, +the hosts will be ignored. If one or more IP addresses are specified, +the incoming traffic will be identified as belonging to this service +if the destination IP matches the IP/CIDRs specified in the addresses +field. If the Addresses field is empty, traffic will be identified +solely based on the destination port. In such scenarios, the port on +which the service is being accessed must not be shared by any other +service in the mesh. In other words, the sidecar will behave as a +simple TCP proxy, forwarding incoming traffic on a specified port to +the specified destination endpoint IP/host. Unix domain socket +addresses are not supported in this field.

+ +
portsPort[] +

REQUIRED. The ports associated with the external service. If the +Endpoints are Unix domain socket addresses, there must be exactly one +port.

+ +
locationServiceEntry.Location +

Specify whether the service should be considered external to the mesh +or part of the mesh.

+ +
resolutionServiceEntry.Resolution +

REQUIRED: Service discovery mode for the hosts. Care must be taken +when setting the resolution mode to NONE for a TCP port without +accompanying IP addresses. In such cases, traffic to any IP on +said port will be allowed (i.e. 0.0.0.0:).

+ +
endpointsServiceEntry.Endpoint[] +

One or more endpoints associated with the service.

+ +
exportTostring[] +

A list of namespaces to which this service is exported. Exporting a service +allows it to be used by sidecars, gateways and virtual services defined in +other namespaces. This feature provides a mechanism for service owners +and mesh administrators to control the visibility of services across +namespace boundaries.

+ +

If no namespaces are specified then the service is exported to all +namespaces by default.

+ +

The value “.” is reserved and defines an export to the same namespace that +the service is declared in. Similarly the value “*” is reserved and +defines an export to all namespaces.

+ +

For a Kubernetes Service, the equivalent effect can be achieved by setting +the annotation “networking.istio.io/exportTo” to a comma-separated list +of namespace names.

+ +

NOTE: in the current release, the exportTo value is restricted to +“.” or “*” (i.e., the current namespace or all namespaces).

+ +
subjectAltNamesstring[] +

The list of subject alternate names allowed for workloads that +implement this service. This information is used to enforce +secure-naming. +If specified, the proxy will verify that the server +certificate’s subject alternate name matches one of the specified values.

+ +
+
+

ServiceEntry.Endpoint

+
+

Endpoint defines a network address (IP or hostname) associated with +the mesh service.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
addressstring +

REQUIRED: Address associated with the network endpoint without the +port. Domain names can be used if and only if the resolution is set +to DNS, and must be fully-qualified without wildcards. Use the form +unix:///absolute/path/to/socket for Unix domain socket endpoints.

+ +
portsmap<string, uint32> +

Set of ports associated with the endpoint. The ports must be +associated with a port name that was declared as part of the +service. Do not use for unix:// addresses.

+ +
labelsmap<string, string> +

One or more labels associated with the endpoint.

+ +
networkstring +

Network enables Istio to group endpoints resident in the same L3 +domain/network. All endpoints in the same network are assumed to be +directly reachable from one another. When endpoints in different +networks cannot reach each other directly, an Istio Gateway can be +used to establish connectivity (usually using the +AUTO_PASSTHROUGH mode in a Gateway Server). This is +an advanced configuration used typically for spanning an Istio mesh +over multiple clusters.

+ +
localitystring +

The locality associated with the endpoint. A locality corresponds +to a failure domain (e.g., country/region/zone). Arbitrary failure +domain hierarchies can be represented by separating each +encapsulating failure domain by /. For example, the locality of an +an endpoint in US, in US-East-1 region, within availability zone +az-1, in data center rack r11 can be represented as +us/us-east-1/az-1/r11. Istio will configure the sidecar to route to +endpoints within the same locality as the sidecar. If none of the +endpoints in the locality are available, endpoints parent locality +(but within the same network ID) will be chosen. For example, if +there are two endpoints in same network (networkID “n1”), say e1 +with locality us/us-east-1/az-1/r11 and e2 with locality +us/us-east-1/az-2/r12, a sidecar from us/us-east-1/az-1/r11 locality +will prefer e1 from the same locality over e2 from a different +locality. Endpoint e2 could be the IP associated with a gateway +(that bridges networks n1 and n2), or the IP associated with a +standard service endpoint.

+ +
weightuint32 +

The load balancing weight associated with the endpoint. Endpoints +with higher weights will receive proportionally higher traffic.

+ +
+
+

ServiceEntry.Location

+
+

Location specifies whether the service is part of Istio mesh or +outside the mesh. Location determines the behavior of several +features, such as service-to-service mTLS authentication, policy +enforcement, etc. When communicating with services outside the mesh, +Istio’s mTLS authentication is disabled, and policy enforcement is +performed on the client-side as opposed to server-side.

+ + + + + + + + + + + + + + + + + + +
NameDescription
MESH_EXTERNAL +

Signifies that the service is external to the mesh. Typically used +to indicate external services consumed through APIs.

+ +
MESH_INTERNAL +

Signifies that the service is part of the mesh. Typically used to +indicate services added explicitly as part of expanding the service +mesh to include unmanaged infrastructure (e.g., VMs added to a +Kubernetes based service mesh).

+ +
+
+

ServiceEntry.Resolution

+
+

Resolution determines how the proxy will resolve the IP addresses of +the network endpoints associated with the service, so that it can +route to one of them. The resolution mode specified here has no impact +on how the application resolves the IP address associated with the +service. The application may still have to use DNS to resolve the +service to an IP so that the outbound traffic can be captured by the +Proxy. Alternatively, for HTTP services, the application could +directly communicate with the proxy (e.g., by setting HTTP_PROXY) to +talk to these services.

+ + + + + + + + + + + + + + + + + + + + + + +
NameDescription
NONE +

Assume that incoming connections have already been resolved (to a +specific destination IP address). Such connections are typically +routed via the proxy using mechanisms such as IP table REDIRECT/ +eBPF. After performing any routing related transformations, the +proxy will forward the connection to the IP address to which the +connection was bound.

+ +
STATIC +

Use the static IP addresses specified in endpoints (see below) as the +backing instances associated with the service.

+ +
DNS +

Attempt to resolve the IP address by querying the ambient DNS, +during request processing. If no endpoints are specified, the proxy +will resolve the DNS address specified in the hosts field, if +wildcards are not used. If endpoints are specified, the DNS +addresses specified in the endpoints will be resolved to determine +the destination IP address. DNS resolution cannot be used with unix +domain socket endpoints.

+ +
+
diff --git a/networking/v1alpha3/service_entry.proto b/networking/v1alpha3/service_entry.proto index b8e3c13a212..3c83b89fcd6 100644 --- a/networking/v1alpha3/service_entry.proto +++ b/networking/v1alpha3/service_entry.proto @@ -16,9 +16,9 @@ syntax = "proto3"; import "networking/v1alpha3/gateway.proto"; -package istio.networking.v1alpha3; - -option go_package = "istio.io/api/networking/v1alpha3"; +// $title: Service Entry +// $description: Configuration affecting service registry. +// $location: https://istio.io/docs/reference/config/networking/v1alpha3/service-entry.html // `ServiceEntry` enables adding additional entries into Istio's internal // service registry, so that auto-discovered services in the mesh can @@ -28,6 +28,28 @@ option go_package = "istio.io/api/networking/v1alpha3"; // APIs) or mesh-internal services that are not part of the platform's // service registry (e.g., a set of VMs talking to services in Kubernetes). // +// The following example declares a few external APIs accessed by internal +// applications over HTTPS. The sidecar inspects the SNI value in the +// ClientHello message to route to the appropriate external service. +// +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: ServiceEntry +// metadata: +// name: external-svc-https +// spec: +// hosts: +// - api.dropboxapi.com +// - www.googleapis.com +// - api.facebook.com +// location: MESH_EXTERNAL +// ports: +// - number: 443 +// name: https +// protocol: TLS +// resolution: DNS +// ``` +// // The following configuration adds a set of MongoDB instances running on // unmanaged VMs to Istio's registry, so that these services can be treated // as any other service in the mesh. The associated DestinationRule is used @@ -72,27 +94,24 @@ option go_package = "istio.io/api/networking/v1alpha3"; // ``` // // The following example uses a combination of service entry and TLS -// routing in virtual service to demonstrate the use of SNI routing to -// forward unterminated TLS traffic from the application to external -// services via the sidecar. The sidecar inspects the SNI value in the -// ClientHello message to route to the appropriate external service. +// routing in a virtual service to steer traffic based on the SNI value to +// an internal egress firewall. // // ```yaml // apiVersion: networking.istio.io/v1alpha3 // kind: ServiceEntry // metadata: -// name: external-svc-https +// name: external-svc-redirect // spec: // hosts: -// - api.dropboxapi.com -// - www.googleapis.com -// - api.facebook.com +// - wikipedia.org +// - "*.wikipedia.org" // location: MESH_EXTERNAL // ports: // - number: 443 // name: https // protocol: TLS -// resolution: DNS +// resolution: NONE // ``` // // And the associated VirtualService to route based on the SNI value. @@ -104,38 +123,26 @@ option go_package = "istio.io/api/networking/v1alpha3"; // name: tls-routing // spec: // hosts: -// - api.dropboxapi.com -// - www.googleapis.com -// - api.facebook.com +// - wikipedia.org +// - "*.wikipedia.org" // tls: // - match: -// - port: 443 -// sniHosts: -// - api.dropboxapi.com +// - sniHosts: +// - wikipedia.org +// - "*.wikipedia.org" // route: // - destination: -// host: api.dropboxapi.com -// - match: -// - port: 443 -// sniHosts: -// - www.googleapis.com -// route: -// - destination: -// host: www.googleapis.com -// - match: -// - port: 443 -// sniHosts: -// - api.facebook.com -// route: -// - destination: -// host: api.facebook.com -// +// host: internal-egress-firewall.ns1.svc.cluster.local // ``` // +// The virtual service with TLS match serves to override the default SNI +// match. In the absence of a virtual service, traffic will be forwarded to +// the wikipedia domains. +// // The following example demonstrates the use of a dedicated egress gateway // through which all external service traffic is forwarded. // The 'exportTo' field allows for control over the visibility of a service -// declaration to other namespaces in the mesh. By default a service is exported +// declaration to other namespaces in the mesh. By default, a service is exported // to all namespaces. The following example restricts the visibility to the // current namespace, represented by ".", so that it cannot be used by other // namespaces. @@ -196,7 +203,7 @@ option go_package = "istio.io/api/networking/v1alpha3"; // hosts: // - httpbin.com // exportTo: -// - * +// - "*" // gateways: // - mesh // - istio-egressgateway @@ -326,6 +333,10 @@ option go_package = "istio.io/api/networking/v1alpha3"; // - "spiffe://cluster.local/ns/httpbin-ns/sa/httpbin-service-account" // ``` // +package istio.networking.v1alpha3; + +option go_package = "istio.io/api/networking/v1alpha3"; + message ServiceEntry { // REQUIRED. The hosts associated with the ServiceEntry. Could be a DNS // name with wildcard prefix (external services only). DNS names in hosts @@ -352,7 +363,7 @@ message ServiceEntry { repeated string addresses = 2; // REQUIRED. The ports associated with the external service. If the - // Endpoints are unix domain socket addresses, there must be exactly one + // Endpoints are Unix domain socket addresses, there must be exactly one // port. repeated Port ports = 3; @@ -422,7 +433,7 @@ message ServiceEntry { // REQUIRED: Address associated with the network endpoint without the // port. Domain names can be used if and only if the resolution is set // to DNS, and must be fully-qualified without wildcards. Use the form - // unix:///absolute/path/to/socket for unix domain socket endpoints. + // unix:///absolute/path/to/socket for Unix domain socket endpoints. string address = 1; // Set of ports associated with the endpoint. The ports must be @@ -471,7 +482,7 @@ message ServiceEntry { repeated Endpoint endpoints = 6; // A list of namespaces to which this service is exported. Exporting a service - // allows it to used by sidecars, gateways and virtual services defined in + // allows it to be used by sidecars, gateways and virtual services defined in // other namespaces. This feature provides a mechanism for service owners // and mesh administrators to control the visibility of services across // namespace boundaries. @@ -480,17 +491,20 @@ message ServiceEntry { // namespaces by default. // // The value "." is reserved and defines an export to the same namespace that - // the service is declared in, similarly the value "*" is reserved and + // the service is declared in. Similarly the value "*" is reserved and // defines an export to all namespaces. // - // For a Kubernetes Service the equivalent effect can be achieved by setting + // For a Kubernetes Service, the equivalent effect can be achieved by setting // the annotation "networking.istio.io/exportTo" to a comma-separated list // of namespace names. + // + // NOTE: in the current release, the `exportTo` value is restricted to + // "." or "*" (i.e., the current namespace or all namespaces). repeated string export_to = 7; // The list of subject alternate names allowed for workloads that // implement this service. This information is used to enforce - // secure-naming . + // [secure-naming](/docs/concepts/security/#secure-naming). // If specified, the proxy will verify that the server // certificate's subject alternate name matches one of the specified values. repeated string subject_alt_names = 8; diff --git a/networking/v1alpha3/sidecar.pb.go b/networking/v1alpha3/sidecar.pb.go index 81feff98ba7..9224c76070a 100644 --- a/networking/v1alpha3/sidecar.pb.go +++ b/networking/v1alpha3/sidecar.pb.go @@ -1,52 +1,6 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: networking/v1alpha3/sidecar.proto -package v1alpha3 - -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" - -import io "io" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// CaptureMode describes how traffic to a listener is expected to be -// captured. Applicable only when the listener is bound to an IP. -type CaptureMode int32 - -const ( - // The default capture mode defined by the environment - CaptureMode_DEFAULT CaptureMode = 0 - // Capture traffic using IPtables redirection - CaptureMode_IPTABLES CaptureMode = 1 - // No traffic capture. When used in egress listener, the application is - // expected to explicitly communicate with the listener port/unix - // domain socket. When used in ingress listener, care needs to be taken - // to ensure that the listener port is not in use by other processes on - // the host. - CaptureMode_NONE CaptureMode = 2 -) - -var CaptureMode_name = map[int32]string{ - 0: "DEFAULT", - 1: "IPTABLES", - 2: "NONE", -} -var CaptureMode_value = map[string]int32{ - "DEFAULT": 0, - "IPTABLES": 1, - "NONE": 2, -} - -func (x CaptureMode) String() string { - return proto.EnumName(CaptureMode_name, int32(x)) -} -func (CaptureMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorSidecar, []int{0} } - // `Sidecar` describes the configuration of the sidecar proxy that mediates // inbound and outbound communication to the workload it is attached to. By // default, Istio will program all sidecar proxies in the mesh with the @@ -95,7 +49,7 @@ func (CaptureMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorSidec // // The example below declares a Sidecar resource in the prod-us1 namespace // that accepts inbound HTTP traffic on port 9080 and forwards -// it to the attached workload listening on a unix domain socket. In the +// it to the attached workload listening on a Unix domain socket. In the // egress direction, in addition to the istio-system namespace, the sidecar // proxies only HTTP traffic bound for port 9080 for services in the // prod-us1 namespace. @@ -124,29 +78,219 @@ func (CaptureMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorSidec // - "prod-us1/*" // ``` // +// If the workload is deployed without IP tables based traffic capture, the +// Sidecar resource is the only way to configure the ports on the proxy +// attached to the workload. The following example declares a Sidecar +// resource in the prod-us1 namespace for all pods with labels "app: +// productpage" belonging to the productpage.prod-us1 service. Assuming +// that these pods are deployed without IPtable rules (i.e. the Istio init +// container) and the proxy metadata ISTIO_META_INTERCEPTION_MODE is set to +// NONE, the specification below allows such pods to receive HTTP traffic +// on port 9080 and forward it to the application listening on +// 127.0.0.1:8080. It also allows the application to communicate with a +// backing MySQL database on 127.0.0.1:3306, that then gets proxied to the +// externally hosted MySQL service at mysql.foo.com:3306. +// +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: Sidecar +// metadata: +// name: no-ip-tables +// namespace: prod-us1 +// spec: +// workloadSelector: +// labels: +// app: productpage +// ingress: +// - port: +// number: 9080 # binds to 0.0.0.0:9080 +// protocol: HTTP +// name: somename +// defaultEndpoint: 127.0.0.1:8080 +// captureMode: NONE # not needed if metadata is set for entire proxy +// egress: +// - port: +// number: 3306 +// protocol: MYSQL +// name: egressmysql +// captureMode: NONE # not needed if metadata is set for entire proxy +// bind: 127.0.0.1 +// hosts: +// - "*/mysql.foo.com" +// ``` +// +// And the associated service entry for routing to mysql.foo.com:3306 +// +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: ServiceEntry +// metadata: +// name: external-svc-mysql +// namespace: ns1 +// spec: +// hosts: +// - mysql.foo.com +// ports: +// - number: 3306 +// name: mysql +// protocol: MYSQL +// location: MESH_EXTERNAL +// resolution: DNS +// ``` +// +// It is also possible to mix and match traffic capture modes in a single +// proxy. For example, consider a setup where internal services are on the +// 192.168.0.0/16 subnet. So, IP tables are setup on the VM to capture all +// outbound traffic on 192.168.0.0/16 subnet. Assume that the VM has an +// additional network interface on 172.16.0.0/16 subnet for inbound +// traffic. The following Sidecar configuration allows the VM to expose a +// listener on 172.16.1.32:80 (the VM's IP) for traffic arriving from the +// 172.16.0.0/16 subnet. Note that in this scenario, the +// ISTIO_META_INTERCEPTION_MODE metadata on the proxy in the VM should +// contain "REDIRECT" or "TPROXY" as its value, implying that IP tables +// based traffic capture is active. +// +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: Sidecar +// metadata: +// name: partial-ip-tables +// namespace: prod-us1 +// spec: +// workloadSelector: +// labels: +// app: productpage +// ingress: +// - bind: 172.16.1.32 +// port: +// number: 80 # binds to 172.16.1.32:80 +// protocol: HTTP +// name: somename +// defaultEndpoint: 127.0.0.1:8080 +// captureMode: NONE +// egress: +// # use the system detected defaults +// # sets up configuration to handle outbound traffic to services +// # in 192.168.0.0/16 subnet, based on information provided by the +// # service registry +// - captureMode: IPTABLES +// hosts: +// - "*/*" +// ``` +// + +package v1alpha3 + +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +// CaptureMode describes how traffic to a listener is expected to be +// captured. Applicable only when the listener is bound to an IP. +type CaptureMode int32 + +const ( + // The default capture mode defined by the environment + CaptureMode_DEFAULT CaptureMode = 0 + // Capture traffic using IPtables redirection + CaptureMode_IPTABLES CaptureMode = 1 + // No traffic capture. When used in egress listener, the application is + // expected to explicitly communicate with the listener port/unix + // domain socket. When used in ingress listener, care needs to be taken + // to ensure that the listener port is not in use by other processes on + // the host. + CaptureMode_NONE CaptureMode = 2 +) + +var CaptureMode_name = map[int32]string{ + 0: "DEFAULT", + 1: "IPTABLES", + 2: "NONE", +} + +var CaptureMode_value = map[string]int32{ + "DEFAULT": 0, + "IPTABLES": 1, + "NONE": 2, +} + +func (x CaptureMode) String() string { + return proto.EnumName(CaptureMode_name, int32(x)) +} + +func (CaptureMode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_b5c11342f04ad3d1, []int{0} +} + type Sidecar struct { // Criteria used to select the specific set of pods/VMs on which this // sidecar configuration should be applied. If omitted, the sidecar // configuration will be applied to all workloads in the same config // namespace. - WorkloadSelector *WorkloadSelector `protobuf:"bytes,1,opt,name=workload_selector,json=workloadSelector" json:"workload_selector,omitempty"` + WorkloadSelector *WorkloadSelector `protobuf:"bytes,1,opt,name=workload_selector,json=workloadSelector,proto3" json:"workload_selector,omitempty"` // Ingress specifies the configuration of the sidecar for processing // inbound traffic to the attached workload. If omitted, Istio will - // autoconfigure the sidecar based on the information about the workload + // automatically configure the sidecar based on the information about the workload // obtained from the orchestration platform (e.g., exposed ports, services, - // etc.). - Ingress []*IstioIngressListener `protobuf:"bytes,2,rep,name=ingress" json:"ingress,omitempty"` + // etc.). If specified, inbound ports are configured if and only if the + // workload is associated with a service. + Ingress []*IstioIngressListener `protobuf:"bytes,2,rep,name=ingress,proto3" json:"ingress,omitempty"` // Egress specifies the configuration of the sidecar for processing // outbound traffic from the attached workload to other services in the - // mesh. If omitted, Istio will autoconfigure the sidecar to be able to + // mesh. If omitted, Istio will automatically configure the sidecar to be able to // reach every service in the mesh that is visible to this namespace. - Egress []*IstioEgressListener `protobuf:"bytes,3,rep,name=egress" json:"egress,omitempty"` + Egress []*IstioEgressListener `protobuf:"bytes,3,rep,name=egress,proto3" json:"egress,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Sidecar) Reset() { *m = Sidecar{} } +func (m *Sidecar) String() string { return proto.CompactTextString(m) } +func (*Sidecar) ProtoMessage() {} +func (*Sidecar) Descriptor() ([]byte, []int) { + return fileDescriptor_b5c11342f04ad3d1, []int{0} +} +func (m *Sidecar) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Sidecar) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Sidecar.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Sidecar) XXX_Merge(src proto.Message) { + xxx_messageInfo_Sidecar.Merge(m, src) +} +func (m *Sidecar) XXX_Size() int { + return m.Size() +} +func (m *Sidecar) XXX_DiscardUnknown() { + xxx_messageInfo_Sidecar.DiscardUnknown(m) } -func (m *Sidecar) Reset() { *m = Sidecar{} } -func (m *Sidecar) String() string { return proto.CompactTextString(m) } -func (*Sidecar) ProtoMessage() {} -func (*Sidecar) Descriptor() ([]byte, []int) { return fileDescriptorSidecar, []int{0} } +var xxx_messageInfo_Sidecar proto.InternalMessageInfo func (m *Sidecar) GetWorkloadSelector() *WorkloadSelector { if m != nil { @@ -173,31 +317,62 @@ func (m *Sidecar) GetEgress() []*IstioEgressListener { // traffic listener on the sidecar proxy attached to a workload. type IstioIngressListener struct { // REQUIRED. The port associated with the listener. If using - // unix domain socket, use 0 as the port number, with a valid + // Unix domain socket, use 0 as the port number, with a valid // protocol. - Port *Port `protobuf:"bytes,1,opt,name=port" json:"port,omitempty"` - // The ip or the unix domain socket to which the listener should be bound - // to. Format: x.x.x.x or unix:///path/to/uds or unix://@foobar (Linux - // abstract namespace). If omitted, Istio will autoconfigure the defaults + Port *Port `protobuf:"bytes,1,opt,name=port,proto3" json:"port,omitempty"` + // The ip or the Unix domain socket to which the listener should be bound + // to. Format: `x.x.x.x` or `unix:///path/to/uds` or `unix://@foobar` (Linux + // abstract namespace). If omitted, Istio will automatically configure the defaults // based on imported services and the workload to which this // configuration is applied to. Bind string `protobuf:"bytes,2,opt,name=bind,proto3" json:"bind,omitempty"` // When the bind address is an IP, the captureMode option dictates // how traffic to the listener is expected to be captured (or not). - // captureMode must be DEFAULT or NONE for unix domain socket binds. + // captureMode must be DEFAULT or NONE for Unix domain socket binds. CaptureMode CaptureMode `protobuf:"varint,3,opt,name=capture_mode,json=captureMode,proto3,enum=istio.networking.v1alpha3.CaptureMode" json:"capture_mode,omitempty"` - // REQUIRED: The loopback IP endpoint or unix domain socket to which + // REQUIRED: The loopback IP endpoint or Unix domain socket to which // traffic should be forwarded to. This configuration can be used to // redirect traffic arriving at the bind point on the sidecar to a port - // or unix domain socket where the application workload is listening for + // or Unix domain socket where the application workload is listening for // connections. Format should be 127.0.0.1:PORT or unix:///path/to/socket - DefaultEndpoint string `protobuf:"bytes,4,opt,name=default_endpoint,json=defaultEndpoint,proto3" json:"default_endpoint,omitempty"` + DefaultEndpoint string `protobuf:"bytes,4,opt,name=default_endpoint,json=defaultEndpoint,proto3" json:"default_endpoint,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *IstioIngressListener) Reset() { *m = IstioIngressListener{} } +func (m *IstioIngressListener) String() string { return proto.CompactTextString(m) } +func (*IstioIngressListener) ProtoMessage() {} +func (*IstioIngressListener) Descriptor() ([]byte, []int) { + return fileDescriptor_b5c11342f04ad3d1, []int{1} +} +func (m *IstioIngressListener) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *IstioIngressListener) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_IstioIngressListener.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *IstioIngressListener) XXX_Merge(src proto.Message) { + xxx_messageInfo_IstioIngressListener.Merge(m, src) +} +func (m *IstioIngressListener) XXX_Size() int { + return m.Size() +} +func (m *IstioIngressListener) XXX_DiscardUnknown() { + xxx_messageInfo_IstioIngressListener.DiscardUnknown(m) } -func (m *IstioIngressListener) Reset() { *m = IstioIngressListener{} } -func (m *IstioIngressListener) String() string { return proto.CompactTextString(m) } -func (*IstioIngressListener) ProtoMessage() {} -func (*IstioIngressListener) Descriptor() ([]byte, []int) { return fileDescriptorSidecar, []int{1} } +var xxx_messageInfo_IstioIngressListener proto.InternalMessageInfo func (m *IstioIngressListener) GetPort() *Port { if m != nil { @@ -230,7 +405,7 @@ func (m *IstioIngressListener) GetDefaultEndpoint() string { // IstioEgressListener specifies the properties of an outbound traffic // listener on the sidecar proxy attached to a workload. type IstioEgressListener struct { - // The port associated with the listener. If using unix domain socket, + // The port associated with the listener. If using Unix domain socket, // use 0 as the port number, with a valid protocol. The port if // specified, will be used as the default destination port associated // with the imported hosts. If the port is omitted, Istio will infer the @@ -239,44 +414,76 @@ type IstioEgressListener struct { // specific ports while others have no port, the hosts exposed on a // listener port will be based on the listener with the most specific // port. - Port *Port `protobuf:"bytes,1,opt,name=port" json:"port,omitempty"` - // The ip or the unix domain socket to which the listener should be bound - // to. Port MUST be specified if bind is not empty. Format: x.x.x.x or - // unix:///path/to/uds or unix://@foobar (Linux abstract namespace). If - // omitted, Istio will autoconfigure the defaults based on imported + Port *Port `protobuf:"bytes,1,opt,name=port,proto3" json:"port,omitempty"` + // The ip or the Unix domain socket to which the listener should be bound + // to. Port MUST be specified if bind is not empty. Format: `x.x.x.x` or + // `unix:///path/to/uds` or `unix://@foobar` (Linux abstract namespace). If + // omitted, Istio will automatically configure the defaults based on imported // services, the workload to which this configuration is applied to and // the captureMode. If captureMode is NONE, bind will default to // 127.0.0.1. Bind string `protobuf:"bytes,2,opt,name=bind,proto3" json:"bind,omitempty"` // When the bind address is an IP, the captureMode option dictates // how traffic to the listener is expected to be captured (or not). - // captureMode must be DEFAULT or NONE for unix domain socket binds. + // captureMode must be DEFAULT or NONE for Unix domain socket binds. CaptureMode CaptureMode `protobuf:"varint,3,opt,name=capture_mode,json=captureMode,proto3,enum=istio.networking.v1alpha3.CaptureMode" json:"capture_mode,omitempty"` - // REQUIRED: One or more services/virtualServices exposed by the listener - // in namespace/dnsName format. Publicly scoped services and - // VirtualServices from remote namespaces corresponding to the specified - // hosts will be imported. The service in a namespace can be a service in - // the service registry (e.g., a kubernetes or cloud foundry service) or - // a service specified via ServiceEntry configuration. In addition, any - // publicly scoped DestinationRule associated with the imported services - // will also be imported. + // REQUIRED: One or more service hosts exposed by the listener + // in `namespace/dnsName` format. Services in the specified namespace + // matching `dnsName` will be exposed. + // The corresponding service can be a service in the service registry + // (e.g., a Kubernetes or cloud foundry service) or a service specified + // using a `ServiceEntry` or `VirtualService` configuration. Any + // associated `DestinationRule` in the same namespace will also be used. // - // Set the namespace to * to import a particular service from any - // available namespace (e.g., "*/foo.example.com"). Set the dnsName field - // to * to import all services from the specified namespace (e.g., - // "prod/*"). The services should be specified using FQDN format. + // The `dnsName` should be specified using FQDN format, opionally including + // a wildcard character in the left-most component (e.g., `prod/*.example.com`). + // Set the `dnsName` to `*` to select all services from the specified namespace + // (e.g.,`prod/*`). The `namespace` can also be set to `*` to select a particular + // service from any available namespace (e.g., "*/foo.example.com"). // - // NOTE: Only exported services and configuration artifacts from a - // namespace can be imported. Private services/configuration will not be - // imported. Refer to the scope setting associated with VirtualService, - // DestinationRule, ServiceEntry, etc. for details. - Hosts []string `protobuf:"bytes,4,rep,name=hosts" json:"hosts,omitempty"` + // NOTE: Only services and configuration artifacts exported to the sidecar's + // namespace (e.g., `exportTo` value of `*`) can be referenced. + // Private configurations (e.g., `exportTo` set to `.`) will + // not be available. Refer to the `exportTo` setting in `VirtualService`, + // `DestinationRule`, and `ServiceEntry` configurations for details. + Hosts []string `protobuf:"bytes,4,rep,name=hosts,proto3" json:"hosts,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *IstioEgressListener) Reset() { *m = IstioEgressListener{} } -func (m *IstioEgressListener) String() string { return proto.CompactTextString(m) } -func (*IstioEgressListener) ProtoMessage() {} -func (*IstioEgressListener) Descriptor() ([]byte, []int) { return fileDescriptorSidecar, []int{2} } +func (m *IstioEgressListener) Reset() { *m = IstioEgressListener{} } +func (m *IstioEgressListener) String() string { return proto.CompactTextString(m) } +func (*IstioEgressListener) ProtoMessage() {} +func (*IstioEgressListener) Descriptor() ([]byte, []int) { + return fileDescriptor_b5c11342f04ad3d1, []int{2} +} +func (m *IstioEgressListener) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *IstioEgressListener) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_IstioEgressListener.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *IstioEgressListener) XXX_Merge(src proto.Message) { + xxx_messageInfo_IstioEgressListener.Merge(m, src) +} +func (m *IstioEgressListener) XXX_Size() int { + return m.Size() +} +func (m *IstioEgressListener) XXX_DiscardUnknown() { + xxx_messageInfo_IstioEgressListener.DiscardUnknown(m) +} + +var xxx_messageInfo_IstioEgressListener proto.InternalMessageInfo func (m *IstioEgressListener) GetPort() *Port { if m != nil { @@ -318,13 +525,44 @@ type WorkloadSelector struct { // on which this sidecar configuration should be applied. The scope of // label search is restricted to the configuration namespace in which the // the resource is present. - Labels map[string]string `protobuf:"bytes,1,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,1,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WorkloadSelector) Reset() { *m = WorkloadSelector{} } +func (m *WorkloadSelector) String() string { return proto.CompactTextString(m) } +func (*WorkloadSelector) ProtoMessage() {} +func (*WorkloadSelector) Descriptor() ([]byte, []int) { + return fileDescriptor_b5c11342f04ad3d1, []int{3} +} +func (m *WorkloadSelector) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *WorkloadSelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_WorkloadSelector.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *WorkloadSelector) XXX_Merge(src proto.Message) { + xxx_messageInfo_WorkloadSelector.Merge(m, src) +} +func (m *WorkloadSelector) XXX_Size() int { + return m.Size() +} +func (m *WorkloadSelector) XXX_DiscardUnknown() { + xxx_messageInfo_WorkloadSelector.DiscardUnknown(m) } -func (m *WorkloadSelector) Reset() { *m = WorkloadSelector{} } -func (m *WorkloadSelector) String() string { return proto.CompactTextString(m) } -func (*WorkloadSelector) ProtoMessage() {} -func (*WorkloadSelector) Descriptor() ([]byte, []int) { return fileDescriptorSidecar, []int{3} } +var xxx_messageInfo_WorkloadSelector proto.InternalMessageInfo func (m *WorkloadSelector) GetLabels() map[string]string { if m != nil { @@ -334,12 +572,50 @@ func (m *WorkloadSelector) GetLabels() map[string]string { } func init() { + proto.RegisterEnum("istio.networking.v1alpha3.CaptureMode", CaptureMode_name, CaptureMode_value) proto.RegisterType((*Sidecar)(nil), "istio.networking.v1alpha3.Sidecar") proto.RegisterType((*IstioIngressListener)(nil), "istio.networking.v1alpha3.IstioIngressListener") proto.RegisterType((*IstioEgressListener)(nil), "istio.networking.v1alpha3.IstioEgressListener") proto.RegisterType((*WorkloadSelector)(nil), "istio.networking.v1alpha3.WorkloadSelector") - proto.RegisterEnum("istio.networking.v1alpha3.CaptureMode", CaptureMode_name, CaptureMode_value) + proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1alpha3.WorkloadSelector.LabelsEntry") +} + +func init() { proto.RegisterFile("networking/v1alpha3/sidecar.proto", fileDescriptor_b5c11342f04ad3d1) } + +var fileDescriptor_b5c11342f04ad3d1 = []byte{ + // 465 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x93, 0x4f, 0x6f, 0xd3, 0x30, + 0x18, 0xc6, 0x71, 0x13, 0xda, 0xf5, 0xcd, 0x04, 0xc1, 0xec, 0x10, 0x76, 0x28, 0xa1, 0x07, 0x14, + 0x40, 0x4a, 0x44, 0x7b, 0xe0, 0xcf, 0x6d, 0x83, 0x4c, 0x8a, 0x54, 0xb6, 0x29, 0x1d, 0x02, 0x71, + 0xa9, 0xdc, 0xe6, 0xa5, 0xb3, 0x16, 0xe2, 0xc8, 0x76, 0x57, 0xf5, 0xcb, 0xf0, 0x55, 0xb8, 0x72, + 0xe4, 0xc2, 0x1d, 0xf5, 0x43, 0x70, 0x46, 0x4d, 0x3c, 0x6d, 0x4c, 0xa5, 0x88, 0x1b, 0x37, 0xbf, + 0x6f, 0x9e, 0xe7, 0xf7, 0xfa, 0x89, 0x6d, 0x78, 0x50, 0xa0, 0x9e, 0x0b, 0x79, 0xc6, 0x8b, 0x69, + 0x74, 0xfe, 0x94, 0xe5, 0xe5, 0x29, 0xeb, 0x47, 0x8a, 0x67, 0x38, 0x61, 0x32, 0x2c, 0xa5, 0xd0, + 0x82, 0xde, 0xe3, 0x4a, 0x73, 0x11, 0x5e, 0x0a, 0xc3, 0x0b, 0xe1, 0xee, 0x5a, 0xf7, 0x94, 0x69, + 0x9c, 0xb3, 0x45, 0xed, 0xee, 0xfe, 0x24, 0xd0, 0x1a, 0xd6, 0x3c, 0xfa, 0x1e, 0xee, 0xac, 0xd4, + 0xb9, 0x60, 0xd9, 0x48, 0x61, 0x8e, 0x13, 0x2d, 0xa4, 0x47, 0x7c, 0x12, 0x38, 0xbd, 0x27, 0xe1, + 0x1f, 0xa7, 0x84, 0xef, 0x8c, 0x67, 0x68, 0x2c, 0xa9, 0x3b, 0xbf, 0xd6, 0xa1, 0x09, 0xb4, 0x78, + 0x31, 0x95, 0xa8, 0x94, 0xd7, 0xf0, 0xad, 0xc0, 0xe9, 0x45, 0x1b, 0x78, 0xc9, 0xea, 0x4b, 0x52, + 0xcb, 0x07, 0x5c, 0x69, 0x2c, 0x50, 0xa6, 0x17, 0x7e, 0x7a, 0x00, 0x4d, 0xac, 0x49, 0x56, 0x45, + 0x0a, 0xff, 0x46, 0x8a, 0x7f, 0x07, 0x19, 0x77, 0xf7, 0x3b, 0x81, 0x9d, 0x75, 0x93, 0x68, 0x1f, + 0xec, 0x52, 0x48, 0x6d, 0x82, 0xdf, 0xdf, 0x80, 0x3f, 0x16, 0x52, 0xa7, 0x95, 0x98, 0x52, 0xb0, + 0xc7, 0xbc, 0xc8, 0xbc, 0x86, 0x4f, 0x82, 0x76, 0x5a, 0xad, 0x69, 0x02, 0xdb, 0x13, 0x56, 0xea, + 0x99, 0xc4, 0xd1, 0x27, 0x91, 0xa1, 0x67, 0xf9, 0x24, 0xb8, 0xd5, 0x7b, 0xb8, 0x01, 0xf8, 0xaa, + 0x96, 0xbf, 0x11, 0x19, 0xa6, 0xce, 0xe4, 0xb2, 0xa0, 0x8f, 0xc0, 0xcd, 0xf0, 0x23, 0x9b, 0xe5, + 0x7a, 0x84, 0x45, 0x56, 0x0a, 0x5e, 0x68, 0xcf, 0xae, 0x46, 0xdd, 0x36, 0xfd, 0xd8, 0xb4, 0xbb, + 0x5f, 0x08, 0xdc, 0x5d, 0x93, 0xfb, 0xbf, 0x8c, 0xb5, 0x03, 0x37, 0x4f, 0x85, 0xd2, 0xca, 0xb3, + 0x7d, 0x2b, 0x68, 0xa7, 0x75, 0xd1, 0xfd, 0x4c, 0xc0, 0xbd, 0x7e, 0xa7, 0xe8, 0x11, 0x34, 0x73, + 0x36, 0xc6, 0x5c, 0x79, 0xa4, 0x3a, 0xf6, 0x67, 0xff, 0x70, 0x21, 0xc3, 0x41, 0xe5, 0x8c, 0x0b, + 0x2d, 0x17, 0xa9, 0xc1, 0xec, 0xbe, 0x00, 0xe7, 0x4a, 0x9b, 0xba, 0x60, 0x9d, 0xe1, 0xa2, 0xfa, + 0x3b, 0xed, 0x74, 0xb5, 0x5c, 0x6d, 0xee, 0x9c, 0xe5, 0x33, 0x34, 0xe1, 0xeb, 0xe2, 0x65, 0xe3, + 0x39, 0x79, 0xdc, 0x03, 0xe7, 0x4a, 0x24, 0xea, 0x40, 0xeb, 0x75, 0x7c, 0xb0, 0xf7, 0x76, 0x70, + 0xe2, 0xde, 0xa0, 0xdb, 0xb0, 0x95, 0x1c, 0x9f, 0xec, 0xed, 0x0f, 0xe2, 0xa1, 0x4b, 0xe8, 0x16, + 0xd8, 0x87, 0x47, 0x87, 0xb1, 0xdb, 0xd8, 0x0f, 0xbf, 0x2e, 0x3b, 0xe4, 0xdb, 0xb2, 0x43, 0x7e, + 0x2c, 0x3b, 0xe4, 0x83, 0x5f, 0x6f, 0x9e, 0x8b, 0x88, 0x95, 0x3c, 0x5a, 0xf3, 0x4a, 0xc7, 0xcd, + 0xea, 0x79, 0xf6, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x32, 0x9f, 0xa8, 0x1c, 0x01, 0x04, 0x00, + 0x00, } + func (m *Sidecar) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -389,6 +665,9 @@ func (m *Sidecar) MarshalTo(dAtA []byte) (int, error) { i += n } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -434,6 +713,9 @@ func (m *IstioIngressListener) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintSidecar(dAtA, i, uint64(len(m.DefaultEndpoint))) i += copy(dAtA[i:], m.DefaultEndpoint) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -488,6 +770,9 @@ func (m *IstioEgressListener) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], s) } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -523,6 +808,9 @@ func (m *WorkloadSelector) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], v) } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -536,6 +824,9 @@ func encodeVarintSidecar(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *Sidecar) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.WorkloadSelector != nil { @@ -554,10 +845,16 @@ func (m *Sidecar) Size() (n int) { n += 1 + l + sovSidecar(uint64(l)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *IstioIngressListener) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Port != nil { @@ -575,10 +872,16 @@ func (m *IstioIngressListener) Size() (n int) { if l > 0 { n += 1 + l + sovSidecar(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *IstioEgressListener) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Port != nil { @@ -598,10 +901,16 @@ func (m *IstioEgressListener) Size() (n int) { n += 1 + l + sovSidecar(uint64(l)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *WorkloadSelector) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Labels) > 0 { @@ -612,6 +921,9 @@ func (m *WorkloadSelector) Size() (n int) { n += mapEntrySize + 1 + sovSidecar(uint64(mapEntrySize)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -643,7 +955,7 @@ func (m *Sidecar) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -671,7 +983,7 @@ func (m *Sidecar) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -680,6 +992,9 @@ func (m *Sidecar) Unmarshal(dAtA []byte) error { return ErrInvalidLengthSidecar } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthSidecar + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -704,7 +1019,7 @@ func (m *Sidecar) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -713,6 +1028,9 @@ func (m *Sidecar) Unmarshal(dAtA []byte) error { return ErrInvalidLengthSidecar } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthSidecar + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -735,7 +1053,7 @@ func (m *Sidecar) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -744,6 +1062,9 @@ func (m *Sidecar) Unmarshal(dAtA []byte) error { return ErrInvalidLengthSidecar } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthSidecar + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -761,9 +1082,13 @@ func (m *Sidecar) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthSidecar } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthSidecar + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -788,7 +1113,7 @@ func (m *IstioIngressListener) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -816,7 +1141,7 @@ func (m *IstioIngressListener) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -825,6 +1150,9 @@ func (m *IstioIngressListener) Unmarshal(dAtA []byte) error { return ErrInvalidLengthSidecar } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthSidecar + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -849,7 +1177,7 @@ func (m *IstioIngressListener) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -859,6 +1187,9 @@ func (m *IstioIngressListener) Unmarshal(dAtA []byte) error { return ErrInvalidLengthSidecar } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthSidecar + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -878,7 +1209,7 @@ func (m *IstioIngressListener) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.CaptureMode |= (CaptureMode(b) & 0x7F) << shift + m.CaptureMode |= CaptureMode(b&0x7F) << shift if b < 0x80 { break } @@ -897,7 +1228,7 @@ func (m *IstioIngressListener) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -907,6 +1238,9 @@ func (m *IstioIngressListener) Unmarshal(dAtA []byte) error { return ErrInvalidLengthSidecar } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthSidecar + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -921,9 +1255,13 @@ func (m *IstioIngressListener) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthSidecar } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthSidecar + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -948,7 +1286,7 @@ func (m *IstioEgressListener) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -976,7 +1314,7 @@ func (m *IstioEgressListener) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -985,6 +1323,9 @@ func (m *IstioEgressListener) Unmarshal(dAtA []byte) error { return ErrInvalidLengthSidecar } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthSidecar + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1009,7 +1350,7 @@ func (m *IstioEgressListener) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1019,6 +1360,9 @@ func (m *IstioEgressListener) Unmarshal(dAtA []byte) error { return ErrInvalidLengthSidecar } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthSidecar + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1038,7 +1382,7 @@ func (m *IstioEgressListener) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.CaptureMode |= (CaptureMode(b) & 0x7F) << shift + m.CaptureMode |= CaptureMode(b&0x7F) << shift if b < 0x80 { break } @@ -1057,7 +1401,7 @@ func (m *IstioEgressListener) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1067,6 +1411,9 @@ func (m *IstioEgressListener) Unmarshal(dAtA []byte) error { return ErrInvalidLengthSidecar } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthSidecar + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1081,9 +1428,13 @@ func (m *IstioEgressListener) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthSidecar } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthSidecar + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -1108,7 +1459,7 @@ func (m *WorkloadSelector) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1136,7 +1487,7 @@ func (m *WorkloadSelector) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1145,6 +1496,9 @@ func (m *WorkloadSelector) Unmarshal(dAtA []byte) error { return ErrInvalidLengthSidecar } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthSidecar + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1165,7 +1519,7 @@ func (m *WorkloadSelector) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1182,7 +1536,7 @@ func (m *WorkloadSelector) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1192,6 +1546,9 @@ func (m *WorkloadSelector) Unmarshal(dAtA []byte) error { return ErrInvalidLengthSidecar } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthSidecar + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -1208,7 +1565,7 @@ func (m *WorkloadSelector) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1218,6 +1575,9 @@ func (m *WorkloadSelector) Unmarshal(dAtA []byte) error { return ErrInvalidLengthSidecar } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthSidecar + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -1249,9 +1609,13 @@ func (m *WorkloadSelector) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthSidecar } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthSidecar + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -1315,10 +1679,13 @@ func skipSidecar(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthSidecar } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthSidecar + } return iNdEx, nil case 3: for { @@ -1347,6 +1714,9 @@ func skipSidecar(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthSidecar + } } return iNdEx, nil case 4: @@ -1365,39 +1735,3 @@ var ( ErrInvalidLengthSidecar = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowSidecar = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("networking/v1alpha3/sidecar.proto", fileDescriptorSidecar) } - -var fileDescriptorSidecar = []byte{ - // 465 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x93, 0x4f, 0x6f, 0xd3, 0x30, - 0x18, 0xc6, 0x71, 0x13, 0xda, 0xf5, 0xcd, 0x04, 0xc1, 0xec, 0x10, 0x76, 0x28, 0xa1, 0x07, 0x14, - 0x40, 0x4a, 0x44, 0x7b, 0xe0, 0xcf, 0x6d, 0x83, 0x4c, 0x8a, 0x54, 0xb6, 0x29, 0x1d, 0x02, 0x71, - 0xa9, 0xdc, 0xe6, 0xa5, 0xb3, 0x16, 0xe2, 0xc8, 0x76, 0x57, 0xf5, 0xcb, 0xf0, 0x55, 0xb8, 0x72, - 0xe4, 0xc2, 0x1d, 0xf5, 0x43, 0x70, 0x46, 0x4d, 0x3c, 0x6d, 0x4c, 0xa5, 0x88, 0x1b, 0x37, 0xbf, - 0x6f, 0x9e, 0xe7, 0xf7, 0xfa, 0x89, 0x6d, 0x78, 0x50, 0xa0, 0x9e, 0x0b, 0x79, 0xc6, 0x8b, 0x69, - 0x74, 0xfe, 0x94, 0xe5, 0xe5, 0x29, 0xeb, 0x47, 0x8a, 0x67, 0x38, 0x61, 0x32, 0x2c, 0xa5, 0xd0, - 0x82, 0xde, 0xe3, 0x4a, 0x73, 0x11, 0x5e, 0x0a, 0xc3, 0x0b, 0xe1, 0xee, 0x5a, 0xf7, 0x94, 0x69, - 0x9c, 0xb3, 0x45, 0xed, 0xee, 0xfe, 0x24, 0xd0, 0x1a, 0xd6, 0x3c, 0xfa, 0x1e, 0xee, 0xac, 0xd4, - 0xb9, 0x60, 0xd9, 0x48, 0x61, 0x8e, 0x13, 0x2d, 0xa4, 0x47, 0x7c, 0x12, 0x38, 0xbd, 0x27, 0xe1, - 0x1f, 0xa7, 0x84, 0xef, 0x8c, 0x67, 0x68, 0x2c, 0xa9, 0x3b, 0xbf, 0xd6, 0xa1, 0x09, 0xb4, 0x78, - 0x31, 0x95, 0xa8, 0x94, 0xd7, 0xf0, 0xad, 0xc0, 0xe9, 0x45, 0x1b, 0x78, 0xc9, 0xea, 0x4b, 0x52, - 0xcb, 0x07, 0x5c, 0x69, 0x2c, 0x50, 0xa6, 0x17, 0x7e, 0x7a, 0x00, 0x4d, 0xac, 0x49, 0x56, 0x45, - 0x0a, 0xff, 0x46, 0x8a, 0x7f, 0x07, 0x19, 0x77, 0xf7, 0x3b, 0x81, 0x9d, 0x75, 0x93, 0x68, 0x1f, - 0xec, 0x52, 0x48, 0x6d, 0x82, 0xdf, 0xdf, 0x80, 0x3f, 0x16, 0x52, 0xa7, 0x95, 0x98, 0x52, 0xb0, - 0xc7, 0xbc, 0xc8, 0xbc, 0x86, 0x4f, 0x82, 0x76, 0x5a, 0xad, 0x69, 0x02, 0xdb, 0x13, 0x56, 0xea, - 0x99, 0xc4, 0xd1, 0x27, 0x91, 0xa1, 0x67, 0xf9, 0x24, 0xb8, 0xd5, 0x7b, 0xb8, 0x01, 0xf8, 0xaa, - 0x96, 0xbf, 0x11, 0x19, 0xa6, 0xce, 0xe4, 0xb2, 0xa0, 0x8f, 0xc0, 0xcd, 0xf0, 0x23, 0x9b, 0xe5, - 0x7a, 0x84, 0x45, 0x56, 0x0a, 0x5e, 0x68, 0xcf, 0xae, 0x46, 0xdd, 0x36, 0xfd, 0xd8, 0xb4, 0xbb, - 0x5f, 0x08, 0xdc, 0x5d, 0x93, 0xfb, 0xbf, 0x8c, 0xb5, 0x03, 0x37, 0x4f, 0x85, 0xd2, 0xca, 0xb3, - 0x7d, 0x2b, 0x68, 0xa7, 0x75, 0xd1, 0xfd, 0x4c, 0xc0, 0xbd, 0x7e, 0xa7, 0xe8, 0x11, 0x34, 0x73, - 0x36, 0xc6, 0x5c, 0x79, 0xa4, 0x3a, 0xf6, 0x67, 0xff, 0x70, 0x21, 0xc3, 0x41, 0xe5, 0x8c, 0x0b, - 0x2d, 0x17, 0xa9, 0xc1, 0xec, 0xbe, 0x00, 0xe7, 0x4a, 0x9b, 0xba, 0x60, 0x9d, 0xe1, 0xa2, 0xfa, - 0x3b, 0xed, 0x74, 0xb5, 0x5c, 0x6d, 0xee, 0x9c, 0xe5, 0x33, 0x34, 0xe1, 0xeb, 0xe2, 0x65, 0xe3, - 0x39, 0x79, 0xdc, 0x03, 0xe7, 0x4a, 0x24, 0xea, 0x40, 0xeb, 0x75, 0x7c, 0xb0, 0xf7, 0x76, 0x70, - 0xe2, 0xde, 0xa0, 0xdb, 0xb0, 0x95, 0x1c, 0x9f, 0xec, 0xed, 0x0f, 0xe2, 0xa1, 0x4b, 0xe8, 0x16, - 0xd8, 0x87, 0x47, 0x87, 0xb1, 0xdb, 0xd8, 0x0f, 0xbf, 0x2e, 0x3b, 0xe4, 0xdb, 0xb2, 0x43, 0x7e, - 0x2c, 0x3b, 0xe4, 0x83, 0x5f, 0x6f, 0x9e, 0x8b, 0x88, 0x95, 0x3c, 0x5a, 0xf3, 0x4a, 0xc7, 0xcd, - 0xea, 0x79, 0xf6, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x32, 0x9f, 0xa8, 0x1c, 0x01, 0x04, 0x00, - 0x00, -} diff --git a/networking/v1alpha3/sidecar.pb.html b/networking/v1alpha3/sidecar.pb.html new file mode 100644 index 00000000000..c7cbb3970f2 --- /dev/null +++ b/networking/v1alpha3/sidecar.pb.html @@ -0,0 +1,447 @@ +--- +title: Sidecar +description: Configuration affecting network reachability of a sidecar. +location: https://istio.io/docs/reference/config/networking/v1alpha3/sidecar.html +layout: protoc-gen-docs +generator: protoc-gen-docs +number_of_entries: 5 +--- +

Sidecar describes the configuration of the sidecar proxy that mediates +inbound and outbound communication to the workload it is attached to. By +default, Istio will program all sidecar proxies in the mesh with the +necessary configuration required to reach every workload in the mesh, as +well as accept traffic on all the ports associated with the +workload. The Sidecar resource provides a way to fine tune the set of +ports, protocols that the proxy will accept when forwarding traffic to +and from the workload. In addition, it is possible to restrict the set +of services that the proxy can reach when forwarding outbound traffic +from the workload.

+ +

Services and configuration in a mesh are organized into one or more +namespaces (e.g., a Kubernetes namespace or a CF org/space). A Sidecar +resource in a namespace will apply to one or more workloads in the same +namespace, selected using the workloadSelector. In the absence of a +workloadSelector, it will apply to all workloads in the same +namespace. When determining the Sidecar resource to be applied to a +workload, preference will be given to the resource with a +workloadSelector that selects this workload, over a Sidecar resource +without any workloadSelector.

+ +

NOTE: Each namespace can have only one Sidecar resource without any +workload selector. The behavior of the system is undefined if more +than one selector-less Sidecar resources exist in a given namespace. The +behavior of the system is undefined if two or more Sidecar resources +with a workload selector select the same workload.

+ +

The example below declares a Sidecar resource in the prod-us1 namespace +that configures the sidecars in the namespace to allow egress traffic to +public services in the prod-us1, prod-apis, and the istio-system +namespaces.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: Sidecar
+metadata:
+  name: default
+  namespace: prod-us1
+spec:
+  egress:
+  - hosts:
+    - "prod-us1/*"
+    - "prod-apis/*"
+    - "istio-system/*"
+
+ +

The example below declares a Sidecar resource in the prod-us1 namespace +that accepts inbound HTTP traffic on port 9080 and forwards +it to the attached workload listening on a Unix domain socket. In the +egress direction, in addition to the istio-system namespace, the sidecar +proxies only HTTP traffic bound for port 9080 for services in the +prod-us1 namespace.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: Sidecar
+metadata:
+  name: default
+  namespace: prod-us1
+spec:
+  ingress:
+  - port:
+      number: 9080
+      protocol: HTTP
+      name: somename
+    defaultEndpoint: unix:///var/run/someuds.sock
+  egress:
+  - hosts:
+    - "istio-system/*"
+  - port:
+      number: 9080
+      protocol: HTTP
+      name: egresshttp
+    hosts:
+    - "prod-us1/*"
+
+ +

If the workload is deployed without IP tables based traffic capture, the +Sidecar resource is the only way to configure the ports on the proxy +attached to the workload. The following example declares a Sidecar +resource in the prod-us1 namespace for all pods with labels “app: +productpage” belonging to the productpage.prod-us1 service. Assuming +that these pods are deployed without IPtable rules (i.e. the Istio init +container) and the proxy metadata ISTIOMETAINTERCEPTION_MODE is set to +NONE, the specification below allows such pods to receive HTTP traffic +on port 9080 and forward it to the application listening on +127.0.0.1:8080. It also allows the application to communicate with a +backing MySQL database on 127.0.0.1:3306, that then gets proxied to the +externally hosted MySQL service at mysql.foo.com:3306.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: Sidecar
+metadata:
+  name: no-ip-tables
+  namespace: prod-us1
+spec:
+  workloadSelector:
+    labels:
+      app: productpage
+  ingress:
+  - port:
+      number: 9080 # binds to 0.0.0.0:9080
+      protocol: HTTP
+      name: somename
+    defaultEndpoint: 127.0.0.1:8080
+    captureMode: NONE # not needed if metadata is set for entire proxy
+  egress:
+  - port:
+      number: 3306
+      protocol: MYSQL
+      name: egressmysql
+    captureMode: NONE # not needed if metadata is set for entire proxy
+    bind: 127.0.0.1
+    hosts:
+    - "*/mysql.foo.com"
+
+ +

And the associated service entry for routing to mysql.foo.com:3306

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: ServiceEntry
+metadata:
+  name: external-svc-mysql
+  namespace: ns1
+spec:
+  hosts:
+  - mysql.foo.com
+  ports:
+  - number: 3306
+    name: mysql
+    protocol: MYSQL
+  location: MESH_EXTERNAL
+  resolution: DNS
+
+ +

It is also possible to mix and match traffic capture modes in a single +proxy. For example, consider a setup where internal services are on the +192.168.0.0/16 subnet. So, IP tables are setup on the VM to capture all +outbound traffic on 192.168.0.0/16 subnet. Assume that the VM has an +additional network interface on 172.16.0.0/16 subnet for inbound +traffic. The following Sidecar configuration allows the VM to expose a +listener on 172.16.1.32:80 (the VM’s IP) for traffic arriving from the +172.16.0.0/16 subnet. Note that in this scenario, the +ISTIOMETAINTERCEPTION_MODE metadata on the proxy in the VM should +contain “REDIRECT” or “TPROXY” as its value, implying that IP tables +based traffic capture is active.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: Sidecar
+metadata:
+  name: partial-ip-tables
+  namespace: prod-us1
+spec:
+  workloadSelector:
+    labels:
+      app: productpage
+  ingress:
+  - bind: 172.16.1.32
+    port:
+      number: 80 # binds to 172.16.1.32:80
+      protocol: HTTP
+      name: somename
+    defaultEndpoint: 127.0.0.1:8080
+    captureMode: NONE
+  egress:
+    # use the system detected defaults
+    # sets up configuration to handle outbound traffic to services
+    # in 192.168.0.0/16 subnet, based on information provided by the
+    # service registry
+  - captureMode: IPTABLES
+    hosts:
+    - "*/*"
+
+ +

CaptureMode

+
+

CaptureMode describes how traffic to a listener is expected to be +captured. Applicable only when the listener is bound to an IP.

+ + + + + + + + + + + + + + + + + + + + + + +
NameDescription
DEFAULT +

The default capture mode defined by the environment

+ +
IPTABLES +

Capture traffic using IPtables redirection

+ +
NONE +

No traffic capture. When used in egress listener, the application is +expected to explicitly communicate with the listener port/unix +domain socket. When used in ingress listener, care needs to be taken +to ensure that the listener port is not in use by other processes on +the host.

+ +
+
+

IstioEgressListener

+
+

IstioEgressListener specifies the properties of an outbound traffic +listener on the sidecar proxy attached to a workload.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
portPort +

The port associated with the listener. If using Unix domain socket, +use 0 as the port number, with a valid protocol. The port if +specified, will be used as the default destination port associated +with the imported hosts. If the port is omitted, Istio will infer the +listener ports based on the imported hosts. Note that when multiple +egress listeners are specified, where one or more listeners have +specific ports while others have no port, the hosts exposed on a +listener port will be based on the listener with the most specific +port.

+ +
bindstring +

The ip or the Unix domain socket to which the listener should be bound +to. Port MUST be specified if bind is not empty. Format: x.x.x.x or +unix:///path/to/uds or unix://@foobar (Linux abstract namespace). If +omitted, Istio will automatically configure the defaults based on imported +services, the workload to which this configuration is applied to and +the captureMode. If captureMode is NONE, bind will default to +127.0.0.1.

+ +
captureModeCaptureMode +

When the bind address is an IP, the captureMode option dictates +how traffic to the listener is expected to be captured (or not). +captureMode must be DEFAULT or NONE for Unix domain socket binds.

+ +
hostsstring[] +

REQUIRED: One or more service hosts exposed by the listener +in namespace/dnsName format. Services in the specified namespace +matching dnsName will be exposed. +The corresponding service can be a service in the service registry +(e.g., a Kubernetes or cloud foundry service) or a service specified +using a ServiceEntry or VirtualService configuration. Any +associated DestinationRule in the same namespace will also be used.

+ +

The dnsName should be specified using FQDN format, opionally including +a wildcard character in the left-most component (e.g., prod/*.example.com). +Set the dnsName to * to select all services from the specified namespace +(e.g.,prod/*). The namespace can also be set to * to select a particular +service from any available namespace (e.g., “*/foo.example.com”).

+ +

NOTE: Only services and configuration artifacts exported to the sidecar’s +namespace (e.g., exportTo value of *) can be referenced. +Private configurations (e.g., exportTo set to .) will +not be available. Refer to the exportTo setting in VirtualService, +DestinationRule, and ServiceEntry configurations for details.

+ +
+
+

IstioIngressListener

+
+

IstioIngressListener specifies the properties of an inbound +traffic listener on the sidecar proxy attached to a workload.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
portPort +

REQUIRED. The port associated with the listener. If using +Unix domain socket, use 0 as the port number, with a valid +protocol.

+ +
bindstring +

The ip or the Unix domain socket to which the listener should be bound +to. Format: x.x.x.x or unix:///path/to/uds or unix://@foobar (Linux +abstract namespace). If omitted, Istio will automatically configure the defaults +based on imported services and the workload to which this +configuration is applied to.

+ +
captureModeCaptureMode +

When the bind address is an IP, the captureMode option dictates +how traffic to the listener is expected to be captured (or not). +captureMode must be DEFAULT or NONE for Unix domain socket binds.

+ +
defaultEndpointstring +

REQUIRED: The loopback IP endpoint or Unix domain socket to which +traffic should be forwarded to. This configuration can be used to +redirect traffic arriving at the bind point on the sidecar to a port +or Unix domain socket where the application workload is listening for +connections. Format should be 127.0.0.1:PORT or unix:///path/to/socket

+ +
+
+

Sidecar

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
workloadSelectorWorkloadSelector +

Criteria used to select the specific set of pods/VMs on which this +sidecar configuration should be applied. If omitted, the sidecar +configuration will be applied to all workloads in the same config +namespace.

+ +
ingressIstioIngressListener[] +

Ingress specifies the configuration of the sidecar for processing +inbound traffic to the attached workload. If omitted, Istio will +automatically configure the sidecar based on the information about the workload +obtained from the orchestration platform (e.g., exposed ports, services, +etc.). If specified, inbound ports are configured if and only if the +workload is associated with a service.

+ +
egressIstioEgressListener[] +

Egress specifies the configuration of the sidecar for processing +outbound traffic from the attached workload to other services in the +mesh. If omitted, Istio will automatically configure the sidecar to be able to +reach every service in the mesh that is visible to this namespace.

+ +
+
+

WorkloadSelector

+
+

WorkloadSelector specifies the criteria used to determine if the Gateway +or Sidecar resource can be applied to a proxy. The matching criteria +includes the metadata associated with a proxy, workload info such as +labels attached to the pod/VM, or any other info that the proxy provides +to Istio during the initial handshake. If multiple conditions are +specified, all conditions need to match in order for the workload to be +selected. Currently, only label based selection mechanism is supported.

+ + + + + + + + + + + + + + + + +
FieldTypeDescription
labelsmap<string, string> +

REQUIRED: One or more labels that indicate a specific set of pods/VMs +on which this sidecar configuration should be applied. The scope of +label search is restricted to the configuration namespace in which the +the resource is present.

+ +
+
diff --git a/networking/v1alpha3/sidecar.proto b/networking/v1alpha3/sidecar.proto index d2e2776513c..e3a5be25453 100644 --- a/networking/v1alpha3/sidecar.proto +++ b/networking/v1alpha3/sidecar.proto @@ -16,9 +16,9 @@ syntax = "proto3"; import "networking/v1alpha3/gateway.proto"; -package istio.networking.v1alpha3; - -option go_package = "istio.io/api/networking/v1alpha3"; +// $title: Sidecar +// $description: Configuration affecting network reachability of a sidecar. +// $location: https://istio.io/docs/reference/config/networking/v1alpha3/sidecar.html // `Sidecar` describes the configuration of the sidecar proxy that mediates // inbound and outbound communication to the workload it is attached to. By @@ -68,7 +68,7 @@ option go_package = "istio.io/api/networking/v1alpha3"; // // The example below declares a Sidecar resource in the prod-us1 namespace // that accepts inbound HTTP traffic on port 9080 and forwards -// it to the attached workload listening on a unix domain socket. In the +// it to the attached workload listening on a Unix domain socket. In the // egress direction, in addition to the istio-system namespace, the sidecar // proxies only HTTP traffic bound for port 9080 for services in the // prod-us1 namespace. @@ -97,6 +97,110 @@ option go_package = "istio.io/api/networking/v1alpha3"; // - "prod-us1/*" // ``` // +// If the workload is deployed without IP tables based traffic capture, the +// Sidecar resource is the only way to configure the ports on the proxy +// attached to the workload. The following example declares a Sidecar +// resource in the prod-us1 namespace for all pods with labels "app: +// productpage" belonging to the productpage.prod-us1 service. Assuming +// that these pods are deployed without IPtable rules (i.e. the Istio init +// container) and the proxy metadata ISTIO_META_INTERCEPTION_MODE is set to +// NONE, the specification below allows such pods to receive HTTP traffic +// on port 9080 and forward it to the application listening on +// 127.0.0.1:8080. It also allows the application to communicate with a +// backing MySQL database on 127.0.0.1:3306, that then gets proxied to the +// externally hosted MySQL service at mysql.foo.com:3306. +// +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: Sidecar +// metadata: +// name: no-ip-tables +// namespace: prod-us1 +// spec: +// workloadSelector: +// labels: +// app: productpage +// ingress: +// - port: +// number: 9080 # binds to 0.0.0.0:9080 +// protocol: HTTP +// name: somename +// defaultEndpoint: 127.0.0.1:8080 +// captureMode: NONE # not needed if metadata is set for entire proxy +// egress: +// - port: +// number: 3306 +// protocol: MYSQL +// name: egressmysql +// captureMode: NONE # not needed if metadata is set for entire proxy +// bind: 127.0.0.1 +// hosts: +// - "*/mysql.foo.com" +// ``` +// +// And the associated service entry for routing to mysql.foo.com:3306 +// +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: ServiceEntry +// metadata: +// name: external-svc-mysql +// namespace: ns1 +// spec: +// hosts: +// - mysql.foo.com +// ports: +// - number: 3306 +// name: mysql +// protocol: MYSQL +// location: MESH_EXTERNAL +// resolution: DNS +// ``` +// +// It is also possible to mix and match traffic capture modes in a single +// proxy. For example, consider a setup where internal services are on the +// 192.168.0.0/16 subnet. So, IP tables are setup on the VM to capture all +// outbound traffic on 192.168.0.0/16 subnet. Assume that the VM has an +// additional network interface on 172.16.0.0/16 subnet for inbound +// traffic. The following Sidecar configuration allows the VM to expose a +// listener on 172.16.1.32:80 (the VM's IP) for traffic arriving from the +// 172.16.0.0/16 subnet. Note that in this scenario, the +// ISTIO_META_INTERCEPTION_MODE metadata on the proxy in the VM should +// contain "REDIRECT" or "TPROXY" as its value, implying that IP tables +// based traffic capture is active. +// +// ```yaml +// apiVersion: networking.istio.io/v1alpha3 +// kind: Sidecar +// metadata: +// name: partial-ip-tables +// namespace: prod-us1 +// spec: +// workloadSelector: +// labels: +// app: productpage +// ingress: +// - bind: 172.16.1.32 +// port: +// number: 80 # binds to 172.16.1.32:80 +// protocol: HTTP +// name: somename +// defaultEndpoint: 127.0.0.1:8080 +// captureMode: NONE +// egress: +// # use the system detected defaults +// # sets up configuration to handle outbound traffic to services +// # in 192.168.0.0/16 subnet, based on information provided by the +// # service registry +// - captureMode: IPTABLES +// hosts: +// - "*/*" +// ``` +// +package istio.networking.v1alpha3; + +option go_package = "istio.io/api/networking/v1alpha3"; + message Sidecar { // Criteria used to select the specific set of pods/VMs on which this // sidecar configuration should be applied. If omitted, the sidecar @@ -106,14 +210,15 @@ message Sidecar { // Ingress specifies the configuration of the sidecar for processing // inbound traffic to the attached workload. If omitted, Istio will - // autoconfigure the sidecar based on the information about the workload + // automatically configure the sidecar based on the information about the workload // obtained from the orchestration platform (e.g., exposed ports, services, - // etc.). + // etc.). If specified, inbound ports are configured if and only if the + // workload is associated with a service. repeated IstioIngressListener ingress = 2; // Egress specifies the configuration of the sidecar for processing // outbound traffic from the attached workload to other services in the - // mesh. If omitted, Istio will autoconfigure the sidecar to be able to + // mesh. If omitted, Istio will automatically configure the sidecar to be able to // reach every service in the mesh that is visible to this namespace. repeated IstioEgressListener egress = 3; } @@ -122,26 +227,26 @@ message Sidecar { // traffic listener on the sidecar proxy attached to a workload. message IstioIngressListener { // REQUIRED. The port associated with the listener. If using - // unix domain socket, use 0 as the port number, with a valid + // Unix domain socket, use 0 as the port number, with a valid // protocol. Port port = 1; - // The ip or the unix domain socket to which the listener should be bound - // to. Format: x.x.x.x or unix:///path/to/uds or unix://@foobar (Linux - // abstract namespace). If omitted, Istio will autoconfigure the defaults + // The ip or the Unix domain socket to which the listener should be bound + // to. Format: `x.x.x.x` or `unix:///path/to/uds` or `unix://@foobar` (Linux + // abstract namespace). If omitted, Istio will automatically configure the defaults // based on imported services and the workload to which this // configuration is applied to. string bind = 2; // When the bind address is an IP, the captureMode option dictates // how traffic to the listener is expected to be captured (or not). - // captureMode must be DEFAULT or NONE for unix domain socket binds. + // captureMode must be DEFAULT or NONE for Unix domain socket binds. CaptureMode capture_mode = 3; - // REQUIRED: The loopback IP endpoint or unix domain socket to which + // REQUIRED: The loopback IP endpoint or Unix domain socket to which // traffic should be forwarded to. This configuration can be used to // redirect traffic arriving at the bind point on the sidecar to a port - // or unix domain socket where the application workload is listening for + // or Unix domain socket where the application workload is listening for // connections. Format should be 127.0.0.1:PORT or unix:///path/to/socket string default_endpoint = 4; } @@ -149,7 +254,7 @@ message IstioIngressListener { // IstioEgressListener specifies the properties of an outbound traffic // listener on the sidecar proxy attached to a workload. message IstioEgressListener { - // The port associated with the listener. If using unix domain socket, + // The port associated with the listener. If using Unix domain socket, // use 0 as the port number, with a valid protocol. The port if // specified, will be used as the default destination port associated // with the imported hosts. If the port is omitted, Istio will infer the @@ -160,10 +265,10 @@ message IstioEgressListener { // port. Port port = 1; - // The ip or the unix domain socket to which the listener should be bound - // to. Port MUST be specified if bind is not empty. Format: x.x.x.x or - // unix:///path/to/uds or unix://@foobar (Linux abstract namespace). If - // omitted, Istio will autoconfigure the defaults based on imported + // The ip or the Unix domain socket to which the listener should be bound + // to. Port MUST be specified if bind is not empty. Format: `x.x.x.x` or + // `unix:///path/to/uds` or `unix://@foobar` (Linux abstract namespace). If + // omitted, Istio will automatically configure the defaults based on imported // services, the workload to which this configuration is applied to and // the captureMode. If captureMode is NONE, bind will default to // 127.0.0.1. @@ -171,27 +276,28 @@ message IstioEgressListener { // When the bind address is an IP, the captureMode option dictates // how traffic to the listener is expected to be captured (or not). - // captureMode must be DEFAULT or NONE for unix domain socket binds. + // captureMode must be DEFAULT or NONE for Unix domain socket binds. CaptureMode capture_mode = 3; - // REQUIRED: One or more services/virtualServices exposed by the listener - // in namespace/dnsName format. Publicly scoped services and - // VirtualServices from remote namespaces corresponding to the specified - // hosts will be imported. The service in a namespace can be a service in - // the service registry (e.g., a kubernetes or cloud foundry service) or - // a service specified via ServiceEntry configuration. In addition, any - // publicly scoped DestinationRule associated with the imported services - // will also be imported. + // REQUIRED: One or more service hosts exposed by the listener + // in `namespace/dnsName` format. Services in the specified namespace + // matching `dnsName` will be exposed. + // The corresponding service can be a service in the service registry + // (e.g., a Kubernetes or cloud foundry service) or a service specified + // using a `ServiceEntry` or `VirtualService` configuration. Any + // associated `DestinationRule` in the same namespace will also be used. // - // Set the namespace to * to import a particular service from any - // available namespace (e.g., "*/foo.example.com"). Set the dnsName field - // to * to import all services from the specified namespace (e.g., - // "prod/*"). The services should be specified using FQDN format. + // The `dnsName` should be specified using FQDN format, opionally including + // a wildcard character in the left-most component (e.g., `prod/*.example.com`). + // Set the `dnsName` to `*` to select all services from the specified namespace + // (e.g.,`prod/*`). The `namespace` can also be set to `*` to select a particular + // service from any available namespace (e.g., "*/foo.example.com"). // - // NOTE: Only exported services and configuration artifacts from a - // namespace can be imported. Private services/configuration will not be - // imported. Refer to the scope setting associated with VirtualService, - // DestinationRule, ServiceEntry, etc. for details. + // NOTE: Only services and configuration artifacts exported to the sidecar's + // namespace (e.g., `exportTo` value of `*`) can be referenced. + // Private configurations (e.g., `exportTo` set to `.`) will + // not be available. Refer to the `exportTo` setting in `VirtualService`, + // `DestinationRule`, and `ServiceEntry` configurations for details. repeated string hosts = 4; } diff --git a/networking/v1alpha3/virtual_service.pb.go b/networking/v1alpha3/virtual_service.pb.go index 1d854732ba2..dc79fdf24e0 100644 --- a/networking/v1alpha3/virtual_service.pb.go +++ b/networking/v1alpha3/virtual_service.pb.go @@ -1,23 +1,35 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: networking/v1alpha3/virtual_service.proto -package v1alpha3 - -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf "github.com/gogo/protobuf/types" -import google_protobuf1 "github.com/gogo/protobuf/types" - -import binary "encoding/binary" - -import io "io" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - +// Configuration affecting traffic routing. Here are a few terms useful to define +// in the context of traffic routing. +// +// `Service` a unit of application behavior bound to a unique name in a +// service registry. Services consist of multiple network *endpoints* +// implemented by workload instances running on pods, containers, VMs etc. +// +// `Service versions (a.k.a. subsets)` - In a continuous deployment +// scenario, for a given service, there can be distinct subsets of +// instances running different variants of the application binary. These +// variants are not necessarily different API versions. They could be +// iterative changes to the same service, deployed in different +// environments (prod, staging, dev, etc.). Common scenarios where this +// occurs include A/B testing, canary rollouts, etc. The choice of a +// particular version can be decided based on various criterion (headers, +// url, etc.) and/or by weights assigned to each version. Each service has +// a default version consisting of all its instances. +// +// `Source` - A downstream client calling a service. +// +// `Host` - The address used by a client when attempting to connect to a +// service. +// +// `Access model` - Applications address only the destination service +// (Host) without knowledge of individual service versions (subsets). The +// actual choice of the version is determined by the proxy/sidecar, enabling the +// application code to decouple itself from the evolution of dependent +// services. +// // A `VirtualService` defines a set of traffic routing rules to apply when a host is // addressed. Each routing rule defines matching criteria for traffic of a specific // protocol. If the traffic is matched, then it is sent to a named destination service @@ -78,6 +90,29 @@ var _ = math.Inf // version: v2 // ``` // + +package v1alpha3 + +import ( + encoding_binary "encoding/binary" + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + types "github.com/gogo/protobuf/types" + io "io" + math "math" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + type VirtualService struct { // REQUIRED. The destination hosts to which traffic is being sent. Could // be a DNS name with wildcard prefix or an IP address. Depending on the @@ -102,7 +137,7 @@ type VirtualService struct { // the mesh, i.e., those found in the service registry, must always be // referred to using their alphanumeric names. IP addresses are allowed // only for services defined via the Gateway. - Hosts []string `protobuf:"bytes,1,rep,name=hosts" json:"hosts,omitempty"` + Hosts []string `protobuf:"bytes,1,rep,name=hosts,proto3" json:"hosts,omitempty"` // The names of gateways and sidecars that should apply these routes. A // single VirtualService is used for sidecars inside the mesh as well as // for one or more gateways. The selection condition imposed by this @@ -113,13 +148,13 @@ type VirtualService struct { // sidecars in the mesh. If a list of gateway names is provided, the // rules will apply only to the gateways. To apply the rules to both // gateways and sidecars, specify `mesh` as one of the gateway names. - Gateways []string `protobuf:"bytes,2,rep,name=gateways" json:"gateways,omitempty"` + Gateways []string `protobuf:"bytes,2,rep,name=gateways,proto3" json:"gateways,omitempty"` // An ordered list of route rules for HTTP traffic. HTTP routes will be // applied to platform service ports named 'http-*'/'http2-*'/'grpc-*', gateway // ports with protocol HTTP/HTTP2/GRPC/ TLS-terminated-HTTPS and service // entry ports using HTTP/HTTP2/GRPC protocols. The first rule matching // an incoming request is used. - Http []*HTTPRoute `protobuf:"bytes,3,rep,name=http" json:"http,omitempty"` + Http []*HTTPRoute `protobuf:"bytes,3,rep,name=http,proto3" json:"http,omitempty"` // An ordered list of route rule for non-terminated TLS & HTTPS // traffic. Routing is typically performed using the SNI value presented // by the ClientHello message. TLS routes will be applied to platform @@ -129,13 +164,13 @@ type VirtualService struct { // incoming request is used. NOTE: Traffic 'https-*' or 'tls-*' ports // without associated virtual service will be treated as opaque TCP // traffic. - Tls []*TLSRoute `protobuf:"bytes,5,rep,name=tls" json:"tls,omitempty"` + Tls []*TLSRoute `protobuf:"bytes,5,rep,name=tls,proto3" json:"tls,omitempty"` // An ordered list of route rules for opaque TCP traffic. TCP routes will // be applied to any port that is not a HTTP or TLS port. The first rule // matching an incoming request is used. - Tcp []*TCPRoute `protobuf:"bytes,4,rep,name=tcp" json:"tcp,omitempty"` + Tcp []*TCPRoute `protobuf:"bytes,4,rep,name=tcp,proto3" json:"tcp,omitempty"` // A list of namespaces to which this virtual service is exported. Exporting a - // virtual service allows it to used by sidecars and gateways defined in + // virtual service allows it to be used by sidecars and gateways defined in // other namespaces. This feature provides a mechanism for service owners // and mesh administrators to control the visibility of virtual services // across namespace boundaries. @@ -144,15 +179,49 @@ type VirtualService struct { // namespaces by default. // // The value "." is reserved and defines an export to the same namespace that - // the virtual service is declared in, similarly the value "*" is reserved and + // the virtual service is declared in. Similarly the value "*" is reserved and // defines an export to all namespaces. - ExportTo []string `protobuf:"bytes,6,rep,name=export_to,json=exportTo" json:"export_to,omitempty"` + // + // NOTE: in the current release, the `exportTo` value is restricted to + // "." or "*" (i.e., the current namespace or all namespaces). + ExportTo []string `protobuf:"bytes,6,rep,name=export_to,json=exportTo,proto3" json:"export_to,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *VirtualService) Reset() { *m = VirtualService{} } +func (m *VirtualService) String() string { return proto.CompactTextString(m) } +func (*VirtualService) ProtoMessage() {} +func (*VirtualService) Descriptor() ([]byte, []int) { + return fileDescriptor_e85a9a4fa9c17a22, []int{0} +} +func (m *VirtualService) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *VirtualService) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_VirtualService.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *VirtualService) XXX_Merge(src proto.Message) { + xxx_messageInfo_VirtualService.Merge(m, src) +} +func (m *VirtualService) XXX_Size() int { + return m.Size() +} +func (m *VirtualService) XXX_DiscardUnknown() { + xxx_messageInfo_VirtualService.DiscardUnknown(m) } -func (m *VirtualService) Reset() { *m = VirtualService{} } -func (m *VirtualService) String() string { return proto.CompactTextString(m) } -func (*VirtualService) ProtoMessage() {} -func (*VirtualService) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{0} } +var xxx_messageInfo_VirtualService proto.InternalMessageInfo func (m *VirtualService) GetHosts() []string { if m != nil { @@ -202,7 +271,7 @@ func (m *VirtualService) GetExportTo() []string { // registry. Istio's service registry is composed of all the services found // in the platform's service registry (e.g., Kubernetes services, Consul // services), as well as services declared through the -// [ServiceEntry](#ServiceEntry) resource. +// [ServiceEntry](/docs/reference/config/networking/v1alpha3/service-entry/#ServiceEntry) resource. // // *Note for Kubernetes users*: When short names are used (e.g. "reviews" // instead of "reviews.default.svc.cluster.local"), Istio will interpret @@ -215,7 +284,7 @@ func (m *VirtualService) GetExportTo() []string { // // The following Kubernetes example routes all traffic by default to pods // of the reviews service with label "version: v1" (i.e., subset v1), and -// some to subset v2, in a kubernetes environment. +// some to subset v2, in a Kubernetes environment. // // ```yaml // apiVersion: networking.istio.io/v1alpha3 @@ -327,7 +396,7 @@ type Destination struct { // REQUIRED. The name of a service from the service registry. Service // names are looked up from the platform's service registry (e.g., // Kubernetes services, Consul services, etc.) and from the hosts - // declared by [ServiceEntry](#ServiceEntry). Traffic forwarded to + // declared by [ServiceEntry](/docs/reference/config/networking/v1alpha3/service-entry/#ServiceEntry). Traffic forwarded to // destinations that are not found in either of the two, will be dropped. // // *Note for Kubernetes users*: When short names are used (e.g. "reviews" @@ -346,13 +415,44 @@ type Destination struct { // Specifies the port on the host that is being addressed. If a service // exposes only a single port it is not required to explicitly select the // port. - Port *PortSelector `protobuf:"bytes,3,opt,name=port" json:"port,omitempty"` + Port *PortSelector `protobuf:"bytes,3,opt,name=port,proto3" json:"port,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Destination) Reset() { *m = Destination{} } +func (m *Destination) String() string { return proto.CompactTextString(m) } +func (*Destination) ProtoMessage() {} +func (*Destination) Descriptor() ([]byte, []int) { + return fileDescriptor_e85a9a4fa9c17a22, []int{1} +} +func (m *Destination) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Destination) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Destination.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Destination) XXX_Merge(src proto.Message) { + xxx_messageInfo_Destination.Merge(m, src) +} +func (m *Destination) XXX_Size() int { + return m.Size() +} +func (m *Destination) XXX_DiscardUnknown() { + xxx_messageInfo_Destination.DiscardUnknown(m) } -func (m *Destination) Reset() { *m = Destination{} } -func (m *Destination) String() string { return proto.CompactTextString(m) } -func (*Destination) ProtoMessage() {} -func (*Destination) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{1} } +var xxx_messageInfo_Destination proto.InternalMessageInfo func (m *Destination) GetHost() string { if m != nil { @@ -382,65 +482,96 @@ type HTTPRoute struct { // activated. All conditions inside a single match block have AND // semantics, while the list of match blocks have OR semantics. The rule // is matched if any one of the match blocks succeed. - Match []*HTTPMatchRequest `protobuf:"bytes,1,rep,name=match" json:"match,omitempty"` + Match []*HTTPMatchRequest `protobuf:"bytes,1,rep,name=match,proto3" json:"match,omitempty"` // A http rule can either redirect or forward (default) traffic. The // forwarding target can be one of several versions of a service (see // glossary in beginning of document). Weights associated with the // service version determine the proportion of traffic it receives. - Route []*HTTPRouteDestination `protobuf:"bytes,2,rep,name=route" json:"route,omitempty"` + Route []*HTTPRouteDestination `protobuf:"bytes,2,rep,name=route,proto3" json:"route,omitempty"` // A http rule can either redirect or forward (default) traffic. If // traffic passthrough option is specified in the rule, // route/redirect will be ignored. The redirect primitive can be used to // send a HTTP 301 redirect to a different URI or Authority. - Redirect *HTTPRedirect `protobuf:"bytes,3,opt,name=redirect" json:"redirect,omitempty"` + Redirect *HTTPRedirect `protobuf:"bytes,3,opt,name=redirect,proto3" json:"redirect,omitempty"` // Rewrite HTTP URIs and Authority headers. Rewrite cannot be used with // Redirect primitive. Rewrite will be performed before forwarding. - Rewrite *HTTPRewrite `protobuf:"bytes,4,opt,name=rewrite" json:"rewrite,omitempty"` + Rewrite *HTTPRewrite `protobuf:"bytes,4,opt,name=rewrite,proto3" json:"rewrite,omitempty"` // Deprecated. Websocket upgrades are done automatically starting from Istio 1.0. // $hide_from_docs WebsocketUpgrade bool `protobuf:"varint,5,opt,name=websocket_upgrade,json=websocketUpgrade,proto3" json:"websocket_upgrade,omitempty"` // Timeout for HTTP requests. - Timeout *google_protobuf.Duration `protobuf:"bytes,6,opt,name=timeout" json:"timeout,omitempty"` + Timeout *types.Duration `protobuf:"bytes,6,opt,name=timeout,proto3" json:"timeout,omitempty"` // Retry policy for HTTP requests. - Retries *HTTPRetry `protobuf:"bytes,7,opt,name=retries" json:"retries,omitempty"` + Retries *HTTPRetry `protobuf:"bytes,7,opt,name=retries,proto3" json:"retries,omitempty"` // Fault injection policy to apply on HTTP traffic at the client side. // Note that timeouts or retries will not be enabled when faults are // enabled on the client side. - Fault *HTTPFaultInjection `protobuf:"bytes,8,opt,name=fault" json:"fault,omitempty"` + Fault *HTTPFaultInjection `protobuf:"bytes,8,opt,name=fault,proto3" json:"fault,omitempty"` // Mirror HTTP traffic to a another destination in addition to forwarding // the requests to the intended destination. Mirrored traffic is on a // best effort basis where the sidecar/gateway will not wait for the // mirrored cluster to respond before returning the response from the // original destination. Statistics will be generated for the mirrored // destination. - Mirror *Destination `protobuf:"bytes,9,opt,name=mirror" json:"mirror,omitempty"` + Mirror *Destination `protobuf:"bytes,9,opt,name=mirror,proto3" json:"mirror,omitempty"` // Cross-Origin Resource Sharing policy (CORS). Refer to - // https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS + // [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) // for further details about cross origin resource sharing. - CorsPolicy *CorsPolicy `protobuf:"bytes,10,opt,name=cors_policy,json=corsPolicy" json:"cors_policy,omitempty"` + CorsPolicy *CorsPolicy `protobuf:"bytes,10,opt,name=cors_policy,json=corsPolicy,proto3" json:"cors_policy,omitempty"` // Use of `append_headers` is deprecated. Use the `headers` // field instead. - AppendHeaders map[string]string `protobuf:"bytes,11,rep,name=append_headers,json=appendHeaders" json:"append_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + AppendHeaders map[string]string `protobuf:"bytes,11,rep,name=append_headers,json=appendHeaders,proto3" json:"append_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Deprecated: Do not use. // Use of `remove_response_header` is deprecated. Use the `headers` // field instead. - RemoveResponseHeaders []string `protobuf:"bytes,12,rep,name=remove_response_headers,json=removeResponseHeaders" json:"remove_response_headers,omitempty"` + RemoveResponseHeaders []string `protobuf:"bytes,12,rep,name=remove_response_headers,json=removeResponseHeaders,proto3" json:"remove_response_headers,omitempty"` // Deprecated: Do not use. // Use of `append_response_headers` is deprecated. Use the `headers` // field instead. - AppendResponseHeaders map[string]string `protobuf:"bytes,13,rep,name=append_response_headers,json=appendResponseHeaders" json:"append_response_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + AppendResponseHeaders map[string]string `protobuf:"bytes,13,rep,name=append_response_headers,json=appendResponseHeaders,proto3" json:"append_response_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Deprecated: Do not use. // Use of `remove_request_headers` is deprecated. Use the `headers` // field instead. - RemoveRequestHeaders []string `protobuf:"bytes,14,rep,name=remove_request_headers,json=removeRequestHeaders" json:"remove_request_headers,omitempty"` + RemoveRequestHeaders []string `protobuf:"bytes,14,rep,name=remove_request_headers,json=removeRequestHeaders,proto3" json:"remove_request_headers,omitempty"` // Deprecated: Do not use. // Use of `append_request_headers` is deprecated. Use the `headers` // field instead. - AppendRequestHeaders map[string]string `protobuf:"bytes,15,rep,name=append_request_headers,json=appendRequestHeaders" json:"append_request_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + AppendRequestHeaders map[string]string `protobuf:"bytes,15,rep,name=append_request_headers,json=appendRequestHeaders,proto3" json:"append_request_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Deprecated: Do not use. // Header manipulation rules - Headers *Headers `protobuf:"bytes,16,opt,name=headers" json:"headers,omitempty"` + Headers *Headers `protobuf:"bytes,16,opt,name=headers,proto3" json:"headers,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *HTTPRoute) Reset() { *m = HTTPRoute{} } +func (m *HTTPRoute) String() string { return proto.CompactTextString(m) } +func (*HTTPRoute) ProtoMessage() {} +func (*HTTPRoute) Descriptor() ([]byte, []int) { + return fileDescriptor_e85a9a4fa9c17a22, []int{2} +} +func (m *HTTPRoute) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *HTTPRoute) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_HTTPRoute.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *HTTPRoute) XXX_Merge(src proto.Message) { + xxx_messageInfo_HTTPRoute.Merge(m, src) +} +func (m *HTTPRoute) XXX_Size() int { + return m.Size() +} +func (m *HTTPRoute) XXX_DiscardUnknown() { + xxx_messageInfo_HTTPRoute.DiscardUnknown(m) } -func (m *HTTPRoute) Reset() { *m = HTTPRoute{} } -func (m *HTTPRoute) String() string { return proto.CompactTextString(m) } -func (*HTTPRoute) ProtoMessage() {} -func (*HTTPRoute) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{2} } +var xxx_messageInfo_HTTPRoute proto.InternalMessageInfo func (m *HTTPRoute) GetMatch() []*HTTPMatchRequest { if m != nil { @@ -477,7 +608,7 @@ func (m *HTTPRoute) GetWebsocketUpgrade() bool { return false } -func (m *HTTPRoute) GetTimeout() *google_protobuf.Duration { +func (m *HTTPRoute) GetTimeout() *types.Duration { if m != nil { return m.Timeout } @@ -512,6 +643,7 @@ func (m *HTTPRoute) GetCorsPolicy() *CorsPolicy { return nil } +// Deprecated: Do not use. func (m *HTTPRoute) GetAppendHeaders() map[string]string { if m != nil { return m.AppendHeaders @@ -519,6 +651,7 @@ func (m *HTTPRoute) GetAppendHeaders() map[string]string { return nil } +// Deprecated: Do not use. func (m *HTTPRoute) GetRemoveResponseHeaders() []string { if m != nil { return m.RemoveResponseHeaders @@ -526,6 +659,7 @@ func (m *HTTPRoute) GetRemoveResponseHeaders() []string { return nil } +// Deprecated: Do not use. func (m *HTTPRoute) GetAppendResponseHeaders() map[string]string { if m != nil { return m.AppendResponseHeaders @@ -533,6 +667,7 @@ func (m *HTTPRoute) GetAppendResponseHeaders() map[string]string { return nil } +// Deprecated: Do not use. func (m *HTTPRoute) GetRemoveRequestHeaders() []string { if m != nil { return m.RemoveRequestHeaders @@ -540,6 +675,7 @@ func (m *HTTPRoute) GetRemoveRequestHeaders() []string { return nil } +// Deprecated: Do not use. func (m *HTTPRoute) GetAppendRequestHeaders() map[string]string { if m != nil { return m.AppendRequestHeaders @@ -558,16 +694,47 @@ func (m *HTTPRoute) GetHeaders() *Headers { type Headers struct { // Header manipulation rules to apply before forwarding a request // to the destination service - Request *Headers_HeaderOperations `protobuf:"bytes,1,opt,name=request" json:"request,omitempty"` + Request *Headers_HeaderOperations `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"` // Header manipulation rules to apply before returning a response // to the caller - Response *Headers_HeaderOperations `protobuf:"bytes,2,opt,name=response" json:"response,omitempty"` + Response *Headers_HeaderOperations `protobuf:"bytes,2,opt,name=response,proto3" json:"response,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Headers) Reset() { *m = Headers{} } +func (m *Headers) String() string { return proto.CompactTextString(m) } +func (*Headers) ProtoMessage() {} +func (*Headers) Descriptor() ([]byte, []int) { + return fileDescriptor_e85a9a4fa9c17a22, []int{3} +} +func (m *Headers) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Headers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Headers.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Headers) XXX_Merge(src proto.Message) { + xxx_messageInfo_Headers.Merge(m, src) +} +func (m *Headers) XXX_Size() int { + return m.Size() +} +func (m *Headers) XXX_DiscardUnknown() { + xxx_messageInfo_Headers.DiscardUnknown(m) } -func (m *Headers) Reset() { *m = Headers{} } -func (m *Headers) String() string { return proto.CompactTextString(m) } -func (*Headers) ProtoMessage() {} -func (*Headers) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{3} } +var xxx_messageInfo_Headers proto.InternalMessageInfo func (m *Headers) GetRequest() *Headers_HeaderOperations { if m != nil { @@ -586,20 +753,49 @@ func (m *Headers) GetResponse() *Headers_HeaderOperations { // HeaderOperations Describes the header manipulations to apply type Headers_HeaderOperations struct { // Overwrite the headers specified by key with the given values - Set map[string]string `protobuf:"bytes,1,rep,name=set" json:"set,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Set map[string]string `protobuf:"bytes,1,rep,name=set,proto3" json:"set,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Append the given values to the headers specified by keys // (will create a comma-separated list of values) - Add map[string]string `protobuf:"bytes,2,rep,name=add" json:"add,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Add map[string]string `protobuf:"bytes,2,rep,name=add,proto3" json:"add,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Remove a the specified headers - Remove []string `protobuf:"bytes,3,rep,name=remove" json:"remove,omitempty"` + Remove []string `protobuf:"bytes,3,rep,name=remove,proto3" json:"remove,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *Headers_HeaderOperations) Reset() { *m = Headers_HeaderOperations{} } func (m *Headers_HeaderOperations) String() string { return proto.CompactTextString(m) } func (*Headers_HeaderOperations) ProtoMessage() {} func (*Headers_HeaderOperations) Descriptor() ([]byte, []int) { - return fileDescriptorVirtualService, []int{3, 0} + return fileDescriptor_e85a9a4fa9c17a22, []int{3, 0} +} +func (m *Headers_HeaderOperations) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Headers_HeaderOperations) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Headers_HeaderOperations.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Headers_HeaderOperations) XXX_Merge(src proto.Message) { + xxx_messageInfo_Headers_HeaderOperations.Merge(m, src) +} +func (m *Headers_HeaderOperations) XXX_Size() int { + return m.Size() } +func (m *Headers_HeaderOperations) XXX_DiscardUnknown() { + xxx_messageInfo_Headers_HeaderOperations.DiscardUnknown(m) +} + +var xxx_messageInfo_Headers_HeaderOperations proto.InternalMessageInfo func (m *Headers_HeaderOperations) GetSet() map[string]string { if m != nil { @@ -658,15 +854,46 @@ type TLSRoute struct { // activated. All conditions inside a single match block have AND // semantics, while the list of match blocks have OR semantics. The rule // is matched if any one of the match blocks succeed. - Match []*TLSMatchAttributes `protobuf:"bytes,1,rep,name=match" json:"match,omitempty"` + Match []*TLSMatchAttributes `protobuf:"bytes,1,rep,name=match,proto3" json:"match,omitempty"` // The destination to which the connection should be forwarded to. - Route []*RouteDestination `protobuf:"bytes,2,rep,name=route" json:"route,omitempty"` + Route []*RouteDestination `protobuf:"bytes,2,rep,name=route,proto3" json:"route,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *TLSRoute) Reset() { *m = TLSRoute{} } +func (m *TLSRoute) String() string { return proto.CompactTextString(m) } +func (*TLSRoute) ProtoMessage() {} +func (*TLSRoute) Descriptor() ([]byte, []int) { + return fileDescriptor_e85a9a4fa9c17a22, []int{4} +} +func (m *TLSRoute) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TLSRoute) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TLSRoute.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *TLSRoute) XXX_Merge(src proto.Message) { + xxx_messageInfo_TLSRoute.Merge(m, src) +} +func (m *TLSRoute) XXX_Size() int { + return m.Size() +} +func (m *TLSRoute) XXX_DiscardUnknown() { + xxx_messageInfo_TLSRoute.DiscardUnknown(m) } -func (m *TLSRoute) Reset() { *m = TLSRoute{} } -func (m *TLSRoute) String() string { return proto.CompactTextString(m) } -func (*TLSRoute) ProtoMessage() {} -func (*TLSRoute) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{4} } +var xxx_messageInfo_TLSRoute proto.InternalMessageInfo func (m *TLSRoute) GetMatch() []*TLSMatchAttributes { if m != nil { @@ -708,15 +935,46 @@ type TCPRoute struct { // activated. All conditions inside a single match block have AND // semantics, while the list of match blocks have OR semantics. The rule // is matched if any one of the match blocks succeed. - Match []*L4MatchAttributes `protobuf:"bytes,1,rep,name=match" json:"match,omitempty"` + Match []*L4MatchAttributes `protobuf:"bytes,1,rep,name=match,proto3" json:"match,omitempty"` // The destination to which the connection should be forwarded to. - Route []*RouteDestination `protobuf:"bytes,2,rep,name=route" json:"route,omitempty"` + Route []*RouteDestination `protobuf:"bytes,2,rep,name=route,proto3" json:"route,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *TCPRoute) Reset() { *m = TCPRoute{} } +func (m *TCPRoute) String() string { return proto.CompactTextString(m) } +func (*TCPRoute) ProtoMessage() {} +func (*TCPRoute) Descriptor() ([]byte, []int) { + return fileDescriptor_e85a9a4fa9c17a22, []int{5} +} +func (m *TCPRoute) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TCPRoute) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TCPRoute.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *TCPRoute) XXX_Merge(src proto.Message) { + xxx_messageInfo_TCPRoute.Merge(m, src) +} +func (m *TCPRoute) XXX_Size() int { + return m.Size() +} +func (m *TCPRoute) XXX_DiscardUnknown() { + xxx_messageInfo_TCPRoute.DiscardUnknown(m) } -func (m *TCPRoute) Reset() { *m = TCPRoute{} } -func (m *TCPRoute) String() string { return proto.CompactTextString(m) } -func (*TCPRoute) ProtoMessage() {} -func (*TCPRoute) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{5} } +var xxx_messageInfo_TCPRoute proto.InternalMessageInfo func (m *TCPRoute) GetMatch() []*L4MatchAttributes { if m != nil { @@ -769,7 +1027,7 @@ type HTTPMatchRequest struct { // // - `regex: "value"` for ECMAscript style regex-based match // - Uri *StringMatch `protobuf:"bytes,1,opt,name=uri" json:"uri,omitempty"` + Uri *StringMatch `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"` // URI Scheme // values are case-sensitive and formatted as follows: // @@ -779,7 +1037,7 @@ type HTTPMatchRequest struct { // // - `regex: "value"` for ECMAscript style regex-based match // - Scheme *StringMatch `protobuf:"bytes,2,opt,name=scheme" json:"scheme,omitempty"` + Scheme *StringMatch `protobuf:"bytes,2,opt,name=scheme,proto3" json:"scheme,omitempty"` // HTTP Method // values are case-sensitive and formatted as follows: // @@ -789,7 +1047,7 @@ type HTTPMatchRequest struct { // // - `regex: "value"` for ECMAscript style regex-based match // - Method *StringMatch `protobuf:"bytes,3,opt,name=method" json:"method,omitempty"` + Method *StringMatch `protobuf:"bytes,3,opt,name=method,proto3" json:"method,omitempty"` // HTTP Authority // values are case-sensitive and formatted as follows: // @@ -799,7 +1057,7 @@ type HTTPMatchRequest struct { // // - `regex: "value"` for ECMAscript style regex-based match // - Authority *StringMatch `protobuf:"bytes,4,opt,name=authority" json:"authority,omitempty"` + Authority *StringMatch `protobuf:"bytes,4,opt,name=authority,proto3" json:"authority,omitempty"` // The header keys must be lowercase and use hyphen as the separator, // e.g. _x-request-id_. // @@ -812,7 +1070,7 @@ type HTTPMatchRequest struct { // - `regex: "value"` for ECMAscript style regex-based match // // **Note:** The keys `uri`, `scheme`, `method`, and `authority` will be ignored. - Headers map[string]*StringMatch `protobuf:"bytes,5,rep,name=headers" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"` + Headers map[string]*StringMatch `protobuf:"bytes,5,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Specifies the ports 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. @@ -821,17 +1079,48 @@ type HTTPMatchRequest struct { // workloads with the given labels. If the VirtualService has a list of // gateways specified at the top, it should include the reserved gateway // `mesh` in order for this field to be applicable. - SourceLabels map[string]string `protobuf:"bytes,7,rep,name=source_labels,json=sourceLabels" json:"source_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + SourceLabels map[string]string `protobuf:"bytes,7,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 to. Gateway names // at the top of the VirtualService (if any) are overridden. The gateway match is // independent of sourceLabels. - Gateways []string `protobuf:"bytes,8,rep,name=gateways" json:"gateways,omitempty"` + Gateways []string `protobuf:"bytes,8,rep,name=gateways,proto3" json:"gateways,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *HTTPMatchRequest) Reset() { *m = HTTPMatchRequest{} } +func (m *HTTPMatchRequest) String() string { return proto.CompactTextString(m) } +func (*HTTPMatchRequest) ProtoMessage() {} +func (*HTTPMatchRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e85a9a4fa9c17a22, []int{6} +} +func (m *HTTPMatchRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *HTTPMatchRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_HTTPMatchRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *HTTPMatchRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_HTTPMatchRequest.Merge(m, src) +} +func (m *HTTPMatchRequest) XXX_Size() int { + return m.Size() +} +func (m *HTTPMatchRequest) XXX_DiscardUnknown() { + xxx_messageInfo_HTTPMatchRequest.DiscardUnknown(m) } -func (m *HTTPMatchRequest) Reset() { *m = HTTPMatchRequest{} } -func (m *HTTPMatchRequest) String() string { return proto.CompactTextString(m) } -func (*HTTPMatchRequest) ProtoMessage() {} -func (*HTTPMatchRequest) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{6} } +var xxx_messageInfo_HTTPMatchRequest proto.InternalMessageInfo func (m *HTTPMatchRequest) GetUri() *StringMatch { if m != nil { @@ -958,7 +1247,7 @@ func (m *HTTPMatchRequest) GetGateways() []string { type HTTPRouteDestination struct { // REQUIRED. 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" json:"destination,omitempty"` + Destination *Destination `protobuf:"bytes,1,opt,name=destination,proto3" json:"destination,omitempty"` // REQUIRED. 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 @@ -966,26 +1255,55 @@ type HTTPRouteDestination struct { Weight int32 `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty"` // Use of `remove_response_header` is deprecated. Use the `headers` // field instead. - RemoveResponseHeaders []string `protobuf:"bytes,3,rep,name=remove_response_headers,json=removeResponseHeaders" json:"remove_response_headers,omitempty"` + RemoveResponseHeaders []string `protobuf:"bytes,3,rep,name=remove_response_headers,json=removeResponseHeaders,proto3" json:"remove_response_headers,omitempty"` // Deprecated: Do not use. // Use of `append_response_headers` is deprecated. Use the `headers` // field instead. - AppendResponseHeaders map[string]string `protobuf:"bytes,4,rep,name=append_response_headers,json=appendResponseHeaders" json:"append_response_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + AppendResponseHeaders map[string]string `protobuf:"bytes,4,rep,name=append_response_headers,json=appendResponseHeaders,proto3" json:"append_response_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Deprecated: Do not use. // Use of `remove_request_headers` is deprecated. Use the `headers` // field instead. - RemoveRequestHeaders []string `protobuf:"bytes,5,rep,name=remove_request_headers,json=removeRequestHeaders" json:"remove_request_headers,omitempty"` + RemoveRequestHeaders []string `protobuf:"bytes,5,rep,name=remove_request_headers,json=removeRequestHeaders,proto3" json:"remove_request_headers,omitempty"` // Deprecated: Do not use. // Use of `append_request_headers` is deprecated. Use the `headers` // field instead. - AppendRequestHeaders map[string]string `protobuf:"bytes,6,rep,name=append_request_headers,json=appendRequestHeaders" json:"append_request_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + AppendRequestHeaders map[string]string `protobuf:"bytes,6,rep,name=append_request_headers,json=appendRequestHeaders,proto3" json:"append_request_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Deprecated: Do not use. // Header manipulation rules - Headers *Headers `protobuf:"bytes,7,opt,name=headers" json:"headers,omitempty"` + Headers *Headers `protobuf:"bytes,7,opt,name=headers,proto3" json:"headers,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *HTTPRouteDestination) Reset() { *m = HTTPRouteDestination{} } func (m *HTTPRouteDestination) String() string { return proto.CompactTextString(m) } func (*HTTPRouteDestination) ProtoMessage() {} func (*HTTPRouteDestination) Descriptor() ([]byte, []int) { - return fileDescriptorVirtualService, []int{7} + return fileDescriptor_e85a9a4fa9c17a22, []int{7} +} +func (m *HTTPRouteDestination) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *HTTPRouteDestination) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_HTTPRouteDestination.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *HTTPRouteDestination) XXX_Merge(src proto.Message) { + xxx_messageInfo_HTTPRouteDestination.Merge(m, src) +} +func (m *HTTPRouteDestination) XXX_Size() int { + return m.Size() } +func (m *HTTPRouteDestination) XXX_DiscardUnknown() { + xxx_messageInfo_HTTPRouteDestination.DiscardUnknown(m) +} + +var xxx_messageInfo_HTTPRouteDestination proto.InternalMessageInfo func (m *HTTPRouteDestination) GetDestination() *Destination { if m != nil { @@ -1001,6 +1319,7 @@ func (m *HTTPRouteDestination) GetWeight() int32 { return 0 } +// Deprecated: Do not use. func (m *HTTPRouteDestination) GetRemoveResponseHeaders() []string { if m != nil { return m.RemoveResponseHeaders @@ -1008,6 +1327,7 @@ func (m *HTTPRouteDestination) GetRemoveResponseHeaders() []string { return nil } +// Deprecated: Do not use. func (m *HTTPRouteDestination) GetAppendResponseHeaders() map[string]string { if m != nil { return m.AppendResponseHeaders @@ -1015,6 +1335,7 @@ func (m *HTTPRouteDestination) GetAppendResponseHeaders() map[string]string { return nil } +// Deprecated: Do not use. func (m *HTTPRouteDestination) GetRemoveRequestHeaders() []string { if m != nil { return m.RemoveRequestHeaders @@ -1022,6 +1343,7 @@ func (m *HTTPRouteDestination) GetRemoveRequestHeaders() []string { return nil } +// Deprecated: Do not use. func (m *HTTPRouteDestination) GetAppendRequestHeaders() map[string]string { if m != nil { return m.AppendRequestHeaders @@ -1040,17 +1362,48 @@ func (m *HTTPRouteDestination) GetHeaders() *Headers { type RouteDestination struct { // REQUIRED. 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" json:"destination,omitempty"` + Destination *Destination `protobuf:"bytes,1,opt,name=destination,proto3" json:"destination,omitempty"` // REQUIRED. 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"` + 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 *RouteDestination) Reset() { *m = RouteDestination{} } +func (m *RouteDestination) String() string { return proto.CompactTextString(m) } +func (*RouteDestination) ProtoMessage() {} +func (*RouteDestination) Descriptor() ([]byte, []int) { + return fileDescriptor_e85a9a4fa9c17a22, []int{8} +} +func (m *RouteDestination) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RouteDestination) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RouteDestination.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RouteDestination) XXX_Merge(src proto.Message) { + xxx_messageInfo_RouteDestination.Merge(m, src) +} +func (m *RouteDestination) XXX_Size() int { + return m.Size() +} +func (m *RouteDestination) XXX_DiscardUnknown() { + xxx_messageInfo_RouteDestination.DiscardUnknown(m) } -func (m *RouteDestination) Reset() { *m = RouteDestination{} } -func (m *RouteDestination) String() string { return proto.CompactTextString(m) } -func (*RouteDestination) ProtoMessage() {} -func (*RouteDestination) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{8} } +var xxx_messageInfo_RouteDestination proto.InternalMessageInfo func (m *RouteDestination) GetDestination() *Destination { if m != nil { @@ -1071,7 +1424,7 @@ func (m *RouteDestination) GetWeight() int32 { 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" json:"destination_subnets,omitempty"` + 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. @@ -1084,17 +1437,48 @@ type L4MatchAttributes struct { // workloads with the given labels. If the VirtualService has a list of // gateways specified at the top, 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" json:"source_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + 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 to. Gateway names // at the top of the VirtualService (if any) are overridden. The gateway // match is independent of sourceLabels. - Gateways []string `protobuf:"bytes,5,rep,name=gateways" json:"gateways,omitempty"` + Gateways []string `protobuf:"bytes,5,rep,name=gateways,proto3" json:"gateways,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +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_e85a9a4fa9c17a22, []int{9} +} +func (m *L4MatchAttributes) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *L4MatchAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_L4MatchAttributes.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *L4MatchAttributes) XXX_Merge(src proto.Message) { + xxx_messageInfo_L4MatchAttributes.Merge(m, src) +} +func (m *L4MatchAttributes) XXX_Size() int { + return m.Size() +} +func (m *L4MatchAttributes) XXX_DiscardUnknown() { + xxx_messageInfo_L4MatchAttributes.DiscardUnknown(m) } -func (m *L4MatchAttributes) Reset() { *m = L4MatchAttributes{} } -func (m *L4MatchAttributes) String() string { return proto.CompactTextString(m) } -func (*L4MatchAttributes) ProtoMessage() {} -func (*L4MatchAttributes) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{9} } +var xxx_messageInfo_L4MatchAttributes proto.InternalMessageInfo func (m *L4MatchAttributes) GetDestinationSubnets() []string { if m != nil { @@ -1137,10 +1521,10 @@ type TLSMatchAttributes struct { // 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" json:"sni_hosts,omitempty"` + 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" json:"destination_subnets,omitempty"` + 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 @@ -1154,19 +1538,48 @@ type TLSMatchAttributes struct { // workloads with the given labels. If the VirtualService has a list of // gateways specified at the top, 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" json:"source_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + 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 to. Gateway names // at the top of the VirtualService (if any) are overridden. The gateway // match is independent of sourceLabels. - Gateways []string `protobuf:"bytes,6,rep,name=gateways" json:"gateways,omitempty"` + Gateways []string `protobuf:"bytes,6,rep,name=gateways,proto3" json:"gateways,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 fileDescriptorVirtualService, []int{10} + return fileDescriptor_e85a9a4fa9c17a22, []int{10} +} +func (m *TLSMatchAttributes) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TLSMatchAttributes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TLSMatchAttributes.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *TLSMatchAttributes) XXX_Merge(src proto.Message) { + xxx_messageInfo_TLSMatchAttributes.Merge(m, src) +} +func (m *TLSMatchAttributes) XXX_Size() int { + return m.Size() } +func (m *TLSMatchAttributes) XXX_DiscardUnknown() { + xxx_messageInfo_TLSMatchAttributes.DiscardUnknown(m) +} + +var xxx_messageInfo_TLSMatchAttributes proto.InternalMessageInfo func (m *TLSMatchAttributes) GetSniHosts() []string { if m != nil { @@ -1240,13 +1653,44 @@ type HTTPRedirect struct { 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"` + 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 *HTTPRedirect) Reset() { *m = HTTPRedirect{} } +func (m *HTTPRedirect) String() string { return proto.CompactTextString(m) } +func (*HTTPRedirect) ProtoMessage() {} +func (*HTTPRedirect) Descriptor() ([]byte, []int) { + return fileDescriptor_e85a9a4fa9c17a22, []int{11} +} +func (m *HTTPRedirect) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *HTTPRedirect) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_HTTPRedirect.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *HTTPRedirect) XXX_Merge(src proto.Message) { + xxx_messageInfo_HTTPRedirect.Merge(m, src) +} +func (m *HTTPRedirect) XXX_Size() int { + return m.Size() +} +func (m *HTTPRedirect) XXX_DiscardUnknown() { + xxx_messageInfo_HTTPRedirect.DiscardUnknown(m) } -func (m *HTTPRedirect) Reset() { *m = HTTPRedirect{} } -func (m *HTTPRedirect) String() string { return proto.CompactTextString(m) } -func (*HTTPRedirect) ProtoMessage() {} -func (*HTTPRedirect) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{11} } +var xxx_messageInfo_HTTPRedirect proto.InternalMessageInfo func (m *HTTPRedirect) GetUri() string { if m != nil { @@ -1294,13 +1738,44 @@ type HTTPRewrite struct { // 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"` + 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 *HTTPRewrite) Reset() { *m = HTTPRewrite{} } +func (m *HTTPRewrite) String() string { return proto.CompactTextString(m) } +func (*HTTPRewrite) ProtoMessage() {} +func (*HTTPRewrite) Descriptor() ([]byte, []int) { + return fileDescriptor_e85a9a4fa9c17a22, []int{12} +} +func (m *HTTPRewrite) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *HTTPRewrite) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_HTTPRewrite.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *HTTPRewrite) XXX_Merge(src proto.Message) { + xxx_messageInfo_HTTPRewrite.Merge(m, src) +} +func (m *HTTPRewrite) XXX_Size() int { + return m.Size() +} +func (m *HTTPRewrite) XXX_DiscardUnknown() { + xxx_messageInfo_HTTPRewrite.DiscardUnknown(m) } -func (m *HTTPRewrite) Reset() { *m = HTTPRewrite{} } -func (m *HTTPRewrite) String() string { return proto.CompactTextString(m) } -func (*HTTPRewrite) ProtoMessage() {} -func (*HTTPRewrite) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{12} } +var xxx_messageInfo_HTTPRewrite proto.InternalMessageInfo func (m *HTTPRewrite) GetUri() string { if m != nil { @@ -1323,13 +1798,44 @@ type StringMatch struct { // *StringMatch_Exact // *StringMatch_Prefix // *StringMatch_Regex - MatchType isStringMatch_MatchType `protobuf_oneof:"match_type"` + MatchType isStringMatch_MatchType `protobuf_oneof:"match_type"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +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_e85a9a4fa9c17a22, []int{13} +} +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.MarshalTo(b) + if err != nil { + return nil, err + } + return b[: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 *StringMatch) Reset() { *m = StringMatch{} } -func (m *StringMatch) String() string { return proto.CompactTextString(m) } -func (*StringMatch) ProtoMessage() {} -func (*StringMatch) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{13} } +var xxx_messageInfo_StringMatch proto.InternalMessageInfo type isStringMatch_MatchType interface { isStringMatch_MatchType() @@ -1442,15 +1948,15 @@ func _StringMatch_OneofSizer(msg proto.Message) (n int) { // match_type switch x := m.MatchType.(type) { case *StringMatch_Exact: - n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.Exact))) n += len(x.Exact) case *StringMatch_Prefix: - n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.Prefix))) n += len(x.Prefix) case *StringMatch_Regex: - n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.Regex))) n += len(x.Regex) case nil: @@ -1489,19 +1995,50 @@ type HTTPRetry struct { // number of retries attempted depends on the httpReqTimeout. 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. - PerTryTimeout *google_protobuf.Duration `protobuf:"bytes,2,opt,name=per_try_timeout,json=perTryTimeout" json:"per_try_timeout,omitempty"` + 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. // The supported policies can be found in // // and - RetryOn string `protobuf:"bytes,3,opt,name=retry_on,json=retryOn,proto3" json:"retry_on,omitempty"` + RetryOn string `protobuf:"bytes,3,opt,name=retry_on,json=retryOn,proto3" json:"retry_on,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_e85a9a4fa9c17a22, []int{14} +} +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.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +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) } -func (m *HTTPRetry) Reset() { *m = HTTPRetry{} } -func (m *HTTPRetry) String() string { return proto.CompactTextString(m) } -func (*HTTPRetry) ProtoMessage() {} -func (*HTTPRetry) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{14} } +var xxx_messageInfo_HTTPRetry proto.InternalMessageInfo func (m *HTTPRetry) GetAttempts() int32 { if m != nil { @@ -1510,7 +2047,7 @@ func (m *HTTPRetry) GetAttempts() int32 { return 0 } -func (m *HTTPRetry) GetPerTryTimeout() *google_protobuf.Duration { +func (m *HTTPRetry) GetPerTryTimeout() *types.Duration { if m != nil { return m.PerTryTimeout } @@ -1562,29 +2099,60 @@ 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. - AllowOrigin []string `protobuf:"bytes,1,rep,name=allow_origin,json=allowOrigin" json:"allow_origin,omitempty"` + AllowOrigin []string `protobuf:"bytes,1,rep,name=allow_origin,json=allowOrigin,proto3" json:"allow_origin,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" json:"allow_methods,omitempty"` + 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" json:"allow_headers,omitempty"` + AllowHeaders []string `protobuf:"bytes,3,rep,name=allow_headers,json=allowHeaders,proto3" json:"allow_headers,omitempty"` // A white 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" json:"expose_headers,omitempty"` + 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 *google_protobuf.Duration `protobuf:"bytes,5,opt,name=max_age,json=maxAge" json:"max_age,omitempty"` + 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 *google_protobuf1.BoolValue `protobuf:"bytes,6,opt,name=allow_credentials,json=allowCredentials" json:"allow_credentials,omitempty"` + 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_e85a9a4fa9c17a22, []int{15} +} +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.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +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) } -func (m *CorsPolicy) Reset() { *m = CorsPolicy{} } -func (m *CorsPolicy) String() string { return proto.CompactTextString(m) } -func (*CorsPolicy) ProtoMessage() {} -func (*CorsPolicy) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{15} } +var xxx_messageInfo_CorsPolicy proto.InternalMessageInfo func (m *CorsPolicy) GetAllowOrigin() []string { if m != nil { @@ -1614,14 +2182,14 @@ func (m *CorsPolicy) GetExposeHeaders() []string { return nil } -func (m *CorsPolicy) GetMaxAge() *google_protobuf.Duration { +func (m *CorsPolicy) GetMaxAge() *types.Duration { if m != nil { return m.MaxAge } return nil } -func (m *CorsPolicy) GetAllowCredentials() *google_protobuf1.BoolValue { +func (m *CorsPolicy) GetAllowCredentials() *types.BoolValue { if m != nil { return m.AllowCredentials } @@ -1639,19 +2207,48 @@ func (m *CorsPolicy) GetAllowCredentials() *google_protobuf1.BoolValue { 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" json:"delay,omitempty"` + 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" json:"abort,omitempty"` + 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 *HTTPFaultInjection) Reset() { *m = HTTPFaultInjection{} } func (m *HTTPFaultInjection) String() string { return proto.CompactTextString(m) } func (*HTTPFaultInjection) ProtoMessage() {} func (*HTTPFaultInjection) Descriptor() ([]byte, []int) { - return fileDescriptorVirtualService, []int{16} + return fileDescriptor_e85a9a4fa9c17a22, []int{16} +} +func (m *HTTPFaultInjection) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +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.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *HTTPFaultInjection) XXX_Merge(src proto.Message) { + xxx_messageInfo_HTTPFaultInjection.Merge(m, src) +} +func (m *HTTPFaultInjection) XXX_Size() int { + return m.Size() +} +func (m *HTTPFaultInjection) XXX_DiscardUnknown() { + xxx_messageInfo_HTTPFaultInjection.DiscardUnknown(m) } +var xxx_messageInfo_HTTPFaultInjection proto.InternalMessageInfo + func (m *HTTPFaultInjection) GetDelay() *HTTPFaultInjection_Delay { if m != nil { return m.Delay @@ -1701,22 +2298,51 @@ 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"` + 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" json:"percentage,omitempty"` + 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 fileDescriptorVirtualService, []int{16, 0} + return fileDescriptor_e85a9a4fa9c17a22, []int{16, 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.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], 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) } +var xxx_messageInfo_HTTPFaultInjection_Delay proto.InternalMessageInfo + type isHTTPFaultInjection_Delay_HttpDelayType interface { isHTTPFaultInjection_Delay_HttpDelayType() MarshalTo([]byte) (int, error) @@ -1724,10 +2350,10 @@ type isHTTPFaultInjection_Delay_HttpDelayType interface { } type HTTPFaultInjection_Delay_FixedDelay struct { - FixedDelay *google_protobuf.Duration `protobuf:"bytes,2,opt,name=fixed_delay,json=fixedDelay,oneof"` + FixedDelay *types.Duration `protobuf:"bytes,2,opt,name=fixed_delay,json=fixedDelay,proto3,oneof"` } type HTTPFaultInjection_Delay_ExponentialDelay struct { - ExponentialDelay *google_protobuf.Duration `protobuf:"bytes,3,opt,name=exponential_delay,json=exponentialDelay,oneof"` + ExponentialDelay *types.Duration `protobuf:"bytes,3,opt,name=exponential_delay,json=exponentialDelay,proto3,oneof"` } func (*HTTPFaultInjection_Delay_FixedDelay) isHTTPFaultInjection_Delay_HttpDelayType() {} @@ -1740,6 +2366,7 @@ func (m *HTTPFaultInjection_Delay) GetHttpDelayType() isHTTPFaultInjection_Delay return nil } +// Deprecated: Do not use. func (m *HTTPFaultInjection_Delay) GetPercent() int32 { if m != nil { return m.Percent @@ -1747,14 +2374,14 @@ func (m *HTTPFaultInjection_Delay) GetPercent() int32 { return 0 } -func (m *HTTPFaultInjection_Delay) GetFixedDelay() *google_protobuf.Duration { +func (m *HTTPFaultInjection_Delay) GetFixedDelay() *types.Duration { if x, ok := m.GetHttpDelayType().(*HTTPFaultInjection_Delay_FixedDelay); ok { return x.FixedDelay } return nil } -func (m *HTTPFaultInjection_Delay) GetExponentialDelay() *google_protobuf.Duration { +func (m *HTTPFaultInjection_Delay) GetExponentialDelay() *types.Duration { if x, ok := m.GetHttpDelayType().(*HTTPFaultInjection_Delay_ExponentialDelay); ok { return x.ExponentialDelay } @@ -1804,7 +2431,7 @@ func _HTTPFaultInjection_Delay_OneofUnmarshaler(msg proto.Message, tag, wire int if wire != proto.WireBytes { return true, proto.ErrInternalBadWireType } - msg := new(google_protobuf.Duration) + msg := new(types.Duration) err := b.DecodeMessage(msg) m.HttpDelayType = &HTTPFaultInjection_Delay_FixedDelay{msg} return true, err @@ -1812,7 +2439,7 @@ func _HTTPFaultInjection_Delay_OneofUnmarshaler(msg proto.Message, tag, wire int if wire != proto.WireBytes { return true, proto.ErrInternalBadWireType } - msg := new(google_protobuf.Duration) + msg := new(types.Duration) err := b.DecodeMessage(msg) m.HttpDelayType = &HTTPFaultInjection_Delay_ExponentialDelay{msg} return true, err @@ -1827,12 +2454,12 @@ func _HTTPFaultInjection_Delay_OneofSizer(msg proto.Message) (n int) { switch x := m.HttpDelayType.(type) { case *HTTPFaultInjection_Delay_FixedDelay: s := proto.Size(x.FixedDelay) - n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *HTTPFaultInjection_Delay_ExponentialDelay: s := proto.Size(x.ExponentialDelay) - n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case nil: @@ -1874,23 +2501,52 @@ type HTTPFaultInjection_Abort struct { // Percentage of requests to be aborted with the error code provided (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"` + Percent int32 `protobuf:"varint,1,opt,name=percent,proto3" json:"percent,omitempty"` // Deprecated: Do not use. // 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" json:"percentage,omitempty"` + 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_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 fileDescriptorVirtualService, []int{16, 1} + return fileDescriptor_e85a9a4fa9c17a22, []int{16, 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.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +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) @@ -1918,6 +2574,7 @@ func (m *HTTPFaultInjection_Abort) GetErrorType() isHTTPFaultInjection_Abort_Err return nil } +// Deprecated: Do not use. func (m *HTTPFaultInjection_Abort) GetPercent() int32 { if m != nil { return m.Percent @@ -2016,14 +2673,14 @@ func _HTTPFaultInjection_Abort_OneofSizer(msg proto.Message) (n int) { // error_type switch x := m.ErrorType.(type) { case *HTTPFaultInjection_Abort_HttpStatus: - n += proto.SizeVarint(2<<3 | proto.WireVarint) + n += 1 // tag and wire n += proto.SizeVarint(uint64(x.HttpStatus)) case *HTTPFaultInjection_Abort_GrpcStatus: - n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.GrpcStatus))) n += len(x.GrpcStatus) case *HTTPFaultInjection_Abort_Http2Error: - n += proto.SizeVarint(4<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.Http2Error))) n += len(x.Http2Error) case nil: @@ -2039,13 +2696,44 @@ type PortSelector struct { // Types that are valid to be assigned to Port: // *PortSelector_Number // *PortSelector_Name - Port isPortSelector_Port `protobuf_oneof:"port"` + Port isPortSelector_Port `protobuf_oneof:"port"` + 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_e85a9a4fa9c17a22, []int{17} +} +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.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +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) } -func (m *PortSelector) Reset() { *m = PortSelector{} } -func (m *PortSelector) String() string { return proto.CompactTextString(m) } -func (*PortSelector) ProtoMessage() {} -func (*PortSelector) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{17} } +var xxx_messageInfo_PortSelector proto.InternalMessageInfo type isPortSelector_Port interface { isPortSelector_Port() @@ -2136,10 +2824,10 @@ func _PortSelector_OneofSizer(msg proto.Message) (n int) { // port switch x := m.Port.(type) { case *PortSelector_Number: - n += proto.SizeVarint(1<<3 | proto.WireVarint) + n += 1 // tag and wire n += proto.SizeVarint(uint64(x.Number)) case *PortSelector_Name: - n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.Name))) n += len(x.Name) case nil: @@ -2151,13 +2839,44 @@ func _PortSelector_OneofSizer(msg proto.Message) (n int) { // 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"` + 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_e85a9a4fa9c17a22, []int{18} +} +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.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +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) } -func (m *Percent) Reset() { *m = Percent{} } -func (m *Percent) String() string { return proto.CompactTextString(m) } -func (*Percent) ProtoMessage() {} -func (*Percent) Descriptor() ([]byte, []int) { return fileDescriptorVirtualService, []int{18} } +var xxx_messageInfo_Percent proto.InternalMessageInfo func (m *Percent) GetValue() float64 { if m != nil { @@ -2170,15 +2889,26 @@ func init() { proto.RegisterType((*VirtualService)(nil), "istio.networking.v1alpha3.VirtualService") proto.RegisterType((*Destination)(nil), "istio.networking.v1alpha3.Destination") proto.RegisterType((*HTTPRoute)(nil), "istio.networking.v1alpha3.HTTPRoute") + proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1alpha3.HTTPRoute.AppendHeadersEntry") + proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1alpha3.HTTPRoute.AppendRequestHeadersEntry") + proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1alpha3.HTTPRoute.AppendResponseHeadersEntry") proto.RegisterType((*Headers)(nil), "istio.networking.v1alpha3.Headers") proto.RegisterType((*Headers_HeaderOperations)(nil), "istio.networking.v1alpha3.Headers.HeaderOperations") + proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1alpha3.Headers.HeaderOperations.AddEntry") + proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1alpha3.Headers.HeaderOperations.SetEntry") proto.RegisterType((*TLSRoute)(nil), "istio.networking.v1alpha3.TLSRoute") proto.RegisterType((*TCPRoute)(nil), "istio.networking.v1alpha3.TCPRoute") proto.RegisterType((*HTTPMatchRequest)(nil), "istio.networking.v1alpha3.HTTPMatchRequest") + proto.RegisterMapType((map[string]*StringMatch)(nil), "istio.networking.v1alpha3.HTTPMatchRequest.HeadersEntry") + proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1alpha3.HTTPMatchRequest.SourceLabelsEntry") proto.RegisterType((*HTTPRouteDestination)(nil), "istio.networking.v1alpha3.HTTPRouteDestination") + proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1alpha3.HTTPRouteDestination.AppendRequestHeadersEntry") + proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1alpha3.HTTPRouteDestination.AppendResponseHeadersEntry") proto.RegisterType((*RouteDestination)(nil), "istio.networking.v1alpha3.RouteDestination") proto.RegisterType((*L4MatchAttributes)(nil), "istio.networking.v1alpha3.L4MatchAttributes") + proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1alpha3.L4MatchAttributes.SourceLabelsEntry") proto.RegisterType((*TLSMatchAttributes)(nil), "istio.networking.v1alpha3.TLSMatchAttributes") + proto.RegisterMapType((map[string]string)(nil), "istio.networking.v1alpha3.TLSMatchAttributes.SourceLabelsEntry") proto.RegisterType((*HTTPRedirect)(nil), "istio.networking.v1alpha3.HTTPRedirect") proto.RegisterType((*HTTPRewrite)(nil), "istio.networking.v1alpha3.HTTPRewrite") proto.RegisterType((*StringMatch)(nil), "istio.networking.v1alpha3.StringMatch") @@ -2190,6 +2920,127 @@ func init() { proto.RegisterType((*PortSelector)(nil), "istio.networking.v1alpha3.PortSelector") proto.RegisterType((*Percent)(nil), "istio.networking.v1alpha3.Percent") } + +func init() { + proto.RegisterFile("networking/v1alpha3/virtual_service.proto", fileDescriptor_e85a9a4fa9c17a22) +} + +var fileDescriptor_e85a9a4fa9c17a22 = []byte{ + // 1785 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0x5f, 0x73, 0xdb, 0x4a, + 0x15, 0xaf, 0x6c, 0xcb, 0x7f, 0x8e, 0x9d, 0xd4, 0x59, 0x72, 0x73, 0x15, 0xdf, 0x3b, 0x21, 0xd7, + 0x97, 0x0b, 0x61, 0x4a, 0xed, 0x21, 0x81, 0x92, 0x29, 0x69, 0x5a, 0x3b, 0x69, 0xeb, 0x32, 0x2d, + 0xc9, 0xc8, 0xa1, 0x0f, 0xbc, 0x68, 0x64, 0x69, 0x63, 0x8b, 0xda, 0x5a, 0xb1, 0x5a, 0x25, 0xf6, + 0xf0, 0xc8, 0xbf, 0x67, 0x18, 0x5e, 0x19, 0xbe, 0x07, 0x2f, 0xbc, 0xf2, 0xc4, 0xf0, 0x09, 0x98, + 0x4e, 0x1f, 0x78, 0xe5, 0x2b, 0x30, 0xbb, 0x2b, 0xc9, 0x4a, 0x9c, 0x58, 0x76, 0x28, 0x0c, 0x4f, + 0xf1, 0xee, 0x9e, 0xdf, 0x6f, 0xcf, 0x9e, 0xdd, 0x3d, 0xe7, 0xa7, 0x0d, 0x7c, 0xdb, 0xc5, 0xec, + 0x92, 0xd0, 0x77, 0x8e, 0xdb, 0x6f, 0x5e, 0x7c, 0xd7, 0x1c, 0x7a, 0x03, 0x73, 0xaf, 0x79, 0xe1, + 0x50, 0x16, 0x98, 0x43, 0xc3, 0xc7, 0xf4, 0xc2, 0xb1, 0x70, 0xc3, 0xa3, 0x84, 0x11, 0xb4, 0xe9, + 0xf8, 0xcc, 0x21, 0x8d, 0x29, 0xa0, 0x11, 0x01, 0x6a, 0x5b, 0x7d, 0x42, 0xfa, 0x43, 0xdc, 0x14, + 0x86, 0xbd, 0xe0, 0xbc, 0x69, 0x07, 0xd4, 0x64, 0x0e, 0x71, 0x25, 0x74, 0x76, 0xfc, 0x92, 0x9a, + 0x9e, 0x87, 0xa9, 0x2f, 0xc7, 0xeb, 0xbf, 0xcd, 0xc0, 0xea, 0x5b, 0x39, 0x69, 0x57, 0xce, 0x89, + 0xd6, 0x41, 0x1d, 0x10, 0x9f, 0xf9, 0x9a, 0xb2, 0x9d, 0xdd, 0x29, 0xe9, 0xb2, 0x81, 0x6a, 0x50, + 0xec, 0x9b, 0x0c, 0x5f, 0x9a, 0x13, 0x5f, 0xcb, 0x88, 0x81, 0xb8, 0x8d, 0xf6, 0x21, 0x37, 0x60, + 0xcc, 0xd3, 0xb2, 0xdb, 0xd9, 0x9d, 0xf2, 0xee, 0x37, 0x1a, 0xb7, 0xba, 0xdb, 0xe8, 0x9c, 0x9d, + 0x9d, 0xea, 0x24, 0x60, 0x58, 0x17, 0x08, 0xf4, 0x7d, 0xc8, 0xb2, 0xa1, 0xaf, 0xa9, 0x02, 0xf8, + 0xe5, 0x1c, 0xe0, 0xd9, 0xeb, 0xae, 0xc4, 0x71, 0x7b, 0x01, 0xb3, 0x3c, 0x2d, 0x97, 0x0e, 0x3b, + 0x3a, 0x8d, 0x60, 0x96, 0x87, 0x3e, 0x83, 0x12, 0x1e, 0x7b, 0x84, 0x32, 0x83, 0x11, 0x2d, 0x2f, + 0x17, 0x21, 0x3b, 0xce, 0x48, 0xfd, 0x02, 0xca, 0xc7, 0xd8, 0x67, 0x8e, 0x2b, 0xc2, 0x87, 0x10, + 0xe4, 0xf8, 0xc2, 0x35, 0x65, 0x5b, 0xd9, 0x29, 0xe9, 0xe2, 0x37, 0xda, 0x80, 0xbc, 0x1f, 0xf4, + 0x7c, 0xcc, 0xb4, 0x8c, 0xe8, 0x0d, 0x5b, 0xe8, 0x87, 0x90, 0xe3, 0x24, 0x5a, 0x76, 0x5b, 0xd9, + 0x29, 0xef, 0x7e, 0x6b, 0x8e, 0x3f, 0xa7, 0x84, 0xb2, 0x2e, 0x1e, 0x62, 0x8b, 0x11, 0xaa, 0x0b, + 0x50, 0xfd, 0x5f, 0x00, 0xa5, 0x38, 0x2c, 0xa8, 0x05, 0xea, 0xc8, 0x64, 0xd6, 0x40, 0x04, 0xbf, + 0xbc, 0xfb, 0x20, 0x25, 0x96, 0x6f, 0xb8, 0xad, 0x8e, 0x7f, 0x1e, 0x60, 0x9f, 0xe9, 0x12, 0x89, + 0x9e, 0x83, 0x4a, 0x39, 0x97, 0xd8, 0xa6, 0xf2, 0x6e, 0x73, 0x91, 0xed, 0x48, 0xac, 0x5c, 0x97, + 0x68, 0x74, 0x04, 0x45, 0x8a, 0x6d, 0x87, 0x62, 0x6b, 0x91, 0x85, 0x09, 0xa6, 0xd0, 0x5c, 0x8f, + 0x81, 0xe8, 0x19, 0x14, 0x28, 0xbe, 0xa4, 0x0e, 0xc3, 0x5a, 0x4e, 0x70, 0x7c, 0x33, 0x95, 0x43, + 0x58, 0xeb, 0x11, 0x0c, 0x3d, 0x80, 0xb5, 0x4b, 0xdc, 0xf3, 0x89, 0xf5, 0x0e, 0x33, 0x23, 0xf0, + 0xfa, 0xd4, 0xb4, 0xb1, 0xa6, 0x6e, 0x2b, 0x3b, 0x45, 0xbd, 0x1a, 0x0f, 0xfc, 0x44, 0xf6, 0xa3, + 0x3d, 0x28, 0x30, 0x67, 0x84, 0x49, 0xc0, 0xb4, 0xbc, 0x98, 0x6e, 0xb3, 0x21, 0xcf, 0x7f, 0x23, + 0x3a, 0xff, 0x8d, 0xe3, 0xf0, 0x7e, 0xe8, 0x91, 0x25, 0x3a, 0xe4, 0x3e, 0x32, 0xea, 0x60, 0x5f, + 0x2b, 0x08, 0x50, 0xea, 0x01, 0xc6, 0x8c, 0x4e, 0xf4, 0x08, 0x84, 0x8e, 0x40, 0x3d, 0x37, 0x83, + 0x21, 0xd3, 0x8a, 0x02, 0xfd, 0x30, 0x05, 0xfd, 0x82, 0xdb, 0xbe, 0x72, 0x7f, 0x86, 0x2d, 0x19, + 0x6d, 0x81, 0x45, 0x87, 0x90, 0x1f, 0x39, 0x94, 0x12, 0xaa, 0x95, 0x52, 0xe3, 0x94, 0xdc, 0xac, + 0x10, 0x85, 0x5e, 0x40, 0xd9, 0x22, 0xd4, 0x37, 0x3c, 0x32, 0x74, 0xac, 0x89, 0x06, 0x82, 0xe4, + 0xab, 0x39, 0x24, 0x47, 0x84, 0xfa, 0xa7, 0xc2, 0x58, 0x07, 0x2b, 0xfe, 0x8d, 0x7a, 0xb0, 0xca, + 0xf3, 0x83, 0x6b, 0x1b, 0x03, 0x6c, 0xda, 0x98, 0xfa, 0x5a, 0x59, 0x9c, 0xa2, 0x1f, 0x2c, 0x72, + 0x8a, 0x1a, 0x2d, 0x01, 0xed, 0x48, 0xe4, 0x73, 0x97, 0xd1, 0x49, 0x3b, 0xa3, 0x29, 0xfa, 0x8a, + 0x99, 0xec, 0x47, 0x8f, 0xe1, 0x53, 0x8a, 0x47, 0xe4, 0x02, 0x1b, 0x14, 0xfb, 0x1e, 0x71, 0x7d, + 0x1c, 0x4f, 0x56, 0xe1, 0x97, 0x52, 0x60, 0x3e, 0x91, 0x26, 0x7a, 0x68, 0x11, 0x61, 0x7f, 0x01, + 0x9f, 0x86, 0xfe, 0xcd, 0x60, 0x57, 0x84, 0xa3, 0x4f, 0x97, 0x70, 0xf4, 0x1a, 0xf9, 0xd4, 0xe1, + 0x4f, 0xcc, 0x9b, 0xc6, 0xd1, 0x3e, 0x6c, 0xc4, 0x8e, 0x8b, 0x2b, 0x17, 0xcf, 0xbd, 0x1a, 0xfb, + 0xbd, 0x1e, 0xf9, 0x2d, 0x0c, 0x22, 0xe4, 0x18, 0x36, 0x62, 0xb7, 0xaf, 0x22, 0xef, 0x0b, 0xaf, + 0x0f, 0x97, 0xf2, 0x3a, 0x49, 0x3d, 0x75, 0x7a, 0xdd, 0xbc, 0x61, 0x18, 0x1d, 0x40, 0x21, 0x9a, + 0xaa, 0x2a, 0x0e, 0x45, 0x7d, 0xde, 0x54, 0xd2, 0x52, 0x8f, 0x20, 0xb5, 0x67, 0x80, 0x66, 0xf7, + 0x14, 0x55, 0x21, 0xfb, 0x0e, 0x4f, 0xc2, 0xd4, 0xc8, 0x7f, 0xf2, 0x9a, 0x71, 0x61, 0x0e, 0x03, + 0x1c, 0x26, 0x46, 0xd9, 0x78, 0x9c, 0xd9, 0x57, 0x6a, 0x1d, 0xa8, 0xdd, 0x1e, 0xec, 0xa5, 0x98, + 0x5e, 0xc2, 0xe6, 0xad, 0x01, 0x58, 0x86, 0xa8, 0xfe, 0xcf, 0x2c, 0x14, 0xa2, 0xf0, 0xbc, 0xe1, + 0x97, 0x5f, 0xd0, 0x09, 0x6c, 0x79, 0x77, 0x2f, 0x3d, 0x3c, 0xe1, 0xdf, 0x13, 0x0f, 0xcb, 0x54, + 0xe2, 0xeb, 0x11, 0x07, 0x3a, 0xe1, 0x49, 0x53, 0xae, 0x53, 0xcc, 0x7b, 0x47, 0xbe, 0x98, 0xa4, + 0xf6, 0xe7, 0x0c, 0x54, 0xaf, 0x0f, 0xa3, 0x1f, 0x43, 0x96, 0x17, 0x21, 0x59, 0x22, 0x0e, 0xee, + 0x30, 0x41, 0xa3, 0x8b, 0x99, 0x88, 0x9b, 0xce, 0x89, 0x38, 0x9f, 0x69, 0xdb, 0x61, 0xbd, 0xb8, + 0x13, 0x5f, 0xcb, 0xb6, 0x43, 0x3e, 0xd3, 0xb6, 0x79, 0x9d, 0x94, 0xb7, 0x40, 0x28, 0x82, 0x92, + 0x1e, 0xb6, 0x6a, 0x8f, 0xa0, 0x18, 0x4d, 0xbc, 0xd4, 0xce, 0x3f, 0x82, 0x62, 0x34, 0xc1, 0x52, + 0x1b, 0xfd, 0x7b, 0x05, 0x8a, 0x91, 0x70, 0xe0, 0x69, 0x3a, 0x59, 0x59, 0x1f, 0xce, 0x17, 0x1b, + 0xa2, 0xb0, 0xb6, 0x18, 0xa3, 0x4e, 0x2f, 0x60, 0xd8, 0x8f, 0x6a, 0x6b, 0xeb, 0x6a, 0x6d, 0x9d, + 0x57, 0x9e, 0x6f, 0xa9, 0xab, 0xf5, 0xdf, 0x71, 0xa7, 0x42, 0x59, 0x82, 0xda, 0x57, 0x9d, 0xfa, + 0xce, 0x1c, 0xbe, 0xd7, 0xdf, 0xfb, 0xef, 0xf9, 0xf4, 0x27, 0x15, 0xaa, 0xd7, 0xe5, 0x04, 0xda, + 0x87, 0x6c, 0x40, 0x9d, 0xf0, 0x5a, 0xcc, 0xab, 0x47, 0x5d, 0x46, 0x1d, 0xb7, 0x2f, 0xb1, 0x1c, + 0xc2, 0x8b, 0x99, 0x6f, 0x0d, 0xf0, 0x28, 0xba, 0x03, 0x8b, 0x82, 0x43, 0x94, 0x28, 0x86, 0x98, + 0x0d, 0x88, 0x1d, 0x0a, 0x8f, 0x85, 0xf1, 0x12, 0x85, 0x8e, 0xa1, 0x64, 0x06, 0x6c, 0x40, 0xa8, + 0xc3, 0x26, 0x0b, 0xe8, 0x8e, 0x24, 0xc5, 0x14, 0x88, 0xf4, 0x69, 0xe6, 0x94, 0xfa, 0x74, 0x7f, + 0x09, 0x31, 0xd6, 0x48, 0x66, 0xa7, 0x38, 0x9f, 0x72, 0x55, 0x29, 0x94, 0x22, 0x57, 0x27, 0x2b, + 0x52, 0x00, 0xa2, 0x1e, 0xac, 0xf8, 0x24, 0xa0, 0x16, 0x36, 0x86, 0x66, 0x0f, 0x0f, 0xb9, 0x0a, + 0xe1, 0xb3, 0x3d, 0x59, 0x66, 0xb6, 0xae, 0x20, 0x78, 0x2d, 0xf0, 0x72, 0xca, 0x8a, 0x9f, 0xe8, + 0xba, 0xa2, 0xde, 0x8b, 0x57, 0xd5, 0x7b, 0xad, 0x07, 0x95, 0x94, 0x54, 0x7a, 0x90, 0xbc, 0x61, + 0x8b, 0xc7, 0x32, 0x71, 0x83, 0x9f, 0xc2, 0xda, 0x8c, 0x8b, 0x4b, 0x5d, 0xe5, 0xbf, 0xa9, 0xb0, + 0x7e, 0x93, 0x5a, 0x45, 0x1d, 0x28, 0xdb, 0xd3, 0xe6, 0x02, 0xa7, 0x35, 0x79, 0xfc, 0x93, 0x50, + 0x9e, 0xb5, 0x2e, 0xb1, 0xd3, 0x1f, 0x48, 0x75, 0xaf, 0xea, 0x61, 0x6b, 0x9e, 0x5c, 0xc9, 0xa6, + 0xc9, 0x95, 0xdf, 0x28, 0xb7, 0xeb, 0x15, 0xf9, 0xf5, 0xf2, 0xa3, 0x25, 0xe5, 0xf9, 0x47, 0x97, + 0x2e, 0x6a, 0x8a, 0x74, 0xf9, 0xa5, 0x72, 0xab, 0x76, 0xc9, 0x8b, 0x15, 0xbc, 0xba, 0xeb, 0x0a, + 0xee, 0x28, 0x63, 0x0a, 0xcb, 0xcb, 0x98, 0xff, 0x43, 0x11, 0xc2, 0xa0, 0xfa, 0xbf, 0x3f, 0xcb, + 0xf5, 0xbf, 0x64, 0x60, 0x6d, 0xa6, 0x90, 0xa0, 0x26, 0x7c, 0x2d, 0x01, 0x36, 0xfc, 0xa0, 0xe7, + 0xe2, 0xf8, 0xfb, 0x1f, 0x25, 0x86, 0xba, 0x72, 0x24, 0x4e, 0x63, 0x99, 0x44, 0x1a, 0xfb, 0x32, + 0x4e, 0x63, 0x12, 0x2f, 0x72, 0x77, 0x29, 0xca, 0x43, 0x12, 0x89, 0xac, 0xeb, 0xb9, 0x2e, 0x97, + 0x2a, 0x7f, 0x67, 0xdc, 0x5d, 0x2a, 0xd9, 0xa9, 0xd7, 0x92, 0xdd, 0x7f, 0x9c, 0x88, 0xfe, 0x91, + 0x01, 0x34, 0xab, 0x0f, 0xd0, 0x67, 0x50, 0xf2, 0x5d, 0xc7, 0x48, 0x3e, 0x9c, 0x14, 0x7d, 0xd7, + 0xe9, 0x88, 0xb7, 0x93, 0x5b, 0xe2, 0x9b, 0x49, 0x8d, 0x6f, 0x76, 0x5e, 0x7c, 0x73, 0x37, 0xc4, + 0xd7, 0xbe, 0x1e, 0x5f, 0x35, 0xf5, 0xa3, 0x68, 0x76, 0x31, 0x4b, 0x05, 0x38, 0xff, 0xb1, 0x03, + 0x7c, 0x08, 0x95, 0xe4, 0x63, 0x02, 0xc7, 0x46, 0x32, 0xa4, 0x24, 0xe5, 0xc5, 0xe7, 0xc9, 0xf2, + 0x2e, 0xf1, 0xd3, 0x8e, 0xfa, 0x13, 0x28, 0x27, 0x1e, 0x12, 0x96, 0x86, 0x63, 0x28, 0x27, 0x6a, + 0x18, 0xda, 0x00, 0x15, 0x8f, 0x4d, 0x2b, 0x7c, 0x07, 0xea, 0xdc, 0xd3, 0x65, 0x13, 0x69, 0x90, + 0xf7, 0x28, 0x3e, 0x77, 0xc6, 0x92, 0xa1, 0x73, 0x4f, 0x0f, 0xdb, 0x1c, 0x41, 0x71, 0x1f, 0x8f, + 0xe5, 0xf9, 0xe7, 0x08, 0xd1, 0x6c, 0x57, 0x00, 0x84, 0x5e, 0x33, 0xd8, 0xc4, 0xc3, 0xf5, 0x5f, + 0x2b, 0xe1, 0xab, 0x0f, 0xe6, 0xf1, 0xa9, 0x41, 0xd1, 0x64, 0x0c, 0x8f, 0x3c, 0x71, 0x78, 0xf8, + 0x85, 0x8d, 0xdb, 0xa8, 0x05, 0xf7, 0x3d, 0x4c, 0x0d, 0x46, 0x27, 0x46, 0xf4, 0xb6, 0x91, 0x49, + 0x7b, 0xdb, 0x58, 0xf1, 0x30, 0x3d, 0xa3, 0x93, 0xb3, 0xf0, 0x85, 0x63, 0x93, 0x7f, 0x95, 0x70, + 0x02, 0xe2, 0x86, 0xb7, 0x52, 0x3c, 0x5e, 0x4c, 0x4e, 0xdc, 0xfa, 0x1f, 0x33, 0x00, 0xd3, 0xa7, + 0x00, 0xf4, 0x05, 0x54, 0xcc, 0xe1, 0x90, 0x5c, 0x1a, 0x84, 0x3a, 0x7d, 0xc7, 0x0d, 0x4f, 0x72, + 0x59, 0xf4, 0x9d, 0x88, 0x2e, 0x7e, 0x0e, 0xa5, 0x89, 0x14, 0x5b, 0xd1, 0x31, 0x96, 0xb8, 0x37, + 0xb2, 0x6f, 0x6a, 0x74, 0xa5, 0x52, 0x86, 0x46, 0x51, 0x4e, 0xff, 0x0a, 0x56, 0xf1, 0xd8, 0x23, + 0xd7, 0x4a, 0x62, 0x49, 0x5f, 0x91, 0xbd, 0x91, 0xd9, 0x2e, 0x14, 0x46, 0xe6, 0xd8, 0x30, 0xfb, + 0xf2, 0xdd, 0x67, 0xee, 0xc2, 0xf3, 0x23, 0x73, 0xdc, 0xea, 0x63, 0xf4, 0x12, 0xd6, 0xe4, 0xfc, + 0x16, 0xc5, 0x36, 0x76, 0x99, 0x63, 0x0e, 0xfd, 0xf0, 0x49, 0xa8, 0x36, 0x83, 0x6e, 0x13, 0x32, + 0x7c, 0xcb, 0xcf, 0x9f, 0x5e, 0x15, 0xa0, 0xa3, 0x29, 0xa6, 0xfe, 0x07, 0x15, 0xd0, 0xec, 0xab, + 0x0d, 0x7a, 0x05, 0xaa, 0x8d, 0x87, 0xe6, 0x64, 0x91, 0x8f, 0xc6, 0x19, 0x74, 0xe3, 0x98, 0x43, + 0x75, 0xc9, 0xc0, 0xa9, 0xcc, 0x5e, 0x94, 0x4c, 0x97, 0xa6, 0x6a, 0x71, 0xa8, 0x2e, 0x19, 0x6a, + 0xbf, 0xca, 0x80, 0x2a, 0xb8, 0xd1, 0xe7, 0x50, 0xf0, 0x30, 0xb5, 0xb0, 0x2b, 0x0f, 0xae, 0x2a, + 0x2a, 0x6b, 0xd4, 0x85, 0x0e, 0xa0, 0x7c, 0xee, 0x8c, 0xb1, 0x6d, 0xc8, 0x35, 0xa4, 0x1d, 0xa7, + 0xce, 0x3d, 0x1d, 0x84, 0xbd, 0xe4, 0xee, 0xc0, 0x1a, 0xdf, 0x20, 0x57, 0x86, 0x28, 0xe4, 0xc8, + 0xa6, 0x73, 0x54, 0x13, 0x28, 0xc9, 0xd4, 0x06, 0x08, 0x5d, 0x9a, 0x6e, 0xee, 0xbc, 0xba, 0x7e, + 0x2a, 0x8d, 0xf5, 0x04, 0xaa, 0xbd, 0x06, 0xf7, 0x07, 0x8c, 0x79, 0xd2, 0x0d, 0x71, 0xb7, 0x6a, + 0xef, 0x15, 0x50, 0x45, 0x5c, 0x52, 0xc2, 0xf0, 0x05, 0x94, 0x05, 0xd4, 0x67, 0x26, 0x0b, 0x7c, + 0x59, 0x29, 0xf9, 0x5a, 0x79, 0x67, 0x57, 0xf4, 0x71, 0x93, 0x3e, 0xf5, 0xac, 0xc8, 0x24, 0xba, + 0xd2, 0xc0, 0x3b, 0xa7, 0x26, 0x1c, 0xb0, 0x6b, 0x60, 0xf1, 0x7c, 0x97, 0x8b, 0x4c, 0x44, 0xe7, + 0x73, 0xf1, 0x38, 0xf7, 0x31, 0xd6, 0x59, 0x01, 0x10, 0x13, 0xc8, 0xf4, 0xf1, 0x02, 0x2a, 0xc9, + 0xa7, 0x64, 0x9e, 0x8e, 0xdc, 0x60, 0xd4, 0xc3, 0x54, 0xac, 0x73, 0x85, 0xa7, 0x23, 0xd9, 0x46, + 0xeb, 0x90, 0x73, 0xcd, 0xf0, 0x4b, 0x8c, 0xfb, 0x25, 0x5a, 0xed, 0xbc, 0x2c, 0x30, 0xf5, 0xaf, + 0x43, 0x21, 0x9c, 0x6c, 0x9a, 0x91, 0x39, 0x83, 0x12, 0x66, 0xe4, 0x76, 0xe3, 0xaf, 0x1f, 0xb6, + 0x94, 0xbf, 0x7f, 0xd8, 0x52, 0xde, 0x7f, 0xd8, 0x52, 0x7e, 0xba, 0x2d, 0x7d, 0x76, 0x48, 0xd3, + 0xf4, 0x9c, 0xe6, 0x0d, 0xff, 0xc0, 0xe8, 0xe5, 0xc5, 0xce, 0xef, 0xfd, 0x3b, 0x00, 0x00, 0xff, + 0xff, 0x73, 0x7c, 0x3f, 0xb9, 0xde, 0x18, 0x00, 0x00, +} + func (m *VirtualService) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -2286,6 +3137,9 @@ func (m *VirtualService) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], s) } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -2326,6 +3180,9 @@ func (m *Destination) MarshalTo(dAtA []byte) (int, error) { } i += n1 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -2541,6 +3398,9 @@ func (m *HTTPRoute) MarshalTo(dAtA []byte) (int, error) { } i += n9 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -2579,6 +3439,9 @@ func (m *Headers) MarshalTo(dAtA []byte) (int, error) { } i += n11 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -2646,6 +3509,9 @@ func (m *Headers_HeaderOperations) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], s) } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -2688,6 +3554,9 @@ func (m *TLSRoute) MarshalTo(dAtA []byte) (int, error) { i += n } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -2730,6 +3599,9 @@ func (m *TCPRoute) MarshalTo(dAtA []byte) (int, error) { i += n } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -2853,6 +3725,9 @@ func (m *HTTPMatchRequest) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], s) } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -2960,6 +3835,9 @@ func (m *HTTPRouteDestination) MarshalTo(dAtA []byte) (int, error) { } i += n18 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -2993,6 +3871,9 @@ func (m *RouteDestination) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintVirtualService(dAtA, i, uint64(m.Weight)) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -3069,6 +3950,9 @@ func (m *L4MatchAttributes) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], s) } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -3160,6 +4044,9 @@ func (m *TLSMatchAttributes) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], s) } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -3190,6 +4077,9 @@ func (m *HTTPRedirect) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Authority))) i += copy(dAtA[i:], m.Authority) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -3220,6 +4110,9 @@ func (m *HTTPRewrite) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintVirtualService(dAtA, i, uint64(len(m.Authority))) i += copy(dAtA[i:], m.Authority) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -3245,6 +4138,9 @@ func (m *StringMatch) MarshalTo(dAtA []byte) (int, error) { } i += nn20 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -3308,6 +4204,9 @@ func (m *HTTPRetry) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintVirtualService(dAtA, i, uint64(len(m.RetryOn))) i += copy(dAtA[i:], m.RetryOn) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -3406,6 +4305,9 @@ func (m *CorsPolicy) MarshalTo(dAtA []byte) (int, error) { } i += n23 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -3444,6 +4346,9 @@ func (m *HTTPFaultInjection) MarshalTo(dAtA []byte) (int, error) { } i += n25 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -3484,6 +4389,9 @@ func (m *HTTPFaultInjection_Delay) MarshalTo(dAtA []byte) (int, error) { } i += n27 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -3552,6 +4460,9 @@ func (m *HTTPFaultInjection_Abort) MarshalTo(dAtA []byte) (int, error) { } i += n31 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -3600,6 +4511,9 @@ func (m *PortSelector) MarshalTo(dAtA []byte) (int, error) { } i += nn32 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -3636,9 +4550,12 @@ func (m *Percent) MarshalTo(dAtA []byte) (int, error) { if m.Value != 0 { dAtA[i] = 0x9 i++ - binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Value)))) + encoding_binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Value)))) i += 8 } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -3652,6 +4569,9 @@ func encodeVarintVirtualService(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *VirtualService) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Hosts) > 0 { @@ -3690,10 +4610,16 @@ func (m *VirtualService) Size() (n int) { n += 1 + l + sovVirtualService(uint64(l)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *Destination) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Host) @@ -3708,10 +4634,16 @@ func (m *Destination) Size() (n int) { l = m.Port.Size() n += 1 + l + sovVirtualService(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *HTTPRoute) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Match) > 0 { @@ -3797,10 +4729,16 @@ func (m *HTTPRoute) Size() (n int) { l = m.Headers.Size() n += 2 + l + sovVirtualService(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *Headers) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Request != nil { @@ -3811,10 +4749,16 @@ func (m *Headers) Size() (n int) { 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 { @@ -3839,10 +4783,16 @@ func (m *Headers_HeaderOperations) Size() (n int) { 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 { @@ -3857,10 +4807,16 @@ func (m *TLSRoute) Size() (n int) { 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 { @@ -3875,10 +4831,16 @@ func (m *TCPRoute) Size() (n int) { 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 { @@ -3927,10 +4889,16 @@ func (m *HTTPMatchRequest) Size() (n int) { 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 { @@ -3972,10 +4940,16 @@ func (m *HTTPRouteDestination) Size() (n int) { l = m.Headers.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 { @@ -3985,10 +4959,16 @@ func (m *RouteDestination) Size() (n int) { if m.Weight != 0 { n += 1 + sovVirtualService(uint64(m.Weight)) } + 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 { @@ -4018,10 +4998,16 @@ func (m *L4MatchAttributes) Size() (n int) { 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 { @@ -4057,10 +5043,16 @@ func (m *TLSMatchAttributes) Size() (n int) { 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) @@ -4071,10 +5063,16 @@ func (m *HTTPRedirect) Size() (n int) { if l > 0 { n += 1 + l + sovVirtualService(uint64(l)) } + 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) @@ -4085,19 +5083,31 @@ func (m *HTTPRewrite) Size() (n int) { 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) @@ -4105,6 +5115,9 @@ func (m *StringMatch_Exact) Size() (n int) { return n } func (m *StringMatch_Prefix) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Prefix) @@ -4112,6 +5125,9 @@ func (m *StringMatch_Prefix) Size() (n int) { return n } func (m *StringMatch_Regex) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Regex) @@ -4119,6 +5135,9 @@ func (m *StringMatch_Regex) Size() (n int) { return n } func (m *HTTPRetry) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Attempts != 0 { @@ -4132,10 +5151,16 @@ func (m *HTTPRetry) Size() (n int) { if l > 0 { 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 { @@ -4170,10 +5195,16 @@ func (m *CorsPolicy) Size() (n int) { l = m.AllowCredentials.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 { @@ -4184,10 +5215,16 @@ func (m *HTTPFaultInjection) Size() (n int) { 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 { @@ -4200,10 +5237,16 @@ func (m *HTTPFaultInjection_Delay) Size() (n int) { 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 { @@ -4213,6 +5256,9 @@ func (m *HTTPFaultInjection_Delay_FixedDelay) Size() (n int) { return n } func (m *HTTPFaultInjection_Delay_ExponentialDelay) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.ExponentialDelay != nil { @@ -4222,6 +5268,9 @@ func (m *HTTPFaultInjection_Delay_ExponentialDelay) Size() (n int) { return n } func (m *HTTPFaultInjection_Abort) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Percent != 0 { @@ -4234,16 +5283,25 @@ func (m *HTTPFaultInjection_Abort) Size() (n int) { 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) @@ -4251,6 +5309,9 @@ func (m *HTTPFaultInjection_Abort_GrpcStatus) Size() (n int) { return n } func (m *HTTPFaultInjection_Abort_Http2Error) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Http2Error) @@ -4258,21 +5319,33 @@ func (m *HTTPFaultInjection_Abort_Http2Error) Size() (n int) { return n } func (m *PortSelector) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Port != nil { n += m.Port.Size() } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *PortSelector_Number) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l n += 1 + sovVirtualService(uint64(m.Number)) return n } func (m *PortSelector_Name) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Name) @@ -4280,11 +5353,17 @@ func (m *PortSelector_Name) Size() (n int) { 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 } @@ -4316,7 +5395,7 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4344,7 +5423,7 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4354,6 +5433,9 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4373,7 +5455,7 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4383,6 +5465,9 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4402,7 +5487,7 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4411,6 +5496,9 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4433,7 +5521,7 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4442,6 +5530,9 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4464,7 +5555,7 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4473,6 +5564,9 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4495,7 +5589,7 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4505,6 +5599,9 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4519,9 +5616,13 @@ func (m *VirtualService) Unmarshal(dAtA []byte) error { 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 } } @@ -4546,7 +5647,7 @@ func (m *Destination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4574,7 +5675,7 @@ func (m *Destination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4584,6 +5685,9 @@ func (m *Destination) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4603,7 +5707,7 @@ func (m *Destination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4613,6 +5717,9 @@ func (m *Destination) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4632,7 +5739,7 @@ func (m *Destination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4641,6 +5748,9 @@ func (m *Destination) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4660,9 +5770,13 @@ func (m *Destination) Unmarshal(dAtA []byte) error { 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 } } @@ -4687,7 +5801,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4715,7 +5829,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4724,6 +5838,9 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4746,7 +5863,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4755,6 +5872,9 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4777,7 +5897,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4786,6 +5906,9 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4810,7 +5933,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4819,6 +5942,9 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4843,7 +5969,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4863,7 +5989,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4872,11 +5998,14 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } if m.Timeout == nil { - m.Timeout = &google_protobuf.Duration{} + m.Timeout = &types.Duration{} } if err := m.Timeout.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -4896,7 +6025,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4905,6 +6034,9 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4929,7 +6061,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4938,6 +6070,9 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4962,7 +6097,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4971,6 +6106,9 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4995,7 +6133,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5004,6 +6142,9 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5028,7 +6169,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5037,6 +6178,9 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5057,7 +6201,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5074,7 +6218,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5084,6 +6228,9 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -5100,7 +6247,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5110,6 +6257,9 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -5146,7 +6296,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5156,6 +6306,9 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5175,7 +6328,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5184,6 +6337,9 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5204,7 +6360,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5221,7 +6377,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5231,6 +6387,9 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -5247,7 +6406,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5257,6 +6416,9 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -5293,7 +6455,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5303,6 +6465,9 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5322,7 +6487,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5331,6 +6496,9 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5351,7 +6519,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5368,7 +6536,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5378,6 +6546,9 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -5394,7 +6565,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5404,6 +6575,9 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -5440,7 +6614,7 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5449,6 +6623,9 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5468,9 +6645,13 @@ func (m *HTTPRoute) Unmarshal(dAtA []byte) error { 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 } } @@ -5495,7 +6676,7 @@ func (m *Headers) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5523,7 +6704,7 @@ func (m *Headers) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5532,6 +6713,9 @@ func (m *Headers) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5556,7 +6740,7 @@ func (m *Headers) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5565,6 +6749,9 @@ func (m *Headers) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5584,9 +6771,13 @@ func (m *Headers) Unmarshal(dAtA []byte) error { 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 } } @@ -5611,7 +6802,7 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5639,7 +6830,7 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5648,6 +6839,9 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5668,7 +6862,7 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5685,7 +6879,7 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5695,6 +6889,9 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -5711,7 +6908,7 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5721,6 +6918,9 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -5757,7 +6957,7 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5766,6 +6966,9 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5786,7 +6989,7 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5803,7 +7006,7 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5813,6 +7016,9 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -5829,7 +7035,7 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5839,6 +7045,9 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -5875,7 +7084,7 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5885,6 +7094,9 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5899,9 +7111,13 @@ func (m *Headers_HeaderOperations) Unmarshal(dAtA []byte) error { 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 } } @@ -5926,7 +7142,7 @@ func (m *TLSRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5954,7 +7170,7 @@ func (m *TLSRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5963,6 +7179,9 @@ func (m *TLSRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5985,7 +7204,7 @@ func (m *TLSRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5994,6 +7213,9 @@ func (m *TLSRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6011,9 +7233,13 @@ func (m *TLSRoute) Unmarshal(dAtA []byte) error { 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 } } @@ -6038,7 +7264,7 @@ func (m *TCPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6066,7 +7292,7 @@ func (m *TCPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -6075,6 +7301,9 @@ func (m *TCPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6097,7 +7326,7 @@ func (m *TCPRoute) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -6106,6 +7335,9 @@ func (m *TCPRoute) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6123,9 +7355,13 @@ func (m *TCPRoute) Unmarshal(dAtA []byte) error { 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 } } @@ -6150,7 +7386,7 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6178,7 +7414,7 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -6187,6 +7423,9 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6211,7 +7450,7 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -6220,6 +7459,9 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6244,7 +7486,7 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -6253,6 +7495,9 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6277,7 +7522,7 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -6286,6 +7531,9 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6310,7 +7558,7 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -6319,6 +7567,9 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6339,7 +7590,7 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6356,7 +7607,7 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6366,6 +7617,9 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -6382,7 +7636,7 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapmsglen |= (int(b) & 0x7F) << shift + mapmsglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -6391,7 +7645,7 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postmsgIndex := iNdEx + mapmsglen - if mapmsglen < 0 { + if postmsgIndex < 0 { return ErrInvalidLengthVirtualService } if postmsgIndex > l { @@ -6433,7 +7687,7 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Port |= (uint32(b) & 0x7F) << shift + m.Port |= uint32(b&0x7F) << shift if b < 0x80 { break } @@ -6452,7 +7706,7 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -6461,6 +7715,9 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6481,7 +7738,7 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6498,7 +7755,7 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6508,6 +7765,9 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -6524,7 +7784,7 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6534,6 +7794,9 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -6570,7 +7833,7 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6580,6 +7843,9 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6594,9 +7860,13 @@ func (m *HTTPMatchRequest) Unmarshal(dAtA []byte) error { 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 } } @@ -6621,7 +7891,7 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6649,7 +7919,7 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -6658,6 +7928,9 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6682,7 +7955,7 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Weight |= (int32(b) & 0x7F) << shift + m.Weight |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -6701,7 +7974,7 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6711,6 +7984,9 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6730,7 +8006,7 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -6739,6 +8015,9 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6759,7 +8038,7 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6776,7 +8055,7 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6786,6 +8065,9 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -6802,7 +8084,7 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6812,6 +8094,9 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -6848,7 +8133,7 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6858,6 +8143,9 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6877,7 +8165,7 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -6886,6 +8174,9 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6906,7 +8197,7 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6923,7 +8214,7 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6933,6 +8224,9 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -6949,7 +8243,7 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6959,6 +8253,9 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -6995,7 +8292,7 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -7004,6 +8301,9 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -7023,9 +8323,13 @@ func (m *HTTPRouteDestination) Unmarshal(dAtA []byte) error { 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 } } @@ -7050,7 +8354,7 @@ func (m *RouteDestination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7078,7 +8382,7 @@ func (m *RouteDestination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -7087,6 +8391,9 @@ func (m *RouteDestination) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -7111,7 +8418,7 @@ func (m *RouteDestination) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Weight |= (int32(b) & 0x7F) << shift + m.Weight |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -7125,9 +8432,13 @@ func (m *RouteDestination) Unmarshal(dAtA []byte) error { 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 } } @@ -7152,7 +8463,7 @@ func (m *L4MatchAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7180,7 +8491,7 @@ func (m *L4MatchAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7190,6 +8501,9 @@ func (m *L4MatchAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -7209,7 +8523,7 @@ func (m *L4MatchAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Port |= (uint32(b) & 0x7F) << shift + m.Port |= uint32(b&0x7F) << shift if b < 0x80 { break } @@ -7228,7 +8542,7 @@ func (m *L4MatchAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7238,6 +8552,9 @@ func (m *L4MatchAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -7257,7 +8574,7 @@ func (m *L4MatchAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -7266,6 +8583,9 @@ func (m *L4MatchAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -7286,7 +8606,7 @@ func (m *L4MatchAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7303,7 +8623,7 @@ func (m *L4MatchAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7313,6 +8633,9 @@ func (m *L4MatchAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -7329,7 +8652,7 @@ func (m *L4MatchAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7339,6 +8662,9 @@ func (m *L4MatchAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -7375,7 +8701,7 @@ func (m *L4MatchAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7385,6 +8711,9 @@ func (m *L4MatchAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -7399,9 +8728,13 @@ func (m *L4MatchAttributes) Unmarshal(dAtA []byte) error { 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 } } @@ -7426,7 +8759,7 @@ func (m *TLSMatchAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7454,7 +8787,7 @@ func (m *TLSMatchAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7464,6 +8797,9 @@ func (m *TLSMatchAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -7483,7 +8819,7 @@ func (m *TLSMatchAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7493,6 +8829,9 @@ func (m *TLSMatchAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -7512,7 +8851,7 @@ func (m *TLSMatchAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Port |= (uint32(b) & 0x7F) << shift + m.Port |= uint32(b&0x7F) << shift if b < 0x80 { break } @@ -7531,7 +8870,7 @@ func (m *TLSMatchAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7541,6 +8880,9 @@ func (m *TLSMatchAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -7560,7 +8902,7 @@ func (m *TLSMatchAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -7569,6 +8911,9 @@ func (m *TLSMatchAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -7589,7 +8934,7 @@ func (m *TLSMatchAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7606,7 +8951,7 @@ func (m *TLSMatchAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7616,6 +8961,9 @@ func (m *TLSMatchAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -7632,7 +8980,7 @@ func (m *TLSMatchAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7642,6 +8990,9 @@ func (m *TLSMatchAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthVirtualService + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -7678,7 +9029,7 @@ func (m *TLSMatchAttributes) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7688,6 +9039,9 @@ func (m *TLSMatchAttributes) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -7702,9 +9056,13 @@ func (m *TLSMatchAttributes) Unmarshal(dAtA []byte) error { 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 } } @@ -7729,7 +9087,7 @@ func (m *HTTPRedirect) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7757,7 +9115,7 @@ func (m *HTTPRedirect) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7767,6 +9125,9 @@ func (m *HTTPRedirect) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -7786,7 +9147,7 @@ func (m *HTTPRedirect) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7796,6 +9157,9 @@ func (m *HTTPRedirect) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -7810,9 +9174,13 @@ func (m *HTTPRedirect) Unmarshal(dAtA []byte) error { 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 } } @@ -7837,7 +9205,7 @@ func (m *HTTPRewrite) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7865,7 +9233,7 @@ func (m *HTTPRewrite) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7875,6 +9243,9 @@ func (m *HTTPRewrite) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -7894,7 +9265,7 @@ func (m *HTTPRewrite) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7904,6 +9275,9 @@ func (m *HTTPRewrite) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -7918,9 +9292,13 @@ func (m *HTTPRewrite) Unmarshal(dAtA []byte) error { 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 } } @@ -7945,7 +9323,7 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7973,7 +9351,7 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -7983,6 +9361,9 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -8002,7 +9383,7 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -8012,6 +9393,9 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -8031,7 +9415,7 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -8041,6 +9425,9 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -8055,9 +9442,13 @@ func (m *StringMatch) Unmarshal(dAtA []byte) error { 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 } } @@ -8082,7 +9473,7 @@ func (m *HTTPRetry) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -8110,7 +9501,7 @@ func (m *HTTPRetry) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Attempts |= (int32(b) & 0x7F) << shift + m.Attempts |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -8129,7 +9520,7 @@ func (m *HTTPRetry) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -8138,11 +9529,14 @@ func (m *HTTPRetry) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } if m.PerTryTimeout == nil { - m.PerTryTimeout = &google_protobuf.Duration{} + m.PerTryTimeout = &types.Duration{} } if err := m.PerTryTimeout.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -8162,7 +9556,7 @@ func (m *HTTPRetry) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -8172,6 +9566,9 @@ func (m *HTTPRetry) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -8186,9 +9583,13 @@ func (m *HTTPRetry) Unmarshal(dAtA []byte) error { 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 } } @@ -8213,7 +9614,7 @@ func (m *CorsPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -8241,7 +9642,7 @@ func (m *CorsPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -8251,6 +9652,9 @@ func (m *CorsPolicy) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -8270,7 +9674,7 @@ func (m *CorsPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -8280,6 +9684,9 @@ func (m *CorsPolicy) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -8299,7 +9706,7 @@ func (m *CorsPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -8309,6 +9716,9 @@ func (m *CorsPolicy) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -8328,7 +9738,7 @@ func (m *CorsPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -8338,6 +9748,9 @@ func (m *CorsPolicy) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -8357,7 +9770,7 @@ func (m *CorsPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -8366,11 +9779,14 @@ func (m *CorsPolicy) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } if m.MaxAge == nil { - m.MaxAge = &google_protobuf.Duration{} + m.MaxAge = &types.Duration{} } if err := m.MaxAge.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -8390,7 +9806,7 @@ func (m *CorsPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -8399,11 +9815,14 @@ func (m *CorsPolicy) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } if m.AllowCredentials == nil { - m.AllowCredentials = &google_protobuf1.BoolValue{} + m.AllowCredentials = &types.BoolValue{} } if err := m.AllowCredentials.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -8418,9 +9837,13 @@ func (m *CorsPolicy) Unmarshal(dAtA []byte) error { 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 } } @@ -8445,7 +9868,7 @@ func (m *HTTPFaultInjection) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -8473,7 +9896,7 @@ func (m *HTTPFaultInjection) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -8482,6 +9905,9 @@ func (m *HTTPFaultInjection) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -8506,7 +9932,7 @@ func (m *HTTPFaultInjection) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -8515,6 +9941,9 @@ func (m *HTTPFaultInjection) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -8534,9 +9963,13 @@ func (m *HTTPFaultInjection) Unmarshal(dAtA []byte) error { 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 } } @@ -8561,7 +9994,7 @@ func (m *HTTPFaultInjection_Delay) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -8589,7 +10022,7 @@ func (m *HTTPFaultInjection_Delay) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Percent |= (int32(b) & 0x7F) << shift + m.Percent |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -8608,7 +10041,7 @@ func (m *HTTPFaultInjection_Delay) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -8617,10 +10050,13 @@ func (m *HTTPFaultInjection_Delay) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } - v := &google_protobuf.Duration{} + v := &types.Duration{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } @@ -8640,7 +10076,7 @@ func (m *HTTPFaultInjection_Delay) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -8649,10 +10085,13 @@ func (m *HTTPFaultInjection_Delay) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } - v := &google_protobuf.Duration{} + v := &types.Duration{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } @@ -8672,7 +10111,7 @@ func (m *HTTPFaultInjection_Delay) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -8681,6 +10120,9 @@ func (m *HTTPFaultInjection_Delay) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -8700,9 +10142,13 @@ func (m *HTTPFaultInjection_Delay) Unmarshal(dAtA []byte) error { 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 } } @@ -8727,7 +10173,7 @@ func (m *HTTPFaultInjection_Abort) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -8755,7 +10201,7 @@ func (m *HTTPFaultInjection_Abort) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Percent |= (int32(b) & 0x7F) << shift + m.Percent |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -8774,7 +10220,7 @@ func (m *HTTPFaultInjection_Abort) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int32(b) & 0x7F) << shift + v |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -8794,7 +10240,7 @@ func (m *HTTPFaultInjection_Abort) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -8804,6 +10250,9 @@ func (m *HTTPFaultInjection_Abort) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -8823,7 +10272,7 @@ func (m *HTTPFaultInjection_Abort) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -8833,6 +10282,9 @@ func (m *HTTPFaultInjection_Abort) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -8852,7 +10304,7 @@ func (m *HTTPFaultInjection_Abort) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -8861,6 +10313,9 @@ func (m *HTTPFaultInjection_Abort) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -8880,9 +10335,13 @@ func (m *HTTPFaultInjection_Abort) Unmarshal(dAtA []byte) error { 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 } } @@ -8907,7 +10366,7 @@ func (m *PortSelector) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -8935,7 +10394,7 @@ func (m *PortSelector) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (uint32(b) & 0x7F) << shift + v |= uint32(b&0x7F) << shift if b < 0x80 { break } @@ -8955,7 +10414,7 @@ func (m *PortSelector) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -8965,6 +10424,9 @@ func (m *PortSelector) Unmarshal(dAtA []byte) error { return ErrInvalidLengthVirtualService } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVirtualService + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -8979,9 +10441,13 @@ func (m *PortSelector) Unmarshal(dAtA []byte) error { 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 } } @@ -9006,7 +10472,7 @@ func (m *Percent) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -9028,7 +10494,7 @@ func (m *Percent) Unmarshal(dAtA []byte) error { if (iNdEx + 8) > l { return io.ErrUnexpectedEOF } - v = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:])) + v = uint64(encoding_binary.LittleEndian.Uint64(dAtA[iNdEx:])) iNdEx += 8 m.Value = float64(math.Float64frombits(v)) default: @@ -9040,9 +10506,13 @@ func (m *Percent) Unmarshal(dAtA []byte) error { 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 } } @@ -9106,10 +10576,13 @@ func skipVirtualService(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthVirtualService } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthVirtualService + } return iNdEx, nil case 3: for { @@ -9138,6 +10611,9 @@ func skipVirtualService(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthVirtualService + } } return iNdEx, nil case 4: @@ -9156,123 +10632,3 @@ var ( ErrInvalidLengthVirtualService = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowVirtualService = fmt.Errorf("proto: integer overflow") ) - -func init() { - proto.RegisterFile("networking/v1alpha3/virtual_service.proto", fileDescriptorVirtualService) -} - -var fileDescriptorVirtualService = []byte{ - // 1785 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0x4f, 0x73, 0xe3, 0x48, - 0x15, 0x1f, 0xd9, 0x96, 0xff, 0x3c, 0x3b, 0x19, 0xa7, 0xc9, 0x66, 0x15, 0xef, 0x56, 0xc8, 0x7a, - 0x59, 0x08, 0xb5, 0xac, 0x5d, 0x24, 0xb0, 0xa4, 0x96, 0x6c, 0x76, 0xed, 0x64, 0x66, 0x3d, 0xd4, - 0x0c, 0x49, 0xc9, 0x61, 0x0e, 0x5c, 0x54, 0xb2, 0xd4, 0xb1, 0xc5, 0xc8, 0x6a, 0xd1, 0x6a, 0x25, - 0x76, 0x71, 0xe4, 0xdf, 0x19, 0x8a, 0x2b, 0xc5, 0xf7, 0xe0, 0xc2, 0x95, 0x13, 0xc5, 0x27, 0xa0, - 0xa6, 0xe6, 0xc0, 0x95, 0xaf, 0x40, 0x75, 0xb7, 0x24, 0x2b, 0x71, 0x62, 0xd9, 0x61, 0xa0, 0x38, - 0xc5, 0xdd, 0xfd, 0x7e, 0xbf, 0x7e, 0xfd, 0xba, 0xfb, 0xbd, 0x9f, 0x3a, 0xf0, 0x6d, 0x0f, 0xb3, - 0x6b, 0x42, 0x5f, 0x39, 0xde, 0xb0, 0x7d, 0xf5, 0x5d, 0xd3, 0xf5, 0x47, 0xe6, 0x41, 0xfb, 0xca, - 0xa1, 0x2c, 0x34, 0x5d, 0x23, 0xc0, 0xf4, 0xca, 0xb1, 0x70, 0xcb, 0xa7, 0x84, 0x11, 0xb4, 0xed, - 0x04, 0xcc, 0x21, 0xad, 0x19, 0xa0, 0x15, 0x03, 0x1a, 0x3b, 0x43, 0x42, 0x86, 0x2e, 0x6e, 0x0b, - 0xc3, 0x41, 0x78, 0xd9, 0xb6, 0x43, 0x6a, 0x32, 0x87, 0x78, 0x12, 0x3a, 0x3f, 0x7e, 0x4d, 0x4d, - 0xdf, 0xc7, 0x34, 0x90, 0xe3, 0xcd, 0xdf, 0xe6, 0x60, 0xfd, 0xa5, 0x9c, 0xb4, 0x2f, 0xe7, 0x44, - 0x9b, 0xa0, 0x8e, 0x48, 0xc0, 0x02, 0x4d, 0xd9, 0xcd, 0xef, 0x55, 0x74, 0xd9, 0x40, 0x0d, 0x28, - 0x0f, 0x4d, 0x86, 0xaf, 0xcd, 0x69, 0xa0, 0xe5, 0xc4, 0x40, 0xd2, 0x46, 0x87, 0x50, 0x18, 0x31, - 0xe6, 0x6b, 0xf9, 0xdd, 0xfc, 0x5e, 0x75, 0xff, 0x1b, 0xad, 0x7b, 0xdd, 0x6d, 0xf5, 0x2e, 0x2e, - 0xce, 0x75, 0x12, 0x32, 0xac, 0x0b, 0x04, 0xfa, 0x3e, 0xe4, 0x99, 0xe5, 0x6b, 0x05, 0x01, 0xfc, - 0x70, 0x01, 0xf0, 0xe2, 0x24, 0xc2, 0x71, 0x7b, 0x01, 0x73, 0x03, 0x4d, 0xcd, 0x86, 0x3d, 0xef, - 0xc7, 0x30, 0x37, 0x40, 0xef, 0x41, 0x05, 0x4f, 0x7c, 0x42, 0x99, 0xc1, 0x88, 0x56, 0x94, 0x8b, - 0x90, 0x1d, 0x17, 0xa4, 0x79, 0x05, 0xd5, 0x53, 0x1c, 0x30, 0xc7, 0x13, 0xe1, 0x43, 0x08, 0x0a, - 0x7c, 0xe1, 0x9a, 0xb2, 0xab, 0xec, 0x55, 0x74, 0xf1, 0x1b, 0x6d, 0x41, 0x31, 0x08, 0x07, 0x01, - 0x66, 0x5a, 0x4e, 0xf4, 0x46, 0x2d, 0xf4, 0x43, 0x28, 0x70, 0x12, 0x2d, 0xbf, 0xab, 0xec, 0x55, - 0xf7, 0xbf, 0xb5, 0xc0, 0x9f, 0x73, 0x42, 0x59, 0x1f, 0xbb, 0xd8, 0x62, 0x84, 0xea, 0x02, 0xd4, - 0xfc, 0x17, 0x40, 0x25, 0x09, 0x0b, 0xea, 0x80, 0x3a, 0x36, 0x99, 0x35, 0x12, 0xc1, 0xaf, 0xee, - 0x7f, 0x9c, 0x11, 0xcb, 0x17, 0xdc, 0x56, 0xc7, 0x3f, 0x0f, 0x71, 0xc0, 0x74, 0x89, 0x44, 0x4f, - 0x40, 0xa5, 0x9c, 0x4b, 0x6c, 0x53, 0x75, 0xbf, 0xbd, 0xcc, 0x76, 0xa4, 0x56, 0xae, 0x4b, 0x34, - 0x3a, 0x81, 0x32, 0xc5, 0xb6, 0x43, 0xb1, 0xb5, 0xcc, 0xc2, 0x04, 0x53, 0x64, 0xae, 0x27, 0x40, - 0xf4, 0x25, 0x94, 0x28, 0xbe, 0xa6, 0x0e, 0xc3, 0x5a, 0x41, 0x70, 0x7c, 0x33, 0x93, 0x43, 0x58, - 0xeb, 0x31, 0x0c, 0x7d, 0x0c, 0x1b, 0xd7, 0x78, 0x10, 0x10, 0xeb, 0x15, 0x66, 0x46, 0xe8, 0x0f, - 0xa9, 0x69, 0x63, 0x4d, 0xdd, 0x55, 0xf6, 0xca, 0x7a, 0x3d, 0x19, 0xf8, 0x89, 0xec, 0x47, 0x07, - 0x50, 0x62, 0xce, 0x18, 0x93, 0x90, 0x69, 0x45, 0x31, 0xdd, 0x76, 0x4b, 0x9e, 0xff, 0x56, 0x7c, - 0xfe, 0x5b, 0xa7, 0xd1, 0xfd, 0xd0, 0x63, 0x4b, 0x74, 0xcc, 0x7d, 0x64, 0xd4, 0xc1, 0x81, 0x56, - 0x12, 0xa0, 0xcc, 0x03, 0x8c, 0x19, 0x9d, 0xea, 0x31, 0x08, 0x9d, 0x80, 0x7a, 0x69, 0x86, 0x2e, - 0xd3, 0xca, 0x02, 0xfd, 0x49, 0x06, 0xfa, 0x29, 0xb7, 0x7d, 0xe6, 0xfd, 0x0c, 0x5b, 0x32, 0xda, - 0x02, 0x8b, 0x8e, 0xa1, 0x38, 0x76, 0x28, 0x25, 0x54, 0xab, 0x64, 0xc6, 0x29, 0xbd, 0x59, 0x11, - 0x0a, 0x3d, 0x85, 0xaa, 0x45, 0x68, 0x60, 0xf8, 0xc4, 0x75, 0xac, 0xa9, 0x06, 0x82, 0xe4, 0xa3, - 0x05, 0x24, 0x27, 0x84, 0x06, 0xe7, 0xc2, 0x58, 0x07, 0x2b, 0xf9, 0x8d, 0x06, 0xb0, 0xce, 0xf3, - 0x83, 0x67, 0x1b, 0x23, 0x6c, 0xda, 0x98, 0x06, 0x5a, 0x55, 0x9c, 0xa2, 0x1f, 0x2c, 0x73, 0x8a, - 0x5a, 0x1d, 0x01, 0xed, 0x49, 0xe4, 0x13, 0x8f, 0xd1, 0x69, 0x37, 0xa7, 0x29, 0xfa, 0x9a, 0x99, - 0xee, 0x47, 0x9f, 0xc1, 0xbb, 0x14, 0x8f, 0xc9, 0x15, 0x36, 0x28, 0x0e, 0x7c, 0xe2, 0x05, 0x38, - 0x99, 0xac, 0xc6, 0x2f, 0xa5, 0xc0, 0xbc, 0x23, 0x4d, 0xf4, 0xc8, 0x22, 0xc6, 0xfe, 0x02, 0xde, - 0x8d, 0xfc, 0x9b, 0xc3, 0xae, 0x09, 0x47, 0xbf, 0x58, 0xc1, 0xd1, 0x5b, 0xe4, 0x33, 0x87, 0xdf, - 0x31, 0xef, 0x1a, 0x47, 0x87, 0xb0, 0x95, 0x38, 0x2e, 0xae, 0x5c, 0x32, 0xf7, 0x7a, 0xe2, 0xf7, - 0x66, 0xec, 0xb7, 0x30, 0x88, 0x91, 0x13, 0xd8, 0x4a, 0xdc, 0xbe, 0x89, 0x7c, 0x2c, 0xbc, 0x3e, - 0x5e, 0xc9, 0xeb, 0x34, 0xf5, 0xcc, 0xe9, 0x4d, 0xf3, 0x8e, 0x61, 0x74, 0x04, 0xa5, 0x78, 0xaa, - 0xba, 0x38, 0x14, 0xcd, 0x45, 0x53, 0x49, 0x4b, 0x3d, 0x86, 0x34, 0xbe, 0x04, 0x34, 0xbf, 0xa7, - 0xa8, 0x0e, 0xf9, 0x57, 0x78, 0x1a, 0xa5, 0x46, 0xfe, 0x93, 0xd7, 0x8c, 0x2b, 0xd3, 0x0d, 0x71, - 0x94, 0x18, 0x65, 0xe3, 0xb3, 0xdc, 0xa1, 0xd2, 0xe8, 0x41, 0xe3, 0xfe, 0x60, 0xaf, 0xc4, 0xf4, - 0x15, 0x6c, 0xdf, 0x1b, 0x80, 0x55, 0x88, 0x9a, 0xff, 0xcc, 0x43, 0x29, 0x0e, 0xcf, 0x0b, 0x7e, - 0xf9, 0x05, 0x9d, 0xc0, 0x56, 0xf7, 0x0f, 0xb2, 0xc3, 0x13, 0xfd, 0x3d, 0xf3, 0xb1, 0x4c, 0x25, - 0x81, 0x1e, 0x73, 0xa0, 0x33, 0x9e, 0x34, 0xe5, 0x3a, 0xc5, 0xbc, 0x0f, 0xe4, 0x4b, 0x48, 0x1a, - 0x7f, 0xce, 0x41, 0xfd, 0xf6, 0x30, 0xfa, 0x31, 0xe4, 0x79, 0x11, 0x92, 0x25, 0xe2, 0xe8, 0x01, - 0x13, 0xb4, 0xfa, 0x98, 0x89, 0xb8, 0xe9, 0x9c, 0x88, 0xf3, 0x99, 0xb6, 0x1d, 0xd5, 0x8b, 0x07, - 0xf1, 0x75, 0x6c, 0x3b, 0xe2, 0x33, 0x6d, 0x9b, 0xd7, 0x49, 0x79, 0x0b, 0x84, 0x22, 0xa8, 0xe8, - 0x51, 0xab, 0xf1, 0x29, 0x94, 0xe3, 0x89, 0x57, 0xda, 0xf9, 0x4f, 0xa1, 0x1c, 0x4f, 0xb0, 0xd2, - 0x46, 0xff, 0x5e, 0x81, 0x72, 0xac, 0x00, 0x78, 0x9a, 0x4e, 0x57, 0xd6, 0x4f, 0x16, 0xab, 0x06, - 0x51, 0x58, 0x3b, 0x8c, 0x51, 0x67, 0x10, 0x32, 0x1c, 0xc4, 0xb5, 0xb5, 0x73, 0xb3, 0xb6, 0x2e, - 0x2a, 0xcf, 0xf7, 0xd4, 0xd5, 0xe6, 0xef, 0xb8, 0x53, 0x91, 0x9a, 0x41, 0xdd, 0x9b, 0x4e, 0x7d, - 0x67, 0x01, 0xdf, 0xf3, 0xef, 0xfd, 0xf7, 0x7c, 0xfa, 0x93, 0x0a, 0xf5, 0xdb, 0x72, 0x02, 0x1d, - 0x42, 0x3e, 0xa4, 0x4e, 0x74, 0x2d, 0x16, 0xd5, 0xa3, 0x3e, 0xa3, 0x8e, 0x37, 0x94, 0x58, 0x0e, - 0xe1, 0xc5, 0x2c, 0xb0, 0x46, 0x78, 0x1c, 0xdf, 0x81, 0x65, 0xc1, 0x11, 0x4a, 0x14, 0x43, 0xcc, - 0x46, 0xc4, 0x8e, 0x84, 0xc7, 0xd2, 0x78, 0x89, 0x42, 0xa7, 0x50, 0x31, 0x43, 0x36, 0x22, 0xd4, - 0x61, 0xd3, 0x25, 0x74, 0x47, 0x9a, 0x62, 0x06, 0x44, 0xfa, 0x2c, 0x73, 0x4a, 0xa1, 0x79, 0xb8, - 0x82, 0x18, 0x6b, 0xa5, 0xb3, 0x53, 0x92, 0x4f, 0xb9, 0xaa, 0x14, 0x4a, 0x91, 0xab, 0x93, 0x35, - 0x29, 0x00, 0xd1, 0x00, 0xd6, 0x02, 0x12, 0x52, 0x0b, 0x1b, 0xae, 0x39, 0xc0, 0x2e, 0x57, 0x21, - 0x7c, 0xb6, 0xcf, 0x57, 0x99, 0xad, 0x2f, 0x08, 0x9e, 0x0b, 0xbc, 0x9c, 0xb2, 0x16, 0xa4, 0xba, - 0x6e, 0xa8, 0xf7, 0xf2, 0x4d, 0xf5, 0xde, 0x18, 0x40, 0x2d, 0x23, 0x95, 0x1e, 0xa5, 0x6f, 0xd8, - 0xf2, 0xb1, 0x4c, 0xdd, 0xe0, 0x2f, 0x60, 0x63, 0xce, 0xc5, 0x95, 0xae, 0xf2, 0xdf, 0x54, 0xd8, - 0xbc, 0x4b, 0xad, 0xa2, 0x1e, 0x54, 0xed, 0x59, 0x73, 0x89, 0xd3, 0x9a, 0x3e, 0xfe, 0x69, 0x28, - 0xcf, 0x5a, 0xd7, 0xd8, 0x19, 0x8e, 0xa4, 0xba, 0x57, 0xf5, 0xa8, 0xb5, 0x48, 0xae, 0xe4, 0xb3, - 0xe4, 0xca, 0x6f, 0x94, 0xfb, 0xf5, 0x8a, 0xfc, 0xe8, 0xf9, 0xd1, 0x8a, 0xf2, 0xfc, 0xad, 0x4b, - 0x17, 0x35, 0x43, 0xba, 0xfc, 0x52, 0xb9, 0x57, 0xbb, 0x14, 0xc5, 0x0a, 0x9e, 0x3d, 0x74, 0x05, - 0x0f, 0x94, 0x31, 0xa5, 0xd5, 0x65, 0xcc, 0xff, 0xa1, 0x08, 0x61, 0x50, 0xff, 0xdf, 0x9f, 0xe5, - 0xe6, 0x5f, 0x72, 0xb0, 0x31, 0x57, 0x48, 0x50, 0x1b, 0xbe, 0x96, 0x02, 0x1b, 0x41, 0x38, 0xf0, - 0x70, 0xf2, 0xfd, 0x8f, 0x52, 0x43, 0x7d, 0x39, 0x92, 0xa4, 0xb1, 0x5c, 0x2a, 0x8d, 0x7d, 0x98, - 0xa4, 0x31, 0x89, 0x17, 0xb9, 0xbb, 0x12, 0xe7, 0x21, 0x89, 0x44, 0xd6, 0xed, 0x5c, 0x57, 0xc8, - 0x94, 0xbf, 0x73, 0xee, 0xae, 0x94, 0xec, 0xd4, 0x5b, 0xc9, 0xee, 0x3f, 0x4e, 0x44, 0xff, 0xc8, - 0x01, 0x9a, 0xd7, 0x07, 0xe8, 0x3d, 0xa8, 0x04, 0x9e, 0x63, 0xa4, 0x1f, 0x4e, 0xca, 0x81, 0xe7, - 0xf4, 0xc4, 0xdb, 0xc9, 0x3d, 0xf1, 0xcd, 0x65, 0xc6, 0x37, 0xbf, 0x28, 0xbe, 0x85, 0x3b, 0xe2, - 0x6b, 0xdf, 0x8e, 0xaf, 0x9a, 0xf9, 0x51, 0x34, 0xbf, 0x98, 0x95, 0x02, 0x5c, 0x7c, 0xdb, 0x01, - 0x3e, 0x86, 0x5a, 0xfa, 0x31, 0x81, 0x63, 0x63, 0x19, 0x52, 0x91, 0xf2, 0xe2, 0xfd, 0x74, 0x79, - 0x97, 0xf8, 0x59, 0x47, 0xf3, 0x73, 0xa8, 0xa6, 0x1e, 0x12, 0x56, 0x86, 0x63, 0xa8, 0xa6, 0x6a, - 0x18, 0xda, 0x02, 0x15, 0x4f, 0x4c, 0x2b, 0x7a, 0x07, 0xea, 0x3d, 0xd2, 0x65, 0x13, 0x69, 0x50, - 0xf4, 0x29, 0xbe, 0x74, 0x26, 0x92, 0xa1, 0xf7, 0x48, 0x8f, 0xda, 0x1c, 0x41, 0xf1, 0x10, 0x4f, - 0xe4, 0xf9, 0xe7, 0x08, 0xd1, 0xec, 0xd6, 0x00, 0x84, 0x5e, 0x33, 0xd8, 0xd4, 0xc7, 0xcd, 0x5f, - 0x2b, 0xd1, 0xab, 0x0f, 0xe6, 0xf1, 0x69, 0x40, 0xd9, 0x64, 0x0c, 0x8f, 0x7d, 0x71, 0x78, 0xf8, - 0x85, 0x4d, 0xda, 0xa8, 0x03, 0x8f, 0x7d, 0x4c, 0x0d, 0x46, 0xa7, 0x46, 0xfc, 0xb6, 0x91, 0xcb, - 0x7a, 0xdb, 0x58, 0xf3, 0x31, 0xbd, 0xa0, 0xd3, 0x8b, 0xe8, 0x85, 0x63, 0x9b, 0x7f, 0x95, 0x70, - 0x02, 0xe2, 0x45, 0xb7, 0x52, 0x3c, 0x5e, 0x4c, 0xcf, 0xbc, 0xe6, 0x1f, 0x73, 0x00, 0xb3, 0xa7, - 0x00, 0xf4, 0x01, 0xd4, 0x4c, 0xd7, 0x25, 0xd7, 0x06, 0xa1, 0xce, 0xd0, 0xf1, 0xa2, 0x93, 0x5c, - 0x15, 0x7d, 0x67, 0xa2, 0x8b, 0x9f, 0x43, 0x69, 0x22, 0xc5, 0x56, 0x7c, 0x8c, 0x25, 0xee, 0x85, - 0xec, 0x9b, 0x19, 0xdd, 0xa8, 0x94, 0x91, 0x51, 0x9c, 0xd3, 0x3f, 0x82, 0x75, 0x3c, 0xf1, 0xc9, - 0xad, 0x92, 0x58, 0xd1, 0xd7, 0x64, 0x6f, 0x6c, 0xb6, 0x0f, 0xa5, 0xb1, 0x39, 0x31, 0xcc, 0xa1, - 0x7c, 0xf7, 0x59, 0xb8, 0xf0, 0xe2, 0xd8, 0x9c, 0x74, 0x86, 0x18, 0x7d, 0x05, 0x1b, 0x72, 0x7e, - 0x8b, 0x62, 0x1b, 0x7b, 0xcc, 0x31, 0xdd, 0x20, 0x7a, 0x12, 0x6a, 0xcc, 0xa1, 0xbb, 0x84, 0xb8, - 0x2f, 0xf9, 0xf9, 0xd3, 0xeb, 0x02, 0x74, 0x32, 0xc3, 0x34, 0xff, 0xa0, 0x02, 0x9a, 0x7f, 0xb5, - 0x41, 0xcf, 0x40, 0xb5, 0xb1, 0x6b, 0x4e, 0x97, 0xf9, 0x68, 0x9c, 0x43, 0xb7, 0x4e, 0x39, 0x54, - 0x97, 0x0c, 0x9c, 0xca, 0x1c, 0xc4, 0xc9, 0x74, 0x65, 0xaa, 0x0e, 0x87, 0xea, 0x92, 0xa1, 0xf1, - 0xab, 0x1c, 0xa8, 0x82, 0x1b, 0xbd, 0x0f, 0x25, 0x1f, 0x53, 0x0b, 0x7b, 0xf2, 0xe0, 0xaa, 0xa2, - 0xb2, 0xc6, 0x5d, 0xe8, 0x08, 0xaa, 0x97, 0xce, 0x04, 0xdb, 0x86, 0x5c, 0x43, 0xd6, 0x71, 0xea, - 0x3d, 0xd2, 0x41, 0xd8, 0x4b, 0xee, 0x1e, 0x6c, 0xf0, 0x0d, 0xf2, 0x64, 0x88, 0x22, 0x8e, 0x7c, - 0x36, 0x47, 0x3d, 0x85, 0x92, 0x4c, 0x5d, 0x80, 0xc8, 0xa5, 0xd9, 0xe6, 0x2e, 0xaa, 0xeb, 0xe7, - 0xd2, 0x58, 0x4f, 0xa1, 0xba, 0x1b, 0xf0, 0x78, 0xc4, 0x98, 0x2f, 0xdd, 0x10, 0x77, 0xab, 0xf1, - 0x5a, 0x01, 0x55, 0xc4, 0x25, 0x23, 0x0c, 0x1f, 0x40, 0x55, 0x40, 0x03, 0x66, 0xb2, 0x30, 0x90, - 0x95, 0x92, 0xaf, 0x95, 0x77, 0xf6, 0x45, 0x1f, 0x37, 0x19, 0x52, 0xdf, 0x8a, 0x4d, 0xe2, 0x2b, - 0x0d, 0xbc, 0x73, 0x66, 0xc2, 0x01, 0xfb, 0x06, 0x16, 0xcf, 0x77, 0x85, 0xd8, 0x44, 0x74, 0x3e, - 0x11, 0x8f, 0x73, 0x6f, 0x63, 0x9d, 0x35, 0x00, 0x31, 0x81, 0x4c, 0x1f, 0x4f, 0xa1, 0x96, 0x7e, - 0x4a, 0xe6, 0xe9, 0xc8, 0x0b, 0xc7, 0x03, 0x4c, 0xc5, 0x3a, 0xd7, 0x78, 0x3a, 0x92, 0x6d, 0xb4, - 0x09, 0x05, 0xcf, 0x8c, 0xbe, 0xc4, 0xb8, 0x5f, 0xa2, 0xd5, 0x2d, 0xca, 0x02, 0xd3, 0xfc, 0x3a, - 0x94, 0xa2, 0xc9, 0x66, 0x19, 0x99, 0x33, 0x28, 0x51, 0x46, 0xee, 0xb6, 0xfe, 0xfa, 0x66, 0x47, - 0xf9, 0xfb, 0x9b, 0x1d, 0xe5, 0xf5, 0x9b, 0x1d, 0xe5, 0xa7, 0xbb, 0xd2, 0x67, 0x87, 0xb4, 0x4d, - 0xdf, 0x69, 0xdf, 0xf1, 0x0f, 0x8c, 0x41, 0x51, 0xec, 0xfc, 0xc1, 0xbf, 0x03, 0x00, 0x00, 0xff, - 0xff, 0x3d, 0x3a, 0x29, 0x1e, 0xde, 0x18, 0x00, 0x00, -} diff --git a/networking/v1alpha3/virtual_service.pb.html b/networking/v1alpha3/virtual_service.pb.html new file mode 100644 index 00000000000..c55e804f1fd --- /dev/null +++ b/networking/v1alpha3/virtual_service.pb.html @@ -0,0 +1,1762 @@ +--- +title: Virtual Service +description: Configuration affecting label/content routing, sni routing, etc. +location: https://istio.io/docs/reference/config/networking/v1alpha3/virtual-service.html +layout: protoc-gen-docs +generator: protoc-gen-docs +number_of_entries: 22 +--- +

Configuration affecting traffic routing. Here are a few terms useful to define +in the context of traffic routing.

+ +

Service a unit of application behavior bound to a unique name in a +service registry. Services consist of multiple network endpoints +implemented by workload instances running on pods, containers, VMs etc.

+ +

Service versions (a.k.a. subsets) - In a continuous deployment +scenario, for a given service, there can be distinct subsets of +instances running different variants of the application binary. These +variants are not necessarily different API versions. They could be +iterative changes to the same service, deployed in different +environments (prod, staging, dev, etc.). Common scenarios where this +occurs include A/B testing, canary rollouts, etc. The choice of a +particular version can be decided based on various criterion (headers, +url, etc.) and/or by weights assigned to each version. Each service has +a default version consisting of all its instances.

+ +

Source - A downstream client calling a service.

+ +

Host - The address used by a client when attempting to connect to a +service.

+ +

Access model - Applications address only the destination service +(Host) without knowledge of individual service versions (subsets). The +actual choice of the version is determined by the proxy/sidecar, enabling the +application code to decouple itself from the evolution of dependent +services.

+ +

A VirtualService defines a set of traffic routing rules to apply when a host is +addressed. Each routing rule defines matching criteria for traffic of a specific +protocol. If the traffic is matched, then it is sent to a named destination service +(or subset/version of it) defined in the registry.

+ +

The source of traffic can also be matched in a routing rule. This allows routing +to be customized for specific client contexts.

+ +

The following example on Kubernetes, routes all HTTP traffic by default to +pods of the reviews service with label “version: v1”. In addition, +HTTP requests with path starting with /wpcatalog/ or /consumercatalog/ will +be rewritten to /newcatalog and sent to pods with label “version: v2”.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: VirtualService
+metadata:
+  name: reviews-route
+spec:
+  hosts:
+  - reviews.prod.svc.cluster.local
+  http:
+  - match:
+    - uri:
+        prefix: "/wpcatalog"
+    - uri:
+        prefix: "/consumercatalog"
+    rewrite:
+      uri: "/newcatalog"
+    route:
+    - destination:
+        host: reviews.prod.svc.cluster.local
+        subset: v2
+  - route:
+    - destination:
+        host: reviews.prod.svc.cluster.local
+        subset: v1
+
+ +

A subset/version of a route destination is identified with a reference +to a named service subset which must be declared in a corresponding +DestinationRule.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+  name: reviews-destination
+spec:
+  host: reviews.prod.svc.cluster.local
+  subsets:
+  - name: v1
+    labels:
+      version: v1
+  - name: v2
+    labels:
+      version: v2
+
+ +

CorsPolicy

+
+

Describes the Cross-Origin Resource Sharing (CORS) policy, for a given +service. Refer to +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.

+ +
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:
+      allowOrigin:
+      - example.com
+      allowMethods:
+      - POST
+      - GET
+      allowCredentials: false
+      allowHeaders:
+      - X-Foo-Bar
+      maxAge: "1d"
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
allowOriginstring[] +

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.

+ +
allowMethodsstring[] +

List of HTTP methods allowed to access the resource. The content will +be serialized into the Access-Control-Allow-Methods header.

+ +
allowHeadersstring[] +

List of HTTP headers that can be used when requesting the +resource. Serialized to Access-Control-Allow-Headers header.

+ +
exposeHeadersstring[] +

A white list of HTTP headers that the browsers are allowed to +access. Serialized into Access-Control-Expose-Headers header.

+ +
maxAgegoogle.protobuf.Duration +

Specifies how long the results of a preflight request can be +cached. Translates to the Access-Control-Max-Age header.

+ +
allowCredentialsgoogle.protobuf.BoolValue +

Indicates whether the caller is allowed to send the actual request +(not the preflight) using credentials. Translates to +Access-Control-Allow-Credentials header.

+ +
+
+

Destination

+
+

Destination indicates the network addressable service to which the +request/connection will be sent after processing a routing rule. The +destination.host should unambiguously refer to a service in the service +registry. Istio’s service registry is composed of all the services found +in the platform’s service registry (e.g., Kubernetes services, Consul +services), as well as services declared through the +ServiceEntry resource.

+ +

Note for Kubernetes users: When short names are used (e.g. “reviews” +instead of “reviews.default.svc.cluster.local”), Istio will interpret +the short name based on the namespace of the rule, not the service. A +rule in the “default” namespace containing a host “reviews will be +interpreted as “reviews.default.svc.cluster.local”, irrespective of the +actual namespace associated with the reviews service. To avoid potential +misconfigurations, it is recommended to always use fully qualified +domain names over short names.

+ +

The following Kubernetes example routes all traffic by default to pods +of the reviews service with label “version: v1” (i.e., subset v1), and +some to subset v2, in a Kubernetes environment.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: VirtualService
+metadata:
+  name: reviews-route
+  namespace: foo
+spec:
+  hosts:
+  - reviews # interpreted as reviews.foo.svc.cluster.local
+  http:
+  - match:
+    - uri:
+        prefix: "/wpcatalog"
+    - uri:
+        prefix: "/consumercatalog"
+    rewrite:
+      uri: "/newcatalog"
+    route:
+    - destination:
+        host: reviews # interpreted as reviews.foo.svc.cluster.local
+        subset: v2
+  - route:
+    - destination:
+        host: reviews # interpreted as reviews.foo.svc.cluster.local
+        subset: v1
+
+ +

And the associated DestinationRule

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+  name: reviews-destination
+  namespace: foo
+spec:
+  host: reviews # interpreted as reviews.foo.svc.cluster.local
+  subsets:
+  - name: v1
+    labels:
+      version: v1
+  - name: v2
+    labels:
+      version: v2
+
+ +

The following VirtualService sets a timeout of 5s for all calls to +productpage.prod.svc.cluster.local service in Kubernetes. Notice that +there are no subsets defined in this rule. Istio will fetch all +instances of productpage.prod.svc.cluster.local service from the service +registry and populate the sidecar’s load balancing pool. Also, notice +that this rule is set in the istio-system namespace but uses the fully +qualified domain name of the productpage service, +productpage.prod.svc.cluster.local. Therefore the rule’s namespace does +not have an impact in resolving the name of the productpage service.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: VirtualService
+metadata:
+  name: my-productpage-rule
+  namespace: istio-system
+spec:
+  hosts:
+  - productpage.prod.svc.cluster.local # ignores rule namespace
+  http:
+  - timeout: 5s
+    route:
+    - destination:
+        host: productpage.prod.svc.cluster.local
+
+ +

To control routing for traffic bound to services outside the mesh, external +services must first be added to Istio’s internal service registry using the +ServiceEntry resource. VirtualServices can then be defined to control traffic +bound to these external services. For example, the following rules define a +Service for wikipedia.org and set a timeout of 5s for http requests.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: ServiceEntry
+metadata:
+  name: external-svc-wikipedia
+spec:
+  hosts:
+  - wikipedia.org
+  location: MESH_EXTERNAL
+  ports:
+  - number: 80
+    name: example-http
+    protocol: HTTP
+  resolution: DNS
+
+apiVersion: networking.istio.io/v1alpha3
+kind: VirtualService
+metadata:
+  name: my-wiki-rule
+spec:
+  hosts:
+  - wikipedia.org
+  http:
+  - timeout: 5s
+    route:
+    - destination:
+        host: wikipedia.org
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
hoststring +

REQUIRED. The name of a service from the service registry. Service +names are looked up from the platform’s service registry (e.g., +Kubernetes services, Consul services, etc.) and from the hosts +declared by ServiceEntry. Traffic forwarded to +destinations that are not found in either of the two, will be dropped.

+ +

Note for Kubernetes users: When short names are used (e.g. “reviews” +instead of “reviews.default.svc.cluster.local”), Istio will interpret +the short name based on the namespace of the rule, not the service. A +rule in the “default” namespace containing a host “reviews will be +interpreted as “reviews.default.svc.cluster.local”, irrespective of +the actual namespace associated with the reviews service. To avoid +potential misconfigurations, it is recommended to always use fully +qualified domain names over short names.

+ +
subsetstring +

The name of a subset within the service. Applicable only to services +within the mesh. The subset must be defined in a corresponding +DestinationRule.

+ +
portPortSelector +

Specifies the port on the host that is being addressed. If a service +exposes only a single port it is not required to explicitly select the +port.

+ +
+
+

HTTPFaultInjection

+
+

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.

+ + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
delayHTTPFaultInjection.Delay +

Delay requests before forwarding, emulating various failures such as +network issues, overloaded upstream service, etc.

+ +
abortHTTPFaultInjection.Abort +

Abort Http request attempts and return error codes back to downstream +service, giving the impression that the upstream service is faulty.

+ +
+
+

HTTPFaultInjection.Abort

+
+

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”.

+ +
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.001
+        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.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
percentint32 +

Percentage of requests to be aborted with the error code provided (0-100). +Use of integer percent value is deprecated. Use the double percentage +field instead.

+ +
httpStatusint32 (oneof) +

REQUIRED. HTTP status code to use to abort the Http request.

+ +
percentagePercent +

Percentage of requests to be aborted with the error code provided.

+ +
+
+

HTTPFaultInjection.Delay

+
+

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

+ +
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.001
+        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.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
percentint32 +

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.

+ +
fixedDelaygoogle.protobuf.Duration (oneof) +

REQUIRED. Add a fixed delay before forwarding the request. Format: +1h/1m/1s/1ms. MUST be >=1ms.

+ +
percentagePercent +

Percentage of requests on which the delay will be injected.

+ +
+
+

HTTPMatchRequest

+
+

HttpMatchRequest specifies a set of criterion to be met in order for the +rule to be applied to the HTTP request. For example, the following +restricts the rule to match only requests where the URL path +starts with /ratings/v2/ and the request contains a custom end-user header +with value jason.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: VirtualService
+metadata:
+  name: ratings-route
+spec:
+  hosts:
+  - ratings.prod.svc.cluster.local
+  http:
+  - match:
+    - headers:
+        end-user:
+          exact: jason
+      uri:
+        prefix: "/ratings/v2/"
+    route:
+    - destination:
+        host: ratings.prod.svc.cluster.local
+
+ +

HTTPMatchRequest CANNOT be empty.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
uriStringMatch +

URI to match +values are case-sensitive and formatted as follows:

+ +
    +
  • exact: "value" for exact string match

  • + +
  • prefix: "value" for prefix-based match

  • + +
  • regex: "value" for ECMAscript style regex-based match

  • +
+ +
schemeStringMatch +

URI Scheme +values are case-sensitive and formatted as follows:

+ +
    +
  • exact: "value" for exact string match

  • + +
  • prefix: "value" for prefix-based match

  • + +
  • regex: "value" for ECMAscript style regex-based match

  • +
+ +
methodStringMatch +

HTTP Method +values are case-sensitive and formatted as follows:

+ +
    +
  • exact: "value" for exact string match

  • + +
  • prefix: "value" for prefix-based match

  • + +
  • regex: "value" for ECMAscript style regex-based match

  • +
+ +
authorityStringMatch +

HTTP Authority +values are case-sensitive and formatted as follows:

+ +
    +
  • exact: "value" for exact string match

  • + +
  • prefix: "value" for prefix-based match

  • + +
  • regex: "value" for ECMAscript style regex-based match

  • +
+ +
headersmap<string, StringMatch> +

The header keys must be lowercase and use hyphen as the separator, +e.g. x-request-id.

+ +

Header values are case-sensitive and formatted as follows:

+ +
    +
  • exact: "value" for exact string match

  • + +
  • prefix: "value" for prefix-based match

  • + +
  • regex: "value" for ECMAscript style regex-based match

  • +
+ +

Note: The keys uri, scheme, method, and authority will be ignored.

+ +
portuint32 +

Specifies the ports 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.

+ +
sourceLabelsmap<string, string> +

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 at the top, it should include the reserved gateway +mesh in order for this field to be applicable.

+ +
gatewaysstring[] +

Names of gateways where the rule should be applied to. Gateway names +at the top of the VirtualService (if any) are overridden. The gateway match is +independent of sourceLabels.

+ +
+
+

HTTPRedirect

+
+

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.

+ +
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
+  ...
+
+ + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
uristring +

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.

+ +
authoritystring +

On a redirect, overwrite the Authority/Host portion of the URL with +this value.

+ +
+
+

HTTPRetry

+
+

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.

+ +
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
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
attemptsint32 +

REQUIRED. Number of retries for a given request. The interval +between retries will be determined automatically (25ms+). Actual +number of retries attempted depends on the httpReqTimeout.

+ +
perTryTimeoutgoogle.protobuf.Duration +

Timeout per retry attempt for a given request. format: 1h/1m/1s/1ms. MUST BE >=1ms.

+ +
retryOnstring +

Specifies the conditions under which retry takes place. +One or more policies can be specified using a ‘,’ delimited list. +The supported policies can be found in +https://www.envoyproxy.io/docs/envoy/latest/configuration/http_filters/router_filter#x-envoy-retry-on +and https://www.envoyproxy.io/docs/envoy/latest/configuration/http_filters/router_filter#x-envoy-retry-grpc-on

+ +
+
+

HTTPRewrite

+
+

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.

+ +
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
+
+ + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
uristring +

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.

+ +
authoritystring +

rewrite the Authority/Host header with this value.

+ +
+
+

HTTPRoute

+
+

Describes match conditions and actions for routing HTTP/1.1, HTTP2, and +gRPC traffic. See VirtualService for usage examples.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
matchHTTPMatchRequest[] +

Match conditions to be satisfied for the rule to be +activated. All conditions inside a single match block have AND +semantics, while the list of match blocks have OR semantics. The rule +is matched if any one of the match blocks succeed.

+ +
routeHTTPRouteDestination[] +

A http rule can either redirect or forward (default) traffic. The +forwarding target can be one of several versions of a service (see +glossary in beginning of document). Weights associated with the +service version determine the proportion of traffic it receives.

+ +
redirectHTTPRedirect +

A http rule can either redirect or forward (default) traffic. If +traffic passthrough option is specified in the rule, +route/redirect will be ignored. The redirect primitive can be used to +send a HTTP 301 redirect to a different URI or Authority.

+ +
rewriteHTTPRewrite +

Rewrite HTTP URIs and Authority headers. Rewrite cannot be used with +Redirect primitive. Rewrite will be performed before forwarding.

+ +
timeoutgoogle.protobuf.Duration +

Timeout for HTTP requests.

+ +
retriesHTTPRetry +

Retry policy for HTTP requests.

+ +
faultHTTPFaultInjection +

Fault injection policy to apply on HTTP traffic at the client side. +Note that timeouts or retries will not be enabled when faults are +enabled on the client side.

+ +
mirrorDestination +

Mirror HTTP traffic to a another destination in addition to forwarding +the requests to the intended destination. Mirrored traffic is on a +best effort basis where the sidecar/gateway will not wait for the +mirrored cluster to respond before returning the response from the +original destination. Statistics will be generated for the mirrored +destination.

+ +
corsPolicyCorsPolicy +

Cross-Origin Resource Sharing policy (CORS). Refer to +CORS +for further details about cross origin resource sharing.

+ +
appendHeadersmap<string, string> +

Use of append_headers is deprecated. Use the headers +field instead.

+ +
removeResponseHeadersstring[] +

Use of remove_response_header is deprecated. Use the headers +field instead.

+ +
appendResponseHeadersmap<string, string> +

Use of append_response_headers is deprecated. Use the headers +field instead.

+ +
removeRequestHeadersstring[] +

Use of remove_request_headers is deprecated. Use the headers +field instead.

+ +
appendRequestHeadersmap<string, string> +

Use of append_request_headers is deprecated. Use the headers +field instead.

+ +
headersHeaders +

Header manipulation rules

+ +
+
+

HTTPRouteDestination

+
+

Each routing rule is associated with one or more service versions (see +glossary in beginning of document). Weights associated with the version +determine the proportion of traffic it receives. For example, the +following rule will route 25% of traffic for the “reviews” service to +instances with the “v2” tag and the remaining traffic (i.e., 75%) to +“v1”.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: VirtualService
+metadata:
+  name: reviews-route
+spec:
+  hosts:
+  - reviews.prod.svc.cluster.local
+  http:
+  - route:
+    - destination:
+        host: reviews.prod.svc.cluster.local
+        subset: v2
+      weight: 25
+    - destination:
+        host: reviews.prod.svc.cluster.local
+        subset: v1
+      weight: 75
+
+ +

And the associated DestinationRule

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+  name: reviews-destination
+spec:
+  host: reviews.prod.svc.cluster.local
+  subsets:
+  - name: v1
+    labels:
+      version: v1
+  - name: v2
+    labels:
+      version: v2
+
+ +

Traffic can also be split across two entirely different services without +having to define new subsets. For example, the following rule forwards 25% of +traffic to reviews.com to dev.reviews.com

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: VirtualService
+metadata:
+  name: reviews-route-two-domains
+spec:
+  hosts:
+  - reviews.com
+  http:
+  - route:
+    - destination:
+        host: dev.reviews.com
+      weight: 25
+    - destination:
+        host: reviews.com
+      weight: 75
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
destinationDestination +

REQUIRED. Destination uniquely identifies the instances of a service +to which the request/connection should be forwarded to.

+ +
weightint32 +

REQUIRED. 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.

+ +
removeResponseHeadersstring[] +

Use of remove_response_header is deprecated. Use the headers +field instead.

+ +
appendResponseHeadersmap<string, string> +

Use of append_response_headers is deprecated. Use the headers +field instead.

+ +
removeRequestHeadersstring[] +

Use of remove_request_headers is deprecated. Use the headers +field instead.

+ +
appendRequestHeadersmap<string, string> +

Use of append_request_headers is deprecated. Use the headers +field instead.

+ +
headersHeaders +

Header manipulation rules

+ +
+
+

Headers

+
+

Header manipulation rules

+ + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
requestHeaders.HeaderOperations +

Header manipulation rules to apply before forwarding a request +to the destination service

+ +
responseHeaders.HeaderOperations +

Header manipulation rules to apply before returning a response +to the caller

+ +
+
+

Headers.HeaderOperations

+
+

HeaderOperations Describes the header manipulations to apply

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
setmap<string, string> +

Overwrite the headers specified by key with the given values

+ +
addmap<string, string> +

Append the given values to the headers specified by keys +(will create a comma-separated list of values)

+ +
removestring[] +

Remove a the specified headers

+ +
+
+

L4MatchAttributes

+
+

L4 connection match attributes. Note that L4 connection matching support +is incomplete.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
destinationSubnetsstring[] +

IPv4 or IPv6 ip addresses of destination with optional subnet. E.g., +a.b.c.d/xx form or just a.b.c.d.

+ +
portuint32 +

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.

+ +
sourceLabelsmap<string, string> +

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 at the top, it should include the reserved gateway +mesh in order for this field to be applicable.

+ +
gatewaysstring[] +

Names of gateways where the rule should be applied to. Gateway names +at the top of the VirtualService (if any) are overridden. The gateway +match is independent of sourceLabels.

+ +
+
+

Percent

+
+

Percent specifies a percentage in the range of [0.0, 100.0].

+ + + + + + + + + + + + + + + + +
FieldTypeDescription
valuedouble +
+
+

PortSelector

+
+

PortSelector specifies the number of a port to be used for +matching or selection for final routing.

+ + + + + + + + + + + + + + + + +
FieldTypeDescription
numberuint32 (oneof) +

Valid port number

+ +
+
+

RouteDestination

+
+

L4 routing rule weighted destination.

+ + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
destinationDestination +

REQUIRED. Destination uniquely identifies the instances of a service +to which the request/connection should be forwarded to.

+ +
weightint32 +

REQUIRED. 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.

+ +
+
+

StringMatch

+
+

Describes how to match a given string in HTTP headers. Match is +case-sensitive.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
exactstring (oneof) +

exact string match

+ +
prefixstring (oneof) +

prefix-based match

+ +
regexstring (oneof) +

ECMAscript style regex-based match

+ +
+
+

TCPRoute

+
+

Describes match conditions and actions for routing TCP traffic. The +following routing rule forwards traffic arriving at port 27017 for +mongo.prod.svc.cluster.local to another Mongo server on port 5555.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: VirtualService
+metadata:
+  name: bookinfo-Mongo
+spec:
+  hosts:
+  - mongo.prod.svc.cluster.local
+  tcp:
+  - match:
+    - port: 27017
+    route:
+    - destination:
+        host: mongo.backup.svc.cluster.local
+        port:
+          number: 5555
+
+ + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
matchL4MatchAttributes[] +

Match conditions to be satisfied for the rule to be +activated. All conditions inside a single match block have AND +semantics, while the list of match blocks have OR semantics. The rule +is matched if any one of the match blocks succeed.

+ +
routeRouteDestination[] +

The destination to which the connection should be forwarded to.

+ +
+
+

TLSMatchAttributes

+
+

TLS connection match attributes.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
sniHostsstring[] +

REQUIRED. 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.

+ +
destinationSubnetsstring[] +

IPv4 or IPv6 ip addresses of destination with optional subnet. E.g., +a.b.c.d/xx form or just a.b.c.d.

+ +
portuint32 +

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.

+ +
sourceLabelsmap<string, string> +

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 at the top, it should include the reserved gateway +mesh in order for this field to be applicable.

+ +
gatewaysstring[] +

Names of gateways where the rule should be applied to. Gateway names +at the top of the VirtualService (if any) are overridden. The gateway +match is independent of sourceLabels.

+ +
+
+

TLSRoute

+
+

Describes match conditions and actions for routing unterminated TLS +traffic (TLS/HTTPS) The following routing rule forwards unterminated TLS +traffic arriving at port 443 of gateway called “mygateway” to internal +services in the mesh based on the SNI value.

+ +
apiVersion: networking.istio.io/v1alpha3
+kind: VirtualService
+metadata:
+  name: bookinfo-sni
+spec:
+  hosts:
+  - "*.bookinfo.com"
+  gateways:
+  - mygateway
+  tls:
+  - match:
+    - port: 443
+      sniHosts:
+      - login.bookinfo.com
+    route:
+    - destination:
+        host: login.prod.svc.cluster.local
+  - match:
+    - port: 443
+      sniHosts:
+      - reviews.bookinfo.com
+    route:
+    - destination:
+        host: reviews.prod.svc.cluster.local
+
+ + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
matchTLSMatchAttributes[] +

REQUIRED. Match conditions to be satisfied for the rule to be +activated. All conditions inside a single match block have AND +semantics, while the list of match blocks have OR semantics. The rule +is matched if any one of the match blocks succeed.

+ +
routeRouteDestination[] +

The destination to which the connection should be forwarded to.

+ +
+
+

VirtualService

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldTypeDescription
hostsstring[] +

REQUIRED. The destination hosts to which traffic is being sent. Could +be a DNS name with wildcard prefix or an IP address. Depending on the +platform, short-names can also be used instead of a FQDN (i.e. has no +dots in the name). In such a scenario, the FQDN of the host would be +derived based on the underlying platform.

+ +

A host name can be defined by only one VirtualService. A single +VirtualService can be used to describe traffic properties for multiple +HTTP and TCP ports.

+ +

Note for Kubernetes users: When short names are used (e.g. “reviews” +instead of “reviews.default.svc.cluster.local”), Istio will interpret +the short name based on the namespace of the rule, not the service. A +rule in the “default” namespace containing a host “reviews will be +interpreted as “reviews.default.svc.cluster.local”, irrespective of +the actual namespace associated with the reviews service. To avoid +potential misconfigurations, it is recommended to always use fully +qualified domain names over short names.

+ +

The hosts field applies to both HTTP and TCP services. Service inside +the mesh, i.e., those found in the service registry, must always be +referred to using their alphanumeric names. IP addresses are allowed +only for services defined via the Gateway.

+ +
gatewaysstring[] +

The names of gateways and sidecars that should apply these routes. A +single VirtualService is used for sidecars inside the mesh as well as +for one or more gateways. The selection condition imposed by this +field can be overridden using the source field in the match conditions +of protocol-specific routes. The reserved word mesh is used to imply +all the sidecars in the mesh. When this field is omitted, the default +gateway (mesh) will be used, which would apply the rule to all +sidecars in the mesh. If a list of gateway names is provided, the +rules will apply only to the gateways. To apply the rules to both +gateways and sidecars, specify mesh as one of the gateway names.

+ +
httpHTTPRoute[] +

An ordered list of route rules for HTTP traffic. HTTP routes will be +applied to platform service ports named ‘http-’/‘http2-’/‘grpc-*’, gateway +ports with protocol HTTP/HTTP2/GRPC/ TLS-terminated-HTTPS and service +entry ports using HTTP/HTTP2/GRPC protocols. The first rule matching +an incoming request is used.

+ +
tlsTLSRoute[] +

An ordered list of route rule for non-terminated TLS & HTTPS +traffic. Routing is typically performed using the SNI value presented +by the ClientHello message. TLS routes will be applied to platform +service ports named ‘https-’, ‘tls-’, unterminated gateway ports using +HTTPS/TLS protocols (i.e. with “passthrough” TLS mode) and service +entry ports using HTTPS/TLS protocols. The first rule matching an +incoming request is used. NOTE: Traffic ‘https-’ or ‘tls-’ ports +without associated virtual service will be treated as opaque TCP +traffic.

+ +
tcpTCPRoute[] +

An ordered list of route rules for opaque TCP traffic. TCP routes will +be applied to any port that is not a HTTP or TLS port. The first rule +matching an incoming request is used.

+ +
exportTostring[] +

A list of namespaces to which this virtual service is exported. Exporting a +virtual service allows it to be used by sidecars and gateways defined in +other namespaces. This feature provides a mechanism for service owners +and mesh administrators to control the visibility of virtual services +across namespace boundaries.

+ +

If no namespaces are specified then the virtual service is exported to all +namespaces by default.

+ +

The value “.” is reserved and defines an export to the same namespace that +the virtual service is declared in. Similarly the value “*” is reserved and +defines an export to all namespaces.

+ +

NOTE: in the current release, the exportTo value is restricted to +“.” or “*” (i.e., the current namespace or all namespaces).

+ +
+
diff --git a/networking/v1alpha3/virtual_service.proto b/networking/v1alpha3/virtual_service.proto index d654c46cf3c..dadf6fe195f 100644 --- a/networking/v1alpha3/virtual_service.proto +++ b/networking/v1alpha3/virtual_service.proto @@ -17,11 +17,9 @@ syntax = "proto3"; import "google/protobuf/duration.proto"; import "google/protobuf/wrappers.proto"; -// $title: Traffic Routing -// $description: Configuration affecting traffic routing. -// $location: https://istio.io/docs/reference/config/istio.networking.v1alpha3.html -// $aliases: -// $ - /docs/reference/config/istio.routing.v1alpha1/ +// $title: Virtual Service +// $description: Configuration affecting label/content routing, sni routing, etc. +// $location: https://istio.io/docs/reference/config/networking/v1alpha3/virtual-service.html // Configuration affecting traffic routing. Here are a few terms useful to define // in the context of traffic routing. @@ -51,10 +49,7 @@ import "google/protobuf/wrappers.proto"; // actual choice of the version is determined by the proxy/sidecar, enabling the // application code to decouple itself from the evolution of dependent // services. -package istio.networking.v1alpha3; - -option go_package = "istio.io/api/networking/v1alpha3"; - +// // A `VirtualService` defines a set of traffic routing rules to apply when a host is // addressed. Each routing rule defines matching criteria for traffic of a specific // protocol. If the traffic is matched, then it is sent to a named destination service @@ -115,6 +110,10 @@ option go_package = "istio.io/api/networking/v1alpha3"; // version: v2 // ``` // +package istio.networking.v1alpha3; + +option go_package = "istio.io/api/networking/v1alpha3"; + message VirtualService { // REQUIRED. The destination hosts to which traffic is being sent. Could // be a DNS name with wildcard prefix or an IP address. Depending on the @@ -177,7 +176,7 @@ message VirtualService { repeated TCPRoute tcp = 4; // A list of namespaces to which this virtual service is exported. Exporting a - // virtual service allows it to used by sidecars and gateways defined in + // virtual service allows it to be used by sidecars and gateways defined in // other namespaces. This feature provides a mechanism for service owners // and mesh administrators to control the visibility of virtual services // across namespace boundaries. @@ -186,8 +185,11 @@ message VirtualService { // namespaces by default. // // The value "." is reserved and defines an export to the same namespace that - // the virtual service is declared in, similarly the value "*" is reserved and + // the virtual service is declared in. Similarly the value "*" is reserved and // defines an export to all namespaces. + // + // NOTE: in the current release, the `exportTo` value is restricted to + // "." or "*" (i.e., the current namespace or all namespaces). repeated string export_to = 6; } @@ -197,7 +199,7 @@ message VirtualService { // registry. Istio's service registry is composed of all the services found // in the platform's service registry (e.g., Kubernetes services, Consul // services), as well as services declared through the -// [ServiceEntry](#ServiceEntry) resource. +// [ServiceEntry](/docs/reference/config/networking/v1alpha3/service-entry/#ServiceEntry) resource. // // *Note for Kubernetes users*: When short names are used (e.g. "reviews" // instead of "reviews.default.svc.cluster.local"), Istio will interpret @@ -210,7 +212,7 @@ message VirtualService { // // The following Kubernetes example routes all traffic by default to pods // of the reviews service with label "version: v1" (i.e., subset v1), and -// some to subset v2, in a kubernetes environment. +// some to subset v2, in a Kubernetes environment. // // ```yaml // apiVersion: networking.istio.io/v1alpha3 @@ -322,7 +324,7 @@ message Destination { // REQUIRED. The name of a service from the service registry. Service // names are looked up from the platform's service registry (e.g., // Kubernetes services, Consul services, etc.) and from the hosts - // declared by [ServiceEntry](#ServiceEntry). Traffic forwarded to + // declared by [ServiceEntry](/docs/reference/config/networking/v1alpha3/service-entry/#ServiceEntry). Traffic forwarded to // destinations that are not found in either of the two, will be dropped. // // *Note for Kubernetes users*: When short names are used (e.g. "reviews" @@ -395,7 +397,7 @@ message HTTPRoute { Destination mirror = 9; // Cross-Origin Resource Sharing policy (CORS). Refer to - // https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS + // [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) // for further details about cross origin resource sharing. CorsPolicy cors_policy = 10; diff --git a/policy/v1beta1/cfg.pb.go b/policy/v1beta1/cfg.pb.go index 9cdb2f4a43d..1feea86699b 100644 --- a/policy/v1beta1/cfg.pb.go +++ b/policy/v1beta1/cfg.pb.go @@ -1,59 +1,22 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: policy/v1beta1/cfg.proto -/* - Package v1beta1 is a generated protocol buffer package. - - It is generated from these files: - policy/v1beta1/cfg.proto - policy/v1beta1/http_response.proto - policy/v1beta1/type.proto - policy/v1beta1/value_type.proto - - It has these top-level messages: - AttributeManifest - Rule - Action - Instance - Handler - Connection - Sampling - RandomSampling - RateLimitSampling - FractionalPercent - Authentication - Tls - OAuth - Mutual - DirectHttpResponse - Value - IPAddress - Duration - TimeStamp - DNSName - EmailAddress - Uri -*/ package v1beta1 -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import _ "github.com/gogo/protobuf/gogoproto" -import google_protobuf1 "github.com/gogo/protobuf/types" -import _ "github.com/gogo/protobuf/types" - -import time "time" - -import strconv "strconv" - -import strings "strings" -import reflect "reflect" -import sortkeys "github.com/gogo/protobuf/sortkeys" - -import types "github.com/gogo/protobuf/types" - -import io "io" +import ( + fmt "fmt" + _ "github.com/gogo/protobuf/gogoproto" + proto "github.com/gogo/protobuf/proto" + github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" + types "github.com/gogo/protobuf/types" + io "io" + math "math" + reflect "reflect" + strconv "strconv" + strings "strings" + time "time" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -84,6 +47,7 @@ var Rule_HeaderOperationTemplate_Operation_name = map[int32]string{ 1: "REMOVE", 2: "APPEND", } + var Rule_HeaderOperationTemplate_Operation_value = map[string]int32{ "REPLACE": 0, "REMOVE": 1, @@ -91,7 +55,7 @@ var Rule_HeaderOperationTemplate_Operation_value = map[string]int32{ } func (Rule_HeaderOperationTemplate_Operation) EnumDescriptor() ([]byte, []int) { - return fileDescriptorCfg, []int{1, 0, 0} + return fileDescriptor_dfb7777e81b6b919, []int{1, 0, 0} } // Fraction percentages support several fixed denominator values. @@ -112,13 +76,14 @@ var FractionalPercent_DenominatorType_name = map[int32]string{ 0: "HUNDRED", 1: "TEN_THOUSAND", } + var FractionalPercent_DenominatorType_value = map[string]int32{ "HUNDRED": 0, "TEN_THOUSAND": 1, } func (FractionalPercent_DenominatorType) EnumDescriptor() ([]byte, []int) { - return fileDescriptorCfg, []int{9, 0} + return fileDescriptor_dfb7777e81b6b919, []int{9, 0} } // AuthHeader specifies how to pass access token with authorization header. @@ -137,12 +102,15 @@ var Tls_AuthHeader_name = map[int32]string{ 0: "PLAIN", 1: "BEARER", } + var Tls_AuthHeader_value = map[string]int32{ "PLAIN": 0, "BEARER": 1, } -func (Tls_AuthHeader) EnumDescriptor() ([]byte, []int) { return fileDescriptorCfg, []int{11, 0} } +func (Tls_AuthHeader) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_dfb7777e81b6b919, []int{11, 0} +} // AttributeManifest describes a set of Attributes produced by some component // of an Istio deployment. @@ -166,12 +134,40 @@ type AttributeManifest struct { // attributes are described at https://istio.io/docs/reference/attribute-vocabulary.html. // Attributes not in that list should be named with a component-specific suffix such as // request.count-my.component. - Attributes map[string]*AttributeManifest_AttributeInfo `protobuf:"bytes,3,rep,name=attributes" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"` + Attributes map[string]*AttributeManifest_AttributeInfo `protobuf:"bytes,3,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *AttributeManifest) Reset() { *m = AttributeManifest{} } -func (*AttributeManifest) ProtoMessage() {} -func (*AttributeManifest) Descriptor() ([]byte, []int) { return fileDescriptorCfg, []int{0} } +func (m *AttributeManifest) Reset() { *m = AttributeManifest{} } +func (*AttributeManifest) ProtoMessage() {} +func (*AttributeManifest) Descriptor() ([]byte, []int) { + return fileDescriptor_dfb7777e81b6b919, []int{0} +} +func (m *AttributeManifest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AttributeManifest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AttributeManifest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AttributeManifest) XXX_Merge(src proto.Message) { + xxx_messageInfo_AttributeManifest.Merge(m, src) +} +func (m *AttributeManifest) XXX_Size() int { + return m.Size() +} +func (m *AttributeManifest) XXX_DiscardUnknown() { + xxx_messageInfo_AttributeManifest.DiscardUnknown(m) +} + +var xxx_messageInfo_AttributeManifest proto.InternalMessageInfo func (m *AttributeManifest) GetRevision() string { if m != nil { @@ -245,8 +241,34 @@ type AttributeManifest_AttributeInfo struct { func (m *AttributeManifest_AttributeInfo) Reset() { *m = AttributeManifest_AttributeInfo{} } func (*AttributeManifest_AttributeInfo) ProtoMessage() {} func (*AttributeManifest_AttributeInfo) Descriptor() ([]byte, []int) { - return fileDescriptorCfg, []int{0, 0} + return fileDescriptor_dfb7777e81b6b919, []int{0, 0} +} +func (m *AttributeManifest_AttributeInfo) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AttributeManifest_AttributeInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AttributeManifest_AttributeInfo.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AttributeManifest_AttributeInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_AttributeManifest_AttributeInfo.Merge(m, src) } +func (m *AttributeManifest_AttributeInfo) XXX_Size() int { + return m.Size() +} +func (m *AttributeManifest_AttributeInfo) XXX_DiscardUnknown() { + xxx_messageInfo_AttributeManifest_AttributeInfo.DiscardUnknown(m) +} + +var xxx_messageInfo_AttributeManifest_AttributeInfo proto.InternalMessageInfo func (m *AttributeManifest_AttributeInfo) GetDescription() string { if m != nil { @@ -289,25 +311,53 @@ type Rule struct { // * `attr1 == "20" && attr2 == "30"` logical AND, OR, and NOT are also available Match string `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"` // Optional. The actions that will be executed when match evaluates to `true`. - Actions []*Action `protobuf:"bytes,2,rep,name=actions" json:"actions,omitempty"` + Actions []*Action `protobuf:"bytes,2,rep,name=actions,proto3" json:"actions,omitempty"` // Optional. Templatized operations on the request headers using values produced by the // rule actions. Require the check action result to be OK. - RequestHeaderOperations []*Rule_HeaderOperationTemplate `protobuf:"bytes,3,rep,name=request_header_operations,json=requestHeaderOperations" json:"request_header_operations,omitempty"` + RequestHeaderOperations []*Rule_HeaderOperationTemplate `protobuf:"bytes,3,rep,name=request_header_operations,json=requestHeaderOperations,proto3" json:"request_header_operations,omitempty"` // Optional. Templatized operations on the response headers using values produced by the // rule actions. Require the check action result to be OK. - ResponseHeaderOperations []*Rule_HeaderOperationTemplate `protobuf:"bytes,4,rep,name=response_header_operations,json=responseHeaderOperations" json:"response_header_operations,omitempty"` + ResponseHeaderOperations []*Rule_HeaderOperationTemplate `protobuf:"bytes,4,rep,name=response_header_operations,json=responseHeaderOperations,proto3" json:"response_header_operations,omitempty"` // $hide_from_docs // Optional. Provides the ability to add a sampling configuration for Mixer rules. This sampling // will limit the scenarios in which the `actions` of the rule are executed. The sampling will // only take place after a `match` predicate has evaluated to true. // // Default behavior is no sampling (the `actions` are executed for all requests). - Sampling *Sampling `protobuf:"bytes,5,opt,name=sampling" json:"sampling,omitempty"` + Sampling *Sampling `protobuf:"bytes,5,opt,name=sampling,proto3" json:"sampling,omitempty"` } -func (m *Rule) Reset() { *m = Rule{} } -func (*Rule) ProtoMessage() {} -func (*Rule) Descriptor() ([]byte, []int) { return fileDescriptorCfg, []int{1} } +func (m *Rule) Reset() { *m = Rule{} } +func (*Rule) ProtoMessage() {} +func (*Rule) Descriptor() ([]byte, []int) { + return fileDescriptor_dfb7777e81b6b919, []int{1} +} +func (m *Rule) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Rule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Rule.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Rule) XXX_Merge(src proto.Message) { + xxx_messageInfo_Rule.Merge(m, src) +} +func (m *Rule) XXX_Size() int { + return m.Size() +} +func (m *Rule) XXX_DiscardUnknown() { + xxx_messageInfo_Rule.DiscardUnknown(m) +} + +var xxx_messageInfo_Rule proto.InternalMessageInfo func (m *Rule) GetMatch() string { if m != nil { @@ -363,7 +413,7 @@ type Rule_HeaderOperationTemplate struct { // Required. Header name literal value. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Optional. Header value expressions. - Values []string `protobuf:"bytes,2,rep,name=values" json:"values,omitempty"` + Values []string `protobuf:"bytes,2,rep,name=values,proto3" json:"values,omitempty"` // Optional. Header operation type. Default operation is to replace the value of the header by name. Operation Rule_HeaderOperationTemplate_Operation `protobuf:"varint,3,opt,name=operation,proto3,enum=istio.policy.v1beta1.Rule_HeaderOperationTemplate_Operation" json:"operation,omitempty"` } @@ -371,8 +421,34 @@ type Rule_HeaderOperationTemplate struct { func (m *Rule_HeaderOperationTemplate) Reset() { *m = Rule_HeaderOperationTemplate{} } func (*Rule_HeaderOperationTemplate) ProtoMessage() {} func (*Rule_HeaderOperationTemplate) Descriptor() ([]byte, []int) { - return fileDescriptorCfg, []int{1, 0} + return fileDescriptor_dfb7777e81b6b919, []int{1, 0} +} +func (m *Rule_HeaderOperationTemplate) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Rule_HeaderOperationTemplate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Rule_HeaderOperationTemplate.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Rule_HeaderOperationTemplate) XXX_Merge(src proto.Message) { + xxx_messageInfo_Rule_HeaderOperationTemplate.Merge(m, src) +} +func (m *Rule_HeaderOperationTemplate) XXX_Size() int { + return m.Size() } +func (m *Rule_HeaderOperationTemplate) XXX_DiscardUnknown() { + xxx_messageInfo_Rule_HeaderOperationTemplate.DiscardUnknown(m) +} + +var xxx_messageInfo_Rule_HeaderOperationTemplate proto.InternalMessageInfo func (m *Rule_HeaderOperationTemplate) GetName() string { if m != nil { @@ -413,14 +489,42 @@ type Action struct { // [Instance][istio.policy.v1beta1.Instance.name]s. // Referenced instances are evaluated by resolving the attributes/literals for all the fields. // The constructed objects are then passed to the `handler` referenced within this action. - Instances []string `protobuf:"bytes,3,rep,name=instances" json:"instances,omitempty"` + Instances []string `protobuf:"bytes,3,rep,name=instances,proto3" json:"instances,omitempty"` // Optional. A handle to refer to the results of the action. Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` } -func (m *Action) Reset() { *m = Action{} } -func (*Action) ProtoMessage() {} -func (*Action) Descriptor() ([]byte, []int) { return fileDescriptorCfg, []int{2} } +func (m *Action) Reset() { *m = Action{} } +func (*Action) ProtoMessage() {} +func (*Action) Descriptor() ([]byte, []int) { + return fileDescriptor_dfb7777e81b6b919, []int{2} +} +func (m *Action) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Action) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Action.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Action) XXX_Merge(src proto.Message) { + xxx_messageInfo_Action.Merge(m, src) +} +func (m *Action) XXX_Size() int { + return m.Size() +} +func (m *Action) XXX_DiscardUnknown() { + xxx_messageInfo_Action.DiscardUnknown(m) +} + +var xxx_messageInfo_Action proto.InternalMessageInfo func (m *Action) GetHandler() string { if m != nil { @@ -481,7 +585,7 @@ type Instance struct { Template string `protobuf:"bytes,2,opt,name=template,proto3" json:"template,omitempty"` // Required. Depends on referenced template. Struct representation of a // proto defined by the template; this varies depending on the value of field `template`. - Params *google_protobuf1.Struct `protobuf:"bytes,3,opt,name=params" json:"params,omitempty"` + Params *types.Struct `protobuf:"bytes,3,opt,name=params,proto3" json:"params,omitempty"` // Optional. Defines attribute bindings to map the output of attribute-producing adapters back into // the attribute space. The variable `output` refers to the output template instance produced // by the adapter. @@ -494,12 +598,40 @@ type Instance struct { // # Fill the new attributes from the adapter produced output // source.namespace: output.source_namespace // ``` - AttributeBindings map[string]string `protobuf:"bytes,4,rep,name=attribute_bindings,json=attributeBindings" json:"attribute_bindings,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + AttributeBindings map[string]string `protobuf:"bytes,4,rep,name=attribute_bindings,json=attributeBindings,proto3" json:"attribute_bindings,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *Instance) Reset() { *m = Instance{} } -func (*Instance) ProtoMessage() {} -func (*Instance) Descriptor() ([]byte, []int) { return fileDescriptorCfg, []int{3} } +func (m *Instance) Reset() { *m = Instance{} } +func (*Instance) ProtoMessage() {} +func (*Instance) Descriptor() ([]byte, []int) { + return fileDescriptor_dfb7777e81b6b919, []int{3} +} +func (m *Instance) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Instance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Instance.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Instance) XXX_Merge(src proto.Message) { + xxx_messageInfo_Instance.Merge(m, src) +} +func (m *Instance) XXX_Size() int { + return m.Size() +} +func (m *Instance) XXX_DiscardUnknown() { + xxx_messageInfo_Instance.DiscardUnknown(m) +} + +var xxx_messageInfo_Instance proto.InternalMessageInfo func (m *Instance) GetName() string { if m != nil { @@ -522,7 +654,7 @@ func (m *Instance) GetTemplate() string { return "" } -func (m *Instance) GetParams() *google_protobuf1.Struct { +func (m *Instance) GetParams() *types.Struct { if m != nil { return m.Params } @@ -540,7 +672,7 @@ func (m *Instance) GetAttributeBindings() map[string]string { // Each adapter implementation defines its own `params` proto. // // In the following example we define a `metrics` handler for the `prometheus` adapter. -// The example is in the form of a kubernetes resource: +// The example is in the form of a Kubernetes resource: // * The `metadata.name` is the name of the handler // * The `kind` refers to the adapter name // * The `spec` block represents adapter-specific configuration as well as the connection information @@ -588,7 +720,7 @@ func (m *Instance) GetAttributeBindings() map[string]string { // --- // ``` type Handler struct { - // Required. Must be unique in the entire mixer configuration. Used by [Actions][istio.policy.v1beta1.Action.handler] + // Required. Must be unique in the entire Mixer configuration. Used by [Actions][istio.policy.v1beta1.Action.handler] // to refer to this handler. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Required. The name of the compiled in adapter this handler instantiates. For referencing non compiled-in @@ -604,15 +736,43 @@ type Handler struct { Adapter string `protobuf:"bytes,2,opt,name=adapter,proto3" json:"adapter,omitempty"` // Optional. Depends on adapter implementation. Struct representation of a // proto defined by the adapter implementation; this varies depending on the value of field `adapter`. - Params *google_protobuf1.Struct `protobuf:"bytes,3,opt,name=params" json:"params,omitempty"` + Params *types.Struct `protobuf:"bytes,3,opt,name=params,proto3" json:"params,omitempty"` // Optional. Information on how to connect to the out-of-process adapter. // This is used if the adapter is not compiled into Mixer binary and is running as a separate process. - Connection *Connection `protobuf:"bytes,4,opt,name=connection" json:"connection,omitempty"` + Connection *Connection `protobuf:"bytes,4,opt,name=connection,proto3" json:"connection,omitempty"` } -func (m *Handler) Reset() { *m = Handler{} } -func (*Handler) ProtoMessage() {} -func (*Handler) Descriptor() ([]byte, []int) { return fileDescriptorCfg, []int{4} } +func (m *Handler) Reset() { *m = Handler{} } +func (*Handler) ProtoMessage() {} +func (*Handler) Descriptor() ([]byte, []int) { + return fileDescriptor_dfb7777e81b6b919, []int{4} +} +func (m *Handler) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Handler) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Handler.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Handler) XXX_Merge(src proto.Message) { + xxx_messageInfo_Handler.Merge(m, src) +} +func (m *Handler) XXX_Size() int { + return m.Size() +} +func (m *Handler) XXX_DiscardUnknown() { + xxx_messageInfo_Handler.DiscardUnknown(m) +} + +var xxx_messageInfo_Handler proto.InternalMessageInfo func (m *Handler) GetName() string { if m != nil { @@ -635,7 +795,7 @@ func (m *Handler) GetAdapter() string { return "" } -func (m *Handler) GetParams() *google_protobuf1.Struct { +func (m *Handler) GetParams() *types.Struct { if m != nil { return m.Params } @@ -655,15 +815,43 @@ type Connection struct { // The address of the backend. Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` // Timeout for remote calls to the backend. - Timeout *time.Duration `protobuf:"bytes,3,opt,name=timeout,stdduration" json:"timeout,omitempty"` + Timeout *time.Duration `protobuf:"bytes,3,opt,name=timeout,proto3,stdduration" json:"timeout,omitempty"` // Auth config for the connection to the backend. If omitted, plain text will // be used. - Authentication *Authentication `protobuf:"bytes,4,opt,name=authentication" json:"authentication,omitempty"` + Authentication *Authentication `protobuf:"bytes,4,opt,name=authentication,proto3" json:"authentication,omitempty"` +} + +func (m *Connection) Reset() { *m = Connection{} } +func (*Connection) ProtoMessage() {} +func (*Connection) Descriptor() ([]byte, []int) { + return fileDescriptor_dfb7777e81b6b919, []int{5} +} +func (m *Connection) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Connection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Connection.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Connection) XXX_Merge(src proto.Message) { + xxx_messageInfo_Connection.Merge(m, src) +} +func (m *Connection) XXX_Size() int { + return m.Size() +} +func (m *Connection) XXX_DiscardUnknown() { + xxx_messageInfo_Connection.DiscardUnknown(m) } -func (m *Connection) Reset() { *m = Connection{} } -func (*Connection) ProtoMessage() {} -func (*Connection) Descriptor() ([]byte, []int) { return fileDescriptorCfg, []int{5} } +var xxx_messageInfo_Connection proto.InternalMessageInfo func (m *Connection) GetAddress() string { if m != nil { @@ -692,15 +880,43 @@ func (m *Connection) GetAuthentication() *Authentication { // a request must be selected by all configured sampling strategies. type Sampling struct { // Optional. Provides filtering of actions based on random selection per request. - Random *RandomSampling `protobuf:"bytes,1,opt,name=random" json:"random,omitempty"` + Random *RandomSampling `protobuf:"bytes,1,opt,name=random,proto3" json:"random,omitempty"` // Optional. Provides filtering of actions based on number of requests observed within // a configured time window. - RateLimit *RateLimitSampling `protobuf:"bytes,2,opt,name=rate_limit,json=rateLimit" json:"rate_limit,omitempty"` + RateLimit *RateLimitSampling `protobuf:"bytes,2,opt,name=rate_limit,json=rateLimit,proto3" json:"rate_limit,omitempty"` } -func (m *Sampling) Reset() { *m = Sampling{} } -func (*Sampling) ProtoMessage() {} -func (*Sampling) Descriptor() ([]byte, []int) { return fileDescriptorCfg, []int{6} } +func (m *Sampling) Reset() { *m = Sampling{} } +func (*Sampling) ProtoMessage() {} +func (*Sampling) Descriptor() ([]byte, []int) { + return fileDescriptor_dfb7777e81b6b919, []int{6} +} +func (m *Sampling) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Sampling) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Sampling.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Sampling) XXX_Merge(src proto.Message) { + xxx_messageInfo_Sampling.Merge(m, src) +} +func (m *Sampling) XXX_Size() int { + return m.Size() +} +func (m *Sampling) XXX_DiscardUnknown() { + xxx_messageInfo_Sampling.DiscardUnknown(m) +} + +var xxx_messageInfo_Sampling proto.InternalMessageInfo func (m *Sampling) GetRandom() *RandomSampling { if m != nil { @@ -724,8 +940,7 @@ func (m *Sampling) GetRateLimit() *RateLimitSampling { // `sampling_rate` would be set `12.5`. // // This sampling configuration is meant to closely match the access log RuntimeFilter configuration -// supported by Envoy: -// https://github.com/envoyproxy/data-plane-api/blob/master/envoy/config/filter/accesslog/v2/accesslog.proto#L113 +// [supported by Envoy](https://github.com/envoyproxy/data-plane-api/blob/master/envoy/config/filter/accesslog/v2/accesslog.proto#L113) type RandomSampling struct { // Specifies an attribute expression to use to override the numerator in the `percent_sampled` field. // If this value is set, but no value is found OR if that value is not a numeric value, then @@ -733,7 +948,7 @@ type RandomSampling struct { AttributeExpression string `protobuf:"bytes,1,opt,name=attribute_expression,json=attributeExpression,proto3" json:"attribute_expression,omitempty"` // The default sampling rate, expressed as a percentage. Defaults to 0% with a denominator // of 100. - PercentSampled *FractionalPercent `protobuf:"bytes,2,opt,name=percent_sampled,json=percentSampled" json:"percent_sampled,omitempty"` + PercentSampled *FractionalPercent `protobuf:"bytes,2,opt,name=percent_sampled,json=percentSampled,proto3" json:"percent_sampled,omitempty"` // By default sampling will be based on the value of the request header `x-request-id`. // This behavior will cause consistent sampling across `Rule`s and for the full trace of a // request through a mesh (across hosts). If that value is not present and/or @@ -743,9 +958,37 @@ type RandomSampling struct { UseIndependentRandomness bool `protobuf:"varint,3,opt,name=use_independent_randomness,json=useIndependentRandomness,proto3" json:"use_independent_randomness,omitempty"` } -func (m *RandomSampling) Reset() { *m = RandomSampling{} } -func (*RandomSampling) ProtoMessage() {} -func (*RandomSampling) Descriptor() ([]byte, []int) { return fileDescriptorCfg, []int{7} } +func (m *RandomSampling) Reset() { *m = RandomSampling{} } +func (*RandomSampling) ProtoMessage() {} +func (*RandomSampling) Descriptor() ([]byte, []int) { + return fileDescriptor_dfb7777e81b6b919, []int{7} +} +func (m *RandomSampling) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RandomSampling) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RandomSampling.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RandomSampling) XXX_Merge(src proto.Message) { + xxx_messageInfo_RandomSampling.Merge(m, src) +} +func (m *RandomSampling) XXX_Size() int { + return m.Size() +} +func (m *RandomSampling) XXX_DiscardUnknown() { + xxx_messageInfo_RandomSampling.DiscardUnknown(m) +} + +var xxx_messageInfo_RandomSampling proto.InternalMessageInfo func (m *RandomSampling) GetAttributeExpression() string { if m != nil { @@ -773,7 +1016,7 @@ func (m *RandomSampling) GetUseIndependentRandomness() bool { // occur over a period of time. type RateLimitSampling struct { // Window in which to enforce the sampling rate. - SamplingDuration time.Duration `protobuf:"bytes,1,opt,name=sampling_duration,json=samplingDuration,stdduration" json:"sampling_duration"` + SamplingDuration time.Duration `protobuf:"bytes,1,opt,name=sampling_duration,json=samplingDuration,proto3,stdduration" json:"sampling_duration"` // Number of entries to allow during the `sampling_duration` before sampling is enforced. MaxUnsampledEntries int64 `protobuf:"varint,2,opt,name=max_unsampled_entries,json=maxUnsampledEntries,proto3" json:"max_unsampled_entries,omitempty"` // The rate at which to sample entries once the unsampled limit has been reached. Sampling will be enforced @@ -781,9 +1024,37 @@ type RateLimitSampling struct { SamplingRate int64 `protobuf:"varint,3,opt,name=sampling_rate,json=samplingRate,proto3" json:"sampling_rate,omitempty"` } -func (m *RateLimitSampling) Reset() { *m = RateLimitSampling{} } -func (*RateLimitSampling) ProtoMessage() {} -func (*RateLimitSampling) Descriptor() ([]byte, []int) { return fileDescriptorCfg, []int{8} } +func (m *RateLimitSampling) Reset() { *m = RateLimitSampling{} } +func (*RateLimitSampling) ProtoMessage() {} +func (*RateLimitSampling) Descriptor() ([]byte, []int) { + return fileDescriptor_dfb7777e81b6b919, []int{8} +} +func (m *RateLimitSampling) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RateLimitSampling) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RateLimitSampling.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RateLimitSampling) XXX_Merge(src proto.Message) { + xxx_messageInfo_RateLimitSampling.Merge(m, src) +} +func (m *RateLimitSampling) XXX_Size() int { + return m.Size() +} +func (m *RateLimitSampling) XXX_DiscardUnknown() { + xxx_messageInfo_RateLimitSampling.DiscardUnknown(m) +} + +var xxx_messageInfo_RateLimitSampling proto.InternalMessageInfo func (m *RateLimitSampling) GetSamplingDuration() time.Duration { if m != nil { @@ -821,9 +1092,37 @@ type FractionalPercent struct { Denominator FractionalPercent_DenominatorType `protobuf:"varint,2,opt,name=denominator,proto3,enum=istio.policy.v1beta1.FractionalPercent_DenominatorType" json:"denominator,omitempty"` } -func (m *FractionalPercent) Reset() { *m = FractionalPercent{} } -func (*FractionalPercent) ProtoMessage() {} -func (*FractionalPercent) Descriptor() ([]byte, []int) { return fileDescriptorCfg, []int{9} } +func (m *FractionalPercent) Reset() { *m = FractionalPercent{} } +func (*FractionalPercent) ProtoMessage() {} +func (*FractionalPercent) Descriptor() ([]byte, []int) { + return fileDescriptor_dfb7777e81b6b919, []int{9} +} +func (m *FractionalPercent) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *FractionalPercent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_FractionalPercent.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *FractionalPercent) XXX_Merge(src proto.Message) { + xxx_messageInfo_FractionalPercent.Merge(m, src) +} +func (m *FractionalPercent) XXX_Size() int { + return m.Size() +} +func (m *FractionalPercent) XXX_DiscardUnknown() { + xxx_messageInfo_FractionalPercent.DiscardUnknown(m) +} + +var xxx_messageInfo_FractionalPercent proto.InternalMessageInfo func (m *FractionalPercent) GetNumerator() uint32 { if m != nil { @@ -848,9 +1147,37 @@ type Authentication struct { AuthType isAuthentication_AuthType `protobuf_oneof:"auth_type"` } -func (m *Authentication) Reset() { *m = Authentication{} } -func (*Authentication) ProtoMessage() {} -func (*Authentication) Descriptor() ([]byte, []int) { return fileDescriptorCfg, []int{10} } +func (m *Authentication) Reset() { *m = Authentication{} } +func (*Authentication) ProtoMessage() {} +func (*Authentication) Descriptor() ([]byte, []int) { + return fileDescriptor_dfb7777e81b6b919, []int{10} +} +func (m *Authentication) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Authentication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Authentication.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Authentication) XXX_Merge(src proto.Message) { + xxx_messageInfo_Authentication.Merge(m, src) +} +func (m *Authentication) XXX_Size() int { + return m.Size() +} +func (m *Authentication) XXX_DiscardUnknown() { + xxx_messageInfo_Authentication.DiscardUnknown(m) +} + +var xxx_messageInfo_Authentication proto.InternalMessageInfo type isAuthentication_AuthType interface { isAuthentication_AuthType() @@ -860,10 +1187,10 @@ type isAuthentication_AuthType interface { } type Authentication_Tls struct { - Tls *Tls `protobuf:"bytes,1,opt,name=tls,oneof"` + Tls *Tls `protobuf:"bytes,1,opt,name=tls,proto3,oneof"` } type Authentication_Mutual struct { - Mutual *Mutual `protobuf:"bytes,2,opt,name=mutual,oneof"` + Mutual *Mutual `protobuf:"bytes,2,opt,name=mutual,proto3,oneof"` } func (*Authentication_Tls) isAuthentication_AuthType() {} @@ -949,12 +1276,12 @@ func _Authentication_OneofSizer(msg proto.Message) (n int) { switch x := m.AuthType.(type) { case *Authentication_Tls: s := proto.Size(x.Tls) - n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Authentication_Mutual: s := proto.Size(x.Mutual) - n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case nil: @@ -987,9 +1314,37 @@ type Tls struct { ServerName string `protobuf:"bytes,6,opt,name=server_name,json=serverName,proto3" json:"server_name,omitempty"` } -func (m *Tls) Reset() { *m = Tls{} } -func (*Tls) ProtoMessage() {} -func (*Tls) Descriptor() ([]byte, []int) { return fileDescriptorCfg, []int{11} } +func (m *Tls) Reset() { *m = Tls{} } +func (*Tls) ProtoMessage() {} +func (*Tls) Descriptor() ([]byte, []int) { + return fileDescriptor_dfb7777e81b6b919, []int{11} +} +func (m *Tls) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Tls) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Tls.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Tls) XXX_Merge(src proto.Message) { + xxx_messageInfo_Tls.Merge(m, src) +} +func (m *Tls) XXX_Size() int { + return m.Size() +} +func (m *Tls) XXX_DiscardUnknown() { + xxx_messageInfo_Tls.DiscardUnknown(m) +} + +var xxx_messageInfo_Tls proto.InternalMessageInfo type isTls_TokenSource interface { isTls_TokenSource() @@ -1008,7 +1363,7 @@ type Tls_TokenPath struct { TokenPath string `protobuf:"bytes,2,opt,name=token_path,json=tokenPath,proto3,oneof"` } type Tls_Oauth struct { - Oauth *OAuth `protobuf:"bytes,3,opt,name=oauth,oneof"` + Oauth *OAuth `protobuf:"bytes,3,opt,name=oauth,proto3,oneof"` } type Tls_AuthHeader_ struct { AuthHeader Tls_AuthHeader `protobuf:"varint,4,opt,name=auth_header,json=authHeader,proto3,enum=istio.policy.v1beta1.Tls_AuthHeader,oneof"` @@ -1160,12 +1515,12 @@ func _Tls_OneofSizer(msg proto.Message) (n int) { // token_source switch x := m.TokenSource.(type) { case *Tls_TokenPath: - n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.TokenPath))) n += len(x.TokenPath) case *Tls_Oauth: s := proto.Size(x.Oauth) - n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case nil: @@ -1175,10 +1530,10 @@ func _Tls_OneofSizer(msg proto.Message) (n int) { // token_type switch x := m.TokenType.(type) { case *Tls_AuthHeader_: - n += proto.SizeVarint(4<<3 | proto.WireVarint) + n += 1 // tag and wire n += proto.SizeVarint(uint64(x.AuthHeader)) case *Tls_CustomHeader: - n += proto.SizeVarint(5<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.CustomHeader))) n += len(x.CustomHeader) case nil: @@ -1198,14 +1553,42 @@ type OAuth struct { // REQUIRED. The Resource server's token endpoint URL. TokenUrl string `protobuf:"bytes,3,opt,name=token_url,json=tokenUrl,proto3" json:"token_url,omitempty"` // List of requested permissions. - Scopes []string `protobuf:"bytes,4,rep,name=scopes" json:"scopes,omitempty"` + Scopes []string `protobuf:"bytes,4,rep,name=scopes,proto3" json:"scopes,omitempty"` // Additional parameters for requests to the token endpoint. - EndpointParams map[string]string `protobuf:"bytes,5,rep,name=endpoint_params,json=endpointParams" json:"endpoint_params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + EndpointParams map[string]string `protobuf:"bytes,5,rep,name=endpoint_params,json=endpointParams,proto3" json:"endpoint_params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *OAuth) Reset() { *m = OAuth{} } -func (*OAuth) ProtoMessage() {} -func (*OAuth) Descriptor() ([]byte, []int) { return fileDescriptorCfg, []int{12} } +func (m *OAuth) Reset() { *m = OAuth{} } +func (*OAuth) ProtoMessage() {} +func (*OAuth) Descriptor() ([]byte, []int) { + return fileDescriptor_dfb7777e81b6b919, []int{12} +} +func (m *OAuth) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *OAuth) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_OAuth.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *OAuth) XXX_Merge(src proto.Message) { + xxx_messageInfo_OAuth.Merge(m, src) +} +func (m *OAuth) XXX_Size() int { + return m.Size() +} +func (m *OAuth) XXX_DiscardUnknown() { + xxx_messageInfo_OAuth.DiscardUnknown(m) +} + +var xxx_messageInfo_OAuth proto.InternalMessageInfo func (m *OAuth) GetClientId() string { if m != nil { @@ -1242,17 +1625,17 @@ func (m *OAuth) GetEndpointParams() map[string]string { return nil } -// Mutual let operator specify tls config for mixer as client if mtls is used to +// Mutual let operator specify TLS configuration for Mixer as client if mutual TLS is used to // secure connection to adapter backend. type Mutual struct { - // The path to the file holding the private key for mtls. If omitted, the - // default mixer private key will be used. + // The path to the file holding the private key for mutual TLS. If omitted, the + // default Mixer private key will be used. PrivateKey string `protobuf:"bytes,1,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` - // The path to the file holding client certificate for mtls. If omitted, the - // default mixer certificates will be used. + // The path to the file holding client certificate for mutual TLS. If omitted, the + // default Mixer certificates will be used. ClientCertificate string `protobuf:"bytes,2,opt,name=client_certificate,json=clientCertificate,proto3" json:"client_certificate,omitempty"` // The path to the file holding additional CA certificates that are needed to - // verify the presented adapter certificates. By default mixer should already + // verify the presented adapter certificates. By default Mixer should already // include Istio CA certificates and system certificates in cert pool. CaCertificates string `protobuf:"bytes,3,opt,name=ca_certificates,json=caCertificates,proto3" json:"ca_certificates,omitempty"` // Indicates the name of adapter backend server which is useful for routing with @@ -1260,9 +1643,37 @@ type Mutual struct { ServerName string `protobuf:"bytes,4,opt,name=server_name,json=serverName,proto3" json:"server_name,omitempty"` } -func (m *Mutual) Reset() { *m = Mutual{} } -func (*Mutual) ProtoMessage() {} -func (*Mutual) Descriptor() ([]byte, []int) { return fileDescriptorCfg, []int{13} } +func (m *Mutual) Reset() { *m = Mutual{} } +func (*Mutual) ProtoMessage() {} +func (*Mutual) Descriptor() ([]byte, []int) { + return fileDescriptor_dfb7777e81b6b919, []int{13} +} +func (m *Mutual) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Mutual) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Mutual.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Mutual) XXX_Merge(src proto.Message) { + xxx_messageInfo_Mutual.Merge(m, src) +} +func (m *Mutual) XXX_Size() int { + return m.Size() +} +func (m *Mutual) XXX_DiscardUnknown() { + xxx_messageInfo_Mutual.DiscardUnknown(m) +} + +var xxx_messageInfo_Mutual proto.InternalMessageInfo func (m *Mutual) GetPrivateKey() string { if m != nil { @@ -1293,12 +1704,17 @@ func (m *Mutual) GetServerName() string { } func init() { + proto.RegisterEnum("istio.policy.v1beta1.Rule_HeaderOperationTemplate_Operation", Rule_HeaderOperationTemplate_Operation_name, Rule_HeaderOperationTemplate_Operation_value) + proto.RegisterEnum("istio.policy.v1beta1.FractionalPercent_DenominatorType", FractionalPercent_DenominatorType_name, FractionalPercent_DenominatorType_value) + proto.RegisterEnum("istio.policy.v1beta1.Tls_AuthHeader", Tls_AuthHeader_name, Tls_AuthHeader_value) proto.RegisterType((*AttributeManifest)(nil), "istio.policy.v1beta1.AttributeManifest") + proto.RegisterMapType((map[string]*AttributeManifest_AttributeInfo)(nil), "istio.policy.v1beta1.AttributeManifest.AttributesEntry") proto.RegisterType((*AttributeManifest_AttributeInfo)(nil), "istio.policy.v1beta1.AttributeManifest.AttributeInfo") proto.RegisterType((*Rule)(nil), "istio.policy.v1beta1.Rule") proto.RegisterType((*Rule_HeaderOperationTemplate)(nil), "istio.policy.v1beta1.Rule.HeaderOperationTemplate") proto.RegisterType((*Action)(nil), "istio.policy.v1beta1.Action") proto.RegisterType((*Instance)(nil), "istio.policy.v1beta1.Instance") + proto.RegisterMapType((map[string]string)(nil), "istio.policy.v1beta1.Instance.AttributeBindingsEntry") proto.RegisterType((*Handler)(nil), "istio.policy.v1beta1.Handler") proto.RegisterType((*Connection)(nil), "istio.policy.v1beta1.Connection") proto.RegisterType((*Sampling)(nil), "istio.policy.v1beta1.Sampling") @@ -1308,11 +1724,111 @@ func init() { proto.RegisterType((*Authentication)(nil), "istio.policy.v1beta1.Authentication") proto.RegisterType((*Tls)(nil), "istio.policy.v1beta1.Tls") proto.RegisterType((*OAuth)(nil), "istio.policy.v1beta1.OAuth") + proto.RegisterMapType((map[string]string)(nil), "istio.policy.v1beta1.OAuth.EndpointParamsEntry") proto.RegisterType((*Mutual)(nil), "istio.policy.v1beta1.Mutual") - proto.RegisterEnum("istio.policy.v1beta1.Rule_HeaderOperationTemplate_Operation", Rule_HeaderOperationTemplate_Operation_name, Rule_HeaderOperationTemplate_Operation_value) - proto.RegisterEnum("istio.policy.v1beta1.FractionalPercent_DenominatorType", FractionalPercent_DenominatorType_name, FractionalPercent_DenominatorType_value) - proto.RegisterEnum("istio.policy.v1beta1.Tls_AuthHeader", Tls_AuthHeader_name, Tls_AuthHeader_value) } + +func init() { proto.RegisterFile("policy/v1beta1/cfg.proto", fileDescriptor_dfb7777e81b6b919) } + +var fileDescriptor_dfb7777e81b6b919 = []byte{ + // 1519 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xcf, 0x6f, 0x13, 0xc7, + 0x17, 0xf7, 0xc6, 0xb1, 0x13, 0x3f, 0x27, 0x8e, 0x33, 0xe4, 0x0b, 0xc6, 0x20, 0x27, 0x32, 0xdf, + 0xaf, 0xe0, 0xf0, 0xc5, 0x86, 0xa0, 0x42, 0x8b, 0x50, 0x55, 0x87, 0x98, 0x3a, 0x22, 0x24, 0xee, + 0xc4, 0xa1, 0x2d, 0x97, 0xd5, 0x64, 0x77, 0x92, 0xac, 0x58, 0xcf, 0x2e, 0xbb, 0xb3, 0x11, 0xb9, + 0xf5, 0xd0, 0xde, 0x39, 0x56, 0xea, 0xad, 0xa7, 0xf6, 0xd4, 0xff, 0xa0, 0xd7, 0x72, 0x44, 0xe2, + 0x92, 0x53, 0x5b, 0xc2, 0xa5, 0x97, 0x4a, 0x1c, 0xfa, 0x07, 0x54, 0xf3, 0x63, 0x77, 0x1d, 0xc7, + 0x46, 0x4d, 0x6f, 0x3b, 0xef, 0x7d, 0xde, 0xef, 0x37, 0xef, 0xcd, 0x42, 0xc5, 0xf7, 0x5c, 0xc7, + 0x3a, 0x6c, 0x1e, 0xdc, 0xdc, 0xa1, 0x9c, 0xdc, 0x6c, 0x5a, 0xbb, 0x7b, 0x0d, 0x3f, 0xf0, 0xb8, + 0x87, 0x16, 0x9c, 0x90, 0x3b, 0x5e, 0x43, 0xf1, 0x1b, 0x9a, 0x5f, 0x5d, 0xd8, 0xf3, 0xf6, 0x3c, + 0x09, 0x68, 0x8a, 0x2f, 0x85, 0xad, 0x5e, 0xde, 0xf3, 0xbc, 0x3d, 0x97, 0x36, 0xe5, 0x69, 0x27, + 0xda, 0x6d, 0x86, 0x3c, 0x88, 0x2c, 0xae, 0xb9, 0xb5, 0x61, 0xae, 0x1d, 0x05, 0x84, 0x3b, 0x1e, + 0xd3, 0xfc, 0xc5, 0x21, 0x1f, 0x0e, 0x88, 0x1b, 0x51, 0x93, 0x1f, 0xfa, 0x54, 0x01, 0xea, 0xdf, + 0x64, 0x61, 0xbe, 0xc5, 0x79, 0xe0, 0xec, 0x44, 0x9c, 0x3e, 0x22, 0xcc, 0xd9, 0xa5, 0x21, 0x47, + 0x55, 0x98, 0x0e, 0xe8, 0x81, 0x13, 0x3a, 0x1e, 0xab, 0x18, 0x4b, 0xc6, 0xb5, 0x02, 0x4e, 0xce, + 0x08, 0xc1, 0x24, 0x23, 0x7d, 0x5a, 0x99, 0x90, 0x74, 0xf9, 0x8d, 0x3e, 0x07, 0x20, 0xb1, 0x92, + 0xb0, 0x92, 0x5d, 0xca, 0x5e, 0x2b, 0x2e, 0xdf, 0x69, 0x8c, 0x8a, 0xb2, 0x71, 0xca, 0x58, 0x4a, + 0x09, 0xdb, 0x8c, 0x07, 0x87, 0x78, 0x40, 0x55, 0xf5, 0x19, 0xcc, 0x26, 0xec, 0x35, 0xb6, 0xeb, + 0xa1, 0x25, 0x28, 0xda, 0x34, 0xb4, 0x02, 0xc7, 0xe7, 0xa9, 0x73, 0x83, 0x24, 0xf4, 0x31, 0x40, + 0x1a, 0xa5, 0xf4, 0xb2, 0xb4, 0xbc, 0x38, 0xda, 0x97, 0xc7, 0x02, 0xd7, 0x3b, 0xf4, 0x29, 0x2e, + 0x1c, 0xc4, 0x9f, 0x55, 0x0e, 0x73, 0x43, 0x1e, 0xa1, 0x32, 0x64, 0x9f, 0xd2, 0x43, 0x6d, 0x4c, + 0x7c, 0xa2, 0x87, 0x90, 0x93, 0x12, 0x52, 0x7f, 0x71, 0xf9, 0x83, 0x33, 0xc7, 0x2a, 0x82, 0xc1, + 0x4a, 0xc7, 0xdd, 0x89, 0x0f, 0x8d, 0xfa, 0xcb, 0x49, 0x98, 0xc4, 0x91, 0x4b, 0xd1, 0x02, 0xe4, + 0xfa, 0x84, 0x5b, 0xfb, 0xda, 0x9a, 0x3a, 0xa0, 0xdb, 0x30, 0x45, 0x2c, 0x11, 0x5e, 0x58, 0x99, + 0x90, 0xd9, 0xbd, 0x3c, 0xc6, 0xa2, 0x04, 0xe1, 0x18, 0x8c, 0x18, 0x5c, 0x0c, 0xe8, 0xb3, 0x88, + 0x86, 0xdc, 0xdc, 0xa7, 0xc4, 0xa6, 0x81, 0xe9, 0xf9, 0x54, 0x75, 0x48, 0x5c, 0xa7, 0xe5, 0xd1, + 0x9a, 0x84, 0x33, 0x8d, 0x8e, 0x94, 0xd9, 0x8c, 0x45, 0x7a, 0xb4, 0xef, 0xbb, 0x84, 0x53, 0x7c, + 0x41, 0x2b, 0x1d, 0xe2, 0x87, 0xc8, 0x87, 0x6a, 0x40, 0x43, 0xdf, 0x63, 0x21, 0x1d, 0x61, 0x70, + 0xf2, 0x5f, 0x1b, 0xac, 0xc4, 0x5a, 0x4f, 0x59, 0xbc, 0x0b, 0xd3, 0x21, 0xe9, 0xfb, 0xae, 0xc3, + 0xf6, 0x2a, 0x39, 0x59, 0x8c, 0xda, 0x68, 0xfd, 0x5b, 0x1a, 0x85, 0x13, 0x7c, 0xf5, 0xb5, 0x01, + 0x17, 0xc6, 0x58, 0x4c, 0xda, 0xdc, 0x18, 0x68, 0xf3, 0xf3, 0x90, 0x97, 0x15, 0x53, 0x45, 0x28, + 0x60, 0x7d, 0x42, 0x4f, 0xa0, 0x90, 0x44, 0x59, 0xc9, 0xca, 0x8e, 0xbb, 0x77, 0xf6, 0x20, 0x1b, + 0x09, 0x05, 0xa7, 0xea, 0xea, 0x37, 0xa0, 0x90, 0xd0, 0x51, 0x11, 0xa6, 0x70, 0xbb, 0xbb, 0xde, + 0xba, 0xdf, 0x2e, 0x67, 0x10, 0x40, 0x1e, 0xb7, 0x1f, 0x6d, 0x3e, 0x6e, 0x97, 0x0d, 0xf1, 0xdd, + 0xea, 0x76, 0xdb, 0x1b, 0xab, 0xe5, 0x89, 0x7a, 0x0f, 0xf2, 0xaa, 0x0d, 0x50, 0x05, 0xa6, 0xf6, + 0x09, 0xb3, 0x5d, 0x1a, 0xe8, 0xdb, 0x1a, 0x1f, 0xd1, 0x65, 0x28, 0x38, 0x2c, 0xe4, 0x84, 0x59, + 0xfa, 0xbe, 0x16, 0x70, 0x4a, 0x48, 0x62, 0x9f, 0x4c, 0x63, 0xaf, 0xff, 0x32, 0x01, 0xd3, 0x6b, + 0x1a, 0x31, 0x32, 0x39, 0x0d, 0x98, 0xb7, 0xbc, 0xbe, 0xef, 0xb8, 0xd4, 0x36, 0xb9, 0x0e, 0xa9, + 0xf2, 0xd7, 0x9f, 0x3f, 0x2e, 0x49, 0x4c, 0x39, 0xe6, 0x25, 0x09, 0xae, 0xc2, 0x74, 0x02, 0x53, + 0xde, 0x25, 0x67, 0xd4, 0x84, 0xbc, 0x4f, 0x02, 0xd2, 0x0f, 0x65, 0x36, 0x8b, 0xcb, 0x17, 0x1a, + 0x6a, 0xce, 0x35, 0xe2, 0x39, 0xd7, 0xd8, 0x92, 0x53, 0x10, 0x6b, 0x18, 0xb2, 0x01, 0x25, 0x53, + 0xc3, 0xdc, 0x71, 0x98, 0xed, 0xb0, 0xbd, 0xb8, 0xdf, 0xc6, 0x5c, 0xce, 0x38, 0x98, 0xf4, 0x4e, + 0xae, 0x68, 0x39, 0x35, 0x86, 0xe6, 0xc9, 0x30, 0xbd, 0xba, 0x0a, 0xe7, 0x47, 0x83, 0x47, 0x4c, + 0x88, 0x85, 0xc1, 0x09, 0x51, 0x18, 0xbc, 0xea, 0x47, 0x06, 0x4c, 0x75, 0x74, 0x1d, 0x46, 0x25, + 0xf2, 0xff, 0x90, 0x24, 0xcb, 0x24, 0x36, 0xf1, 0x39, 0x0d, 0xd2, 0x3c, 0xce, 0xc5, 0xac, 0x96, + 0xe2, 0x88, 0x1a, 0xc7, 0x20, 0x5d, 0x63, 0x7d, 0x3c, 0x7b, 0x12, 0x3f, 0x01, 0xb0, 0x3c, 0xc6, + 0xa8, 0x6c, 0x1e, 0x59, 0xfc, 0xe2, 0xf2, 0xd2, 0xe8, 0xe4, 0xdd, 0x4f, 0x70, 0x78, 0x40, 0xa6, + 0xfe, 0x93, 0x01, 0x90, 0xb2, 0x94, 0x6f, 0x76, 0x40, 0xc3, 0x30, 0xf5, 0x4d, 0x1e, 0xd1, 0x47, + 0x30, 0xc5, 0x9d, 0x3e, 0xf5, 0x22, 0xae, 0x9d, 0xbb, 0x78, 0xca, 0xb9, 0x55, 0xbd, 0xc9, 0x56, + 0x26, 0xbf, 0xfd, 0x6d, 0xd1, 0xc0, 0x31, 0x1e, 0xad, 0x43, 0x89, 0x44, 0x7c, 0x9f, 0x32, 0xee, + 0x58, 0x64, 0xc0, 0xd3, 0xff, 0x8e, 0x99, 0x88, 0x27, 0xb0, 0x78, 0x48, 0xb6, 0xfe, 0xc2, 0x80, + 0xe9, 0x78, 0x32, 0xa0, 0x7b, 0x90, 0x0f, 0x08, 0xb3, 0xbd, 0xbe, 0xac, 0xc7, 0x58, 0x95, 0x58, + 0x62, 0x92, 0x79, 0xa2, 0x65, 0xd0, 0x03, 0x80, 0x80, 0x70, 0x6a, 0xba, 0x4e, 0xdf, 0xe1, 0x7a, + 0x31, 0x5c, 0x1d, 0xa7, 0x81, 0xd3, 0x75, 0x01, 0x4b, 0x94, 0x14, 0x82, 0x98, 0x54, 0x7f, 0x6d, + 0x40, 0xe9, 0xa4, 0x09, 0x74, 0x13, 0x16, 0xd2, 0xf6, 0xa6, 0xcf, 0x7d, 0x91, 0xc3, 0x74, 0xfd, + 0x9d, 0x4b, 0x78, 0xed, 0x84, 0x85, 0xba, 0x30, 0xe7, 0xd3, 0xc0, 0xa2, 0x8c, 0x9b, 0x72, 0xde, + 0x51, 0xfb, 0xfd, 0x2e, 0x3d, 0x08, 0xd4, 0xce, 0x20, 0x6e, 0x57, 0x89, 0xe1, 0x92, 0x96, 0xdf, + 0x52, 0xe2, 0xe8, 0x1e, 0x54, 0xa3, 0x90, 0x9a, 0x0e, 0xb3, 0xa9, 0x4f, 0x99, 0x2d, 0x34, 0xab, + 0xc8, 0x99, 0x28, 0xb0, 0x28, 0xe3, 0x34, 0xae, 0x44, 0x21, 0x5d, 0x4b, 0x01, 0x38, 0xe1, 0xd7, + 0x7f, 0x36, 0x60, 0xfe, 0x54, 0xd8, 0xa8, 0x0b, 0xf3, 0xf1, 0x34, 0x36, 0xe3, 0xa7, 0x8b, 0x4e, + 0xfe, 0x7b, 0x3a, 0x62, 0xfa, 0xe5, 0xaf, 0x8b, 0x19, 0xd9, 0x15, 0xe5, 0x58, 0x3a, 0xe6, 0xa1, + 0x65, 0xf8, 0x4f, 0x9f, 0x3c, 0x37, 0x23, 0xa6, 0xa3, 0x36, 0x29, 0xe3, 0x81, 0x43, 0x55, 0x07, + 0x66, 0xf1, 0xb9, 0x3e, 0x79, 0xbe, 0x1d, 0xf3, 0xda, 0x8a, 0x85, 0xae, 0xc0, 0x6c, 0xe2, 0x85, + 0xa8, 0x83, 0x0c, 0x26, 0x8b, 0x67, 0x62, 0xa2, 0xf0, 0x5b, 0x06, 0x70, 0x2a, 0x49, 0x62, 0x90, + 0xb2, 0xa8, 0x2f, 0xe6, 0xb3, 0x17, 0x48, 0xc7, 0x67, 0x71, 0x4a, 0x40, 0x5f, 0x8a, 0xd7, 0x0a, + 0xf3, 0xfa, 0x0e, 0x93, 0x7c, 0xf5, 0x18, 0xb9, 0xf3, 0x0f, 0x0b, 0xd0, 0x58, 0x4d, 0x45, 0xe5, + 0x23, 0x65, 0x50, 0x57, 0xfd, 0x06, 0xcc, 0x0d, 0xf1, 0xc5, 0x76, 0xe8, 0x6c, 0x6f, 0xac, 0xe2, + 0xf6, 0x6a, 0x39, 0x83, 0xca, 0x30, 0xd3, 0x6b, 0x6f, 0x98, 0xbd, 0xce, 0xe6, 0xf6, 0x56, 0x6b, + 0x63, 0xb5, 0x6c, 0xd4, 0xbf, 0x36, 0xa0, 0x74, 0xf2, 0x36, 0xa0, 0xeb, 0x90, 0xe5, 0x6e, 0x98, + 0x24, 0x7c, 0xa4, 0x5f, 0x3d, 0x37, 0xec, 0x64, 0xb0, 0xc0, 0xa1, 0xdb, 0x90, 0xef, 0x47, 0x3c, + 0x22, 0xae, 0x6e, 0xa5, 0x31, 0x8f, 0x90, 0x47, 0x12, 0xd3, 0xc9, 0x60, 0x8d, 0x5e, 0x29, 0x42, + 0x41, 0x5c, 0x3b, 0xf9, 0x22, 0xab, 0x1f, 0x4d, 0x40, 0xb6, 0xe7, 0x86, 0xe8, 0x2a, 0xcc, 0x59, + 0xc4, 0xb4, 0x68, 0xc0, 0x9d, 0x5d, 0xe1, 0x0f, 0x0d, 0x75, 0x3b, 0x97, 0x2c, 0x72, 0x7f, 0x80, + 0x8a, 0x16, 0x01, 0xb8, 0xf7, 0x94, 0x32, 0xd3, 0x27, 0x7c, 0x5f, 0x0d, 0x92, 0x4e, 0x06, 0x17, + 0x24, 0xad, 0x4b, 0xf8, 0x3e, 0xba, 0x05, 0x39, 0x4f, 0xe8, 0xd7, 0xa3, 0xe4, 0xd2, 0x68, 0xaf, + 0x36, 0x45, 0xec, 0x9d, 0x0c, 0x56, 0x58, 0xf4, 0x29, 0x14, 0xa5, 0x4f, 0xea, 0x95, 0x22, 0x67, + 0x48, 0x69, 0xdc, 0x85, 0xef, 0xb9, 0xa1, 0x9c, 0x23, 0x6a, 0x71, 0x77, 0x0c, 0x0c, 0x24, 0x39, + 0xa1, 0xff, 0xc1, 0xac, 0x15, 0x85, 0xdc, 0xeb, 0xc7, 0xaa, 0x72, 0xd2, 0x43, 0x03, 0xcf, 0x28, + 0xb2, 0x86, 0x2d, 0x42, 0x31, 0xa4, 0xc1, 0x01, 0x0d, 0x4c, 0x39, 0xf0, 0xf3, 0x32, 0x54, 0x50, + 0xa4, 0x0d, 0xb1, 0x60, 0xaf, 0x00, 0xa4, 0x36, 0x50, 0x01, 0x72, 0xdd, 0xf5, 0xd6, 0xda, 0x86, + 0xda, 0xf3, 0x2b, 0xed, 0x16, 0x6e, 0xe3, 0xb2, 0xb1, 0x52, 0x82, 0x19, 0x95, 0x8b, 0xd0, 0x8b, + 0x02, 0x8b, 0xae, 0xcc, 0xc4, 0xb9, 0x91, 0xa9, 0xfd, 0x6e, 0x02, 0x72, 0x32, 0x4c, 0x74, 0x09, + 0x0a, 0x96, 0xeb, 0x88, 0x2b, 0xea, 0xd8, 0xf1, 0x0b, 0x5e, 0x11, 0xd6, 0x6c, 0xd1, 0xee, 0x9a, + 0x19, 0x52, 0x2b, 0xa0, 0x5c, 0x0f, 0xe7, 0x19, 0x45, 0xdc, 0x92, 0x34, 0xa1, 0x41, 0x69, 0x8e, + 0x02, 0x57, 0x26, 0x56, 0xec, 0x67, 0x41, 0xd8, 0x0e, 0x5c, 0xf1, 0x10, 0x0a, 0x2d, 0xcf, 0xa7, + 0x6a, 0xc5, 0x16, 0xb0, 0x3e, 0xa1, 0x2f, 0x60, 0x8e, 0x32, 0xdb, 0xf7, 0x1c, 0xc6, 0x4d, 0xbd, + 0x7b, 0x72, 0x72, 0x07, 0x37, 0xdf, 0x53, 0x93, 0x46, 0x5b, 0x8b, 0x74, 0xa5, 0x84, 0xda, 0xbe, + 0x25, 0x7a, 0x82, 0x58, 0x6d, 0xc1, 0xb9, 0x11, 0xb0, 0x33, 0xed, 0xdd, 0xef, 0x0d, 0xc8, 0xab, + 0xd6, 0x14, 0xc5, 0xf0, 0x03, 0xe7, 0x40, 0x4c, 0xeb, 0x54, 0x1c, 0x34, 0xe9, 0x21, 0x3d, 0x44, + 0xd7, 0x01, 0xe9, 0x14, 0x0d, 0x34, 0xa8, 0x56, 0x39, 0xaf, 0x38, 0x03, 0x3d, 0x3a, 0xaa, 0x97, + 0xb3, 0x63, 0x7a, 0xf9, 0x44, 0x17, 0x4c, 0x0e, 0x77, 0xc1, 0xca, 0x67, 0xaf, 0xde, 0xd4, 0x32, + 0x47, 0x6f, 0x6a, 0x99, 0x77, 0x6f, 0x6a, 0xc6, 0x57, 0xc7, 0x35, 0xe3, 0x87, 0xe3, 0x9a, 0xf1, + 0xf2, 0xb8, 0x66, 0xbc, 0x3a, 0xae, 0x19, 0xbf, 0x1f, 0xd7, 0x8c, 0x3f, 0x8e, 0x6b, 0x99, 0x77, + 0xc7, 0x35, 0xe3, 0xc5, 0xdb, 0x5a, 0xe6, 0xd5, 0xdb, 0x5a, 0xe6, 0xe8, 0x6d, 0x2d, 0xf3, 0xe4, + 0x92, 0xca, 0xae, 0xe3, 0x35, 0x89, 0xef, 0x34, 0x4f, 0xfe, 0xf3, 0xed, 0xe4, 0xe5, 0x00, 0xbd, + 0xf5, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2a, 0x5a, 0x42, 0x6d, 0x90, 0x0e, 0x00, 0x00, +} + func (x Rule_HeaderOperationTemplate_Operation) String() string { s, ok := Rule_HeaderOperationTemplate_Operation_name[int32(x)] if ok { @@ -2054,7 +2570,7 @@ func (this *AttributeManifest) GoString() string { for k, _ := range this.Attributes { keysForAttributes = append(keysForAttributes, k) } - sortkeys.Strings(keysForAttributes) + github_com_gogo_protobuf_sortkeys.Strings(keysForAttributes) mapStringForAttributes := "map[string]*AttributeManifest_AttributeInfo{" for _, k := range keysForAttributes { mapStringForAttributes += fmt.Sprintf("%#v: %#v,", k, this.Attributes[k]) @@ -2139,7 +2655,7 @@ func (this *Instance) GoString() string { for k, _ := range this.AttributeBindings { keysForAttributeBindings = append(keysForAttributeBindings, k) } - sortkeys.Strings(keysForAttributeBindings) + github_com_gogo_protobuf_sortkeys.Strings(keysForAttributeBindings) mapStringForAttributeBindings := "map[string]string{" for _, k := range keysForAttributeBindings { mapStringForAttributeBindings += fmt.Sprintf("%#v: %#v,", k, this.AttributeBindings[k]) @@ -2326,7 +2842,7 @@ func (this *OAuth) GoString() string { for k, _ := range this.EndpointParams { keysForEndpointParams = append(keysForEndpointParams, k) } - sortkeys.Strings(keysForEndpointParams) + github_com_gogo_protobuf_sortkeys.Strings(keysForEndpointParams) mapStringForEndpointParams := "map[string]string{" for _, k := range keysForEndpointParams { mapStringForEndpointParams += fmt.Sprintf("%#v: %#v,", k, this.EndpointParams[k]) @@ -2764,8 +3280,8 @@ func (m *Connection) MarshalTo(dAtA []byte) (int, error) { if m.Timeout != nil { dAtA[i] = 0x1a i++ - i = encodeVarintCfg(dAtA, i, uint64(types.SizeOfStdDuration(*m.Timeout))) - n6, err := types.StdDurationMarshalTo(*m.Timeout, dAtA[i:]) + i = encodeVarintCfg(dAtA, i, uint64(github_com_gogo_protobuf_types.SizeOfStdDuration(*m.Timeout))) + n6, err := github_com_gogo_protobuf_types.StdDurationMarshalTo(*m.Timeout, dAtA[i:]) if err != nil { return 0, err } @@ -2883,8 +3399,8 @@ func (m *RateLimitSampling) MarshalTo(dAtA []byte) (int, error) { _ = l dAtA[i] = 0xa i++ - i = encodeVarintCfg(dAtA, i, uint64(types.SizeOfStdDuration(m.SamplingDuration))) - n11, err := types.StdDurationMarshalTo(m.SamplingDuration, dAtA[i:]) + i = encodeVarintCfg(dAtA, i, uint64(github_com_gogo_protobuf_types.SizeOfStdDuration(m.SamplingDuration))) + n11, err := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.SamplingDuration, dAtA[i:]) if err != nil { return 0, err } @@ -3184,6 +3700,9 @@ func encodeVarintCfg(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *AttributeManifest) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Revision) @@ -3211,6 +3730,9 @@ func (m *AttributeManifest) Size() (n int) { } func (m *AttributeManifest_AttributeInfo) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Description) @@ -3224,6 +3746,9 @@ func (m *AttributeManifest_AttributeInfo) Size() (n int) { } func (m *Rule) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Match) @@ -3256,6 +3781,9 @@ func (m *Rule) Size() (n int) { } func (m *Rule_HeaderOperationTemplate) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Name) @@ -3275,6 +3803,9 @@ func (m *Rule_HeaderOperationTemplate) Size() (n int) { } func (m *Action) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Handler) @@ -3295,6 +3826,9 @@ func (m *Action) Size() (n int) { } func (m *Instance) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Name) @@ -3325,6 +3859,9 @@ func (m *Instance) Size() (n int) { } func (m *Handler) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Name) @@ -3351,6 +3888,9 @@ func (m *Handler) Size() (n int) { } func (m *Connection) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Address) @@ -3358,7 +3898,7 @@ func (m *Connection) Size() (n int) { n += 1 + l + sovCfg(uint64(l)) } if m.Timeout != nil { - l = types.SizeOfStdDuration(*m.Timeout) + l = github_com_gogo_protobuf_types.SizeOfStdDuration(*m.Timeout) n += 1 + l + sovCfg(uint64(l)) } if m.Authentication != nil { @@ -3369,6 +3909,9 @@ func (m *Connection) Size() (n int) { } func (m *Sampling) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Random != nil { @@ -3383,6 +3926,9 @@ func (m *Sampling) Size() (n int) { } func (m *RandomSampling) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.AttributeExpression) @@ -3400,9 +3946,12 @@ func (m *RandomSampling) Size() (n int) { } func (m *RateLimitSampling) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l - l = types.SizeOfStdDuration(m.SamplingDuration) + l = github_com_gogo_protobuf_types.SizeOfStdDuration(m.SamplingDuration) n += 1 + l + sovCfg(uint64(l)) if m.MaxUnsampledEntries != 0 { n += 1 + sovCfg(uint64(m.MaxUnsampledEntries)) @@ -3414,6 +3963,9 @@ func (m *RateLimitSampling) Size() (n int) { } func (m *FractionalPercent) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Numerator != 0 { @@ -3426,6 +3978,9 @@ func (m *FractionalPercent) Size() (n int) { } func (m *Authentication) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.AuthType != nil { @@ -3435,6 +3990,9 @@ func (m *Authentication) Size() (n int) { } func (m *Authentication_Tls) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Tls != nil { @@ -3444,6 +4002,9 @@ func (m *Authentication_Tls) Size() (n int) { return n } func (m *Authentication_Mutual) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Mutual != nil { @@ -3453,6 +4014,9 @@ func (m *Authentication_Mutual) Size() (n int) { return n } func (m *Tls) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.CaCertificates) @@ -3473,6 +4037,9 @@ func (m *Tls) Size() (n int) { } func (m *Tls_TokenPath) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.TokenPath) @@ -3480,6 +4047,9 @@ func (m *Tls_TokenPath) Size() (n int) { return n } func (m *Tls_Oauth) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Oauth != nil { @@ -3489,12 +4059,18 @@ func (m *Tls_Oauth) Size() (n int) { return n } func (m *Tls_AuthHeader_) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l n += 1 + sovCfg(uint64(m.AuthHeader)) return n } func (m *Tls_CustomHeader) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.CustomHeader) @@ -3502,6 +4078,9 @@ func (m *Tls_CustomHeader) Size() (n int) { return n } func (m *OAuth) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.ClientId) @@ -3534,6 +4113,9 @@ func (m *OAuth) Size() (n int) { } func (m *Mutual) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.PrivateKey) @@ -3576,7 +4158,7 @@ func (this *AttributeManifest) String() string { for k, _ := range this.Attributes { keysForAttributes = append(keysForAttributes, k) } - sortkeys.Strings(keysForAttributes) + github_com_gogo_protobuf_sortkeys.Strings(keysForAttributes) mapStringForAttributes := "map[string]*AttributeManifest_AttributeInfo{" for _, k := range keysForAttributes { mapStringForAttributes += fmt.Sprintf("%v: %v,", k, this.Attributes[k]) @@ -3647,7 +4229,7 @@ func (this *Instance) String() string { for k, _ := range this.AttributeBindings { keysForAttributeBindings = append(keysForAttributeBindings, k) } - sortkeys.Strings(keysForAttributeBindings) + github_com_gogo_protobuf_sortkeys.Strings(keysForAttributeBindings) mapStringForAttributeBindings := "map[string]string{" for _, k := range keysForAttributeBindings { mapStringForAttributeBindings += fmt.Sprintf("%v: %v,", k, this.AttributeBindings[k]) @@ -3656,7 +4238,7 @@ func (this *Instance) String() string { s := strings.Join([]string{`&Instance{`, `Name:` + fmt.Sprintf("%v", this.Name) + `,`, `Template:` + fmt.Sprintf("%v", this.Template) + `,`, - `Params:` + strings.Replace(fmt.Sprintf("%v", this.Params), "Struct", "google_protobuf1.Struct", 1) + `,`, + `Params:` + strings.Replace(fmt.Sprintf("%v", this.Params), "Struct", "types.Struct", 1) + `,`, `AttributeBindings:` + mapStringForAttributeBindings + `,`, `CompiledTemplate:` + fmt.Sprintf("%v", this.CompiledTemplate) + `,`, `}`, @@ -3670,7 +4252,7 @@ func (this *Handler) String() string { s := strings.Join([]string{`&Handler{`, `Name:` + fmt.Sprintf("%v", this.Name) + `,`, `Adapter:` + fmt.Sprintf("%v", this.Adapter) + `,`, - `Params:` + strings.Replace(fmt.Sprintf("%v", this.Params), "Struct", "google_protobuf1.Struct", 1) + `,`, + `Params:` + strings.Replace(fmt.Sprintf("%v", this.Params), "Struct", "types.Struct", 1) + `,`, `Connection:` + strings.Replace(fmt.Sprintf("%v", this.Connection), "Connection", "Connection", 1) + `,`, `CompiledAdapter:` + fmt.Sprintf("%v", this.CompiledAdapter) + `,`, `}`, @@ -3683,7 +4265,7 @@ func (this *Connection) String() string { } s := strings.Join([]string{`&Connection{`, `Address:` + fmt.Sprintf("%v", this.Address) + `,`, - `Timeout:` + strings.Replace(fmt.Sprintf("%v", this.Timeout), "Duration", "google_protobuf2.Duration", 1) + `,`, + `Timeout:` + strings.Replace(fmt.Sprintf("%v", this.Timeout), "Duration", "types.Duration", 1) + `,`, `Authentication:` + strings.Replace(fmt.Sprintf("%v", this.Authentication), "Authentication", "Authentication", 1) + `,`, `}`, }, "") @@ -3717,7 +4299,7 @@ func (this *RateLimitSampling) String() string { return "nil" } s := strings.Join([]string{`&RateLimitSampling{`, - `SamplingDuration:` + strings.Replace(strings.Replace(this.SamplingDuration.String(), "Duration", "google_protobuf2.Duration", 1), `&`, ``, 1) + `,`, + `SamplingDuration:` + strings.Replace(strings.Replace(this.SamplingDuration.String(), "Duration", "types.Duration", 1), `&`, ``, 1) + `,`, `MaxUnsampledEntries:` + fmt.Sprintf("%v", this.MaxUnsampledEntries) + `,`, `SamplingRate:` + fmt.Sprintf("%v", this.SamplingRate) + `,`, `}`, @@ -3826,7 +4408,7 @@ func (this *OAuth) String() string { for k, _ := range this.EndpointParams { keysForEndpointParams = append(keysForEndpointParams, k) } - sortkeys.Strings(keysForEndpointParams) + github_com_gogo_protobuf_sortkeys.Strings(keysForEndpointParams) mapStringForEndpointParams := "map[string]string{" for _, k := range keysForEndpointParams { mapStringForEndpointParams += fmt.Sprintf("%v: %v,", k, this.EndpointParams[k]) @@ -3878,7 +4460,7 @@ func (m *AttributeManifest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3906,7 +4488,7 @@ func (m *AttributeManifest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3916,6 +4498,9 @@ func (m *AttributeManifest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3935,7 +4520,7 @@ func (m *AttributeManifest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3945,6 +4530,9 @@ func (m *AttributeManifest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3964,7 +4552,7 @@ func (m *AttributeManifest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -3973,6 +4561,9 @@ func (m *AttributeManifest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3993,7 +4584,7 @@ func (m *AttributeManifest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4010,7 +4601,7 @@ func (m *AttributeManifest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4020,6 +4611,9 @@ func (m *AttributeManifest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthCfg + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -4036,7 +4630,7 @@ func (m *AttributeManifest) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapmsglen |= (int(b) & 0x7F) << shift + mapmsglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4045,7 +4639,7 @@ func (m *AttributeManifest) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postmsgIndex := iNdEx + mapmsglen - if mapmsglen < 0 { + if postmsgIndex < 0 { return ErrInvalidLengthCfg } if postmsgIndex > l { @@ -4082,6 +4676,9 @@ func (m *AttributeManifest) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthCfg } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthCfg + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -4109,7 +4706,7 @@ func (m *AttributeManifest_AttributeInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4137,7 +4734,7 @@ func (m *AttributeManifest_AttributeInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4147,6 +4744,9 @@ func (m *AttributeManifest_AttributeInfo) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4166,7 +4766,7 @@ func (m *AttributeManifest_AttributeInfo) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ValueType |= (ValueType(b) & 0x7F) << shift + m.ValueType |= ValueType(b&0x7F) << shift if b < 0x80 { break } @@ -4180,6 +4780,9 @@ func (m *AttributeManifest_AttributeInfo) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthCfg } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthCfg + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -4207,7 +4810,7 @@ func (m *Rule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4235,7 +4838,7 @@ func (m *Rule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4245,6 +4848,9 @@ func (m *Rule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4264,7 +4870,7 @@ func (m *Rule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4273,6 +4879,9 @@ func (m *Rule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4295,7 +4904,7 @@ func (m *Rule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4304,6 +4913,9 @@ func (m *Rule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4326,7 +4938,7 @@ func (m *Rule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4335,6 +4947,9 @@ func (m *Rule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4357,7 +4972,7 @@ func (m *Rule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4366,6 +4981,9 @@ func (m *Rule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4385,6 +5003,9 @@ func (m *Rule) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthCfg } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthCfg + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -4412,7 +5033,7 @@ func (m *Rule_HeaderOperationTemplate) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4440,7 +5061,7 @@ func (m *Rule_HeaderOperationTemplate) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4450,6 +5071,9 @@ func (m *Rule_HeaderOperationTemplate) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4469,7 +5093,7 @@ func (m *Rule_HeaderOperationTemplate) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4479,6 +5103,9 @@ func (m *Rule_HeaderOperationTemplate) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4498,7 +5125,7 @@ func (m *Rule_HeaderOperationTemplate) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Operation |= (Rule_HeaderOperationTemplate_Operation(b) & 0x7F) << shift + m.Operation |= Rule_HeaderOperationTemplate_Operation(b&0x7F) << shift if b < 0x80 { break } @@ -4512,6 +5139,9 @@ func (m *Rule_HeaderOperationTemplate) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthCfg } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthCfg + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -4539,7 +5169,7 @@ func (m *Action) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4567,7 +5197,7 @@ func (m *Action) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4577,6 +5207,9 @@ func (m *Action) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4596,7 +5229,7 @@ func (m *Action) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4606,6 +5239,9 @@ func (m *Action) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4625,7 +5261,7 @@ func (m *Action) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4635,6 +5271,9 @@ func (m *Action) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4649,6 +5288,9 @@ func (m *Action) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthCfg } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthCfg + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -4676,7 +5318,7 @@ func (m *Instance) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4704,7 +5346,7 @@ func (m *Instance) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4714,6 +5356,9 @@ func (m *Instance) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4733,7 +5378,7 @@ func (m *Instance) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4743,6 +5388,9 @@ func (m *Instance) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4762,7 +5410,7 @@ func (m *Instance) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4771,11 +5419,14 @@ func (m *Instance) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } if m.Params == nil { - m.Params = &google_protobuf1.Struct{} + m.Params = &types.Struct{} } if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -4795,7 +5446,7 @@ func (m *Instance) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -4804,6 +5455,9 @@ func (m *Instance) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4824,7 +5478,7 @@ func (m *Instance) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4841,7 +5495,7 @@ func (m *Instance) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4851,6 +5505,9 @@ func (m *Instance) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthCfg + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -4867,7 +5524,7 @@ func (m *Instance) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4877,6 +5534,9 @@ func (m *Instance) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthCfg + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -4913,7 +5573,7 @@ func (m *Instance) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4923,6 +5583,9 @@ func (m *Instance) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -4937,6 +5600,9 @@ func (m *Instance) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthCfg } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthCfg + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -4964,7 +5630,7 @@ func (m *Handler) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4992,7 +5658,7 @@ func (m *Handler) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5002,6 +5668,9 @@ func (m *Handler) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5021,7 +5690,7 @@ func (m *Handler) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5031,6 +5700,9 @@ func (m *Handler) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5050,7 +5722,7 @@ func (m *Handler) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5059,11 +5731,14 @@ func (m *Handler) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } if m.Params == nil { - m.Params = &google_protobuf1.Struct{} + m.Params = &types.Struct{} } if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -5083,7 +5758,7 @@ func (m *Handler) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5092,6 +5767,9 @@ func (m *Handler) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5116,7 +5794,7 @@ func (m *Handler) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5126,6 +5804,9 @@ func (m *Handler) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5140,6 +5821,9 @@ func (m *Handler) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthCfg } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthCfg + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -5167,7 +5851,7 @@ func (m *Connection) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5195,7 +5879,7 @@ func (m *Connection) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5205,6 +5889,9 @@ func (m *Connection) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5224,7 +5911,7 @@ func (m *Connection) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5233,13 +5920,16 @@ func (m *Connection) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } if m.Timeout == nil { m.Timeout = new(time.Duration) } - if err := types.StdDurationUnmarshal(m.Timeout, dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_gogo_protobuf_types.StdDurationUnmarshal(m.Timeout, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -5257,7 +5947,7 @@ func (m *Connection) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5266,6 +5956,9 @@ func (m *Connection) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5285,6 +5978,9 @@ func (m *Connection) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthCfg } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthCfg + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -5312,7 +6008,7 @@ func (m *Sampling) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5340,7 +6036,7 @@ func (m *Sampling) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5349,6 +6045,9 @@ func (m *Sampling) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5373,7 +6072,7 @@ func (m *Sampling) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5382,6 +6081,9 @@ func (m *Sampling) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5401,6 +6103,9 @@ func (m *Sampling) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthCfg } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthCfg + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -5428,7 +6133,7 @@ func (m *RandomSampling) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5456,7 +6161,7 @@ func (m *RandomSampling) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5466,6 +6171,9 @@ func (m *RandomSampling) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5485,7 +6193,7 @@ func (m *RandomSampling) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5494,6 +6202,9 @@ func (m *RandomSampling) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5518,7 +6229,7 @@ func (m *RandomSampling) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5533,6 +6244,9 @@ func (m *RandomSampling) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthCfg } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthCfg + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -5560,7 +6274,7 @@ func (m *RateLimitSampling) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5588,7 +6302,7 @@ func (m *RateLimitSampling) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5597,10 +6311,13 @@ func (m *RateLimitSampling) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } - if err := types.StdDurationUnmarshal(&m.SamplingDuration, dAtA[iNdEx:postIndex]); err != nil { + if err := github_com_gogo_protobuf_types.StdDurationUnmarshal(&m.SamplingDuration, dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -5618,7 +6335,7 @@ func (m *RateLimitSampling) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.MaxUnsampledEntries |= (int64(b) & 0x7F) << shift + m.MaxUnsampledEntries |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -5637,7 +6354,7 @@ func (m *RateLimitSampling) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.SamplingRate |= (int64(b) & 0x7F) << shift + m.SamplingRate |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -5651,6 +6368,9 @@ func (m *RateLimitSampling) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthCfg } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthCfg + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -5678,7 +6398,7 @@ func (m *FractionalPercent) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5706,7 +6426,7 @@ func (m *FractionalPercent) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Numerator |= (uint32(b) & 0x7F) << shift + m.Numerator |= uint32(b&0x7F) << shift if b < 0x80 { break } @@ -5725,7 +6445,7 @@ func (m *FractionalPercent) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Denominator |= (FractionalPercent_DenominatorType(b) & 0x7F) << shift + m.Denominator |= FractionalPercent_DenominatorType(b&0x7F) << shift if b < 0x80 { break } @@ -5739,6 +6459,9 @@ func (m *FractionalPercent) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthCfg } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthCfg + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -5766,7 +6489,7 @@ func (m *Authentication) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5794,7 +6517,7 @@ func (m *Authentication) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5803,6 +6526,9 @@ func (m *Authentication) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5826,7 +6552,7 @@ func (m *Authentication) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5835,6 +6561,9 @@ func (m *Authentication) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5853,6 +6582,9 @@ func (m *Authentication) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthCfg } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthCfg + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -5880,7 +6612,7 @@ func (m *Tls) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5908,7 +6640,7 @@ func (m *Tls) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5918,6 +6650,9 @@ func (m *Tls) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5937,7 +6672,7 @@ func (m *Tls) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5947,6 +6682,9 @@ func (m *Tls) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5966,7 +6704,7 @@ func (m *Tls) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -5975,6 +6713,9 @@ func (m *Tls) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -5998,7 +6739,7 @@ func (m *Tls) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (Tls_AuthHeader(b) & 0x7F) << shift + v |= Tls_AuthHeader(b&0x7F) << shift if b < 0x80 { break } @@ -6018,7 +6759,7 @@ func (m *Tls) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6028,6 +6769,9 @@ func (m *Tls) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6047,7 +6791,7 @@ func (m *Tls) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6057,6 +6801,9 @@ func (m *Tls) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6071,6 +6818,9 @@ func (m *Tls) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthCfg } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthCfg + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -6098,7 +6848,7 @@ func (m *OAuth) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6126,7 +6876,7 @@ func (m *OAuth) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6136,6 +6886,9 @@ func (m *OAuth) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6155,7 +6908,7 @@ func (m *OAuth) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6165,6 +6918,9 @@ func (m *OAuth) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6184,7 +6940,7 @@ func (m *OAuth) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6194,6 +6950,9 @@ func (m *OAuth) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6213,7 +6972,7 @@ func (m *OAuth) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6223,6 +6982,9 @@ func (m *OAuth) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6242,7 +7004,7 @@ func (m *OAuth) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -6251,6 +7013,9 @@ func (m *OAuth) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6271,7 +7036,7 @@ func (m *OAuth) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6288,7 +7053,7 @@ func (m *OAuth) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6298,6 +7063,9 @@ func (m *OAuth) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthCfg + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -6314,7 +7082,7 @@ func (m *OAuth) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6324,6 +7092,9 @@ func (m *OAuth) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthCfg + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -6355,6 +7126,9 @@ func (m *OAuth) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthCfg } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthCfg + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -6382,7 +7156,7 @@ func (m *Mutual) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6410,7 +7184,7 @@ func (m *Mutual) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6420,6 +7194,9 @@ func (m *Mutual) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6439,7 +7216,7 @@ func (m *Mutual) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6449,6 +7226,9 @@ func (m *Mutual) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6468,7 +7248,7 @@ func (m *Mutual) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6478,6 +7258,9 @@ func (m *Mutual) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6497,7 +7280,7 @@ func (m *Mutual) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6507,6 +7290,9 @@ func (m *Mutual) Unmarshal(dAtA []byte) error { return ErrInvalidLengthCfg } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCfg + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -6521,6 +7307,9 @@ func (m *Mutual) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthCfg } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthCfg + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -6587,10 +7376,13 @@ func skipCfg(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthCfg } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthCfg + } return iNdEx, nil case 3: for { @@ -6619,6 +7411,9 @@ func skipCfg(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthCfg + } } return iNdEx, nil case 4: @@ -6637,104 +7432,3 @@ var ( ErrInvalidLengthCfg = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowCfg = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("policy/v1beta1/cfg.proto", fileDescriptorCfg) } - -var fileDescriptorCfg = []byte{ - // 1513 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x3f, 0x6f, 0x1b, 0x47, - 0x16, 0xe7, 0x8a, 0x22, 0x25, 0x3e, 0x4a, 0x14, 0x35, 0xd6, 0xd9, 0x34, 0x6d, 0x50, 0x02, 0x7d, - 0x07, 0xbb, 0x38, 0x93, 0xb6, 0x8c, 0xb3, 0xef, 0x0c, 0xe3, 0x70, 0x94, 0x45, 0x1f, 0x05, 0xcb, - 0x12, 0x31, 0xa2, 0x7c, 0x17, 0x37, 0x8b, 0xd1, 0xee, 0x48, 0x5a, 0x78, 0x77, 0x76, 0xbd, 0x3b, - 0x2b, 0x58, 0x5d, 0x8a, 0xa4, 0x77, 0x19, 0x20, 0x5d, 0xaa, 0xa4, 0xca, 0x37, 0x48, 0x1b, 0x97, - 0x06, 0xdc, 0xb8, 0x4a, 0x62, 0xa5, 0x49, 0x13, 0xc0, 0x45, 0x3e, 0x40, 0x30, 0x7f, 0x76, 0x97, - 0xa2, 0x48, 0x23, 0x4a, 0xb7, 0xf3, 0xfe, 0xff, 0xde, 0x7b, 0xf3, 0xde, 0x2c, 0xd4, 0x02, 0xdf, - 0x75, 0xac, 0xe3, 0xf6, 0xd1, 0xed, 0x3d, 0xca, 0xc9, 0xed, 0xb6, 0xb5, 0x7f, 0xd0, 0x0a, 0x42, - 0x9f, 0xfb, 0x68, 0xc9, 0x89, 0xb8, 0xe3, 0xb7, 0x14, 0xbf, 0xa5, 0xf9, 0xf5, 0xa5, 0x03, 0xff, - 0xc0, 0x97, 0x02, 0x6d, 0xf1, 0xa5, 0x64, 0xeb, 0x57, 0x0f, 0x7c, 0xff, 0xc0, 0xa5, 0x6d, 0x79, - 0xda, 0x8b, 0xf7, 0xdb, 0x11, 0x0f, 0x63, 0x8b, 0x6b, 0x6e, 0x63, 0x94, 0x6b, 0xc7, 0x21, 0xe1, - 0x8e, 0xcf, 0x34, 0x7f, 0x79, 0x24, 0x86, 0x23, 0xe2, 0xc6, 0xd4, 0xe4, 0xc7, 0x01, 0x55, 0x02, - 0xcd, 0xcf, 0xf3, 0xb0, 0xd8, 0xe1, 0x3c, 0x74, 0xf6, 0x62, 0x4e, 0x9f, 0x10, 0xe6, 0xec, 0xd3, - 0x88, 0xa3, 0x3a, 0xcc, 0x86, 0xf4, 0xc8, 0x89, 0x1c, 0x9f, 0xd5, 0x8c, 0x15, 0xe3, 0x46, 0x09, - 0xa7, 0x67, 0x84, 0x60, 0x9a, 0x11, 0x8f, 0xd6, 0xa6, 0x24, 0x5d, 0x7e, 0xa3, 0xff, 0x01, 0x90, - 0xc4, 0x48, 0x54, 0xcb, 0xaf, 0xe4, 0x6f, 0x94, 0x57, 0xef, 0xb5, 0xc6, 0xa1, 0x6c, 0x9d, 0x71, - 0x96, 0x51, 0xa2, 0x2e, 0xe3, 0xe1, 0x31, 0x1e, 0x32, 0x55, 0x7f, 0x01, 0xf3, 0x29, 0x7b, 0x83, - 0xed, 0xfb, 0x68, 0x05, 0xca, 0x36, 0x8d, 0xac, 0xd0, 0x09, 0x78, 0x16, 0xdc, 0x30, 0x09, 0xfd, - 0x1b, 0x20, 0x43, 0x29, 0xa3, 0xac, 0xac, 0x2e, 0x8f, 0x8f, 0xe5, 0xa9, 0x90, 0x1b, 0x1c, 0x07, - 0x14, 0x97, 0x8e, 0x92, 0xcf, 0x3a, 0x87, 0x85, 0x91, 0x88, 0x50, 0x15, 0xf2, 0xcf, 0xe9, 0xb1, - 0x76, 0x26, 0x3e, 0xd1, 0x63, 0x28, 0x48, 0x0d, 0x69, 0xbf, 0xbc, 0xfa, 0x8f, 0x73, 0x63, 0x15, - 0x60, 0xb0, 0xb2, 0x71, 0x7f, 0xea, 0x9f, 0x46, 0xf3, 0xf5, 0x34, 0x4c, 0xe3, 0xd8, 0xa5, 0x68, - 0x09, 0x0a, 0x1e, 0xe1, 0xd6, 0xa1, 0xf6, 0xa6, 0x0e, 0xe8, 0x2e, 0xcc, 0x10, 0x4b, 0xc0, 0x8b, - 0x6a, 0x53, 0x32, 0xbb, 0x57, 0x27, 0x78, 0x94, 0x42, 0x38, 0x11, 0x46, 0x0c, 0x2e, 0x87, 0xf4, - 0x45, 0x4c, 0x23, 0x6e, 0x1e, 0x52, 0x62, 0xd3, 0xd0, 0xf4, 0x03, 0xaa, 0x3a, 0x24, 0xa9, 0xd3, - 0xea, 0x78, 0x4b, 0x22, 0x98, 0x56, 0x4f, 0xea, 0x6c, 0x27, 0x2a, 0x03, 0xea, 0x05, 0x2e, 0xe1, - 0x14, 0x5f, 0xd2, 0x46, 0x47, 0xf8, 0x11, 0x0a, 0xa0, 0x1e, 0xd2, 0x28, 0xf0, 0x59, 0x44, 0xc7, - 0x38, 0x9c, 0xfe, 0xd3, 0x0e, 0x6b, 0x89, 0xd5, 0x33, 0x1e, 0xef, 0xc3, 0x6c, 0x44, 0xbc, 0xc0, - 0x75, 0xd8, 0x41, 0xad, 0x20, 0x8b, 0xd1, 0x18, 0x6f, 0x7f, 0x47, 0x4b, 0xe1, 0x54, 0xbe, 0xfe, - 0xd6, 0x80, 0x4b, 0x13, 0x3c, 0xa6, 0x6d, 0x6e, 0x0c, 0xb5, 0xf9, 0x45, 0x28, 0xca, 0x8a, 0xa9, - 0x22, 0x94, 0xb0, 0x3e, 0xa1, 0x67, 0x50, 0x4a, 0x51, 0xd6, 0xf2, 0xb2, 0xe3, 0x1e, 0x9c, 0x1f, - 0x64, 0x2b, 0xa5, 0xe0, 0xcc, 0x5c, 0xf3, 0x16, 0x94, 0x52, 0x3a, 0x2a, 0xc3, 0x0c, 0xee, 0xf6, - 0x37, 0x3b, 0x0f, 0xbb, 0xd5, 0x1c, 0x02, 0x28, 0xe2, 0xee, 0x93, 0xed, 0xa7, 0xdd, 0xaa, 0x21, - 0xbe, 0x3b, 0xfd, 0x7e, 0x77, 0x6b, 0xbd, 0x3a, 0xd5, 0x1c, 0x40, 0x51, 0xb5, 0x01, 0xaa, 0xc1, - 0xcc, 0x21, 0x61, 0xb6, 0x4b, 0x43, 0x7d, 0x5b, 0x93, 0x23, 0xba, 0x0a, 0x25, 0x87, 0x45, 0x9c, - 0x30, 0x4b, 0xdf, 0xd7, 0x12, 0xce, 0x08, 0x29, 0xf6, 0xe9, 0x0c, 0x7b, 0xf3, 0xfb, 0x29, 0x98, - 0xdd, 0xd0, 0x12, 0x63, 0x93, 0x53, 0x87, 0x59, 0xae, 0x91, 0x68, 0x6f, 0xe9, 0x19, 0xb5, 0xa1, - 0x18, 0x90, 0x90, 0x78, 0x91, 0xcc, 0x4e, 0x79, 0xf5, 0x52, 0x4b, 0xcd, 0xad, 0x56, 0x32, 0xb7, - 0x5a, 0x3b, 0x72, 0xaa, 0x61, 0x2d, 0x86, 0x6c, 0x40, 0xe9, 0x14, 0x30, 0xf7, 0x1c, 0x66, 0x3b, - 0xec, 0x20, 0xe9, 0x9f, 0x09, 0x97, 0x2d, 0x09, 0x2e, 0xbb, 0x63, 0x6b, 0x5a, 0x4f, 0x8d, 0x95, - 0x45, 0x32, 0x4a, 0x47, 0x2d, 0x58, 0xb4, 0x7c, 0x2f, 0x70, 0x5c, 0x6a, 0x9b, 0x69, 0xec, 0xbf, - 0xfd, 0xfa, 0xcd, 0x8a, 0x0c, 0xbf, 0x9a, 0xf0, 0x92, 0x02, 0xd5, 0xd7, 0xe1, 0xe2, 0x78, 0xe3, - 0x63, 0x26, 0xc4, 0xd2, 0xf0, 0x84, 0x28, 0x0d, 0x5f, 0xf5, 0x77, 0x06, 0xcc, 0xf4, 0x74, 0x1d, - 0xc6, 0x25, 0xb2, 0x06, 0x33, 0xc4, 0x26, 0x01, 0xcf, 0xaa, 0xa6, 0x8f, 0xe7, 0x4f, 0xe3, 0x7f, - 0x00, 0x2c, 0x9f, 0x31, 0x2a, 0xdb, 0x41, 0x96, 0xb3, 0xbc, 0xba, 0x32, 0x3e, 0x7d, 0x0f, 0x53, - 0x39, 0x3c, 0xa4, 0x83, 0xfe, 0x0e, 0x69, 0x1a, 0xcc, 0x24, 0xaa, 0x34, 0x43, 0x0b, 0x09, 0xab, - 0xa3, 0x38, 0xcd, 0x6f, 0x0d, 0x80, 0xcc, 0x90, 0x42, 0x62, 0x87, 0x34, 0x8a, 0x32, 0x24, 0xf2, - 0x88, 0xfe, 0x05, 0x33, 0xdc, 0xf1, 0xa8, 0x1f, 0x73, 0x0d, 0xe5, 0xf2, 0x19, 0x28, 0xeb, 0x7a, - 0x93, 0xad, 0x4d, 0x7f, 0xf1, 0xe3, 0xb2, 0x81, 0x13, 0x79, 0xb4, 0x09, 0x15, 0x12, 0xf3, 0x43, - 0xca, 0xb8, 0x63, 0x91, 0x21, 0x5c, 0x7f, 0x9d, 0x30, 0x11, 0x4f, 0xc9, 0xe2, 0x11, 0xdd, 0xe6, - 0x2b, 0x03, 0x66, 0x93, 0xc9, 0x80, 0x1e, 0x40, 0x31, 0x24, 0xcc, 0xf6, 0x3d, 0x59, 0x8f, 0x89, - 0x26, 0xb1, 0x94, 0x49, 0xe7, 0x89, 0xd6, 0x41, 0x8f, 0x00, 0x42, 0xc2, 0xa9, 0xe9, 0x3a, 0x9e, - 0xc3, 0xf5, 0x62, 0xb8, 0x3e, 0xc9, 0x02, 0xa7, 0x9b, 0x42, 0x2c, 0x35, 0x52, 0x0a, 0x13, 0x52, - 0xf3, 0xad, 0x01, 0x95, 0xd3, 0x2e, 0xd0, 0x6d, 0x58, 0xca, 0xae, 0x03, 0x7d, 0x19, 0x88, 0x1c, - 0x66, 0xeb, 0xef, 0x42, 0xca, 0xeb, 0xa6, 0x2c, 0xd4, 0x87, 0x85, 0x80, 0x86, 0x16, 0x65, 0xdc, - 0x94, 0xf3, 0x8e, 0xda, 0x1f, 0x0f, 0xe9, 0x51, 0xa8, 0x76, 0x06, 0x71, 0xfb, 0x4a, 0x0d, 0x57, - 0xb4, 0xfe, 0x8e, 0x52, 0x47, 0x0f, 0xa0, 0x1e, 0x47, 0xd4, 0x74, 0x98, 0x4d, 0x03, 0xca, 0x6c, - 0x61, 0x59, 0x21, 0x67, 0xa2, 0xc0, 0xa2, 0x8c, 0xb3, 0xb8, 0x16, 0x47, 0x74, 0x23, 0x13, 0xc0, - 0x29, 0xbf, 0xf9, 0x9d, 0x01, 0x8b, 0x67, 0x60, 0xa3, 0x3e, 0x2c, 0x26, 0xd3, 0xd8, 0x4c, 0x9e, - 0x2e, 0x3a, 0xf9, 0x1f, 0xe9, 0x88, 0xd9, 0xd7, 0x3f, 0x2c, 0xe7, 0x64, 0x57, 0x54, 0x13, 0xed, - 0x84, 0x87, 0x56, 0xe1, 0x2f, 0x1e, 0x79, 0x69, 0xc6, 0x4c, 0xa3, 0x36, 0x29, 0xe3, 0xa1, 0x43, - 0x55, 0x07, 0xe6, 0xf1, 0x05, 0x8f, 0xbc, 0xdc, 0x4d, 0x78, 0x5d, 0xc5, 0x42, 0xd7, 0x60, 0x3e, - 0x8d, 0x42, 0xd4, 0x41, 0x82, 0xc9, 0xe3, 0xb9, 0x84, 0x28, 0xe2, 0x96, 0x00, 0xce, 0x24, 0x49, - 0x0c, 0x52, 0x16, 0x7b, 0x62, 0x3e, 0xfb, 0xa1, 0x0c, 0x7c, 0x1e, 0x67, 0x04, 0xf4, 0x89, 0x78, - 0xad, 0x30, 0xdf, 0x73, 0x98, 0xe4, 0xab, 0xc7, 0xc8, 0xbd, 0x3f, 0x58, 0x80, 0xd6, 0x7a, 0xa6, - 0x2a, 0x1f, 0x29, 0xc3, 0xb6, 0x9a, 0xb7, 0x60, 0x61, 0x84, 0x2f, 0xb6, 0x43, 0x6f, 0x77, 0x6b, - 0x1d, 0x77, 0xd7, 0xab, 0x39, 0x54, 0x85, 0xb9, 0x41, 0x77, 0xcb, 0x1c, 0xf4, 0xb6, 0x77, 0x77, - 0x3a, 0x5b, 0xeb, 0x55, 0xa3, 0xf9, 0x99, 0x01, 0x95, 0xd3, 0xb7, 0x01, 0xdd, 0x84, 0x3c, 0x77, - 0xa3, 0x34, 0xe1, 0x63, 0xe3, 0x1a, 0xb8, 0x51, 0x2f, 0x87, 0x85, 0x1c, 0xba, 0x0b, 0x45, 0x2f, - 0xe6, 0x31, 0x71, 0x75, 0x2b, 0x4d, 0x78, 0x84, 0x3c, 0x91, 0x32, 0xbd, 0x1c, 0xd6, 0xd2, 0x6b, - 0x65, 0x28, 0x89, 0x6b, 0x27, 0x5f, 0x64, 0xcd, 0x77, 0x53, 0x90, 0x1f, 0xb8, 0x11, 0xba, 0x0e, - 0x0b, 0x16, 0x31, 0x2d, 0x1a, 0x72, 0x67, 0x5f, 0xc4, 0x43, 0x23, 0xdd, 0xce, 0x15, 0x8b, 0x3c, - 0x1c, 0xa2, 0xa2, 0x65, 0x00, 0xee, 0x3f, 0xa7, 0xcc, 0x0c, 0x08, 0x3f, 0x54, 0x83, 0xa4, 0x97, - 0xc3, 0x25, 0x49, 0xeb, 0x13, 0x7e, 0x88, 0xee, 0x40, 0xc1, 0x17, 0xf6, 0xf5, 0x28, 0xb9, 0x32, - 0x3e, 0xaa, 0x6d, 0x81, 0xbd, 0x97, 0xc3, 0x4a, 0x16, 0xfd, 0x17, 0xca, 0x32, 0x26, 0xf5, 0x4a, - 0x91, 0x33, 0xa4, 0x32, 0xe9, 0xc2, 0x0f, 0xdc, 0x48, 0xce, 0x11, 0xb5, 0xb8, 0x7b, 0x06, 0x06, - 0x92, 0x9e, 0xd0, 0xdf, 0x60, 0xde, 0x8a, 0x23, 0xee, 0x7b, 0x89, 0xa9, 0x82, 0x8c, 0xd0, 0xc0, - 0x73, 0x8a, 0xac, 0xc5, 0x96, 0xa1, 0x1c, 0xd1, 0xf0, 0x88, 0x86, 0xa6, 0x1c, 0xf8, 0x45, 0x09, - 0x15, 0x14, 0x69, 0x4b, 0x2c, 0xd8, 0x6b, 0x00, 0x99, 0x0f, 0x54, 0x82, 0x42, 0x7f, 0xb3, 0xb3, - 0xb1, 0xa5, 0xf6, 0xfc, 0x5a, 0xb7, 0x83, 0xbb, 0xb8, 0x6a, 0xac, 0x55, 0x60, 0x4e, 0xe5, 0x22, - 0xf2, 0xe3, 0xd0, 0xa2, 0x6b, 0x73, 0x49, 0x6e, 0x64, 0x6a, 0xbf, 0x9c, 0x82, 0x82, 0x84, 0x89, - 0xae, 0x40, 0xc9, 0x72, 0x1d, 0x71, 0x45, 0x1d, 0x3b, 0x79, 0xc1, 0x2b, 0xc2, 0x86, 0x2d, 0xda, - 0x5d, 0x33, 0x23, 0x6a, 0x85, 0x94, 0xeb, 0xe1, 0x3c, 0xa7, 0x88, 0x3b, 0x92, 0x26, 0x2c, 0x28, - 0xcb, 0x71, 0xe8, 0xca, 0xc4, 0x8a, 0x7d, 0x2e, 0x08, 0xbb, 0xa1, 0x2b, 0x1e, 0x42, 0x91, 0xe5, - 0x07, 0x54, 0xad, 0xe4, 0x12, 0xd6, 0x27, 0xf4, 0x7f, 0x58, 0xa0, 0xcc, 0x0e, 0x7c, 0x87, 0x71, - 0x53, 0x6f, 0xaa, 0x82, 0xdc, 0xd9, 0xed, 0x8f, 0xd4, 0xa4, 0xd5, 0xd5, 0x2a, 0x7d, 0xa9, 0xa1, - 0xb6, 0x75, 0x85, 0x9e, 0x22, 0xd6, 0x3b, 0x70, 0x61, 0x8c, 0xd8, 0xb9, 0xf6, 0xee, 0x57, 0x06, - 0x14, 0x55, 0x6b, 0x8a, 0x62, 0x04, 0xa1, 0x73, 0x24, 0xa6, 0x75, 0xa6, 0x0e, 0x9a, 0xf4, 0x98, - 0x1e, 0xa3, 0x9b, 0x80, 0x74, 0x8a, 0x86, 0x1a, 0x54, 0x9b, 0x5c, 0x54, 0x9c, 0xa1, 0x1e, 0x1d, - 0xd7, 0xcb, 0xf9, 0x09, 0xbd, 0x7c, 0xaa, 0x0b, 0xa6, 0x47, 0xbb, 0x60, 0x6d, 0xe3, 0xcd, 0xfb, - 0x46, 0xee, 0xdd, 0xfb, 0x46, 0xee, 0xc3, 0xfb, 0x86, 0xf1, 0xe9, 0x49, 0xc3, 0xf8, 0xfa, 0xa4, - 0x61, 0xbc, 0x3e, 0x69, 0x18, 0x6f, 0x4e, 0x1a, 0xc6, 0x4f, 0x27, 0x0d, 0xe3, 0x97, 0x93, 0x46, - 0xee, 0xc3, 0x49, 0xc3, 0x78, 0xf5, 0x73, 0x23, 0xf7, 0xec, 0x8a, 0xca, 0xaa, 0xe3, 0xb7, 0x49, - 0xe0, 0xb4, 0x4f, 0xff, 0xeb, 0xed, 0x15, 0xe5, 0xe0, 0xbc, 0xf3, 0x7b, 0x00, 0x00, 0x00, 0xff, - 0xff, 0xa6, 0xbe, 0xc2, 0x69, 0x88, 0x0e, 0x00, 0x00, -} diff --git a/policy/v1beta1/cfg.proto b/policy/v1beta1/cfg.proto index 7719ea26668..a32277c9eea 100644 --- a/policy/v1beta1/cfg.proto +++ b/policy/v1beta1/cfg.proto @@ -270,7 +270,7 @@ message Instance { // Each adapter implementation defines its own `params` proto. // // In the following example we define a `metrics` handler for the `prometheus` adapter. -// The example is in the form of a kubernetes resource: +// The example is in the form of a Kubernetes resource: // * The `metadata.name` is the name of the handler // * The `kind` refers to the adapter name // * The `spec` block represents adapter-specific configuration as well as the connection information @@ -318,7 +318,7 @@ message Instance { // --- // ``` message Handler { - // Required. Must be unique in the entire mixer configuration. Used by [Actions][istio.policy.v1beta1.Action.handler] + // Required. Must be unique in the entire Mixer configuration. Used by [Actions][istio.policy.v1beta1.Action.handler] // to refer to this handler. string name = 1; @@ -361,7 +361,7 @@ message Connection { // $hide_from_docs // Sampling provides configuration of sampling strategies for Rule actions. // Multiple sampling strategies are supported. When multiple strategies are configured, -// a request must be selected by all configured sampling strategies. +// a request must be selected by all configured sampling strategies. message Sampling { // Optional. Provides filtering of actions based on random selection per request. RandomSampling random = 1; @@ -378,8 +378,7 @@ message Sampling { // `sampling_rate` would be set `12.5`. // // This sampling configuration is meant to closely match the access log RuntimeFilter configuration -// supported by Envoy: -// https://github.com/envoyproxy/data-plane-api/blob/master/envoy/config/filter/accesslog/v2/accesslog.proto#L113 +// [supported by Envoy](https://github.com/envoyproxy/data-plane-api/blob/master/envoy/config/filter/accesslog/v2/accesslog.proto#L113) message RandomSampling { // Specifies an attribute expression to use to override the numerator in the `percent_sampled` field. // If this value is set, but no value is found OR if that value is not a numeric value, then @@ -389,8 +388,8 @@ message RandomSampling { // of 100. FractionalPercent percent_sampled = 2; // By default sampling will be based on the value of the request header `x-request-id`. - // This behavior will cause consistent sampling across `Rule`s and for the full trace of a - // request through a mesh (across hosts). If that value is not present and/or + // This behavior will cause consistent sampling across `Rule`s and for the full trace of a + // request through a mesh (across hosts). If that value is not present and/or // `use_independent_randomness` is set to true, the sampling will be done based on the value of // attribute specified in `attribute_epxression`. If that attribute does not exist, the system // will behave as if the sampling rate was 0 (meaning no `Action`s are executed for a `Rule`). @@ -515,19 +514,19 @@ message OAuth { map endpoint_params = 5; } -// Mutual let operator specify tls config for mixer as client if mtls is used to +// Mutual let operator specify TLS configuration for Mixer as client if mutual TLS is used to // secure connection to adapter backend. message Mutual { - // The path to the file holding the private key for mtls. If omitted, the - // default mixer private key will be used. + // The path to the file holding the private key for mutual TLS. If omitted, the + // default Mixer private key will be used. string private_key = 1; - // The path to the file holding client certificate for mtls. If omitted, the - // default mixer certificates will be used. + // The path to the file holding client certificate for mutual TLS. If omitted, the + // default Mixer certificates will be used. string client_certificate = 2; // The path to the file holding additional CA certificates that are needed to - // verify the presented adapter certificates. By default mixer should already + // verify the presented adapter certificates. By default Mixer should already // include Istio CA certificates and system certificates in cert pool. string ca_certificates = 3; diff --git a/policy/v1beta1/http_response.pb.go b/policy/v1beta1/http_response.pb.go index ec3d55e25f7..66955ad3b5d 100644 --- a/policy/v1beta1/http_response.pb.go +++ b/policy/v1beta1/http_response.pb.go @@ -3,23 +3,28 @@ package v1beta1 -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" - -import strconv "strconv" - -import strings "strings" -import reflect "reflect" -import sortkeys "github.com/gogo/protobuf/sortkeys" - -import io "io" +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + io "io" + math "math" + reflect "reflect" + strconv "strconv" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + // HTTP response codes. // For more details: http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml type HttpStatusCode int32 @@ -145,6 +150,7 @@ var HttpStatusCode_name = map[int32]string{ 510: "NotExtended", 511: "NetworkAuthenticationRequired", } + var HttpStatusCode_value = map[string]int32{ "Empty": 0, "Continue": 100, @@ -205,7 +211,9 @@ var HttpStatusCode_value = map[string]int32{ "NetworkAuthenticationRequired": 511, } -func (HttpStatusCode) EnumDescriptor() ([]byte, []int) { return fileDescriptorHttpResponse, []int{0} } +func (HttpStatusCode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_dffd274153c8a074, []int{0} +} // Direct HTTP response for a client-facing error message which can be attached // to an RPC error. @@ -215,12 +223,40 @@ type DirectHttpResponse struct { // HTTP response body. Body string `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` // Optional HTTP response headers. - Headers map[string]string `protobuf:"bytes,3,rep,name=headers" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Headers map[string]string `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *DirectHttpResponse) Reset() { *m = DirectHttpResponse{} } -func (*DirectHttpResponse) ProtoMessage() {} -func (*DirectHttpResponse) Descriptor() ([]byte, []int) { return fileDescriptorHttpResponse, []int{0} } +func (m *DirectHttpResponse) Reset() { *m = DirectHttpResponse{} } +func (*DirectHttpResponse) ProtoMessage() {} +func (*DirectHttpResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_dffd274153c8a074, []int{0} +} +func (m *DirectHttpResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DirectHttpResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DirectHttpResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *DirectHttpResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_DirectHttpResponse.Merge(m, src) +} +func (m *DirectHttpResponse) XXX_Size() int { + return m.Size() +} +func (m *DirectHttpResponse) XXX_DiscardUnknown() { + xxx_messageInfo_DirectHttpResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_DirectHttpResponse proto.InternalMessageInfo func (m *DirectHttpResponse) GetCode() HttpStatusCode { if m != nil { @@ -244,9 +280,83 @@ func (m *DirectHttpResponse) GetHeaders() map[string]string { } func init() { - proto.RegisterType((*DirectHttpResponse)(nil), "istio.policy.v1beta1.DirectHttpResponse") proto.RegisterEnum("istio.policy.v1beta1.HttpStatusCode", HttpStatusCode_name, HttpStatusCode_value) + proto.RegisterType((*DirectHttpResponse)(nil), "istio.policy.v1beta1.DirectHttpResponse") + proto.RegisterMapType((map[string]string)(nil), "istio.policy.v1beta1.DirectHttpResponse.HeadersEntry") +} + +func init() { proto.RegisterFile("policy/v1beta1/http_response.proto", fileDescriptor_dffd274153c8a074) } + +var fileDescriptor_dffd274153c8a074 = []byte{ + // 1042 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x55, 0xcb, 0x6f, 0x14, 0xc7, + 0x13, 0xde, 0xd9, 0xe6, 0xe5, 0xc6, 0x98, 0xa6, 0x31, 0x3f, 0xfc, 0x83, 0x64, 0x64, 0xa1, 0x1c, + 0x50, 0x0e, 0xb6, 0x20, 0x8a, 0x84, 0xb8, 0x19, 0x63, 0x83, 0x15, 0xef, 0xe2, 0xac, 0x77, 0x39, + 0xe4, 0x12, 0xb5, 0xa7, 0x6b, 0x77, 0x5b, 0xcc, 0x76, 0x0d, 0x3d, 0xb5, 0x0b, 0x93, 0x53, 0xfe, + 0x04, 0xf2, 0x7e, 0xbf, 0x0e, 0x49, 0x50, 0x04, 0x21, 0x51, 0x72, 0xc9, 0x7f, 0x40, 0xde, 0x3e, + 0x72, 0x0c, 0xcb, 0x25, 0xb7, 0x70, 0xc8, 0x3b, 0x51, 0x12, 0x75, 0xef, 0x43, 0x46, 0x21, 0xb7, + 0xe9, 0x9a, 0xfa, 0xaa, 0xbe, 0xfa, 0xbe, 0x9a, 0x69, 0x7e, 0x24, 0xc3, 0xd4, 0x24, 0xc5, 0x7c, + 0xef, 0xd8, 0x06, 0x90, 0x3a, 0x36, 0xdf, 0x26, 0xca, 0x9e, 0x74, 0x90, 0x67, 0x68, 0x73, 0x98, + 0xcb, 0x1c, 0x12, 0xca, 0x69, 0x93, 0x93, 0xc1, 0xb9, 0x41, 0xe6, 0xdc, 0x30, 0xf3, 0xc8, 0x0f, + 0x11, 0x97, 0xa7, 0x8d, 0x83, 0x84, 0xce, 0x12, 0x65, 0xb5, 0x21, 0x44, 0x9e, 0xe0, 0xdb, 0x12, + 0xd4, 0x30, 0x13, 0xcd, 0x46, 0x47, 0xa7, 0x8e, 0x3f, 0x34, 0x77, 0x3f, 0xec, 0x9c, 0x47, 0xac, + 0x93, 0xa2, 0x6e, 0xbe, 0x88, 0x1a, 0x6a, 0x01, 0x21, 0x25, 0xdf, 0xb6, 0x81, 0xba, 0x98, 0x29, + 0xcf, 0x46, 0x47, 0x27, 0x6a, 0xe1, 0x59, 0x9e, 0xe3, 0x3b, 0xdb, 0xa0, 0x34, 0xb8, 0x7c, 0x86, + 0xcd, 0xb2, 0xa3, 0xbb, 0x8f, 0x3f, 0x7a, 0xff, 0x82, 0xff, 0x26, 0x32, 0x77, 0x76, 0x80, 0x5b, + 0xb2, 0xe4, 0x8a, 0xda, 0xa8, 0xca, 0xa1, 0x93, 0x7c, 0x72, 0xeb, 0x0b, 0x29, 0x38, 0xbb, 0x00, + 0x45, 0x60, 0x3b, 0x51, 0xf3, 0x8f, 0x72, 0x9a, 0x6f, 0xef, 0xa9, 0xb4, 0x0b, 0x43, 0x1e, 0x83, + 0xc3, 0xc9, 0xf2, 0x89, 0xe8, 0xe1, 0xcf, 0x26, 0xf8, 0xd4, 0xbd, 0xcc, 0xe5, 0x04, 0xdf, 0xbe, + 0xd4, 0xc9, 0xa8, 0x10, 0x25, 0x39, 0xc9, 0x77, 0x2d, 0xa2, 0x25, 0x63, 0xbb, 0x20, 0xb4, 0xdc, + 0xc9, 0xcb, 0xe7, 0x1e, 0x13, 0x37, 0x23, 0x39, 0xc9, 0x77, 0x2e, 0x3a, 0x50, 0x04, 0x5a, 0x7c, + 0x1e, 0xc9, 0x3d, 0x7c, 0xd7, 0x42, 0x92, 0x40, 0xe6, 0x8f, 0x5f, 0x44, 0x72, 0x96, 0x1f, 0xae, + 0xa2, 0x5d, 0xe8, 0x52, 0x1b, 0x9d, 0x21, 0x45, 0xa6, 0x07, 0x2b, 0xb6, 0x89, 0xae, 0xa3, 0xc8, + 0xa0, 0x15, 0x5f, 0x46, 0x72, 0x8a, 0x4f, 0x54, 0xd1, 0xd7, 0x05, 0x4b, 0xe2, 0xab, 0x48, 0xee, + 0xe3, 0x93, 0x35, 0xc8, 0x81, 0x46, 0xa1, 0xaf, 0x23, 0xb9, 0x9f, 0x4f, 0xad, 0x29, 0x47, 0x46, + 0xa5, 0xa3, 0xe0, 0x37, 0x91, 0x14, 0x7c, 0x77, 0xa5, 0x9b, 0x92, 0x19, 0x70, 0x15, 0xdf, 0x46, + 0x72, 0x9a, 0xef, 0x5d, 0x48, 0x1d, 0x28, 0x5d, 0xd4, 0x20, 0x43, 0xe7, 0x19, 0x6c, 0x46, 0x72, + 0x37, 0xdf, 0xb1, 0x52, 0x69, 0xe4, 0xa0, 0x45, 0x3f, 0xa4, 0x04, 0x50, 0x96, 0xc2, 0x62, 0x1b, + 0x4d, 0x02, 0xb9, 0xb8, 0x56, 0x96, 0x07, 0xb8, 0xa8, 0x60, 0x0f, 0xf4, 0x1a, 0xb8, 0x8e, 0xb2, + 0x60, 0x29, 0x2d, 0xc4, 0xf5, 0xb2, 0xe4, 0x7c, 0xfb, 0x32, 0x76, 0xad, 0x16, 0x1f, 0x96, 0xfd, + 0x58, 0xeb, 0x00, 0xe7, 0xa8, 0x0d, 0x4e, 0xdc, 0x28, 0xfb, 0xe6, 0x55, 0xa4, 0x0a, 0x6a, 0xd3, + 0x34, 0xa0, 0xc5, 0x47, 0x21, 0xa1, 0x91, 0xc3, 0x9a, 0xc3, 0xcb, 0x85, 0xf8, 0xb8, 0x2c, 0xff, + 0xc7, 0xf7, 0xd5, 0xa1, 0x93, 0xa1, 0x53, 0xae, 0xa8, 0x81, 0x0e, 0xe6, 0x89, 0x4f, 0x42, 0x7c, + 0xdc, 0x65, 0x1c, 0xff, 0xb4, 0x2c, 0xf7, 0x72, 0x7e, 0x4a, 0xe9, 0x1a, 0x5c, 0xec, 0x42, 0x4e, + 0xe2, 0x0a, 0xf3, 0x32, 0x34, 0xac, 0x1a, 0xe8, 0xf6, 0x14, 0x68, 0xf1, 0x0c, 0xf3, 0xe4, 0xd7, + 0x54, 0xd1, 0x09, 0xc8, 0x8b, 0x5d, 0xe3, 0x40, 0x8b, 0x67, 0x99, 0xd7, 0x6f, 0x19, 0xdd, 0x86, + 0xd1, 0x1a, 0xac, 0x78, 0x8e, 0x79, 0x22, 0x55, 0xa4, 0x01, 0xf1, 0xe7, 0x59, 0x98, 0x0d, 0xa8, + 0x8d, 0xba, 0x8a, 0xb4, 0x90, 0xa6, 0x78, 0x09, 0xb4, 0x78, 0x81, 0x49, 0xc9, 0xf7, 0xf8, 0x40, + 0x70, 0x4a, 0x6d, 0xa4, 0x20, 0x5e, 0x64, 0xde, 0xab, 0xc0, 0xdf, 0xbb, 0x05, 0x96, 0x4c, 0x12, + 0x3c, 0x1a, 0xf7, 0x7a, 0x89, 0x79, 0x23, 0x86, 0x14, 0xeb, 0xa6, 0x03, 0xd8, 0x25, 0xf1, 0x72, + 0x68, 0xb8, 0x88, 0xb6, 0x99, 0x9a, 0x84, 0xc4, 0x2b, 0x4c, 0x4e, 0xf0, 0x6d, 0x67, 0xd0, 0x82, + 0x78, 0x35, 0xa4, 0xaf, 0x82, 0x6d, 0x51, 0x7b, 0x5c, 0xe3, 0x35, 0x26, 0x0f, 0x72, 0xb9, 0xe6, + 0x20, 0x41, 0xab, 0x8d, 0x2f, 0xbf, 0xac, 0x4c, 0x0a, 0x5a, 0xbc, 0x3e, 0x1a, 0x2f, 0x45, 0xa5, + 0xeb, 0x88, 0xab, 0xca, 0xb5, 0x40, 0xbc, 0xc1, 0xbc, 0x30, 0x8d, 0xda, 0x8a, 0x8f, 0xa0, 0x6d, + 0x89, 0x37, 0x99, 0xfc, 0x3f, 0x9f, 0x6e, 0xd8, 0xbc, 0x9b, 0x0d, 0x1c, 0xae, 0x80, 0x36, 0xaa, + 0x5e, 0x64, 0x20, 0xde, 0x62, 0x72, 0x86, 0xef, 0xaf, 0x29, 0xdb, 0x82, 0x2a, 0xd2, 0xba, 0x22, + 0x93, 0x37, 0x4d, 0x18, 0xed, 0x6d, 0xe6, 0x65, 0x5f, 0xba, 0x9c, 0x41, 0x42, 0x6a, 0x4b, 0xcf, + 0x77, 0x02, 0x99, 0x8a, 0xc9, 0x07, 0x36, 0xc0, 0x58, 0xfe, 0x77, 0x43, 0xa9, 0x86, 0xcd, 0x1c, + 0x26, 0x90, 0xe7, 0xbe, 0xc8, 0x92, 0x25, 0x43, 0x85, 0x78, 0x8f, 0xf9, 0x7d, 0x5a, 0xc5, 0xe4, + 0x02, 0x68, 0xf1, 0x7e, 0x50, 0x77, 0x50, 0xec, 0x34, 0x64, 0x60, 0x35, 0xd8, 0xa4, 0x10, 0x57, + 0xc3, 0x28, 0x8d, 0xac, 0xe5, 0x94, 0x86, 0xf1, 0xe4, 0x1f, 0x04, 0xe6, 0x5b, 0x27, 0x1f, 0xbf, + 0xba, 0x16, 0x00, 0x75, 0xc4, 0x8a, 0xb2, 0xc5, 0x90, 0x43, 0x2e, 0xae, 0x07, 0x43, 0x86, 0xc7, + 0xc1, 0x17, 0xbd, 0x6c, 0x20, 0xd5, 0xf9, 0x58, 0x9d, 0x1b, 0x81, 0xe6, 0x8a, 0x25, 0x70, 0x56, + 0xa5, 0xeb, 0xe0, 0x7a, 0xe0, 0x96, 0x9c, 0x43, 0x27, 0x7e, 0x0c, 0xda, 0x57, 0x91, 0x56, 0x3a, + 0x59, 0x0a, 0x7e, 0x63, 0x40, 0x8b, 0x9f, 0xd8, 0x70, 0xcb, 0xce, 0x28, 0x82, 0x4b, 0xaa, 0x10, + 0x3f, 0x87, 0xf9, 0x3d, 0xce, 0x24, 0xd0, 0xb0, 0xaa, 0xa7, 0x4c, 0x1a, 0x04, 0xfb, 0x25, 0xc0, + 0x87, 0x69, 0x23, 0xa7, 0x7f, 0x65, 0xf2, 0x01, 0x7e, 0xf0, 0x6c, 0xbd, 0xbe, 0x76, 0x1e, 0x5c, + 0x6e, 0xd0, 0x7a, 0x95, 0x47, 0x36, 0x88, 0xdf, 0x98, 0x3c, 0xc4, 0x0f, 0x9c, 0x57, 0xce, 0x28, + 0x4b, 0x0b, 0x69, 0x8e, 0x55, 0x68, 0x21, 0x19, 0x45, 0x90, 0x8b, 0xdf, 0x87, 0x3c, 0xf3, 0x6e, + 0xb3, 0x69, 0x12, 0x03, 0x96, 0xd6, 0x09, 0x9d, 0x6a, 0x81, 0xf8, 0x23, 0xec, 0xf9, 0x2a, 0x62, + 0x76, 0x1a, 0x28, 0x58, 0x20, 0xfe, 0x64, 0xc3, 0x8f, 0x6b, 0xe9, 0x32, 0x79, 0x45, 0xb5, 0xf8, + 0x8b, 0xc9, 0x23, 0xfc, 0xc1, 0x2a, 0xd0, 0x25, 0x74, 0x17, 0xfe, 0x63, 0x37, 0xff, 0x66, 0xa7, + 0x1e, 0xdf, 0xbc, 0x1d, 0x97, 0x6e, 0xdd, 0x8e, 0x4b, 0x77, 0x6f, 0xc7, 0xd1, 0xd3, 0xfd, 0x38, + 0xba, 0xda, 0x8f, 0xa3, 0x9b, 0xfd, 0x38, 0xda, 0xec, 0xc7, 0xd1, 0x77, 0xfd, 0x38, 0xfa, 0xbe, + 0x1f, 0x97, 0xee, 0xf6, 0xe3, 0xe8, 0xca, 0x9d, 0xb8, 0xb4, 0x79, 0x27, 0x2e, 0xdd, 0xba, 0x13, + 0x97, 0x9e, 0x38, 0x3c, 0xf8, 0xd9, 0x1a, 0x9c, 0x57, 0x99, 0x99, 0xbf, 0xf7, 0xaa, 0xd8, 0xd8, + 0x11, 0x6e, 0x87, 0x47, 0xfe, 0x09, 0x00, 0x00, 0xff, 0xff, 0xea, 0x47, 0xf8, 0xf5, 0x43, 0x06, + 0x00, 0x00, } + func (x HttpStatusCode) String() string { s, ok := HttpStatusCode_name[int32(x)] if ok { @@ -301,7 +411,7 @@ func (this *DirectHttpResponse) GoString() string { for k, _ := range this.Headers { keysForHeaders = append(keysForHeaders, k) } - sortkeys.Strings(keysForHeaders) + github_com_gogo_protobuf_sortkeys.Strings(keysForHeaders) mapStringForHeaders := "map[string]string{" for _, k := range keysForHeaders { mapStringForHeaders += fmt.Sprintf("%#v: %#v,", k, this.Headers[k]) @@ -377,6 +487,9 @@ func encodeVarintHttpResponse(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *DirectHttpResponse) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Code != 0 { @@ -418,7 +531,7 @@ func (this *DirectHttpResponse) String() string { for k, _ := range this.Headers { keysForHeaders = append(keysForHeaders, k) } - sortkeys.Strings(keysForHeaders) + github_com_gogo_protobuf_sortkeys.Strings(keysForHeaders) mapStringForHeaders := "map[string]string{" for _, k := range keysForHeaders { mapStringForHeaders += fmt.Sprintf("%v: %v,", k, this.Headers[k]) @@ -455,7 +568,7 @@ func (m *DirectHttpResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -483,7 +596,7 @@ func (m *DirectHttpResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Code |= (HttpStatusCode(b) & 0x7F) << shift + m.Code |= HttpStatusCode(b&0x7F) << shift if b < 0x80 { break } @@ -502,7 +615,7 @@ func (m *DirectHttpResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -512,6 +625,9 @@ func (m *DirectHttpResponse) Unmarshal(dAtA []byte) error { return ErrInvalidLengthHttpResponse } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthHttpResponse + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -531,7 +647,7 @@ func (m *DirectHttpResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -540,6 +656,9 @@ func (m *DirectHttpResponse) Unmarshal(dAtA []byte) error { return ErrInvalidLengthHttpResponse } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthHttpResponse + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -560,7 +679,7 @@ func (m *DirectHttpResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -577,7 +696,7 @@ func (m *DirectHttpResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -587,6 +706,9 @@ func (m *DirectHttpResponse) Unmarshal(dAtA []byte) error { return ErrInvalidLengthHttpResponse } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthHttpResponse + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -603,7 +725,7 @@ func (m *DirectHttpResponse) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -613,6 +735,9 @@ func (m *DirectHttpResponse) Unmarshal(dAtA []byte) error { return ErrInvalidLengthHttpResponse } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthHttpResponse + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -644,6 +769,9 @@ func (m *DirectHttpResponse) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthHttpResponse } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthHttpResponse + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -710,10 +838,13 @@ func skipHttpResponse(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthHttpResponse } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthHttpResponse + } return iNdEx, nil case 3: for { @@ -742,6 +873,9 @@ func skipHttpResponse(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthHttpResponse + } } return iNdEx, nil case 4: @@ -760,74 +894,3 @@ var ( ErrInvalidLengthHttpResponse = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowHttpResponse = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("policy/v1beta1/http_response.proto", fileDescriptorHttpResponse) } - -var fileDescriptorHttpResponse = []byte{ - // 1032 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x55, 0x4b, 0x8f, 0x1b, 0x45, - 0x10, 0xde, 0x71, 0xe7, 0xb5, 0x9d, 0xcd, 0xa6, 0xd3, 0xd9, 0x90, 0x25, 0x01, 0x6b, 0x15, 0x71, - 0x88, 0x38, 0x78, 0x95, 0x20, 0xa4, 0x28, 0xb7, 0xcd, 0xc6, 0x9b, 0x58, 0xac, 0x1d, 0xcb, 0x6b, - 0xe7, 0xc0, 0x05, 0xf5, 0x4e, 0x97, 0xed, 0x56, 0xc6, 0x5d, 0x93, 0x9e, 0xb2, 0x93, 0xe1, 0xc4, - 0x4f, 0x08, 0xef, 0xf7, 0xeb, 0x00, 0x44, 0x28, 0x21, 0x20, 0xb8, 0xf0, 0x0f, 0xc2, 0x3b, 0x47, - 0x8e, 0xc4, 0x5c, 0xb8, 0x91, 0x03, 0x6f, 0x10, 0xa0, 0x6e, 0x3f, 0xb4, 0x11, 0xe1, 0x36, 0x5d, - 0x53, 0x5f, 0xd5, 0x57, 0xdf, 0x57, 0x33, 0xcd, 0x8f, 0xa4, 0x98, 0x98, 0x38, 0x5f, 0x1e, 0x1c, - 0xdb, 0x04, 0x52, 0xc7, 0x96, 0xbb, 0x44, 0xe9, 0x13, 0x0e, 0xb2, 0x14, 0x6d, 0x06, 0xa5, 0xd4, - 0x21, 0xa1, 0x5c, 0x30, 0x19, 0x19, 0x2c, 0x8d, 0x32, 0x4b, 0xe3, 0xcc, 0x23, 0x3f, 0x46, 0x5c, - 0x9e, 0x36, 0x0e, 0x62, 0x3a, 0x4b, 0x94, 0x36, 0xc6, 0x10, 0x79, 0x82, 0x6f, 0x8b, 0x51, 0xc3, - 0x62, 0xb4, 0x14, 0x1d, 0x9d, 0x3f, 0xfe, 0x50, 0xe9, 0x5e, 0xd8, 0x92, 0x47, 0x6c, 0x90, 0xa2, - 0x7e, 0xb6, 0x8a, 0x1a, 0x1a, 0x01, 0x21, 0x25, 0xdf, 0xb6, 0x89, 0x3a, 0x5f, 0x2c, 0x2c, 0x45, - 0x47, 0x67, 0x1b, 0xe1, 0x59, 0x9e, 0xe3, 0x3b, 0xbb, 0xa0, 0x34, 0xb8, 0x6c, 0x91, 0x2d, 0xb1, - 0xa3, 0xbb, 0x8f, 0x3f, 0x7a, 0xef, 0x82, 0xff, 0x25, 0x52, 0x3a, 0x3b, 0xc2, 0x95, 0x2d, 0xb9, - 0xbc, 0x31, 0xa9, 0x72, 0xe8, 0x24, 0x9f, 0xdb, 0xfa, 0x42, 0x0a, 0xce, 0x2e, 0x40, 0x1e, 0xd8, - 0xce, 0x36, 0xfc, 0xa3, 0x5c, 0xe0, 0xdb, 0x07, 0x2a, 0xe9, 0xc3, 0x98, 0xc7, 0xe8, 0x70, 0xb2, - 0x70, 0x22, 0x7a, 0xf8, 0xd3, 0x59, 0x3e, 0x7f, 0x37, 0x73, 0x39, 0xcb, 0xb7, 0x97, 0x7b, 0x29, - 0xe5, 0x62, 0x46, 0xce, 0xf1, 0x5d, 0xab, 0x68, 0xc9, 0xd8, 0x3e, 0x08, 0x2d, 0x77, 0xf2, 0xc2, - 0xb9, 0xc7, 0xc4, 0xcd, 0x48, 0xce, 0xf1, 0x9d, 0xab, 0x0e, 0x14, 0x81, 0x16, 0x9f, 0x45, 0x72, - 0x0f, 0xdf, 0xb5, 0x12, 0xc7, 0x90, 0xfa, 0xe3, 0xe7, 0x91, 0x5c, 0xe2, 0x87, 0x6b, 0x68, 0x57, - 0xfa, 0xd4, 0x45, 0x67, 0x48, 0x91, 0x19, 0x40, 0xc5, 0xb6, 0xd1, 0xf5, 0x14, 0x19, 0xb4, 0xe2, - 0x8b, 0x48, 0xce, 0xf3, 0xd9, 0x1a, 0xfa, 0xba, 0x60, 0x49, 0x7c, 0x19, 0xc9, 0x7d, 0x7c, 0xae, - 0x01, 0x19, 0xd0, 0x24, 0xf4, 0x55, 0x24, 0xf7, 0xf3, 0xf9, 0xba, 0x72, 0x64, 0x54, 0x32, 0x09, - 0x7e, 0x1d, 0x49, 0xc1, 0x77, 0x57, 0xfb, 0x09, 0x99, 0x11, 0x57, 0xf1, 0x4d, 0x24, 0x17, 0xf8, - 0xde, 0x95, 0xc4, 0x81, 0xd2, 0x79, 0x03, 0x52, 0x74, 0x9e, 0xc1, 0xad, 0x48, 0xee, 0xe6, 0x3b, - 0x2a, 0xd5, 0x56, 0x06, 0x5a, 0x0c, 0x43, 0x4a, 0x00, 0xa5, 0x09, 0xac, 0x76, 0xd1, 0xc4, 0x90, - 0x89, 0x6b, 0x05, 0x79, 0x80, 0x8b, 0x2a, 0x0e, 0x40, 0xd7, 0xc1, 0xf5, 0x94, 0x05, 0x4b, 0x49, - 0x2e, 0xae, 0x17, 0x24, 0xe7, 0xdb, 0xd7, 0xb0, 0x6f, 0xb5, 0xf8, 0xa0, 0xe0, 0xc7, 0xda, 0x00, - 0x38, 0x47, 0x5d, 0x70, 0xe2, 0x46, 0xc1, 0x37, 0xaf, 0x21, 0x55, 0x51, 0x9b, 0xb6, 0x01, 0x2d, - 0x3e, 0x0c, 0x09, 0xad, 0x0c, 0xea, 0x0e, 0x2f, 0xe7, 0xe2, 0xa3, 0x82, 0xbc, 0x8f, 0xef, 0x6b, - 0x42, 0x2f, 0x45, 0xa7, 0x5c, 0xde, 0x00, 0x1d, 0xcc, 0x13, 0x1f, 0x87, 0xf8, 0xb4, 0xcb, 0x34, - 0xfe, 0x49, 0x41, 0xee, 0xe5, 0xfc, 0x94, 0xd2, 0x0d, 0xb8, 0xd8, 0x87, 0x8c, 0xc4, 0x15, 0xe6, - 0x65, 0x68, 0x59, 0x35, 0xd2, 0xed, 0x49, 0xd0, 0xe2, 0x69, 0xe6, 0xc9, 0xd7, 0x55, 0xde, 0x0b, - 0xc8, 0x8b, 0x7d, 0xe3, 0x40, 0x8b, 0x67, 0x98, 0xd7, 0x6f, 0x0d, 0xdd, 0xa6, 0xd1, 0x1a, 0xac, - 0x78, 0x96, 0x79, 0x22, 0x35, 0xa4, 0x11, 0xf1, 0xe7, 0x58, 0x98, 0x0d, 0xa8, 0x8b, 0xba, 0x86, - 0xb4, 0x92, 0x24, 0x78, 0x09, 0xb4, 0x78, 0x9e, 0x49, 0xc9, 0xf7, 0xf8, 0x40, 0x70, 0x4a, 0x6d, - 0x26, 0x20, 0x5e, 0x60, 0xde, 0xab, 0xc0, 0xdf, 0xbb, 0x05, 0x96, 0x4c, 0x1c, 0x3c, 0x9a, 0xf6, - 0x7a, 0x91, 0x79, 0x23, 0xc6, 0x14, 0x9b, 0xa6, 0x07, 0xd8, 0x27, 0xf1, 0x52, 0x68, 0xb8, 0x8a, - 0xb6, 0x9d, 0x98, 0x98, 0xc4, 0xcb, 0x4c, 0xce, 0xf2, 0x6d, 0x67, 0xd0, 0x82, 0x78, 0x25, 0xa4, - 0xaf, 0x83, 0xed, 0x50, 0x77, 0x5a, 0xe3, 0x55, 0x26, 0x0f, 0x72, 0x59, 0x77, 0x10, 0xa3, 0xd5, - 0xc6, 0x97, 0x5f, 0x53, 0x26, 0x01, 0x2d, 0x5e, 0x9b, 0x8c, 0x97, 0xa0, 0xd2, 0x4d, 0xc4, 0x75, - 0xe5, 0x3a, 0x20, 0x5e, 0x67, 0x5e, 0x98, 0x56, 0xa3, 0xe2, 0x23, 0x68, 0x3b, 0xe2, 0x0d, 0x26, - 0xef, 0xe7, 0x0b, 0x2d, 0x9b, 0xf5, 0xd3, 0x91, 0xc3, 0x55, 0xd0, 0x46, 0x35, 0xf3, 0x14, 0xc4, - 0x9b, 0x4c, 0x2e, 0xf2, 0xfd, 0x0d, 0x65, 0x3b, 0x50, 0x43, 0xda, 0x50, 0x64, 0xb2, 0xb6, 0x09, - 0xa3, 0xbd, 0xc5, 0xbc, 0xec, 0xe5, 0xcb, 0x29, 0xc4, 0xa4, 0xb6, 0xf4, 0x7c, 0x3b, 0x90, 0xa9, - 0x9a, 0x6c, 0x64, 0x03, 0x4c, 0xe5, 0x7f, 0x27, 0x94, 0x6a, 0xd9, 0xd4, 0x61, 0x0c, 0x59, 0xe6, - 0x8b, 0x94, 0x2d, 0x19, 0xca, 0xc5, 0xbb, 0xcc, 0xef, 0xd3, 0x3a, 0xc6, 0x17, 0x40, 0x8b, 0xf7, - 0x82, 0xba, 0xa3, 0x62, 0xa7, 0x21, 0x05, 0xab, 0xc1, 0xc6, 0xb9, 0xb8, 0x1a, 0x46, 0x69, 0xa5, - 0x1d, 0xa7, 0x34, 0x4c, 0x27, 0x7f, 0x3f, 0x30, 0xdf, 0x3a, 0xf9, 0xf4, 0xd5, 0xb5, 0x00, 0x68, - 0x22, 0x56, 0x95, 0xcd, 0xc7, 0x1c, 0x32, 0x71, 0x3d, 0x18, 0x32, 0x3e, 0x8e, 0xbe, 0xe8, 0x35, - 0x03, 0x89, 0xce, 0xa6, 0xea, 0xdc, 0x08, 0x34, 0x2b, 0x96, 0xc0, 0x59, 0x95, 0x6c, 0x80, 0x1b, - 0x80, 0x2b, 0x3b, 0x87, 0x4e, 0xfc, 0x14, 0xb4, 0xaf, 0x21, 0x55, 0x7a, 0x69, 0x02, 0x7e, 0x63, - 0x40, 0x8b, 0x9f, 0xd9, 0x78, 0xcb, 0xce, 0x28, 0x82, 0x4b, 0x2a, 0x17, 0xbf, 0x84, 0xf9, 0x3d, - 0xce, 0xc4, 0xd0, 0xb2, 0x6a, 0xa0, 0x4c, 0x12, 0x04, 0xfb, 0x35, 0xc0, 0xc7, 0x69, 0x13, 0xa7, - 0x7f, 0x63, 0xf2, 0x01, 0x7e, 0xf0, 0x6c, 0xb3, 0x59, 0x3f, 0x0f, 0x2e, 0x33, 0x68, 0xbd, 0xca, - 0x13, 0x1b, 0xc4, 0xef, 0x4c, 0x1e, 0xe2, 0x07, 0xce, 0x2b, 0x67, 0x94, 0xa5, 0x95, 0x24, 0xc3, - 0x1a, 0x74, 0x90, 0x8c, 0x22, 0xc8, 0xc4, 0x1f, 0x63, 0x9e, 0x59, 0xbf, 0xdd, 0x36, 0xb1, 0x01, - 0x4b, 0x1b, 0x84, 0x4e, 0x75, 0x40, 0xfc, 0x19, 0xf6, 0x7c, 0x1d, 0x31, 0x3d, 0x0d, 0x14, 0x2c, - 0x10, 0x7f, 0xb1, 0xf1, 0xc7, 0x55, 0xbe, 0x4c, 0x5e, 0x51, 0x2d, 0xfe, 0x66, 0xf2, 0x08, 0x7f, - 0xb0, 0x06, 0x74, 0x09, 0xdd, 0x85, 0xff, 0xd9, 0xcd, 0x7f, 0xd8, 0xa9, 0xca, 0xad, 0xdb, 0xc5, - 0x99, 0x6f, 0x6f, 0x17, 0x67, 0xee, 0xdc, 0x2e, 0x46, 0x4f, 0x0d, 0x8b, 0xd1, 0xd5, 0x61, 0x31, - 0xba, 0x39, 0x2c, 0x46, 0xb7, 0x86, 0xc5, 0xe8, 0xbb, 0x61, 0x31, 0xfa, 0x61, 0x58, 0x9c, 0xb9, - 0x33, 0x2c, 0x46, 0x57, 0xbe, 0x2f, 0xce, 0x3c, 0x7e, 0x78, 0xf4, 0x93, 0x35, 0xb8, 0xac, 0x52, - 0xb3, 0x7c, 0xf7, 0x15, 0xb1, 0xb9, 0x23, 0xdc, 0x0a, 0x8f, 0xfc, 0x1b, 0x00, 0x00, 0xff, 0xff, - 0xd9, 0x97, 0x1d, 0x7f, 0x3b, 0x06, 0x00, 0x00, -} diff --git a/policy/v1beta1/istio.policy.v1beta1.pb.html b/policy/v1beta1/istio.policy.v1beta1.pb.html index 945156d22ce..b5ad9f807d4 100644 --- a/policy/v1beta1/istio.policy.v1beta1.pb.html +++ b/policy/v1beta1/istio.policy.v1beta1.pb.html @@ -267,7 +267,7 @@

Connection

DNSName

-

An instance field of type DNSName denotes that the expression for the field must evalaute to +

An instance field of type DNSName denotes that the expression for the field must evaluate to ValueType.DNS_NAME

Objects of type DNSName are also passed to the adapters during request-time for the instance fields of @@ -336,7 +336,7 @@

DirectHttpResponse

Duration

-

An instance field of type Duration denotes that the expression for the field must evalaute to +

An instance field of type Duration denotes that the expression for the field must evaluate to ValueType.DURATION

Objects of type Duration are also passed to the adapters during request-time for the instance fields of @@ -365,7 +365,7 @@

Duration

EmailAddress

DO NOT USE !! Under Development -An instance field of type EmailAddress denotes that the expression for the field must evalaute to +An instance field of type EmailAddress denotes that the expression for the field must evaluate to ValueType.EMAIL_ADDRESS

Objects of type EmailAddress are also passed to the adapters during request-time for the instance fields of @@ -430,7 +430,7 @@

Handler

Each adapter implementation defines its own params proto.

In the following example we define a metrics handler for the prometheus adapter. -The example is in the form of a kubernetes resource: +The example is in the form of a Kubernetes resource: * The metadata.name is the name of the handler * The kind refers to the adapter name * The spec block represents adapter-specific configuration as well as the connection information

@@ -490,7 +490,7 @@

Handler

name string -

Required. Must be unique in the entire mixer configuration. Used by Actions +

Required. Must be unique in the entire Mixer configuration. Used by Actions to refer to this handler.

@@ -984,8 +984,8 @@

Mutual

@@ -993,8 +993,8 @@

Mutual

@@ -1003,7 +1003,7 @@

Mutual

@@ -1241,7 +1241,7 @@

Rule.HeaderOperationTemplate.Ope

TimeStamp

-

An instance field of type TimeStamp denotes that the expression for the field must evalaute to +

An instance field of type TimeStamp denotes that the expression for the field must evaluate to ValueType.TIMESTAMP

Objects of type TimeStamp are also passed to the adapters during request-time for the instance fields of @@ -1370,7 +1370,7 @@

Tls.AuthHeader

Uri

DO NOT USE !! Under Development -An instance field of type Uri denotes that the expression for the field must evalaute to +An instance field of type Uri denotes that the expression for the field must evaluate to ValueType.URI

Objects of type Uri are also passed to the adapters during request-time for the instance fields of @@ -1398,7 +1398,7 @@

Uri

Value

-

An instance field of type Value denotes that the expression for the field is of dynamic type and can evalaute to any +

An instance field of type Value denotes that the expression for the field is of dynamic type and can evaluate to any ValueType enum values. For example, when authoring an instance configuration for a template that has a field data of type istio.policy.v1beta1.Value, both of the following expressions are valid data: source.ip | ip("0.0.0.0"), data: request.id | ""; diff --git a/policy/v1beta1/type.pb.go b/policy/v1beta1/type.pb.go index c1a2ab10607..bf965feec4e 100644 --- a/policy/v1beta1/type.pb.go +++ b/policy/v1beta1/type.pb.go @@ -1,29 +1,34 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: policy/v1beta1/type.proto -package v1beta1 - -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import google_protobuf2 "github.com/gogo/protobuf/types" -import google_protobuf3 "github.com/gogo/protobuf/types" - -import bytes "bytes" +// Describes the rules used to configure Mixer's policy and telemetry features. -import strings "strings" -import reflect "reflect" - -import binary "encoding/binary" +package v1beta1 -import io "io" +import ( + bytes "bytes" + encoding_binary "encoding/binary" + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + types "github.com/gogo/protobuf/types" + io "io" + math "math" + reflect "reflect" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf -// An instance field of type Value denotes that the expression for the field is of dynamic type and can evalaute to any +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + +// An instance field of type Value denotes that the expression for the field is of dynamic type and can evaluate to any // [ValueType][istio.policy.v1beta1.ValueType] enum values. For example, when // authoring an instance configuration for a template that has a field `data` of type `istio.policy.v1beta1.Value`, // both of the following expressions are valid `data: source.ip | ip("0.0.0.0")`, `data: request.id | ""`; @@ -47,9 +52,37 @@ type Value struct { Value isValue_Value `protobuf_oneof:"value"` } -func (m *Value) Reset() { *m = Value{} } -func (*Value) ProtoMessage() {} -func (*Value) Descriptor() ([]byte, []int) { return fileDescriptorType, []int{0} } +func (m *Value) Reset() { *m = Value{} } +func (*Value) ProtoMessage() {} +func (*Value) Descriptor() ([]byte, []int) { + return fileDescriptor_81aa672910c4f44d, []int{0} +} +func (m *Value) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Value.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Value) XXX_Merge(src proto.Message) { + xxx_messageInfo_Value.Merge(m, src) +} +func (m *Value) XXX_Size() int { + return m.Size() +} +func (m *Value) XXX_DiscardUnknown() { + xxx_messageInfo_Value.DiscardUnknown(m) +} + +var xxx_messageInfo_Value proto.InternalMessageInfo type isValue_Value interface { isValue_Value() @@ -71,22 +104,22 @@ type Value_BoolValue struct { BoolValue bool `protobuf:"varint,4,opt,name=bool_value,json=boolValue,proto3,oneof"` } type Value_IpAddressValue struct { - IpAddressValue *IPAddress `protobuf:"bytes,5,opt,name=ip_address_value,json=ipAddressValue,oneof"` + IpAddressValue *IPAddress `protobuf:"bytes,5,opt,name=ip_address_value,json=ipAddressValue,proto3,oneof"` } type Value_TimestampValue struct { - TimestampValue *TimeStamp `protobuf:"bytes,6,opt,name=timestamp_value,json=timestampValue,oneof"` + TimestampValue *TimeStamp `protobuf:"bytes,6,opt,name=timestamp_value,json=timestampValue,proto3,oneof"` } type Value_DurationValue struct { - DurationValue *Duration `protobuf:"bytes,7,opt,name=duration_value,json=durationValue,oneof"` + DurationValue *Duration `protobuf:"bytes,7,opt,name=duration_value,json=durationValue,proto3,oneof"` } type Value_EmailAddressValue struct { - EmailAddressValue *EmailAddress `protobuf:"bytes,8,opt,name=email_address_value,json=emailAddressValue,oneof"` + EmailAddressValue *EmailAddress `protobuf:"bytes,8,opt,name=email_address_value,json=emailAddressValue,proto3,oneof"` } type Value_DnsNameValue struct { - DnsNameValue *DNSName `protobuf:"bytes,9,opt,name=dns_name_value,json=dnsNameValue,oneof"` + DnsNameValue *DNSName `protobuf:"bytes,9,opt,name=dns_name_value,json=dnsNameValue,proto3,oneof"` } type Value_UriValue struct { - UriValue *Uri `protobuf:"bytes,10,opt,name=uri_value,json=uriValue,oneof"` + UriValue *Uri `protobuf:"bytes,10,opt,name=uri_value,json=uriValue,proto3,oneof"` } func (*Value_StringValue) isValue_Value() {} @@ -339,46 +372,46 @@ func _Value_OneofSizer(msg proto.Message) (n int) { // value switch x := m.Value.(type) { case *Value_StringValue: - n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(len(x.StringValue))) n += len(x.StringValue) case *Value_Int64Value: - n += proto.SizeVarint(2<<3 | proto.WireVarint) + n += 1 // tag and wire n += proto.SizeVarint(uint64(x.Int64Value)) case *Value_DoubleValue: - n += proto.SizeVarint(3<<3 | proto.WireFixed64) + n += 1 // tag and wire n += 8 case *Value_BoolValue: - n += proto.SizeVarint(4<<3 | proto.WireVarint) + n += 1 // tag and wire n += 1 case *Value_IpAddressValue: s := proto.Size(x.IpAddressValue) - n += proto.SizeVarint(5<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Value_TimestampValue: s := proto.Size(x.TimestampValue) - n += proto.SizeVarint(6<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Value_DurationValue: s := proto.Size(x.DurationValue) - n += proto.SizeVarint(7<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Value_EmailAddressValue: s := proto.Size(x.EmailAddressValue) - n += proto.SizeVarint(8<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Value_DnsNameValue: s := proto.Size(x.DnsNameValue) - n += proto.SizeVarint(9<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case *Value_UriValue: s := proto.Size(x.UriValue) - n += proto.SizeVarint(10<<3 | proto.WireBytes) + n += 1 // tag and wire n += proto.SizeVarint(uint64(s)) n += s case nil: @@ -388,7 +421,7 @@ func _Value_OneofSizer(msg proto.Message) (n int) { return n } -// An instance field of type IPAddress denotes that the expression for the field must evalaute to +// An instance field of type IPAddress denotes that the expression for the field must evaluate to // [ValueType.IP_ADDRESS][istio.policy.v1beta1.ValueType.IP_ADDRESS] // // Objects of type IPAddress are also passed to the adapters during request-time for the instance fields of @@ -398,9 +431,37 @@ type IPAddress struct { Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` } -func (m *IPAddress) Reset() { *m = IPAddress{} } -func (*IPAddress) ProtoMessage() {} -func (*IPAddress) Descriptor() ([]byte, []int) { return fileDescriptorType, []int{1} } +func (m *IPAddress) Reset() { *m = IPAddress{} } +func (*IPAddress) ProtoMessage() {} +func (*IPAddress) Descriptor() ([]byte, []int) { + return fileDescriptor_81aa672910c4f44d, []int{1} +} +func (m *IPAddress) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *IPAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_IPAddress.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *IPAddress) XXX_Merge(src proto.Message) { + xxx_messageInfo_IPAddress.Merge(m, src) +} +func (m *IPAddress) XXX_Size() int { + return m.Size() +} +func (m *IPAddress) XXX_DiscardUnknown() { + xxx_messageInfo_IPAddress.DiscardUnknown(m) +} + +var xxx_messageInfo_IPAddress proto.InternalMessageInfo func (m *IPAddress) GetValue() []byte { if m != nil { @@ -409,49 +470,105 @@ func (m *IPAddress) GetValue() []byte { return nil } -// An instance field of type Duration denotes that the expression for the field must evalaute to +// An instance field of type Duration denotes that the expression for the field must evaluate to // [ValueType.DURATION][istio.policy.v1beta1.ValueType.DURATION] // // Objects of type Duration are also passed to the adapters during request-time for the instance fields of // type Duration type Duration struct { // Duration encoded as google.protobuf.Duration. - Value *google_protobuf2.Duration `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"` + Value *types.Duration `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (m *Duration) Reset() { *m = Duration{} } +func (*Duration) ProtoMessage() {} +func (*Duration) Descriptor() ([]byte, []int) { + return fileDescriptor_81aa672910c4f44d, []int{2} +} +func (m *Duration) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Duration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Duration.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Duration) XXX_Merge(src proto.Message) { + xxx_messageInfo_Duration.Merge(m, src) +} +func (m *Duration) XXX_Size() int { + return m.Size() +} +func (m *Duration) XXX_DiscardUnknown() { + xxx_messageInfo_Duration.DiscardUnknown(m) } -func (m *Duration) Reset() { *m = Duration{} } -func (*Duration) ProtoMessage() {} -func (*Duration) Descriptor() ([]byte, []int) { return fileDescriptorType, []int{2} } +var xxx_messageInfo_Duration proto.InternalMessageInfo -func (m *Duration) GetValue() *google_protobuf2.Duration { +func (m *Duration) GetValue() *types.Duration { if m != nil { return m.Value } return nil } -// An instance field of type TimeStamp denotes that the expression for the field must evalaute to +// An instance field of type TimeStamp denotes that the expression for the field must evaluate to // [ValueType.TIMESTAMP][istio.policy.v1beta1.ValueType.TIMESTAMP] // // Objects of type TimeStamp are also passed to the adapters during request-time for the instance fields of // type TimeStamp type TimeStamp struct { // TimeStamp encoded as google.protobuf.Timestamp. - Value *google_protobuf3.Timestamp `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"` + Value *types.Timestamp `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` } -func (m *TimeStamp) Reset() { *m = TimeStamp{} } -func (*TimeStamp) ProtoMessage() {} -func (*TimeStamp) Descriptor() ([]byte, []int) { return fileDescriptorType, []int{3} } +func (m *TimeStamp) Reset() { *m = TimeStamp{} } +func (*TimeStamp) ProtoMessage() {} +func (*TimeStamp) Descriptor() ([]byte, []int) { + return fileDescriptor_81aa672910c4f44d, []int{3} +} +func (m *TimeStamp) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TimeStamp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TimeStamp.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *TimeStamp) XXX_Merge(src proto.Message) { + xxx_messageInfo_TimeStamp.Merge(m, src) +} +func (m *TimeStamp) XXX_Size() int { + return m.Size() +} +func (m *TimeStamp) XXX_DiscardUnknown() { + xxx_messageInfo_TimeStamp.DiscardUnknown(m) +} -func (m *TimeStamp) GetValue() *google_protobuf3.Timestamp { +var xxx_messageInfo_TimeStamp proto.InternalMessageInfo + +func (m *TimeStamp) GetValue() *types.Timestamp { if m != nil { return m.Value } return nil } -// An instance field of type DNSName denotes that the expression for the field must evalaute to +// An instance field of type DNSName denotes that the expression for the field must evaluate to // [ValueType.DNS_NAME][istio.policy.v1beta1.ValueType.DNS_NAME] // // Objects of type DNSName are also passed to the adapters during request-time for the instance fields of @@ -461,9 +578,37 @@ type DNSName struct { Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` } -func (m *DNSName) Reset() { *m = DNSName{} } -func (*DNSName) ProtoMessage() {} -func (*DNSName) Descriptor() ([]byte, []int) { return fileDescriptorType, []int{4} } +func (m *DNSName) Reset() { *m = DNSName{} } +func (*DNSName) ProtoMessage() {} +func (*DNSName) Descriptor() ([]byte, []int) { + return fileDescriptor_81aa672910c4f44d, []int{4} +} +func (m *DNSName) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DNSName) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DNSName.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *DNSName) XXX_Merge(src proto.Message) { + xxx_messageInfo_DNSName.Merge(m, src) +} +func (m *DNSName) XXX_Size() int { + return m.Size() +} +func (m *DNSName) XXX_DiscardUnknown() { + xxx_messageInfo_DNSName.DiscardUnknown(m) +} + +var xxx_messageInfo_DNSName proto.InternalMessageInfo func (m *DNSName) GetValue() string { if m != nil { @@ -473,7 +618,7 @@ func (m *DNSName) GetValue() string { } // DO NOT USE !! Under Development -// An instance field of type EmailAddress denotes that the expression for the field must evalaute to +// An instance field of type EmailAddress denotes that the expression for the field must evaluate to // [ValueType.EMAIL_ADDRESS][istio.policy.v1beta1.ValueType.EMAIL_ADDRESS] // // Objects of type EmailAddress are also passed to the adapters during request-time for the instance fields of @@ -483,9 +628,37 @@ type EmailAddress struct { Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` } -func (m *EmailAddress) Reset() { *m = EmailAddress{} } -func (*EmailAddress) ProtoMessage() {} -func (*EmailAddress) Descriptor() ([]byte, []int) { return fileDescriptorType, []int{5} } +func (m *EmailAddress) Reset() { *m = EmailAddress{} } +func (*EmailAddress) ProtoMessage() {} +func (*EmailAddress) Descriptor() ([]byte, []int) { + return fileDescriptor_81aa672910c4f44d, []int{5} +} +func (m *EmailAddress) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EmailAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_EmailAddress.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *EmailAddress) XXX_Merge(src proto.Message) { + xxx_messageInfo_EmailAddress.Merge(m, src) +} +func (m *EmailAddress) XXX_Size() int { + return m.Size() +} +func (m *EmailAddress) XXX_DiscardUnknown() { + xxx_messageInfo_EmailAddress.DiscardUnknown(m) +} + +var xxx_messageInfo_EmailAddress proto.InternalMessageInfo func (m *EmailAddress) GetValue() string { if m != nil { @@ -495,7 +668,7 @@ func (m *EmailAddress) GetValue() string { } // DO NOT USE !! Under Development -// An instance field of type Uri denotes that the expression for the field must evalaute to +// An instance field of type Uri denotes that the expression for the field must evaluate to // [ValueType.URI][istio.policy.v1beta1.ValueType.URI] // // Objects of type Uri are also passed to the adapters during request-time for the instance fields of @@ -505,9 +678,37 @@ type Uri struct { Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` } -func (m *Uri) Reset() { *m = Uri{} } -func (*Uri) ProtoMessage() {} -func (*Uri) Descriptor() ([]byte, []int) { return fileDescriptorType, []int{6} } +func (m *Uri) Reset() { *m = Uri{} } +func (*Uri) ProtoMessage() {} +func (*Uri) Descriptor() ([]byte, []int) { + return fileDescriptor_81aa672910c4f44d, []int{6} +} +func (m *Uri) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Uri) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Uri.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Uri) XXX_Merge(src proto.Message) { + xxx_messageInfo_Uri.Merge(m, src) +} +func (m *Uri) XXX_Size() int { + return m.Size() +} +func (m *Uri) XXX_DiscardUnknown() { + xxx_messageInfo_Uri.DiscardUnknown(m) +} + +var xxx_messageInfo_Uri proto.InternalMessageInfo func (m *Uri) GetValue() string { if m != nil { @@ -525,6 +726,46 @@ func init() { proto.RegisterType((*EmailAddress)(nil), "istio.policy.v1beta1.EmailAddress") proto.RegisterType((*Uri)(nil), "istio.policy.v1beta1.Uri") } + +func init() { proto.RegisterFile("policy/v1beta1/type.proto", fileDescriptor_81aa672910c4f44d) } + +var fileDescriptor_81aa672910c4f44d = []byte{ + // 524 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x94, 0x4f, 0x6f, 0xd3, 0x3e, + 0x18, 0xc7, 0xed, 0x5f, 0xd7, 0xb5, 0x79, 0xda, 0x5f, 0x81, 0xb2, 0x03, 0xeb, 0x84, 0x9b, 0x15, + 0x0e, 0x39, 0x25, 0x0c, 0x10, 0x42, 0x42, 0x1c, 0x98, 0x98, 0x08, 0x20, 0x4d, 0x90, 0x75, 0x1c, + 0xb8, 0x54, 0x09, 0x31, 0x95, 0xa5, 0x24, 0x8e, 0xf2, 0x67, 0xd2, 0x6e, 0xbc, 0x04, 0x5e, 0x06, + 0x2f, 0x85, 0x63, 0x6f, 0xec, 0x48, 0xd3, 0x0b, 0xc7, 0xbd, 0x04, 0x14, 0xdb, 0x09, 0xed, 0xc8, + 0xb8, 0xd5, 0x8f, 0x3f, 0xdf, 0x4f, 0xfd, 0x3c, 0xb6, 0x02, 0xbb, 0x31, 0x0f, 0xd8, 0xa7, 0x73, + 0xeb, 0xec, 0xc0, 0xa3, 0x99, 0x7b, 0x60, 0x65, 0xe7, 0x31, 0x35, 0xe3, 0x84, 0x67, 0x7c, 0xb8, + 0xc3, 0xd2, 0x8c, 0x71, 0x53, 0x02, 0xa6, 0x02, 0x46, 0x64, 0xce, 0xf9, 0x3c, 0xa0, 0x96, 0x60, + 0xbc, 0xfc, 0xb3, 0xe5, 0xe7, 0x89, 0x9b, 0x31, 0x1e, 0xc9, 0xd4, 0x68, 0x7c, 0x75, 0x3f, 0x63, + 0x21, 0x4d, 0x33, 0x37, 0x8c, 0x25, 0x30, 0xf9, 0xb1, 0x05, 0xed, 0x0f, 0x6e, 0x90, 0xd3, 0xe1, + 0x3d, 0xe8, 0xa7, 0x59, 0xc2, 0xa2, 0xf9, 0xec, 0xac, 0x5c, 0xdf, 0xc1, 0x3a, 0x36, 0x34, 0x1b, + 0x39, 0x3d, 0x59, 0x95, 0xd0, 0x3e, 0xf4, 0x58, 0x94, 0x3d, 0x79, 0xac, 0x98, 0xff, 0x74, 0x6c, + 0xb4, 0x6c, 0xe4, 0x80, 0x28, 0xd6, 0x1e, 0x9f, 0xe7, 0x5e, 0x40, 0x15, 0xd3, 0xd2, 0xb1, 0x81, + 0x4b, 0x8f, 0xac, 0x4a, 0x68, 0x0c, 0xe0, 0x71, 0x1e, 0x28, 0x64, 0x4b, 0xc7, 0x46, 0xd7, 0x46, + 0x8e, 0x56, 0xd6, 0x24, 0xf0, 0x16, 0x6e, 0xb2, 0x78, 0xe6, 0xfa, 0x7e, 0x42, 0xd3, 0x54, 0x61, + 0x6d, 0x1d, 0x1b, 0xbd, 0x87, 0x63, 0xb3, 0x69, 0x12, 0xe6, 0xeb, 0x77, 0x2f, 0x24, 0x6c, 0x23, + 0x67, 0xc0, 0x62, 0xb5, 0x90, 0xb2, 0x37, 0x70, 0xa3, 0xee, 0x5b, 0xb9, 0xb6, 0xff, 0xe5, 0x9a, + 0xb2, 0x90, 0x9e, 0x94, 0x70, 0xe9, 0xaa, 0x93, 0xd2, 0xf5, 0x0a, 0x06, 0xd5, 0x8c, 0x95, 0xaa, + 0x23, 0x54, 0xa4, 0x59, 0xf5, 0x52, 0xb1, 0x36, 0x72, 0xfe, 0xaf, 0x72, 0x52, 0x34, 0x85, 0xdb, + 0x34, 0x74, 0x59, 0x70, 0xa5, 0xc9, 0xae, 0xb0, 0x4d, 0x9a, 0x6d, 0x47, 0x65, 0xe0, 0x4f, 0x9f, + 0xb7, 0xe8, 0xda, 0x5a, 0x5a, 0x8f, 0x60, 0xe0, 0x47, 0xe9, 0x2c, 0x72, 0xc3, 0x6a, 0xfe, 0x9a, + 0x10, 0xde, 0xbd, 0xe6, 0x78, 0xc7, 0x27, 0xc7, 0x6e, 0x48, 0x6d, 0xe4, 0xf4, 0xfd, 0x28, 0x2d, + 0x7f, 0x4a, 0xcd, 0x53, 0xd0, 0xf2, 0x84, 0x29, 0x03, 0x08, 0xc3, 0x6e, 0xb3, 0xe1, 0x34, 0x61, + 0x36, 0x72, 0xba, 0x79, 0xc2, 0x44, 0xf2, 0xb0, 0x03, 0x6d, 0x91, 0x9a, 0xec, 0x83, 0x56, 0xdf, + 0xc9, 0x70, 0x47, 0x55, 0xc5, 0xab, 0xea, 0x3b, 0x0a, 0x79, 0x06, 0xdd, 0x6a, 0x3e, 0x43, 0x6b, + 0x9d, 0x28, 0xff, 0x4d, 0xbe, 0x5c, 0xb3, 0x7a, 0xb9, 0xf5, 0x24, 0xab, 0xf0, 0x73, 0xd0, 0xea, + 0x7b, 0x1a, 0x3e, 0xd8, 0x4c, 0x8f, 0xfe, 0x4a, 0x4f, 0xab, 0x5b, 0xac, 0xe2, 0x63, 0xe8, 0xa8, + 0xe6, 0x37, 0x0f, 0xa7, 0x55, 0xc0, 0x7d, 0xe8, 0xaf, 0x8f, 0xfb, 0x1a, 0x6a, 0x0f, 0x5a, 0xa7, + 0x09, 0x6b, 0xde, 0x3c, 0x7c, 0xbf, 0x58, 0x12, 0x74, 0xb1, 0x24, 0xe8, 0x72, 0x49, 0xf0, 0x97, + 0x82, 0xe0, 0x6f, 0x05, 0xc1, 0xdf, 0x0b, 0x82, 0x17, 0x05, 0xc1, 0x3f, 0x0b, 0x82, 0x7f, 0x15, + 0x04, 0x5d, 0x16, 0x04, 0x7f, 0x5d, 0x11, 0xb4, 0x58, 0x11, 0x74, 0xb1, 0x22, 0xe8, 0xe3, 0x9e, + 0x9c, 0x33, 0xe3, 0x96, 0x1b, 0x33, 0x6b, 0xf3, 0x8b, 0xe0, 0x6d, 0x8b, 0x8e, 0x1e, 0xfd, 0x0e, + 0x00, 0x00, 0xff, 0xff, 0x61, 0x78, 0xcb, 0x26, 0x2a, 0x04, 0x00, 0x00, +} + func (this *Value) Equal(that interface{}) bool { if that == nil { return this == nil @@ -1147,7 +1388,7 @@ func (m *Value_DoubleValue) MarshalTo(dAtA []byte) (int, error) { i := 0 dAtA[i] = 0x19 i++ - binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.DoubleValue)))) + encoding_binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.DoubleValue)))) i += 8 return i, nil } @@ -1409,6 +1650,9 @@ func encodeVarintType(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *Value) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Value != nil { @@ -1418,6 +1662,9 @@ func (m *Value) Size() (n int) { } func (m *Value_StringValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.StringValue) @@ -1425,24 +1672,36 @@ func (m *Value_StringValue) Size() (n int) { return n } func (m *Value_Int64Value) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l n += 1 + sovType(uint64(m.Int64Value)) return n } func (m *Value_DoubleValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l n += 9 return n } func (m *Value_BoolValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l n += 2 return n } func (m *Value_IpAddressValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.IpAddressValue != nil { @@ -1452,6 +1711,9 @@ func (m *Value_IpAddressValue) Size() (n int) { return n } func (m *Value_TimestampValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.TimestampValue != nil { @@ -1461,6 +1723,9 @@ func (m *Value_TimestampValue) Size() (n int) { return n } func (m *Value_DurationValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.DurationValue != nil { @@ -1470,6 +1735,9 @@ func (m *Value_DurationValue) Size() (n int) { return n } func (m *Value_EmailAddressValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.EmailAddressValue != nil { @@ -1479,6 +1747,9 @@ func (m *Value_EmailAddressValue) Size() (n int) { return n } func (m *Value_DnsNameValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.DnsNameValue != nil { @@ -1488,6 +1759,9 @@ func (m *Value_DnsNameValue) Size() (n int) { return n } func (m *Value_UriValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.UriValue != nil { @@ -1497,6 +1771,9 @@ func (m *Value_UriValue) Size() (n int) { return n } func (m *IPAddress) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Value) @@ -1507,6 +1784,9 @@ func (m *IPAddress) Size() (n int) { } func (m *Duration) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Value != nil { @@ -1517,6 +1797,9 @@ func (m *Duration) Size() (n int) { } func (m *TimeStamp) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Value != nil { @@ -1527,6 +1810,9 @@ func (m *TimeStamp) Size() (n int) { } func (m *DNSName) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Value) @@ -1537,6 +1823,9 @@ func (m *DNSName) Size() (n int) { } func (m *EmailAddress) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Value) @@ -1547,6 +1836,9 @@ func (m *EmailAddress) Size() (n int) { } func (m *Uri) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Value) @@ -1694,7 +1986,7 @@ func (this *Duration) String() string { return "nil" } s := strings.Join([]string{`&Duration{`, - `Value:` + strings.Replace(fmt.Sprintf("%v", this.Value), "Duration", "google_protobuf2.Duration", 1) + `,`, + `Value:` + strings.Replace(fmt.Sprintf("%v", this.Value), "Duration", "types.Duration", 1) + `,`, `}`, }, "") return s @@ -1704,7 +1996,7 @@ func (this *TimeStamp) String() string { return "nil" } s := strings.Join([]string{`&TimeStamp{`, - `Value:` + strings.Replace(fmt.Sprintf("%v", this.Value), "Timestamp", "google_protobuf3.Timestamp", 1) + `,`, + `Value:` + strings.Replace(fmt.Sprintf("%v", this.Value), "Timestamp", "types.Timestamp", 1) + `,`, `}`, }, "") return s @@ -1762,7 +2054,7 @@ func (m *Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1790,7 +2082,7 @@ func (m *Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1800,6 +2092,9 @@ func (m *Value) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1819,7 +2114,7 @@ func (m *Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int64(b) & 0x7F) << shift + v |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -1833,7 +2128,7 @@ func (m *Value) Unmarshal(dAtA []byte) error { if (iNdEx + 8) > l { return io.ErrUnexpectedEOF } - v = uint64(binary.LittleEndian.Uint64(dAtA[iNdEx:])) + v = uint64(encoding_binary.LittleEndian.Uint64(dAtA[iNdEx:])) iNdEx += 8 m.Value = &Value_DoubleValue{float64(math.Float64frombits(v))} case 4: @@ -1850,7 +2145,7 @@ func (m *Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1871,7 +2166,7 @@ func (m *Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1880,6 +2175,9 @@ func (m *Value) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1903,7 +2201,7 @@ func (m *Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1912,6 +2210,9 @@ func (m *Value) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1935,7 +2236,7 @@ func (m *Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1944,6 +2245,9 @@ func (m *Value) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1967,7 +2271,7 @@ func (m *Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1976,6 +2280,9 @@ func (m *Value) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1999,7 +2306,7 @@ func (m *Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2008,6 +2315,9 @@ func (m *Value) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2031,7 +2341,7 @@ func (m *Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2040,6 +2350,9 @@ func (m *Value) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2058,6 +2371,9 @@ func (m *Value) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthType } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthType + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2085,7 +2401,7 @@ func (m *IPAddress) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2113,7 +2429,7 @@ func (m *IPAddress) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= (int(b) & 0x7F) << shift + byteLen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2122,6 +2438,9 @@ func (m *IPAddress) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2139,6 +2458,9 @@ func (m *IPAddress) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthType } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthType + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2166,7 +2488,7 @@ func (m *Duration) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2194,7 +2516,7 @@ func (m *Duration) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2203,11 +2525,14 @@ func (m *Duration) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } if m.Value == nil { - m.Value = &google_protobuf2.Duration{} + m.Value = &types.Duration{} } if err := m.Value.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -2222,6 +2547,9 @@ func (m *Duration) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthType } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthType + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2249,7 +2577,7 @@ func (m *TimeStamp) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2277,7 +2605,7 @@ func (m *TimeStamp) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2286,11 +2614,14 @@ func (m *TimeStamp) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } if m.Value == nil { - m.Value = &google_protobuf3.Timestamp{} + m.Value = &types.Timestamp{} } if err := m.Value.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -2305,6 +2636,9 @@ func (m *TimeStamp) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthType } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthType + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2332,7 +2666,7 @@ func (m *DNSName) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2360,7 +2694,7 @@ func (m *DNSName) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2370,6 +2704,9 @@ func (m *DNSName) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2384,6 +2721,9 @@ func (m *DNSName) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthType } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthType + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2411,7 +2751,7 @@ func (m *EmailAddress) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2439,7 +2779,7 @@ func (m *EmailAddress) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2449,6 +2789,9 @@ func (m *EmailAddress) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2463,6 +2806,9 @@ func (m *EmailAddress) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthType } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthType + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2490,7 +2836,7 @@ func (m *Uri) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2518,7 +2864,7 @@ func (m *Uri) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2528,6 +2874,9 @@ func (m *Uri) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2542,6 +2891,9 @@ func (m *Uri) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthType } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthType + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2608,10 +2960,13 @@ func skipType(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthType } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthType + } return iNdEx, nil case 3: for { @@ -2640,6 +2995,9 @@ func skipType(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthType + } } return iNdEx, nil case 4: @@ -2658,42 +3016,3 @@ var ( ErrInvalidLengthType = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowType = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("policy/v1beta1/type.proto", fileDescriptorType) } - -var fileDescriptorType = []byte{ - // 516 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x94, 0x4f, 0x6f, 0xd3, 0x30, - 0x18, 0x87, 0x6d, 0xba, 0xae, 0xcd, 0xdb, 0x52, 0x20, 0xec, 0xc0, 0x3a, 0xe1, 0x66, 0x85, 0x43, - 0x4e, 0x09, 0x03, 0x84, 0x90, 0x10, 0x07, 0x26, 0x26, 0x32, 0x90, 0x26, 0x94, 0x75, 0x1c, 0xb8, - 0x54, 0x09, 0x31, 0x95, 0xa5, 0x24, 0x8e, 0xf2, 0x67, 0xd2, 0x6e, 0x7c, 0x04, 0x3e, 0x06, 0x1f, - 0x85, 0xe3, 0x6e, 0x70, 0xa4, 0xe1, 0xc2, 0x71, 0x1f, 0x01, 0xc5, 0x76, 0x42, 0x3b, 0xb2, 0xdd, - 0xea, 0xd7, 0xcf, 0xef, 0xa9, 0xdf, 0xd7, 0x56, 0x60, 0x3b, 0xe1, 0x21, 0xfb, 0x74, 0x66, 0x9f, - 0xee, 0xf9, 0x34, 0xf7, 0xf6, 0xec, 0xfc, 0x2c, 0xa1, 0x56, 0x92, 0xf2, 0x9c, 0xeb, 0x5b, 0x2c, - 0xcb, 0x19, 0xb7, 0x24, 0x60, 0x29, 0x60, 0x4c, 0x16, 0x9c, 0x2f, 0x42, 0x6a, 0x0b, 0xc6, 0x2f, - 0x3e, 0xdb, 0x41, 0x91, 0x7a, 0x39, 0xe3, 0xb1, 0x4c, 0x8d, 0x27, 0x97, 0xf7, 0x73, 0x16, 0xd1, - 0x2c, 0xf7, 0xa2, 0x44, 0x02, 0xd3, 0x1f, 0x1b, 0xd0, 0xfd, 0xe0, 0x85, 0x05, 0xd5, 0x1f, 0xc0, - 0x30, 0xcb, 0x53, 0x16, 0x2f, 0xe6, 0xa7, 0xd5, 0xfa, 0x1e, 0x36, 0xb0, 0xa9, 0x39, 0xc8, 0x1d, - 0xc8, 0xaa, 0x84, 0x76, 0x61, 0xc0, 0xe2, 0xfc, 0xd9, 0x53, 0xc5, 0xdc, 0x30, 0xb0, 0xd9, 0x71, - 0x90, 0x0b, 0xa2, 0xd8, 0x78, 0x02, 0x5e, 0xf8, 0x21, 0x55, 0x4c, 0xc7, 0xc0, 0x26, 0xae, 0x3c, - 0xb2, 0x2a, 0xa1, 0x09, 0x80, 0xcf, 0x79, 0xa8, 0x90, 0x0d, 0x03, 0x9b, 0x7d, 0x07, 0xb9, 0x5a, - 0x55, 0x93, 0xc0, 0x3b, 0xb8, 0xcd, 0x92, 0xb9, 0x17, 0x04, 0x29, 0xcd, 0x32, 0x85, 0x75, 0x0d, - 0x6c, 0x0e, 0x1e, 0x4f, 0xac, 0xb6, 0x49, 0x58, 0x87, 0xef, 0x5f, 0x49, 0xd8, 0x41, 0xee, 0x88, - 0x25, 0x6a, 0x21, 0x65, 0x6f, 0xe1, 0x56, 0xd3, 0xb7, 0x72, 0x6d, 0x5e, 0xe7, 0x9a, 0xb1, 0x88, - 0x1e, 0x57, 0x70, 0xe5, 0x6a, 0x92, 0xd2, 0xf5, 0x06, 0x46, 0xf5, 0x8c, 0x95, 0xaa, 0x27, 0x54, - 0xa4, 0x5d, 0xf5, 0x5a, 0xb1, 0x0e, 0x72, 0x6f, 0xd6, 0x39, 0x29, 0x9a, 0xc1, 0x5d, 0x1a, 0x79, - 0x2c, 0xbc, 0xd4, 0x64, 0x5f, 0xd8, 0xa6, 0xed, 0xb6, 0x83, 0x2a, 0xf0, 0xaf, 0xcf, 0x3b, 0x74, - 0x65, 0x2d, 0xad, 0x07, 0x30, 0x0a, 0xe2, 0x6c, 0x1e, 0x7b, 0x51, 0x3d, 0x7f, 0x4d, 0x08, 0xef, - 0x5f, 0x71, 0xbc, 0xa3, 0xe3, 0x23, 0x2f, 0xa2, 0x0e, 0x72, 0x87, 0x41, 0x9c, 0x55, 0x3f, 0xa5, - 0xe6, 0x39, 0x68, 0x45, 0xca, 0x94, 0x01, 0x84, 0x61, 0xbb, 0xdd, 0x70, 0x92, 0x32, 0x07, 0xb9, - 0xfd, 0x22, 0x65, 0x22, 0xb9, 0xdf, 0x83, 0xae, 0x48, 0x4d, 0x77, 0x41, 0x6b, 0xee, 0x44, 0xdf, - 0x52, 0x55, 0xf1, 0xaa, 0x86, 0xae, 0x42, 0x5e, 0x40, 0xbf, 0x9e, 0x8f, 0x6e, 0xaf, 0x12, 0xd5, - 0xbf, 0xc9, 0x97, 0x6b, 0xd5, 0x2f, 0xb7, 0x99, 0x64, 0x1d, 0x7e, 0x09, 0x5a, 0x73, 0x4f, 0xfa, - 0xa3, 0xf5, 0xf4, 0xf8, 0xbf, 0xf4, 0xac, 0xbe, 0xc5, 0x3a, 0x3e, 0x81, 0x9e, 0x6a, 0x7e, 0xfd, - 0x70, 0x5a, 0x0d, 0x3c, 0x84, 0xe1, 0xea, 0xb8, 0xaf, 0xa0, 0x76, 0xa0, 0x73, 0x92, 0xb2, 0xf6, - 0xcd, 0xfd, 0xc3, 0xf3, 0x25, 0x41, 0x3f, 0x97, 0x04, 0x5d, 0x2c, 0x09, 0xfe, 0x52, 0x12, 0xfc, - 0xad, 0x24, 0xf8, 0x7b, 0x49, 0xf0, 0x79, 0x49, 0xf0, 0xaf, 0x92, 0xe0, 0x3f, 0x25, 0x41, 0x17, - 0x25, 0xc1, 0x5f, 0x7f, 0x13, 0xf4, 0x71, 0x47, 0xce, 0x97, 0x71, 0xdb, 0x4b, 0x98, 0xbd, 0xfe, - 0x25, 0xf0, 0x37, 0x45, 0x27, 0x4f, 0xfe, 0x06, 0x00, 0x00, 0xff, 0xff, 0xa5, 0x38, 0xb2, 0xa2, - 0x22, 0x04, 0x00, 0x00, -} diff --git a/policy/v1beta1/type.proto b/policy/v1beta1/type.proto index d6027d1ca4d..3f7161eeec7 100644 --- a/policy/v1beta1/type.proto +++ b/policy/v1beta1/type.proto @@ -26,7 +26,7 @@ option go_package="istio.io/api/policy/v1beta1"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; -// An instance field of type Value denotes that the expression for the field is of dynamic type and can evalaute to any +// An instance field of type Value denotes that the expression for the field is of dynamic type and can evaluate to any // [ValueType][istio.policy.v1beta1.ValueType] enum values. For example, when // authoring an instance configuration for a template that has a field `data` of type `istio.policy.v1beta1.Value`, // both of the following expressions are valid `data: source.ip | ip("0.0.0.0")`, `data: request.id | ""`; @@ -69,7 +69,7 @@ message Value { } } -// An instance field of type IPAddress denotes that the expression for the field must evalaute to +// An instance field of type IPAddress denotes that the expression for the field must evaluate to // [ValueType.IP_ADDRESS][istio.policy.v1beta1.ValueType.IP_ADDRESS] // // Objects of type IPAddress are also passed to the adapters during request-time for the instance fields of @@ -79,7 +79,7 @@ message IPAddress { bytes value = 1; } -// An instance field of type Duration denotes that the expression for the field must evalaute to +// An instance field of type Duration denotes that the expression for the field must evaluate to // [ValueType.DURATION][istio.policy.v1beta1.ValueType.DURATION] // // Objects of type Duration are also passed to the adapters during request-time for the instance fields of @@ -89,7 +89,7 @@ message Duration { google.protobuf.Duration value = 1; } -// An instance field of type TimeStamp denotes that the expression for the field must evalaute to +// An instance field of type TimeStamp denotes that the expression for the field must evaluate to // [ValueType.TIMESTAMP][istio.policy.v1beta1.ValueType.TIMESTAMP] // // Objects of type TimeStamp are also passed to the adapters during request-time for the instance fields of @@ -99,7 +99,7 @@ message TimeStamp { google.protobuf.Timestamp value = 1; } -// An instance field of type DNSName denotes that the expression for the field must evalaute to +// An instance field of type DNSName denotes that the expression for the field must evaluate to // [ValueType.DNS_NAME][istio.policy.v1beta1.ValueType.DNS_NAME] // // Objects of type DNSName are also passed to the adapters during request-time for the instance fields of @@ -110,7 +110,7 @@ message DNSName { } // DO NOT USE !! Under Development -// An instance field of type EmailAddress denotes that the expression for the field must evalaute to +// An instance field of type EmailAddress denotes that the expression for the field must evaluate to // [ValueType.EMAIL_ADDRESS][istio.policy.v1beta1.ValueType.EMAIL_ADDRESS] // // Objects of type EmailAddress are also passed to the adapters during request-time for the instance fields of @@ -121,7 +121,7 @@ message EmailAddress { } // DO NOT USE !! Under Development -// An instance field of type Uri denotes that the expression for the field must evalaute to +// An instance field of type Uri denotes that the expression for the field must evaluate to // [ValueType.URI][istio.policy.v1beta1.ValueType.URI] // // Objects of type Uri are also passed to the adapters during request-time for the instance fields of diff --git a/policy/v1beta1/value_type.pb.go b/policy/v1beta1/value_type.pb.go index e7a28969a8b..1dbd9a04652 100644 --- a/policy/v1beta1/value_type.pb.go +++ b/policy/v1beta1/value_type.pb.go @@ -3,17 +3,24 @@ package v1beta1 -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" - -import strconv "strconv" +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + math "math" + strconv "strconv" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package + // ValueType describes the types that values in the Istio system can take. These // are used to describe the type of Attributes at run time, describe the type of // the result of evaluating an expression, and to describe the runtime type of @@ -61,6 +68,7 @@ var ValueType_name = map[int32]string{ 10: "DURATION", 11: "STRING_MAP", } + var ValueType_value = map[string]int32{ "VALUE_TYPE_UNSPECIFIED": 0, "STRING": 1, @@ -76,11 +84,40 @@ var ValueType_value = map[string]int32{ "STRING_MAP": 11, } -func (ValueType) EnumDescriptor() ([]byte, []int) { return fileDescriptorValueType, []int{0} } +func (ValueType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_72649b1dc07496e9, []int{0} +} func init() { proto.RegisterEnum("istio.policy.v1beta1.ValueType", ValueType_name, ValueType_value) } + +func init() { proto.RegisterFile("policy/v1beta1/value_type.proto", fileDescriptor_72649b1dc07496e9) } + +var fileDescriptor_72649b1dc07496e9 = []byte{ + // 309 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x90, 0xcd, 0x4a, 0xfb, 0x40, + 0x14, 0x47, 0x67, 0xfe, 0xfd, 0xcc, 0xfd, 0x5b, 0x19, 0x07, 0x71, 0xa1, 0x70, 0xdd, 0xbb, 0x68, + 0x28, 0x8a, 0xfb, 0xa9, 0x19, 0x65, 0x20, 0x5f, 0x26, 0x93, 0x82, 0x6e, 0x42, 0x2b, 0x59, 0x04, + 0x0a, 0x09, 0x1a, 0x0b, 0xdd, 0xf9, 0x08, 0x3e, 0x86, 0xef, 0xe0, 0x0b, 0xb8, 0xec, 0xb2, 0x4b, + 0x3b, 0xdd, 0xb8, 0xec, 0x23, 0x48, 0x1b, 0x11, 0x5c, 0xde, 0xc3, 0xe1, 0xf2, 0xe3, 0xc0, 0x69, + 0x59, 0x4c, 0xf3, 0x87, 0xb9, 0x3d, 0x1b, 0x4c, 0xb2, 0x6a, 0x3c, 0xb0, 0x67, 0xe3, 0xe9, 0x73, + 0x96, 0x56, 0xf3, 0x32, 0xeb, 0x97, 0x8f, 0x45, 0x55, 0xf0, 0xc3, 0xfc, 0xa9, 0xca, 0x8b, 0x7e, + 0xad, 0xf5, 0x7f, 0xb4, 0xb3, 0x77, 0x0a, 0xd6, 0x68, 0xab, 0xea, 0x79, 0x99, 0xf1, 0x63, 0x38, + 0x1a, 0x09, 0x37, 0x91, 0xa9, 0xbe, 0x0b, 0x65, 0x9a, 0xf8, 0x71, 0x28, 0xaf, 0xd4, 0xb5, 0x92, + 0x0e, 0x23, 0x1c, 0xa0, 0x1d, 0xeb, 0x48, 0xf9, 0x37, 0x8c, 0x72, 0x0b, 0x5a, 0xca, 0xd7, 0x97, + 0x17, 0xec, 0xdf, 0x16, 0x3b, 0x41, 0x32, 0x74, 0x25, 0x6b, 0xf0, 0x2e, 0x34, 0x87, 0x41, 0xe0, + 0xb2, 0x26, 0xef, 0x81, 0xa5, 0x95, 0x27, 0x63, 0x2d, 0xbc, 0x90, 0xb5, 0xf8, 0x3e, 0x80, 0x0a, + 0x53, 0xe1, 0x38, 0x91, 0x8c, 0x63, 0xd6, 0xe6, 0x07, 0xd0, 0x93, 0x9e, 0x50, 0xee, 0x2f, 0xea, + 0xf0, 0x0e, 0x34, 0x92, 0x48, 0xb1, 0x2e, 0xdf, 0x83, 0xae, 0xe3, 0xc7, 0xa9, 0x2f, 0x3c, 0xc9, + 0xac, 0xdd, 0x95, 0x44, 0x42, 0xab, 0xc0, 0x67, 0xb0, 0xfd, 0x53, 0x6f, 0x48, 0x3d, 0x11, 0xb2, + 0xff, 0xc3, 0xdb, 0xc5, 0x0a, 0xc9, 0x72, 0x85, 0x64, 0xb3, 0x42, 0xfa, 0x62, 0x90, 0xbe, 0x19, + 0xa4, 0x1f, 0x06, 0xe9, 0xc2, 0x20, 0xfd, 0x34, 0x48, 0xbf, 0x0c, 0x92, 0x8d, 0x41, 0xfa, 0xba, + 0x46, 0xb2, 0x58, 0x23, 0x59, 0xae, 0x91, 0xdc, 0x9f, 0xd4, 0x25, 0xf2, 0xc2, 0x1e, 0x97, 0xb9, + 0xfd, 0xb7, 0xdb, 0xa4, 0xbd, 0xab, 0x75, 0xfe, 0x1d, 0x00, 0x00, 0xff, 0xff, 0xa4, 0x0e, 0x39, + 0x92, 0x50, 0x01, 0x00, 0x00, +} + func (x ValueType) String() string { s, ok := ValueType_name[int32(x)] if ok { @@ -88,28 +125,3 @@ func (x ValueType) String() string { } return strconv.Itoa(int(x)) } - -func init() { proto.RegisterFile("policy/v1beta1/value_type.proto", fileDescriptorValueType) } - -var fileDescriptorValueType = []byte{ - // 302 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x90, 0x3f, 0x4b, 0xc3, 0x40, - 0x18, 0x87, 0x73, 0xf6, 0x6f, 0x5e, 0xad, 0x9c, 0x87, 0x38, 0x28, 0x9c, 0xbb, 0x43, 0x43, 0x51, - 0xdc, 0xaf, 0xe6, 0x94, 0x83, 0xe4, 0x12, 0x72, 0x97, 0x82, 0x2e, 0x47, 0x2b, 0x19, 0x02, 0x85, - 0x04, 0x8d, 0x85, 0x6e, 0x7e, 0x04, 0x3f, 0x86, 0xdf, 0xc1, 0x2f, 0xe0, 0xd8, 0xd1, 0xd1, 0x9e, - 0x8b, 0x63, 0x3f, 0x82, 0xa4, 0x11, 0xc1, 0xf1, 0x7d, 0x78, 0x78, 0xf9, 0xf1, 0xc0, 0x69, 0x59, - 0xcc, 0xf3, 0xfb, 0xa5, 0xb7, 0x18, 0xcd, 0xb2, 0x6a, 0x3a, 0xf2, 0x16, 0xd3, 0xf9, 0x53, 0x66, - 0xaa, 0x65, 0x99, 0x0d, 0xcb, 0x87, 0xa2, 0x2a, 0xc8, 0x61, 0xfe, 0x58, 0xe5, 0xc5, 0xb0, 0xd1, - 0x86, 0xbf, 0xda, 0xd9, 0x1b, 0x02, 0x77, 0x52, 0xab, 0x7a, 0x59, 0x66, 0xe4, 0x18, 0x8e, 0x26, - 0x2c, 0x48, 0xb9, 0xd1, 0xb7, 0x31, 0x37, 0xa9, 0x54, 0x31, 0xbf, 0x12, 0xd7, 0x82, 0xfb, 0xd8, - 0x21, 0x00, 0x5d, 0xa5, 0x13, 0x21, 0x6f, 0x30, 0x22, 0x2e, 0x74, 0x84, 0xd4, 0x97, 0x17, 0x78, - 0xa7, 0xc6, 0x7e, 0x94, 0x8e, 0x03, 0x8e, 0x5b, 0xa4, 0x0f, 0xed, 0x71, 0x14, 0x05, 0xb8, 0x4d, - 0x06, 0xe0, 0x6a, 0x11, 0x72, 0xa5, 0x59, 0x18, 0xe3, 0x0e, 0xd9, 0x07, 0x10, 0xb1, 0x61, 0xbe, - 0x9f, 0x70, 0xa5, 0x70, 0x97, 0x1c, 0xc0, 0x80, 0x87, 0x4c, 0x04, 0x7f, 0xa8, 0x47, 0x7a, 0xd0, - 0x4a, 0x13, 0x81, 0xfb, 0x64, 0x0f, 0xfa, 0xbe, 0x54, 0x46, 0xb2, 0x90, 0x63, 0x77, 0x7b, 0xa5, - 0x09, 0xd3, 0x22, 0x92, 0x18, 0xea, 0x3f, 0xcd, 0x06, 0x13, 0xb2, 0x18, 0xef, 0x8e, 0xc5, 0x6a, - 0x4d, 0x9d, 0x8f, 0x35, 0x75, 0x36, 0x6b, 0x8a, 0x9e, 0x2d, 0x45, 0xaf, 0x96, 0xa2, 0x77, 0x4b, - 0xd1, 0xca, 0x52, 0xf4, 0x69, 0x29, 0xfa, 0xb6, 0xd4, 0xd9, 0x58, 0x8a, 0x5e, 0xbe, 0xa8, 0x73, - 0x77, 0xd2, 0x14, 0xc8, 0x0b, 0x6f, 0x5a, 0xe6, 0xde, 0xff, 0x5e, 0xb3, 0xee, 0xb6, 0xd2, 0xf9, - 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd1, 0x41, 0xab, 0x82, 0x48, 0x01, 0x00, 0x00, -} diff --git a/proto.lock b/proto.lock index 7196cf6fec9..7122d985672 100644 --- a/proto.lock +++ b/proto.lock @@ -1005,6 +1005,11 @@ "id": 35, "name": "locality_lb_setting", "type": "LocalityLoadBalancerSetting" + }, + { + "id": 36, + "name": "dns_refresh_rate", + "type": "google.protobuf.Duration" } ], "reserved_ids": [ @@ -1331,6 +1336,11 @@ "name": "statsd_udp_address", "type": "string" }, + { + "id": 20, + "name": "envoy_metrics_service_address", + "type": "string" + }, { "id": 11, "name": "proxy_admin_port", diff --git a/python/istio_api/mesh/v1alpha1/config_pb2.py b/python/istio_api/mesh/v1alpha1/config_pb2.py index b8d0290a1b3..27427a80009 100644 --- a/python/istio_api/mesh/v1alpha1/config_pb2.py +++ b/python/istio_api/mesh/v1alpha1/config_pb2.py @@ -22,7 +22,7 @@ name='mesh/v1alpha1/config.proto', package='istio.mesh.v1alpha1', syntax='proto3', - serialized_pb=_b('\n\x1amesh/v1alpha1/config.proto\x12\x13istio.mesh.v1alpha1\x1a\x1egoogle/protobuf/duration.proto\x1a\x19mesh/v1alpha1/proxy.proto\x1a*networking/v1alpha3/destination_rule.proto\"\xf7\r\n\nMeshConfig\x12\x1a\n\x12mixer_check_server\x18\x01 \x01(\t\x12\x1b\n\x13mixer_report_server\x18\x02 \x01(\t\x12\x1d\n\x15\x64isable_policy_checks\x18\x03 \x01(\x08\x12\x1e\n\x16policy_check_fail_open\x18\x19 \x01(\x08\x12-\n%sidecar_to_telemetry_session_affinity\x18\x1e \x01(\x08\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\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\x43\n\x0b\x61uth_policy\x18\n \x01(\x0e\x32*.istio.mesh.v1alpha1.MeshConfig.AuthPolicyB\x02\x18\x01\x12\x38\n\x11rds_refresh_delay\x18\x0b \x01(\x0b\x32\x19.google.protobuf.DurationB\x02\x18\x01\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\x38\n\x0e\x64\x65\x66\x61ult_config\x18\x0e \x01(\x0b\x32 .istio.mesh.v1alpha1.ProxyConfig\x12\x19\n\rmixer_address\x18\x10 \x01(\tB\x02\x18\x01\x12V\n\x17outbound_traffic_policy\x18\x11 \x01(\x0b\x32\x35.istio.mesh.v1alpha1.MeshConfig.OutboundTrafficPolicy\x12\'\n\x1f\x65nable_client_side_policy_check\x18\x13 \x01(\x08\x12\x14\n\x0csds_uds_path\x18\x14 \x01(\t\x12\x38\n\x11sds_refresh_delay\x18\x15 \x01(\x0b\x32\x19.google.protobuf.DurationB\x02\x18\x01\x12\x39\n\x0e\x63onfig_sources\x18\x16 \x03(\x0b\x32!.istio.mesh.v1alpha1.ConfigSource\x12\x1e\n\x16\x65nable_sds_token_mount\x18\x17 \x01(\x08\x12\x1a\n\x12sds_use_k8s_sa_jwt\x18\x1d \x01(\x08\x12\x14\n\x0ctrust_domain\x18\x1a \x01(\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\x12M\n\x13locality_lb_setting\x18# \x01(\x0b\x32\x30.istio.mesh.v1alpha1.LocalityLoadBalancerSetting\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\"9\n\x15IngressControllerMode\x12\x07\n\x03OFF\x10\x00\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x01\x12\n\n\x06STRICT\x10\x02\"&\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\x01J\x04\x08\x0f\x10\x10J\x04\x08\x12\x10\x13\"]\n\x0c\x43onfigSource\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12<\n\x0ctls_settings\x18\x02 \x01(\x0b\x32&.istio.networking.v1alpha3.TLSSettings\"\xfa\x02\n\x1bLocalityLoadBalancerSetting\x12O\n\ndistribute\x18\x01 \x03(\x0b\x32;.istio.mesh.v1alpha1.LocalityLoadBalancerSetting.Distribute\x12K\n\x08\x66\x61ilover\x18\x02 \x03(\x0b\x32\x39.istio.mesh.v1alpha1.LocalityLoadBalancerSetting.Failover\x1a\x96\x01\n\nDistribute\x12\x0c\n\x04\x66rom\x18\x01 \x01(\t\x12O\n\x02to\x18\x02 \x03(\x0b\x32\x43.istio.mesh.v1alpha1.LocalityLoadBalancerSetting.Distribute.ToEntry\x1a)\n\x07ToEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\x1a$\n\x08\x46\x61ilover\x12\x0c\n\x04\x66rom\x18\x01 \x01(\t\x12\n\n\x02to\x18\x02 \x01(\tB\x1cZ\x1aistio.io/api/mesh/v1alpha1b\x06proto3') + serialized_pb=_b('\n\x1amesh/v1alpha1/config.proto\x12\x13istio.mesh.v1alpha1\x1a\x1egoogle/protobuf/duration.proto\x1a\x19mesh/v1alpha1/proxy.proto\x1a*networking/v1alpha3/destination_rule.proto\"\xac\x0e\n\nMeshConfig\x12\x1a\n\x12mixer_check_server\x18\x01 \x01(\t\x12\x1b\n\x13mixer_report_server\x18\x02 \x01(\t\x12\x1d\n\x15\x64isable_policy_checks\x18\x03 \x01(\x08\x12\x1e\n\x16policy_check_fail_open\x18\x19 \x01(\x08\x12-\n%sidecar_to_telemetry_session_affinity\x18\x1e \x01(\x08\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\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\x43\n\x0b\x61uth_policy\x18\n \x01(\x0e\x32*.istio.mesh.v1alpha1.MeshConfig.AuthPolicyB\x02\x18\x01\x12\x38\n\x11rds_refresh_delay\x18\x0b \x01(\x0b\x32\x19.google.protobuf.DurationB\x02\x18\x01\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\x38\n\x0e\x64\x65\x66\x61ult_config\x18\x0e \x01(\x0b\x32 .istio.mesh.v1alpha1.ProxyConfig\x12\x19\n\rmixer_address\x18\x10 \x01(\tB\x02\x18\x01\x12V\n\x17outbound_traffic_policy\x18\x11 \x01(\x0b\x32\x35.istio.mesh.v1alpha1.MeshConfig.OutboundTrafficPolicy\x12\'\n\x1f\x65nable_client_side_policy_check\x18\x13 \x01(\x08\x12\x14\n\x0csds_uds_path\x18\x14 \x01(\t\x12\x38\n\x11sds_refresh_delay\x18\x15 \x01(\x0b\x32\x19.google.protobuf.DurationB\x02\x18\x01\x12\x39\n\x0e\x63onfig_sources\x18\x16 \x03(\x0b\x32!.istio.mesh.v1alpha1.ConfigSource\x12\x1e\n\x16\x65nable_sds_token_mount\x18\x17 \x01(\x08\x12\x1a\n\x12sds_use_k8s_sa_jwt\x18\x1d \x01(\x08\x12\x14\n\x0ctrust_domain\x18\x1a \x01(\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\x12M\n\x13locality_lb_setting\x18# \x01(\x0b\x32\x30.istio.mesh.v1alpha1.LocalityLoadBalancerSetting\x12\x33\n\x10\x64ns_refresh_rate\x18$ \x01(\x0b\x32\x19.google.protobuf.Duration\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\"9\n\x15IngressControllerMode\x12\x07\n\x03OFF\x10\x00\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x01\x12\n\n\x06STRICT\x10\x02\"&\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\x01J\x04\x08\x0f\x10\x10J\x04\x08\x12\x10\x13\"]\n\x0c\x43onfigSource\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12<\n\x0ctls_settings\x18\x02 \x01(\x0b\x32&.istio.networking.v1alpha3.TLSSettings\"\xfa\x02\n\x1bLocalityLoadBalancerSetting\x12O\n\ndistribute\x18\x01 \x03(\x0b\x32;.istio.mesh.v1alpha1.LocalityLoadBalancerSetting.Distribute\x12K\n\x08\x66\x61ilover\x18\x02 \x03(\x0b\x32\x39.istio.mesh.v1alpha1.LocalityLoadBalancerSetting.Failover\x1a\x96\x01\n\nDistribute\x12\x0c\n\x04\x66rom\x18\x01 \x01(\t\x12O\n\x02to\x18\x02 \x03(\x0b\x32\x43.istio.mesh.v1alpha1.LocalityLoadBalancerSetting.Distribute.ToEntry\x1a)\n\x07ToEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\x1a$\n\x08\x46\x61ilover\x12\x0c\n\x04\x66rom\x18\x01 \x01(\t\x12\n\n\x02to\x18\x02 \x01(\tB\x1cZ\x1aistio.io/api/mesh/v1alpha1b\x06proto3') , dependencies=[google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,mesh_dot_v1alpha1_dot_proxy__pb2.DESCRIPTOR,networking_dot_v1alpha3_dot_destination__rule__pb2.DESCRIPTOR,]) @@ -45,8 +45,8 @@ ], containing_type=None, options=None, - serialized_start=1718, - serialized_end=1786, + serialized_start=1771, + serialized_end=1839, ) _sym_db.RegisterEnumDescriptor(_MESHCONFIG_OUTBOUNDTRAFFICPOLICY_MODE) @@ -71,8 +71,8 @@ ], containing_type=None, options=None, - serialized_start=1788, - serialized_end=1845, + serialized_start=1841, + serialized_end=1898, ) _sym_db.RegisterEnumDescriptor(_MESHCONFIG_INGRESSCONTROLLERMODE) @@ -93,8 +93,8 @@ ], containing_type=None, options=None, - serialized_start=1847, - serialized_end=1885, + serialized_start=1900, + serialized_end=1938, ) _sym_db.RegisterEnumDescriptor(_MESHCONFIG_AUTHPOLICY) @@ -115,8 +115,8 @@ ], containing_type=None, options=None, - serialized_start=1887, - serialized_end=1926, + serialized_start=1940, + serialized_end=1979, ) _sym_db.RegisterEnumDescriptor(_MESHCONFIG_ACCESSLOGENCODING) @@ -148,8 +148,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1619, - serialized_end=1786, + serialized_start=1672, + serialized_end=1839, ) _MESHCONFIG = _descriptor.Descriptor( @@ -390,6 +390,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='dns_refresh_rate', full_name='istio.mesh.v1alpha1.MeshConfig.dns_refresh_rate', index=33, + number=36, 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, + options=None, file=DESCRIPTOR), ], extensions=[ ], @@ -406,7 +413,7 @@ oneofs=[ ], serialized_start=155, - serialized_end=1938, + serialized_end=1991, ) @@ -443,8 +450,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1940, - serialized_end=2033, + serialized_start=1993, + serialized_end=2086, ) @@ -481,8 +488,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2335, - serialized_end=2376, + serialized_start=2388, + serialized_end=2429, ) _LOCALITYLOADBALANCERSETTING_DISTRIBUTE = _descriptor.Descriptor( @@ -518,8 +525,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2226, - serialized_end=2376, + serialized_start=2279, + serialized_end=2429, ) _LOCALITYLOADBALANCERSETTING_FAILOVER = _descriptor.Descriptor( @@ -555,8 +562,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2378, - serialized_end=2414, + serialized_start=2431, + serialized_end=2467, ) _LOCALITYLOADBALANCERSETTING = _descriptor.Descriptor( @@ -592,8 +599,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2036, - serialized_end=2414, + serialized_start=2089, + serialized_end=2467, ) _MESHCONFIG_OUTBOUNDTRAFFICPOLICY.fields_by_name['mode'].enum_type = _MESHCONFIG_OUTBOUNDTRAFFICPOLICY_MODE @@ -610,6 +617,7 @@ _MESHCONFIG.fields_by_name['sds_refresh_delay'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION _MESHCONFIG.fields_by_name['config_sources'].message_type = _CONFIGSOURCE _MESHCONFIG.fields_by_name['locality_lb_setting'].message_type = _LOCALITYLOADBALANCERSETTING +_MESHCONFIG.fields_by_name['dns_refresh_rate'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION _MESHCONFIG_INGRESSCONTROLLERMODE.containing_type = _MESHCONFIG _MESHCONFIG_AUTHPOLICY.containing_type = _MESHCONFIG _MESHCONFIG_ACCESSLOGENCODING.containing_type = _MESHCONFIG diff --git a/python/istio_api/mesh/v1alpha1/proxy_pb2.py b/python/istio_api/mesh/v1alpha1/proxy_pb2.py index da72bf832bf..77e83051557 100644 --- a/python/istio_api/mesh/v1alpha1/proxy_pb2.py +++ b/python/istio_api/mesh/v1alpha1/proxy_pb2.py @@ -21,7 +21,7 @@ name='mesh/v1alpha1/proxy.proto', package='istio.mesh.v1alpha1', syntax='proto3', - serialized_pb=_b('\n\x19mesh/v1alpha1/proxy.proto\x12\x13istio.mesh.v1alpha1\x1a\x1egoogle/protobuf/duration.proto\"\xd0\x02\n\x07Tracing\x12\x35\n\x06zipkin\x18\x01 \x01(\x0b\x32#.istio.mesh.v1alpha1.Tracing.ZipkinH\x00\x12;\n\tlightstep\x18\x02 \x01(\x0b\x32&.istio.mesh.v1alpha1.Tracing.LightstepH\x00\x12\x37\n\x07\x64\x61tadog\x18\x03 \x01(\x0b\x32$.istio.mesh.v1alpha1.Tracing.DatadogH\x00\x1a\x19\n\x06Zipkin\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x1aW\n\tLightstep\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12\x14\n\x0c\x61\x63\x63\x65ss_token\x18\x02 \x01(\t\x12\x0e\n\x06secure\x18\x03 \x01(\x08\x12\x13\n\x0b\x63\x61\x63\x65rt_path\x18\x04 \x01(\t\x1a\x1a\n\x07\x44\x61tadog\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x08\n\x06tracer\"\xb9\x06\n\x0bProxyConfig\x12\x13\n\x0b\x63onfig_path\x18\x01 \x01(\t\x12\x13\n\x0b\x62inary_path\x18\x02 \x01(\t\x12\x17\n\x0fservice_cluster\x18\x03 \x01(\t\x12\x31\n\x0e\x64rain_duration\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12;\n\x18parent_shutdown_duration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x19\n\x11\x64iscovery_address\x18\x06 \x01(\t\x12>\n\x17\x64iscovery_refresh_delay\x18\x07 \x01(\x0b\x32\x19.google.protobuf.DurationB\x02\x18\x01\x12\x1a\n\x0ezipkin_address\x18\x08 \x01(\tB\x02\x18\x01\x12\x32\n\x0f\x63onnect_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1a\n\x12statsd_udp_address\x18\n \x01(\t\x12\x18\n\x10proxy_admin_port\x18\x0b \x01(\x05\x12\x1d\n\x11\x61vailability_zone\x18\x0c \x01(\tB\x02\x18\x01\x12L\n\x19\x63ontrol_plane_auth_policy\x18\r \x01(\x0e\x32).istio.mesh.v1alpha1.AuthenticationPolicy\x12\x1a\n\x12\x63ustom_config_file\x18\x0e \x01(\t\x12\x18\n\x10stat_name_length\x18\x0f \x01(\x05\x12\x13\n\x0b\x63oncurrency\x18\x10 \x01(\x05\x12%\n\x1dproxy_bootstrap_template_path\x18\x11 \x01(\t\x12S\n\x11interception_mode\x18\x12 \x01(\x0e\x32\x38.istio.mesh.v1alpha1.ProxyConfig.InboundInterceptionMode\x12-\n\x07tracing\x18\x13 \x01(\x0b\x32\x1c.istio.mesh.v1alpha1.Tracing\"3\n\x17InboundInterceptionMode\x12\x0c\n\x08REDIRECT\x10\x00\x12\n\n\x06TPROXY\x10\x01*>\n\x14\x41uthenticationPolicy\x12\x08\n\x04NONE\x10\x00\x12\x0e\n\nMUTUAL_TLS\x10\x01\x12\x0c\n\x07INHERIT\x10\xe8\x07\x42\x1cZ\x1aistio.io/api/mesh/v1alpha1b\x06proto3') + serialized_pb=_b('\n\x19mesh/v1alpha1/proxy.proto\x12\x13istio.mesh.v1alpha1\x1a\x1egoogle/protobuf/duration.proto\"\xd0\x02\n\x07Tracing\x12\x35\n\x06zipkin\x18\x01 \x01(\x0b\x32#.istio.mesh.v1alpha1.Tracing.ZipkinH\x00\x12;\n\tlightstep\x18\x02 \x01(\x0b\x32&.istio.mesh.v1alpha1.Tracing.LightstepH\x00\x12\x37\n\x07\x64\x61tadog\x18\x03 \x01(\x0b\x32$.istio.mesh.v1alpha1.Tracing.DatadogH\x00\x1a\x19\n\x06Zipkin\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x1aW\n\tLightstep\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12\x14\n\x0c\x61\x63\x63\x65ss_token\x18\x02 \x01(\t\x12\x0e\n\x06secure\x18\x03 \x01(\x08\x12\x13\n\x0b\x63\x61\x63\x65rt_path\x18\x04 \x01(\t\x1a\x1a\n\x07\x44\x61tadog\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\tB\x08\n\x06tracer\"\xe0\x06\n\x0bProxyConfig\x12\x13\n\x0b\x63onfig_path\x18\x01 \x01(\t\x12\x13\n\x0b\x62inary_path\x18\x02 \x01(\t\x12\x17\n\x0fservice_cluster\x18\x03 \x01(\t\x12\x31\n\x0e\x64rain_duration\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12;\n\x18parent_shutdown_duration\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x19\n\x11\x64iscovery_address\x18\x06 \x01(\t\x12>\n\x17\x64iscovery_refresh_delay\x18\x07 \x01(\x0b\x32\x19.google.protobuf.DurationB\x02\x18\x01\x12\x1a\n\x0ezipkin_address\x18\x08 \x01(\tB\x02\x18\x01\x12\x32\n\x0f\x63onnect_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1a\n\x12statsd_udp_address\x18\n \x01(\t\x12%\n\x1d\x65nvoy_metrics_service_address\x18\x14 \x01(\t\x12\x18\n\x10proxy_admin_port\x18\x0b \x01(\x05\x12\x1d\n\x11\x61vailability_zone\x18\x0c \x01(\tB\x02\x18\x01\x12L\n\x19\x63ontrol_plane_auth_policy\x18\r \x01(\x0e\x32).istio.mesh.v1alpha1.AuthenticationPolicy\x12\x1a\n\x12\x63ustom_config_file\x18\x0e \x01(\t\x12\x18\n\x10stat_name_length\x18\x0f \x01(\x05\x12\x13\n\x0b\x63oncurrency\x18\x10 \x01(\x05\x12%\n\x1dproxy_bootstrap_template_path\x18\x11 \x01(\t\x12S\n\x11interception_mode\x18\x12 \x01(\x0e\x32\x38.istio.mesh.v1alpha1.ProxyConfig.InboundInterceptionMode\x12-\n\x07tracing\x18\x13 \x01(\x0b\x32\x1c.istio.mesh.v1alpha1.Tracing\"3\n\x17InboundInterceptionMode\x12\x0c\n\x08REDIRECT\x10\x00\x12\n\n\x06TPROXY\x10\x01*>\n\x14\x41uthenticationPolicy\x12\x08\n\x04NONE\x10\x00\x12\x0e\n\nMUTUAL_TLS\x10\x01\x12\x0c\n\x07INHERIT\x10\xe8\x07\x42\x1cZ\x1aistio.io/api/mesh/v1alpha1b\x06proto3') , dependencies=[google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,]) @@ -46,8 +46,8 @@ ], containing_type=None, options=None, - serialized_start=1249, - serialized_end=1311, + serialized_start=1288, + serialized_end=1350, ) _sym_db.RegisterEnumDescriptor(_AUTHENTICATIONPOLICY) @@ -74,8 +74,8 @@ ], containing_type=None, options=None, - serialized_start=1196, - serialized_end=1247, + serialized_start=1235, + serialized_end=1286, ) _sym_db.RegisterEnumDescriptor(_PROXYCONFIG_INBOUNDINTERCEPTIONMODE) @@ -317,63 +317,70 @@ is_extension=False, extension_scope=None, options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='proxy_admin_port', full_name='istio.mesh.v1alpha1.ProxyConfig.proxy_admin_port', index=10, + name='envoy_metrics_service_address', full_name='istio.mesh.v1alpha1.ProxyConfig.envoy_metrics_service_address', index=10, + number=20, 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, + options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='proxy_admin_port', full_name='istio.mesh.v1alpha1.ProxyConfig.proxy_admin_port', index=11, number=11, 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, options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='availability_zone', full_name='istio.mesh.v1alpha1.ProxyConfig.availability_zone', index=11, + name='availability_zone', full_name='istio.mesh.v1alpha1.ProxyConfig.availability_zone', index=12, number=12, 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, options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001')), file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='control_plane_auth_policy', full_name='istio.mesh.v1alpha1.ProxyConfig.control_plane_auth_policy', index=12, + name='control_plane_auth_policy', full_name='istio.mesh.v1alpha1.ProxyConfig.control_plane_auth_policy', index=13, number=13, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='custom_config_file', full_name='istio.mesh.v1alpha1.ProxyConfig.custom_config_file', index=13, + name='custom_config_file', full_name='istio.mesh.v1alpha1.ProxyConfig.custom_config_file', index=14, number=14, 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, options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='stat_name_length', full_name='istio.mesh.v1alpha1.ProxyConfig.stat_name_length', index=14, + name='stat_name_length', full_name='istio.mesh.v1alpha1.ProxyConfig.stat_name_length', index=15, number=15, 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, options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='concurrency', full_name='istio.mesh.v1alpha1.ProxyConfig.concurrency', index=15, + name='concurrency', full_name='istio.mesh.v1alpha1.ProxyConfig.concurrency', index=16, number=16, 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, options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='proxy_bootstrap_template_path', full_name='istio.mesh.v1alpha1.ProxyConfig.proxy_bootstrap_template_path', index=16, + name='proxy_bootstrap_template_path', full_name='istio.mesh.v1alpha1.ProxyConfig.proxy_bootstrap_template_path', index=17, number=17, 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, options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='interception_mode', full_name='istio.mesh.v1alpha1.ProxyConfig.interception_mode', index=17, + name='interception_mode', full_name='istio.mesh.v1alpha1.ProxyConfig.interception_mode', index=18, number=18, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='tracing', full_name='istio.mesh.v1alpha1.ProxyConfig.tracing', index=18, + name='tracing', full_name='istio.mesh.v1alpha1.ProxyConfig.tracing', index=19, number=19, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, @@ -393,7 +400,7 @@ oneofs=[ ], serialized_start=422, - serialized_end=1247, + serialized_end=1286, ) _TRACING_ZIPKIN.containing_type = _TRACING diff --git a/rbac/v1alpha1/rbac.pb.go b/rbac/v1alpha1/rbac.pb.go index 87a6b890f03..297f24ca196 100644 --- a/rbac/v1alpha1/rbac.pb.go +++ b/rbac/v1alpha1/rbac.pb.go @@ -1,92 +1,77 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: rbac/v1alpha1/rbac.proto -/* - Package v1alpha1 is a generated protocol buffer package. - - Istio RBAC (Role Based Access Control) defines ServiceRole and ServiceRoleBinding - objects. - - A ServiceRole specification includes a list of rules (permissions). Each rule has - the following standard fields: - - * services: a list of services. - * methods: HTTP methods. In the case of gRPC, this field is ignored because the value is always "POST". - * paths: HTTP paths or gRPC methods. Note that gRPC methods should be - presented in the form of "/packageName.serviceName/methodName" and are case sensitive. - - In addition to the standard fields, operators can also use custom keys in the `constraints` field, - the supported keys are listed in the "constraints and properties" page. - - Below is an example of ServiceRole object "product-viewer", which has "read" ("GET" and "HEAD") - access to "products.svc.cluster.local" service at versions "v1" and "v2". "path" is not specified, - so it applies to any path in the service. - - ```yaml - apiVersion: "rbac.istio.io/v1alpha1" - kind: ServiceRole - metadata: - name: products-viewer - namespace: default - spec: - rules: - - services: ["products.svc.cluster.local"] - methods: ["GET", "HEAD"] - constraints: - - key: "destination.labels[version]" - value: ["v1", "v2"] - ``` - - A ServiceRoleBinding specification includes two parts: - - * The `roleRef` field that refers to a ServiceRole object in the same namespace. - * A list of `subjects` that are assigned the roles. - - In addition to a simple `user` field, operators can also use custom keys in the `properties` field, - the supported keys are listed in the "constraints and properties" page. - - Below is an example of ServiceRoleBinding object "test-binding-products", which binds two subjects - to ServiceRole "product-viewer": - - * User "alice@yahoo.com" - * Services in "abc" namespace. - - ```yaml - apiVersion: "rbac.istio.io/v1alpha1" - kind: ServiceRoleBinding - metadata: - name: test-binding-products - namespace: default - spec: - subjects: - - user: alice@yahoo.com - - properties: - source.namespace: "abc" - roleRef: - kind: ServiceRole - name: "products-viewer" - ``` - - It is generated from these files: - rbac/v1alpha1/rbac.proto - - It has these top-level messages: - WorkloadSelector - AuthorizationPolicy - ServiceRole - AccessRule - ServiceRoleBinding - Subject - RoleRef - RbacConfig -*/ -package v1alpha1 +// Istio RBAC (Role Based Access Control) defines ServiceRole and ServiceRoleBinding +// objects. +// +// A ServiceRole specification includes a list of rules (permissions). Each rule has +// the following standard fields: +// +// * services: a list of services. +// * methods: HTTP methods. In the case of gRPC, this field is ignored because the value is always "POST". +// * paths: HTTP paths or gRPC methods. Note that gRPC methods should be +// presented in the form of "/packageName.serviceName/methodName" and are case sensitive. +// +// In addition to the standard fields, operators can also use custom keys in the `constraints` field, +// the supported keys are listed in the "constraints and properties" page. +// +// Below is an example of ServiceRole object "product-viewer", which has "read" ("GET" and "HEAD") +// access to "products.svc.cluster.local" service at versions "v1" and "v2". "path" is not specified, +// so it applies to any path in the service. +// +// ```yaml +// apiVersion: "rbac.istio.io/v1alpha1" +// kind: ServiceRole +// metadata: +// name: products-viewer +// namespace: default +// spec: +// rules: +// - services: ["products.svc.cluster.local"] +// methods: ["GET", "HEAD"] +// constraints: +// - key: "destination.labels[version]" +// value: ["v1", "v2"] +// ``` +// +// A ServiceRoleBinding specification includes two parts: +// +// * The `roleRef` field that refers to a ServiceRole object in the same namespace. +// * A list of `subjects` that are assigned the roles. +// +// In addition to a simple `user` field, operators can also use custom keys in the `properties` field, +// the supported keys are listed in the "constraints and properties" page. +// +// Below is an example of ServiceRoleBinding object "test-binding-products", which binds two subjects +// to ServiceRole "product-viewer": +// +// * User "alice@yahoo.com" +// * Services in "abc" namespace. +// +// ```yaml +// apiVersion: "rbac.istio.io/v1alpha1" +// kind: ServiceRoleBinding +// metadata: +// name: test-binding-products +// namespace: default +// spec: +// subjects: +// - user: alice@yahoo.com +// - properties: +// source.namespace: "abc" +// roleRef: +// kind: ServiceRole +// name: "products-viewer" +// ``` -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" +package v1alpha1 -import io "io" +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -119,6 +104,7 @@ var EnforcementMode_name = map[int32]string{ 0: "ENFORCED", 1: "PERMISSIVE", } + var EnforcementMode_value = map[string]int32{ "ENFORCED": 0, "PERMISSIVE": 1, @@ -127,7 +113,10 @@ var EnforcementMode_value = map[string]int32{ func (x EnforcementMode) String() string { return proto.EnumName(EnforcementMode_name, int32(x)) } -func (EnforcementMode) EnumDescriptor() ([]byte, []int) { return fileDescriptorRbac, []int{0} } + +func (EnforcementMode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_3462954d26c055c0, []int{0} +} type RbacConfig_Mode int32 @@ -151,6 +140,7 @@ var RbacConfig_Mode_name = map[int32]string{ 2: "ON_WITH_INCLUSION", 3: "ON_WITH_EXCLUSION", } + var RbacConfig_Mode_value = map[string]int32{ "OFF": 0, "ON": 1, @@ -161,7 +151,10 @@ var RbacConfig_Mode_value = map[string]int32{ func (x RbacConfig_Mode) String() string { return proto.EnumName(RbacConfig_Mode_name, int32(x)) } -func (RbacConfig_Mode) EnumDescriptor() ([]byte, []int) { return fileDescriptorRbac, []int{7, 0} } + +func (RbacConfig_Mode) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_3462954d26c055c0, []int{7, 0} +} // $hide_from_docs // This is forked from the networking/v1alpha3/sidecar.proto to avoid a direct @@ -179,13 +172,44 @@ type WorkloadSelector struct { // this sidecar configuration should be applied. The scope of label // search is restricted to the configuration namespace in which the the // resource is present. - Labels map[string]string `protobuf:"bytes,1,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Labels map[string]string `protobuf:"bytes,1,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *WorkloadSelector) Reset() { *m = WorkloadSelector{} } -func (m *WorkloadSelector) String() string { return proto.CompactTextString(m) } -func (*WorkloadSelector) ProtoMessage() {} -func (*WorkloadSelector) Descriptor() ([]byte, []int) { return fileDescriptorRbac, []int{0} } +func (m *WorkloadSelector) Reset() { *m = WorkloadSelector{} } +func (m *WorkloadSelector) String() string { return proto.CompactTextString(m) } +func (*WorkloadSelector) ProtoMessage() {} +func (*WorkloadSelector) Descriptor() ([]byte, []int) { + return fileDescriptor_3462954d26c055c0, []int{0} +} +func (m *WorkloadSelector) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *WorkloadSelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_WorkloadSelector.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *WorkloadSelector) XXX_Merge(src proto.Message) { + xxx_messageInfo_WorkloadSelector.Merge(m, src) +} +func (m *WorkloadSelector) XXX_Size() int { + return m.Size() +} +func (m *WorkloadSelector) XXX_DiscardUnknown() { + xxx_messageInfo_WorkloadSelector.DiscardUnknown(m) +} + +var xxx_messageInfo_WorkloadSelector proto.InternalMessageInfo func (m *WorkloadSelector) GetLabels() map[string]string { if m != nil { @@ -203,16 +227,47 @@ type AuthorizationPolicy struct { // select all pods/VMs. // The scope of label search is platform dependent. On Kubernetes, for example, // the scope includes pods running in the same namespace as the authorization policy itself. - WorkloadSelector *WorkloadSelector `protobuf:"bytes,1,opt,name=workload_selector,json=workloadSelector" json:"workload_selector,omitempty"` + WorkloadSelector *WorkloadSelector `protobuf:"bytes,1,opt,name=workload_selector,json=workloadSelector,proto3" json:"workload_selector,omitempty"` // $hide_from_docs // A list of bindings that specify the subjects and permissions to the selected workload. - Allow []*ServiceRoleBinding `protobuf:"bytes,2,rep,name=allow" json:"allow,omitempty"` + Allow []*ServiceRoleBinding `protobuf:"bytes,2,rep,name=allow,proto3" json:"allow,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *AuthorizationPolicy) Reset() { *m = AuthorizationPolicy{} } +func (m *AuthorizationPolicy) String() string { return proto.CompactTextString(m) } +func (*AuthorizationPolicy) ProtoMessage() {} +func (*AuthorizationPolicy) Descriptor() ([]byte, []int) { + return fileDescriptor_3462954d26c055c0, []int{1} +} +func (m *AuthorizationPolicy) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AuthorizationPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AuthorizationPolicy.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AuthorizationPolicy) XXX_Merge(src proto.Message) { + xxx_messageInfo_AuthorizationPolicy.Merge(m, src) +} +func (m *AuthorizationPolicy) XXX_Size() int { + return m.Size() +} +func (m *AuthorizationPolicy) XXX_DiscardUnknown() { + xxx_messageInfo_AuthorizationPolicy.DiscardUnknown(m) } -func (m *AuthorizationPolicy) Reset() { *m = AuthorizationPolicy{} } -func (m *AuthorizationPolicy) String() string { return proto.CompactTextString(m) } -func (*AuthorizationPolicy) ProtoMessage() {} -func (*AuthorizationPolicy) Descriptor() ([]byte, []int) { return fileDescriptorRbac, []int{1} } +var xxx_messageInfo_AuthorizationPolicy proto.InternalMessageInfo func (m *AuthorizationPolicy) GetWorkloadSelector() *WorkloadSelector { if m != nil { @@ -231,13 +286,44 @@ func (m *AuthorizationPolicy) GetAllow() []*ServiceRoleBinding { // ServiceRole specification contains a list of access rules (permissions). type ServiceRole struct { // Required. The set of access rules (permissions) that the role has. - Rules []*AccessRule `protobuf:"bytes,1,rep,name=rules" json:"rules,omitempty"` + Rules []*AccessRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ServiceRole) Reset() { *m = ServiceRole{} } +func (m *ServiceRole) String() string { return proto.CompactTextString(m) } +func (*ServiceRole) ProtoMessage() {} +func (*ServiceRole) Descriptor() ([]byte, []int) { + return fileDescriptor_3462954d26c055c0, []int{2} +} +func (m *ServiceRole) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ServiceRole) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ServiceRole.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ServiceRole) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceRole.Merge(m, src) +} +func (m *ServiceRole) XXX_Size() int { + return m.Size() +} +func (m *ServiceRole) XXX_DiscardUnknown() { + xxx_messageInfo_ServiceRole.DiscardUnknown(m) } -func (m *ServiceRole) Reset() { *m = ServiceRole{} } -func (m *ServiceRole) String() string { return proto.CompactTextString(m) } -func (*ServiceRole) ProtoMessage() {} -func (*ServiceRole) Descriptor() ([]byte, []int) { return fileDescriptorRbac, []int{2} } +var xxx_messageInfo_ServiceRole proto.InternalMessageInfo func (m *ServiceRole) GetRules() []*AccessRule { if m != nil { @@ -254,17 +340,17 @@ type AccessRule struct { // "bookstore.mtv.cluster.local" (exact match), or "bookstore*" (prefix match), // or "*.mtv.cluster.local" (suffix match). // If set to ["*"], it refers to all services in the namespace. - Services []string `protobuf:"bytes,1,rep,name=services" json:"services,omitempty"` + Services []string `protobuf:"bytes,1,rep,name=services,proto3" json:"services,omitempty"` // $hide_from_docs // Optional. A list of HTTP hosts. This is matched against the HOST header in // a HTTP request. Exact match, prefix match and suffix match are supported. // For example, the host "test.abc.com" matches "test.abc.com" (exact match), // or "*.abc.com" (prefix match), or "test.abc.*" (suffix match). // If not specified, it matches to any host. - Hosts []string `protobuf:"bytes,5,rep,name=hosts" json:"hosts,omitempty"` + Hosts []string `protobuf:"bytes,5,rep,name=hosts,proto3" json:"hosts,omitempty"` // $hide_from_docs // Optional. A list of HTTP hosts that must not be matched. - NotHosts []string `protobuf:"bytes,6,rep,name=not_hosts,json=notHosts" json:"not_hosts,omitempty"` + NotHosts []string `protobuf:"bytes,6,rep,name=not_hosts,json=notHosts,proto3" json:"not_hosts,omitempty"` // Optional. A list of HTTP paths or gRPC methods. // gRPC methods must be presented as fully-qualified name in the form of // "/packageName.serviceName/methodName" and are case sensitive. @@ -272,35 +358,66 @@ type AccessRule struct { // the path "/books/review" matches "/books/review" (exact match), // or "/books/*" (prefix match), or "*/review" (suffix match). // If not specified, it matches to any path. - Paths []string `protobuf:"bytes,2,rep,name=paths" json:"paths,omitempty"` + Paths []string `protobuf:"bytes,2,rep,name=paths,proto3" json:"paths,omitempty"` // $hide_from_docs // Optional. A list of HTTP paths or gRPC methods that must not be matched. - NotPaths []string `protobuf:"bytes,7,rep,name=not_paths,json=notPaths" json:"not_paths,omitempty"` + NotPaths []string `protobuf:"bytes,7,rep,name=not_paths,json=notPaths,proto3" json:"not_paths,omitempty"` // Optional. A list of HTTP methods (e.g., "GET", "POST"). // It is ignored in gRPC case because the value is always "POST". // If not specified, it matches to any methods. - Methods []string `protobuf:"bytes,3,rep,name=methods" json:"methods,omitempty"` + Methods []string `protobuf:"bytes,3,rep,name=methods,proto3" json:"methods,omitempty"` // $hide_from_docs // Optional. A list of HTTP methods that must not be matched. // Note: It's an error to set methods and not_methods at the same time. - NotMethods []string `protobuf:"bytes,8,rep,name=not_methods,json=notMethods" json:"not_methods,omitempty"` + NotMethods []string `protobuf:"bytes,8,rep,name=not_methods,json=notMethods,proto3" json:"not_methods,omitempty"` // $hide_from_docs // Optional. A list of port numbers of the request. If not specified, it matches // to any port number. // Note: It's an error to set ports and not_ports at the same time. - Ports []int32 `protobuf:"varint,9,rep,packed,name=ports" json:"ports,omitempty"` + Ports []int32 `protobuf:"varint,9,rep,packed,name=ports,proto3" json:"ports,omitempty"` // $hide_from_docs // Optional. A list of port numbers that must not be matched. // Note: It's an error to set ports and not_ports at the same time. - NotPorts []int32 `protobuf:"varint,10,rep,packed,name=not_ports,json=notPorts" json:"not_ports,omitempty"` + NotPorts []int32 `protobuf:"varint,10,rep,packed,name=not_ports,json=notPorts,proto3" json:"not_ports,omitempty"` // Optional. Extra constraints in the ServiceRole specification. - Constraints []*AccessRule_Constraint `protobuf:"bytes,4,rep,name=constraints" json:"constraints,omitempty"` + Constraints []*AccessRule_Constraint `protobuf:"bytes,4,rep,name=constraints,proto3" json:"constraints,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *AccessRule) Reset() { *m = AccessRule{} } +func (m *AccessRule) String() string { return proto.CompactTextString(m) } +func (*AccessRule) ProtoMessage() {} +func (*AccessRule) Descriptor() ([]byte, []int) { + return fileDescriptor_3462954d26c055c0, []int{3} +} +func (m *AccessRule) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AccessRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AccessRule.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AccessRule) XXX_Merge(src proto.Message) { + xxx_messageInfo_AccessRule.Merge(m, src) +} +func (m *AccessRule) XXX_Size() int { + return m.Size() +} +func (m *AccessRule) XXX_DiscardUnknown() { + xxx_messageInfo_AccessRule.DiscardUnknown(m) } -func (m *AccessRule) Reset() { *m = AccessRule{} } -func (m *AccessRule) String() string { return proto.CompactTextString(m) } -func (*AccessRule) ProtoMessage() {} -func (*AccessRule) Descriptor() ([]byte, []int) { return fileDescriptorRbac, []int{3} } +var xxx_messageInfo_AccessRule proto.InternalMessageInfo func (m *AccessRule) GetServices() []string { if m != nil { @@ -380,13 +497,44 @@ type AccessRule_Constraint struct { // Exact match, prefix match, and suffix match are supported. // For example, the value "v1alpha2" matches "v1alpha2" (exact match), // or "v1*" (prefix match), or "*alpha2" (suffix match). - Values []string `protobuf:"bytes,2,rep,name=values" json:"values,omitempty"` + Values []string `protobuf:"bytes,2,rep,name=values,proto3" json:"values,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *AccessRule_Constraint) Reset() { *m = AccessRule_Constraint{} } -func (m *AccessRule_Constraint) String() string { return proto.CompactTextString(m) } -func (*AccessRule_Constraint) ProtoMessage() {} -func (*AccessRule_Constraint) Descriptor() ([]byte, []int) { return fileDescriptorRbac, []int{3, 0} } +func (m *AccessRule_Constraint) Reset() { *m = AccessRule_Constraint{} } +func (m *AccessRule_Constraint) String() string { return proto.CompactTextString(m) } +func (*AccessRule_Constraint) ProtoMessage() {} +func (*AccessRule_Constraint) Descriptor() ([]byte, []int) { + return fileDescriptor_3462954d26c055c0, []int{3, 0} +} +func (m *AccessRule_Constraint) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AccessRule_Constraint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AccessRule_Constraint.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AccessRule_Constraint) XXX_Merge(src proto.Message) { + xxx_messageInfo_AccessRule_Constraint.Merge(m, src) +} +func (m *AccessRule_Constraint) XXX_Size() int { + return m.Size() +} +func (m *AccessRule_Constraint) XXX_DiscardUnknown() { + xxx_messageInfo_AccessRule_Constraint.DiscardUnknown(m) +} + +var xxx_messageInfo_AccessRule_Constraint proto.InternalMessageInfo func (m *AccessRule_Constraint) GetKey() string { if m != nil { @@ -405,18 +553,49 @@ func (m *AccessRule_Constraint) GetValues() []string { // ServiceRoleBinding assigns a ServiceRole to a list of subjects. type ServiceRoleBinding struct { // Required. List of subjects that are assigned the ServiceRole object. - Subjects []*Subject `protobuf:"bytes,1,rep,name=subjects" json:"subjects,omitempty"` + Subjects []*Subject `protobuf:"bytes,1,rep,name=subjects,proto3" json:"subjects,omitempty"` // Required. Reference to the ServiceRole object. - RoleRef *RoleRef `protobuf:"bytes,2,opt,name=roleRef" json:"roleRef,omitempty"` + RoleRef *RoleRef `protobuf:"bytes,2,opt,name=roleRef,proto3" json:"roleRef,omitempty"` // $hide_from_docs // Indicates enforcement mode of the ServiceRoleBinding. - Mode EnforcementMode `protobuf:"varint,3,opt,name=mode,proto3,enum=istio.rbac.v1alpha1.EnforcementMode" json:"mode,omitempty"` + Mode EnforcementMode `protobuf:"varint,3,opt,name=mode,proto3,enum=istio.rbac.v1alpha1.EnforcementMode" json:"mode,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ServiceRoleBinding) Reset() { *m = ServiceRoleBinding{} } +func (m *ServiceRoleBinding) String() string { return proto.CompactTextString(m) } +func (*ServiceRoleBinding) ProtoMessage() {} +func (*ServiceRoleBinding) Descriptor() ([]byte, []int) { + return fileDescriptor_3462954d26c055c0, []int{4} +} +func (m *ServiceRoleBinding) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ServiceRoleBinding) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ServiceRoleBinding.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ServiceRoleBinding) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceRoleBinding.Merge(m, src) +} +func (m *ServiceRoleBinding) XXX_Size() int { + return m.Size() +} +func (m *ServiceRoleBinding) XXX_DiscardUnknown() { + xxx_messageInfo_ServiceRoleBinding.DiscardUnknown(m) } -func (m *ServiceRoleBinding) Reset() { *m = ServiceRoleBinding{} } -func (m *ServiceRoleBinding) String() string { return proto.CompactTextString(m) } -func (*ServiceRoleBinding) ProtoMessage() {} -func (*ServiceRoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorRbac, []int{4} } +var xxx_messageInfo_ServiceRoleBinding proto.InternalMessageInfo func (m *ServiceRoleBinding) GetSubjects() []*Subject { if m != nil { @@ -448,43 +627,74 @@ type Subject struct { // Optional. A list of subject names. This is matched to the // `source.principal` attribute. If one of subject names is "*", it matches to a subject with any name. // Prefix and suffix matches are supported. - Names []string `protobuf:"bytes,4,rep,name=names" json:"names,omitempty"` + Names []string `protobuf:"bytes,4,rep,name=names,proto3" json:"names,omitempty"` // $hide_from_docs // Optional. A list of subject names that must not be matched. - NotNames []string `protobuf:"bytes,5,rep,name=not_names,json=notNames" json:"not_names,omitempty"` + NotNames []string `protobuf:"bytes,5,rep,name=not_names,json=notNames,proto3" json:"not_names,omitempty"` // $hide_from_docs // Optional. The group that the subject belongs to. // Deprecated. Use groups and not_groups instead. - Group string `protobuf:"bytes,2,opt,name=group,proto3" json:"group,omitempty"` + Group string `protobuf:"bytes,2,opt,name=group,proto3" json:"group,omitempty"` // Deprecated: Do not use. // $hide_from_docs // Optional. A list of groups that the subject represents. This is matched to the // `request.auth.claims[groups]` attribute. If not specified, it applies to any groups. - Groups []string `protobuf:"bytes,6,rep,name=groups" json:"groups,omitempty"` + Groups []string `protobuf:"bytes,6,rep,name=groups,proto3" json:"groups,omitempty"` // $hide_from_docs // Optional. A list of groups that must not be matched. - NotGroups []string `protobuf:"bytes,7,rep,name=not_groups,json=notGroups" json:"not_groups,omitempty"` + NotGroups []string `protobuf:"bytes,7,rep,name=not_groups,json=notGroups,proto3" json:"not_groups,omitempty"` // $hide_from_docs // Optional. A list of namespaces that the subject represents. This is matched to // the `source.namespace` attribute. If not specified, it applies to any namespaces. - Namespaces []string `protobuf:"bytes,8,rep,name=namespaces" json:"namespaces,omitempty"` + Namespaces []string `protobuf:"bytes,8,rep,name=namespaces,proto3" json:"namespaces,omitempty"` // $hide_from_docs // Optional. A list of namespaces that must not be matched. - NotNamespaces []string `protobuf:"bytes,9,rep,name=not_namespaces,json=notNamespaces" json:"not_namespaces,omitempty"` + NotNamespaces []string `protobuf:"bytes,9,rep,name=not_namespaces,json=notNamespaces,proto3" json:"not_namespaces,omitempty"` // $hide_from_docs // Optional. A list of IP address or CIDR ranges that the subject represents. // E.g. 192.168.100.2 or 10.1.0.0/16. If not specified, it applies to any IP addresses. - Ips []string `protobuf:"bytes,10,rep,name=ips" json:"ips,omitempty"` + Ips []string `protobuf:"bytes,10,rep,name=ips,proto3" json:"ips,omitempty"` // $hide_from_docs // Optional. A list of IP addresses or CIDR ranges that must not be matched. - NotIps []string `protobuf:"bytes,11,rep,name=not_ips,json=notIps" json:"not_ips,omitempty"` + NotIps []string `protobuf:"bytes,11,rep,name=not_ips,json=notIps,proto3" json:"not_ips,omitempty"` // Optional. The set of properties that identify the subject. - Properties map[string]string `protobuf:"bytes,3,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Properties map[string]string `protobuf:"bytes,3,rep,name=properties,proto3" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Subject) Reset() { *m = Subject{} } +func (m *Subject) String() string { return proto.CompactTextString(m) } +func (*Subject) ProtoMessage() {} +func (*Subject) Descriptor() ([]byte, []int) { + return fileDescriptor_3462954d26c055c0, []int{5} +} +func (m *Subject) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Subject) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Subject.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Subject) XXX_Merge(src proto.Message) { + xxx_messageInfo_Subject.Merge(m, src) +} +func (m *Subject) XXX_Size() int { + return m.Size() +} +func (m *Subject) XXX_DiscardUnknown() { + xxx_messageInfo_Subject.DiscardUnknown(m) } -func (m *Subject) Reset() { *m = Subject{} } -func (m *Subject) String() string { return proto.CompactTextString(m) } -func (*Subject) ProtoMessage() {} -func (*Subject) Descriptor() ([]byte, []int) { return fileDescriptorRbac, []int{5} } +var xxx_messageInfo_Subject proto.InternalMessageInfo func (m *Subject) GetUser() string { if m != nil { @@ -507,6 +717,7 @@ func (m *Subject) GetNotNames() []string { return nil } +// Deprecated: Do not use. func (m *Subject) GetGroup() string { if m != nil { return m.Group @@ -570,13 +781,44 @@ type RoleRef struct { Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` // Required. The name of the ServiceRole object being referenced. // The ServiceRole object must be in the same namespace as the ServiceRoleBinding object. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *RoleRef) Reset() { *m = RoleRef{} } +func (m *RoleRef) String() string { return proto.CompactTextString(m) } +func (*RoleRef) ProtoMessage() {} +func (*RoleRef) Descriptor() ([]byte, []int) { + return fileDescriptor_3462954d26c055c0, []int{6} +} +func (m *RoleRef) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RoleRef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RoleRef.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RoleRef) XXX_Merge(src proto.Message) { + xxx_messageInfo_RoleRef.Merge(m, src) +} +func (m *RoleRef) XXX_Size() int { + return m.Size() +} +func (m *RoleRef) XXX_DiscardUnknown() { + xxx_messageInfo_RoleRef.DiscardUnknown(m) } -func (m *RoleRef) Reset() { *m = RoleRef{} } -func (m *RoleRef) String() string { return proto.CompactTextString(m) } -func (*RoleRef) ProtoMessage() {} -func (*RoleRef) Descriptor() ([]byte, []int) { return fileDescriptorRbac, []int{6} } +var xxx_messageInfo_RoleRef proto.InternalMessageInfo func (m *RoleRef) GetKind() string { if m != nil { @@ -617,23 +859,54 @@ type RbacConfig struct { Mode RbacConfig_Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=istio.rbac.v1alpha1.RbacConfig_Mode" json:"mode,omitempty"` // A list of services or namespaces that should be enforced by Istio RBAC policies. Note: This field have // effect only when mode is ON_WITH_INCLUSION and will be ignored for any other modes. - Inclusion *RbacConfig_Target `protobuf:"bytes,2,opt,name=inclusion" json:"inclusion,omitempty"` + Inclusion *RbacConfig_Target `protobuf:"bytes,2,opt,name=inclusion,proto3" json:"inclusion,omitempty"` // A list of services or namespaces that should not be enforced by Istio RBAC policies. Note: This field have // effect only when mode is ON_WITH_EXCLUSION and will be ignored for any other modes. - Exclusion *RbacConfig_Target `protobuf:"bytes,3,opt,name=exclusion" json:"exclusion,omitempty"` + Exclusion *RbacConfig_Target `protobuf:"bytes,3,opt,name=exclusion,proto3" json:"exclusion,omitempty"` // $hide_from_docs // Indicates enforcement mode of the RbacConfig, in ENFORCED mode by default. // It's used to verify new RbacConfig work as expected before rolling to production. // When setting as PERMISSIVE, RBAC isn't enforced and has no impact on users. // RBAC engine run RbacConfig in PERMISSIVE mode and logs stats. // Invalid to set RbacConfig in PERMISSIVE and ServiceRoleBinding in ENFORCED mode. - EnforcementMode EnforcementMode `protobuf:"varint,4,opt,name=enforcement_mode,json=enforcementMode,proto3,enum=istio.rbac.v1alpha1.EnforcementMode" json:"enforcement_mode,omitempty"` + EnforcementMode EnforcementMode `protobuf:"varint,4,opt,name=enforcement_mode,json=enforcementMode,proto3,enum=istio.rbac.v1alpha1.EnforcementMode" json:"enforcement_mode,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *RbacConfig) Reset() { *m = RbacConfig{} } +func (m *RbacConfig) String() string { return proto.CompactTextString(m) } +func (*RbacConfig) ProtoMessage() {} +func (*RbacConfig) Descriptor() ([]byte, []int) { + return fileDescriptor_3462954d26c055c0, []int{7} +} +func (m *RbacConfig) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RbacConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RbacConfig.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RbacConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_RbacConfig.Merge(m, src) +} +func (m *RbacConfig) XXX_Size() int { + return m.Size() +} +func (m *RbacConfig) XXX_DiscardUnknown() { + xxx_messageInfo_RbacConfig.DiscardUnknown(m) } -func (m *RbacConfig) Reset() { *m = RbacConfig{} } -func (m *RbacConfig) String() string { return proto.CompactTextString(m) } -func (*RbacConfig) ProtoMessage() {} -func (*RbacConfig) Descriptor() ([]byte, []int) { return fileDescriptorRbac, []int{7} } +var xxx_messageInfo_RbacConfig proto.InternalMessageInfo func (m *RbacConfig) GetMode() RbacConfig_Mode { if m != nil { @@ -666,18 +939,49 @@ func (m *RbacConfig) GetEnforcementMode() EnforcementMode { // Target defines a list of services or namespaces. type RbacConfig_Target struct { // A list of services. - Services []string `protobuf:"bytes,1,rep,name=services" json:"services,omitempty"` + Services []string `protobuf:"bytes,1,rep,name=services,proto3" json:"services,omitempty"` // $hide_from_docs // A list of workloads. - WorkloadSelectors []*WorkloadSelector `protobuf:"bytes,3,rep,name=workload_selectors,json=workloadSelectors" json:"workload_selectors,omitempty"` + WorkloadSelectors []*WorkloadSelector `protobuf:"bytes,3,rep,name=workload_selectors,json=workloadSelectors,proto3" json:"workload_selectors,omitempty"` // A list of namespaces. - Namespaces []string `protobuf:"bytes,2,rep,name=namespaces" json:"namespaces,omitempty"` + Namespaces []string `protobuf:"bytes,2,rep,name=namespaces,proto3" json:"namespaces,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *RbacConfig_Target) Reset() { *m = RbacConfig_Target{} } +func (m *RbacConfig_Target) String() string { return proto.CompactTextString(m) } +func (*RbacConfig_Target) ProtoMessage() {} +func (*RbacConfig_Target) Descriptor() ([]byte, []int) { + return fileDescriptor_3462954d26c055c0, []int{7, 0} +} +func (m *RbacConfig_Target) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RbacConfig_Target) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RbacConfig_Target.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *RbacConfig_Target) XXX_Merge(src proto.Message) { + xxx_messageInfo_RbacConfig_Target.Merge(m, src) +} +func (m *RbacConfig_Target) XXX_Size() int { + return m.Size() +} +func (m *RbacConfig_Target) XXX_DiscardUnknown() { + xxx_messageInfo_RbacConfig_Target.DiscardUnknown(m) } -func (m *RbacConfig_Target) Reset() { *m = RbacConfig_Target{} } -func (m *RbacConfig_Target) String() string { return proto.CompactTextString(m) } -func (*RbacConfig_Target) ProtoMessage() {} -func (*RbacConfig_Target) Descriptor() ([]byte, []int) { return fileDescriptorRbac, []int{7, 0} } +var xxx_messageInfo_RbacConfig_Target proto.InternalMessageInfo func (m *RbacConfig_Target) GetServices() []string { if m != nil { @@ -701,19 +1005,85 @@ func (m *RbacConfig_Target) GetNamespaces() []string { } func init() { + proto.RegisterEnum("istio.rbac.v1alpha1.EnforcementMode", EnforcementMode_name, EnforcementMode_value) + proto.RegisterEnum("istio.rbac.v1alpha1.RbacConfig_Mode", RbacConfig_Mode_name, RbacConfig_Mode_value) proto.RegisterType((*WorkloadSelector)(nil), "istio.rbac.v1alpha1.WorkloadSelector") + proto.RegisterMapType((map[string]string)(nil), "istio.rbac.v1alpha1.WorkloadSelector.LabelsEntry") proto.RegisterType((*AuthorizationPolicy)(nil), "istio.rbac.v1alpha1.AuthorizationPolicy") proto.RegisterType((*ServiceRole)(nil), "istio.rbac.v1alpha1.ServiceRole") proto.RegisterType((*AccessRule)(nil), "istio.rbac.v1alpha1.AccessRule") proto.RegisterType((*AccessRule_Constraint)(nil), "istio.rbac.v1alpha1.AccessRule.Constraint") proto.RegisterType((*ServiceRoleBinding)(nil), "istio.rbac.v1alpha1.ServiceRoleBinding") proto.RegisterType((*Subject)(nil), "istio.rbac.v1alpha1.Subject") + proto.RegisterMapType((map[string]string)(nil), "istio.rbac.v1alpha1.Subject.PropertiesEntry") proto.RegisterType((*RoleRef)(nil), "istio.rbac.v1alpha1.RoleRef") proto.RegisterType((*RbacConfig)(nil), "istio.rbac.v1alpha1.RbacConfig") proto.RegisterType((*RbacConfig_Target)(nil), "istio.rbac.v1alpha1.RbacConfig.Target") - proto.RegisterEnum("istio.rbac.v1alpha1.EnforcementMode", EnforcementMode_name, EnforcementMode_value) - proto.RegisterEnum("istio.rbac.v1alpha1.RbacConfig_Mode", RbacConfig_Mode_name, RbacConfig_Mode_value) } + +func init() { proto.RegisterFile("rbac/v1alpha1/rbac.proto", fileDescriptor_3462954d26c055c0) } + +var fileDescriptor_3462954d26c055c0 = []byte{ + // 898 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x56, 0xcd, 0x6e, 0x23, 0x45, + 0x10, 0xde, 0xf1, 0xf8, 0x27, 0x53, 0x86, 0x64, 0xd2, 0xbb, 0xc0, 0xc8, 0x40, 0x36, 0xb2, 0x58, + 0xb0, 0x56, 0xc8, 0x56, 0x82, 0x58, 0x05, 0xa4, 0x3d, 0x6c, 0x12, 0x87, 0xb5, 0x94, 0xd8, 0x51, + 0x3b, 0xb0, 0x88, 0x8b, 0x35, 0x1e, 0x77, 0xe2, 0x26, 0x93, 0xee, 0x51, 0x4f, 0x4f, 0x42, 0x38, + 0x72, 0xe1, 0x15, 0x10, 0x27, 0x8e, 0x3c, 0x06, 0x47, 0x8e, 0x3c, 0x02, 0xca, 0x93, 0xa0, 0xee, + 0x9e, 0x1e, 0x7b, 0xbd, 0x26, 0x9b, 0xdc, 0xba, 0xea, 0xab, 0xaf, 0xaa, 0xab, 0xea, 0xf3, 0xb4, + 0x21, 0x10, 0xe3, 0x30, 0xea, 0x5c, 0x6e, 0x85, 0x71, 0x32, 0x0d, 0xb7, 0x3a, 0xca, 0x6a, 0x27, + 0x82, 0x4b, 0x8e, 0x1e, 0xd2, 0x54, 0x52, 0xde, 0xd6, 0x1e, 0x8b, 0x37, 0x7f, 0x73, 0xc0, 0x7f, + 0xc5, 0xc5, 0x79, 0xcc, 0xc3, 0xc9, 0x90, 0xc4, 0x24, 0x92, 0x5c, 0xa0, 0x1e, 0x54, 0xe3, 0x70, + 0x4c, 0xe2, 0x34, 0x70, 0x36, 0xdd, 0x56, 0x7d, 0x7b, 0xab, 0xbd, 0x84, 0xda, 0x5e, 0xa4, 0xb5, + 0x0f, 0x35, 0xa7, 0xcb, 0xa4, 0xb8, 0xc6, 0x79, 0x82, 0xc6, 0x57, 0x50, 0x9f, 0x73, 0x23, 0x1f, + 0xdc, 0x73, 0x72, 0x1d, 0x38, 0x9b, 0x4e, 0xcb, 0xc3, 0xea, 0x88, 0x1e, 0x41, 0xe5, 0x32, 0x8c, + 0x33, 0x12, 0x94, 0xb4, 0xcf, 0x18, 0x5f, 0x97, 0x76, 0x9c, 0xe6, 0x9f, 0x0e, 0x3c, 0x7c, 0x91, + 0xc9, 0x29, 0x17, 0xf4, 0xe7, 0x50, 0x52, 0xce, 0x8e, 0x79, 0x4c, 0xa3, 0x6b, 0x84, 0x61, 0xfd, + 0x2a, 0x2f, 0x3d, 0x4a, 0xf3, 0xda, 0x3a, 0x63, 0x7d, 0xfb, 0xc9, 0x9d, 0x2e, 0x8a, 0xfd, 0xab, + 0xc5, 0x8e, 0x9f, 0x43, 0x25, 0x8c, 0x63, 0x7e, 0x15, 0x94, 0x74, 0xc3, 0x9f, 0x2d, 0xcd, 0x33, + 0x24, 0xe2, 0x92, 0x46, 0x04, 0xf3, 0x98, 0xec, 0x52, 0x36, 0xa1, 0xec, 0x0c, 0x1b, 0x56, 0x73, + 0x1f, 0xea, 0x73, 0x20, 0xfa, 0x12, 0x2a, 0x22, 0x8b, 0x89, 0x1d, 0xdf, 0xe3, 0xa5, 0xd9, 0x5e, + 0x44, 0x11, 0x49, 0x53, 0x9c, 0xc5, 0x04, 0x9b, 0xe8, 0xe6, 0x2f, 0x2e, 0xc0, 0xcc, 0x8b, 0x1a, + 0xb0, 0x92, 0x9a, 0xa4, 0x26, 0x91, 0x87, 0x0b, 0x5b, 0x4d, 0x6d, 0xca, 0x53, 0x99, 0x06, 0x15, + 0x0d, 0x18, 0x03, 0x7d, 0x08, 0x1e, 0xe3, 0x72, 0x64, 0x90, 0xaa, 0xa1, 0x30, 0x2e, 0x5f, 0x6a, + 0xf0, 0x11, 0x54, 0x92, 0x50, 0x4e, 0x53, 0xdd, 0xa2, 0x87, 0x8d, 0x61, 0x29, 0x06, 0xa9, 0x15, + 0x94, 0x63, 0x0d, 0x06, 0x50, 0xbb, 0x20, 0x72, 0xca, 0x27, 0x69, 0xe0, 0x6a, 0xc8, 0x9a, 0xe8, + 0x31, 0xd4, 0x15, 0xcd, 0xa2, 0x2b, 0x1a, 0x05, 0xc6, 0xe5, 0x51, 0x1e, 0xa0, 0xaa, 0x71, 0x21, + 0xd3, 0xc0, 0xdb, 0x74, 0x5b, 0x15, 0x6c, 0x8c, 0xa2, 0x9a, 0x46, 0x40, 0x23, 0xba, 0x9a, 0x06, + 0x0f, 0xa1, 0x1e, 0x71, 0x96, 0x4a, 0x11, 0x52, 0x26, 0xd3, 0xa0, 0xac, 0x67, 0xf7, 0xf4, 0x2d, + 0xb3, 0x6b, 0xef, 0x15, 0x14, 0x3c, 0x4f, 0x6f, 0x3c, 0x03, 0x98, 0x41, 0x4b, 0x74, 0xf7, 0x3e, + 0x54, 0xb5, 0xd4, 0xec, 0x3c, 0x72, 0xab, 0xf9, 0x97, 0x03, 0xe8, 0xcd, 0x45, 0xa3, 0x1d, 0x58, + 0x49, 0xb3, 0xf1, 0x8f, 0x24, 0x92, 0x76, 0xab, 0x1f, 0x2d, 0xd7, 0x88, 0x09, 0xc2, 0x45, 0x34, + 0x7a, 0x06, 0x35, 0xc1, 0x63, 0x82, 0xc9, 0xa9, 0x96, 0xf8, 0xff, 0x11, 0xb1, 0x89, 0xc1, 0x36, + 0x18, 0xed, 0x40, 0xf9, 0x82, 0x4f, 0x48, 0xe0, 0x6e, 0x3a, 0xad, 0xd5, 0xed, 0x4f, 0x96, 0x92, + 0xba, 0xec, 0x94, 0x8b, 0x88, 0x5c, 0x10, 0x26, 0x8f, 0xf8, 0x84, 0x60, 0xcd, 0x68, 0xfe, 0xe1, + 0x42, 0x2d, 0xbf, 0x07, 0x42, 0x50, 0xce, 0x52, 0x22, 0xf2, 0xce, 0xf5, 0x59, 0xed, 0x86, 0x85, + 0x17, 0xc4, 0x8c, 0xd8, 0xc3, 0xc6, 0xb0, 0xbb, 0x31, 0x48, 0xa5, 0x50, 0x42, 0x5f, 0x83, 0x01, + 0x54, 0xce, 0x04, 0xcf, 0x12, 0xf3, 0x2b, 0xdd, 0x2d, 0x05, 0x0e, 0x36, 0x0e, 0x35, 0x47, 0x7d, + 0xb0, 0x82, 0xcb, 0x2d, 0xf4, 0x31, 0x28, 0x39, 0x8c, 0x72, 0xcc, 0x28, 0x4b, 0x15, 0xf8, 0xc6, + 0xc0, 0x1b, 0x00, 0xba, 0x52, 0x12, 0x2a, 0x79, 0x5b, 0xfd, 0x14, 0x1e, 0xf4, 0x04, 0x56, 0x8b, + 0xdb, 0x98, 0x18, 0x4f, 0xc7, 0xbc, 0x6b, 0xaf, 0x64, 0xc2, 0x7c, 0x70, 0x69, 0x62, 0xa4, 0xe4, + 0x61, 0x75, 0x44, 0x1f, 0x40, 0x4d, 0x11, 0x95, 0xb7, 0x6e, 0x2e, 0xc4, 0xb8, 0xec, 0x25, 0x4a, + 0x5e, 0x90, 0x08, 0x9e, 0x10, 0x21, 0x29, 0x31, 0x7a, 0xae, 0x6f, 0x7f, 0x7e, 0xdb, 0x0e, 0xdb, + 0xc7, 0x45, 0xb8, 0xf9, 0xa6, 0xcd, 0xf1, 0x1b, 0xcf, 0x61, 0x6d, 0x01, 0xbe, 0xd7, 0xb7, 0x6d, + 0x0b, 0x6a, 0xf9, 0xc2, 0xd5, 0x86, 0xce, 0x29, 0x9b, 0xd8, 0x0d, 0xa9, 0xb3, 0xf2, 0xa9, 0xce, + 0x73, 0x9e, 0x3e, 0x37, 0x7f, 0x2d, 0x03, 0xe0, 0x71, 0x18, 0xed, 0x71, 0x76, 0x4a, 0xcf, 0x0a, + 0x79, 0x38, 0xb7, 0xc8, 0x63, 0x16, 0xde, 0x9e, 0xc9, 0x03, 0xed, 0x83, 0x47, 0x59, 0x14, 0x67, + 0x29, 0xe5, 0x2c, 0x97, 0xe4, 0xa7, 0x6f, 0xa3, 0x9f, 0x84, 0xe2, 0x8c, 0x48, 0x3c, 0x23, 0xaa, + 0x2c, 0xe4, 0x27, 0x9b, 0xc5, 0xbd, 0x5f, 0x96, 0x82, 0x88, 0x06, 0xe0, 0x93, 0x99, 0x86, 0x47, + 0xba, 0xa3, 0xf2, 0x3d, 0x04, 0xbf, 0x46, 0x5e, 0x77, 0x34, 0x7e, 0x77, 0xa0, 0x6a, 0xca, 0xdc, + 0xfa, 0xfd, 0x3c, 0x01, 0xf4, 0xc6, 0x1b, 0x62, 0x45, 0x71, 0xc7, 0x47, 0x64, 0x7d, 0xf1, 0x11, + 0x59, 0x14, 0x75, 0x69, 0x51, 0xd4, 0xcd, 0x2e, 0x94, 0xd5, 0x25, 0x51, 0x0d, 0xdc, 0xc1, 0xc1, + 0x81, 0xff, 0x00, 0x55, 0xa1, 0x34, 0xe8, 0xfb, 0x0e, 0x7a, 0x0f, 0xd6, 0x07, 0xfd, 0xd1, 0xab, + 0xde, 0xc9, 0xcb, 0x51, 0xaf, 0xbf, 0x77, 0xf8, 0xed, 0xb0, 0x37, 0xe8, 0xfb, 0xa5, 0x79, 0x77, + 0xf7, 0x7b, 0xeb, 0x76, 0x9f, 0x76, 0x60, 0x6d, 0x61, 0x0e, 0xe8, 0x1d, 0x58, 0xe9, 0xf6, 0x0f, + 0x06, 0x78, 0xaf, 0xbb, 0xef, 0x3f, 0x40, 0xab, 0x00, 0xc7, 0x5d, 0x7c, 0xd4, 0x1b, 0x0e, 0x7b, + 0xdf, 0x75, 0x7d, 0x67, 0xb7, 0xf5, 0xf7, 0xcd, 0x86, 0xf3, 0xcf, 0xcd, 0x86, 0xf3, 0xef, 0xcd, + 0x86, 0xf3, 0x43, 0xc3, 0xb4, 0x47, 0x79, 0x27, 0x4c, 0x68, 0xe7, 0xb5, 0xbf, 0x0b, 0xe3, 0xaa, + 0xfe, 0xab, 0xf0, 0xc5, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x63, 0x73, 0xac, 0x2f, 0x46, 0x08, + 0x00, 0x00, +} + func (m *WorkloadSelector) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -746,6 +1116,9 @@ func (m *WorkloadSelector) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], v) } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -786,6 +1159,9 @@ func (m *AuthorizationPolicy) MarshalTo(dAtA []byte) (int, error) { i += n } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -816,6 +1192,9 @@ func (m *ServiceRole) MarshalTo(dAtA []byte) (int, error) { i += n } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -987,6 +1366,9 @@ func (m *AccessRule) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintRbac(dAtA, i, uint64(j4)) i += copy(dAtA[i:], dAtA5[:j4]) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -1026,6 +1408,9 @@ func (m *AccessRule_Constraint) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], s) } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -1071,6 +1456,9 @@ func (m *ServiceRoleBinding) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintRbac(dAtA, i, uint64(m.Mode)) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -1238,6 +1626,9 @@ func (m *Subject) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], s) } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -1268,6 +1659,9 @@ func (m *RoleRef) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintRbac(dAtA, i, uint64(len(m.Name))) i += copy(dAtA[i:], m.Name) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -1316,6 +1710,9 @@ func (m *RbacConfig) MarshalTo(dAtA []byte) (int, error) { i++ i = encodeVarintRbac(dAtA, i, uint64(m.EnforcementMode)) } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -1376,6 +1773,9 @@ func (m *RbacConfig_Target) MarshalTo(dAtA []byte) (int, error) { i += n } } + if m.XXX_unrecognized != nil { + i += copy(dAtA[i:], m.XXX_unrecognized) + } return i, nil } @@ -1389,6 +1789,9 @@ func encodeVarintRbac(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *WorkloadSelector) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Labels) > 0 { @@ -1399,10 +1802,16 @@ func (m *WorkloadSelector) Size() (n int) { n += mapEntrySize + 1 + sovRbac(uint64(mapEntrySize)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *AuthorizationPolicy) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.WorkloadSelector != nil { @@ -1415,10 +1824,16 @@ func (m *AuthorizationPolicy) Size() (n int) { n += 1 + l + sovRbac(uint64(l)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *ServiceRole) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Rules) > 0 { @@ -1427,10 +1842,16 @@ func (m *ServiceRole) Size() (n int) { n += 1 + l + sovRbac(uint64(l)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *AccessRule) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Services) > 0 { @@ -1495,10 +1916,16 @@ func (m *AccessRule) Size() (n int) { } n += 1 + sovRbac(uint64(l)) + l } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *AccessRule_Constraint) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Key) @@ -1511,10 +1938,16 @@ func (m *AccessRule_Constraint) Size() (n int) { n += 1 + l + sovRbac(uint64(l)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *ServiceRoleBinding) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Subjects) > 0 { @@ -1530,10 +1963,16 @@ func (m *ServiceRoleBinding) Size() (n int) { if m.Mode != 0 { n += 1 + sovRbac(uint64(m.Mode)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *Subject) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.User) @@ -1600,10 +2039,16 @@ func (m *Subject) Size() (n int) { n += 1 + l + sovRbac(uint64(l)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *RoleRef) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Kind) @@ -1614,10 +2059,16 @@ func (m *RoleRef) Size() (n int) { if l > 0 { n += 1 + l + sovRbac(uint64(l)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *RbacConfig) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Mode != 0 { @@ -1634,10 +2085,16 @@ func (m *RbacConfig) Size() (n int) { if m.EnforcementMode != 0 { n += 1 + sovRbac(uint64(m.EnforcementMode)) } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } func (m *RbacConfig_Target) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Services) > 0 { @@ -1658,6 +2115,9 @@ func (m *RbacConfig_Target) Size() (n int) { n += 1 + l + sovRbac(uint64(l)) } } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } return n } @@ -1689,7 +2149,7 @@ func (m *WorkloadSelector) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1717,7 +2177,7 @@ func (m *WorkloadSelector) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1726,6 +2186,9 @@ func (m *WorkloadSelector) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1746,7 +2209,7 @@ func (m *WorkloadSelector) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1763,7 +2226,7 @@ func (m *WorkloadSelector) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1773,6 +2236,9 @@ func (m *WorkloadSelector) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthRbac + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -1789,7 +2255,7 @@ func (m *WorkloadSelector) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1799,6 +2265,9 @@ func (m *WorkloadSelector) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthRbac + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -1830,9 +2299,13 @@ func (m *WorkloadSelector) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthRbac } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthRbac + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -1857,7 +2330,7 @@ func (m *AuthorizationPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1885,7 +2358,7 @@ func (m *AuthorizationPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1894,6 +2367,9 @@ func (m *AuthorizationPolicy) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1918,7 +2394,7 @@ func (m *AuthorizationPolicy) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1927,6 +2403,9 @@ func (m *AuthorizationPolicy) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1944,9 +2423,13 @@ func (m *AuthorizationPolicy) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthRbac } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthRbac + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -1971,7 +2454,7 @@ func (m *ServiceRole) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1999,7 +2482,7 @@ func (m *ServiceRole) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2008,6 +2491,9 @@ func (m *ServiceRole) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2025,9 +2511,13 @@ func (m *ServiceRole) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthRbac } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthRbac + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -2052,7 +2542,7 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2080,7 +2570,7 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2090,6 +2580,9 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2109,7 +2602,7 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2119,6 +2612,9 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2138,7 +2634,7 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2148,6 +2644,9 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2167,7 +2666,7 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2176,6 +2675,9 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2198,7 +2700,7 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2208,6 +2710,9 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2227,7 +2732,7 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2237,6 +2742,9 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2256,7 +2764,7 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2266,6 +2774,9 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2285,7 +2796,7 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2295,6 +2806,9 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2312,7 +2826,7 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int32(b) & 0x7F) << shift + v |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -2329,7 +2843,7 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - packedLen |= (int(b) & 0x7F) << shift + packedLen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2338,9 +2852,23 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + packedLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } + var elementCount int + var count int + for _, integer := range dAtA[iNdEx:postIndex] { + if integer < 128 { + count++ + } + } + elementCount = count + if elementCount != 0 && len(m.Ports) == 0 { + m.Ports = make([]int32, 0, elementCount) + } for iNdEx < postIndex { var v int32 for shift := uint(0); ; shift += 7 { @@ -2352,7 +2880,7 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int32(b) & 0x7F) << shift + v |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -2374,7 +2902,7 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int32(b) & 0x7F) << shift + v |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -2391,7 +2919,7 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - packedLen |= (int(b) & 0x7F) << shift + packedLen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2400,9 +2928,23 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + packedLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } + var elementCount int + var count int + for _, integer := range dAtA[iNdEx:postIndex] { + if integer < 128 { + count++ + } + } + elementCount = count + if elementCount != 0 && len(m.NotPorts) == 0 { + m.NotPorts = make([]int32, 0, elementCount) + } for iNdEx < postIndex { var v int32 for shift := uint(0); ; shift += 7 { @@ -2414,7 +2956,7 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int32(b) & 0x7F) << shift + v |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -2433,9 +2975,13 @@ func (m *AccessRule) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthRbac } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthRbac + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -2460,7 +3006,7 @@ func (m *AccessRule_Constraint) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2488,7 +3034,7 @@ func (m *AccessRule_Constraint) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2498,6 +3044,9 @@ func (m *AccessRule_Constraint) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2517,7 +3066,7 @@ func (m *AccessRule_Constraint) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2527,6 +3076,9 @@ func (m *AccessRule_Constraint) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2541,9 +3093,13 @@ func (m *AccessRule_Constraint) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthRbac } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthRbac + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -2568,7 +3124,7 @@ func (m *ServiceRoleBinding) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2596,7 +3152,7 @@ func (m *ServiceRoleBinding) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2605,6 +3161,9 @@ func (m *ServiceRoleBinding) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2627,7 +3186,7 @@ func (m *ServiceRoleBinding) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2636,6 +3195,9 @@ func (m *ServiceRoleBinding) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2660,7 +3222,7 @@ func (m *ServiceRoleBinding) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Mode |= (EnforcementMode(b) & 0x7F) << shift + m.Mode |= EnforcementMode(b&0x7F) << shift if b < 0x80 { break } @@ -2674,9 +3236,13 @@ func (m *ServiceRoleBinding) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthRbac } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthRbac + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -2701,7 +3267,7 @@ func (m *Subject) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2729,7 +3295,7 @@ func (m *Subject) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2739,6 +3305,9 @@ func (m *Subject) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2758,7 +3327,7 @@ func (m *Subject) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2768,6 +3337,9 @@ func (m *Subject) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2787,7 +3359,7 @@ func (m *Subject) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2796,6 +3368,9 @@ func (m *Subject) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2816,7 +3391,7 @@ func (m *Subject) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2833,7 +3408,7 @@ func (m *Subject) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2843,6 +3418,9 @@ func (m *Subject) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthRbac + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -2859,7 +3437,7 @@ func (m *Subject) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapvalue |= (uint64(b) & 0x7F) << shift + stringLenmapvalue |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2869,6 +3447,9 @@ func (m *Subject) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthRbac + } if postStringIndexmapvalue > l { return io.ErrUnexpectedEOF } @@ -2905,7 +3486,7 @@ func (m *Subject) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2915,6 +3496,9 @@ func (m *Subject) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2934,7 +3518,7 @@ func (m *Subject) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2944,6 +3528,9 @@ func (m *Subject) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2963,7 +3550,7 @@ func (m *Subject) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2973,6 +3560,9 @@ func (m *Subject) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2992,7 +3582,7 @@ func (m *Subject) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3002,6 +3592,9 @@ func (m *Subject) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3021,7 +3614,7 @@ func (m *Subject) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3031,6 +3624,9 @@ func (m *Subject) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3050,7 +3646,7 @@ func (m *Subject) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3060,6 +3656,9 @@ func (m *Subject) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3079,7 +3678,7 @@ func (m *Subject) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3089,6 +3688,9 @@ func (m *Subject) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3108,7 +3710,7 @@ func (m *Subject) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3118,6 +3720,9 @@ func (m *Subject) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3132,9 +3737,13 @@ func (m *Subject) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthRbac } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthRbac + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -3159,7 +3768,7 @@ func (m *RoleRef) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3187,7 +3796,7 @@ func (m *RoleRef) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3197,6 +3806,9 @@ func (m *RoleRef) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3216,7 +3828,7 @@ func (m *RoleRef) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3226,6 +3838,9 @@ func (m *RoleRef) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3240,9 +3855,13 @@ func (m *RoleRef) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthRbac } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthRbac + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -3267,7 +3886,7 @@ func (m *RbacConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3295,7 +3914,7 @@ func (m *RbacConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Mode |= (RbacConfig_Mode(b) & 0x7F) << shift + m.Mode |= RbacConfig_Mode(b&0x7F) << shift if b < 0x80 { break } @@ -3314,7 +3933,7 @@ func (m *RbacConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -3323,6 +3942,9 @@ func (m *RbacConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3347,7 +3969,7 @@ func (m *RbacConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -3356,6 +3978,9 @@ func (m *RbacConfig) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3380,7 +4005,7 @@ func (m *RbacConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.EnforcementMode |= (EnforcementMode(b) & 0x7F) << shift + m.EnforcementMode |= EnforcementMode(b&0x7F) << shift if b < 0x80 { break } @@ -3394,9 +4019,13 @@ func (m *RbacConfig) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthRbac } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthRbac + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -3421,7 +4050,7 @@ func (m *RbacConfig_Target) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3449,7 +4078,7 @@ func (m *RbacConfig_Target) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3459,6 +4088,9 @@ func (m *RbacConfig_Target) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3478,7 +4110,7 @@ func (m *RbacConfig_Target) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3488,6 +4120,9 @@ func (m *RbacConfig_Target) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3507,7 +4142,7 @@ func (m *RbacConfig_Target) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -3516,6 +4151,9 @@ func (m *RbacConfig_Target) Unmarshal(dAtA []byte) error { return ErrInvalidLengthRbac } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRbac + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3533,9 +4171,13 @@ func (m *RbacConfig_Target) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthRbac } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthRbac + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) iNdEx += skippy } } @@ -3599,10 +4241,13 @@ func skipRbac(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthRbac } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthRbac + } return iNdEx, nil case 3: for { @@ -3631,6 +4276,9 @@ func skipRbac(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthRbac + } } return iNdEx, nil case 4: @@ -3649,66 +4297,3 @@ var ( ErrInvalidLengthRbac = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowRbac = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("rbac/v1alpha1/rbac.proto", fileDescriptorRbac) } - -var fileDescriptorRbac = []byte{ - // 902 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x56, 0x4f, 0x6f, 0x23, 0x35, - 0x14, 0xdf, 0xc9, 0xe4, 0x4f, 0xe7, 0x05, 0xda, 0xa9, 0x17, 0x96, 0x51, 0x80, 0x6e, 0x15, 0xb1, - 0x10, 0xad, 0x50, 0xa2, 0x16, 0xb1, 0x2a, 0x48, 0x7b, 0xd8, 0xb6, 0x29, 0x1b, 0xa9, 0x4d, 0x2a, - 0xa7, 0xb0, 0x88, 0x4b, 0x34, 0x99, 0xb8, 0x8d, 0xe9, 0xc4, 0x1e, 0xd9, 0x4e, 0x4b, 0x39, 0x72, - 0xe1, 0x2b, 0x20, 0x4e, 0x1c, 0xf9, 0x18, 0x1c, 0x39, 0xf2, 0x11, 0x50, 0x3f, 0x09, 0xb2, 0x3d, - 0x33, 0x49, 0xd3, 0xd0, 0x6d, 0x6f, 0x7e, 0x7f, 0x7e, 0xef, 0xfd, 0x9e, 0xdf, 0xcf, 0x99, 0x40, - 0x20, 0x86, 0x61, 0xd4, 0xba, 0xd8, 0x0a, 0xe3, 0x64, 0x1c, 0x6e, 0xb5, 0xb4, 0xd5, 0x4c, 0x04, - 0x57, 0x1c, 0x3d, 0xa6, 0x52, 0x51, 0xde, 0x34, 0x9e, 0x2c, 0x5e, 0xff, 0xcd, 0x01, 0xff, 0x0d, - 0x17, 0xe7, 0x31, 0x0f, 0x47, 0x7d, 0x12, 0x93, 0x48, 0x71, 0x81, 0x3a, 0x50, 0x8e, 0xc3, 0x21, - 0x89, 0x65, 0xe0, 0x6c, 0xba, 0x8d, 0xea, 0xf6, 0x56, 0x73, 0x09, 0xb4, 0xb9, 0x08, 0x6b, 0x1e, - 0x1a, 0x4c, 0x9b, 0x29, 0x71, 0x85, 0xd3, 0x02, 0xb5, 0xaf, 0xa0, 0x3a, 0xe7, 0x46, 0x3e, 0xb8, - 0xe7, 0xe4, 0x2a, 0x70, 0x36, 0x9d, 0x86, 0x87, 0xf5, 0x11, 0xbd, 0x07, 0xa5, 0x8b, 0x30, 0x9e, - 0x92, 0xa0, 0x60, 0x7c, 0xd6, 0xf8, 0xba, 0xb0, 0xe3, 0xd4, 0xff, 0x74, 0xe0, 0xf1, 0xab, 0xa9, - 0x1a, 0x73, 0x41, 0x7f, 0x0e, 0x15, 0xe5, 0xec, 0x98, 0xc7, 0x34, 0xba, 0x42, 0x18, 0xd6, 0x2f, - 0xd3, 0xd6, 0x03, 0x99, 0xf6, 0x36, 0x15, 0xab, 0xdb, 0xcf, 0xee, 0x45, 0x14, 0xfb, 0x97, 0x8b, - 0x13, 0xbf, 0x84, 0x52, 0x18, 0xc7, 0xfc, 0x32, 0x28, 0x98, 0x81, 0x3f, 0x5b, 0x5a, 0xa7, 0x4f, - 0xc4, 0x05, 0x8d, 0x08, 0xe6, 0x31, 0xd9, 0xa5, 0x6c, 0x44, 0xd9, 0x19, 0xb6, 0xa8, 0xfa, 0x3e, - 0x54, 0xe7, 0x82, 0xe8, 0x4b, 0x28, 0x89, 0x69, 0x4c, 0xb2, 0xeb, 0x7b, 0xba, 0xb4, 0xda, 0xab, - 0x28, 0x22, 0x52, 0xe2, 0x69, 0x4c, 0xb0, 0xcd, 0xae, 0xff, 0xe2, 0x02, 0xcc, 0xbc, 0xa8, 0x06, - 0x2b, 0xd2, 0x16, 0xb5, 0x85, 0x3c, 0x9c, 0xdb, 0xfa, 0xd6, 0x92, 0x50, 0x8d, 0xa5, 0xe1, 0xeb, - 0x61, 0x6b, 0xa0, 0x00, 0x2a, 0x13, 0xa2, 0xc6, 0x7c, 0x24, 0x03, 0xd7, 0xf8, 0x33, 0x13, 0x1d, - 0x42, 0x35, 0xe2, 0x4c, 0x2a, 0x11, 0x52, 0xa6, 0x64, 0x50, 0x34, 0xbc, 0x9e, 0xbf, 0x85, 0x57, - 0x73, 0x2f, 0x87, 0xe0, 0x79, 0xb8, 0xee, 0x3e, 0xe6, 0x52, 0xc9, 0xa0, 0x64, 0xbb, 0x1b, 0x03, - 0x7d, 0x08, 0x1e, 0xe3, 0x6a, 0x60, 0x23, 0x65, 0x4b, 0x98, 0x71, 0xf5, 0x7a, 0x3e, 0x68, 0x49, - 0x57, 0xf2, 0xe0, 0xb1, 0xe1, 0xfd, 0x14, 0xaa, 0x3a, 0x98, 0x71, 0x5f, 0x31, 0x61, 0x60, 0x5c, - 0x1d, 0xa5, 0xf4, 0xf5, 0xb8, 0x5c, 0x28, 0x19, 0x78, 0x9b, 0x6e, 0xa3, 0x84, 0xad, 0x91, 0xd7, - 0x34, 0x11, 0x30, 0x11, 0x53, 0x53, 0xdb, 0xb5, 0x17, 0x00, 0x33, 0xfa, 0x4b, 0x74, 0xf7, 0x04, - 0xca, 0x46, 0x6a, 0xd9, 0x15, 0xa6, 0x56, 0xfd, 0x2f, 0x07, 0xd0, 0xed, 0x45, 0xa3, 0x1d, 0x58, - 0x91, 0xd3, 0xe1, 0x8f, 0x24, 0x52, 0xd9, 0x56, 0x3f, 0x5a, 0xae, 0x11, 0x9b, 0x84, 0xf3, 0x6c, - 0xf4, 0x02, 0x2a, 0x82, 0xc7, 0x04, 0x93, 0x53, 0x23, 0xf1, 0xff, 0x03, 0x62, 0x9b, 0x83, 0xb3, - 0x64, 0xb4, 0x03, 0xc5, 0x09, 0x1f, 0x91, 0xc0, 0xdd, 0x74, 0x1a, 0xab, 0xdb, 0x9f, 0x2c, 0x05, - 0xb5, 0xd9, 0x29, 0x17, 0x11, 0x99, 0x10, 0xa6, 0x8e, 0xf8, 0x88, 0x60, 0x83, 0xa8, 0xff, 0xe1, - 0x42, 0x25, 0xe5, 0x81, 0x10, 0x14, 0xa7, 0x92, 0x88, 0x74, 0x72, 0x73, 0x46, 0x01, 0x94, 0xce, - 0x04, 0x9f, 0x26, 0xf6, 0xc9, 0xed, 0x16, 0x02, 0x07, 0x5b, 0x07, 0x3a, 0x04, 0x48, 0x04, 0x4f, - 0x88, 0x50, 0x94, 0x58, 0x0d, 0x55, 0xb7, 0x3f, 0xbf, 0x6b, 0xce, 0xe6, 0x71, 0x9e, 0x6e, 0xdf, - 0xfd, 0x1c, 0x5e, 0x6f, 0x8d, 0x85, 0x13, 0x62, 0xe5, 0xe6, 0x61, 0x6b, 0x64, 0x5b, 0xb3, 0x91, - 0x52, 0xae, 0x84, 0xae, 0x09, 0x3e, 0x81, 0xb2, 0x61, 0x92, 0x09, 0x28, 0xb5, 0xd0, 0xc7, 0xa0, - 0xe5, 0x30, 0x48, 0x63, 0x56, 0x3f, 0xba, 0xcc, 0x37, 0x36, 0xbc, 0x01, 0x60, 0xea, 0x25, 0xa1, - 0x7e, 0x2c, 0x99, 0x7e, 0x72, 0x0f, 0x7a, 0x06, 0xab, 0x79, 0x4f, 0x9b, 0xe3, 0x99, 0x9c, 0x77, - 0xb3, 0xc6, 0x36, 0xcd, 0x07, 0x97, 0x26, 0x56, 0x4a, 0x1e, 0xd6, 0x47, 0xf4, 0x01, 0x54, 0x34, - 0x50, 0x7b, 0xab, 0x96, 0x10, 0xe3, 0xaa, 0x93, 0xc8, 0xda, 0x4b, 0x58, 0x5b, 0x18, 0xfd, 0x41, - 0xbf, 0x6d, 0x5b, 0x50, 0x49, 0x17, 0xae, 0x37, 0x74, 0x4e, 0xd9, 0x28, 0xdb, 0x90, 0x3e, 0x6b, - 0x9f, 0xe6, 0x9a, 0xe2, 0xcc, 0xb9, 0xfe, 0x6b, 0x11, 0x00, 0x0f, 0xc3, 0x68, 0x8f, 0xb3, 0x53, - 0x7a, 0x96, 0xcb, 0xc3, 0xb9, 0x43, 0x1e, 0xb3, 0xf4, 0xe6, 0x4c, 0x1e, 0x68, 0x1f, 0x3c, 0xca, - 0xa2, 0x78, 0x2a, 0x29, 0x67, 0xa9, 0x24, 0x3f, 0x7d, 0x1b, 0xfc, 0x24, 0x14, 0x67, 0x44, 0xe1, - 0x19, 0x50, 0x57, 0x21, 0x3f, 0x65, 0x55, 0xdc, 0x87, 0x55, 0xc9, 0x81, 0xa8, 0x07, 0x3e, 0x99, - 0x69, 0x78, 0x60, 0x26, 0x2a, 0x3e, 0x40, 0xf0, 0x6b, 0xe4, 0xa6, 0xa3, 0xf6, 0xbb, 0x03, 0x65, - 0xdb, 0xe6, 0xce, 0xdf, 0xcf, 0x9b, 0x82, 0x29, 0xdc, 0x12, 0xcc, 0x09, 0xa0, 0x5b, 0xdf, 0x98, - 0xec, 0x41, 0xdc, 0xf3, 0x23, 0xb3, 0xbe, 0xf8, 0x91, 0x91, 0xf5, 0x36, 0x14, 0x35, 0x49, 0x54, - 0x01, 0xb7, 0x77, 0x70, 0xe0, 0x3f, 0x42, 0x65, 0x28, 0xf4, 0xba, 0xbe, 0x83, 0xde, 0x87, 0xf5, - 0x5e, 0x77, 0xf0, 0xa6, 0x73, 0xf2, 0x7a, 0xd0, 0xe9, 0xee, 0x1d, 0x7e, 0xdb, 0xef, 0xf4, 0xba, - 0x7e, 0x61, 0xde, 0xdd, 0xfe, 0x3e, 0x73, 0xbb, 0xcf, 0x5b, 0xb0, 0xb6, 0x70, 0x0f, 0xe8, 0x1d, - 0x58, 0x69, 0x77, 0x0f, 0x7a, 0x78, 0xaf, 0xbd, 0xef, 0x3f, 0x42, 0xab, 0x00, 0xc7, 0x6d, 0x7c, - 0xd4, 0xe9, 0xf7, 0x3b, 0xdf, 0xb5, 0x7d, 0x67, 0xb7, 0xf1, 0xf7, 0xf5, 0x86, 0xf3, 0xcf, 0xf5, - 0x86, 0xf3, 0xef, 0xf5, 0x86, 0xf3, 0x43, 0xcd, 0xd2, 0xa7, 0xbc, 0x15, 0x26, 0xb4, 0x75, 0xe3, - 0xef, 0xc2, 0xb0, 0x6c, 0xfe, 0x2a, 0x7c, 0xf1, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd5, 0x1c, - 0xa3, 0xc1, 0x46, 0x08, 0x00, 0x00, -} diff --git a/tools/all/Dockerfile b/tools/all/Dockerfile index 0c8c47956e2..98bab42f2af 100644 --- a/tools/all/Dockerfile +++ b/tools/all/Dockerfile @@ -8,7 +8,7 @@ RUN apk update && \ FROM gcr.io/istio-testing/protolock:2018-10-23 as protolock -FROM gcr.io/istio-testing/protoc:2018-06-12 +FROM gcr.io/istio-testing/protoc:2019-02-25 COPY --from=protolock \ /usr/bin/protolock \ diff --git a/tools/all/build-and-push.sh b/tools/all/build-and-push.sh index 4f4a2d5eb35..0f7e06308ee 100755 --- a/tools/all/build-and-push.sh +++ b/tools/all/build-and-push.sh @@ -8,5 +8,4 @@ HUB=gcr.io/istio-testing VERSION=$(date +%Y-%m-%d) docker build --no-cache -t $HUB/api-build-tools:$VERSION . - -gcloud docker -- push $HUB/api-build-tools:$VERSION +docker push $HUB/api-build-tools:$VERSION diff --git a/tools/protoc/build-and-push.sh b/tools/protoc/build-and-push.sh index ab6ad5fbce2..deac746d9ce 100755 --- a/tools/protoc/build-and-push.sh +++ b/tools/protoc/build-and-push.sh @@ -8,5 +8,4 @@ HUB=gcr.io/istio-testing VERSION=$(date +%Y-%m-%d) docker build --no-cache -t $HUB/protoc:$VERSION . - -gcloud docker -- push $HUB/protoc:$VERSION +docker push $HUB/protoc:$VERSION

privateKey string -

The path to the file holding the private key for mtls. If omitted, the -default mixer private key will be used.

+

The path to the file holding the private key for mutual TLS. If omitted, the +default Mixer private key will be used.

clientCertificate string -

The path to the file holding client certificate for mtls. If omitted, the -default mixer certificates will be used.

+

The path to the file holding client certificate for mutual TLS. If omitted, the +default Mixer certificates will be used.

string

The path to the file holding additional CA certificates that are needed to -verify the presented adapter certificates. By default mixer should already +verify the presented adapter certificates. By default Mixer should already include Istio CA certificates and system certificates in cert pool.