summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2020-03-22 21:07:14 +0100
committerChristian Poessinger <christian@poessinger.com>2020-03-22 21:13:25 +0100
commitf6df56166bc04fbd94500cb4ba7c04f47a5794c9 (patch)
tree4c89b9a2ba299f90a275e84d052c1737db72e672
parentf06d9b22a6d9b355b4faa0271d31d4c2f58369a7 (diff)
downloadvyos-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.
-rw-r--r--python/vyos/ifconfig/__init__.py3
-rw-r--r--python/vyos/ifconfig/wireless.py63
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