Wireshark-bugs: [Wireshark-bugs] [Bug 5252] New: IPv6 RH0: dest addr is to be used i.s.o. last R
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=5252

           Summary: IPv6 RH0: dest addr is to be used i.s.o. last RH
                    address when 0 segments remain
           Product: Wireshark
           Version: unspecified
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Minor
          Priority: Low
         Component: Wireshark
        AssignedTo: [email protected]
        ReportedBy: [email protected]


Created an attachment (id=5203)
 --> (https://bugs.wireshark.org/bugzilla/attachment.cgi?id=5203)
Two ICMPv6 messages with IPv6 having RH0 with 1 and 0 segments left.

Build Information:
Unspecified
--
>From Mike Cross <[email protected]> via wireshark-users:

One sentence summary: Why does Wireshark generate the ICMPv6 checksum based on
the routing header type 0 addresses if there are 0 segments remaining, since
the destination address of the ipv6 header field should be used instead?

I know that type 0 routing headers are deprecated.  I am just debugging packets
someone else generates.

RFC 2460 says down in 8.1

"If the IPv6 packet contains a Routing header, the Destination
Address used in the pseudo-header is that of the final
destination. At the originating node, that address will be in
the last element of the Routing header; at the recipient(s),
that address will be in the Destination Address field of the
IPv6 header."

In the first packet, I have an ICMPv6 packet with a routing header type 0 that
has a segment left.  Wireshark calculates the checksum based on the destination
address in the routing header.  Wireshark even overrides the destination IP
column value with the rh0 address. All of this is as I expect it to be.

In the second packet, though, there are 0 segments remaining.  Wireshark again
uses the last address in the routing header as the destination, but this I do
not expect.  The packet has already visited this segment, and I expect the
ICMPv6 checksum to be generated on the destination in the IPv6 header, not the
routing header.

Per the above specification quote, "at the recipient(s), that address will be
in the Destination Address field of the IPv6 header."  Since this packet has 0
segments remaining, surely it must be a recipient and should use the
destination address of the IPv6 header.  But Wireshark seems to still be using
the last address in the routing header, a segment which has already been
visited.

-- 
Configure bugmail: https://bugs.wireshark.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.