diff options
| author | Christian Poessinger <christian@poessinger.com> | 2019-09-15 14:46:03 +0200 | 
|---|---|---|
| committer | Christian Poessinger <christian@poessinger.com> | 2019-09-20 21:28:53 +0200 | 
| commit | 2e210396036ffc769d941104729f67a5f64a0b24 (patch) | |
| tree | 4b0cac43cf058b7cc3c7fd234b80aa95f4a3cb28 /python | |
| parent | f2ca377c2a92e1036c4ff942bd61d3e4bb4f4a18 (diff) | |
| download | vyos-1x-2e210396036ffc769d941104729f67a5f64a0b24.tar.gz vyos-1x-2e210396036ffc769d941104729f67a5f64a0b24.zip | |
Python/ifconfig: T1557: query driver if it supports auto negotiation
Diffstat (limited to 'python')
| -rw-r--r-- | python/vyos/ifconfig.py | 18 | 
1 files changed, 18 insertions, 0 deletions
| diff --git a/python/vyos/ifconfig.py b/python/vyos/ifconfig.py index 9e6c27430..cbedcc86e 100644 --- a/python/vyos/ifconfig.py +++ b/python/vyos/ifconfig.py @@ -1085,6 +1085,24 @@ class EthernetIf(VLANIf):          link = os.readlink('/sys/class/net/{}/device/driver/module'.format(self._ifname))          return os.path.basename(link) +    def has_autoneg(self): +        """ +        Not all drivers support autonegotiation. + +        returns True -> Autonegotiation is supported by driver +                False -> Autonegotiation is not supported by driver +        """ +        regex = 'Supports auto-negotiation:[ ]\w+' +        tmp = self._cmd('/sbin/ethtool {}'.format(self._ifname)) +        tmp = re.search(regex, tmp.decode()) + +        # Output is either 'Supports auto-negotiation: Yes' or +        # 'Supports auto-negotiation: No' +        if tmp.group().split(':')[1].lstrip() == "Yes": +            return True +        else: +            return False +      def set_flow_control(self, enable):          """          Changes the pause parameters of the specified Ethernet device. | 
