• wenxu's avatar
    ip_gre: Make none-tun-dst gre tunnel store tunnel info as metadat_dst in recv · c0d59da7
    wenxu authored
    Currently collect_md gre tunnel will store the tunnel info(metadata_dst)
    to skb_dst.
    And now the non-tun-dst gre tunnel already can add tunnel header through
    lwtunnel.
    
    When received a arp_request on the non-tun-dst gre tunnel. The packet of
    arp response will send through the non-tun-dst tunnel without tunnel info
    which will lead the arp response packet to be dropped.
    
    If the non-tun-dst gre tunnel also store the tunnel info as metadata_dst,
    The arp response packet will set the releted tunnel info in the
    iptunnel_metadata_reply.
    
    The following is the test script:
    
    ip netns add cl
    ip l add dev vethc type veth peer name eth0 netns cl
    
    ifconfig vethc 172.168.0.7/24 up
    ip l add dev tun1000 type gretap key 1000
    
    ip link add user1000 type vrf table 1
    ip l set user1000 up
    ip l set dev tun1000 master user1000
    ifconfig tun1000 10.0.1.1/24 up
    
    ip netns exec cl ifconfig eth0 172.168.0.17/24 up
    ip netns exec cl ip l add dev tun type gretap local 172.168.0.17 remote 172.168.0.7 key 1000
    ip netns exec cl ifconfig tun 10.0.1.7/24 up
    ip r r 10.0.1.7 encap ip id 1000 dst 172.168.0.17 key dev tun1000 table 1
    
    With this patch
    ip netns exec cl ping 10.0.1.1 can success
    Signed-off-by: default avatarwenxu <wenxu@ucloud.cn>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    c0d59da7
ip_gre.c 43.3 KB