From 0d94d0aefb8b1bf8d2edb0df5a3a21d2c1210ea9 Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Sun, 7 Mar 2021 20:29:43 +0100 Subject: [PATCH] System / Routes / Status: remove entries directly connected to an interface, rework last commit for https://github.com/opnsense/core/issues/4721 --- src/opnsense/scripts/routes/del_route.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) 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