Hi Paolo:

Your commit:

commit 6e617de84e87d626d1e976fc30e1322239fd4d2d
Author: Paolo Abeni <pab...@redhat.com>
Date:   Wed Sep 20 18:26:53 2017 +0200

    net: avoid a full fib lookup when rp_filter is disabled.

breaks a test case that uses a veth pair in the same network namespace
but separate VRFs. This setup:

vrf add vrf0 table 1001
vrf add vrf1 table 1002

ip link add virt01 type veth peer name virt10
ip link set virt01 master vrf0
ip link set virt10 master vrf1

ip addr add 172.16.20.20/24 dev virt01
ip link set virt01 up

ip addr add 172.16.20.21/24 dev virt10
ip link set virt10 up

ping -c 1 -I vrf0 172.16.20.21

fails due to:

    if (inet_lookup_ifaddr_rcu(net, src))
       return -EINVAL;

in fib_validate_source.

David
#!/bin/sh

# vrf0 sends out packets with mpls labels
# vrf1 receives the labelled packets, pops the labels, and forwards to vrf2
# vrf2 receives the unlabelled packets and replies to vrf0

vrf add vrf0 table 1001
vrf add vrf1 table 1002
vrf add vrf2 table 1003

ip link add virt01 type veth peer name virt10
ip link set virt01 master vrf0
ip link set virt10 master vrf1

ip link add virt12 type veth peer name virt21
ip link set virt12 master vrf1
ip link set virt21 master vrf2

ip addr add 172.16.20.20/24 dev virt01
ip link set virt01 up

ip addr add 172.16.20.21/24 dev virt10
ip link set virt10 up
ip addr add 172.16.21.21/24 dev virt12
ip link set virt12 up

ip addr add 172.16.21.22/24 dev virt21
ip link set virt21 up

modprobe mpls_iptunnel

ip route add vrf vrf0 10.10.10.10/32 encap mpls 100 via inet 172.16.20.21 
ip route add vrf vrf0 172.16.21.0/24 via 172.16.20.21 

sysctl -w net.mpls.conf.virt10.input=1
sysctl -w net.mpls.platform_labels=1000
ip -f mpls route add 100 via inet 172.16.21.22 dev virt12

ip addr add 10.10.10.10/32 dev vrf2
ip route add vrf vrf2 172.16.20.0/24 via 172.16.21.21

ping -c 1 -I vrf0 10.10.10.10

netserver

cat <<EOF
# non-mpls
netperf -J vrf0 -c -C -H 172.16.21.22 -l 10 -t TCP_STREAM

# mpls (retry this with mpls_gso loaded)
netperf -J vrf0 -c -C -H 10.10.10.10 -l 10 -t TCP_STREAM
EOF

Reply via email to