diff options
author | Christian Poessinger <christian@poessinger.com> | 2020-03-08 12:36:21 +0100 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2020-03-08 12:39:19 +0100 |
commit | 2a77089eabea62c7051434d874884a81de8f3f02 (patch) | |
tree | 55f1a905203d6a7d410d81d4b7b32521c5e4d774 /src/conf_mode | |
parent | 8f58dde4c89ae365d0b2cb15d105d8ead73ee0c9 (diff) | |
download | vyos-1x-2a77089eabea62c7051434d874884a81de8f3f02.tar.gz vyos-1x-2a77089eabea62c7051434d874884a81de8f3f02.zip |
macvlan: T1635: add missing VLAN/VIF creation logic
Diffstat (limited to 'src/conf_mode')
-rwxr-xr-x | src/conf_mode/interfaces-pseudo-ethernet.py | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/src/conf_mode/interfaces-pseudo-ethernet.py b/src/conf_mode/interfaces-pseudo-ethernet.py index 67c5eb3d2..e775b0fcd 100755 --- a/src/conf_mode/interfaces-pseudo-ethernet.py +++ b/src/conf_mode/interfaces-pseudo-ethernet.py @@ -22,7 +22,7 @@ from netifaces import interfaces from vyos.ifconfig import MACVLANIf from vyos.ifconfig_vlan import apply_vlan_config, verify_vlan_config -from vyos.configdict import list_diff +from vyos.configdict import list_diff, vlan_to_dict from vyos.config import Config from vyos import ConfigError @@ -310,6 +310,35 @@ def apply(peth): for addr in peth['address']: p.add_addr(addr) + # remove no longer required service VLAN interfaces (vif-s) + for vif_s in peth['vif_s_remove']: + p.del_vlan(vif_s) + + # create service VLAN interfaces (vif-s) + for vif_s in peth['vif_s']: + s_vlan = p.add_vlan(vif_s['id'], ethertype=vif_s['ethertype']) + apply_vlan_config(s_vlan, vif_s) + + # remove no longer required client VLAN interfaces (vif-c) + # on lower service VLAN interface + for vif_c in vif_s['vif_c_remove']: + s_vlan.del_vlan(vif_c) + + # create client VLAN interfaces (vif-c) + # on lower service VLAN interface + for vif_c in vif_s['vif_c']: + c_vlan = s_vlan.add_vlan(vif_c['id']) + apply_vlan_config(c_vlan, vif_c) + + # remove no longer required VLAN interfaces (vif) + for vif in peth['vif_remove']: + p.del_vlan(vif) + + # create VLAN interfaces (vif) + for vif in peth['vif']: + vlan = p.add_vlan(vif['id']) + apply_vlan_config(vlan, vif) + return None if __name__ == '__main__': |