On Thu, Jun 28, 2018 at 4:01 PM, Greg Rose <[email protected]> wrote:
> The key value is always zero in ip_tunnel_lookup() for all OVS
> tunnels but in received packets it is set. Just ignore it for
> the ip_tunnel_lookup() in the same manner as erspan_rcv().
>
> Fixes: 8e53509c ("gre: introduce native tunnel support for ERSPAN")
> Signed-off-by: Greg Rose <[email protected]>
> ---
> datapath/linux/compat/ip_gre.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/datapath/linux/compat/ip_gre.c b/datapath/linux/compat/ip_gre.c
> index df0217e..5670bdf 100644
> --- a/datapath/linux/compat/ip_gre.c
> +++ b/datapath/linux/compat/ip_gre.c
> @@ -272,7 +272,7 @@ static int __ipgre_rcv(struct sk_buff *skb, const struct
> tnl_ptk_info *tpi,
>
> iph = ip_hdr(skb);
> tunnel = ip_tunnel_lookup(itn, skb->dev->ifindex, tpi->flags,
> - iph->saddr, iph->daddr, tpi->key);
> + iph->saddr, iph->daddr, 0);
>
> if (tunnel) {
> if (__iptunnel_pull_header(skb, hdr_len, tpi->proto,
> --
> 1.8.3.1
>
looking at the rpl_ip_tunnel_lookup, how come we did not return the
collect_md_tun?
skip_key_lookup:
if (cand)
return cand;
+ t = rcu_dereference(itn->collect_md_tun);
+ if (t && t->dev->flags & IFF_UP)
return t;
if (itn->fb_tunnel_dev && itn->fb_tunnel_dev->flags & IFF_UP)
---
OVS is using the collect_md mode tunnel device.
The lookup can have key, and since there is no other gre tunnel device
has this key, it will in the end return the collect_md_tun device, which
is the "gre_sys"
Can you try adding the code above?
Thanks
William
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev