summaryrefslogtreecommitdiff
path: root/src
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 13:57:49 +0100
commit911fe645928750f3ce38061a94c9b6db50db0749 (patch)
treec54dd314bfa46fde07f65fcb9e8aba5f9a35477c /src
parent667122e7a6f1c6afb32ea7a6af47dc83687a5d3f (diff)
downloadvyos-1x-911fe645928750f3ce38061a94c9b6db50db0749.tar.gz
vyos-1x-911fe645928750f3ce38061a94c9b6db50db0749.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.
Diffstat (limited to 'src')
-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)