Commit 61b12ebe authored by Hangbin Liu's avatar Hangbin Liu Committed by David S. Miller

selftests/net: convert vrf-xfrm-tests.sh to run it in unique namespace

Here is the test result after conversion.

]# ./vrf-xfrm-tests.sh

No qdisc on VRF device
TEST: IPv4 no xfrm policy                                           [ OK ]
TEST: IPv6 no xfrm policy                                           [ OK ]
TEST: IPv4 xfrm policy based on address                             [ OK ]
TEST: IPv6 xfrm policy based on address                             [ OK ]
TEST: IPv6 xfrm policy with VRF in selector                         [ OK ]
TEST: IPv4 xfrm policy with xfrm device                             [ OK ]
TEST: IPv6 xfrm policy with xfrm device                             [ OK ]

netem qdisc on VRF device
TEST: IPv4 no xfrm policy                                           [ OK ]
TEST: IPv6 no xfrm policy                                           [ OK ]
TEST: IPv4 xfrm policy based on address                             [ OK ]
TEST: IPv6 xfrm policy based on address                             [ OK ]
TEST: IPv6 xfrm policy with VRF in selector                         [ OK ]
TEST: IPv4 xfrm policy with xfrm device                             [ OK ]
TEST: IPv6 xfrm policy with xfrm device                             [ OK ]

Tests passed:  14
Tests failed:   0
Acked-by: default avatarDavid Ahern <dsahern@kernel.org>
Signed-off-by: default avatarHangbin Liu <liuhangbin@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 51f64acb
...@@ -3,9 +3,7 @@ ...@@ -3,9 +3,7 @@
# #
# Various combinations of VRF with xfrms and qdisc. # Various combinations of VRF with xfrms and qdisc.
# Kselftest framework requirement - SKIP code is 4. source lib.sh
ksft_skip=4
PAUSE_ON_FAIL=no PAUSE_ON_FAIL=no
VERBOSE=0 VERBOSE=0
ret=0 ret=0
...@@ -67,7 +65,7 @@ run_cmd_host1() ...@@ -67,7 +65,7 @@ run_cmd_host1()
printf " COMMAND: $cmd\n" printf " COMMAND: $cmd\n"
fi fi
out=$(eval ip netns exec host1 $cmd 2>&1) out=$(eval ip netns exec $host1 $cmd 2>&1)
rc=$? rc=$?
if [ "$VERBOSE" = "1" ]; then if [ "$VERBOSE" = "1" ]; then
if [ -n "$out" ]; then if [ -n "$out" ]; then
...@@ -116,9 +114,6 @@ create_ns() ...@@ -116,9 +114,6 @@ create_ns()
[ -z "${addr}" ] && addr="-" [ -z "${addr}" ] && addr="-"
[ -z "${addr6}" ] && addr6="-" [ -z "${addr6}" ] && addr6="-"
ip netns add ${ns}
ip -netns ${ns} link set lo up
if [ "${addr}" != "-" ]; then if [ "${addr}" != "-" ]; then
ip -netns ${ns} addr add dev lo ${addr} ip -netns ${ns} addr add dev lo ${addr}
fi fi
...@@ -177,25 +172,25 @@ connect_ns() ...@@ -177,25 +172,25 @@ connect_ns()
cleanup() cleanup()
{ {
ip netns del host1 cleanup_ns $host1 $host2
ip netns del host2
} }
setup() setup()
{ {
create_ns "host1" setup_ns host1 host2
create_ns "host2" create_ns "$host1"
create_ns "$host2"
connect_ns "host1" eth0 ${HOST1_4}/24 ${HOST1_6}/64 \ connect_ns "$host1" eth0 ${HOST1_4}/24 ${HOST1_6}/64 \
"host2" eth0 ${HOST2_4}/24 ${HOST2_6}/64 "$host2" eth0 ${HOST2_4}/24 ${HOST2_6}/64
create_vrf "host1" ${VRF} ${TABLE} create_vrf "$host1" ${VRF} ${TABLE}
ip -netns host1 link set dev eth0 master ${VRF} ip -netns $host1 link set dev eth0 master ${VRF}
} }
cleanup_xfrm() cleanup_xfrm()
{ {
for ns in host1 host2 for ns in $host1 $host2
do do
for x in state policy for x in state policy
do do
...@@ -218,57 +213,57 @@ setup_xfrm() ...@@ -218,57 +213,57 @@ setup_xfrm()
# #
# host1 - IPv4 out # host1 - IPv4 out
ip -netns host1 xfrm policy add \ ip -netns $host1 xfrm policy add \
src ${h1_4} dst ${h2_4} ${devarg} dir out \ src ${h1_4} dst ${h2_4} ${devarg} dir out \
tmpl src ${HOST1_4} dst ${HOST2_4} proto esp mode tunnel tmpl src ${HOST1_4} dst ${HOST2_4} proto esp mode tunnel
# host2 - IPv4 in # host2 - IPv4 in
ip -netns host2 xfrm policy add \ ip -netns $host2 xfrm policy add \
src ${h1_4} dst ${h2_4} dir in \ src ${h1_4} dst ${h2_4} dir in \
tmpl src ${HOST1_4} dst ${HOST2_4} proto esp mode tunnel tmpl src ${HOST1_4} dst ${HOST2_4} proto esp mode tunnel
# host1 - IPv4 in # host1 - IPv4 in
ip -netns host1 xfrm policy add \ ip -netns $host1 xfrm policy add \
src ${h2_4} dst ${h1_4} ${devarg} dir in \ src ${h2_4} dst ${h1_4} ${devarg} dir in \
tmpl src ${HOST2_4} dst ${HOST1_4} proto esp mode tunnel tmpl src ${HOST2_4} dst ${HOST1_4} proto esp mode tunnel
# host2 - IPv4 out # host2 - IPv4 out
ip -netns host2 xfrm policy add \ ip -netns $host2 xfrm policy add \
src ${h2_4} dst ${h1_4} dir out \ src ${h2_4} dst ${h1_4} dir out \
tmpl src ${HOST2_4} dst ${HOST1_4} proto esp mode tunnel tmpl src ${HOST2_4} dst ${HOST1_4} proto esp mode tunnel
# host1 - IPv6 out # host1 - IPv6 out
ip -6 -netns host1 xfrm policy add \ ip -6 -netns $host1 xfrm policy add \
src ${h1_6} dst ${h2_6} ${devarg} dir out \ src ${h1_6} dst ${h2_6} ${devarg} dir out \
tmpl src ${HOST1_6} dst ${HOST2_6} proto esp mode tunnel tmpl src ${HOST1_6} dst ${HOST2_6} proto esp mode tunnel
# host2 - IPv6 in # host2 - IPv6 in
ip -6 -netns host2 xfrm policy add \ ip -6 -netns $host2 xfrm policy add \
src ${h1_6} dst ${h2_6} dir in \ src ${h1_6} dst ${h2_6} dir in \
tmpl src ${HOST1_6} dst ${HOST2_6} proto esp mode tunnel tmpl src ${HOST1_6} dst ${HOST2_6} proto esp mode tunnel
# host1 - IPv6 in # host1 - IPv6 in
ip -6 -netns host1 xfrm policy add \ ip -6 -netns $host1 xfrm policy add \
src ${h2_6} dst ${h1_6} ${devarg} dir in \ src ${h2_6} dst ${h1_6} ${devarg} dir in \
tmpl src ${HOST2_6} dst ${HOST1_6} proto esp mode tunnel tmpl src ${HOST2_6} dst ${HOST1_6} proto esp mode tunnel
# host2 - IPv6 out # host2 - IPv6 out
ip -6 -netns host2 xfrm policy add \ ip -6 -netns $host2 xfrm policy add \
src ${h2_6} dst ${h1_6} dir out \ src ${h2_6} dst ${h1_6} dir out \
tmpl src ${HOST2_6} dst ${HOST1_6} proto esp mode tunnel tmpl src ${HOST2_6} dst ${HOST1_6} proto esp mode tunnel
# #
# state # state
# #
ip -netns host1 xfrm state add src ${HOST1_4} dst ${HOST2_4} \ ip -netns $host1 xfrm state add src ${HOST1_4} dst ${HOST2_4} \
proto esp spi ${SPI_1} reqid 0 mode tunnel \ proto esp spi ${SPI_1} reqid 0 mode tunnel \
replay-window 4 replay-oseq 0x4 \ replay-window 4 replay-oseq 0x4 \
auth-trunc 'hmac(sha1)' ${AUTH_1} 96 \ auth-trunc 'hmac(sha1)' ${AUTH_1} 96 \
enc 'cbc(aes)' ${ENC_1} \ enc 'cbc(aes)' ${ENC_1} \
sel src ${h1_4} dst ${h2_4} ${devarg} sel src ${h1_4} dst ${h2_4} ${devarg}
ip -netns host2 xfrm state add src ${HOST1_4} dst ${HOST2_4} \ ip -netns $host2 xfrm state add src ${HOST1_4} dst ${HOST2_4} \
proto esp spi ${SPI_1} reqid 0 mode tunnel \ proto esp spi ${SPI_1} reqid 0 mode tunnel \
replay-window 4 replay-oseq 0x4 \ replay-window 4 replay-oseq 0x4 \
auth-trunc 'hmac(sha1)' ${AUTH_1} 96 \ auth-trunc 'hmac(sha1)' ${AUTH_1} 96 \
...@@ -276,14 +271,14 @@ setup_xfrm() ...@@ -276,14 +271,14 @@ setup_xfrm()
sel src ${h1_4} dst ${h2_4} sel src ${h1_4} dst ${h2_4}
ip -netns host1 xfrm state add src ${HOST2_4} dst ${HOST1_4} \ ip -netns $host1 xfrm state add src ${HOST2_4} dst ${HOST1_4} \
proto esp spi ${SPI_2} reqid 0 mode tunnel \ proto esp spi ${SPI_2} reqid 0 mode tunnel \
replay-window 4 replay-oseq 0x4 \ replay-window 4 replay-oseq 0x4 \
auth-trunc 'hmac(sha1)' ${AUTH_2} 96 \ auth-trunc 'hmac(sha1)' ${AUTH_2} 96 \
enc 'cbc(aes)' ${ENC_2} \ enc 'cbc(aes)' ${ENC_2} \
sel src ${h2_4} dst ${h1_4} ${devarg} sel src ${h2_4} dst ${h1_4} ${devarg}
ip -netns host2 xfrm state add src ${HOST2_4} dst ${HOST1_4} \ ip -netns $host2 xfrm state add src ${HOST2_4} dst ${HOST1_4} \
proto esp spi ${SPI_2} reqid 0 mode tunnel \ proto esp spi ${SPI_2} reqid 0 mode tunnel \
replay-window 4 replay-oseq 0x4 \ replay-window 4 replay-oseq 0x4 \
auth-trunc 'hmac(sha1)' ${AUTH_2} 96 \ auth-trunc 'hmac(sha1)' ${AUTH_2} 96 \
...@@ -291,14 +286,14 @@ setup_xfrm() ...@@ -291,14 +286,14 @@ setup_xfrm()
sel src ${h2_4} dst ${h1_4} sel src ${h2_4} dst ${h1_4}
ip -6 -netns host1 xfrm state add src ${HOST1_6} dst ${HOST2_6} \ ip -6 -netns $host1 xfrm state add src ${HOST1_6} dst ${HOST2_6} \
proto esp spi ${SPI_1} reqid 0 mode tunnel \ proto esp spi ${SPI_1} reqid 0 mode tunnel \
replay-window 4 replay-oseq 0x4 \ replay-window 4 replay-oseq 0x4 \
auth-trunc 'hmac(sha1)' ${AUTH_1} 96 \ auth-trunc 'hmac(sha1)' ${AUTH_1} 96 \
enc 'cbc(aes)' ${ENC_1} \ enc 'cbc(aes)' ${ENC_1} \
sel src ${h1_6} dst ${h2_6} ${devarg} sel src ${h1_6} dst ${h2_6} ${devarg}
ip -6 -netns host2 xfrm state add src ${HOST1_6} dst ${HOST2_6} \ ip -6 -netns $host2 xfrm state add src ${HOST1_6} dst ${HOST2_6} \
proto esp spi ${SPI_1} reqid 0 mode tunnel \ proto esp spi ${SPI_1} reqid 0 mode tunnel \
replay-window 4 replay-oseq 0x4 \ replay-window 4 replay-oseq 0x4 \
auth-trunc 'hmac(sha1)' ${AUTH_1} 96 \ auth-trunc 'hmac(sha1)' ${AUTH_1} 96 \
...@@ -306,14 +301,14 @@ setup_xfrm() ...@@ -306,14 +301,14 @@ setup_xfrm()
sel src ${h1_6} dst ${h2_6} sel src ${h1_6} dst ${h2_6}
ip -6 -netns host1 xfrm state add src ${HOST2_6} dst ${HOST1_6} \ ip -6 -netns $host1 xfrm state add src ${HOST2_6} dst ${HOST1_6} \
proto esp spi ${SPI_2} reqid 0 mode tunnel \ proto esp spi ${SPI_2} reqid 0 mode tunnel \
replay-window 4 replay-oseq 0x4 \ replay-window 4 replay-oseq 0x4 \
auth-trunc 'hmac(sha1)' ${AUTH_2} 96 \ auth-trunc 'hmac(sha1)' ${AUTH_2} 96 \
enc 'cbc(aes)' ${ENC_2} \ enc 'cbc(aes)' ${ENC_2} \
sel src ${h2_6} dst ${h1_6} ${devarg} sel src ${h2_6} dst ${h1_6} ${devarg}
ip -6 -netns host2 xfrm state add src ${HOST2_6} dst ${HOST1_6} \ ip -6 -netns $host2 xfrm state add src ${HOST2_6} dst ${HOST1_6} \
proto esp spi ${SPI_2} reqid 0 mode tunnel \ proto esp spi ${SPI_2} reqid 0 mode tunnel \
replay-window 4 replay-oseq 0x4 \ replay-window 4 replay-oseq 0x4 \
auth-trunc 'hmac(sha1)' ${AUTH_2} 96 \ auth-trunc 'hmac(sha1)' ${AUTH_2} 96 \
...@@ -323,22 +318,22 @@ setup_xfrm() ...@@ -323,22 +318,22 @@ setup_xfrm()
cleanup_xfrm_dev() cleanup_xfrm_dev()
{ {
ip -netns host1 li del xfrm0 ip -netns $host1 li del xfrm0
ip -netns host2 addr del ${XFRM2_4}/24 dev eth0 ip -netns $host2 addr del ${XFRM2_4}/24 dev eth0
ip -netns host2 addr del ${XFRM2_6}/64 dev eth0 ip -netns $host2 addr del ${XFRM2_6}/64 dev eth0
} }
setup_xfrm_dev() setup_xfrm_dev()
{ {
local vrfarg="vrf ${VRF}" local vrfarg="vrf ${VRF}"
ip -netns host1 li add type xfrm dev eth0 if_id ${IF_ID} ip -netns $host1 li add type xfrm dev eth0 if_id ${IF_ID}
ip -netns host1 li set xfrm0 ${vrfarg} up ip -netns $host1 li set xfrm0 ${vrfarg} up
ip -netns host1 addr add ${XFRM1_4}/24 dev xfrm0 ip -netns $host1 addr add ${XFRM1_4}/24 dev xfrm0
ip -netns host1 addr add ${XFRM1_6}/64 dev xfrm0 ip -netns $host1 addr add ${XFRM1_6}/64 dev xfrm0
ip -netns host2 addr add ${XFRM2_4}/24 dev eth0 ip -netns $host2 addr add ${XFRM2_4}/24 dev eth0
ip -netns host2 addr add ${XFRM2_6}/64 dev eth0 ip -netns $host2 addr add ${XFRM2_6}/64 dev eth0
setup_xfrm ${XFRM1_4} ${XFRM2_4} ${XFRM1_6} ${XFRM2_6} "if_id ${IF_ID}" setup_xfrm ${XFRM1_4} ${XFRM2_4} ${XFRM1_6} ${XFRM2_6} "if_id ${IF_ID}"
} }
......
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