CVSROOT: /cvs
Module name: src
Changes by: [email protected] 2025/10/07 01:52:46
Modified files:
sys/net : if_veb.c
Log message:
unbreak vport to vport communication on the same veb.
veb is now set up to support port interfaces that can do checksum
offloading on behalf of the network stack (or virtual machines via
tun_hdr offloads). to allow packets leaving the kernel ip stack via
a vport interface to use hardware offloading, vport interfaces
advertise ip/tcp/udp offloads. veb then fixes up the packet if
the outgoing port doesn't support the necessary offload.
however, veb and vport can be used to support communication between
rdomains. this means packets can leave the stack via a vport interface
in one rdomain, and then enter the stack again on another vport.
in this situation the packets (re)entering the stack don't have
checksums calculated because vport advertises csum offloads, so the
packets get dropped.
this has vport map the CSUM_OUT flags to CSUM_IN flags before pushing
the packets into the stack again, despite the checksums not being
calculated. this is modelled on the behaviour of lo(4) and tun(4)/
tap(4), and avoids the need for software checksum calculation
for packets that stay inside the kernel.
ok jmatthew@