summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorViacheslav Hletenko <v.gletenko@vyos.io>2026-04-30 14:41:23 +0300
committerGitHub <noreply@github.com>2026-04-30 14:41:23 +0300
commitdefc2a20adfef3cfa2018c061ab5bc92881203d4 (patch)
tree8a87af4d74af727f4e0db1672371fc91f7985fff /src
parent664c81d241d24c8f67b34a00581b84fb7e5dbc2e (diff)
parente1f9d876716f530e372e4d2f49eb77c800740e41 (diff)
downloadvyos-1x-defc2a20adfef3cfa2018c061ab5bc92881203d4.tar.gz
vyos-1x-defc2a20adfef3cfa2018c061ab5bc92881203d4.zip
Merge pull request #5140 from josephillips85/current
T8539: Unable to traceroute using hostname and ipv6 source address
Diffstat (limited to 'src')
-rwxr-xr-xsrc/op_mode/traceroute.py18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/op_mode/traceroute.py b/src/op_mode/traceroute.py
index 223e6b2b1..ef67b7416 100755
--- a/src/op_mode/traceroute.py
+++ b/src/op_mode/traceroute.py
@@ -222,11 +222,23 @@ 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:
- ip = socket.gethostbyname(host)
+ info = socket.getaddrinfo(host, None, af, socket.SOCK_STREAM)
+ ip = info[0][4][0]
except UnicodeError:
- sys.exit(f'tracroute: Unknown host: {host}')
- except socket.gaierror:
+ sys.exit(f'traceroute: Unknown host: {host}')
+ except OSError:
ip = host
try: