summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJose Phillips <jose@latinol.com>2026-04-21 10:32:43 -0500
committerJose Phillips <jose@latinol.com>2026-04-21 10:32:43 -0500
commit143224e4b7656c659b937153d16cd6e8cbbea1f9 (patch)
tree15b4f38db9a24e59d05e29534d377cffb6e9cc9a /src
parent29eb4d98273e84b28a8a868805358dcadc56d9e2 (diff)
downloadvyos-1x-143224e4b7656c659b937153d16cd6e8cbbea1f9.tar.gz
vyos-1x-143224e4b7656c659b937153d16cd6e8cbbea1f9.zip
traceroute: T8539: fix source-address AF lookup
Diffstat (limited to 'src')
-rwxr-xr-xsrc/op_mode/traceroute.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/op_mode/traceroute.py b/src/op_mode/traceroute.py
index 6d6ef27aa..222b2d326 100755
--- a/src/op_mode/traceroute.py
+++ b/src/op_mode/traceroute.py
@@ -222,11 +222,22 @@ if __name__ == '__main__':
args.append(name)
args.append(option['dflt'])
+ af = socket.AF_UNSPEC
+ for i in range(len(args)):
+ matched = complete(args[i])
+ if len(matched) == 1 and matched[0] == 'source-address' and i + 1 < len(args):
+ try:
+ src_version = ipaddress.ip_address(args[i + 1]).version
+ af = socket.AF_INET6 if src_version == 6 else socket.AF_INET
+ except ValueError:
+ pass
+ break
+
try:
- info = socket.getaddrinfo(host, None, socket.AF_UNSPEC, socket.SOCK_STREAM)
+ info = socket.getaddrinfo(host, None, af, socket.SOCK_STREAM)
ip = info[0][4][0]
except UnicodeError:
- sys.exit(f'tracroute: Unknown host: {host}')
+ sys.exit(f'traceroute: Unknown host: {host}')
except socket.gaierror:
ip = host