Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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: David Ahern <dsahern@kernel.org>
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Hangbin Liu and committed by
David S. Miller
61b12ebe 51f64acb

+36 -41
+36 -41
tools/testing/selftests/net/vrf-xfrm-tests.sh
··· 3 3 # 4 4 # Various combinations of VRF with xfrms and qdisc. 5 5 6 - # Kselftest framework requirement - SKIP code is 4. 7 - ksft_skip=4 8 - 6 + source lib.sh 9 7 PAUSE_ON_FAIL=no 10 8 VERBOSE=0 11 9 ret=0 ··· 65 67 printf " COMMAND: $cmd\n" 66 68 fi 67 69 68 - out=$(eval ip netns exec host1 $cmd 2>&1) 70 + out=$(eval ip netns exec $host1 $cmd 2>&1) 69 71 rc=$? 70 72 if [ "$VERBOSE" = "1" ]; then 71 73 if [ -n "$out" ]; then ··· 114 116 [ -z "${addr}" ] && addr="-" 115 117 [ -z "${addr6}" ] && addr6="-" 116 118 117 - ip netns add ${ns} 118 - 119 - ip -netns ${ns} link set lo up 120 119 if [ "${addr}" != "-" ]; then 121 120 ip -netns ${ns} addr add dev lo ${addr} 122 121 fi ··· 172 177 173 178 cleanup() 174 179 { 175 - ip netns del host1 176 - ip netns del host2 180 + cleanup_ns $host1 $host2 177 181 } 178 182 179 183 setup() 180 184 { 181 - create_ns "host1" 182 - create_ns "host2" 185 + setup_ns host1 host2 186 + create_ns "$host1" 187 + create_ns "$host2" 183 188 184 - connect_ns "host1" eth0 ${HOST1_4}/24 ${HOST1_6}/64 \ 185 - "host2" eth0 ${HOST2_4}/24 ${HOST2_6}/64 189 + connect_ns "$host1" eth0 ${HOST1_4}/24 ${HOST1_6}/64 \ 190 + "$host2" eth0 ${HOST2_4}/24 ${HOST2_6}/64 186 191 187 - create_vrf "host1" ${VRF} ${TABLE} 188 - ip -netns host1 link set dev eth0 master ${VRF} 192 + create_vrf "$host1" ${VRF} ${TABLE} 193 + ip -netns $host1 link set dev eth0 master ${VRF} 189 194 } 190 195 191 196 cleanup_xfrm() 192 197 { 193 - for ns in host1 host2 198 + for ns in $host1 $host2 194 199 do 195 200 for x in state policy 196 201 do ··· 213 218 # 214 219 215 220 # host1 - IPv4 out 216 - ip -netns host1 xfrm policy add \ 221 + ip -netns $host1 xfrm policy add \ 217 222 src ${h1_4} dst ${h2_4} ${devarg} dir out \ 218 223 tmpl src ${HOST1_4} dst ${HOST2_4} proto esp mode tunnel 219 224 220 225 # host2 - IPv4 in 221 - ip -netns host2 xfrm policy add \ 226 + ip -netns $host2 xfrm policy add \ 222 227 src ${h1_4} dst ${h2_4} dir in \ 223 228 tmpl src ${HOST1_4} dst ${HOST2_4} proto esp mode tunnel 224 229 225 230 # host1 - IPv4 in 226 - ip -netns host1 xfrm policy add \ 231 + ip -netns $host1 xfrm policy add \ 227 232 src ${h2_4} dst ${h1_4} ${devarg} dir in \ 228 233 tmpl src ${HOST2_4} dst ${HOST1_4} proto esp mode tunnel 229 234 230 235 # host2 - IPv4 out 231 - ip -netns host2 xfrm policy add \ 236 + ip -netns $host2 xfrm policy add \ 232 237 src ${h2_4} dst ${h1_4} dir out \ 233 238 tmpl src ${HOST2_4} dst ${HOST1_4} proto esp mode tunnel 234 239 235 240 236 241 # host1 - IPv6 out 237 - ip -6 -netns host1 xfrm policy add \ 242 + ip -6 -netns $host1 xfrm policy add \ 238 243 src ${h1_6} dst ${h2_6} ${devarg} dir out \ 239 244 tmpl src ${HOST1_6} dst ${HOST2_6} proto esp mode tunnel 240 245 241 246 # host2 - IPv6 in 242 - ip -6 -netns host2 xfrm policy add \ 247 + ip -6 -netns $host2 xfrm policy add \ 243 248 src ${h1_6} dst ${h2_6} dir in \ 244 249 tmpl src ${HOST1_6} dst ${HOST2_6} proto esp mode tunnel 245 250 246 251 # host1 - IPv6 in 247 - ip -6 -netns host1 xfrm policy add \ 252 + ip -6 -netns $host1 xfrm policy add \ 248 253 src ${h2_6} dst ${h1_6} ${devarg} dir in \ 249 254 tmpl src ${HOST2_6} dst ${HOST1_6} proto esp mode tunnel 250 255 251 256 # host2 - IPv6 out 252 - ip -6 -netns host2 xfrm policy add \ 257 + ip -6 -netns $host2 xfrm policy add \ 253 258 src ${h2_6} dst ${h1_6} dir out \ 254 259 tmpl src ${HOST2_6} dst ${HOST1_6} proto esp mode tunnel 255 260 256 261 # 257 262 # state 258 263 # 259 - ip -netns host1 xfrm state add src ${HOST1_4} dst ${HOST2_4} \ 264 + ip -netns $host1 xfrm state add src ${HOST1_4} dst ${HOST2_4} \ 260 265 proto esp spi ${SPI_1} reqid 0 mode tunnel \ 261 266 replay-window 4 replay-oseq 0x4 \ 262 267 auth-trunc 'hmac(sha1)' ${AUTH_1} 96 \ 263 268 enc 'cbc(aes)' ${ENC_1} \ 264 269 sel src ${h1_4} dst ${h2_4} ${devarg} 265 270 266 - ip -netns host2 xfrm state add src ${HOST1_4} dst ${HOST2_4} \ 271 + ip -netns $host2 xfrm state add src ${HOST1_4} dst ${HOST2_4} \ 267 272 proto esp spi ${SPI_1} reqid 0 mode tunnel \ 268 273 replay-window 4 replay-oseq 0x4 \ 269 274 auth-trunc 'hmac(sha1)' ${AUTH_1} 96 \ ··· 271 276 sel src ${h1_4} dst ${h2_4} 272 277 273 278 274 - ip -netns host1 xfrm state add src ${HOST2_4} dst ${HOST1_4} \ 279 + ip -netns $host1 xfrm state add src ${HOST2_4} dst ${HOST1_4} \ 275 280 proto esp spi ${SPI_2} reqid 0 mode tunnel \ 276 281 replay-window 4 replay-oseq 0x4 \ 277 282 auth-trunc 'hmac(sha1)' ${AUTH_2} 96 \ 278 283 enc 'cbc(aes)' ${ENC_2} \ 279 284 sel src ${h2_4} dst ${h1_4} ${devarg} 280 285 281 - ip -netns host2 xfrm state add src ${HOST2_4} dst ${HOST1_4} \ 286 + ip -netns $host2 xfrm state add src ${HOST2_4} dst ${HOST1_4} \ 282 287 proto esp spi ${SPI_2} reqid 0 mode tunnel \ 283 288 replay-window 4 replay-oseq 0x4 \ 284 289 auth-trunc 'hmac(sha1)' ${AUTH_2} 96 \ ··· 286 291 sel src ${h2_4} dst ${h1_4} 287 292 288 293 289 - ip -6 -netns host1 xfrm state add src ${HOST1_6} dst ${HOST2_6} \ 294 + ip -6 -netns $host1 xfrm state add src ${HOST1_6} dst ${HOST2_6} \ 290 295 proto esp spi ${SPI_1} reqid 0 mode tunnel \ 291 296 replay-window 4 replay-oseq 0x4 \ 292 297 auth-trunc 'hmac(sha1)' ${AUTH_1} 96 \ 293 298 enc 'cbc(aes)' ${ENC_1} \ 294 299 sel src ${h1_6} dst ${h2_6} ${devarg} 295 300 296 - ip -6 -netns host2 xfrm state add src ${HOST1_6} dst ${HOST2_6} \ 301 + ip -6 -netns $host2 xfrm state add src ${HOST1_6} dst ${HOST2_6} \ 297 302 proto esp spi ${SPI_1} reqid 0 mode tunnel \ 298 303 replay-window 4 replay-oseq 0x4 \ 299 304 auth-trunc 'hmac(sha1)' ${AUTH_1} 96 \ ··· 301 306 sel src ${h1_6} dst ${h2_6} 302 307 303 308 304 - ip -6 -netns host1 xfrm state add src ${HOST2_6} dst ${HOST1_6} \ 309 + ip -6 -netns $host1 xfrm state add src ${HOST2_6} dst ${HOST1_6} \ 305 310 proto esp spi ${SPI_2} reqid 0 mode tunnel \ 306 311 replay-window 4 replay-oseq 0x4 \ 307 312 auth-trunc 'hmac(sha1)' ${AUTH_2} 96 \ 308 313 enc 'cbc(aes)' ${ENC_2} \ 309 314 sel src ${h2_6} dst ${h1_6} ${devarg} 310 315 311 - ip -6 -netns host2 xfrm state add src ${HOST2_6} dst ${HOST1_6} \ 316 + ip -6 -netns $host2 xfrm state add src ${HOST2_6} dst ${HOST1_6} \ 312 317 proto esp spi ${SPI_2} reqid 0 mode tunnel \ 313 318 replay-window 4 replay-oseq 0x4 \ 314 319 auth-trunc 'hmac(sha1)' ${AUTH_2} 96 \ ··· 318 323 319 324 cleanup_xfrm_dev() 320 325 { 321 - ip -netns host1 li del xfrm0 322 - ip -netns host2 addr del ${XFRM2_4}/24 dev eth0 323 - ip -netns host2 addr del ${XFRM2_6}/64 dev eth0 326 + ip -netns $host1 li del xfrm0 327 + ip -netns $host2 addr del ${XFRM2_4}/24 dev eth0 328 + ip -netns $host2 addr del ${XFRM2_6}/64 dev eth0 324 329 } 325 330 326 331 setup_xfrm_dev() 327 332 { 328 333 local vrfarg="vrf ${VRF}" 329 334 330 - ip -netns host1 li add type xfrm dev eth0 if_id ${IF_ID} 331 - ip -netns host1 li set xfrm0 ${vrfarg} up 332 - ip -netns host1 addr add ${XFRM1_4}/24 dev xfrm0 333 - ip -netns host1 addr add ${XFRM1_6}/64 dev xfrm0 335 + ip -netns $host1 li add type xfrm dev eth0 if_id ${IF_ID} 336 + ip -netns $host1 li set xfrm0 ${vrfarg} up 337 + ip -netns $host1 addr add ${XFRM1_4}/24 dev xfrm0 338 + ip -netns $host1 addr add ${XFRM1_6}/64 dev xfrm0 334 339 335 - ip -netns host2 addr add ${XFRM2_4}/24 dev eth0 336 - ip -netns host2 addr add ${XFRM2_6}/64 dev eth0 340 + ip -netns $host2 addr add ${XFRM2_4}/24 dev eth0 341 + ip -netns $host2 addr add ${XFRM2_6}/64 dev eth0 337 342 338 343 setup_xfrm ${XFRM1_4} ${XFRM2_4} ${XFRM1_6} ${XFRM2_6} "if_id ${IF_ID}" 339 344 }