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
This commit is contained in:
parent
70df31f4de
commit
e4ad3d8dd8
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=159576
@ -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
|
||||
|
@ -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");
|
||||
|
Loading…
Reference in New Issue
Block a user