diff --git a/features.md b/features.md
index e7f2ea6915e..b8eed209c08 100644
--- a/features.md
+++ b/features.md
@@ -9,7 +9,6 @@
| GatewayAPI| | | Enabled | Enabled | | |
| NewOLM| | Enabled | | Enabled | | Enabled |
| AWSClusterHostedDNS| | | Enabled | Enabled | Enabled | Enabled |
-| AdditionalRoutingCapabilities| | | Enabled | Enabled | Enabled | Enabled |
| AutomatedEtcdBackup| | | Enabled | Enabled | Enabled | Enabled |
| BootcNodeManagement| | | Enabled | Enabled | Enabled | Enabled |
| CSIDriverSharedResource| | | Enabled | Enabled | Enabled | Enabled |
@@ -54,6 +53,7 @@
| VolumeGroupSnapshot| | | Enabled | Enabled | Enabled | Enabled |
| ExternalOIDC| Enabled | | Enabled | Enabled | Enabled | Enabled |
| AWSEFSDriverVolumeMetrics| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
+| AdditionalRoutingCapabilities| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| AdminNetworkPolicy| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| AlibabaPlatform| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
| AzureWorkloadIdentity| Enabled | Enabled | Enabled | Enabled | Enabled | Enabled |
diff --git a/features/features.go b/features/features.go
index 8752fdfdf8a..3b09be4ad01 100644
--- a/features/features.go
+++ b/features/features.go
@@ -248,7 +248,7 @@ var (
contactPerson("jcaamano").
productScope(ocpSpecific).
enhancementPR(legacyFeatureGateWithoutEnhancement).
- enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
+ enableIn(configv1.Default, configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade).
mustRegister()
FeatureGateRouteAdvertisements = newFeatureGate("RouteAdvertisements").
diff --git a/operator/v1/zz_generated.crd-manifests/0000_70_network_01_networks-Default.crd.yaml b/operator/v1/zz_generated.crd-manifests/0000_70_network_01_networks-Default.crd.yaml
index 3f150defe73..46d0993dfd3 100644
--- a/operator/v1/zz_generated.crd-manifests/0000_70_network_01_networks-Default.crd.yaml
+++ b/operator/v1/zz_generated.crd-manifests/0000_70_network_01_networks-Default.crd.yaml
@@ -178,6 +178,39 @@ spec:
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
+ additionalRoutingCapabilities:
+ description: |-
+ additionalRoutingCapabilities describes components and relevant
+ configuration providing additional routing capabilities. When set, it
+ enables such components and the usage of the routing capabilities they
+ provide for the machine network. Upstream operators, like MetalLB
+ operator, requiring these capabilities may rely on, or automatically set
+ this attribute. Network plugins may leverage advanced routing
+ capabilities acquired through the enablement of these components but may
+ require specific configuration on their side to do so; refer to their
+ respective documentation and configuration options.
+ properties:
+ providers:
+ description: |-
+ providers is a set of enabled components that provide additional routing
+ capabilities. Entries on this list must be unique. The only valid value
+ is currrently "FRR" which provides FRR routing capabilities through the
+ deployment of FRR.
+ items:
+ description: RoutingCapabilitiesProvider is a component providing
+ routing capabilities.
+ enum:
+ - FRR
+ type: string
+ maxItems: 1
+ minItems: 1
+ type: array
+ x-kubernetes-list-type: atomic
+ x-kubernetes-validations:
+ - rule: self.all(x, self.exists_one(y, x == y))
+ required:
+ - providers
+ type: object
clusterNetwork:
description: |-
clusterNetwork is the IP address pool to use for pod IPs.
@@ -846,6 +879,13 @@ spec:
type: boolean
type: object
x-kubernetes-validations:
+ - message: Route advertisements cannot be Enabled if 'FRR' routing capability
+ provider is not available
+ rule: (has(self.additionalRoutingCapabilities) && ('FRR' in self.additionalRoutingCapabilities.providers))
+ || !has(self.defaultNetwork) || !has(self.defaultNetwork.ovnKubernetesConfig)
+ || !has(self.defaultNetwork.ovnKubernetesConfig.routeAdvertisements)
+ || self.defaultNetwork.ovnKubernetesConfig.routeAdvertisements !=
+ 'Enabled'
- message: invalid value for IPForwarding, valid values are 'Restricted'
or 'Global'
rule: '!has(self.defaultNetwork) || !has(self.defaultNetwork.ovnKubernetesConfig)
diff --git a/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml b/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml
index c1bb9b5ad17..db387a8bbc4 100644
--- a/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml
+++ b/payload-manifests/featuregates/featureGate-Hypershift-Default.yaml
@@ -16,9 +16,6 @@
{
"name": "AWSClusterHostedDNS"
},
- {
- "name": "AdditionalRoutingCapabilities"
- },
{
"name": "AutomatedEtcdBackup"
},
@@ -174,6 +171,9 @@
{
"name": "AWSEFSDriverVolumeMetrics"
},
+ {
+ "name": "AdditionalRoutingCapabilities"
+ },
{
"name": "AdminNetworkPolicy"
},
diff --git a/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml b/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml
index 43ef7128195..82ad2d571cc 100644
--- a/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml
+++ b/payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml
@@ -16,9 +16,6 @@
{
"name": "AWSClusterHostedDNS"
},
- {
- "name": "AdditionalRoutingCapabilities"
- },
{
"name": "AutomatedEtcdBackup"
},
@@ -174,6 +171,9 @@
{
"name": "AWSEFSDriverVolumeMetrics"
},
+ {
+ "name": "AdditionalRoutingCapabilities"
+ },
{
"name": "AdminNetworkPolicy"
},