On Wed, Mar 7, 2012 at 2:35 PM, Ben Pfaff <b...@nicira.com> wrote:
> On Wed, Mar 07, 2012 at 02:26:46PM -0800, Jesse Gross wrote:
>> On Wed, Mar 7, 2012 at 10:46 AM, Ben Pfaff <b...@nicira.com> wrote:
>> > On Tue, Mar 06, 2012 at 03:40:51PM -0800, Jesse Gross wrote:
>> >> When modifying IP addresses or ports on a UDP packet we don't
>> >> correctly follow the rules for unchecksummed packets.  This meant
>> >> that packets without a checksum can be given a incorrect new checksum
>> >> and packets with a checksum can become marked as being unchecksummed.
>> >> This fixes it to handle those requirements.
>> >>
>> >> Bug #8937
>> >>
>> >> Signed-off-by: Jesse Gross <je...@nicira.com>
>> >> ---
>> >> v2: CSUM_MANGLED_0 was not introduced until 2.6.20
>> >
>> > It's not obvious to me why the UDP cases in this file need a check for
>> > OVS_CSUM_PARTIAL but the TCP cases do not.
>>
>> There are two things:
>>  * inet_proto_csum_replaceX includes a check for CHECKSUM_PARTIAL and
>> it is no-op if it's an offloaded checksum and the modified part is not
>> in the pseudoheader, so both TCP and UDP do handle this (and did
>> before this patch).
>>  * When using CHECKSUM_PARTIAL with UDP the checksum of the
>> pseudoheader is stored in the checksum field without using
>> CSUM_MANGLED_0 so it's possible for it to have the value 0 and be
>> interpreted as an unchecksummed packet.  Actual unchecksummed packets
>> won't use CHECKSUM_PARTIAL so we know the we always need to update
>> these.
>
> Thank you for the explanations.  After staring at the code and the
> changes for a while longer, it all makes sense.
>
> Acked-by: Ben Pfaff <b...@nicira.com>
> (again)

Thanks, pushed to master and branches 1.5 and 1.6.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to