diff options
| author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2026-04-30 14:41:23 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-30 14:41:23 +0300 |
| commit | defc2a20adfef3cfa2018c061ab5bc92881203d4 (patch) | |
| tree | 8a87af4d74af727f4e0db1672371fc91f7985fff /src | |
| parent | 664c81d241d24c8f67b34a00581b84fb7e5dbc2e (diff) | |
| parent | e1f9d876716f530e372e4d2f49eb77c800740e41 (diff) | |
| download | vyos-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-x | src/op_mode/traceroute.py | 18 |
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: |
