Hi Joe,

On Wed, Dec 02, 2015 at 11:53:46PM -0800, Joe Stringer wrote:
> From: Joe Stringer <joestrin...@nicira.com>
> 
> IPv6 fragmentation functionality is not exported by most kernels, so
> backport this code from the upstream 4.3 development tree.
> 
> Signed-off-by: Joe Stringer <joestrin...@nicira.com>

[snip]

> diff --git a/datapath/linux/compat/ip6_output.c 
> b/datapath/linux/compat/ip6_output.c
> new file mode 100644
> index 000000000000..9d2fe46ef7ef
> --- /dev/null
> +++ b/datapath/linux/compat/ip6_output.c

[snip]

> +static u32 __ipv6_select_ident(struct net *net, u32 hashrnd,
> +                            const struct in6_addr *dst,
> +                            const struct in6_addr *src)
> +{
> +     u32 hash, id;
> +
> +     hash = __ipv6_addr_jhash(dst, hashrnd);
> +     hash = __ipv6_addr_jhash(src, hash);
> +     hash ^= net_hash_mix(net);
> +
> +     /* Treat id of 0 as unset and if we get 0 back from ip_idents_reserve,
> +      * set the hight order instead thus minimizing possible future
> +      * collisions.
> +      */
> +     id = rpl_ip_idents_reserve(hash, 1);
> +     if (unlikely(!id))
> +             id = 1 << 31;
> +
> +     return id;
> +}

In Linux v3.19 and v3.19.1 (but not v3.19.2+) __ipv6_select_ident was not
static and is declared in ipv6.h. I believe it is because of that that I am
seeing the following build error.

/home/horms/projects/openvswitch/openvswitch2/datapath/linux/ip6_output.c:93:12:
 error: conflicting types for ‘__ipv6_select_ident’
 static u32 __ipv6_select_ident(struct net *net, u32 hashrnd,

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

Reply via email to