On Fri, Jan 06, 2012 at 04:01:52PM -0800, Pravin B Shelar wrote:
> Rather than silently skipping ipv6 action generation, following patch
> generates OVS_ACTION_ATTR_SET action for ipv6. Datapath which do not
> support ipv6 action can reject this action.

What is the reason for the changes to ovs_to_odp_frag()?  I guess the
newer version handles the common case first, which is good, but is
there another reason?  The logic is equivalent for valid nw_frag
values, right?  Either way, the change in parameter name is an
improvement, thanks.

ipv6_addr_is_zero() will misidentify IPV6 addresses whose 32-bit
components sum to 0 as being all-zero.  It will cause a bus error on
RISC architectures if its argument is not 32-bit aligned, which could
happen if in6_addr has only a byte array member.  I'd do something
like this:

    static inline int ipv6_addr_is_zero(const struct in6_addr *addr)
    {
    #ifdef s6_addr32
        return !(addr->s6_addr32[0] || addr->s6_addr32[1] ||
                 addr->s6_addr32[2] || addr->s6_addr32[3]);
    #else
        return is_all_zeros(addr, 16);
    #endif
    }

You could use | instead of || if you feel inclined.

But I'm trying to remember why we check that the source and dest are
nonzero anyway.  I think it must be to make sure that we really have
an IP header.  I think we could do that less expensively by checking
that nw_proto is nonzero, since a protocol of 0 isn't useful anyway.

Do we need any documentation updates?  I think we should at least
mention in ovs-ofctl.8 that mod_nw_tos works with IPv6, and perhaps
also add a note to NEWS.

Thanks,

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

Reply via email to