diff options
| author | Jose Phillips <jose@latinol.com> | 2026-04-21 10:32:43 -0500 |
|---|---|---|
| committer | Jose Phillips <jose@latinol.com> | 2026-04-21 10:32:43 -0500 |
| commit | 143224e4b7656c659b937153d16cd6e8cbbea1f9 (patch) | |
| tree | 15b4f38db9a24e59d05e29534d377cffb6e9cc9a /src | |
| parent | 29eb4d98273e84b28a8a868805358dcadc56d9e2 (diff) | |
| download | vyos-1x-143224e4b7656c659b937153d16cd6e8cbbea1f9.tar.gz vyos-1x-143224e4b7656c659b937153d16cd6e8cbbea1f9.zip | |
traceroute: T8539: fix source-address AF lookup
Diffstat (limited to 'src')
| -rwxr-xr-x | src/op_mode/traceroute.py | 15 |
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 |
