diff --git a/apis/v1alpha2/shared_types.go b/apis/v1alpha2/shared_types.go index 8395df91ee..19f7e3524c 100644 --- a/apis/v1alpha2/shared_types.go +++ b/apis/v1alpha2/shared_types.go @@ -400,24 +400,31 @@ type AnnotationKey string // +kubebuilder:validation:MaxLength=4096 type AnnotationValue string -// AddressRouteMatches defines AddressMatch rules for inbound traffic according to +// AddressRouteMatch defines NetworkAddress rules for inbound traffic according to // source and/or destination address of a packet or connection. -type AddressRouteMatches struct { +// Multiple match fields are ANDed together, i.e. the match will +// evaluate to true only if all conditions are satisfied. +// At least one match field is required. +type AddressRouteMatch struct { // SourceAddresses indicates the originating (source) network // addresses which are valid for routing traffic. // // Support: Core - SourceAddresses []AddressMatch `json:"sourceAddresses"` + // + // +optional + SourceAddress *NetworkAddress `json:"sourceAddresses"` // DestinationAddresses indicates the destination network addresses // which are valid for routing traffic. // // Support: Core - DestinationAddresses []AddressMatch `json:"destinationAddresses"` + // + // +optional + DestinationAddress *NetworkAddress `json:"destinationAddresses"` } -// AddressMatch defines matching rules for network addresses by type. -type AddressMatch struct { +// NetworkAddress defines matching rules for network addresses by type. +type NetworkAddress struct { // Type of the address, either IPAddress or NamedAddress. // // If NamedAddress is used this is a custom and specific value for each @@ -430,7 +437,7 @@ type AddressMatch struct { // Support: Custom (NamedAddress) // // +optional - Type *L4AddressType `json:"type,omitempty"` + Type *NetworkAddressType `json:"type,omitempty"` // Value of the address. The validity of the values will depend // on the type and support by the controller. @@ -449,8 +456,8 @@ type AddressMatch struct { Value string `json:"value"` } -// L4AddressType defines how a network address is represented as a text string. +// NetworkAddressType defines how a network address is represented as a text string. // // +kubebuilder:validation:Enum=IPAddress;NamedAddress // +kubebuilder:default=IPAddress -type L4AddressType string +type NetworkAddressType string diff --git a/apis/v1alpha2/tcproute_types.go b/apis/v1alpha2/tcproute_types.go index 82e6584b80..4cfa39e990 100644 --- a/apis/v1alpha2/tcproute_types.go +++ b/apis/v1alpha2/tcproute_types.go @@ -60,10 +60,12 @@ type TCPRouteStatus struct { // TCPRouteRule is the configuration for a given rule. type TCPRouteRule struct { // Matches are rules for routing traffic to backends based on addresses. + // Each match is independent, i.e. this rule will be matched + // if **any** one of the matches is satisfied. // // +optional // +kubebuilder:validation:MaxItems=16 - Matches []AddressRouteMatches `json:"matches,omitempty"` + Matches []AddressRouteMatch `json:"matches,omitempty"` // BackendRefs defines the backend(s) where matching requests should be // sent. If unspecified or invalid (refers to a non-existent resource or a diff --git a/apis/v1alpha2/udproute_types.go b/apis/v1alpha2/udproute_types.go index 0c3a951cb7..2772cf8f76 100644 --- a/apis/v1alpha2/udproute_types.go +++ b/apis/v1alpha2/udproute_types.go @@ -60,10 +60,12 @@ type UDPRouteStatus struct { // UDPRouteRule is the configuration for a given rule. type UDPRouteRule struct { // Matches add rules for filtering traffic to backends based on addresses. + // Each match is independent, i.e. this rule will be matched + // if **any** one of the matches is satisfied. // // +optional // +kubebuilder:validation:MaxItems=16 - Matches []AddressRouteMatches `json:"matches,omitempty"` + Matches []AddressRouteMatch `json:"matches,omitempty"` // BackendRefs defines the backend(s) where matching requests should be // sent. If unspecified or invalid (refers to a non-existent resource or a diff --git a/apis/v1alpha2/zz_generated.deepcopy.go b/apis/v1alpha2/zz_generated.deepcopy.go index a313d55e5b..0d688c46b5 100644 --- a/apis/v1alpha2/zz_generated.deepcopy.go +++ b/apis/v1alpha2/zz_generated.deepcopy.go @@ -27,50 +27,26 @@ import ( ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AddressMatch) DeepCopyInto(out *AddressMatch) { +func (in *AddressRouteMatch) DeepCopyInto(out *AddressRouteMatch) { *out = *in - if in.Type != nil { - in, out := &in.Type, &out.Type - *out = new(L4AddressType) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddressMatch. -func (in *AddressMatch) DeepCopy() *AddressMatch { - if in == nil { - return nil - } - out := new(AddressMatch) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *AddressRouteMatches) DeepCopyInto(out *AddressRouteMatches) { - *out = *in - if in.SourceAddresses != nil { - in, out := &in.SourceAddresses, &out.SourceAddresses - *out = make([]AddressMatch, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + if in.SourceAddress != nil { + in, out := &in.SourceAddress, &out.SourceAddress + *out = new(NetworkAddress) + (*in).DeepCopyInto(*out) } - if in.DestinationAddresses != nil { - in, out := &in.DestinationAddresses, &out.DestinationAddresses - *out = make([]AddressMatch, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } + if in.DestinationAddress != nil { + in, out := &in.DestinationAddress, &out.DestinationAddress + *out = new(NetworkAddress) + (*in).DeepCopyInto(*out) } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddressRouteMatches. -func (in *AddressRouteMatches) DeepCopy() *AddressRouteMatches { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AddressRouteMatch. +func (in *AddressRouteMatch) DeepCopy() *AddressRouteMatch { if in == nil { return nil } - out := new(AddressRouteMatches) + out := new(AddressRouteMatch) in.DeepCopyInto(out) return out } @@ -989,6 +965,26 @@ func (in *LocalObjectReference) DeepCopy() *LocalObjectReference { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkAddress) DeepCopyInto(out *NetworkAddress) { + *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(NetworkAddressType) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkAddress. +func (in *NetworkAddress) DeepCopy() *NetworkAddress { + if in == nil { + return nil + } + out := new(NetworkAddress) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ParametersReference) DeepCopyInto(out *ParametersReference) { *out = *in @@ -1368,7 +1364,7 @@ func (in *TCPRouteRule) DeepCopyInto(out *TCPRouteRule) { *out = *in if in.Matches != nil { in, out := &in.Matches, &out.Matches - *out = make([]AddressRouteMatches, len(*in)) + *out = make([]AddressRouteMatch, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -1620,7 +1616,7 @@ func (in *UDPRouteRule) DeepCopyInto(out *UDPRouteRule) { *out = *in if in.Matches != nil { in, out := &in.Matches, &out.Matches - *out = make([]AddressRouteMatches, len(*in)) + *out = make([]AddressRouteMatch, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } diff --git a/config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml index 4e935e7d23..e972986ebd 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_tcproutes.yaml @@ -222,85 +222,77 @@ spec: description: Matches are rules for routing traffic to backends based on addresses. items: - description: AddressRouteMatches defines AddressMatch rules + description: AddressRouteMatch defines NetworkAddress rules for inbound traffic according to source and/or destination - address of a packet or connection. + address of a packet or connection. Multiple match fields + are ANDed together, i.e. the match will evaluate to true + only if all conditions are satisfied. At least one match + field is required. properties: destinationAddresses: description: "DestinationAddresses indicates the destination network addresses which are valid for routing traffic. \n Support: Core" - items: - description: AddressMatch defines matching rules for - network addresses by type. - properties: - type: - description: "Type of the address, either IPAddress - or NamedAddress. \n If NamedAddress is used this - is a custom and specific value for each implementation - to handle (and add validation for) according to - their own needs. \n For IPAddress the implementor - may expect either IPv4 or IPv6. \n Support: Core - (IPAddress) Support: Custom (NamedAddress)" - enum: - - IPAddress - - NamedAddress - type: string - value: - description: "Value of the address. The validity - of the values will depend on the type and support - by the controller. \n If implementations support - proxy-protocol (see: https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) - they must respect the connection metadata from - proxy-protocol in the match logic implemented - for these address values. \n Examples: `1.2.3.4`, - `128::1`, `my-named-address`. \n Support: Core" - maxLength: 253 - minLength: 1 - type: string - required: - - value - type: object - type: array + properties: + type: + description: "Type of the address, either IPAddress + or NamedAddress. \n If NamedAddress is used this + is a custom and specific value for each implementation + to handle (and add validation for) according to + their own needs. \n For IPAddress the implementor + may expect either IPv4 or IPv6. \n Support: Core + (IPAddress) Support: Custom (NamedAddress)" + enum: + - IPAddress + - NamedAddress + type: string + value: + description: "Value of the address. The validity of + the values will depend on the type and support by + the controller. \n If implementations support proxy-protocol + (see: https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) + they must respect the connection metadata from proxy-protocol + in the match logic implemented for these address + values. \n Examples: `1.2.3.4`, `128::1`, `my-named-address`. + \n Support: Core" + maxLength: 253 + minLength: 1 + type: string + required: + - value + type: object sourceAddresses: description: "SourceAddresses indicates the originating (source) network addresses which are valid for routing traffic. \n Support: Core" - items: - description: AddressMatch defines matching rules for - network addresses by type. - properties: - type: - description: "Type of the address, either IPAddress - or NamedAddress. \n If NamedAddress is used this - is a custom and specific value for each implementation - to handle (and add validation for) according to - their own needs. \n For IPAddress the implementor - may expect either IPv4 or IPv6. \n Support: Core - (IPAddress) Support: Custom (NamedAddress)" - enum: - - IPAddress - - NamedAddress - type: string - value: - description: "Value of the address. The validity - of the values will depend on the type and support - by the controller. \n If implementations support - proxy-protocol (see: https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) - they must respect the connection metadata from - proxy-protocol in the match logic implemented - for these address values. \n Examples: `1.2.3.4`, - `128::1`, `my-named-address`. \n Support: Core" - maxLength: 253 - minLength: 1 - type: string - required: - - value - type: object - type: array - required: - - destinationAddresses - - sourceAddresses + properties: + type: + description: "Type of the address, either IPAddress + or NamedAddress. \n If NamedAddress is used this + is a custom and specific value for each implementation + to handle (and add validation for) according to + their own needs. \n For IPAddress the implementor + may expect either IPv4 or IPv6. \n Support: Core + (IPAddress) Support: Custom (NamedAddress)" + enum: + - IPAddress + - NamedAddress + type: string + value: + description: "Value of the address. The validity of + the values will depend on the type and support by + the controller. \n If implementations support proxy-protocol + (see: https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) + they must respect the connection metadata from proxy-protocol + in the match logic implemented for these address + values. \n Examples: `1.2.3.4`, `128::1`, `my-named-address`. + \n Support: Core" + maxLength: 253 + minLength: 1 + type: string + required: + - value + type: object type: object maxItems: 16 type: array diff --git a/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml b/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml index a0f7eb1731..e1056c68f6 100644 --- a/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml +++ b/config/crd/experimental/gateway.networking.k8s.io_udproutes.yaml @@ -222,85 +222,77 @@ spec: description: Matches add rules for filtering traffic to backends based on addresses. items: - description: AddressRouteMatches defines AddressMatch rules + description: AddressRouteMatch defines NetworkAddress rules for inbound traffic according to source and/or destination - address of a packet or connection. + address of a packet or connection. Multiple match fields + are ANDed together, i.e. the match will evaluate to true + only if all conditions are satisfied. At least one match + field is required. properties: destinationAddresses: description: "DestinationAddresses indicates the destination network addresses which are valid for routing traffic. \n Support: Core" - items: - description: AddressMatch defines matching rules for - network addresses by type. - properties: - type: - description: "Type of the address, either IPAddress - or NamedAddress. \n If NamedAddress is used this - is a custom and specific value for each implementation - to handle (and add validation for) according to - their own needs. \n For IPAddress the implementor - may expect either IPv4 or IPv6. \n Support: Core - (IPAddress) Support: Custom (NamedAddress)" - enum: - - IPAddress - - NamedAddress - type: string - value: - description: "Value of the address. The validity - of the values will depend on the type and support - by the controller. \n If implementations support - proxy-protocol (see: https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) - they must respect the connection metadata from - proxy-protocol in the match logic implemented - for these address values. \n Examples: `1.2.3.4`, - `128::1`, `my-named-address`. \n Support: Core" - maxLength: 253 - minLength: 1 - type: string - required: - - value - type: object - type: array + properties: + type: + description: "Type of the address, either IPAddress + or NamedAddress. \n If NamedAddress is used this + is a custom and specific value for each implementation + to handle (and add validation for) according to + their own needs. \n For IPAddress the implementor + may expect either IPv4 or IPv6. \n Support: Core + (IPAddress) Support: Custom (NamedAddress)" + enum: + - IPAddress + - NamedAddress + type: string + value: + description: "Value of the address. The validity of + the values will depend on the type and support by + the controller. \n If implementations support proxy-protocol + (see: https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) + they must respect the connection metadata from proxy-protocol + in the match logic implemented for these address + values. \n Examples: `1.2.3.4`, `128::1`, `my-named-address`. + \n Support: Core" + maxLength: 253 + minLength: 1 + type: string + required: + - value + type: object sourceAddresses: description: "SourceAddresses indicates the originating (source) network addresses which are valid for routing traffic. \n Support: Core" - items: - description: AddressMatch defines matching rules for - network addresses by type. - properties: - type: - description: "Type of the address, either IPAddress - or NamedAddress. \n If NamedAddress is used this - is a custom and specific value for each implementation - to handle (and add validation for) according to - their own needs. \n For IPAddress the implementor - may expect either IPv4 or IPv6. \n Support: Core - (IPAddress) Support: Custom (NamedAddress)" - enum: - - IPAddress - - NamedAddress - type: string - value: - description: "Value of the address. The validity - of the values will depend on the type and support - by the controller. \n If implementations support - proxy-protocol (see: https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) - they must respect the connection metadata from - proxy-protocol in the match logic implemented - for these address values. \n Examples: `1.2.3.4`, - `128::1`, `my-named-address`. \n Support: Core" - maxLength: 253 - minLength: 1 - type: string - required: - - value - type: object - type: array - required: - - destinationAddresses - - sourceAddresses + properties: + type: + description: "Type of the address, either IPAddress + or NamedAddress. \n If NamedAddress is used this + is a custom and specific value for each implementation + to handle (and add validation for) according to + their own needs. \n For IPAddress the implementor + may expect either IPv4 or IPv6. \n Support: Core + (IPAddress) Support: Custom (NamedAddress)" + enum: + - IPAddress + - NamedAddress + type: string + value: + description: "Value of the address. The validity of + the values will depend on the type and support by + the controller. \n If implementations support proxy-protocol + (see: https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) + they must respect the connection metadata from proxy-protocol + in the match logic implemented for these address + values. \n Examples: `1.2.3.4`, `128::1`, `my-named-address`. + \n Support: Core" + maxLength: 253 + minLength: 1 + type: string + required: + - value + type: object type: object maxItems: 16 type: array diff --git a/config/crd/stable/gateway.networking.k8s.io_tcproutes.yaml b/config/crd/stable/gateway.networking.k8s.io_tcproutes.yaml index 7b5f8052bc..07e63e848a 100644 --- a/config/crd/stable/gateway.networking.k8s.io_tcproutes.yaml +++ b/config/crd/stable/gateway.networking.k8s.io_tcproutes.yaml @@ -222,85 +222,77 @@ spec: description: Matches are rules for routing traffic to backends based on addresses. items: - description: AddressRouteMatches defines AddressMatch rules + description: AddressRouteMatch defines NetworkAddress rules for inbound traffic according to source and/or destination - address of a packet or connection. + address of a packet or connection. Multiple match fields + are ANDed together, i.e. the match will evaluate to true + only if all conditions are satisfied. At least one match + field is required. properties: destinationAddresses: description: "DestinationAddresses indicates the destination network addresses which are valid for routing traffic. \n Support: Core" - items: - description: AddressMatch defines matching rules for - network addresses by type. - properties: - type: - description: "Type of the address, either IPAddress - or NamedAddress. \n If NamedAddress is used this - is a custom and specific value for each implementation - to handle (and add validation for) according to - their own needs. \n For IPAddress the implementor - may expect either IPv4 or IPv6. \n Support: Core - (IPAddress) Support: Custom (NamedAddress)" - enum: - - IPAddress - - NamedAddress - type: string - value: - description: "Value of the address. The validity - of the values will depend on the type and support - by the controller. \n If implementations support - proxy-protocol (see: https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) - they must respect the connection metadata from - proxy-protocol in the match logic implemented - for these address values. \n Examples: `1.2.3.4`, - `128::1`, `my-named-address`. \n Support: Core" - maxLength: 253 - minLength: 1 - type: string - required: - - value - type: object - type: array + properties: + type: + description: "Type of the address, either IPAddress + or NamedAddress. \n If NamedAddress is used this + is a custom and specific value for each implementation + to handle (and add validation for) according to + their own needs. \n For IPAddress the implementor + may expect either IPv4 or IPv6. \n Support: Core + (IPAddress) Support: Custom (NamedAddress)" + enum: + - IPAddress + - NamedAddress + type: string + value: + description: "Value of the address. The validity of + the values will depend on the type and support by + the controller. \n If implementations support proxy-protocol + (see: https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) + they must respect the connection metadata from proxy-protocol + in the match logic implemented for these address + values. \n Examples: `1.2.3.4`, `128::1`, `my-named-address`. + \n Support: Core" + maxLength: 253 + minLength: 1 + type: string + required: + - value + type: object sourceAddresses: description: "SourceAddresses indicates the originating (source) network addresses which are valid for routing traffic. \n Support: Core" - items: - description: AddressMatch defines matching rules for - network addresses by type. - properties: - type: - description: "Type of the address, either IPAddress - or NamedAddress. \n If NamedAddress is used this - is a custom and specific value for each implementation - to handle (and add validation for) according to - their own needs. \n For IPAddress the implementor - may expect either IPv4 or IPv6. \n Support: Core - (IPAddress) Support: Custom (NamedAddress)" - enum: - - IPAddress - - NamedAddress - type: string - value: - description: "Value of the address. The validity - of the values will depend on the type and support - by the controller. \n If implementations support - proxy-protocol (see: https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) - they must respect the connection metadata from - proxy-protocol in the match logic implemented - for these address values. \n Examples: `1.2.3.4`, - `128::1`, `my-named-address`. \n Support: Core" - maxLength: 253 - minLength: 1 - type: string - required: - - value - type: object - type: array - required: - - destinationAddresses - - sourceAddresses + properties: + type: + description: "Type of the address, either IPAddress + or NamedAddress. \n If NamedAddress is used this + is a custom and specific value for each implementation + to handle (and add validation for) according to + their own needs. \n For IPAddress the implementor + may expect either IPv4 or IPv6. \n Support: Core + (IPAddress) Support: Custom (NamedAddress)" + enum: + - IPAddress + - NamedAddress + type: string + value: + description: "Value of the address. The validity of + the values will depend on the type and support by + the controller. \n If implementations support proxy-protocol + (see: https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) + they must respect the connection metadata from proxy-protocol + in the match logic implemented for these address + values. \n Examples: `1.2.3.4`, `128::1`, `my-named-address`. + \n Support: Core" + maxLength: 253 + minLength: 1 + type: string + required: + - value + type: object type: object maxItems: 16 type: array diff --git a/config/crd/stable/gateway.networking.k8s.io_udproutes.yaml b/config/crd/stable/gateway.networking.k8s.io_udproutes.yaml index bb700bec8a..0b216b9ec3 100644 --- a/config/crd/stable/gateway.networking.k8s.io_udproutes.yaml +++ b/config/crd/stable/gateway.networking.k8s.io_udproutes.yaml @@ -222,85 +222,77 @@ spec: description: Matches add rules for filtering traffic to backends based on addresses. items: - description: AddressRouteMatches defines AddressMatch rules + description: AddressRouteMatch defines NetworkAddress rules for inbound traffic according to source and/or destination - address of a packet or connection. + address of a packet or connection. Multiple match fields + are ANDed together, i.e. the match will evaluate to true + only if all conditions are satisfied. At least one match + field is required. properties: destinationAddresses: description: "DestinationAddresses indicates the destination network addresses which are valid for routing traffic. \n Support: Core" - items: - description: AddressMatch defines matching rules for - network addresses by type. - properties: - type: - description: "Type of the address, either IPAddress - or NamedAddress. \n If NamedAddress is used this - is a custom and specific value for each implementation - to handle (and add validation for) according to - their own needs. \n For IPAddress the implementor - may expect either IPv4 or IPv6. \n Support: Core - (IPAddress) Support: Custom (NamedAddress)" - enum: - - IPAddress - - NamedAddress - type: string - value: - description: "Value of the address. The validity - of the values will depend on the type and support - by the controller. \n If implementations support - proxy-protocol (see: https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) - they must respect the connection metadata from - proxy-protocol in the match logic implemented - for these address values. \n Examples: `1.2.3.4`, - `128::1`, `my-named-address`. \n Support: Core" - maxLength: 253 - minLength: 1 - type: string - required: - - value - type: object - type: array + properties: + type: + description: "Type of the address, either IPAddress + or NamedAddress. \n If NamedAddress is used this + is a custom and specific value for each implementation + to handle (and add validation for) according to + their own needs. \n For IPAddress the implementor + may expect either IPv4 or IPv6. \n Support: Core + (IPAddress) Support: Custom (NamedAddress)" + enum: + - IPAddress + - NamedAddress + type: string + value: + description: "Value of the address. The validity of + the values will depend on the type and support by + the controller. \n If implementations support proxy-protocol + (see: https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) + they must respect the connection metadata from proxy-protocol + in the match logic implemented for these address + values. \n Examples: `1.2.3.4`, `128::1`, `my-named-address`. + \n Support: Core" + maxLength: 253 + minLength: 1 + type: string + required: + - value + type: object sourceAddresses: description: "SourceAddresses indicates the originating (source) network addresses which are valid for routing traffic. \n Support: Core" - items: - description: AddressMatch defines matching rules for - network addresses by type. - properties: - type: - description: "Type of the address, either IPAddress - or NamedAddress. \n If NamedAddress is used this - is a custom and specific value for each implementation - to handle (and add validation for) according to - their own needs. \n For IPAddress the implementor - may expect either IPv4 or IPv6. \n Support: Core - (IPAddress) Support: Custom (NamedAddress)" - enum: - - IPAddress - - NamedAddress - type: string - value: - description: "Value of the address. The validity - of the values will depend on the type and support - by the controller. \n If implementations support - proxy-protocol (see: https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) - they must respect the connection metadata from - proxy-protocol in the match logic implemented - for these address values. \n Examples: `1.2.3.4`, - `128::1`, `my-named-address`. \n Support: Core" - maxLength: 253 - minLength: 1 - type: string - required: - - value - type: object - type: array - required: - - destinationAddresses - - sourceAddresses + properties: + type: + description: "Type of the address, either IPAddress + or NamedAddress. \n If NamedAddress is used this + is a custom and specific value for each implementation + to handle (and add validation for) according to + their own needs. \n For IPAddress the implementor + may expect either IPv4 or IPv6. \n Support: Core + (IPAddress) Support: Custom (NamedAddress)" + enum: + - IPAddress + - NamedAddress + type: string + value: + description: "Value of the address. The validity of + the values will depend on the type and support by + the controller. \n If implementations support proxy-protocol + (see: https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) + they must respect the connection metadata from proxy-protocol + in the match logic implemented for these address + values. \n Examples: `1.2.3.4`, `128::1`, `my-named-address`. + \n Support: Core" + maxLength: 253 + minLength: 1 + type: string + required: + - value + type: object type: object maxItems: 16 type: array