diff --git a/src/opnsense/scripts/routes/del_route.py b/src/opnsense/scripts/routes/del_route.py index 99197a942..9e0279dc3 100755 --- a/src/opnsense/scripts/routes/del_route.py +++ b/src/opnsense/scripts/routes/del_route.py @@ -32,6 +32,8 @@ import subprocess import sys import ujson import argparse +import ipaddress + if __name__ == '__main__': # parse input arguments @@ -48,11 +50,13 @@ if __name__ == '__main__': # route entry found, try to delete print ("found") inet = '-6' if parts[0].find(':') > 0 else '-4' - if len(parts[1].replace(':', '')) == 12 and parts[1].count(':') == 5: - # gateway is a mac address, remove entry directly assigned to an interface - subprocess.run(['/sbin/route', inet, 'delete', parts[0]], capture_output=True) - else: + try: + ipaddress.ip_address(parts[1]) + # gateway is an ip address (v4/v6) subprocess.run(['/sbin/route', inet, 'delete', parts[0], parts[1]], capture_output=True) + except ValueError: + subprocess.run(['/sbin/route', inet, 'delete', parts[0]], capture_output=True) + sys.exit(0) # not found