Add support for ICMPv6 messages indicating a parameter problem related

to an unrecognized next header.

MFC after:		2 weeks
This commit is contained in:
Michael Tuexen 2019-07-16 12:57:59 +00:00
parent 64694fdcc0
commit 1f69b3fb55
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=350028
2 changed files with 10 additions and 2 deletions

View File

@ -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,

View File

@ -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 *type, u_char *code)
*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;