Commit 8ae797aa authored by David Ahern's avatar David Ahern Committed by David S. Miller

selftests: Add multipath tests for onlink flag

Add multipath tests for onlink flag: one test with onlink added to
both nexthops, then tests with onlink added to only 1 nexthop.
Signed-off-by: default avatarDavid Ahern <dsahern@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent bc48740b
...@@ -56,7 +56,8 @@ TEST_NET6[2]=2001:db8:102 ...@@ -56,7 +56,8 @@ TEST_NET6[2]=2001:db8:102
# connected gateway # connected gateway
CONGW[1]=169.254.1.254 CONGW[1]=169.254.1.254
CONGW[2]=169.254.5.254 CONGW[2]=169.254.3.254
CONGW[3]=169.254.5.254
# recursive gateway # recursive gateway
RECGW4[1]=169.254.11.254 RECGW4[1]=169.254.11.254
...@@ -232,6 +233,23 @@ run_ip() ...@@ -232,6 +233,23 @@ run_ip()
log_test $? ${exp_rc} "${desc}" log_test $? ${exp_rc} "${desc}"
} }
run_ip_mpath()
{
local table="$1"
local prefix="$2"
local nh1="$3"
local nh2="$4"
local exp_rc="$5"
local desc="$6"
# dev arg may be empty
[ -n "${dev}" ] && dev="dev ${dev}"
run_cmd ip ro add table "${table}" "${prefix}"/32 \
nexthop via ${nh1} nexthop via ${nh2}
log_test $? ${exp_rc} "${desc}"
}
valid_onlink_ipv4() valid_onlink_ipv4()
{ {
# - unicast connected, unicast recursive # - unicast connected, unicast recursive
...@@ -243,13 +261,37 @@ valid_onlink_ipv4() ...@@ -243,13 +261,37 @@ valid_onlink_ipv4()
log_subsection "VRF ${VRF}" log_subsection "VRF ${VRF}"
run_ip ${VRF_TABLE} ${TEST_NET4[2]}.1 ${CONGW[2]} ${NETIFS[p5]} 0 "unicast connected" run_ip ${VRF_TABLE} ${TEST_NET4[2]}.1 ${CONGW[3]} ${NETIFS[p5]} 0 "unicast connected"
run_ip ${VRF_TABLE} ${TEST_NET4[2]}.2 ${RECGW4[2]} ${NETIFS[p5]} 0 "unicast recursive" run_ip ${VRF_TABLE} ${TEST_NET4[2]}.2 ${RECGW4[2]} ${NETIFS[p5]} 0 "unicast recursive"
log_subsection "VRF device, PBR table" log_subsection "VRF device, PBR table"
run_ip ${PBR_TABLE} ${TEST_NET4[2]}.3 ${CONGW[2]} ${NETIFS[p5]} 0 "unicast connected" run_ip ${PBR_TABLE} ${TEST_NET4[2]}.3 ${CONGW[3]} ${NETIFS[p5]} 0 "unicast connected"
run_ip ${PBR_TABLE} ${TEST_NET4[2]}.4 ${RECGW4[2]} ${NETIFS[p5]} 0 "unicast recursive" run_ip ${PBR_TABLE} ${TEST_NET4[2]}.4 ${RECGW4[2]} ${NETIFS[p5]} 0 "unicast recursive"
# multipath version
#
log_subsection "default VRF - main table - multipath"
run_ip_mpath 254 ${TEST_NET4[1]}.5 \
"${CONGW[1]} dev ${NETIFS[p1]} onlink" \
"${CONGW[2]} dev ${NETIFS[p3]} onlink" \
0 "unicast connected - multipath"
run_ip_mpath 254 ${TEST_NET4[1]}.6 \
"${RECGW4[1]} dev ${NETIFS[p1]} onlink" \
"${RECGW4[2]} dev ${NETIFS[p3]} onlink" \
0 "unicast recursive - multipath"
run_ip_mpath 254 ${TEST_NET4[1]}.7 \
"${CONGW[1]} dev ${NETIFS[p1]}" \
"${CONGW[2]} dev ${NETIFS[p3]} onlink" \
0 "unicast connected - multipath onlink first only"
run_ip_mpath 254 ${TEST_NET4[1]}.8 \
"${CONGW[1]} dev ${NETIFS[p1]} onlink" \
"${CONGW[2]} dev ${NETIFS[p3]}" \
0 "unicast connected - multipath onlink second only"
} }
invalid_onlink_ipv4() invalid_onlink_ipv4()
...@@ -289,6 +331,21 @@ run_ip6() ...@@ -289,6 +331,21 @@ run_ip6()
log_test $? ${exp_rc} "${desc}" log_test $? ${exp_rc} "${desc}"
} }
run_ip6_mpath()
{
local table="$1"
local prefix="$2"
local opts="$3"
local nh1="$4"
local nh2="$5"
local exp_rc="$6"
local desc="$7"
run_cmd ip -6 ro add table "${table}" "${prefix}"/128 "${opts}" \
nexthop via ${nh1} nexthop via ${nh2}
log_test $? ${exp_rc} "${desc}"
}
valid_onlink_ipv6() valid_onlink_ipv6()
{ {
# - unicast connected, unicast recursive, v4-mapped # - unicast connected, unicast recursive, v4-mapped
...@@ -310,6 +367,40 @@ valid_onlink_ipv6() ...@@ -310,6 +367,40 @@ valid_onlink_ipv6()
run_ip6 ${PBR_TABLE} ${TEST_NET6[2]}::4 ${V6ADDRS[p5]/::*}::64 ${NETIFS[p5]} 0 "unicast connected" run_ip6 ${PBR_TABLE} ${TEST_NET6[2]}::4 ${V6ADDRS[p5]/::*}::64 ${NETIFS[p5]} 0 "unicast connected"
run_ip6 ${PBR_TABLE} ${TEST_NET6[2]}::5 ${RECGW6[2]} ${NETIFS[p5]} 0 "unicast recursive" run_ip6 ${PBR_TABLE} ${TEST_NET6[2]}::5 ${RECGW6[2]} ${NETIFS[p5]} 0 "unicast recursive"
run_ip6 ${PBR_TABLE} ${TEST_NET6[2]}::6 ::ffff:${TEST_NET4IN6[2]} ${NETIFS[p5]} 0 "v4-mapped" run_ip6 ${PBR_TABLE} ${TEST_NET6[2]}::6 ::ffff:${TEST_NET4IN6[2]} ${NETIFS[p5]} 0 "v4-mapped"
# multipath version
#
log_subsection "default VRF - main table - multipath"
run_ip6_mpath 254 ${TEST_NET6[1]}::4 "onlink" \
"${V6ADDRS[p1]/::*}::64 dev ${NETIFS[p1]}" \
"${V6ADDRS[p3]/::*}::64 dev ${NETIFS[p3]}" \
0 "unicast connected - multipath onlink"
run_ip6_mpath 254 ${TEST_NET6[1]}::5 "onlink" \
"${RECGW6[1]} dev ${NETIFS[p1]}" \
"${RECGW6[2]} dev ${NETIFS[p3]}" \
0 "unicast recursive - multipath onlink"
run_ip6_mpath 254 ${TEST_NET6[1]}::6 "onlink" \
"::ffff:${TEST_NET4IN6[1]} dev ${NETIFS[p1]}" \
"::ffff:${TEST_NET4IN6[2]} dev ${NETIFS[p3]}" \
0 "v4-mapped - multipath onlink"
run_ip6_mpath 254 ${TEST_NET6[1]}::7 "" \
"${V6ADDRS[p1]/::*}::64 dev ${NETIFS[p1]} onlink" \
"${V6ADDRS[p3]/::*}::64 dev ${NETIFS[p3]} onlink" \
0 "unicast connected - multipath onlink both nexthops"
run_ip6_mpath 254 ${TEST_NET6[1]}::8 "" \
"${V6ADDRS[p1]/::*}::64 dev ${NETIFS[p1]} onlink" \
"${V6ADDRS[p3]/::*}::64 dev ${NETIFS[p3]}" \
0 "unicast connected - multipath onlink first only"
run_ip6_mpath 254 ${TEST_NET6[1]}::9 "" \
"${V6ADDRS[p1]/::*}::64 dev ${NETIFS[p1]}" \
"${V6ADDRS[p3]/::*}::64 dev ${NETIFS[p3]} onlink" \
0 "unicast connected - multipath onlink second only"
} }
invalid_onlink_ipv6() invalid_onlink_ipv6()
...@@ -355,6 +446,7 @@ run_onlink_tests() ...@@ -355,6 +446,7 @@ run_onlink_tests()
log_section "IPv6 onlink" log_section "IPv6 onlink"
log_subsection "Valid onlink commands" log_subsection "Valid onlink commands"
valid_onlink_ipv6 valid_onlink_ipv6
log_subsection "Invalid onlink commands"
invalid_onlink_ipv6 invalid_onlink_ipv6
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment