From 34af55b138f4968fcab9f5e329d2d5ea6bcca2a8 Mon Sep 17 00:00:00 2001 From: James Peach Date: Tue, 16 Jun 2020 13:01:59 +1000 Subject: [PATCH] Update Gateway status and conditions. The structure for exposing Listener status was broken in #193 because the Listener Name field was removed. This means that status can no longer be associated to a Listener by matching the name. However, since Listeners are basically metadata wrapped around ports, we can expose granular Listener status by publishing a ListenerStatus object for each port that is bound on the Gateway. This lets us model port conflicts in a reasonable way as well as scope other errors more tightly than the entire gateway. In practice, the scoping of Listener conditions is not as granular as previously, since most applications will all be exposed on port 443. In this case, it may not be easy to distinguish which Listener's routes were not ready. Since IP addresses are not a property of the Gateway, they should also be a property of the GatewayStatus. Note that the status field contains the bound addresses, not the requested addresses. Condition types have been redistributed between the GatewayConditionType and ListenerConditionType in accordance with the responsibility for the error that each condition signifies. Signed-off-by: James Peach --- api/v1alpha1/gateway_types.go | 107 +- api/v1alpha1/generated.pb.go | 910 +++++++++--------- api/v1alpha1/generated.proto | 77 +- api/v1alpha1/zz_generated.deepcopy.go | 42 +- .../bases/networking.x-k8s.io_gateways.yaml | 85 +- docs-src/spec.md | 157 +-- docs/spec/index.html | 159 +-- 7 files changed, 809 insertions(+), 728 deletions(-) diff --git a/api/v1alpha1/gateway_types.go b/api/v1alpha1/gateway_types.go index 02f13b49fd..ccc0743f6d 100644 --- a/api/v1alpha1/gateway_types.go +++ b/api/v1alpha1/gateway_types.go @@ -103,13 +103,13 @@ type GatewaySpec struct { // schedule the Gateway in an implementation-defined manner, // assigning an appropriate set of ListenerAddresses. // - // The GatewayClass MUST bind all Listeners to every - // ListenerAddress that it assigns to the Gateway. + // The GatewayClass MUST bind all Listeners tyo every + // GatewayAddress that it assigns to the Gateway. // // Support: Core // // +optional - Addresses []ListenerAddress `json:"addresses" protobuf:"bytes,3,rep,name=addresses"` + Addresses []GatewayAddress `json:"addresses" protobuf:"bytes,3,rep,name=addresses"` } // ProtocolType defines the application protocol accepted by a Listener. @@ -214,6 +214,10 @@ type Listener struct { // Support: Core // // +required + // +kubebuilder:validation:Minimum=0 + // +kubebuilder:validation:Maximum=65536 + // +kubebuilder:validation:ExclusiveMinimum=true + // +kubebuilder:validation:ExclusiveMaximum=true Port int32 `json:"port,omitempty" protobuf:"varint,2,opt,name=port"` // Protocol specifies the network protocol this listener @@ -285,14 +289,21 @@ const ( NamedAddressType AddressType = "NamedAddress" ) -// ListenerAddress describes an address for the Listener. -type ListenerAddress struct { - // Type of the Address. This is one of the *AddressType constants. +// GatewayAddress describes an address that can be bound to a Gateway. +type GatewayAddress struct { + // Type of the Address. This is either "IPAddress" or "NamedAddress". // // Support: Extended + // + // +optional + // +kubebuilder:validation:Enum=IPAddress;NamedAddress + // +kubebuilder:default=IPAddress Type AddressType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=AddressType"` + // Value. Examples: "1.2.3.4", "128::1", "my-ip-address". Validity of the // values will depend on `Type` and support by the controller. + // + // +required Value string `json:"value" protobuf:"bytes,2,opt,name=value"` } @@ -335,13 +346,23 @@ type ListenerExtensionObjectReference = ConfigMapsDefaultLocalObjectReference // GatewayStatus defines the observed state of Gateway. type GatewayStatus struct { + // Addresses lists the IP addresses that have actually been + // bound to the Gateway. These addresses may differ from the + // addresses in the Spec, e.g. if the Gateway automatically + // assigns an address from a reserved pool. + // + // These addresses should all be of type "IPAddress". + // + // +required + Addresses []GatewayAddress `json:"addresses" protobuf:"bytes,1,opt,name=addresses"` + // Conditions describe the current conditions of the Gateway. // +optional - Conditions []GatewayCondition `json:"conditions,omitempty" protobuf:"bytes,1,rep,name=conditions"` - // Listeners provide status for each listener defined in the Spec. The name - // in ListenerStatus refers to the corresponding Listener of the same name. + Conditions []GatewayCondition `json:"conditions,omitempty" protobuf:"bytes,2,rep,name=conditions"` + + // Listeners provides status for each unique listener port defined in the Spec. // +optional - Listeners []ListenerStatus `json:"listeners,omitempty" protobuf:"bytes,2,rep,name=listeners"` + Listeners []ListenerStatus `json:"listeners,omitempty" protobuf:"bytes,3,rep,name=listeners"` } // GatewayConditionType is a type of condition associated with a Gateway. @@ -351,31 +372,30 @@ const ( // ConditionNoSuchGatewayClass indicates that the specified GatewayClass // does not exist. ConditionNoSuchGatewayClass GatewayConditionType = "NoSuchGatewayClass" + // ConditionForbiddenNamespaceForClass indicates that this Gateway is in // a namespace forbidden by the GatewayClass. ConditionForbiddenNamespaceForClass GatewayConditionType = "ForbiddenNamespaceForClass" + // ConditionGatewayNotScheduled indicates that the Gateway has not been // scheduled. ConditionGatewayNotScheduled GatewayConditionType = "GatewayNotScheduled" + // ConditionListenersNotReady indicates that at least one of the specified // listeners is not ready. If this condition has a status of True, a more // detailed ListenerCondition should be present in the corresponding // ListenerStatus. ConditionListenersNotReady GatewayConditionType = "ListenersNotReady" + // ConditionInvalidListeners indicates that at least one of the specified // listeners is invalid. If this condition has a status of True, a more // detailed ListenerCondition should be present in the corresponding // ListenerStatus. ConditionInvalidListeners GatewayConditionType = "InvalidListeners" - // ConditionRoutesNotReady indicates that at least one of the specified - // routes is not ready. - ConditionRoutesNotReady GatewayConditionType = "RoutesNotReady" - // ConditionInvalidRoutes indicates that at least one of the specified - // routes is invalid. - ConditionInvalidRoutes GatewayConditionType = "InvalidRoutes" - // ConditionForbiddenRoutesForClass indicates that at least one of the - // routes is in a namespace forbidden by the GatewayClass. - ConditionForbiddenRoutesForClass GatewayConditionType = "ForbiddenRoutesForClass" + + // ConditionInvalidAddress indicates one or more of the + // Gateway's Addresses is invalid or could not be assigned. + ConditionInvalidAddress GatewayConditionType = "InvalidAddress" ) // GatewayCondition is an error status for a given route. @@ -413,17 +433,19 @@ type GatewayCondition struct { ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,6,opt,name=observedGeneration"` } -// ListenerStatus is the status associated with each listener block. +// ListenerStatus is the status associated with a Listener port. type ListenerStatus struct { - // Name is the name of the listener this status refers to. - // TODO(jpeach) Listeners are not indexed by a unique name any more, - // so this field probably doesn't make sense. - Name string `json:"name" protobuf:"bytes,1,opt,name=name"` - // Address bound on this listener. - // TODO(jpeach) Listeners don't have addresses anymore so this field - // should move to the GatewayStatus. - Address *ListenerAddress `json:"address" protobuf:"bytes,2,opt,name=address"` + // Port is the unique Listener port value for which this message + // is reporting the status. If more than one Gateway Listener + // shares the same port value, this message reports the combined + // status of all such Listeners. + // + // +required + Port string `json:"port" protobuf:"varint,1,opt,name=port"` + // Conditions describe the current condition of this listener. + // + // +required Conditions []ListenerCondition `json:"conditions" protobuf:"bytes,3,rep,name=conditions"` } @@ -436,23 +458,34 @@ const ( // Implementors should try to use a more specific condition instead of this // one to give users and automation more information. ConditionInvalidListener ListenerConditionType = "InvalidListener" + // ConditionListenerNotReady indicates the listener is not ready. - ConditionListenerNotReady ListenerConditionType = "ListenerNotReady" - // ConditionInvalidAddress indicates the Address is invalid. - ConditionInvalidAddress ListenerConditionType = "InvalidAddress" - // ConditionInvalidName indicates that the name given to the Listener - // did not meet the requirements of the gateway controller. - ConditionInvalidName ListenerConditionType = "InvalidName" - // ConditionNameConflict indicates that two or more Listeners with - // the same name were bound to this gateway. - ConditionNameConflict ListenerConditionType = "NameConflict" + ConditionListenerNotReady ListenerConditionType = "NotReady" + // ConditionPortConflict indicates that two or more Listeners with // the same port were bound to this gateway and they could not be // collapsed into a single configuration. ConditionPortConflict ListenerConditionType = "PortConflict" + // ConditionInvalidCertificateRef indicates the certificate reference of the // listener's TLS configuration is invalid. ConditionInvalidCertificateRef ListenerConditionType = "InvalidCertificateRef" + + // ConditionRoutesNotReady indicates that at least one of the specified + // routes is not ready. + ConditionRoutesNotReady ListenerConditionType = "RoutesNotReady" + + // ConditionInvalidRoutes indicates that at least one of the specified + // routes is invalid. + ConditionInvalidRoutes ListenerConditionType = "InvalidRoutes" + + // ConditionForbiddenRoutesForClass indicates that at least one of the + // routes is in a namespace forbidden by the GatewayClass. + ConditionForbiddenRoutesForClass ListenerConditionType = "ForbiddenRoutesForClass" + + // ConditionUnsupportedProtocol indicates that an invalid + // or unsupported protocol type was requested. + ConditionUnsupportedProtocol ListenerConditionType = "UnsupportedProtocol" ) // ListenerCondition is an error status for a given listener. diff --git a/api/v1alpha1/generated.pb.go b/api/v1alpha1/generated.pb.go index 87314524b3..4bf86fe10a 100644 --- a/api/v1alpha1/generated.pb.go +++ b/api/v1alpha1/generated.pb.go @@ -130,10 +130,38 @@ func (m *Gateway) XXX_DiscardUnknown() { var xxx_messageInfo_Gateway proto.InternalMessageInfo +func (m *GatewayAddress) Reset() { *m = GatewayAddress{} } +func (*GatewayAddress) ProtoMessage() {} +func (*GatewayAddress) Descriptor() ([]byte, []int) { + return fileDescriptor_40fafbfb106ed5b2, []int{3} +} +func (m *GatewayAddress) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GatewayAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *GatewayAddress) XXX_Merge(src proto.Message) { + xxx_messageInfo_GatewayAddress.Merge(m, src) +} +func (m *GatewayAddress) XXX_Size() int { + return m.Size() +} +func (m *GatewayAddress) XXX_DiscardUnknown() { + xxx_messageInfo_GatewayAddress.DiscardUnknown(m) +} + +var xxx_messageInfo_GatewayAddress proto.InternalMessageInfo + func (m *GatewayClass) Reset() { *m = GatewayClass{} } func (*GatewayClass) ProtoMessage() {} func (*GatewayClass) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{3} + return fileDescriptor_40fafbfb106ed5b2, []int{4} } func (m *GatewayClass) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -161,7 +189,7 @@ var xxx_messageInfo_GatewayClass proto.InternalMessageInfo func (m *GatewayClassCondition) Reset() { *m = GatewayClassCondition{} } func (*GatewayClassCondition) ProtoMessage() {} func (*GatewayClassCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{4} + return fileDescriptor_40fafbfb106ed5b2, []int{5} } func (m *GatewayClassCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -189,7 +217,7 @@ var xxx_messageInfo_GatewayClassCondition proto.InternalMessageInfo func (m *GatewayClassList) Reset() { *m = GatewayClassList{} } func (*GatewayClassList) ProtoMessage() {} func (*GatewayClassList) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{5} + return fileDescriptor_40fafbfb106ed5b2, []int{6} } func (m *GatewayClassList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -217,7 +245,7 @@ var xxx_messageInfo_GatewayClassList proto.InternalMessageInfo func (m *GatewayClassSpec) Reset() { *m = GatewayClassSpec{} } func (*GatewayClassSpec) ProtoMessage() {} func (*GatewayClassSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{6} + return fileDescriptor_40fafbfb106ed5b2, []int{7} } func (m *GatewayClassSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -245,7 +273,7 @@ var xxx_messageInfo_GatewayClassSpec proto.InternalMessageInfo func (m *GatewayClassStatus) Reset() { *m = GatewayClassStatus{} } func (*GatewayClassStatus) ProtoMessage() {} func (*GatewayClassStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{7} + return fileDescriptor_40fafbfb106ed5b2, []int{8} } func (m *GatewayClassStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -273,7 +301,7 @@ var xxx_messageInfo_GatewayClassStatus proto.InternalMessageInfo func (m *GatewayCondition) Reset() { *m = GatewayCondition{} } func (*GatewayCondition) ProtoMessage() {} func (*GatewayCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{8} + return fileDescriptor_40fafbfb106ed5b2, []int{9} } func (m *GatewayCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -301,7 +329,7 @@ var xxx_messageInfo_GatewayCondition proto.InternalMessageInfo func (m *GatewayList) Reset() { *m = GatewayList{} } func (*GatewayList) ProtoMessage() {} func (*GatewayList) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{9} + return fileDescriptor_40fafbfb106ed5b2, []int{10} } func (m *GatewayList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -329,7 +357,7 @@ var xxx_messageInfo_GatewayList proto.InternalMessageInfo func (m *GatewayObjectReference) Reset() { *m = GatewayObjectReference{} } func (*GatewayObjectReference) ProtoMessage() {} func (*GatewayObjectReference) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{10} + return fileDescriptor_40fafbfb106ed5b2, []int{11} } func (m *GatewayObjectReference) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -357,7 +385,7 @@ var xxx_messageInfo_GatewayObjectReference proto.InternalMessageInfo func (m *GatewaySpec) Reset() { *m = GatewaySpec{} } func (*GatewaySpec) ProtoMessage() {} func (*GatewaySpec) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{11} + return fileDescriptor_40fafbfb106ed5b2, []int{12} } func (m *GatewaySpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -385,7 +413,7 @@ var xxx_messageInfo_GatewaySpec proto.InternalMessageInfo func (m *GatewayStatus) Reset() { *m = GatewayStatus{} } func (*GatewayStatus) ProtoMessage() {} func (*GatewayStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{12} + return fileDescriptor_40fafbfb106ed5b2, []int{13} } func (m *GatewayStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -413,7 +441,7 @@ var xxx_messageInfo_GatewayStatus proto.InternalMessageInfo func (m *HTTPHeaderFilter) Reset() { *m = HTTPHeaderFilter{} } func (*HTTPHeaderFilter) ProtoMessage() {} func (*HTTPHeaderFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{13} + return fileDescriptor_40fafbfb106ed5b2, []int{14} } func (m *HTTPHeaderFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -441,7 +469,7 @@ var xxx_messageInfo_HTTPHeaderFilter proto.InternalMessageInfo func (m *HTTPRoute) Reset() { *m = HTTPRoute{} } func (*HTTPRoute) ProtoMessage() {} func (*HTTPRoute) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{14} + return fileDescriptor_40fafbfb106ed5b2, []int{15} } func (m *HTTPRoute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -469,7 +497,7 @@ var xxx_messageInfo_HTTPRoute proto.InternalMessageInfo func (m *HTTPRouteAction) Reset() { *m = HTTPRouteAction{} } func (*HTTPRouteAction) ProtoMessage() {} func (*HTTPRouteAction) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{15} + return fileDescriptor_40fafbfb106ed5b2, []int{16} } func (m *HTTPRouteAction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -497,7 +525,7 @@ var xxx_messageInfo_HTTPRouteAction proto.InternalMessageInfo func (m *HTTPRouteFilter) Reset() { *m = HTTPRouteFilter{} } func (*HTTPRouteFilter) ProtoMessage() {} func (*HTTPRouteFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{16} + return fileDescriptor_40fafbfb106ed5b2, []int{17} } func (m *HTTPRouteFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -525,7 +553,7 @@ var xxx_messageInfo_HTTPRouteFilter proto.InternalMessageInfo func (m *HTTPRouteHost) Reset() { *m = HTTPRouteHost{} } func (*HTTPRouteHost) ProtoMessage() {} func (*HTTPRouteHost) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{17} + return fileDescriptor_40fafbfb106ed5b2, []int{18} } func (m *HTTPRouteHost) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -553,7 +581,7 @@ var xxx_messageInfo_HTTPRouteHost proto.InternalMessageInfo func (m *HTTPRouteList) Reset() { *m = HTTPRouteList{} } func (*HTTPRouteList) ProtoMessage() {} func (*HTTPRouteList) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{18} + return fileDescriptor_40fafbfb106ed5b2, []int{19} } func (m *HTTPRouteList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -581,7 +609,7 @@ var xxx_messageInfo_HTTPRouteList proto.InternalMessageInfo func (m *HTTPRouteMatch) Reset() { *m = HTTPRouteMatch{} } func (*HTTPRouteMatch) ProtoMessage() {} func (*HTTPRouteMatch) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{19} + return fileDescriptor_40fafbfb106ed5b2, []int{20} } func (m *HTTPRouteMatch) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -609,7 +637,7 @@ var xxx_messageInfo_HTTPRouteMatch proto.InternalMessageInfo func (m *HTTPRouteRule) Reset() { *m = HTTPRouteRule{} } func (*HTTPRouteRule) ProtoMessage() {} func (*HTTPRouteRule) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{20} + return fileDescriptor_40fafbfb106ed5b2, []int{21} } func (m *HTTPRouteRule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -637,7 +665,7 @@ var xxx_messageInfo_HTTPRouteRule proto.InternalMessageInfo func (m *HTTPRouteSpec) Reset() { *m = HTTPRouteSpec{} } func (*HTTPRouteSpec) ProtoMessage() {} func (*HTTPRouteSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{21} + return fileDescriptor_40fafbfb106ed5b2, []int{22} } func (m *HTTPRouteSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -665,7 +693,7 @@ var xxx_messageInfo_HTTPRouteSpec proto.InternalMessageInfo func (m *HTTPRouteStatus) Reset() { *m = HTTPRouteStatus{} } func (*HTTPRouteStatus) ProtoMessage() {} func (*HTTPRouteStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{22} + return fileDescriptor_40fafbfb106ed5b2, []int{23} } func (m *HTTPRouteStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -693,7 +721,7 @@ var xxx_messageInfo_HTTPRouteStatus proto.InternalMessageInfo func (m *HostnameMatch) Reset() { *m = HostnameMatch{} } func (*HostnameMatch) ProtoMessage() {} func (*HostnameMatch) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{23} + return fileDescriptor_40fafbfb106ed5b2, []int{24} } func (m *HostnameMatch) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -721,7 +749,7 @@ var xxx_messageInfo_HostnameMatch proto.InternalMessageInfo func (m *Listener) Reset() { *m = Listener{} } func (*Listener) ProtoMessage() {} func (*Listener) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{24} + return fileDescriptor_40fafbfb106ed5b2, []int{25} } func (m *Listener) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -746,34 +774,6 @@ func (m *Listener) XXX_DiscardUnknown() { var xxx_messageInfo_Listener proto.InternalMessageInfo -func (m *ListenerAddress) Reset() { *m = ListenerAddress{} } -func (*ListenerAddress) ProtoMessage() {} -func (*ListenerAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_40fafbfb106ed5b2, []int{25} -} -func (m *ListenerAddress) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ListenerAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil -} -func (m *ListenerAddress) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListenerAddress.Merge(m, src) -} -func (m *ListenerAddress) XXX_Size() int { - return m.Size() -} -func (m *ListenerAddress) XXX_DiscardUnknown() { - xxx_messageInfo_ListenerAddress.DiscardUnknown(m) -} - -var xxx_messageInfo_ListenerAddress proto.InternalMessageInfo - func (m *ListenerCondition) Reset() { *m = ListenerCondition{} } func (*ListenerCondition) ProtoMessage() {} func (*ListenerCondition) Descriptor() ([]byte, []int) { @@ -1170,6 +1170,7 @@ func init() { proto.RegisterType((*ConfigMapsDefaultLocalObjectReference)(nil), "k8s.io.service_apis.api.v1alpha1.ConfigMapsDefaultLocalObjectReference") proto.RegisterType((*ForwardToTarget)(nil), "k8s.io.service_apis.api.v1alpha1.ForwardToTarget") proto.RegisterType((*Gateway)(nil), "k8s.io.service_apis.api.v1alpha1.Gateway") + proto.RegisterType((*GatewayAddress)(nil), "k8s.io.service_apis.api.v1alpha1.GatewayAddress") proto.RegisterType((*GatewayClass)(nil), "k8s.io.service_apis.api.v1alpha1.GatewayClass") proto.RegisterType((*GatewayClassCondition)(nil), "k8s.io.service_apis.api.v1alpha1.GatewayClassCondition") proto.RegisterType((*GatewayClassList)(nil), "k8s.io.service_apis.api.v1alpha1.GatewayClassList") @@ -1194,7 +1195,6 @@ func init() { proto.RegisterType((*HTTPRouteStatus)(nil), "k8s.io.service_apis.api.v1alpha1.HTTPRouteStatus") proto.RegisterType((*HostnameMatch)(nil), "k8s.io.service_apis.api.v1alpha1.HostnameMatch") proto.RegisterType((*Listener)(nil), "k8s.io.service_apis.api.v1alpha1.Listener") - proto.RegisterType((*ListenerAddress)(nil), "k8s.io.service_apis.api.v1alpha1.ListenerAddress") proto.RegisterType((*ListenerCondition)(nil), "k8s.io.service_apis.api.v1alpha1.ListenerCondition") proto.RegisterType((*ListenerStatus)(nil), "k8s.io.service_apis.api.v1alpha1.ListenerStatus") proto.RegisterType((*RouteBindingSelector)(nil), "k8s.io.service_apis.api.v1alpha1.RouteBindingSelector") @@ -1217,150 +1217,149 @@ func init() { } var fileDescriptor_40fafbfb106ed5b2 = []byte{ - // 2273 bytes of a gzipped FileDescriptorProto + // 2269 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0x4d, 0x70, 0x1c, 0x47, - 0x15, 0xd6, 0xec, 0x8f, 0xb4, 0xfb, 0xf4, 0xdf, 0x38, 0x66, 0x23, 0x52, 0x5a, 0xd5, 0x98, 0x50, - 0xb1, 0x89, 0x67, 0x2d, 0xc5, 0x18, 0xd9, 0x98, 0x83, 0x56, 0xb1, 0x2d, 0x28, 0xc9, 0x52, 0x5a, - 0x8b, 0x49, 0x82, 0x09, 0xb4, 0x66, 0x7b, 0x57, 0x83, 0x66, 0x77, 0xa6, 0x66, 0x66, 0x65, 0x54, - 0x05, 0x55, 0xc1, 0x97, 0x5c, 0x03, 0xb7, 0xf0, 0x73, 0xca, 0x95, 0x0b, 0xc5, 0x91, 0xe2, 0x8c, - 0x8b, 0x53, 0x8e, 0x29, 0x0e, 0x5b, 0x78, 0x39, 0x70, 0xe0, 0x02, 0xa4, 0xa0, 0x0a, 0x9d, 0xa8, - 0xfe, 0x99, 0xdf, 0xd5, 0x6a, 0x67, 0x83, 0xed, 0xa0, 0x54, 0x6e, 0xd3, 0xdd, 0xaf, 0xbf, 0xd7, - 0xef, 0xf5, 0xeb, 0xaf, 0x5f, 0xbf, 0x5d, 0xf8, 0x8a, 0x6b, 0x34, 0x5d, 0xed, 0x60, 0xd5, 0xd5, - 0x0c, 0xab, 0xe2, 0x52, 0xe7, 0xd0, 0xd0, 0xe9, 0x65, 0x62, 0x1b, 0x6e, 0x85, 0xd8, 0x46, 0xe5, - 0x70, 0x99, 0x98, 0xf6, 0x3e, 0x59, 0xae, 0x34, 0x69, 0x9b, 0x3a, 0xc4, 0xa3, 0x75, 0xcd, 0x76, - 0x2c, 0xcf, 0x42, 0x4b, 0x62, 0x86, 0x26, 0x67, 0x7c, 0x8f, 0xcd, 0xd0, 0x88, 0x6d, 0x68, 0xfe, - 0x8c, 0x85, 0xcb, 0x4d, 0xc3, 0xdb, 0xef, 0xec, 0x69, 0xba, 0xd5, 0xaa, 0x34, 0xad, 0xa6, 0x55, - 0xe1, 0x13, 0xf7, 0x3a, 0x0d, 0xde, 0xe2, 0x0d, 0xfe, 0x25, 0x00, 0x17, 0x54, 0xb9, 0x04, 0xa6, - 0x55, 0xb7, 0x1c, 0x5a, 0x39, 0xec, 0x53, 0xba, 0x70, 0x35, 0x94, 0x69, 0x11, 0x7d, 0xdf, 0x68, - 0x53, 0xe7, 0xa8, 0x62, 0x1f, 0x34, 0x2b, 0x7c, 0xbd, 0x2d, 0xea, 0x91, 0x93, 0x66, 0x5d, 0x1b, - 0x34, 0xcb, 0xe9, 0xb4, 0x3d, 0xa3, 0x45, 0x2b, 0xae, 0xbe, 0x4f, 0x5b, 0xa4, 0x6f, 0xde, 0xf5, - 0xa8, 0x67, 0x74, 0xab, 0xed, 0x39, 0x96, 0x69, 0x52, 0xe7, 0xb2, 0x3f, 0x8d, 0x41, 0xf0, 0xa9, - 0x34, 0x39, 0x55, 0xfd, 0xa5, 0x02, 0x2f, 0xae, 0x5b, 0xed, 0x86, 0xd1, 0xdc, 0x22, 0xb6, 0xfb, - 0x2a, 0x6d, 0x90, 0x8e, 0xe9, 0x6d, 0x5a, 0x3a, 0x31, 0xb7, 0xf7, 0x7e, 0x40, 0x75, 0x0f, 0xd3, - 0x06, 0x75, 0x68, 0x5b, 0xa7, 0xe8, 0x02, 0xe4, 0x9b, 0x8e, 0xd5, 0xb1, 0x4b, 0xca, 0x92, 0xf2, - 0x52, 0xb1, 0x3a, 0xfd, 0xa8, 0x5b, 0x1e, 0xeb, 0x75, 0xcb, 0xf9, 0x3b, 0xac, 0x13, 0x8b, 0x31, - 0xf4, 0x32, 0x14, 0x1c, 0xea, 0x5a, 0x1d, 0x47, 0xa7, 0xa5, 0x0c, 0x97, 0x9b, 0x93, 0x72, 0x05, - 0x2c, 0xfb, 0x71, 0x20, 0x81, 0x96, 0x20, 0xd7, 0x26, 0x2d, 0x5a, 0xca, 0x72, 0xc9, 0x29, 0x29, - 0x99, 0xbb, 0x4b, 0x5a, 0x14, 0xf3, 0x11, 0xf5, 0x0f, 0x0a, 0xcc, 0xde, 0xb6, 0x9c, 0x07, 0xc4, - 0xa9, 0xd7, 0xac, 0x1a, 0x71, 0x9a, 0xd4, 0x43, 0x87, 0x50, 0xf4, 0xf8, 0x17, 0xa6, 0x0d, 0xbe, - 0x98, 0xc9, 0x95, 0x5b, 0xda, 0xb0, 0x4d, 0xd6, 0x76, 0xc5, 0xc8, 0x69, 0x26, 0x56, 0xe7, 0xe5, - 0x0a, 0x8a, 0x35, 0x1f, 0x1f, 0x87, 0xaa, 0xd0, 0x4d, 0x00, 0xd1, 0xd8, 0xb1, 0x1c, 0x8f, 0x5b, - 0x97, 0xaf, 0xbe, 0xd0, 0xeb, 0x96, 0xa1, 0x16, 0xf4, 0x1e, 0xc7, 0x5a, 0x38, 0x22, 0xaf, 0x7e, - 0x94, 0x81, 0x89, 0x3b, 0xc4, 0xa3, 0x0f, 0xc8, 0x11, 0xba, 0x0f, 0x05, 0xef, 0xc8, 0xa6, 0x5b, - 0xd4, 0x23, 0xd2, 0x00, 0xcd, 0x37, 0x20, 0xba, 0xf5, 0x9a, 0x7d, 0xd0, 0xd4, 0xb8, 0x25, 0x2c, - 0x60, 0xb4, 0xc3, 0x65, 0xad, 0x26, 0x67, 0x85, 0x5e, 0xf5, 0x7b, 0x70, 0x80, 0x88, 0xbe, 0x0f, - 0x05, 0x26, 0x5f, 0x27, 0x1e, 0xe1, 0xab, 0x9c, 0x5c, 0xb9, 0x92, 0x0e, 0x5d, 0xb8, 0x83, 0xe3, - 0x23, 0x89, 0x0f, 0x61, 0x1f, 0x0e, 0x50, 0xd1, 0x36, 0xe4, 0x5c, 0x9b, 0xea, 0x7c, 0xdf, 0x26, - 0x57, 0x2e, 0x0f, 0x77, 0xbe, 0x34, 0x7c, 0xd7, 0xa6, 0x7a, 0xb8, 0xcd, 0xac, 0x85, 0x39, 0x10, - 0xfa, 0x36, 0x8c, 0xbb, 0x1e, 0xf1, 0x3a, 0x6e, 0x29, 0xc7, 0x21, 0x2b, 0xe9, 0x21, 0xf9, 0xb4, - 0xea, 0x8c, 0x04, 0x1d, 0x17, 0x6d, 0x2c, 0xe1, 0xd4, 0x87, 0x59, 0x98, 0x92, 0x92, 0xeb, 0x26, - 0x71, 0xdd, 0x98, 0xeb, 0x73, 0x4f, 0xd5, 0xf5, 0xca, 0x53, 0x71, 0x7d, 0x4d, 0xba, 0x5e, 0x6c, - 0xec, 0x4a, 0x6a, 0x3f, 0x71, 0xeb, 0x07, 0xfa, 0xff, 0x7e, 0xe0, 0x7f, 0xb1, 0xa5, 0x57, 0x47, - 0xc4, 0x3d, 0x7d, 0x13, 0x7e, 0x97, 0x85, 0xe7, 0xa2, 0xe2, 0xeb, 0x56, 0xbb, 0x6e, 0x78, 0x86, - 0xd5, 0x46, 0x5f, 0x87, 0x1c, 0xf3, 0x9d, 0xa4, 0x94, 0x8b, 0xfe, 0xca, 0x98, 0x67, 0x8f, 0xbb, - 0xe5, 0xe7, 0x4f, 0x9c, 0xc4, 0x06, 0x31, 0x9f, 0x86, 0x36, 0x83, 0x65, 0x0b, 0xae, 0xb9, 0x1a, - 0x5f, 0xc0, 0x71, 0xb7, 0x7c, 0x02, 0x57, 0x6b, 0x01, 0x52, 0x7c, 0x99, 0xe8, 0x4b, 0x30, 0xee, - 0x50, 0xe2, 0x5a, 0x6d, 0xc9, 0x47, 0x81, 0x39, 0x98, 0xf7, 0x62, 0x39, 0x8a, 0x2e, 0xc2, 0x44, - 0x8b, 0xba, 0x2e, 0x69, 0x52, 0x1e, 0x41, 0xc5, 0xea, 0xac, 0x14, 0x9c, 0xd8, 0x12, 0xdd, 0xd8, - 0x1f, 0x47, 0x87, 0x80, 0x4c, 0xe2, 0x7a, 0x35, 0x87, 0xb4, 0x5d, 0xb1, 0x78, 0xa3, 0x45, 0x4b, - 0x79, 0xee, 0xe3, 0x4b, 0x29, 0xe3, 0xce, 0x68, 0xd1, 0xea, 0x82, 0xd4, 0x80, 0x36, 0xfb, 0xd0, - 0xf0, 0x09, 0x1a, 0xd0, 0x37, 0x01, 0x59, 0x7b, 0x6c, 0xef, 0x68, 0xfd, 0x8e, 0x20, 0x7c, 0xc3, - 0x6a, 0x97, 0xc6, 0x97, 0x94, 0x97, 0xb2, 0x21, 0xd6, 0x76, 0x9f, 0x04, 0x3e, 0x61, 0x96, 0xfa, - 0x7e, 0x06, 0xe6, 0xa2, 0x1b, 0xb1, 0x69, 0xb8, 0x5e, 0xec, 0x18, 0x65, 0x9f, 0xf8, 0x31, 0xba, - 0xdf, 0x77, 0x8c, 0x52, 0xa2, 0xb3, 0xb5, 0xc5, 0xd1, 0xfd, 0x9e, 0xc8, 0x11, 0xda, 0x85, 0xbc, - 0xe1, 0xd1, 0x16, 0x0b, 0x9a, 0x6c, 0x14, 0x3a, 0x5d, 0xac, 0x87, 0x17, 0xdf, 0x37, 0x18, 0x08, - 0x16, 0x58, 0xea, 0x5f, 0xb3, 0x71, 0x2f, 0xb1, 0xc3, 0x85, 0x56, 0x00, 0xc2, 0xdb, 0x58, 0x06, - 0x79, 0x70, 0xbc, 0xd7, 0x83, 0x11, 0x1c, 0x91, 0x42, 0x3f, 0x55, 0xa0, 0x44, 0x4c, 0xd3, 0x7a, - 0x40, 0xeb, 0x12, 0x8f, 0x5d, 0x87, 0xae, 0x4d, 0x74, 0xea, 0xca, 0x53, 0xff, 0x4a, 0x4a, 0x67, - 0x90, 0x3d, 0x6a, 0xee, 0x52, 0x93, 0xea, 0x9e, 0xe5, 0x54, 0x97, 0xa4, 0xde, 0xd2, 0xda, 0x00, - 0x70, 0x3c, 0x50, 0x2d, 0x7a, 0x47, 0x81, 0xf3, 0x72, 0x10, 0x5b, 0x1d, 0x8f, 0x46, 0x56, 0x94, - 0xfd, 0xf8, 0x2b, 0x5a, 0xe8, 0x75, 0xcb, 0xe7, 0xd7, 0x4e, 0x84, 0xc5, 0x03, 0xd4, 0xa1, 0xb7, - 0x15, 0x98, 0xb6, 0x89, 0x43, 0x5a, 0xd4, 0xa3, 0x8e, 0xcb, 0x12, 0x00, 0x41, 0xe2, 0x77, 0x86, - 0x6f, 0x62, 0xaa, 0x2c, 0xa7, 0x3a, 0xdf, 0xeb, 0x96, 0xa7, 0x77, 0xa2, 0x1a, 0x70, 0x5c, 0xa1, - 0xfa, 0x13, 0x05, 0x50, 0x3f, 0xf9, 0xa1, 0x03, 0xbe, 0xd7, 0x82, 0x58, 0xdc, 0x92, 0xc2, 0x43, - 0xeb, 0xab, 0xa3, 0x85, 0x56, 0x40, 0x4c, 0xb1, 0x20, 0x91, 0x90, 0x38, 0x02, 0xaf, 0xfe, 0x26, - 0x12, 0x6d, 0x01, 0x99, 0xae, 0xc6, 0xc8, 0xf4, 0x8b, 0x09, 0x32, 0x3d, 0x97, 0x94, 0x7f, 0x6a, - 0x3c, 0x1a, 0xe1, 0xc7, 0xec, 0x10, 0x7e, 0x0c, 0x29, 0x37, 0x77, 0x2a, 0xe5, 0x7e, 0x1a, 0x78, - 0xf4, 0xbd, 0x0c, 0x4c, 0xca, 0x3d, 0xe8, 0xa3, 0x50, 0xe5, 0xa9, 0x52, 0x68, 0xe6, 0x89, 0x53, - 0xe8, 0x5d, 0x9f, 0x42, 0xb3, 0x3c, 0xce, 0x2f, 0xa6, 0x8e, 0xf3, 0x01, 0xec, 0x79, 0x00, 0xe7, - 0xa5, 0x40, 0xf2, 0xd5, 0x51, 0x81, 0x62, 0xdb, 0x3f, 0xfe, 0x32, 0xb2, 0x83, 0x2c, 0x3d, 0xe0, - 0x05, 0x1c, 0xca, 0x04, 0x6f, 0x8a, 0xcc, 0xc0, 0x37, 0xc5, 0x47, 0x4a, 0xb0, 0x11, 0x9c, 0xa5, - 0x2f, 0x40, 0x5e, 0x67, 0xc7, 0x2f, 0xf9, 0xb0, 0xe1, 0x67, 0x12, 0x8b, 0x31, 0xf4, 0x1d, 0x28, - 0x9a, 0x86, 0xeb, 0xb1, 0xed, 0xf4, 0x2f, 0x8e, 0x4b, 0xc3, 0xad, 0xde, 0x94, 0x53, 0xc2, 0x35, - 0xfb, 0x3d, 0x2e, 0x0e, 0xf1, 0xd0, 0x1e, 0x14, 0x49, 0xbd, 0xee, 0x50, 0xd7, 0xa5, 0xbe, 0x4b, - 0x97, 0xd3, 0x83, 0xaf, 0x89, 0xa9, 0xa1, 0x8e, 0x35, 0x1f, 0x0b, 0x87, 0xb0, 0xea, 0x9f, 0x14, - 0x98, 0x8e, 0xe5, 0xcc, 0xa8, 0x71, 0x02, 0x63, 0x8d, 0x90, 0x50, 0xa6, 0x25, 0x2b, 0x44, 0xfa, - 0x5d, 0x77, 0x25, 0xbd, 0x75, 0x32, 0xb7, 0x3c, 0xd5, 0x81, 0xea, 0x1f, 0x15, 0x98, 0xdb, 0xa8, - 0xd5, 0x76, 0x36, 0x28, 0xa9, 0x53, 0xe7, 0xb6, 0x61, 0x7a, 0xd4, 0x41, 0x6f, 0x42, 0x96, 0xd4, - 0xeb, 0xd2, 0xb0, 0xaf, 0x0d, 0xd7, 0x98, 0x04, 0xd0, 0xd6, 0xea, 0xf5, 0x5b, 0x6d, 0xcf, 0x39, - 0xaa, 0x4e, 0x4a, 0xe5, 0xd9, 0xb5, 0x7a, 0x1d, 0x33, 0x50, 0xa4, 0x32, 0xe2, 0x6a, 0x59, 0x87, - 0x94, 0x1b, 0x54, 0xac, 0x82, 0x20, 0x2d, 0xd6, 0x83, 0xe5, 0xc8, 0xc2, 0x35, 0x28, 0xf8, 0x08, - 0x68, 0x0e, 0xb2, 0x07, 0xf4, 0x48, 0x44, 0x18, 0x66, 0x9f, 0xe8, 0x1c, 0xe4, 0x0f, 0x89, 0xd9, - 0x91, 0x81, 0x8a, 0x45, 0xe3, 0x46, 0x66, 0x55, 0x51, 0xff, 0x93, 0x81, 0x22, 0x5b, 0x0b, 0xbf, - 0xfb, 0xce, 0xfc, 0x5b, 0xf1, 0xb5, 0xd8, 0x5b, 0xb1, 0x92, 0x6e, 0x1b, 0xb8, 0xe9, 0x03, 0x5f, - 0x2b, 0x6f, 0x24, 0x5e, 0x8b, 0xcb, 0xa3, 0x80, 0x9e, 0xfe, 0x54, 0xf9, 0xbb, 0x02, 0xb3, 0x81, - 0xec, 0x9a, 0xce, 0xef, 0xd5, 0xb7, 0xa0, 0xd8, 0xf0, 0x4b, 0x10, 0x72, 0x0b, 0x52, 0x68, 0x4c, - 0x54, 0x2d, 0xaa, 0xd3, 0x2c, 0x78, 0x83, 0x4e, 0x1c, 0x42, 0xa2, 0x1f, 0xc3, 0x14, 0xfd, 0xa1, - 0x47, 0xdb, 0x2e, 0xbb, 0x39, 0x68, 0x43, 0xee, 0xc3, 0x13, 0xcb, 0x68, 0xe6, 0x7a, 0xdd, 0xf2, - 0xd4, 0xad, 0x88, 0x02, 0x1c, 0x53, 0xa7, 0xfe, 0x2d, 0x6a, 0xb2, 0x3c, 0x3a, 0x6f, 0xc0, 0xc4, - 0x3e, 0x3f, 0x09, 0xae, 0x34, 0x78, 0x65, 0xf4, 0xe3, 0x53, 0x9d, 0x64, 0x57, 0xbe, 0xe8, 0x71, - 0xb1, 0x8f, 0xf7, 0x49, 0x5b, 0xfb, 0xb3, 0x0c, 0x4c, 0x07, 0xd6, 0x6e, 0x58, 0xae, 0x87, 0x5e, - 0x86, 0xc2, 0xbe, 0xe5, 0x7a, 0xfc, 0xd2, 0x50, 0xe2, 0x25, 0xab, 0x0d, 0xd9, 0x8f, 0x03, 0x09, - 0x54, 0x83, 0xbc, 0xd3, 0x31, 0xa9, 0x4f, 0x64, 0xa3, 0xc4, 0x33, 0xee, 0x98, 0x34, 0xbc, 0x5d, - 0x58, 0xcb, 0xc5, 0x02, 0xac, 0xcf, 0x29, 0xd9, 0x67, 0xeb, 0x94, 0x5f, 0x45, 0x9d, 0x72, 0xe6, - 0x93, 0x93, 0x9d, 0x78, 0x72, 0xf2, 0xe5, 0x11, 0xb6, 0x68, 0x40, 0x7a, 0xf2, 0xeb, 0x2c, 0xcc, - 0x04, 0x32, 0x5b, 0xc4, 0xd3, 0xf7, 0x59, 0xd4, 0xd8, 0xc4, 0xdb, 0xaf, 0x85, 0x09, 0x77, 0xb0, - 0xa4, 0x1d, 0xd9, 0x8f, 0x03, 0x09, 0xf4, 0x02, 0xe4, 0xd8, 0xb7, 0x4c, 0x4a, 0x0a, 0x8c, 0xcf, - 0x98, 0x14, 0xe6, 0xbd, 0x48, 0x03, 0x10, 0xa7, 0x83, 0xa3, 0xc9, 0xe2, 0x03, 0x23, 0xd4, 0x8d, - 0xa0, 0x17, 0x47, 0x24, 0x50, 0x1d, 0xc6, 0x45, 0xab, 0x94, 0xe3, 0x16, 0xde, 0x1c, 0xc1, 0x42, - 0xbe, 0x7a, 0x4d, 0x00, 0x8b, 0xcb, 0x2d, 0xa0, 0x42, 0xd1, 0x89, 0x25, 0x76, 0x5f, 0x4c, 0xe6, - 0x9f, 0x69, 0x4c, 0x2e, 0x5c, 0x87, 0xc9, 0xc8, 0x2a, 0x47, 0xba, 0x40, 0xdf, 0x8d, 0x86, 0x33, - 0x3b, 0x67, 0xe8, 0x35, 0xc8, 0xb7, 0x98, 0xe1, 0xc9, 0xa2, 0x5c, 0x5a, 0x87, 0x55, 0x8b, 0x2c, - 0x26, 0xf8, 0x27, 0x16, 0x48, 0xe8, 0x5b, 0x30, 0xde, 0xe0, 0x3c, 0x27, 0x23, 0x78, 0x94, 0x4b, - 0x48, 0x12, 0x24, 0x4f, 0x1a, 0xc4, 0x37, 0x96, 0x60, 0x0c, 0x96, 0xf0, 0x6b, 0x47, 0x72, 0xc0, - 0x28, 0xb0, 0xe2, 0xbe, 0x12, 0xb0, 0xe2, 0x1b, 0x4b, 0x30, 0xf5, 0xf7, 0x4a, 0xc4, 0x25, 0x3c, - 0xeb, 0xad, 0x41, 0x9e, 0x91, 0x9a, 0x9f, 0xf8, 0x8d, 0x42, 0x64, 0x8c, 0x16, 0xc3, 0x93, 0xc2, - 0x5a, 0x2e, 0x16, 0x60, 0xe8, 0x1e, 0x4c, 0xd4, 0xc5, 0xa6, 0x4b, 0xb7, 0x8c, 0x8c, 0xcb, 0x6f, - 0x0d, 0x19, 0x38, 0xd8, 0x07, 0x53, 0x1f, 0x46, 0x2f, 0x29, 0x99, 0xbf, 0x5a, 0x30, 0xd9, 0x14, - 0xb9, 0x28, 0xa6, 0x0d, 0xdf, 0x8e, 0xd5, 0xd4, 0x09, 0x6c, 0x32, 0x20, 0x3f, 0x27, 0x0d, 0xf2, - 0xdf, 0x06, 0x0c, 0x14, 0x47, 0x35, 0xa8, 0x07, 0x30, 0xed, 0xdf, 0x08, 0x82, 0x04, 0x56, 0xa3, - 0x61, 0x55, 0xac, 0xaa, 0xbe, 0x4b, 0xf8, 0xe8, 0x71, 0xb7, 0x3c, 0x1f, 0x13, 0xe7, 0xe7, 0x58, - 0x46, 0xcf, 0xf0, 0x57, 0xca, 0x3f, 0x32, 0x50, 0xf0, 0x73, 0x5d, 0xf4, 0xdd, 0xc4, 0x1d, 0x95, - 0xce, 0xaf, 0x51, 0xe5, 0xa7, 0x5e, 0x6a, 0x4b, 0x90, 0xb3, 0xc3, 0xdf, 0x34, 0x82, 0xd5, 0xf0, - 0xdf, 0x30, 0xf8, 0x08, 0xba, 0x09, 0x05, 0xfe, 0x7b, 0x91, 0x6e, 0x99, 0x92, 0xa0, 0x96, 0x02, - 0xba, 0x93, 0xfd, 0xc7, 0xdd, 0xf2, 0x94, 0xff, 0x2d, 0xe9, 0x4f, 0xb6, 0xd0, 0x6d, 0xc8, 0x7a, - 0xa6, 0x9f, 0xad, 0xa5, 0xe0, 0xe3, 0xda, 0xe6, 0xae, 0x20, 0x91, 0xea, 0x04, 0xcb, 0xba, 0x6b, - 0x9b, 0xbb, 0x98, 0x01, 0xa0, 0xb7, 0x60, 0xdc, 0x61, 0x01, 0xe0, 0x4a, 0x32, 0xba, 0x36, 0x1c, - 0x4a, 0xd0, 0xba, 0xd1, 0xae, 0x1b, 0xed, 0x66, 0x50, 0x79, 0x0a, 0xcb, 0x0c, 0x1c, 0x0d, 0x4b, - 0x54, 0xb5, 0x09, 0xb3, 0x89, 0x47, 0x15, 0xaa, 0xc4, 0x8a, 0x2a, 0x5f, 0x48, 0x14, 0x55, 0x26, - 0xa5, 0x58, 0xa4, 0x96, 0x72, 0x21, 0x46, 0x4b, 0xe1, 0x31, 0xb9, 0xc7, 0x3a, 0x25, 0x4b, 0xa9, - 0xbf, 0xcd, 0xc2, 0xbc, 0xaf, 0x29, 0x2c, 0xe0, 0x5c, 0x8f, 0xe9, 0x7a, 0x31, 0xa1, 0xeb, 0xb9, - 0xbe, 0x09, 0x9f, 0x55, 0x70, 0x9e, 0x6d, 0x05, 0xe7, 0x5f, 0x0a, 0xcc, 0xc4, 0x9f, 0xa5, 0xc1, - 0x39, 0x56, 0x06, 0x9d, 0x63, 0xf4, 0x3a, 0x4c, 0xc8, 0x47, 0x78, 0xfa, 0x8b, 0x22, 0xf9, 0xb2, - 0xe7, 0x9c, 0x28, 0x1b, 0xd8, 0x87, 0x43, 0xcd, 0xd8, 0xfb, 0x5d, 0x24, 0x3b, 0xaf, 0xa4, 0x07, - 0x4f, 0x5f, 0x6d, 0x7c, 0x98, 0x81, 0x73, 0x27, 0x9d, 0x23, 0xf4, 0x23, 0x98, 0x0f, 0x0a, 0x2f, - 0x7e, 0xa7, 0xe4, 0xa7, 0x8f, 0x55, 0x11, 0x7e, 0x5e, 0x2e, 0x64, 0xfe, 0x6e, 0x12, 0x15, 0xf7, - 0x2b, 0x42, 0x26, 0x4c, 0xf3, 0x73, 0x1b, 0x68, 0xfe, 0x1f, 0xaa, 0xe3, 0xbc, 0xec, 0x8b, 0xa3, - 0x68, 0x38, 0x0e, 0xae, 0xbe, 0xa7, 0x80, 0xba, 0x4b, 0x75, 0x87, 0x7a, 0xff, 0x7f, 0xbf, 0x92, - 0xff, 0x5c, 0x81, 0x0b, 0x29, 0x7e, 0xdf, 0xfe, 0x64, 0x16, 0xf7, 0xcf, 0x0c, 0x14, 0x03, 0x42, - 0x47, 0xef, 0x28, 0x30, 0xab, 0x53, 0xc7, 0x33, 0x1a, 0x86, 0x4e, 0x3c, 0x1a, 0xb9, 0xb9, 0x5f, - 0x4d, 0xf3, 0x1b, 0xfe, 0x30, 0xff, 0x57, 0x3f, 0x2f, 0x57, 0x30, 0xbb, 0x1e, 0x57, 0x82, 0x93, - 0x5a, 0xd1, 0x0d, 0x98, 0x69, 0x19, 0x6d, 0xa3, 0xd5, 0x69, 0xdd, 0xa3, 0x0e, 0xcb, 0x3a, 0xa5, - 0xb5, 0xa8, 0xd7, 0x2d, 0xcf, 0x6c, 0xc5, 0x46, 0x70, 0x42, 0x12, 0xe9, 0x30, 0x61, 0xd9, 0xd1, - 0x73, 0xb7, 0x3a, 0xc2, 0xa5, 0xa6, 0x6d, 0x8b, 0xa9, 0x22, 0xfd, 0x0e, 0xa8, 0x55, 0xf6, 0x62, - 0x1f, 0x79, 0xe1, 0x06, 0x4c, 0x45, 0x25, 0x47, 0x4a, 0x81, 0xff, 0x9d, 0x81, 0x42, 0x4d, 0xb7, - 0x3f, 0x1d, 0x25, 0xa4, 0x9d, 0x58, 0x09, 0x29, 0xc5, 0xef, 0x75, 0xbe, 0xe5, 0x03, 0x2b, 0x48, - 0xaf, 0x27, 0x2a, 0x48, 0x57, 0x46, 0xc0, 0x3c, 0xbd, 0x80, 0xf4, 0x8b, 0x0c, 0x4c, 0xf9, 0xa2, - 0x67, 0xfe, 0x25, 0xbd, 0x1d, 0x7f, 0x49, 0x5f, 0x4a, 0xef, 0xa5, 0x01, 0x0f, 0xe9, 0x99, 0xd0, - 0x39, 0x6c, 0x37, 0xd4, 0x39, 0x98, 0x89, 0xfb, 0x95, 0xff, 0x61, 0xa3, 0xe6, 0x90, 0x46, 0xc3, - 0xd0, 0x77, 0x6d, 0xd3, 0xf0, 0xce, 0x7c, 0xf0, 0xd6, 0x62, 0xc1, 0x9b, 0xa2, 0x8e, 0x16, 0xb5, - 0x3e, 0xc5, 0x1f, 0x36, 0x72, 0x69, 0xff, 0xb0, 0x11, 0xc3, 0x3d, 0x3d, 0x88, 0xdf, 0xcf, 0xc0, - 0x5c, 0x54, 0xfc, 0xcc, 0x07, 0xf2, 0x6e, 0x3c, 0x90, 0xb5, 0xd1, 0xbc, 0x35, 0x20, 0x98, 0x51, - 0xdc, 0x49, 0x3c, 0xa0, 0xcf, 0x01, 0x3a, 0xc1, 0xcf, 0xda, 0xa3, 0xc7, 0x8b, 0x63, 0x1f, 0x3c, - 0x5e, 0x1c, 0xfb, 0xf0, 0xf1, 0xe2, 0xd8, 0xdb, 0xbd, 0x45, 0xe5, 0x51, 0x6f, 0x51, 0xf9, 0xa0, - 0xb7, 0xa8, 0x7c, 0xd8, 0x5b, 0x54, 0xfe, 0xdc, 0x5b, 0x54, 0xde, 0xfd, 0xcb, 0xe2, 0xd8, 0x9b, - 0x05, 0x5f, 0xf9, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x87, 0x8d, 0xfa, 0x49, 0xea, 0x28, 0x00, - 0x00, + 0x15, 0xf6, 0xec, 0x8f, 0xb4, 0xfb, 0xf4, 0xdf, 0x38, 0x61, 0x23, 0x52, 0x5a, 0xd5, 0x98, 0x50, + 0xb1, 0x89, 0x67, 0x6d, 0xc5, 0x18, 0xd9, 0x98, 0x83, 0x56, 0xb1, 0x2d, 0x28, 0xc9, 0x52, 0x5a, + 0x8b, 0x21, 0xc1, 0x04, 0x5a, 0xb3, 0xbd, 0xab, 0x41, 0xb3, 0x3b, 0x53, 0x33, 0xbd, 0x32, 0xaa, + 0x82, 0xaa, 0xe0, 0x4b, 0xae, 0x81, 0x5b, 0x08, 0x9c, 0x72, 0xe5, 0x42, 0x71, 0xa4, 0x72, 0xc6, + 0xc5, 0x29, 0xc7, 0x9c, 0xb6, 0xf0, 0x72, 0xe0, 0xc0, 0x05, 0x42, 0x15, 0x55, 0xe8, 0x44, 0xf5, + 0xcf, 0xfc, 0xed, 0x6a, 0xa5, 0xd9, 0x60, 0x39, 0x28, 0xc5, 0x6d, 0xba, 0xfb, 0xf5, 0xf7, 0xba, + 0xdf, 0x7b, 0xfd, 0xf5, 0xeb, 0xb7, 0x0b, 0x5f, 0xf3, 0xad, 0xa6, 0x6f, 0xec, 0x2d, 0xfb, 0x86, + 0xe5, 0x54, 0x7c, 0xea, 0xed, 0x5b, 0x26, 0xbd, 0x4c, 0x5c, 0xcb, 0xaf, 0x10, 0xd7, 0xaa, 0xec, + 0x5f, 0x25, 0xb6, 0xbb, 0x4b, 0xae, 0x56, 0x9a, 0xb4, 0x4d, 0x3d, 0xc2, 0x68, 0xdd, 0x70, 0x3d, + 0x87, 0x39, 0x68, 0x51, 0xce, 0x30, 0xd4, 0x8c, 0x1f, 0xf2, 0x19, 0x06, 0x71, 0x2d, 0x23, 0x98, + 0x31, 0x7f, 0xb9, 0x69, 0xb1, 0xdd, 0xce, 0x8e, 0x61, 0x3a, 0xad, 0x4a, 0xd3, 0x69, 0x3a, 0x15, + 0x31, 0x71, 0xa7, 0xd3, 0x10, 0x2d, 0xd1, 0x10, 0x5f, 0x12, 0x70, 0x5e, 0x57, 0x4b, 0xe0, 0x5a, + 0x4d, 0xc7, 0xa3, 0x95, 0xfd, 0x01, 0xa5, 0xf3, 0xd7, 0x22, 0x99, 0x16, 0x31, 0x77, 0xad, 0x36, + 0xf5, 0x0e, 0x2a, 0xee, 0x5e, 0xb3, 0x22, 0xd6, 0xdb, 0xa2, 0x8c, 0x1c, 0x35, 0xeb, 0xfa, 0xb0, + 0x59, 0x5e, 0xa7, 0xcd, 0xac, 0x16, 0xad, 0xf8, 0xe6, 0x2e, 0x6d, 0x91, 0x81, 0x79, 0x37, 0xe2, + 0x96, 0x31, 0x9d, 0x36, 0xf3, 0x1c, 0xdb, 0xa6, 0xde, 0xe5, 0x60, 0x1a, 0x87, 0x10, 0x53, 0x69, + 0xff, 0x54, 0xfd, 0xd7, 0x1a, 0xbc, 0xb4, 0xea, 0xb4, 0x1b, 0x56, 0x73, 0x83, 0xb8, 0xfe, 0x6b, + 0xb4, 0x41, 0x3a, 0x36, 0x5b, 0x77, 0x4c, 0x62, 0x6f, 0xee, 0xfc, 0x98, 0x9a, 0x0c, 0xd3, 0x06, + 0xf5, 0x68, 0xdb, 0xa4, 0xe8, 0x02, 0xe4, 0x9b, 0x9e, 0xd3, 0x71, 0x4b, 0xda, 0xa2, 0xf6, 0x72, + 0xb1, 0x3a, 0xf5, 0xb8, 0x5b, 0x3e, 0xd7, 0xeb, 0x96, 0xf3, 0x77, 0x79, 0x27, 0x96, 0x63, 0xe8, + 0x15, 0x28, 0x78, 0xd4, 0x77, 0x3a, 0x9e, 0x49, 0x4b, 0x19, 0x21, 0x37, 0xab, 0xe4, 0x0a, 0x58, + 0xf5, 0xe3, 0x50, 0x02, 0x2d, 0x42, 0xae, 0x4d, 0x5a, 0xb4, 0x94, 0x15, 0x92, 0x93, 0x4a, 0x32, + 0x77, 0x8f, 0xb4, 0x28, 0x16, 0x23, 0xfa, 0x1f, 0x35, 0x98, 0xb9, 0xe3, 0x78, 0x0f, 0x89, 0x57, + 0xaf, 0x39, 0x35, 0xe2, 0x35, 0x29, 0x43, 0xfb, 0x50, 0x64, 0xe2, 0x0b, 0xd3, 0x86, 0x58, 0xcc, + 0xc4, 0xd2, 0x6d, 0xe3, 0x24, 0x27, 0x1b, 0xdb, 0x72, 0xe4, 0xb8, 0x2d, 0x56, 0xe7, 0xd4, 0x0a, + 0x8a, 0xb5, 0x00, 0x1f, 0x47, 0xaa, 0xd0, 0x2d, 0x00, 0xd9, 0xd8, 0x72, 0x3c, 0x26, 0x76, 0x97, + 0xaf, 0xbe, 0xd8, 0xeb, 0x96, 0xa1, 0x16, 0xf6, 0x1e, 0x26, 0x5a, 0x38, 0x26, 0xaf, 0xff, 0x33, + 0x03, 0xe3, 0x77, 0x09, 0xa3, 0x0f, 0xc9, 0x01, 0x7a, 0x00, 0x05, 0x76, 0xe0, 0xd2, 0x0d, 0xca, + 0x88, 0xda, 0x80, 0x11, 0x6c, 0x20, 0xee, 0x7a, 0xc3, 0xdd, 0x6b, 0x1a, 0x62, 0x27, 0x3c, 0x60, + 0x8c, 0xfd, 0xab, 0x46, 0x4d, 0xcd, 0x8a, 0xac, 0x1a, 0xf4, 0xe0, 0x10, 0x11, 0xfd, 0x08, 0x0a, + 0x5c, 0xbe, 0x4e, 0x18, 0x11, 0xab, 0x9c, 0x58, 0xba, 0x92, 0x0e, 0x5d, 0x9a, 0x43, 0xe0, 0x23, + 0x85, 0x0f, 0x51, 0x1f, 0x0e, 0x51, 0xd1, 0x26, 0xe4, 0x7c, 0x97, 0x9a, 0xc2, 0x6f, 0x13, 0x4b, + 0x97, 0x4f, 0x36, 0xbe, 0xda, 0xf8, 0xb6, 0x4b, 0xcd, 0xc8, 0xcd, 0xbc, 0x85, 0x05, 0x10, 0xfa, + 0x2e, 0x8c, 0xf9, 0x8c, 0xb0, 0x8e, 0x5f, 0xca, 0x09, 0xc8, 0x4a, 0x7a, 0x48, 0x31, 0xad, 0x3a, + 0xad, 0x40, 0xc7, 0x64, 0x1b, 0x2b, 0x38, 0xbd, 0x01, 0xd3, 0x4a, 0x70, 0xa5, 0x5e, 0xf7, 0xa8, + 0xef, 0xa3, 0x0a, 0xe4, 0xb8, 0xa5, 0x54, 0x14, 0x7f, 0x29, 0x58, 0x0c, 0xb7, 0xe3, 0x61, 0xb7, + 0x3c, 0xa1, 0xc4, 0x78, 0x13, 0x0b, 0x41, 0x1e, 0xf7, 0xfb, 0xc4, 0xee, 0x04, 0xf1, 0x1c, 0xc6, + 0xfd, 0x7d, 0xde, 0x89, 0xe5, 0x98, 0xfe, 0x28, 0x0b, 0x93, 0x4a, 0xd1, 0xaa, 0x4d, 0x7c, 0x3f, + 0xe1, 0xe2, 0xdc, 0xa9, 0xba, 0x58, 0x3b, 0x15, 0x17, 0xd7, 0x94, 0x8b, 0x65, 0x00, 0x2d, 0xa5, + 0xf6, 0x87, 0xd8, 0xfd, 0x50, 0x3f, 0x3f, 0x08, 0xfd, 0x2c, 0x43, 0xe7, 0xda, 0x88, 0xb8, 0xc7, + 0x3b, 0xfb, 0x0f, 0x59, 0x78, 0x2e, 0x2e, 0xbe, 0xea, 0xb4, 0xeb, 0x16, 0xb3, 0x9c, 0x36, 0xfa, + 0x66, 0xc2, 0xe9, 0x17, 0xfb, 0x9c, 0xfe, 0xc2, 0x91, 0x93, 0x62, 0x21, 0xb0, 0x1e, 0x2e, 0x5b, + 0xc6, 0xc0, 0xb5, 0xe4, 0x02, 0x0e, 0xbb, 0xe5, 0x23, 0xee, 0x04, 0x23, 0x44, 0x4a, 0x2e, 0x13, + 0x7d, 0x05, 0xc6, 0x3c, 0x4a, 0x7c, 0xa7, 0xad, 0x78, 0x2f, 0xdc, 0x0e, 0x16, 0xbd, 0x58, 0x8d, + 0xa2, 0x8b, 0x30, 0xde, 0xa2, 0xbe, 0x4f, 0x9a, 0x54, 0x44, 0x50, 0xb1, 0x3a, 0xa3, 0x04, 0xc7, + 0x37, 0x64, 0x37, 0x0e, 0xc6, 0xd1, 0x3e, 0x20, 0x9b, 0xf8, 0xac, 0xe6, 0x91, 0xb6, 0x2f, 0x17, + 0x6f, 0xb5, 0x68, 0x29, 0x2f, 0x6c, 0x7c, 0x29, 0x65, 0xdc, 0x59, 0x2d, 0x5a, 0x9d, 0x57, 0x1a, + 0xd0, 0xfa, 0x00, 0x1a, 0x3e, 0x42, 0x03, 0xfa, 0x36, 0x20, 0x67, 0x87, 0xfb, 0x8e, 0xd6, 0xef, + 0xca, 0x8b, 0xc5, 0x72, 0xda, 0xa5, 0xb1, 0x45, 0xed, 0xe5, 0x6c, 0x84, 0xb5, 0x39, 0x20, 0x81, + 0x8f, 0x98, 0xa5, 0x7f, 0x90, 0x81, 0xd9, 0xb8, 0x23, 0xd6, 0x2d, 0x9f, 0x25, 0x8e, 0x51, 0xf6, + 0xa9, 0x1f, 0xa3, 0x07, 0x03, 0xc7, 0x28, 0x25, 0x3a, 0x5f, 0x5b, 0x12, 0x3d, 0xe8, 0x89, 0x1d, + 0xa1, 0x6d, 0xc8, 0x5b, 0x8c, 0xb6, 0x78, 0xd0, 0x64, 0xe3, 0xd0, 0xe9, 0x62, 0x3d, 0x22, 0x9a, + 0x6f, 0x71, 0x10, 0x2c, 0xb1, 0xf4, 0xbf, 0x66, 0x93, 0x56, 0xe2, 0x87, 0x0b, 0x2d, 0x01, 0x44, + 0xb7, 0xbe, 0x0a, 0xf2, 0xf0, 0x78, 0xaf, 0x86, 0x23, 0x38, 0x26, 0x85, 0x7e, 0xa1, 0x41, 0x89, + 0xd8, 0xb6, 0xf3, 0x90, 0xd6, 0x15, 0x1e, 0xbf, 0x76, 0x7d, 0x97, 0x98, 0xd4, 0x57, 0xa7, 0xfe, + 0xd5, 0x94, 0xc6, 0x20, 0x3b, 0xd4, 0xde, 0xa6, 0x36, 0x35, 0x99, 0xe3, 0x55, 0x17, 0x95, 0xde, + 0xd2, 0xca, 0x10, 0x70, 0x3c, 0x54, 0x2d, 0x7a, 0x47, 0x83, 0xe7, 0xd5, 0x20, 0x76, 0x3a, 0x8c, + 0xc6, 0x56, 0x94, 0xfd, 0xf4, 0x2b, 0x9a, 0xef, 0x75, 0xcb, 0xcf, 0xaf, 0x1c, 0x09, 0x8b, 0x87, + 0xa8, 0x43, 0x6f, 0x6b, 0x30, 0xe5, 0x12, 0x8f, 0xb4, 0x28, 0xa3, 0x9e, 0xcf, 0x13, 0x0d, 0x49, + 0xe2, 0x77, 0x4f, 0x76, 0x62, 0xaa, 0x6c, 0xaa, 0x3a, 0xd7, 0xeb, 0x96, 0xa7, 0xb6, 0xe2, 0x1a, + 0x70, 0x52, 0xa1, 0xfe, 0x73, 0x0d, 0xd0, 0x20, 0xf9, 0xa1, 0x3d, 0xe1, 0x6b, 0x49, 0x2c, 0x7e, + 0x49, 0x13, 0xa1, 0xf5, 0xf5, 0xd1, 0x42, 0x2b, 0x24, 0xa6, 0x44, 0x90, 0x28, 0x48, 0x1c, 0x83, + 0xd7, 0x7f, 0x17, 0x8b, 0xb6, 0x90, 0x4c, 0x97, 0x13, 0x64, 0xfa, 0xe5, 0x3e, 0x32, 0x3d, 0xdf, + 0x2f, 0x7f, 0x6a, 0x3c, 0x1a, 0xe3, 0xc7, 0xec, 0x09, 0xfc, 0x18, 0x51, 0x6e, 0xee, 0x58, 0xca, + 0xfd, 0x3c, 0xf0, 0xe8, 0x7b, 0x19, 0x98, 0x50, 0x3e, 0x18, 0xa0, 0x50, 0xed, 0x54, 0x29, 0x34, + 0xf3, 0xd4, 0x29, 0xf4, 0x5e, 0x40, 0xa1, 0x59, 0x11, 0xe7, 0x17, 0x53, 0xc7, 0xf9, 0x10, 0xf6, + 0xdc, 0x83, 0xe7, 0x95, 0x40, 0xff, 0xeb, 0xa6, 0x02, 0xc5, 0x76, 0x70, 0xfc, 0x55, 0x64, 0x87, + 0xaf, 0x81, 0x90, 0x17, 0x70, 0x24, 0x13, 0xbe, 0x5d, 0x32, 0x43, 0xdf, 0x2e, 0x9f, 0x68, 0xa1, + 0x23, 0x04, 0x4b, 0x5f, 0x80, 0xbc, 0xc9, 0x8f, 0x5f, 0xff, 0x03, 0x4a, 0x9c, 0x49, 0x2c, 0xc7, + 0xd0, 0xf7, 0xa1, 0x68, 0x5b, 0x3e, 0xe3, 0xee, 0x0c, 0x2e, 0x8e, 0x4b, 0x27, 0xef, 0x7a, 0x5d, + 0x4d, 0x89, 0xd6, 0x1c, 0xf4, 0xf8, 0x38, 0xc2, 0x43, 0x04, 0x8a, 0x44, 0xe6, 0xb7, 0x34, 0x30, + 0xe9, 0x95, 0xd4, 0x26, 0x55, 0x99, 0x71, 0xa4, 0x62, 0x25, 0x80, 0xc2, 0x11, 0xaa, 0xfe, 0x61, + 0x06, 0xa6, 0x12, 0xa9, 0x79, 0x52, 0xa9, 0x76, 0x1a, 0x4a, 0x51, 0x23, 0xc1, 0x89, 0xd2, 0x6a, + 0x23, 0xa4, 0xac, 0x69, 0xe9, 0x90, 0x6f, 0x25, 0x72, 0x4e, 0x6a, 0xfb, 0x05, 0xae, 0x50, 0xd9, + 0xeb, 0xb1, 0x2e, 0xd2, 0xff, 0xa4, 0xc1, 0xec, 0x5a, 0xad, 0xb6, 0xb5, 0x46, 0x49, 0x9d, 0x7a, + 0x77, 0x2c, 0x9b, 0x51, 0x0f, 0xbd, 0x09, 0x59, 0x52, 0xaf, 0x2b, 0xe3, 0x7d, 0xe3, 0x64, 0x8d, + 0xfd, 0x00, 0xc6, 0x4a, 0xbd, 0x7e, 0xbb, 0xcd, 0xbc, 0x83, 0xea, 0x84, 0x52, 0x9e, 0x5d, 0xa9, + 0xd7, 0x31, 0x07, 0x45, 0x3a, 0xa7, 0xc6, 0x96, 0xb3, 0x4f, 0x85, 0xdd, 0x8a, 0x55, 0x90, 0xb4, + 0xc8, 0x7b, 0xb0, 0x1a, 0x99, 0xbf, 0x0e, 0x85, 0x00, 0x01, 0xcd, 0x42, 0x76, 0x8f, 0x1e, 0xc8, + 0x18, 0xc6, 0xfc, 0x13, 0x9d, 0x4f, 0x3c, 0x90, 0xd4, 0x8b, 0xe8, 0x66, 0x66, 0x59, 0xd3, 0xff, + 0x9d, 0x81, 0x22, 0x5f, 0x8b, 0xb8, 0x5d, 0xcf, 0xfc, 0xab, 0xf7, 0xf5, 0xc4, 0xab, 0xb7, 0x92, + 0xce, 0x0d, 0x62, 0xeb, 0x43, 0xdf, 0x43, 0x6f, 0xf4, 0xbd, 0x7b, 0xaf, 0x8e, 0x02, 0x7a, 0xfc, + 0x63, 0xe8, 0xef, 0x1a, 0xcc, 0x84, 0xb2, 0x2b, 0xa6, 0xb8, 0xb9, 0xdf, 0x82, 0x62, 0x23, 0x28, + 0xa6, 0x28, 0x17, 0xa4, 0xd0, 0xd8, 0x57, 0x7f, 0xa9, 0x4e, 0xf1, 0xe0, 0x0d, 0x3b, 0x71, 0x04, + 0x89, 0x7e, 0x06, 0x93, 0xf4, 0x27, 0x8c, 0xb6, 0x7d, 0x7e, 0x37, 0xd1, 0x86, 0xf2, 0xc3, 0x53, + 0xcb, 0x99, 0x66, 0x7b, 0xdd, 0xf2, 0xe4, 0xed, 0x98, 0x02, 0x9c, 0x50, 0xa7, 0xff, 0x2d, 0xbe, + 0x65, 0x75, 0x74, 0xde, 0x80, 0xf1, 0x5d, 0x71, 0x12, 0x7c, 0xb5, 0xe1, 0xa5, 0xd1, 0x8f, 0x4f, + 0x75, 0x82, 0x27, 0x15, 0xb2, 0xc7, 0xc7, 0x01, 0xde, 0x67, 0xbd, 0xdb, 0x5f, 0x66, 0x60, 0x2a, + 0xdc, 0xed, 0x9a, 0xe3, 0x33, 0xf4, 0x0a, 0x14, 0x76, 0x1d, 0x9f, 0x89, 0x6b, 0x49, 0x4b, 0x16, + 0xdf, 0xd6, 0x54, 0x3f, 0x0e, 0x25, 0x50, 0x0d, 0xf2, 0x5e, 0xc7, 0xa6, 0x01, 0x5f, 0x8e, 0x12, + 0xcf, 0xb8, 0x63, 0xd3, 0xe8, 0xfe, 0xe2, 0x2d, 0x1f, 0x4b, 0xb0, 0x01, 0xa3, 0x64, 0x9f, 0xad, + 0x51, 0x7e, 0x13, 0x37, 0xca, 0x99, 0x4f, 0x7f, 0xb6, 0x92, 0xe9, 0xcf, 0x57, 0x47, 0x70, 0xd1, + 0x90, 0x04, 0xe8, 0xb7, 0x59, 0x98, 0x0e, 0x65, 0x36, 0x08, 0x33, 0x77, 0x79, 0xd4, 0xb8, 0x84, + 0xed, 0xd6, 0xa2, 0x94, 0x3e, 0x5c, 0xd2, 0x96, 0xea, 0xc7, 0xa1, 0x04, 0x7a, 0x11, 0x72, 0xfc, + 0x5b, 0xa5, 0x3d, 0x05, 0xce, 0x67, 0x5c, 0x0a, 0x8b, 0x5e, 0x64, 0x00, 0xc8, 0xd3, 0x21, 0xd0, + 0x54, 0x79, 0x83, 0x13, 0xea, 0x5a, 0xd8, 0x8b, 0x63, 0x12, 0xa8, 0x0e, 0x63, 0xb2, 0x55, 0xca, + 0x89, 0x1d, 0xde, 0x1a, 0x61, 0x87, 0x62, 0xf5, 0x86, 0x04, 0x96, 0x97, 0x5b, 0x48, 0x85, 0xb2, + 0x13, 0x2b, 0xec, 0x81, 0x98, 0xcc, 0x3f, 0xd3, 0x98, 0x9c, 0xbf, 0x01, 0x13, 0xb1, 0x55, 0x8e, + 0x74, 0x81, 0xbe, 0x1b, 0x0f, 0x67, 0x7e, 0xce, 0xd0, 0xeb, 0x90, 0x6f, 0xf1, 0x8d, 0xf7, 0x97, + 0xfd, 0xd2, 0x1a, 0xac, 0x5a, 0xe4, 0x31, 0x21, 0x3e, 0xb1, 0x44, 0x42, 0xdf, 0x81, 0xb1, 0x86, + 0xe0, 0x39, 0x15, 0xc1, 0xa3, 0x5c, 0x42, 0x8a, 0x20, 0x45, 0xd2, 0x20, 0xbf, 0xb1, 0x02, 0xe3, + 0xb0, 0x44, 0x5c, 0x3b, 0x8a, 0x03, 0x46, 0x81, 0x95, 0xf7, 0x95, 0x84, 0x95, 0xdf, 0x58, 0x81, + 0xe9, 0x1f, 0x6a, 0x31, 0x93, 0x88, 0xbc, 0xba, 0x06, 0x79, 0x4e, 0x6a, 0x41, 0x72, 0x39, 0x0a, + 0x91, 0x71, 0x5a, 0x8c, 0x4e, 0x0a, 0x6f, 0xf9, 0x58, 0x82, 0xa1, 0xfb, 0x30, 0x5e, 0x97, 0x4e, + 0x57, 0x66, 0x19, 0x19, 0x57, 0xdc, 0x1a, 0x2a, 0x70, 0x70, 0x00, 0xa6, 0x3f, 0x8a, 0x5f, 0x52, + 0x2a, 0x45, 0x76, 0x60, 0xa2, 0x29, 0x73, 0x51, 0x4c, 0x1b, 0xc1, 0x3e, 0x96, 0x53, 0x27, 0xb0, + 0xfd, 0x01, 0xf9, 0x05, 0xb5, 0xa1, 0xe0, 0xf5, 0xc1, 0x41, 0x71, 0x5c, 0x83, 0xbe, 0x07, 0x53, + 0xc1, 0x8d, 0x20, 0x49, 0x60, 0x39, 0x1e, 0x56, 0xc5, 0xaa, 0x1e, 0x98, 0x44, 0x8c, 0x1e, 0x76, + 0xcb, 0x73, 0x09, 0x71, 0x71, 0x8e, 0x55, 0xf4, 0x9c, 0xfc, 0x0e, 0xfa, 0x47, 0x06, 0x0a, 0x41, + 0xae, 0x8b, 0x7e, 0xd0, 0x77, 0x47, 0xa5, 0xb3, 0x6b, 0x5c, 0xf9, 0xb1, 0x97, 0xda, 0x22, 0xe4, + 0xdc, 0xe8, 0xd7, 0x99, 0x70, 0x35, 0xe2, 0xd7, 0x18, 0x31, 0x82, 0x6e, 0x41, 0x41, 0xfc, 0xf2, + 0x65, 0x3a, 0xb6, 0x22, 0xa8, 0xc5, 0x90, 0xee, 0x54, 0xff, 0x61, 0xb7, 0x3c, 0x19, 0x7c, 0x2b, + 0xfa, 0x53, 0x2d, 0x74, 0x07, 0xb2, 0xcc, 0x0e, 0xb2, 0xb5, 0x14, 0x7c, 0x5c, 0x5b, 0xdf, 0x96, + 0x24, 0x52, 0x1d, 0xe7, 0x59, 0x77, 0x6d, 0x7d, 0x1b, 0x73, 0x00, 0xf4, 0x16, 0x8c, 0x79, 0x3c, + 0x00, 0x7c, 0x45, 0x46, 0xd7, 0x4f, 0x86, 0x92, 0xb4, 0x6e, 0xb5, 0xeb, 0x56, 0xbb, 0x19, 0xd6, + 0xb6, 0xa2, 0x42, 0x86, 0x40, 0xc3, 0x0a, 0x55, 0xff, 0x7d, 0x16, 0xe6, 0x02, 0x9b, 0x47, 0x95, + 0x9b, 0x1b, 0x89, 0xca, 0xcd, 0x4b, 0x7d, 0x95, 0x9b, 0xe7, 0x06, 0x26, 0xfc, 0xbf, 0x74, 0xf3, + 0x6c, 0x4b, 0x37, 0xef, 0x6b, 0x30, 0x9d, 0x7c, 0x2d, 0x86, 0x01, 0xad, 0x25, 0x8f, 0x57, 0x2c, + 0xa0, 0x9b, 0x89, 0xc7, 0xaf, 0xcc, 0x14, 0x5e, 0x4d, 0xff, 0x2a, 0x4d, 0x5f, 0x0c, 0x7c, 0x94, + 0x81, 0xf3, 0x47, 0x05, 0x21, 0xfa, 0x29, 0xcc, 0x85, 0x75, 0x91, 0xa0, 0x53, 0x1d, 0xee, 0x4f, + 0x55, 0xb0, 0x7d, 0x41, 0x2d, 0x64, 0xee, 0x5e, 0x3f, 0x2a, 0x1e, 0x54, 0x84, 0x6c, 0x98, 0x12, + 0x41, 0x1f, 0x6a, 0xfe, 0x2f, 0x8a, 0xd7, 0xa2, 0x2a, 0x8b, 0xe3, 0x68, 0x38, 0x09, 0xae, 0xbf, + 0xa7, 0x81, 0xbe, 0x4d, 0x4d, 0x8f, 0xb2, 0xff, 0xbd, 0x1f, 0xcb, 0x7f, 0xa5, 0xc1, 0x85, 0x14, + 0x3f, 0x73, 0x7f, 0x36, 0x8b, 0xfb, 0x24, 0x03, 0xc5, 0x90, 0x0d, 0xd1, 0x3b, 0x1a, 0xcc, 0x98, + 0xd4, 0x63, 0x56, 0xc3, 0x32, 0x09, 0xa3, 0xb1, 0x6b, 0xef, 0xb5, 0x34, 0x3f, 0xe5, 0x9f, 0x64, + 0xff, 0xea, 0x17, 0xd5, 0x0a, 0x66, 0x56, 0x93, 0x4a, 0x70, 0xbf, 0x56, 0x74, 0x13, 0xa6, 0x5b, + 0x56, 0xdb, 0x6a, 0x75, 0x5a, 0xf7, 0xa9, 0xc7, 0x53, 0x36, 0xb5, 0x5b, 0xd4, 0xeb, 0x96, 0xa7, + 0x37, 0x12, 0x23, 0xb8, 0x4f, 0x12, 0x99, 0x30, 0xee, 0xb8, 0xf1, 0x73, 0xb7, 0x3c, 0xc2, 0x8d, + 0x60, 0x6c, 0xca, 0xa9, 0x32, 0x77, 0x0d, 0x09, 0x50, 0xf5, 0xe2, 0x00, 0x79, 0xfe, 0x26, 0x4c, + 0xc6, 0x25, 0x47, 0xca, 0x1f, 0xff, 0x95, 0x81, 0x42, 0xcd, 0x74, 0x3f, 0x1f, 0xf5, 0x97, 0xad, + 0x44, 0xfd, 0x25, 0xc5, 0xcf, 0x69, 0xc1, 0xce, 0x87, 0x96, 0x5f, 0xbe, 0xd7, 0x57, 0x7e, 0xb9, + 0x32, 0x02, 0xe6, 0xf1, 0xd5, 0x97, 0xf7, 0x33, 0x30, 0x19, 0x88, 0x9e, 0xf9, 0x67, 0xe8, 0x66, + 0xf2, 0x19, 0x7a, 0x29, 0xbd, 0x95, 0x86, 0xbc, 0x42, 0xa7, 0x23, 0xe3, 0x70, 0x6f, 0xe8, 0xb3, + 0x30, 0x9d, 0xb4, 0xab, 0xf8, 0x3f, 0x45, 0xcd, 0x23, 0x8d, 0x86, 0x65, 0x6e, 0xbb, 0xb6, 0xc5, + 0xce, 0x7c, 0xf0, 0xd6, 0x12, 0xc1, 0x9b, 0xa2, 0x08, 0x15, 0xdf, 0x7d, 0x8a, 0xff, 0x53, 0xe4, + 0xd2, 0xfe, 0x9f, 0x22, 0x81, 0x7b, 0x7c, 0x10, 0x7f, 0x90, 0x81, 0xd9, 0xb8, 0xf8, 0x99, 0x0f, + 0xe4, 0xed, 0x64, 0x20, 0x1b, 0xa3, 0x59, 0x6b, 0x48, 0x30, 0xa3, 0xa4, 0x91, 0x44, 0x40, 0x9f, + 0x07, 0x74, 0x84, 0x9d, 0x8d, 0xc7, 0x4f, 0x16, 0xce, 0x7d, 0xf4, 0x64, 0xe1, 0xdc, 0xc7, 0x4f, + 0x16, 0xce, 0xbd, 0xdd, 0x5b, 0xd0, 0x1e, 0xf7, 0x16, 0xb4, 0x8f, 0x7a, 0x0b, 0xda, 0xc7, 0xbd, + 0x05, 0xed, 0xcf, 0xbd, 0x05, 0xed, 0xdd, 0xbf, 0x2c, 0x9c, 0x7b, 0xb3, 0x10, 0x28, 0xff, 0x4f, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xb3, 0x21, 0xa3, 0x5a, 0xf1, 0x28, 0x00, 0x00, } func (m *ConfigMapsDefaultLocalObjectReference) Marshal() (dAtA []byte, err error) { @@ -1502,6 +1501,39 @@ func (m *Gateway) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *GatewayAddress) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GatewayAddress) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GatewayAddress) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i -= len(m.Value) + copy(dAtA[i:], m.Value) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Value))) + i-- + dAtA[i] = 0x12 + i -= len(m.Type) + copy(dAtA[i:], m.Type) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *GatewayClass) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -2010,7 +2042,7 @@ func (m *GatewayStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintGenerated(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x12 + dAtA[i] = 0x1a } } if len(m.Conditions) > 0 { @@ -2024,6 +2056,20 @@ func (m *GatewayStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintGenerated(dAtA, i, uint64(size)) } i-- + dAtA[i] = 0x12 + } + } + if len(m.Addresses) > 0 { + for iNdEx := len(m.Addresses) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Addresses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- dAtA[i] = 0xa } } @@ -2673,39 +2719,6 @@ func (m *Listener) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *ListenerAddress) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ListenerAddress) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ListenerAddress) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - i -= len(m.Value) - copy(dAtA[i:], m.Value) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Value))) - i-- - dAtA[i] = 0x12 - i -= len(m.Type) - copy(dAtA[i:], m.Type) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - func (m *ListenerCondition) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -2796,21 +2809,9 @@ func (m *ListenerStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x1a } } - if m.Address != nil { - { - size, err := m.Address.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i -= len(m.Port) + copy(dAtA[i:], m.Port) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Port))) i-- dAtA[i] = 0xa return len(dAtA) - i, nil @@ -3394,6 +3395,19 @@ func (m *Gateway) Size() (n int) { return n } +func (m *GatewayAddress) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Value) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + func (m *GatewayClass) Size() (n int) { if m == nil { return 0 @@ -3567,6 +3581,12 @@ func (m *GatewayStatus) Size() (n int) { } var l int _ = l + if len(m.Addresses) > 0 { + for _, e := range m.Addresses { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } if len(m.Conditions) > 0 { for _, e := range m.Conditions { l = e.Size() @@ -3815,19 +3835,6 @@ func (m *Listener) Size() (n int) { return n } -func (m *ListenerAddress) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Type) - n += 1 + l + sovGenerated(uint64(l)) - l = len(m.Value) - n += 1 + l + sovGenerated(uint64(l)) - return n -} - func (m *ListenerCondition) Size() (n int) { if m == nil { return 0 @@ -3854,12 +3861,8 @@ func (m *ListenerStatus) Size() (n int) { } var l int _ = l - l = len(m.Name) + l = len(m.Port) n += 1 + l + sovGenerated(uint64(l)) - if m.Address != nil { - l = m.Address.Size() - n += 1 + l + sovGenerated(uint64(l)) - } if len(m.Conditions) > 0 { for _, e := range m.Conditions { l = e.Size() @@ -4091,6 +4094,17 @@ func (this *Gateway) String() string { }, "") return s } +func (this *GatewayAddress) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&GatewayAddress{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Value:` + fmt.Sprintf("%v", this.Value) + `,`, + `}`, + }, "") + return s +} func (this *GatewayClass) String() string { if this == nil { return "nil" @@ -4216,9 +4230,9 @@ func (this *GatewaySpec) String() string { repeatedStringForListeners += strings.Replace(strings.Replace(f.String(), "Listener", "Listener", 1), `&`, ``, 1) + "," } repeatedStringForListeners += "}" - repeatedStringForAddresses := "[]ListenerAddress{" + repeatedStringForAddresses := "[]GatewayAddress{" for _, f := range this.Addresses { - repeatedStringForAddresses += strings.Replace(strings.Replace(f.String(), "ListenerAddress", "ListenerAddress", 1), `&`, ``, 1) + "," + repeatedStringForAddresses += strings.Replace(strings.Replace(f.String(), "GatewayAddress", "GatewayAddress", 1), `&`, ``, 1) + "," } repeatedStringForAddresses += "}" s := strings.Join([]string{`&GatewaySpec{`, @@ -4233,6 +4247,11 @@ func (this *GatewayStatus) String() string { if this == nil { return "nil" } + repeatedStringForAddresses := "[]GatewayAddress{" + for _, f := range this.Addresses { + repeatedStringForAddresses += strings.Replace(strings.Replace(f.String(), "GatewayAddress", "GatewayAddress", 1), `&`, ``, 1) + "," + } + repeatedStringForAddresses += "}" repeatedStringForConditions := "[]GatewayCondition{" for _, f := range this.Conditions { repeatedStringForConditions += strings.Replace(strings.Replace(f.String(), "GatewayCondition", "GatewayCondition", 1), `&`, ``, 1) + "," @@ -4244,6 +4263,7 @@ func (this *GatewayStatus) String() string { } repeatedStringForListeners += "}" s := strings.Join([]string{`&GatewayStatus{`, + `Addresses:` + repeatedStringForAddresses + `,`, `Conditions:` + repeatedStringForConditions + `,`, `Listeners:` + repeatedStringForListeners + `,`, `}`, @@ -4432,17 +4452,6 @@ func (this *Listener) String() string { }, "") return s } -func (this *ListenerAddress) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&ListenerAddress{`, - `Type:` + fmt.Sprintf("%v", this.Type) + `,`, - `Value:` + fmt.Sprintf("%v", this.Value) + `,`, - `}`, - }, "") - return s -} func (this *ListenerCondition) String() string { if this == nil { return "nil" @@ -4468,8 +4477,7 @@ func (this *ListenerStatus) String() string { } repeatedStringForConditions += "}" s := strings.Join([]string{`&ListenerStatus{`, - `Name:` + fmt.Sprintf("%v", this.Name) + `,`, - `Address:` + strings.Replace(this.Address.String(), "ListenerAddress", "ListenerAddress", 1) + `,`, + `Port:` + fmt.Sprintf("%v", this.Port) + `,`, `Conditions:` + repeatedStringForConditions + `,`, `}`, }, "") @@ -5081,7 +5089,7 @@ func (m *Gateway) Unmarshal(dAtA []byte) error { } return nil } -func (m *GatewayClass) Unmarshal(dAtA []byte) error { +func (m *GatewayAddress) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -5104,17 +5112,17 @@ func (m *GatewayClass) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: GatewayClass: wiretype end group for non-group") + return fmt.Errorf("proto: GatewayAddress: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: GatewayClass: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GatewayAddress: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -5124,30 +5132,29 @@ func (m *GatewayClass) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Type = AddressType(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -5157,24 +5164,142 @@ func (m *GatewayClass) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Value = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GatewayClass) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GatewayClass: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GatewayClass: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 3: if wireType != 2 { @@ -6556,7 +6681,7 @@ func (m *GatewaySpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Addresses = append(m.Addresses, ListenerAddress{}) + m.Addresses = append(m.Addresses, GatewayAddress{}) if err := m.Addresses[len(m.Addresses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } @@ -6615,6 +6740,40 @@ func (m *GatewayStatus) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Addresses", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Addresses = append(m.Addresses, GatewayAddress{}) + if err := m.Addresses[len(m.Addresses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType) } @@ -6648,7 +6807,7 @@ func (m *GatewayStatus) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 2: + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Listeners", wireType) } @@ -8669,123 +8828,6 @@ func (m *Listener) Unmarshal(dAtA []byte) error { } return nil } -func (m *ListenerAddress) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ListenerAddress: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ListenerAddress: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - 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 ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Type = AddressType(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - 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 ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Value = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *ListenerCondition) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -9050,7 +9092,7 @@ func (m *ListenerStatus) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -9078,43 +9120,7 @@ func (m *ListenerStatus) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Address == nil { - m.Address = &ListenerAddress{} - } - if err := m.Address.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Port = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { diff --git a/api/v1alpha1/generated.proto b/api/v1alpha1/generated.proto index 5094794af0..0ad77a96b7 100644 --- a/api/v1alpha1/generated.proto +++ b/api/v1alpha1/generated.proto @@ -107,6 +107,24 @@ message Gateway { optional GatewayStatus status = 4; } +// GatewayAddress describes an address that can be bound to a Gateway. +message GatewayAddress { + // Type of the Address. This is either "IPAddress" or "NamedAddress". + // + // Support: Extended + // + // +optional + // +kubebuilder:validation:Enum=IPAddress;NamedAddress + // +kubebuilder:default=IPAddress + optional string type = 1; + + // Value. Examples: "1.2.3.4", "128::1", "my-ip-address". Validity of the + // values will depend on `Type` and support by the controller. + // + // +required + optional string value = 2; +} + // GatewayClass describes a class of Gateways available to the user // for creating Gateway resources. // @@ -394,25 +412,34 @@ message GatewaySpec { // schedule the Gateway in an implementation-defined manner, // assigning an appropriate set of ListenerAddresses. // - // The GatewayClass MUST bind all Listeners to every - // ListenerAddress that it assigns to the Gateway. + // The GatewayClass MUST bind all Listeners tyo every + // GatewayAddress that it assigns to the Gateway. // // Support: Core // // +optional - repeated ListenerAddress addresses = 3; + repeated GatewayAddress addresses = 3; } // GatewayStatus defines the observed state of Gateway. message GatewayStatus { + // Addresses lists the IP addresses that have actually been + // bound to the Gateway. These addresses may differ from the + // addresses in the Spec, e.g. if the Gateway automatically + // assigns an address from a reserved pool. + // + // These addresses should all be of type "IPAddress". + // + // +required + repeated GatewayAddress addresses = 1; + // Conditions describe the current conditions of the Gateway. // +optional - repeated GatewayCondition conditions = 1; + repeated GatewayCondition conditions = 2; - // Listeners provide status for each listener defined in the Spec. The name - // in ListenerStatus refers to the corresponding Listener of the same name. + // Listeners provides status for each unique listener port defined in the Spec. // +optional - repeated ListenerStatus listeners = 2; + repeated ListenerStatus listeners = 3; } // HTTPHeaderFilter defines the filter behavior for a request match. @@ -698,6 +725,10 @@ message Listener { // Support: Core // // +required + // +kubebuilder:validation:Minimum=0 + // +kubebuilder:validation:Maximum=65536 + // +kubebuilder:validation:ExclusiveMinimum=true + // +kubebuilder:validation:ExclusiveMaximum=true optional int32 port = 2; // Protocol specifies the network protocol this listener @@ -748,18 +779,6 @@ message Listener { optional RouteBindingSelector routes = 5; } -// ListenerAddress describes an address for the Listener. -message ListenerAddress { - // Type of the Address. This is one of the *AddressType constants. - // - // Support: Extended - optional string type = 1; - - // Value. Examples: "1.2.3.4", "128::1", "my-ip-address". Validity of the - // values will depend on `Type` and support by the controller. - optional string value = 2; -} - // ListenerCondition is an error status for a given listener. message ListenerCondition { // Type indicates the type of condition. @@ -800,19 +819,19 @@ message ListenerCondition { optional int64 observedGeneration = 6; } -// ListenerStatus is the status associated with each listener block. +// ListenerStatus is the status associated with a Listener port. message ListenerStatus { - // Name is the name of the listener this status refers to. - // TODO(jpeach) Listeners are not indexed by a unique name any more, - // so this field probably doesn't make sense. - optional string name = 1; - - // Address bound on this listener. - // TODO(jpeach) Listeners don't have addresses anymore so this field - // should move to the GatewayStatus. - optional ListenerAddress address = 2; + // Port is the unique Listener port value for which this message + // is reporting the status. If more than one Gateway Listener + // shares the same port value, this message reports the combined + // status of all such Listeners. + // + // +required + optional string port = 1; // Conditions describe the current condition of this listener. + // + // +required repeated ListenerCondition conditions = 3; } diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index ea950848e2..edaae64c78 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -87,6 +87,21 @@ func (in *Gateway) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GatewayAddress) DeepCopyInto(out *GatewayAddress) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayAddress. +func (in *GatewayAddress) DeepCopy() *GatewayAddress { + if in == nil { + return nil + } + out := new(GatewayAddress) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *GatewayClass) DeepCopyInto(out *GatewayClass) { *out = *in @@ -285,7 +300,7 @@ func (in *GatewaySpec) DeepCopyInto(out *GatewaySpec) { } if in.Addresses != nil { in, out := &in.Addresses, &out.Addresses - *out = make([]ListenerAddress, len(*in)) + *out = make([]GatewayAddress, len(*in)) copy(*out, *in) } } @@ -303,6 +318,11 @@ func (in *GatewaySpec) DeepCopy() *GatewaySpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *GatewayStatus) DeepCopyInto(out *GatewayStatus) { *out = *in + if in.Addresses != nil { + in, out := &in.Addresses, &out.Addresses + *out = make([]GatewayAddress, len(*in)) + copy(*out, *in) + } if in.Conditions != nil { in, out := &in.Conditions, &out.Conditions *out = make([]GatewayCondition, len(*in)) @@ -643,21 +663,6 @@ func (in *Listener) DeepCopy() *Listener { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ListenerAddress) DeepCopyInto(out *ListenerAddress) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ListenerAddress. -func (in *ListenerAddress) DeepCopy() *ListenerAddress { - if in == nil { - return nil - } - out := new(ListenerAddress) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ListenerCondition) DeepCopyInto(out *ListenerCondition) { *out = *in @@ -677,11 +682,6 @@ func (in *ListenerCondition) DeepCopy() *ListenerCondition { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ListenerStatus) DeepCopyInto(out *ListenerStatus) { *out = *in - if in.Address != nil { - in, out := &in.Address, &out.Address - *out = new(ListenerAddress) - **out = **in - } if in.Conditions != nil { in, out := &in.Conditions, &out.Conditions *out = make([]ListenerCondition, len(*in)) diff --git a/config/crd/bases/networking.x-k8s.io_gateways.yaml b/config/crd/bases/networking.x-k8s.io_gateways.yaml index c7df65f34d..fe97904ff0 100644 --- a/config/crd/bases/networking.x-k8s.io_gateways.yaml +++ b/config/crd/bases/networking.x-k8s.io_gateways.yaml @@ -51,14 +51,19 @@ spec: \n If no ListenerAddresses are specified, the GatewayClass may schedule the Gateway in an implementation-defined manner, assigning an appropriate set of ListenerAddresses. \n The GatewayClass MUST bind all Listeners - to every ListenerAddress that it assigns to the Gateway. \n Support: + tyo every GatewayAddress that it assigns to the Gateway. \n Support: Core" items: - description: ListenerAddress describes an address for the Listener. + description: GatewayAddress describes an address that can be bound + to a Gateway. properties: type: - description: "Type of the Address. This is one of the *AddressType - constants. \n Support: Extended" + default: IPAddress + description: "Type of the Address. This is either \"IPAddress\" + or \"NamedAddress\". \n Support: Extended" + enum: + - IPAddress + - NamedAddress type: string value: description: 'Value. Examples: "1.2.3.4", "128::1", "my-ip-address". @@ -66,7 +71,6 @@ spec: the controller.' type: string required: - - type - value type: object type: array @@ -135,7 +139,11 @@ spec: description: "Port is the network port. Multiple listeners may use the same port, subject to the Listener compatibility rules. \n Support: Core" + exclusiveMaximum: true + exclusiveMinimum: true format: int32 + maximum: 65536 + minimum: 0 type: integer protocol: description: "Protocol specifies the network protocol this listener @@ -362,6 +370,32 @@ spec: status: description: GatewayStatus defines the observed state of Gateway. properties: + addresses: + description: "Addresses lists the IP addresses that have actually + been bound to the Gateway. These addresses may differ from the addresses + in the Spec, e.g. if the Gateway automatically assigns an address + from a reserved pool. \n These addresses should all be of type \"IPAddress\"." + items: + description: GatewayAddress describes an address that can be bound + to a Gateway. + properties: + type: + default: IPAddress + description: "Type of the Address. This is either \"IPAddress\" + or \"NamedAddress\". \n Support: Extended" + enum: + - IPAddress + - NamedAddress + type: string + value: + description: 'Value. Examples: "1.2.3.4", "128::1", "my-ip-address". + Validity of the values will depend on `Type` and support by + the controller.' + type: string + required: + - value + type: object + type: array conditions: description: Conditions describe the current conditions of the Gateway. items: @@ -403,31 +437,12 @@ spec: type: object type: array listeners: - description: Listeners provide status for each listener defined in - the Spec. The name in ListenerStatus refers to the corresponding - Listener of the same name. + description: Listeners provides status for each unique listener port + defined in the Spec. items: - description: ListenerStatus is the status associated with each listener - block. + description: ListenerStatus is the status associated with a Listener + port. properties: - address: - description: Address bound on this listener. TODO(jpeach) Listeners - don't have addresses anymore so this field should move to - the GatewayStatus. - properties: - type: - description: "Type of the Address. This is one of the *AddressType - constants. \n Support: Extended" - type: string - value: - description: 'Value. Examples: "1.2.3.4", "128::1", "my-ip-address". - Validity of the values will depend on `Type` and support - by the controller.' - type: string - required: - - type - - value - type: object conditions: description: Conditions describe the current condition of this listener. @@ -470,17 +485,19 @@ spec: - type type: object type: array - name: - description: Name is the name of the listener this status refers - to. TODO(jpeach) Listeners are not indexed by a unique name - any more, so this field probably doesn't make sense. + port: + description: Port is the unique Listener port value for which + this message is reporting the status. If more than one Gateway + Listener shares the same port value, this message reports + the combined status of all such Listeners. type: string required: - - address - conditions - - name + - port type: object type: array + required: + - addresses type: object type: object served: true diff --git a/docs-src/spec.md b/docs-src/spec.md index 26f9b648d4..60f27c863e 100644 --- a/docs-src/spec.md +++ b/docs-src/spec.md @@ -131,8 +131,8 @@ a “PortConflict” condition on the Gateway.

addresses
- -[]ListenerAddress + +[]GatewayAddress @@ -146,8 +146,8 @@ GatewayStatus.Listeners.

If no ListenerAddresses are specified, the GatewayClass may schedule the Gateway in an implementation-defined manner, assigning an appropriate set of ListenerAddresses.

-

The GatewayClass MUST bind all Listeners to every -ListenerAddress that it assigns to the Gateway.

+

The GatewayClass MUST bind all Listeners tyo every +GatewayAddress that it assigns to the Gateway.

Support: Core

@@ -600,7 +600,7 @@ TrafficSplitStatus (string alias)

(Appears on: -ListenerAddress) +GatewayAddress)

AddressType defines how a network address is represented as a text string.

@@ -736,6 +736,53 @@ surfaced in status.

+

GatewayAddress +

+

+(Appears on: +GatewaySpec, +GatewayStatus) +

+

+

GatewayAddress describes an address that can be bound to a Gateway.

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+type
+ + +AddressType + + +
+(Optional) +

Type of the Address. This is either “IPAddress” or “NamedAddress”.

+

Support: Extended

+
+value
+ +string + +
+

Value. Examples: “1.2.3.4”, “128::1”, “my-ip-address”. Validity of the +values will depend on Type and support by the controller.

+

GatewayClassCondition

@@ -1227,8 +1274,8 @@ a “PortConflict” condition on the Gateway.

addresses
- -[]ListenerAddress + +[]GatewayAddress @@ -1242,8 +1289,8 @@ GatewayStatus.Listeners.

If no ListenerAddresses are specified, the GatewayClass may schedule the Gateway in an implementation-defined manner, assigning an appropriate set of ListenerAddresses.

-

The GatewayClass MUST bind all Listeners to every -ListenerAddress that it assigns to the Gateway.

+

The GatewayClass MUST bind all Listeners tyo every +GatewayAddress that it assigns to the Gateway.

Support: Core

@@ -1268,6 +1315,23 @@ ListenerAddress that it assigns to the Gateway.

+addresses
+ + +[]GatewayAddress + + + + +

Addresses lists the IP addresses that have actually been +bound to the Gateway. These addresses may differ from the +addresses in the Spec, e.g. if the Gateway automatically +assigns an address from a reserved pool.

+

These addresses should all be of type “IPAddress”.

+ + + + conditions
@@ -1291,8 +1355,7 @@ ListenerAddress that it assigns to the Gateway.

(Optional) -

Listeners provide status for each listener defined in the Spec. The name -in ListenerStatus refers to the corresponding Listener of the same name.

+

Listeners provides status for each unique listener port defined in the Spec.

@@ -1983,52 +2046,6 @@ the Protocol field.

-

ListenerAddress -

-

-(Appears on: -GatewaySpec, -ListenerStatus) -

-

-

ListenerAddress describes an address for the Listener.

-

- - - - - - - - - - - - - - - - - -
FieldDescription
-type
- - -AddressType - - -
-

Type of the Address. This is one of the *AddressType constants.

-

Support: Extended

-
-value
- -string - -
-

Value. Examples: “1.2.3.4”, “128::1”, “my-ip-address”. Validity of the -values will depend on Type and support by the controller.

-

ListenerCondition

@@ -2144,7 +2161,7 @@ with respect to the current state of the instance.

GatewayStatus)

-

ListenerStatus is the status associated with each listener block.

+

ListenerStatus is the status associated with a Listener port.

@@ -2156,30 +2173,16 @@ with respect to the current state of the instance.

- - - - diff --git a/docs/spec/index.html b/docs/spec/index.html index aeb1aacf7b..14da0a955a 100644 --- a/docs/spec/index.html +++ b/docs/spec/index.html @@ -456,8 +456,8 @@

Gateway

@@ -471,8 +471,8 @@

Gateway

If no ListenerAddresses are specified, the GatewayClass may schedule the Gateway in an implementation-defined manner, assigning an appropriate set of ListenerAddresses.

-

The GatewayClass MUST bind all Listeners to every -ListenerAddress that it assigns to the Gateway.

+

The GatewayClass MUST bind all Listeners tyo every +GatewayAddress that it assigns to the Gateway.

Support: Core

@@ -925,7 +925,7 @@

AddressType (string alias)

(Appears on: -ListenerAddress) +GatewayAddress)

AddressType defines how a network address is represented as a text string.

@@ -1061,6 +1061,53 @@

ForwardToTarget

-name
+port
string
-

Name is the name of the listener this status refers to. -TODO(jpeach) Listeners are not indexed by a unique name any more, -so this field probably doesn’t make sense.

-
-address
- - -ListenerAddress - - -
-

Address bound on this listener. -TODO(jpeach) Listeners don’t have addresses anymore so this field -should move to the GatewayStatus.

+

Port is the unique Listener port value for which this message +is reporting the status. If more than one Gateway Listener +shares the same port value, this message reports the combined +status of all such Listeners.

addresses
- -[]ListenerAddress + +[]GatewayAddress
+

GatewayAddress +

+

+(Appears on: +GatewaySpec, +GatewayStatus) +

+

+

GatewayAddress describes an address that can be bound to a Gateway.

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+type
+ + +AddressType + + +
+(Optional) +

Type of the Address. This is either “IPAddress” or “NamedAddress”.

+

Support: Extended

+
+value
+ +string + +
+

Value. Examples: “1.2.3.4”, “128::1”, “my-ip-address”. Validity of the +values will depend on Type and support by the controller.

+

GatewayClassCondition

@@ -1552,8 +1599,8 @@

GatewaySpec addresses
- -[]ListenerAddress + +[]GatewayAddress @@ -1567,8 +1614,8 @@

GatewaySpec

If no ListenerAddresses are specified, the GatewayClass may schedule the Gateway in an implementation-defined manner, assigning an appropriate set of ListenerAddresses.

-

The GatewayClass MUST bind all Listeners to every -ListenerAddress that it assigns to the Gateway.

+

The GatewayClass MUST bind all Listeners tyo every +GatewayAddress that it assigns to the Gateway.

Support: Core

@@ -1593,6 +1640,23 @@

GatewayStatus +addresses
+ + +[]GatewayAddress + + + + +

Addresses lists the IP addresses that have actually been +bound to the Gateway. These addresses may differ from the +addresses in the Spec, e.g. if the Gateway automatically +assigns an address from a reserved pool.

+

These addresses should all be of type “IPAddress”.

+ + + + conditions
@@ -1616,8 +1680,7 @@

GatewayStatus (Optional) -

Listeners provide status for each listener defined in the Spec. The name -in ListenerStatus refers to the corresponding Listener of the same name.

+

Listeners provides status for each unique listener port defined in the Spec.

@@ -2308,52 +2371,6 @@

Listener -

ListenerAddress -

-

-(Appears on: -GatewaySpec, -ListenerStatus) -

-

-

ListenerAddress describes an address for the Listener.

-

- - - - - - - - - - - - - - - - - -
FieldDescription
-type
- - -AddressType - - -
-

Type of the Address. This is one of the AddressType constants.

-

Support: Extended

-
-value
- -string - -
-

Value. Examples: “1.2.3.4”, “128::1”, “my-ip-address”. Validity of the -values will depend on Type and support by the controller.

-

ListenerCondition

@@ -2469,7 +2486,7 @@

ListenerStatus GatewayStatus)

-

ListenerStatus is the status associated with each listener block.

+

ListenerStatus is the status associated with a Listener port.

@@ -2481,30 +2498,16 @@

ListenerStatus

- - - - @@ -2798,7 +2801,7 @@

TLSConfig

-name
+port
string
-

Name is the name of the listener this status refers to. -TODO(jpeach) Listeners are not indexed by a unique name any more, -so this field probably doesn’t make sense.

-
-address
- - -ListenerAddress - - -
-

Address bound on this listener. -TODO(jpeach) Listeners don’t have addresses anymore so this field -should move to the GatewayStatus.

+

Port is the unique Listener port value for which this message +is reporting the status. If more than one Gateway Listener +shares the same port value, this message reports the combined +status of all such Listeners.

(Optional)

MinimumVersion of TLS allowed. It is recommended to use one of -the TLS constants above. Note: MinimumVersion is not strongly +the TLS* constants above. Note: MinimumVersion is not strongly typed to allow implementation-specific versions to be used without requiring updates to the API types. String must be of the form “”.