svn commit: r351978 - stable/12/usr.sbin/traceroute6

Michael Tuexen tuexen at FreeBSD.org
Sat Sep 7 10:57:48 UTC 2019


Author: tuexen
Date: Sat Sep  7 10:57:47 2019
New Revision: 351978
URL: https://svnweb.freebsd.org/changeset/base/351978

Log:
  MFC 350028:
  
  dd support for ICMPv6 messages indicating a parameter problem related
  to an unrecognized next header.

Modified:
  stable/12/usr.sbin/traceroute6/traceroute6.8
  stable/12/usr.sbin/traceroute6/traceroute6.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/usr.sbin/traceroute6/traceroute6.8
==============================================================================
--- stable/12/usr.sbin/traceroute6/traceroute6.8	Sat Sep  7 10:56:38 2019	(r351977)
+++ stable/12/usr.sbin/traceroute6/traceroute6.8	Sat Sep  7 10:57:47 2019	(r351978)
@@ -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: stable/12/usr.sbin/traceroute6/traceroute6.c
==============================================================================
--- stable/12/usr.sbin/traceroute6/traceroute6.c	Sat Sep  7 10:56:38 2019	(r351977)
+++ stable/12/usr.sbin/traceroute6/traceroute6.c	Sat Sep  7 10:57:47 2019	(r351978)
@@ -951,6 +951,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)
@@ -1324,7 +1328,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;


More information about the svn-src-stable-12 mailing list