summaryrefslogtreecommitdiffstats
path: root/contrib/traceroute
diff options
context:
space:
mode:
authordwmalone <dwmalone@FreeBSD.org>2006-06-13 14:59:07 +0000
committerdwmalone <dwmalone@FreeBSD.org>2006-06-13 14:59:07 +0000
commit929e55d609f0bfaa023e5303e32bad051f2e2d62 (patch)
tree89a238647fe11051d26d922f4581e24f2737557d /contrib/traceroute
parent0cf435f0166917eec5064b5dafbccc3b2dbb0dca (diff)
downloadFreeBSD-src-929e55d609f0bfaa023e5303e32bad051f2e2d62.zip
FreeBSD-src-929e55d609f0bfaa023e5303e32bad051f2e2d62.tar.gz
Make traceroute decode all the ICMP unreachable messages defined
in http://www.iana.org/assignments/icmp-parameters. Thankfully IANA's list aggrees with <netinet/ip_icmp.h>. I've tried to do this in a way which is mostly consistent with tcptraceroute and Debian's version of traceroute. However, sometimes a letter is used twice by these versions, so I've gone with: LBL tcptr Debian (chosen) ICMP_UNREACH_NET !N !N !N !N ICMP_UNREACH_HOST !H !H !H !H ICMP_UNREACH_PROTOCOL !P !P !P !P ICMP_UNREACH_PORT ! !p ! ! ICMP_UNREACH_NEEDFRAG !F-%d !F !F-<%d> !F-<%d> ICMP_UNREACH_SRCFAIL !S !S !S !S ICMP_UNREACH_NET_UNKNOWN !<%d> !U !<%d> !U ICMP_UNREACH_HOST_UNKNOWN !<%d> !U !<%d> !W ICMP_UNREACH_ISOLATED !<%d> !I !I !I ICMP_UNREACH_NET_PROHIB !<%d> !A !A !A ICMP_UNREACH_HOST_PROHIB !<%d> !C !C !Z ICMP_UNREACH_TOSNET !<%d> !T !T !Q ICMP_UNREACH_TOSHOST !<%d> !T !T !T ICMP_UNREACH_FILTER_PROHIB !X !A !A !X ICMP_UNREACH_HOST_PRECEDENCE !V !<%d> !V !V ICMP_UNREACH_PRECEDENCE_CUTOFF !C !<%d> !C !C Graham Wilson is planning to use the same codes in Debian's version. MFC after: 3 weeks
Diffstat (limited to 'contrib/traceroute')
-rw-r--r--contrib/traceroute/traceroute.814
-rw-r--r--contrib/traceroute/traceroute.c35
2 files changed, 49 insertions, 0 deletions
diff --git a/contrib/traceroute/traceroute.8 b/contrib/traceroute/traceroute.8
index 3920d2a..710ecde 100644
--- a/contrib/traceroute/traceroute.8
+++ b/contrib/traceroute/traceroute.8
@@ -372,6 +372,20 @@ or
(source route failed),
.B !F\-<pmtu>
(fragmentation needed \- the RFC1191 Path MTU Discovery value is displayed),
+.B !U
+or
+.B !W
+(destination network/host unknown),
+.B !I
+(source host is isolated),
+.B !A
+(communication with destination network administratively prohibited),
+.B !Z
+(communication with destination host administratively prohibited),
+.B !Q
+(for this ToS the destination network is unreachable),
+.B !T
+(for this ToS the destination host is unreachable),
.B !X
(communication administratively prohibited),
.B !V
diff --git a/contrib/traceroute/traceroute.c b/contrib/traceroute/traceroute.c
index e6182f4..fd4165a 100644
--- a/contrib/traceroute/traceroute.c
+++ b/contrib/traceroute/traceroute.c
@@ -1017,6 +1017,41 @@ main(int argc, char **argv)
Printf(" !S");
break;
+ case ICMP_UNREACH_NET_UNKNOWN:
+ ++unreachable;
+ Printf(" !U");
+ break;
+
+ case ICMP_UNREACH_HOST_UNKNOWN:
+ ++unreachable;
+ Printf(" !W");
+ break;
+
+ case ICMP_UNREACH_ISOLATED:
+ ++unreachable;
+ Printf(" !I");
+ break;
+
+ case ICMP_UNREACH_NET_PROHIB:
+ ++unreachable;
+ Printf(" !A");
+ break;
+
+ case ICMP_UNREACH_HOST_PROHIB:
+ ++unreachable;
+ Printf(" !Z");
+ break;
+
+ case ICMP_UNREACH_TOSNET:
+ ++unreachable;
+ Printf(" !Q");
+ break;
+
+ case ICMP_UNREACH_TOSHOST:
+ ++unreachable;
+ Printf(" !T");
+ break;
+
case ICMP_UNREACH_FILTER_PROHIB:
++unreachable;
Printf(" !X");
OpenPOWER on IntegriCloud