> On Jul 13, 2016, at 12:36 PM, Ben Pfaff <b...@ovn.org> wrote:
> 
> On Tue, Jul 12, 2016 at 07:26:29PM +0800, Zong Kai Li wrote:
>> On Tue, Jul 12, 2016 at 2:56 PM, Justin Pettit <jpet...@ovn.org> wrote:
>>> Rename "compose_nd" and "compose_na" to "compose_nd_sol" and
>>> "compose_nd_adv", respecively, to be clearer about their functionality.
>>> Also change the source and destination IPv6 addresses to take
>>> "struct in6_addr" arguments, which are more common in the code base.
>>> 
>>> Signed-off-by: Justin Pettit <jpet...@ovn.org>
>>> ---
>> 
>>>     eth_compose(b, eth_dst, eth_src, ETH_TYPE_IPV6, IPV6_HEADER_LEN);
>>> -    na = compose_ipv6(b, IPPROTO_ICMPV6, ipv6_src, ipv6_dst, 0, 0, 255,
>>> -                      ND_MSG_LEN + ND_OPT_LEN);
>>> +    na = compose_ipv6(b, IPPROTO_ICMPV6,
>>> +                      ALIGNED_CAST(ovs_be32 *, ipv6_src->s6_addr),
>>> +                      ALIGNED_CAST(ovs_be32 *, ipv6_dst->s6_addr),
>>> +                      0, 0, 255, ND_MSG_LEN + ND_OPT_LEN);
>>> 
>> 
>> Hi, Justin. It's quite a long time to wait support for IPv6, but I
>> think it worth. Thanks. :)
>> 
>> About using ALIGNED_CAST, would you mind checking
>> http://patchwork.ozlabs.org/patch/632026/ ?
>> Ben has a comment said "Using ALIGNED_CAST does not solve a problem,
>> it only suppresses a warning.".
>> So I'm not sure will this be a good way to cleanup.
> 
> Yes, I agree.
> 
> Here is a more detailed explanation.  I guess that most people reading
> this email know that RISC machines fault for misaligned accesses.  In
> some cases, 32-bit objects inside packets will be aligned only to a
> 16-bit boundary.  Thus, we typically use types like
> ovs_16aligned_in6_addr to make this obvious and harder to get wrong.
> GCC will warn for a cast from a type that requires less alignment
> (e.g. 16-bit for ovs_16aligned_in6_addr) to a type that requires more
> alignment (e.g. 32-bit for ovs_be32).  We can use ALIGNED_CAST to
> suppress this if we know that the object is actually correctly aligned
> for the more strictly aligned type, but if this is not the case then it
> does not solve any problem, it only suppresses a warning and there is
> still a time bomb hidden in the code for RISC architectures.

Good point.  I'll send out a v2.  We'll see if I got it right.  :-)

--Justin


_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to