]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Handle delayed checksums if needed in NAT64.
authorae <ae@FreeBSD.org>
Wed, 5 Aug 2020 09:16:35 +0000 (09:16 +0000)
committerae <ae@FreeBSD.org>
Wed, 5 Aug 2020 09:16:35 +0000 (09:16 +0000)
commit7c203d6b0963083927f376514e65bd1908e860b6
treef2b57e76d10e4326677c4d2b87b5b2e737c5a1fd
parentf34e7a3d7f604bd3bdbdb4e5558d3071627eaf53
Handle delayed checksums if needed in NAT64.

Upper level protocols defer checksums calculation in hope we have
checksums offloading in a network card. CSUM_DELAY_DATA flag is used
to determine that checksum calculation was deferred. And IP output
routine checks for this flag before pass mbuf to lower layer. Forwarded
packets have not this flag.

NAT64 uses checksums adjustment when it translates IP headers.
In most cases NAT64 is used for forwarded packets, but in case when it
handles locally originated packets we need to finish checksum calculation
that was deferred to correctly adjust it.

Add check for presence of CSUM_DELAY_DATA flag and finish checksum
calculation before adjustment.

Reported and tested by: Evgeniy Khramtsov <evgeniy at khramtsov org>
MFC after: 1 week
sys/netpfil/ipfw/nat64/nat64_translate.c