diff options
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 | 
