Skip to content

Commit dda428f

Browse files
committed
T6841: firewall: migrate existing VRF in zone based firewall
VRF support was introduced in VyOS 1.4.0. If a VRF is added as an interface in the zone based firewall, it will be migrated to the new syntax. OLD: set firewall zone FOO interface RED set firewall zone FOO interface eth0 NEW: set firewall zone FOO member vrf RED set firewall zone FOO member interface eth0
1 parent 3b04cc2 commit dda428f

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

src/migration-scripts/firewall/17-to-18

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright (C) 2024 VyOS maintainers and contributors
1+
# Copyright (C) 2024-2025 VyOS maintainers and contributors
22
#
33
# This library is free software; you can redistribute it and/or
44
# modify it under the terms of the GNU Lesser General Public
@@ -14,12 +14,11 @@
1414
# along with this library. If not, see <http://www.gnu.org/licenses/>.
1515

1616
# From
17-
# set firewall zone <zone> interface <iface>
17+
# set firewall zone <zone> interface RED
18+
# set firewall zone <zone> interface eth0
1819
# To
19-
# set firewall zone <zone> member interface <iface>
20-
# or
21-
# set firewall zone <zone> member vrf <vrf>
22-
20+
# set firewall zone <zone> member vrf RED
21+
# set firewall zone <zone> member interface eth0
2322

2423
from vyos.configtree import ConfigTree
2524

@@ -31,7 +30,12 @@ def migrate(config: ConfigTree) -> None:
3130
return
3231

3332
for zone in config.list_nodes(base):
34-
if config.exists(base + [zone, 'interface']):
35-
for iface in config.return_values(base + [zone, 'interface']):
36-
config.set(base + [zone, 'member', 'interface'], value=iface, replace=False)
37-
config.delete(base + [zone, 'interface'])
33+
zone_iface_base = base + [zone, 'interface']
34+
zone_member_base = base + [zone, 'member']
35+
if config.exists(zone_iface_base):
36+
for iface in config.return_values(zone_iface_base):
37+
if config.exists(['vrf', 'name', iface]):
38+
config.set(zone_member_base + ['vrf'], value=iface, replace=False)
39+
else:
40+
config.set(zone_member_base + ['interface'], value=iface, replace=False)
41+
config.delete(zone_iface_base)

0 commit comments

Comments
 (0)