summaryrefslogtreecommitdiff
path: root/.cirrus.yml
diff options
context:
space:
mode:
authorIlya Maximets <i.maximets@ovn.org>2019-10-01 18:18:23 +0300
committerIlya Maximets <i.maximets@ovn.org>2019-10-10 11:11:00 +0200
commit361a47d669751a936d389d45cc8ffcb3ef66499d (patch)
tree60f3e8c7caed4ca57a1450feca641488d73f329a /.cirrus.yml
parent8009785273759827da995f9dde7d638c5f2bf0e5 (diff)
downloadopenvswitch-361a47d669751a936d389d45cc8ffcb3ef66499d.tar.gz
flow: Fix using pointer to member of packed struct icmp6_hdr.
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.maximets@ovn.org> Acked-by: William Tu <u9012063@gmail.com> Acked-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to '.cirrus.yml')
0 files changed, 0 insertions, 0 deletions