[TRACERT] Rewrite tracert

- Full rewrite. This commit replaces the old utility.
- Use the new ICMP APIs instead of manually crafting ping requests using raw sockets.
- Add support for additional languages (the previous utility was hardcoded)
- Add support for IPv6
- Make the icmpapi header C++ compatible. (we don't appear to sync this with wine anymore.)
- Now runs on Win10, is much more reliable, and brings the code somewhat into the 21st century.
(It's currently missing source routing (-j), but as most routers disable this anyway, I'm not sure that it's worth adding)
This commit is contained in:
Ged Murphy 2018-01-02 09:43:14 +00:00 committed by GitHub
parent 8d436d9bb5
commit 344f367211
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
23 changed files with 1164 additions and 749 deletions

View file

@ -0,0 +1,32 @@
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_USAGE "\r\n\
Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name \r\n\r\n\
Options:\r\n\
-d Do not resolve addresses to hostnames.\r\n\
-h maximum_hops Maximum number of hops to search for target.\r\n\
-j host-list Loose source route along host-list.\r\n\
-w timeout Wait timeout milliseconds for each reply.\r\n\
-4 Force using IPv4.\r\n\
-6 Force using IPv6.\r\n\
\r\n"
IDS_INVALID_OPTION "%1 is not a valid command option.\r\n"
IDS_TRACE_INFO "\r\nTracing route to %1 [%2]\r\nover a maximum of %3!u! hops:\r\n\r\n"
IDS_TRACE_COMPLETE "\r\nTrace complete.\r\n"
IDS_UNABLE_RESOLVE "Unable to resolve target system name %1.\r\n"
IDS_GEN_FAILURE "General failure.\r\n"
IDS_HOP_COUNT "%1!3lu! %0\r\n"
IDS_HOP_TIME "%1!4lu! ms %0\r\n"
IDS_HOP_ZERO, " <1 ms %0\r\n"
IDS_TIMEOUT " * %0\r\n"
IDS_HOP_RES_INFO "%1 [%2]\r\n"
IDS_HOP_IP_INFO "%1\r\n"
IDS_REQ_TIMED_OUT "Request timed out.\r\n"
END

View file

@ -0,0 +1,32 @@
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_USAGE "\r\n\
Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name \r\n\r\n\
Options:\r\n\
-d Do not resolve addresses to hostnames.\r\n\
-h maximum_hops Maximum number of hops to search for target.\r\n\
-j host-list Loose source route along host-list.\r\n\
-w timeout Wait timeout milliseconds for each reply.\r\n\
-4 Force using IPv4.\r\n\
-6 Force using IPv6.\r\n\
\r\n"
IDS_INVALID_OPTION "%1 is not a valid command option.\r\n"
IDS_TRACE_INFO "\r\nTracing route to %1 [%2]\r\nover a maximum of %3!u! hops:\r\n\r\n"
IDS_TRACE_COMPLETE "\r\nTrace complete.\r\n"
IDS_UNABLE_RESOLVE "Unable to resolve target system name %1.\r\n"
IDS_GEN_FAILURE "General failure.\r\n"
IDS_HOP_COUNT "%1!3lu! %0\r\n"
IDS_HOP_TIME "%1!4lu! ms %0\r\n"
IDS_HOP_ZERO, " <1 ms %0\r\n"
IDS_TIMEOUT " * %0\r\n"
IDS_HOP_RES_INFO "%1 [%2]\r\n"
IDS_HOP_IP_INFO "%1\r\n"
IDS_REQ_TIMED_OUT "Request timed out.\r\n"
END

View file

@ -0,0 +1,32 @@
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_USAGE "\r\n\
Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name \r\n\r\n\
Options:\r\n\
-d Do not resolve addresses to hostnames.\r\n\
-h maximum_hops Maximum number of hops to search for target.\r\n\
-j host-list Loose source route along host-list.\r\n\
-w timeout Wait timeout milliseconds for each reply.\r\n\
-4 Force using IPv4.\r\n\
-6 Force using IPv6.\r\n\
\r\n"
IDS_INVALID_OPTION "%1 is not a valid command option.\r\n"
IDS_TRACE_INFO "\r\nTracing route to %1 [%2]\r\nover a maximum of %3!u! hops:\r\n\r\n"
IDS_TRACE_COMPLETE "\r\nTrace complete.\r\n"
IDS_UNABLE_RESOLVE "Unable to resolve target system name %1.\r\n"
IDS_GEN_FAILURE "General failure.\r\n"
IDS_HOP_COUNT "%1!3lu! %0\r\n"
IDS_HOP_TIME "%1!4lu! ms %0\r\n"
IDS_HOP_ZERO, " <1 ms %0\r\n"
IDS_TIMEOUT " * %0\r\n"
IDS_HOP_RES_INFO "%1 [%2]\r\n"
IDS_HOP_IP_INFO "%1\r\n"
IDS_REQ_TIMED_OUT "Request timed out.\r\n"
END

View file

@ -0,0 +1,32 @@
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
STRINGTABLE
BEGIN
IDS_USAGE "\r\n\
Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name \r\n\r\n\
Options:\r\n\
-d Do not resolve addresses to hostnames.\r\n\
-h maximum_hops Maximum number of hops to search for target.\r\n\
-j host-list Loose source route along host-list.\r\n\
-w timeout Wait timeout milliseconds for each reply.\r\n\
-4 Force using IPv4.\r\n\
-6 Force using IPv6.\r\n\
\r\n"
IDS_INVALID_OPTION "%1 is not a valid command option.\r\n"
IDS_TRACE_INFO "\r\nTracing route to %1 [%2]\r\nover a maximum of %3!u! hops:\r\n\r\n"
IDS_TRACE_COMPLETE "\r\nTrace complete.\r\n"
IDS_UNABLE_RESOLVE "Unable to resolve target system name %1.\r\n"
IDS_GEN_FAILURE "General failure.\r\n"
IDS_HOP_COUNT "%1!3lu! %0\r\n"
IDS_HOP_TIME "%1!4lu! ms %0\r\n"
IDS_HOP_ZERO, " <1 ms %0\r\n"
IDS_TIMEOUT " * %0\r\n"
IDS_HOP_RES_INFO "%1 [%2]\r\n"
IDS_HOP_IP_INFO "%1\r\n"
IDS_REQ_TIMED_OUT "Request timed out.\r\n"
END

View file

@ -0,0 +1,32 @@
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_USAGE "\r\n\
Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name \r\n\r\n\
Options:\r\n\
-d Do not resolve addresses to hostnames.\r\n\
-h maximum_hops Maximum number of hops to search for target.\r\n\
-j host-list Loose source route along host-list.\r\n\
-w timeout Wait timeout milliseconds for each reply.\r\n\
-4 Force using IPv4.\r\n\
-6 Force using IPv6.\r\n\
\r\n"
IDS_INVALID_OPTION "%1 is not a valid command option.\r\n"
IDS_TRACE_INFO "\r\nTracing route to %1 [%2]\r\nover a maximum of %3!u! hops:\r\n\r\n"
IDS_TRACE_COMPLETE "\r\nTrace complete.\r\n"
IDS_UNABLE_RESOLVE "Unable to resolve target system name %1.\r\n"
IDS_GEN_FAILURE "General failure.\r\n"
IDS_HOP_COUNT "%1!3lu! %0\r\n"
IDS_HOP_TIME "%1!4lu! ms %0\r\n"
IDS_HOP_ZERO, " <1 ms %0\r\n"
IDS_TIMEOUT " * %0\r\n"
IDS_HOP_RES_INFO "%1 [%2]\r\n"
IDS_HOP_IP_INFO "%1\r\n"
IDS_REQ_TIMED_OUT "Request timed out.\r\n"
END

View file

@ -0,0 +1,32 @@
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_USAGE "\r\n\
Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name \r\n\r\n\
Options:\r\n\
-d Do not resolve addresses to hostnames.\r\n\
-h maximum_hops Maximum number of hops to search for target.\r\n\
-j host-list Loose source route along host-list.\r\n\
-w timeout Wait timeout milliseconds for each reply.\r\n\
-4 Force using IPv4.\r\n\
-6 Force using IPv6.\r\n\
\r\n"
IDS_INVALID_OPTION "%1 is not a valid command option.\r\n"
IDS_TRACE_INFO "\r\nTracing route to %1 [%2]\r\nover a maximum of %3!u! hops:\r\n\r\n"
IDS_TRACE_COMPLETE "\r\nTrace complete.\r\n"
IDS_UNABLE_RESOLVE "Unable to resolve target system name %1.\r\n"
IDS_GEN_FAILURE "General failure.\r\n"
IDS_HOP_COUNT "%1!3lu! %0\r\n"
IDS_HOP_TIME "%1!4lu! ms %0\r\n"
IDS_HOP_ZERO, " <1 ms %0\r\n"
IDS_TIMEOUT " * %0\r\n"
IDS_HOP_RES_INFO "%1 [%2]\r\n"
IDS_HOP_IP_INFO "%1\r\n"
IDS_REQ_TIMED_OUT "Request timed out.\r\n"
END

View file

@ -0,0 +1,32 @@
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_USAGE "\r\n\
Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name \r\n\r\n\
Options:\r\n\
-d Do not resolve addresses to hostnames.\r\n\
-h maximum_hops Maximum number of hops to search for target.\r\n\
-j host-list Loose source route along host-list.\r\n\
-w timeout Wait timeout milliseconds for each reply.\r\n\
-4 Force using IPv4.\r\n\
-6 Force using IPv6.\r\n\
\r\n"
IDS_INVALID_OPTION "%1 is not a valid command option.\r\n"
IDS_TRACE_INFO "\r\nTracing route to %1 [%2]\r\nover a maximum of %3!u! hops:\r\n\r\n"
IDS_TRACE_COMPLETE "\r\nTrace complete.\r\n"
IDS_UNABLE_RESOLVE "Unable to resolve target system name %1.\r\n"
IDS_GEN_FAILURE "General failure.\r\n"
IDS_HOP_COUNT "%1!3lu! %0\r\n"
IDS_HOP_TIME "%1!4lu! ms %0\r\n"
IDS_HOP_ZERO, " <1 ms %0\r\n"
IDS_TIMEOUT " * %0\r\n"
IDS_HOP_RES_INFO "%1 [%2]\r\n"
IDS_HOP_IP_INFO "%1\r\n"
IDS_REQ_TIMED_OUT "Request timed out.\r\n"
END

View file

@ -0,0 +1,32 @@
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_USAGE "\r\n\
Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name \r\n\r\n\
Options:\r\n\
-d Do not resolve addresses to hostnames.\r\n\
-h maximum_hops Maximum number of hops to search for target.\r\n\
-j host-list Loose source route along host-list.\r\n\
-w timeout Wait timeout milliseconds for each reply.\r\n\
-4 Force using IPv4.\r\n\
-6 Force using IPv6.\r\n\
\r\n"
IDS_INVALID_OPTION "%1 is not a valid command option.\r\n"
IDS_TRACE_INFO "\r\nTracing route to %1 [%2]\r\nover a maximum of %3!u! hops:\r\n\r\n"
IDS_TRACE_COMPLETE "\r\nTrace complete.\r\n"
IDS_UNABLE_RESOLVE "Unable to resolve target system name %1.\r\n"
IDS_GEN_FAILURE "General failure.\r\n"
IDS_HOP_COUNT "%1!3lu! %0\r\n"
IDS_HOP_TIME "%1!4lu! ms %0\r\n"
IDS_HOP_ZERO, " <1 ms %0\r\n"
IDS_TIMEOUT " * %0\r\n"
IDS_HOP_RES_INFO "%1 [%2]\r\n"
IDS_HOP_IP_INFO "%1\r\n"
IDS_REQ_TIMED_OUT "Request timed out.\r\n"
END

View file

@ -0,0 +1,32 @@
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_USAGE "\r\n\
Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name \r\n\r\n\
Options:\r\n\
-d Do not resolve addresses to hostnames.\r\n\
-h maximum_hops Maximum number of hops to search for target.\r\n\
-j host-list Loose source route along host-list.\r\n\
-w timeout Wait timeout milliseconds for each reply.\r\n\
-4 Force using IPv4.\r\n\
-6 Force using IPv6.\r\n\
\r\n"
IDS_INVALID_OPTION "%1 is not a valid command option.\r\n"
IDS_TRACE_INFO "\r\nTracing route to %1 [%2]\r\nover a maximum of %3!u! hops:\r\n\r\n"
IDS_TRACE_COMPLETE "\r\nTrace complete.\r\n"
IDS_UNABLE_RESOLVE "Unable to resolve target system name %1.\r\n"
IDS_GEN_FAILURE "General failure.\r\n"
IDS_HOP_COUNT "%1!3lu! %0\r\n"
IDS_HOP_TIME "%1!4lu! ms %0\r\n"
IDS_HOP_ZERO, " <1 ms %0\r\n"
IDS_TIMEOUT " * %0\r\n"
IDS_HOP_RES_INFO "%1 [%2]\r\n"
IDS_HOP_IP_INFO "%1\r\n"
IDS_REQ_TIMED_OUT "Request timed out.\r\n"
END

View file

@ -0,0 +1,32 @@
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_USAGE "\r\n\
Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name \r\n\r\n\
Options:\r\n\
-d Do not resolve addresses to hostnames.\r\n\
-h maximum_hops Maximum number of hops to search for target.\r\n\
-j host-list Loose source route along host-list.\r\n\
-w timeout Wait timeout milliseconds for each reply.\r\n\
-4 Force using IPv4.\r\n\
-6 Force using IPv6.\r\n\
\r\n"
IDS_INVALID_OPTION "%1 is not a valid command option.\r\n"
IDS_TRACE_INFO "\r\nTracing route to %1 [%2]\r\nover a maximum of %3!u! hops:\r\n\r\n"
IDS_TRACE_COMPLETE "\r\nTrace complete.\r\n"
IDS_UNABLE_RESOLVE "Unable to resolve target system name %1.\r\n"
IDS_GEN_FAILURE "General failure.\r\n"
IDS_HOP_COUNT "%1!3lu! %0\r\n"
IDS_HOP_TIME "%1!4lu! ms %0\r\n"
IDS_HOP_ZERO, " <1 ms %0\r\n"
IDS_TIMEOUT " * %0\r\n"
IDS_HOP_RES_INFO "%1 [%2]\r\n"
IDS_HOP_IP_INFO "%1\r\n"
IDS_REQ_TIMED_OUT "Request timed out.\r\n"
END

View file

@ -0,0 +1,32 @@
LANGUAGE LANG_ALBANIAN, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_USAGE "\r\n\
Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name \r\n\r\n\
Options:\r\n\
-d Do not resolve addresses to hostnames.\r\n\
-h maximum_hops Maximum number of hops to search for target.\r\n\
-j host-list Loose source route along host-list.\r\n\
-w timeout Wait timeout milliseconds for each reply.\r\n\
-4 Force using IPv4.\r\n\
-6 Force using IPv6.\r\n\
\r\n"
IDS_INVALID_OPTION "%1 is not a valid command option.\r\n"
IDS_TRACE_INFO "\r\nTracing route to %1 [%2]\r\nover a maximum of %3!u! hops:\r\n\r\n"
IDS_TRACE_COMPLETE "\r\nTrace complete.\r\n"
IDS_UNABLE_RESOLVE "Unable to resolve target system name %1.\r\n"
IDS_GEN_FAILURE "General failure.\r\n"
IDS_HOP_COUNT "%1!3lu! %0\r\n"
IDS_HOP_TIME "%1!4lu! ms %0\r\n"
IDS_HOP_ZERO, " <1 ms %0\r\n"
IDS_TIMEOUT " * %0\r\n"
IDS_HOP_RES_INFO "%1 [%2]\r\n"
IDS_HOP_IP_INFO "%1\r\n"
IDS_REQ_TIMED_OUT "Request timed out.\r\n"
END

View file

@ -0,0 +1,32 @@
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_USAGE "\r\n\
Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name \r\n\r\n\
Options:\r\n\
-d Do not resolve addresses to hostnames.\r\n\
-h maximum_hops Maximum number of hops to search for target.\r\n\
-j host-list Loose source route along host-list.\r\n\
-w timeout Wait timeout milliseconds for each reply.\r\n\
-4 Force using IPv4.\r\n\
-6 Force using IPv6.\r\n\
\r\n"
IDS_INVALID_OPTION "%1 is not a valid command option.\r\n"
IDS_TRACE_INFO "\r\nTracing route to %1 [%2]\r\nover a maximum of %3!u! hops:\r\n\r\n"
IDS_TRACE_COMPLETE "\r\nTrace complete.\r\n"
IDS_UNABLE_RESOLVE "Unable to resolve target system name %1.\r\n"
IDS_GEN_FAILURE "General failure.\r\n"
IDS_HOP_COUNT "%1!3lu! %0\r\n"
IDS_HOP_TIME "%1!4lu! ms %0\r\n"
IDS_HOP_ZERO, " <1 ms %0\r\n"
IDS_TIMEOUT " * %0\r\n"
IDS_HOP_RES_INFO "%1 [%2]\r\n"
IDS_HOP_IP_INFO "%1\r\n"
IDS_REQ_TIMED_OUT "Request timed out.\r\n"
END

View file

@ -0,0 +1,32 @@
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_USAGE "\r\n\
Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name \r\n\r\n\
Options:\r\n\
-d Do not resolve addresses to hostnames.\r\n\
-h maximum_hops Maximum number of hops to search for target.\r\n\
-j host-list Loose source route along host-list.\r\n\
-w timeout Wait timeout milliseconds for each reply.\r\n\
-4 Force using IPv4.\r\n\
-6 Force using IPv6.\r\n\
\r\n"
IDS_INVALID_OPTION "%1 is not a valid command option.\r\n"
IDS_TRACE_INFO "\r\nTracing route to %1 [%2]\r\nover a maximum of %3!u! hops:\r\n\r\n"
IDS_TRACE_COMPLETE "\r\nTrace complete.\r\n"
IDS_UNABLE_RESOLVE "Unable to resolve target system name %1.\r\n"
IDS_GEN_FAILURE "General failure.\r\n"
IDS_HOP_COUNT "%1!3lu! %0\r\n"
IDS_HOP_TIME "%1!4lu! ms %0\r\n"
IDS_HOP_ZERO, " <1 ms %0\r\n"
IDS_TIMEOUT " * %0\r\n"
IDS_HOP_RES_INFO "%1 [%2]\r\n"
IDS_HOP_IP_INFO "%1\r\n"
IDS_REQ_TIMED_OUT "Request timed out.\r\n"
END

View file

@ -0,0 +1,32 @@
LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_USAGE "\r\n\
Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name \r\n\r\n\
Options:\r\n\
-d Do not resolve addresses to hostnames.\r\n\
-h maximum_hops Maximum number of hops to search for target.\r\n\
-j host-list Loose source route along host-list.\r\n\
-w timeout Wait timeout milliseconds for each reply.\r\n\
-4 Force using IPv4.\r\n\
-6 Force using IPv6.\r\n\
\r\n"
IDS_INVALID_OPTION "%1 is not a valid command option.\r\n"
IDS_TRACE_INFO "\r\nTracing route to %1 [%2]\r\nover a maximum of %3!u! hops:\r\n\r\n"
IDS_TRACE_COMPLETE "\r\nTrace complete.\r\n"
IDS_UNABLE_RESOLVE "Unable to resolve target system name %1.\r\n"
IDS_GEN_FAILURE "General failure.\r\n"
IDS_HOP_COUNT "%1!3lu! %0\r\n"
IDS_HOP_TIME "%1!4lu! ms %0\r\n"
IDS_HOP_ZERO, " <1 ms %0\r\n"
IDS_TIMEOUT " * %0\r\n"
IDS_HOP_RES_INFO "%1 [%2]\r\n"
IDS_HOP_IP_INFO "%1\r\n"
IDS_REQ_TIMED_OUT "Request timed out.\r\n"
END

View file

@ -0,0 +1,32 @@
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
STRINGTABLE
BEGIN
IDS_USAGE "\r\n\
Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name \r\n\r\n\
Options:\r\n\
-d Do not resolve addresses to hostnames.\r\n\
-h maximum_hops Maximum number of hops to search for target.\r\n\
-j host-list Loose source route along host-list.\r\n\
-w timeout Wait timeout milliseconds for each reply.\r\n\
-4 Force using IPv4.\r\n\
-6 Force using IPv6.\r\n\
\r\n"
IDS_INVALID_OPTION "%1 is not a valid command option.\r\n"
IDS_TRACE_INFO "\r\nTracing route to %1 [%2]\r\nover a maximum of %3!u! hops:\r\n\r\n"
IDS_TRACE_COMPLETE "\r\nTrace complete.\r\n"
IDS_UNABLE_RESOLVE "Unable to resolve target system name %1.\r\n"
IDS_GEN_FAILURE "General failure.\r\n"
IDS_HOP_COUNT "%1!3lu! %0\r\n"
IDS_HOP_TIME "%1!4lu! ms %0\r\n"
IDS_HOP_ZERO, " <1 ms %0\r\n"
IDS_TIMEOUT " * %0\r\n"
IDS_HOP_RES_INFO "%1 [%2]\r\n"
IDS_HOP_IP_INFO "%1\r\n"
IDS_REQ_TIMED_OUT "Request timed out.\r\n"
END

View file

@ -0,0 +1,32 @@
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
STRINGTABLE
BEGIN
IDS_USAGE "\r\n\
Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name \r\n\r\n\
Options:\r\n\
-d Do not resolve addresses to hostnames.\r\n\
-h maximum_hops Maximum number of hops to search for target.\r\n\
-j host-list Loose source route along host-list.\r\n\
-w timeout Wait timeout milliseconds for each reply.\r\n\
-4 Force using IPv4.\r\n\
-6 Force using IPv6.\r\n\
\r\n"
IDS_INVALID_OPTION "%1 is not a valid command option.\r\n"
IDS_TRACE_INFO "\r\nTracing route to %1 [%2]\r\nover a maximum of %3!u! hops:\r\n\r\n"
IDS_TRACE_COMPLETE "\r\nTrace complete.\r\n"
IDS_UNABLE_RESOLVE "Unable to resolve target system name %1.\r\n"
IDS_GEN_FAILURE "General failure.\r\n"
IDS_HOP_COUNT "%1!3lu! %0\r\n"
IDS_HOP_TIME "%1!4lu! ms %0\r\n"
IDS_HOP_ZERO, " <1 ms %0\r\n"
IDS_TIMEOUT " * %0\r\n"
IDS_HOP_RES_INFO "%1 [%2]\r\n"
IDS_HOP_IP_INFO "%1\r\n"
IDS_REQ_TIMED_OUT "Request timed out.\r\n"
END