# Copyright 2020-2024 VyOS maintainers and contributors # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this library. If not, see . # - T2903: Change vif-s ethertype from numeric number to literal # - 0x88a8 -> 802.1ad # - 0x8100 -> 802.1q # - T2905: Change WWAN "ondemand" node to "connect-on-demand" to have identical # CLI nodes for both types of dialer interfaces from vyos.configtree import ConfigTree def migrate(config: ConfigTree) -> None: # # T2903 # for type in config.list_nodes(['interfaces']): for interface in config.list_nodes(['interfaces', type]): if not config.exists(['interfaces', type, interface, 'vif-s']): continue for vif_s in config.list_nodes(['interfaces', type, interface, 'vif-s']): base_path = ['interfaces', type, interface, 'vif-s', vif_s] if config.exists(base_path + ['ethertype']): protocol = '802.1ad' tmp = config.return_value(base_path + ['ethertype']) if tmp == '0x8100': protocol = '802.1q' config.set(base_path + ['protocol'], value=protocol) config.delete(base_path + ['ethertype']) # # T2905 # wwan_base = ['interfaces', 'wirelessmodem'] if config.exists(wwan_base): for interface in config.list_nodes(wwan_base): if config.exists(wwan_base + [interface, 'ondemand']): config.rename(wwan_base + [interface, 'ondemand'], 'connect-on-demand')