From 96d51fa69fbe072fe5c9e8efd4fa6a89d8a2771a Mon Sep 17 00:00:00 2001 From: Christian Poessinger Date: Fri, 5 Feb 2021 21:01:31 +0100 Subject: xml: add new common "interface-name" validator --- .../include/bgp-update-source.xml.i | 2 +- .../include/static-route-interface.xml.i | 17 ++++++++++++++ .../include/static-route-next-hop-interface.xml.i | 17 -------------- .../include/static-route-next-hop-vrf.xml.i | 19 --------------- .../include/static-route-vrf.xml.i | 19 +++++++++++++++ interface-definitions/include/static-route.xml.i | 8 +++---- interface-definitions/include/static-route6.xml.i | 8 +++---- interface-definitions/protocols-bgp.xml.in | 2 +- interface-definitions/protocols-ospf.xml.in | 5 ++-- interface-definitions/protocols-ospfv3.xml.in | 2 +- src/validators/fqdn | 2 -- src/validators/interface-name | 27 ++++++++++++++++++++++ 12 files changed, 77 insertions(+), 51 deletions(-) create mode 100644 interface-definitions/include/static-route-interface.xml.i delete mode 100644 interface-definitions/include/static-route-next-hop-interface.xml.i delete mode 100644 interface-definitions/include/static-route-next-hop-vrf.xml.i create mode 100644 interface-definitions/include/static-route-vrf.xml.i create mode 100755 src/validators/interface-name diff --git a/interface-definitions/include/bgp-update-source.xml.i b/interface-definitions/include/bgp-update-source.xml.i index c1db2e2c1..a8b212720 100644 --- a/interface-definitions/include/bgp-update-source.xml.i +++ b/interface-definitions/include/bgp-update-source.xml.i @@ -21,7 +21,7 @@ - ^(br|bond|dum|en|eth|gnv|peth|tun|vti|vxlan|wg|wlan)[0-9]+|lo$ + diff --git a/interface-definitions/include/static-route-interface.xml.i b/interface-definitions/include/static-route-interface.xml.i new file mode 100644 index 000000000..0f10837df --- /dev/null +++ b/interface-definitions/include/static-route-interface.xml.i @@ -0,0 +1,17 @@ + + + + Gateway interface name + + + + + txt + Gateway interface name + + + + + + + diff --git a/interface-definitions/include/static-route-next-hop-interface.xml.i b/interface-definitions/include/static-route-next-hop-interface.xml.i deleted file mode 100644 index 01c253597..000000000 --- a/interface-definitions/include/static-route-next-hop-interface.xml.i +++ /dev/null @@ -1,17 +0,0 @@ - - - - Gateway interface name - - - - - txt - Gateway interface name - - - ^(br|bond|dum|en|eth|gnv|peth|tun|vti|vxlan|wg|wlan)[0-9]+|lo$ - - - - diff --git a/interface-definitions/include/static-route-next-hop-vrf.xml.i b/interface-definitions/include/static-route-next-hop-vrf.xml.i deleted file mode 100644 index ae2515a12..000000000 --- a/interface-definitions/include/static-route-next-hop-vrf.xml.i +++ /dev/null @@ -1,19 +0,0 @@ - - - - VRF to leak route - - default - vrf name - - - txt - Name of VRF to leak to - - - ^(default)$ - - - - - diff --git a/interface-definitions/include/static-route-vrf.xml.i b/interface-definitions/include/static-route-vrf.xml.i new file mode 100644 index 000000000..70f8b0be8 --- /dev/null +++ b/interface-definitions/include/static-route-vrf.xml.i @@ -0,0 +1,19 @@ + + + + VRF to leak route + + default + vrf name + + + txt + Name of VRF to leak to + + + ^(default)$ + + + + + diff --git a/interface-definitions/include/static-route.xml.i b/interface-definitions/include/static-route.xml.i index 1f79aaca8..6225025ca 100644 --- a/interface-definitions/include/static-route.xml.i +++ b/interface-definitions/include/static-route.xml.i @@ -42,13 +42,13 @@ Gateway interface name - ^(br|bond|dum|en|eth|gnv|peth|tun|vti|vxlan|wg|wlan)[0-9]+|lo$ + #include #include - #include + #include @@ -65,8 +65,8 @@ #include #include - #include - #include + #include + #include diff --git a/interface-definitions/include/static-route6.xml.i b/interface-definitions/include/static-route6.xml.i index 1ff6bbead..25d4d22a2 100644 --- a/interface-definitions/include/static-route6.xml.i +++ b/interface-definitions/include/static-route6.xml.i @@ -42,13 +42,13 @@ Gateway interface name - ^(br|bond|dum|en|eth|gnv|peth|tun|vti|vxlan|wg|wlan)[0-9]+|lo$ + #include #include - #include + #include @@ -65,8 +65,8 @@ #include #include - #include - #include + #include + #include diff --git a/interface-definitions/protocols-bgp.xml.in b/interface-definitions/protocols-bgp.xml.in index 3edacb0ca..e5122fe8d 100644 --- a/interface-definitions/protocols-bgp.xml.in +++ b/interface-definitions/protocols-bgp.xml.in @@ -307,7 +307,7 @@ - ^(br|bond|dum|en|eth|gnv|peth|tun|vti|vxlan|wg|wlan)[0-9]+|lo$ + diff --git a/interface-definitions/protocols-ospf.xml.in b/interface-definitions/protocols-ospf.xml.in index 7a5cef6ef..ca848c289 100644 --- a/interface-definitions/protocols-ospf.xml.in +++ b/interface-definitions/protocols-ospf.xml.in @@ -697,7 +697,8 @@ Default to suppress routing updates on all interfaces - ^(br|bond|dum|en|eth|gnv|peth|tun|vti|vxlan|wg|wlan)[0-9]+|lo|default$ + ^(default)$ + @@ -713,7 +714,7 @@ Interface to be passive (i.e. suppress routing updates) - ^(br|bond|dum|en|eth|gnv|peth|tun|vti|vxlan|wg|wlan)[0-9]+|lo$ + diff --git a/interface-definitions/protocols-ospfv3.xml.in b/interface-definitions/protocols-ospfv3.xml.in index 7f80f9f9d..bd6a55b45 100644 --- a/interface-definitions/protocols-ospfv3.xml.in +++ b/interface-definitions/protocols-ospfv3.xml.in @@ -52,7 +52,7 @@ Interface used for routing information exchange - ^(br|bond|dum|en|eth|gnv|peth|tun|vti|vxlan|wg|wlan)[0-9]+|lo$ + diff --git a/src/validators/fqdn b/src/validators/fqdn index 347ffda42..66276c093 100755 --- a/src/validators/fqdn +++ b/src/validators/fqdn @@ -17,11 +17,9 @@ import re import sys - # pattern copied from: https://www.regextester.com/103452 pattern = "(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]\.)+[a-zA-Z]{2,63}$)" - if __name__ == '__main__': if len(sys.argv) != 2: sys.exit(1) diff --git a/src/validators/interface-name b/src/validators/interface-name new file mode 100755 index 000000000..32cd42fbd --- /dev/null +++ b/src/validators/interface-name @@ -0,0 +1,27 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2021 VyOS maintainers and contributors +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 or later as +# published by the Free Software Foundation. +# +# This program 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import re +import sys + +pattern = '^(br|bond|dum|en|eth|gnv|peth|pppoe|tun|vti|vtun|vxlan|wg|wlan)[0-9]+|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) -- cgit v1.2.3