summaryrefslogtreecommitdiff
path: root/src/validators/interface-name
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2021-03-21 13:57:49 +0100
committerChristian Poessinger <christian@poessinger.com>2021-03-21 14:00:01 +0100
commite2b03635b0d3053f65c9bb391be9efa9a49a4f8f (patch)
treec33c430e1b0df5fb5dd5e8b18892a0731a199a1b /src/validators/interface-name
parent150401fa4c0a393ca496e188eeb08f9ac3844a6a (diff)
downloadvyos-1x-e2b03635b0d3053f65c9bb391be9efa9a49a4f8f.tar.gz
vyos-1x-e2b03635b0d3053f65c9bb391be9efa9a49a4f8f.zip
validate: T3418: interface-name should also allow all local present interfaces
The regex only validated interfaces according to the VyOS naming scheme, but third party interfacs that are legit (e.g. exists within the kernel) failed to validate. The validator now also supports any kind of local interfaces attached to the OS kernel. (cherry picked from commit 911fe645928750f3ce38061a94c9b6db50db0749)
Diffstat (limited to 'src/validators/interface-name')
-rwxr-xr-xsrc/validators/interface-name19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/validators/interface-name b/src/validators/interface-name
index 72e9fd54a..5bac671b1 100755
--- a/src/validators/interface-name
+++ b/src/validators/interface-name
@@ -14,14 +14,21 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import os
import re
-import sys
+
+from sys import argv
+from sys import exit
pattern = '^(bond|br|dum|en|ersp|eth|gnv|lan|l2tp|l2tpeth|macsec|peth|ppp|pppoe|pptp|sstp|tun|vti|vtun|vxlan|wg|wlan|wlm)[0-9]+(.\d+)?|lo$'
if __name__ == '__main__':
- if len(sys.argv) != 2:
- sys.exit(1)
- if not re.match(pattern, sys.argv[1]):
- sys.exit(1)
- sys.exit(0)
+ if len(argv) != 2:
+ exit(1)
+ interface = argv[1]
+
+ if re.match(pattern, interface):
+ exit(0)
+ if os.path.exists(f'/sys/class/net/{interface}'):
+ exit(0)
+ exit(1)