Ethereal-users: Re: [Ethereal-users] extension headers ipv6

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Guy Harris <guy@xxxxxxxxxx>
Date: Thu, 31 Oct 2002 11:34:30 -0800
On Wed, Oct 30, 2002 at 12:43:23PM -0800, Michele Bustos wrote:
> here tis! (.enc)

Well, at least as I read section 3.1 of RFC 2463 "Internet Control
Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6)
Specification":

	3.1 Destination Unreachable Message
        
	       0                   1                   2                   3
	       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
	      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	      |     Type      |     Code      |          Checksum             |
	      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	      |                             Unused                            |
	      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	      |                    As much of invoking packet                 |
	      +                as will fit without the ICMPv6 packet          + 
	      |                exceeding the minimum IPv6 MTU [IPv6]          |

the packet is, if not malformed, at least not in the *spirit* of RFC
2463, as the number of bytes of invoking packet is 0 - and I think a bit
more of the packet that caused the Destination Unreachable message to be
sent would have fit within the message.

In fact, given that section 3.1 also says

   Upper layer notification

   A node receiving the ICMPv6 Destination Unreachable message MUST
   notify the upper-layer process.

but it probably *can't* notify the upper-layer process without having,
at minimum, enough of the invoking packet to show to show the
destination address of the invoking packet and the source TCP or UDP
port of the invoking packet - otherwise, all the node receiving the
Destination Unreachable message knows is that some packet it sent out
didn't manage to reach its destination because the machine sending the
message didn't know how to route the packet any further; it doesn't know
what that destination *was*.