diff options
author | Yi-Hung Wei <yihung.wei@gmail.com> | 2017-11-01 14:40:27 -0700 |
---|---|---|
committer | Ben Pfaff <blp@ovn.org> | 2017-11-02 11:23:38 -0700 |
commit | 274cd1f188de5d751ed014169dae54ed64e5c916 (patch) | |
tree | a1312a85d1bff6fde5e27635e241fdb19eff05f4 /lib/packets.h | |
parent | 36e6714054534b552413ba3b8e7eab49f965dc29 (diff) | |
download | openvswitch-274cd1f188de5d751ed014169dae54ed64e5c916.tar.gz |
packets: Fix C++ compilation issues when include packets.h
This patch fixes three C++ compilation errors when it includes
"lib/packets.h".
1) Fix in "include/openvswitch/util.h" is to avoid duplicated
named_member__ in struct pkt_metadata.
2) Fix in "lib/packets.h" is because designated initializers are not
implemented in GNU C++ [1].
3) Fix in "lib/util.h" is because __builtin_types_compatible_p and
__builtin_choose_expr are only supported in GCC. I use one solution
for C++ that is type-safe and works at compile time from [2].
[1]: https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html
[2]: https://goo.gl/xNe48A
Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'lib/packets.h')
-rw-r--r-- | lib/packets.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/packets.h b/lib/packets.h index c5915a0f8..461f488a8 100644 --- a/lib/packets.h +++ b/lib/packets.h @@ -1107,7 +1107,9 @@ static inline bool ipv6_addr_is_multicast(const struct in6_addr *ip) { static inline struct in6_addr in6_addr_mapped_ipv4(ovs_be32 ip4) { - struct in6_addr ip6 = { .s6_addr = { [10] = 0xff, [11] = 0xff } }; + struct in6_addr ip6; + memset(&ip6, 0, sizeof(ip6)); + ip6.s6_addr[10] = 0xff, ip6.s6_addr[11] = 0xff; memcpy(&ip6.s6_addr[12], &ip4, 4); return ip6; } |