Skip to content

Commit

Permalink
selftests: Add use case section to fcnal-test
Browse files Browse the repository at this point in the history
Add use case section to fcnal-test.

Initial test is VRF based with a bridge and vlans. The commands
stem from bug reports fixed by:

a173f06 ("netfilter: bridge: Don't sabotage nf_hook calls from an l3mdev")
cd64289 ("netfilter: bridge: Don't sabotage nf_hook calls for an l3mdev slave")

Signed-off-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David Ahern authored and David S. Miller committed Aug 3, 2019
1 parent db6641e commit 56eba15
Showing 1 changed file with 124 additions and 0 deletions.
124 changes: 124 additions & 0 deletions tools/testing/selftests/net/fcnal-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3247,6 +3247,126 @@ ipv6_netfilter()
ip6tables -F
}

################################################################################
# specific use cases

# VRF only.
# ns-A device enslaved to bridge. Verify traffic with and without
# br_netfilter module loaded. Repeat with SVI on bridge.
use_case_br()
{
setup "yes"

setup_cmd ip link set ${NSA_DEV} down
setup_cmd ip addr del dev ${NSA_DEV} ${NSA_IP}/24
setup_cmd ip -6 addr del dev ${NSA_DEV} ${NSA_IP6}/64

setup_cmd ip link add br0 type bridge
setup_cmd ip addr add dev br0 ${NSA_IP}/24
setup_cmd ip -6 addr add dev br0 ${NSA_IP6}/64 nodad

setup_cmd ip li set ${NSA_DEV} master br0
setup_cmd ip li set ${NSA_DEV} up
setup_cmd ip li set br0 up
setup_cmd ip li set br0 vrf ${VRF}

rmmod br_netfilter 2>/dev/null
sleep 5 # DAD

run_cmd ip neigh flush all
run_cmd ping -c1 -w1 -I br0 ${NSB_IP}
log_test $? 0 "Bridge into VRF - IPv4 ping out"

run_cmd ip neigh flush all
run_cmd ${ping6} -c1 -w1 -I br0 ${NSB_IP6}
log_test $? 0 "Bridge into VRF - IPv6 ping out"

run_cmd ip neigh flush all
run_cmd_nsb ping -c1 -w1 ${NSA_IP}
log_test $? 0 "Bridge into VRF - IPv4 ping in"

run_cmd ip neigh flush all
run_cmd_nsb ${ping6} -c1 -w1 ${NSA_IP6}
log_test $? 0 "Bridge into VRF - IPv6 ping in"

modprobe br_netfilter
if [ $? -eq 0 ]; then
run_cmd ip neigh flush all
run_cmd ping -c1 -w1 -I br0 ${NSB_IP}
log_test $? 0 "Bridge into VRF with br_netfilter - IPv4 ping out"

run_cmd ip neigh flush all
run_cmd ${ping6} -c1 -w1 -I br0 ${NSB_IP6}
log_test $? 0 "Bridge into VRF with br_netfilter - IPv6 ping out"

run_cmd ip neigh flush all
run_cmd_nsb ping -c1 -w1 ${NSA_IP}
log_test $? 0 "Bridge into VRF with br_netfilter - IPv4 ping in"

run_cmd ip neigh flush all
run_cmd_nsb ${ping6} -c1 -w1 ${NSA_IP6}
log_test $? 0 "Bridge into VRF with br_netfilter - IPv6 ping in"
fi

setup_cmd ip li set br0 nomaster
setup_cmd ip li add br0.100 link br0 type vlan id 100
setup_cmd ip li set br0.100 vrf ${VRF} up
setup_cmd ip addr add dev br0.100 172.16.101.1/24
setup_cmd ip -6 addr add dev br0.100 2001:db8:101::1/64 nodad

setup_cmd_nsb ip li add vlan100 link ${NSB_DEV} type vlan id 100
setup_cmd_nsb ip addr add dev vlan100 172.16.101.2/24
setup_cmd_nsb ip -6 addr add dev vlan100 2001:db8:101::2/64 nodad
setup_cmd_nsb ip li set vlan100 up
sleep 1

rmmod br_netfilter 2>/dev/null

run_cmd ip neigh flush all
run_cmd ping -c1 -w1 -I br0.100 172.16.101.2
log_test $? 0 "Bridge vlan into VRF - IPv4 ping out"

run_cmd ip neigh flush all
run_cmd ${ping6} -c1 -w1 -I br0.100 2001:db8:101::2
log_test $? 0 "Bridge vlan into VRF - IPv6 ping out"

run_cmd ip neigh flush all
run_cmd_nsb ping -c1 -w1 172.16.101.1
log_test $? 0 "Bridge vlan into VRF - IPv4 ping in"

run_cmd ip neigh flush all
run_cmd_nsb ${ping6} -c1 -w1 2001:db8:101::1
log_test $? 0 "Bridge vlan into VRF - IPv6 ping in"

modprobe br_netfilter
if [ $? -eq 0 ]; then
run_cmd ip neigh flush all
run_cmd ping -c1 -w1 -I br0.100 172.16.101.2
log_test $? 0 "Bridge vlan into VRF with br_netfilter - IPv4 ping out"

run_cmd ip neigh flush all
run_cmd ${ping6} -c1 -w1 -I br0.100 2001:db8:101::2
log_test $? 0 "Bridge vlan into VRF with br_netfilter - IPv6 ping out"

run_cmd ip neigh flush all
run_cmd_nsb ping -c1 -w1 172.16.101.1
log_test $? 0 "Bridge vlan into VRF - IPv4 ping in"

run_cmd ip neigh flush all
run_cmd_nsb ${ping6} -c1 -w1 2001:db8:101::1
log_test $? 0 "Bridge vlan into VRF - IPv6 ping in"
fi

setup_cmd ip li del br0 2>/dev/null
setup_cmd_nsb ip li del vlan100 2>/dev/null
}

use_cases()
{
log_section "Use cases"
use_case_br
}

################################################################################
# usage

Expand All @@ -3269,6 +3389,8 @@ EOF

TESTS_IPV4="ipv4_ping ipv4_tcp ipv4_udp ipv4_addr_bind ipv4_runtime ipv4_netfilter"
TESTS_IPV6="ipv6_ping ipv6_tcp ipv6_udp ipv6_addr_bind ipv6_runtime ipv6_netfilter"
TESTS_OTHER="use_cases"

PAUSE_ON_FAIL=no
PAUSE=no

Expand Down Expand Up @@ -3320,6 +3442,8 @@ do
ipv6_runtime) ipv6_runtime;;
ipv6_netfilter) ipv6_netfilter;;

use_cases) use_cases;;

# setup namespaces and config, but do not run any tests
setup) setup; exit 0;;
vrf_setup) setup "yes"; exit 0;;
Expand Down

0 comments on commit 56eba15

Please sign in to comment.