ip6: fix l4 checksum with hop-by-hop header 15/28315/1
authorMatthew Smith <mgsmith@netgate.com>
Wed, 5 Feb 2020 17:46:40 +0000 (11:46 -0600)
committerAndrew Yourtchenko <ayourtch@gmail.com>
Wed, 12 Aug 2020 15:59:46 +0000 (15:59 +0000)
commit82c4eac772abfaed5e9fef2687bede51f498881a
tree4239fd159e4b5dfed4c855987599faa17302ba61
parent9a91d62793a24dfd4f9830526c2e26f932395e70
ip6: fix l4 checksum with hop-by-hop header

L4 checksums for IPv6 should be calculated using a pseudo header that
includes the source/destination addresses, payload length, and payload
protocol.

ip6_tcp_udp_icmp_compute_checksum() was using the payload length and
protocol from the IPv6 header. If there is a hop-by-hop header (or any
other extension header), the payload length used for the pseudo header
should only include the upper layer header and payload and not the
extension header bytes. Same deal with the protocol, the upper layer
next header value should be used instead of the extension header.

Type: fix
Fixes: cb9cadad57

Change-Id: Ifa2c9ad41c0fc4eea674f0671255b637c8e01f71
Signed-off-by: Matthew Smith <mgsmith@netgate.com>
(cherry picked from commit 97677a26f7c857e7ee0acbdb2c13eef214aa70a8)
src/vnet/ip/ip6_forward.c