summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2025-10-29 16:10:13 +0100
committerGitHub <noreply@github.com>2025-10-29 16:10:13 +0100
commit449f3d4dbf1f55a7cfcd8ecf450f9ebc93188d97 (patch)
treeb4b8bf596da9a1694408ee2e20623efd3befa1a2
parent4fbb3c6c9e70d6302ebe11d8a56e221a614449aa (diff)
parentc5ef4f4ebf38a249998498ebe443f3cc733b64fd (diff)
downloadvyos-1x-449f3d4dbf1f55a7cfcd8ecf450f9ebc93188d97.tar.gz
vyos-1x-449f3d4dbf1f55a7cfcd8ecf450f9ebc93188d97.zip
Merge pull request #4817 from c-po/dhcpv6-migrator-fix
dhcpv6: T7967: fix migration script for automatic SLAAC selection
-rw-r--r--smoketest/config-tests/basic-ipv66
-rw-r--r--smoketest/configs/basic-ipv63
-rw-r--r--src/migration-scripts/interfaces/32-to-3331
3 files changed, 25 insertions, 15 deletions
diff --git a/smoketest/config-tests/basic-ipv6 b/smoketest/config-tests/basic-ipv6
index f217b5289..232a42a07 100644
--- a/smoketest/config-tests/basic-ipv6
+++ b/smoketest/config-tests/basic-ipv6
@@ -6,9 +6,11 @@ set interfaces ethernet eth0 vif-s 10 vif-c 20 address 'dhcpv6'
set interfaces ethernet eth0 vif-s 10 vif-c 20 ipv6 address autoconf
set interfaces ethernet eth1 duplex 'auto'
set interfaces ethernet eth1 speed 'auto'
-set interfaces ethernet eth1 vif 50
-set interfaces ethernet eth1 vif-s 60 vif-c 70
+set interfaces ethernet eth1 vif 50 address '1.2.3.4/31'
+set interfaces ethernet eth1 vif-s 60 vif-c 70 address '2.3.4.5/31'
+set interfaces ethernet eth2 address 'dhcpv6'
set interfaces ethernet eth2 duplex 'auto'
+set interfaces ethernet eth2 ipv6 address autoconf
set interfaces ethernet eth2 speed 'auto'
set interfaces loopback lo
set interfaces pppoe pppoe0 authentication password 'vyos'
diff --git a/smoketest/configs/basic-ipv6 b/smoketest/configs/basic-ipv6
index c1b87733e..997842aed 100644
--- a/smoketest/configs/basic-ipv6
+++ b/smoketest/configs/basic-ipv6
@@ -22,13 +22,16 @@ interfaces {
duplex auto
speed auto
vif 50 {
+ address 1.2.3.4/31
}
vif-s 60 {
vif-c 70 {
+ address 2.3.4.5/31
}
}
}
ethernet eth2 {
+ address dhcpv6
duplex auto
speed auto
}
diff --git a/src/migration-scripts/interfaces/32-to-33 b/src/migration-scripts/interfaces/32-to-33
index af7b7f497..11b7aa58b 100644
--- a/src/migration-scripts/interfaces/32-to-33
+++ b/src/migration-scripts/interfaces/32-to-33
@@ -23,31 +23,36 @@ def migrate(config: ConfigTree) -> None:
for type in config.list_nodes(['interfaces']):
for interface in config.list_nodes(['interfaces', type]):
iface_base_path = ['interfaces', type, interface]
- dhcpv6_addr_path = iface_base_path + ['address', 'dhcpv6']
- autoconf_path = iface_base_path + ['ipv6', 'address', 'autoconf']
- if config.exists(dhcpv6_addr_path) and not config.exists(autoconf_path):
- config.set(autoconf_path)
+ dhcpv6_addr_path = iface_base_path + ['address']
+
+ if config.exists(dhcpv6_addr_path) and 'dhcpv6' in config.return_values(dhcpv6_addr_path):
+ autoconf_path = iface_base_path + ['ipv6', 'address', 'autoconf']
+ if not config.exists(autoconf_path):
+ config.set(autoconf_path)
vif_path = iface_base_path + ['vif']
if config.exists(vif_path):
for vif in config.list_nodes(vif_path):
vif_dhcpv6_addr_path = vif_path + [vif, 'address']
- vif_autoconf_path = vif_path + [vif, 'ipv6', 'address', 'autoconf']
- if config.exists(vif_dhcpv6_addr_path) and not config.exists(vif_autoconf_path):
- config.set(vif_autoconf_path)
+ if config.exists(vif_dhcpv6_addr_path) and 'dhcpv6' in config.return_values(vif_dhcpv6_addr_path):
+ vif_autoconf_path = vif_path + [vif, 'ipv6', 'address', 'autoconf']
+ if not config.exists(vif_autoconf_path):
+ config.set(vif_autoconf_path)
vif_s_path = iface_base_path + ['vif-s']
if config.exists(vif_s_path):
for vif_s in config.list_nodes(vif_s_path):
vif_s_dhcpv6_addr_path = vif_s_path + [vif_s, 'address']
- vif_s_autoconf_path = vif_s_path + [vif_s, 'ipv6', 'address', 'autoconf']
- if config.exists(vif_s_dhcpv6_addr_path) and not config.exists(vif_s_autoconf_path):
- config.set(vif_s_autoconf_path)
+ if config.exists(vif_s_dhcpv6_addr_path) and 'dhcpv6' in config.return_values(vif_s_dhcpv6_addr_path):
+ vif_s_autoconf_path = vif_s_path + [vif_s, 'ipv6', 'address', 'autoconf']
+ if not config.exists(vif_s_autoconf_path):
+ config.set(vif_s_autoconf_path)
vif_c_path = iface_base_path + ['vif-s', vif_s, 'vif-c']
if config.exists(vif_c_path):
for vif_c in config.list_nodes(vif_c_path):
vif_c_dhcpv6_addr_path = vif_c_path + [vif_c, 'address']
- vif_c_autoconf_path = vif_c_path + [vif_c, 'ipv6', 'address', 'autoconf']
- if config.exists(vif_c_dhcpv6_addr_path) and not config.exists(vif_c_autoconf_path):
- config.set(vif_c_autoconf_path)
+ if config.exists(vif_c_dhcpv6_addr_path) and 'dhcpv6' in config.return_values(vif_c_dhcpv6_addr_path):
+ vif_c_autoconf_path = vif_c_path + [vif_c, 'ipv6', 'address', 'autoconf']
+ if not config.exists(vif_c_autoconf_path):
+ config.set(vif_c_autoconf_path)