CVSROOT: /cvs Module name: src Changes by: [email protected] 2011/10/16 15:07:19
Modified files:
sys/netinet : ip_carp.c
Log message:
Use m_pullup() instead of IP6_EXTHDR_GET() to get the carp header
in the v6 input path. IP6_EXTHDR_GET() internally uses m_pulldown(),
which might return a pointer to a different mbuf in the chain.
In this case, carp_cksum() will be called with the wrong mbuf.
This fixes occasional checksum mismatches.
Problem found and initial fix by stsp@
OK stsp@
