Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 Jul 2019 12:58:00 +0000 (UTC)
From:      Michael Tuexen <tuexen@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r350028 - head/usr.sbin/traceroute6
Message-ID:  <201907161258.x6GCw0Fc006854@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: tuexen
Date: Tue Jul 16 12:57:59 2019
New Revision: 350028
URL: https://svnweb.freebsd.org/changeset/base/350028

Log:
  Add support for ICMPv6 messages indicating a parameter problem related
  to an unrecognized next header.
  
  MFC after:		2 weeks

Modified:
  head/usr.sbin/traceroute6/traceroute6.8
  head/usr.sbin/traceroute6/traceroute6.c

Modified: head/usr.sbin/traceroute6/traceroute6.8
==============================================================================
--- head/usr.sbin/traceroute6/traceroute6.8	Tue Jul 16 12:38:17 2019	(r350027)
+++ head/usr.sbin/traceroute6/traceroute6.8	Tue Jul 16 12:57:59 2019	(r350028)
@@ -29,7 +29,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd May 2, 2018
+.Dd July 16, 2019
 .Dt TRACEROUTE6 8
 .Os
 .\"
@@ -172,6 +172,8 @@ Destination Unreachable - Administratively Prohibited.
 Destination Unreachable - Not a Neighbour.
 .It !A
 Destination Unreachable - Address Unreachable.
+.It !H
+Parameter Problem - Unrecognized Next Header Type.
 .It !\&
 This is printed if the hop limit is <= 1 on a port unreachable message.
 This means that the packet got to the destination,

Modified: head/usr.sbin/traceroute6/traceroute6.c
==============================================================================
--- head/usr.sbin/traceroute6/traceroute6.c	Tue Jul 16 12:38:17 2019	(r350027)
+++ head/usr.sbin/traceroute6/traceroute6.c	Tue Jul 16 12:57:59 2019	(r350028)
@@ -972,6 +972,10 @@ main(int argc, char *argv[])
 							++got_there;
 							break;
 						}
+					} else if (type == ICMP6_PARAM_PROB &&
+					    code == ICMP6_PARAMPROB_NEXTHEADER) {
+						printf(" !H");
+						++got_there;
 					} else if (type == ICMP6_ECHO_REPLY) {
 						if (rcvhlim >= 0 &&
 						    rcvhlim <= 1)
@@ -1345,7 +1349,9 @@ packet_ok(struct msghdr *mhdr, int cc, int seq, u_char
 	*code = icp->icmp6_code;
 	if ((*type == ICMP6_TIME_EXCEEDED &&
 	    *code == ICMP6_TIME_EXCEED_TRANSIT) ||
-	    (*type == ICMP6_DST_UNREACH)) {
+	    (*type == ICMP6_DST_UNREACH) ||
+	    (*type == ICMP6_PARAM_PROB &&
+	    *code == ICMP6_PARAMPROB_NEXTHEADER)) {
 		struct ip6_hdr *hip;
 		struct icmp6_hdr *icmp;
 		struct sctp_init_chunk *init;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201907161258.x6GCw0Fc006854>