[ovs-dev] [PATCH] odp-util: Handle ipv6 in set nw action.

Brian Haley brian.haley at hp.com
Mon Jan 9 15:10:41 UTC 2012


On 01/06/2012 07:01 PM, Pravin B Shelar wrote:
> --- a/lib/packets.h
> +++ b/lib/packets.h
> @@ -464,4 +464,14 @@ void *snap_compose(struct ofpbuf *, const uint8_t eth_dst[ETH_ADDR_LEN],
>                     const uint8_t eth_src[ETH_ADDR_LEN],
>                     unsigned int oui, uint16_t snap_type, size_t size);
>  
> +static inline int ipv6_addr_is_zero(const struct in6_addr *addr)
> +{
> +    const uint32_t *a = (const uint32_t *)&addr->s6_addr[0];
> +    int i, ret = 0;
> +
> +    for (i = 0; i < 4; i++) {
> +        ret += a[i];
> +    }
> +    return !ret;
> +}

There's already an IN6_IS_ADDR_UNSPECIFIED macro defined in in.h, which every
platform should have for RFC compliance.  Alternately, there's ipv6_addr_any()
in ipv6.h that defines an optimized Linux version:

static inline int ipv6_addr_any(const struct in6_addr *a)
{
        return (a->s6_addr32[0] | a->s6_addr32[1] |
                a->s6_addr32[2] | a->s6_addr32[3]) == 0;
}

-Brian



More information about the dev mailing list