lkml.org 
[lkml]   [2020]   [Apr]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 003/168] net, ip_tunnel: fix interface lookup with no key
    Date
    From: William Dauchy <w.dauchy@criteo.com>

    commit 25629fdaff2ff509dd0b3f5ff93d70a75e79e0a1 upstream.

    when creating a new ipip interface with no local/remote configuration,
    the lookup is done with TUNNEL_NO_KEY flag, making it impossible to
    match the new interface (only possible match being fallback or metada
    case interface); e.g: `ip link add tunl1 type ipip dev eth0`

    To fix this case, adding a flag check before the key comparison so we
    permit to match an interface with no local/remote config; it also avoids
    breaking possible userland tools relying on TUNNEL_NO_KEY flag and
    uninitialised key.

    context being on my side, I'm creating an extra ipip interface attached
    to the physical one, and moving it to a dedicated namespace.

    Fixes: c54419321455 ("GRE: Refactor GRE tunneling code.")
    Signed-off-by: William Dauchy <w.dauchy@criteo.com>
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    net/ipv4/ip_tunnel.c | 6 +-----
    1 file changed, 1 insertion(+), 5 deletions(-)

    --- a/net/ipv4/ip_tunnel.c
    +++ b/net/ipv4/ip_tunnel.c
    @@ -142,11 +142,8 @@ struct ip_tunnel *ip_tunnel_lookup(struc
    cand = t;
    }

    - if (flags & TUNNEL_NO_KEY)
    - goto skip_key_lookup;
    -
    hlist_for_each_entry_rcu(t, head, hash_node) {
    - if (t->parms.i_key != key ||
    + if ((!(flags & TUNNEL_NO_KEY) && t->parms.i_key != key) ||
    t->parms.iph.saddr != 0 ||
    t->parms.iph.daddr != 0 ||
    !(t->dev->flags & IFF_UP))
    @@ -158,7 +155,6 @@ struct ip_tunnel *ip_tunnel_lookup(struc
    cand = t;
    }

    -skip_key_lookup:
    if (cand)
    return cand;


    \
     
     \ /
      Last update: 2020-04-28 20:56    [W:4.241 / U:0.324 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site