summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2019-10-11 07:55:16 +0200
committerChristian Poessinger <christian@poessinger.com>2019-10-11 07:55:16 +0200
commitf5c04661e6c031baedb6092ecafee501cca7bc28 (patch)
tree663ff1e2ffc596b7943efadc478d1e69c59606f1
parente45648cdd5a52569be7f3ac30473b0c7474a7894 (diff)
downloadvyos-1x-f5c04661e6c031baedb6092ecafee501cca7bc28.tar.gz
vyos-1x-f5c04661e6c031baedb6092ecafee501cca7bc28.zip
Python/ifconfig: T1723: add flag to specify if we should wait for interface up
-rw-r--r--python/vyos/ifconfig.py38
1 files changed, 21 insertions, 17 deletions
diff --git a/python/vyos/ifconfig.py b/python/vyos/ifconfig.py
index 23e66c089..cc214908a 100644
--- a/python/vyos/ifconfig.py
+++ b/python/vyos/ifconfig.py
@@ -71,6 +71,7 @@ class Interface:
>>> i = Interface('eth0')
"""
self._ifname = str(ifname)
+ self._statechange_wait = True
if not os.path.exists('/sys/class/net/{}'.format(ifname)) and not type:
raise Exception('interface "{}" not found'.format(self._ifname))
@@ -314,17 +315,18 @@ class Interface:
cmd = 'ip link set dev {} {}'.format(self._ifname, state)
tmp = self._cmd(cmd)
- # better safe then sorry - wait until the interface is really up
- # but only for a given period of time to avoid potential deadlocks!
- cnt = 0
- while self.get_state() != state:
- cnt += 1
- if cnt == 50:
- print('Interface {} could not be brought up in time ...'.format(self._ifname))
- break
+ if self._statechange_wait:
+ # better safe then sorry - wait until the interface is really up
+ # but only for a given period of time to avoid potential deadlocks!
+ cnt = 0
+ while self.get_state() != state:
+ cnt += 1
+ if cnt == 50:
+ print('Interface {} could not be brought up in time ...'.format(self._ifname))
+ break
- # sleep 250ms
- sleep(0.250)
+ # sleep 250ms
+ sleep(0.250)
return tmp
@@ -1370,15 +1372,17 @@ class WireGuardIf(Interface):
def __init__(self, ifname):
super().__init__(ifname, type='wireguard')
+ self._statechange_wait = False
+
self.config = {
'port': 0,
- 'private-key': None,
- 'pubkey': None,
- 'psk': '/dev/null',
- 'allowed-ips': [],
- 'fwmark': 0x00,
- 'endpoint': None,
- 'keepalive': 0
+ 'private-key': None,
+ 'pubkey': None,
+ 'psk': '/dev/null',
+ 'allowed-ips': [],
+ 'fwmark': 0x00,
+ 'endpoint': None,
+ 'keepalive': 0
}
def update(self):