summaryrefslogtreecommitdiff
path: root/src/validators/numeric
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2019-10-19 10:45:05 +0200
committerChristian Poessinger <christian@poessinger.com>2019-10-19 10:45:05 +0200
commita16ee44ac1c25145d3e938eff0ab3e66923e2513 (patch)
tree5ca7970af596a9c91fa53d84ea1009d5a0303df4 /src/validators/numeric
parent79bc826426385e5b40fbe58137d0a2d2831cf274 (diff)
parent6f73338f0a652ca9b68a5778456f63d098f04522 (diff)
downloadvyos-1x-a16ee44ac1c25145d3e938eff0ab3e66923e2513.tar.gz
vyos-1x-a16ee44ac1c25145d3e938eff0ab3e66923e2513.zip
Merge branch 'current' of github.com:vyos/vyos-1x into equuleus
* 'current' of github.com:vyos/vyos-1x: T1749: support multiple ranges in the numeric validator. dhcp-server: T1745: bugfix corner case on static-assignments system-proxy: T1741 - Add system wide proxy setting wireguard - remove endpoint check to enable roaming connections system-proxy: T1741 - Add system wide proxy setting CLI implementation Python/ifconfig: T1712: always start DHCP when configured Python/ifconfig: T1557: get_status() must use admin state not operstate bgp: T1490: fix migrator file permissions snmp: T1737: add missing completion helpers Revert "Python/ifconfig: T1712: wait when changing interface state" snmpd: T1705 - High CPU usage by bgpd when snmp is active Revert "snmpd: T1705 - High CPU usage by bgpd when snmp is active" openvpn: T1548: clean out import statements ssh.py: check if file exists before deleting it [BGP] T1490: Added migration for obsoleted 'bgp scan-time' parameter
Diffstat (limited to 'src/validators/numeric')
-rwxr-xr-xsrc/validators/numeric28
1 files changed, 19 insertions, 9 deletions
diff --git a/src/validators/numeric b/src/validators/numeric
index ffe84a234..0a2d83d14 100755
--- a/src/validators/numeric
+++ b/src/validators/numeric
@@ -24,7 +24,7 @@ import re
parser = argparse.ArgumentParser()
parser.add_argument("-f", "--float", action="store_true", help="Accept floating point values")
group = parser.add_mutually_exclusive_group()
-group.add_argument("-r", "--range", type=str, help="Check if the number is within range (inclusive), example: 1024-65535")
+group.add_argument("-r", "--range", type=str, help="Check if the number is within range (inclusive), example: 1024-65535", action='append')
group.add_argument("-n", "--non-negative", action="store_true", help="Check if the number is non-negative (>= 0)")
group.add_argument("-p", "--positive", action="store_true", help="Check if the number is positive (> 0)")
parser.add_argument("number", type=str, help="Number to validate")
@@ -47,15 +47,25 @@ else:
sys.exit(1)
if args.range:
- try:
- lower, upper = re.match(r'(\d+)\s*\-\s*(\d+)', args.range).groups()
- lower, upper = int(lower), int(upper)
- except:
- print("{0} is not a valid number range",format(args.range), file=sys.stderr)
- sys.exit(1)
+ valid = False
+ for r in args.range:
+ try:
+ lower, upper = re.match(r'(\d+)\s*\-\s*(\d+)', r).groups()
+ lower, upper = int(lower), int(upper)
+ except:
+ print("{0} is not a valid number range",format(args.range), file=sys.stderr)
+ sys.exit(1)
+
+ if (number >= lower) and (number <= upper):
+ valid = True
+ # end for
- if (number < lower) or (number > upper):
- print("Number {0} is not in the {1} range".format(number, args.range), file=sys.stderr)
+ if not valid:
+ if len(args.range) > 1:
+ err_msg = "Number {0} is not in any of the ranges {1}".format(number, args.range)
+ else:
+ err_msg = "Number {0} is not in the range {1}".format(number, args.range[0])
+ print(err_msg, file=sys.stderr)
sys.exit(1)
elif args.non_negative:
if number < 0: