Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion interface-definitions/include/vpp/acl_port_range.xml.i
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<description>Numbered port range (e.g., 1001-1005)</description>
</valueHelp>
<constraint>
<validator name="port-range"/>
<validator name="port-range" argument="--numeric-only"/>
</constraint>
</properties>
</leafNode>
Expand Down
17 changes: 13 additions & 4 deletions src/validators/port-range
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#!/usr/bin/python3

import argparse
import sys
import re

Expand All @@ -22,7 +23,12 @@ def error(port_range):

if __name__ == '__main__':
if len(sys.argv)>1:
port_range = sys.argv[1]
parser = argparse.ArgumentParser()
parser.add_argument('--numeric-only', action='store_true', help='Check only numeric port and range')
parser.add_argument("port_range", help="Port, range or service name")
args = parser.parse_args()

port_range = args.port_range
if re.match('^[0-9]{1,5}-[0-9]{1,5}$', port_range):
port_1, port_2 = port_range.split('-')
if int(port_1) not in range(1, 65536) or int(port_2) not in range(1, 65536):
Expand All @@ -31,9 +37,12 @@ if __name__ == '__main__':
error(port_range)
elif port_range.isnumeric() and int(port_range) not in range(1, 65536):
error(port_range)
elif not port_range.isnumeric() and port_range not in get_services():
print(f'Error: {port_range} is not a valid service name')
sys.exit(1)
elif not port_range.isnumeric():
if args.numeric_only:
error(port_range)
elif port_range not in get_services():
print(f'Error: {port_range} is not a valid service name')
sys.exit(1)
else:
sys.exit(2)

Expand Down
Loading