diff options
author | Christian Poessinger <christian@poessinger.com> | 2021-06-13 11:06:11 +0200 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2021-06-13 09:20:08 +0000 |
commit | 0352aa560122146d761c7bbc00b008cd59a3fc97 (patch) | |
tree | 5a6804a3fa4e944ae836e2abe507ed43fdfc9e32 /src | |
parent | a95d3dd5c43e6ada07db3f86ed2082264912813b (diff) | |
download | vyos-1x-0352aa560122146d761c7bbc00b008cd59a3fc97.tar.gz vyos-1x-0352aa560122146d761c7bbc00b008cd59a3fc97.zip |
wwan: T3620: adjust NAT inbound/outbound interfaces on config migration
(cherry picked from commit e24e35e1ac11a0771b15417af191694fd0b88022)
Diffstat (limited to 'src')
-rwxr-xr-x | src/migration-scripts/interfaces/18-to-19 | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/src/migration-scripts/interfaces/18-to-19 b/src/migration-scripts/interfaces/18-to-19 index 76a578c2f..a12c4a6cd 100755 --- a/src/migration-scripts/interfaces/18-to-19 +++ b/src/migration-scripts/interfaces/18-to-19 @@ -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) |