On Fri, Apr 22, 2016 at 10:22:56PM +1000, Simon Horman wrote:
> When using masked actions the ipv6_proto field of an action
> to set IPv6 fields may be zero rather than the prevailing protocol
> which will result in skipping checksum recalculation.
>
> This patch resolves the problem by relying on the protocol
> in the packet rather than that in the set field action.
>
> A similar fix for the kernel datapath has been accepted into David Miller's
> 'net' tree as b4f70527f052 ("openvswitch: use flow protocol when
> recalculating ipv6 checksums").
>
> Cc: Jarno Rajahalme <[email protected]>
> Fixes: 6d670e7f0d45 ("lib/odp: Masked set action execution and printing.")
> Signed-off-by: Simon Horman <[email protected]>
> ---
> While preparing this I noticed that there does seem to be some scope
> to consolidate packet_rh_present() and part of miniflow_extract().
>
> v2
> * Updated changelog to refer to protocol in packet, as this patch does,
> rather than the flow key, which the kernel datapath variant of the patch
> does. This was a copy-paste error in preparing the changelog.
GCC 4.9.1 gives me the following error:
../lib/packets.c: In function 'packet_set_ipv6':
../lib/packets.c:951:9: error: 'proto' may be used uninitialized in this
function [-Werror=maybe-uninitialized]
packet_update_csum128(packet, proto, addr, new_addr);
^
../lib/packets.c:1018:13: note: 'proto' was declared here
uint8_t proto;
^
Other than that, this seems like a good bug fix, thank you!
Acked-by: Ben Pfaff <[email protected]>
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev