diff options
author | Christian Poessinger <christian@poessinger.com> | 2021-03-21 13:57:49 +0100 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2021-03-21 14:00:01 +0100 |
commit | e2b03635b0d3053f65c9bb391be9efa9a49a4f8f (patch) | |
tree | c33c430e1b0df5fb5dd5e8b18892a0731a199a1b /src/validators/interface-name | |
parent | 150401fa4c0a393ca496e188eeb08f9ac3844a6a (diff) | |
download | vyos-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-x | src/validators/interface-name | 19 |
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) |