summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2021-06-13 11:06:11 +0200
committerChristian Poessinger <christian@poessinger.com>2021-06-13 11:06:13 +0200
commite24e35e1ac11a0771b15417af191694fd0b88022 (patch)
tree77ff5724e6a4336a794ff84a433cf1a33330fe5c /src
parentd20dd7a0e6af08a80c7c911e7b151f28e4666173 (diff)
downloadvyos-1x-e24e35e1ac11a0771b15417af191694fd0b88022.tar.gz
vyos-1x-e24e35e1ac11a0771b15417af191694fd0b88022.zip
wwan: T3620: adjust NAT inbound/outbound interfaces on config migration
Diffstat (limited to 'src')
-rwxr-xr-xsrc/migration-scripts/interfaces/21-to-2232
1 files changed, 26 insertions, 6 deletions
diff --git a/src/migration-scripts/interfaces/21-to-22 b/src/migration-scripts/interfaces/21-to-22
index 76a578c2f..a12c4a6cd 100755
--- a/src/migration-scripts/interfaces/21-to-22
+++ b/src/migration-scripts/interfaces/21-to-22
@@ -21,6 +21,25 @@ from sys import exit
from vyos.configtree import ConfigTree
+def replace_nat_interfaces(config, old, new):
+ if not config.exists(['nat']):
+ return
+ for direction in ['destination', 'source']:
+ conf_direction = ['nat', direction, 'rule']
+ if not config.exists(conf_direction):
+ return
+ for rule in config.list_nodes(conf_direction):
+ conf_rule = conf_direction + [rule]
+ if config.exists(conf_rule + ['inbound-interface']):
+ tmp = config.return_value(conf_rule + ['inbound-interface'])
+ if tmp == old:
+ config.set(conf_rule + ['inbound-interface'], value=new)
+ if config.exists(conf_rule + ['outbound-interface']):
+ tmp = config.return_value(conf_rule + ['outbound-interface'])
+ if tmp == old:
+ config.set(conf_rule + ['outbound-interface'], value=new)
+
+
if __name__ == '__main__':
if (len(argv) < 1):
print("Must specify file name!")
@@ -40,19 +59,20 @@ if __name__ == '__main__':
new_base = ['interfaces', 'wwan']
config.set(new_base)
config.set_tag(new_base)
- for interface in config.list_nodes(base):
+ for old_interface in config.list_nodes(base):
# convert usb0b1.3p1.2 device identifier and extract 1.3 usb bus id
- usb = config.return_value(base + [interface, 'device'])
+ usb = config.return_value(base + [old_interface, 'device'])
device = usb.split('b')[-1]
busid = device.split('p')[0]
- for wwan in os.listdir('/sys/class/net'):
+ for new_interface in os.listdir('/sys/class/net'):
# we are only interested in interfaces starting with wwan
- if not wwan.startswith('wwan'):
+ if not new_interface.startswith('wwan'):
continue
- device = os.readlink(f'/sys/class/net/{wwan}/device')
+ device = os.readlink(f'/sys/class/net/{new_interface}/device')
device = device.split(':')[0]
if busid in device:
- config.copy(base + [interface], new_base + [wwan])
+ config.copy(base + [old_interface], new_base + [new_interface])
+ replace_nat_interfaces(config, old_interface, new_interface)
config.delete(base)