On 09.10.2019 20:18, Ben Pfaff wrote:
On Wed, Oct 09, 2019 at 06:54:29PM +0200, Ilya Maximets wrote:
On 08.10.2019 18:55, William Tu wrote:
On Tue, Oct 01, 2019 at 08:04:00PM +0300, Ilya Maximets wrote:
OVS has no structure definition for ICMPv6 header with additional
data. More precisely, it has, but this structure named as
'icmp6_error_header' and only suitable to store error related
extended information.  'flow_compose_l4' stores additional
information in reserved bits by using system defined structure
'icmp6_hdr', which is marked as 'packed' and this leads to
build failure with gcc >= 9:

    lib/flow.c:3041:34: error:
      taking address of packed member of 'struct icmp6_hdr' may result
      in an unaligned pointer value [-Werror=address-of-packed-member]

          uint32_t *reserved = &icmp->icmp6_dataun.icmp6_un_data32[0];
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Fix that by renaming 'icmp6_error_header' to 'icmp6_data_header'
and allowing it to store not only errors, but any type of additional
information by analogue with 'struct icmp6_hdr'.
All the usages of 'struct icmp6_hdr' replaced with this new structure.
Removed redundant conversions between network and host representations.
Now fields are always in be.

This also, probably, makes flow_compose_l4 more robust by avoiding
possible unaligned accesses to 32 bit value.

Fixes: 9b2b84973db7 ("Support for match & set ICMPv6 reserved and options type 
fields")
Signed-off-by: Ilya Maximets <i.maxim...@ovn.org>

Looks good to me! Thanks.
Tested on travis and cirrus.

Acked-by: William Tu <u9012...@gmail.com>

Thanks, William!

Ben, could you, please, take a look at this too?

I just want to be sure that this change is aligned with
expectations from the network header structures in OVS.

It seems like a positive change.  We used to have periodic problems with
misaligned accesses on RISC architectures and moving to the 16aligned_*
types, while annoying in some ways, has avoided those.  This change is
helpful because it updates a struct that somehow had been missed
previously.

Acked-by: Ben Pfaff <b...@ovn.org>


Thanks! I applied this to master and backported to 2.12 with
a slight addition for OVN code.
I'll send a patch for OVN repo with these changes.

Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to