From bf39fe03e132ae4cf0985432345b61f6e7af2135 Mon Sep 17 00:00:00 2001
From: Thomas Mangin <thomas.mangin@exa.net.uk>
Date: Sun, 12 Apr 2020 01:45:07 +0100
Subject: ifconfig: T31: add skeleton VTI and input classes

also add a function to Section which provides a list of reserved names
---
 python/vyos/ifconfig/input.py   | 31 +++++++++++++++++++++++++++++++
 python/vyos/ifconfig/section.py | 19 ++++++++-----------
 python/vyos/ifconfig/vti.py     | 31 +++++++++++++++++++++++++++++++
 3 files changed, 70 insertions(+), 11 deletions(-)
 create mode 100644 python/vyos/ifconfig/input.py
 create mode 100644 python/vyos/ifconfig/vti.py

(limited to 'python')

diff --git a/python/vyos/ifconfig/input.py b/python/vyos/ifconfig/input.py
new file mode 100644
index 000000000..bfab36335
--- /dev/null
+++ b/python/vyos/ifconfig/input.py
@@ -0,0 +1,31 @@
+# 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/>.
+
+
+from vyos.ifconfig.interface import Interface
+
+
+@Interface.register
+class InputIf(Interface):
+    default = {
+        'type': '',
+    }
+    definition = {
+        **Interface.definition,
+        **{
+            'section': 'input',
+            'prefixes': ['ifb', ],
+        },
+    }
diff --git a/python/vyos/ifconfig/section.py b/python/vyos/ifconfig/section.py
index 234c9a6cc..ab340d247 100644
--- a/python/vyos/ifconfig/section.py
+++ b/python/vyos/ifconfig/section.py
@@ -66,12 +66,6 @@ class Section:
         """
         name = cls._basename(name, vlan)
 
-        # XXX: To leave as long as vti and input are not moved to vyos
-        if name == 'vti':
-            return 'vti'
-        if name == 'ifb':
-            return 'input'
-
         if name in cls._prefixes:
             return cls._prefixes[name].definition['section']
         return ''
@@ -91,11 +85,6 @@ class Section:
         interfaces = netifaces.interfaces()
 
         for ifname in interfaces:
-            # XXX: Temporary hack as vti and input are not yet moved from vyatta to vyos
-            if ifname.startswith('vti') or ifname.startswith('input'):
-                yield ifname
-                continue
-
             ifsection = cls.section(ifname)
             if not ifsection:
                 continue
@@ -132,3 +121,11 @@ class Section:
         bondable, broadcast, bridgeable, ...
         """
         return list(cls._intf_with_feature(feature))
+
+    @classmethod
+    def reserved(cls):
+        """
+        return list with the interface name prefixes
+        eth, lo, vxlan, dum, ...
+        """
+        return list(cls._prefixes.keys())
diff --git a/python/vyos/ifconfig/vti.py b/python/vyos/ifconfig/vti.py
new file mode 100644
index 000000000..56ebe01d1
--- /dev/null
+++ b/python/vyos/ifconfig/vti.py
@@ -0,0 +1,31 @@
+# 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/>.
+
+
+from vyos.ifconfig.interface import Interface
+
+
+@Interface.register
+class VTIIf(Interface):
+    default = {
+        'type': 'vti',
+    }
+    definition = {
+        **Interface.definition,
+        **{
+            'section': 'vti',
+            'prefixes': ['vti', ],
+        },
+    }
-- 
cgit v1.2.3