summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2023-04-15 15:29:53 +0200
committerChristian Breunig <christian@breunig.cc>2023-05-05 06:14:44 +0200
commitc71a97fc13357fcc34b48aa254ad727939a24957 (patch)
tree561ccaeb8a7e05a0e0045325c5959b2d5262d388 /python
parent2c5307d42e0d4cc1a81210c76a63271d66f2888b (diff)
downloadvyos-1x-c71a97fc13357fcc34b48aa254ad727939a24957.tar.gz
vyos-1x-c71a97fc13357fcc34b48aa254ad727939a24957.zip
vyos.ifconfig: T2104: support adding and removing VLANs in one call.
VLANIf('eth0.10').remove() will create and remove the VLAN in one command. Thus one can ensure when calling remove() on a VLAN it will always succeed. (cherry picked from commit 7700da10b8d1d1b3d0db914ab48aebf8ff536da1)
Diffstat (limited to 'python')
-rw-r--r--python/vyos/ifconfig/interface.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/python/vyos/ifconfig/interface.py b/python/vyos/ifconfig/interface.py
index 7dbedea45..634060c4b 100644
--- a/python/vyos/ifconfig/interface.py
+++ b/python/vyos/ifconfig/interface.py
@@ -1549,6 +1549,14 @@ class VLANIf(Interface):
if self.exists(f'{self.ifname}'):
return
+ # If source_interface or vlan_id was not explicitly defined (e.g. when
+ # calling VLANIf('eth0.1').remove() we can define source_interface and
+ # vlan_id here, as it's quiet obvious that it would be eth0 in that case.
+ if 'source_interface' not in self.config:
+ self.config['source_interface'] = '.'.join(self.ifname.split('.')[:-1])
+ if 'vlan_id' not in self.config:
+ self.config['vlan_id'] = self.ifname.split('.')[-1]
+
cmd = 'ip link add link {source_interface} name {ifname} type vlan id {vlan_id}'
if 'protocol' in self.config:
cmd += ' protocol {protocol}'