diff options
| author | Christian Poessinger <christian@poessinger.com> | 2020-03-22 21:07:14 +0100 | 
|---|---|---|
| committer | Christian Poessinger <christian@poessinger.com> | 2020-03-22 21:13:25 +0100 | 
| commit | f6df56166bc04fbd94500cb4ba7c04f47a5794c9 (patch) | |
| tree | 4c89b9a2ba299f90a275e84d052c1737db72e672 /python | |
| parent | f06d9b22a6d9b355b4faa0271d31d4c2f58369a7 (diff) | |
| download | vyos-1x-f6df56166bc04fbd94500cb4ba7c04f47a5794c9.tar.gz vyos-1x-f6df56166bc04fbd94500cb4ba7c04f47a5794c9.zip | |
ifconfig: T2151: add WiFiIf interface representation class
This class is required as wireless interfaces are created using iw instead of
ip from iproute2.
Diffstat (limited to 'python')
| -rw-r--r-- | python/vyos/ifconfig/__init__.py | 3 | ||||
| -rw-r--r-- | python/vyos/ifconfig/wireless.py | 63 | 
2 files changed, 65 insertions, 1 deletions
| diff --git a/python/vyos/ifconfig/__init__.py b/python/vyos/ifconfig/__init__.py index a7588e5bc..16c29a704 100644 --- a/python/vyos/ifconfig/__init__.py +++ b/python/vyos/ifconfig/__init__.py @@ -34,4 +34,5 @@ from vyos.ifconfig.tunnel import IPIPIf  from vyos.ifconfig.tunnel import IPIP6If  from vyos.ifconfig.tunnel import IP6IP6If  from vyos.ifconfig.tunnel import SitIf -from vyos.ifconfig.tunnel import Sit6RDIf
\ No newline at end of file +from vyos.ifconfig.tunnel import Sit6RDIf +from vyos.ifconfig.wireless import WiFiIf diff --git a/python/vyos/ifconfig/wireless.py b/python/vyos/ifconfig/wireless.py new file mode 100644 index 000000000..faa47358d --- /dev/null +++ b/python/vyos/ifconfig/wireless.py @@ -0,0 +1,63 @@ +# Copyright 2020 VyOS maintainers and contributors <maintainers@vyos.io> +# +# 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 <http://www.gnu.org/licenses/>. + +import os + +from vyos.ifconfig.vlan import VLANIf + +class WiFiIf(VLANIf): +    """ +    Handle WIFI/WLAN interfaces. +    """ + +    options = ['phy', 'op_mode'] + +    default = { +        'type': 'wifi', +        'phy': 'phy0', +        'op_mode': 'monitor' +    } + +    def _create(self): +        cmd = 'iw phy {phy} interface add {ifname} type {op_mode}' \ +            .format(**self.config) +        self._cmd(cmd) + +        # place interface in administrative down state +        # this should be improved in the long run to reduce the amount of +        # interface flaps +        self.set_state('down') + +    def _delete(self): +        cmd = 'iw dev {ifname} del' \ +            .format(**self.config) +        self._cmd(cmd) + +    @staticmethod +    def get_config(): +        """ +        WiFi interfaces require a configuration when they are added using +        iw (type/phy). This static method will provide the configuration +        ictionary used by this class. + +        Example: +        >> conf = WiFiIf().get_config() +        """ +        config = { +            'phy': 'phy0', +            'op_mode': 'monitor' # required for proper interface deletion, as +                                 # _update() is called prior to remove() +        } +        return config | 
