|
18 | 18 | # ns1: ping 10.0.2.254: does NOT pass via ipsec tunnel (exception) |
19 | 19 | # ns2: ping 10.0.1.254: does NOT pass via ipsec tunnel (exception) |
20 | 20 |
|
21 | | -# Kselftest framework requirement - SKIP code is 4. |
22 | | -ksft_skip=4 |
| 21 | +source lib.sh |
23 | 22 | ret=0 |
24 | 23 | policy_checks_ok=1 |
25 | 24 |
|
@@ -204,24 +203,24 @@ check_xfrm() { |
204 | 203 | ip=$2 |
205 | 204 | local lret=0 |
206 | 205 |
|
207 | | - ip netns exec ns1 ping -q -c 1 10.0.2.$ip > /dev/null |
| 206 | + ip netns exec ${ns[1]} ping -q -c 1 10.0.2.$ip > /dev/null |
208 | 207 |
|
209 | | - check_ipt_policy_count ns3 |
| 208 | + check_ipt_policy_count ${ns[3]} |
210 | 209 | if [ $? -ne $rval ] ; then |
211 | 210 | lret=1 |
212 | 211 | fi |
213 | | - check_ipt_policy_count ns4 |
| 212 | + check_ipt_policy_count ${ns[4]} |
214 | 213 | if [ $? -ne $rval ] ; then |
215 | 214 | lret=1 |
216 | 215 | fi |
217 | 216 |
|
218 | | - ip netns exec ns2 ping -q -c 1 10.0.1.$ip > /dev/null |
| 217 | + ip netns exec ${ns[2]} ping -q -c 1 10.0.1.$ip > /dev/null |
219 | 218 |
|
220 | | - check_ipt_policy_count ns3 |
| 219 | + check_ipt_policy_count ${ns[3]} |
221 | 220 | if [ $? -ne $rval ] ; then |
222 | 221 | lret=1 |
223 | 222 | fi |
224 | | - check_ipt_policy_count ns4 |
| 223 | + check_ipt_policy_count ${ns[4]} |
225 | 224 | if [ $? -ne $rval ] ; then |
226 | 225 | lret=1 |
227 | 226 | fi |
@@ -270,11 +269,11 @@ check_hthresh_repeat() |
270 | 269 | i=0 |
271 | 270 |
|
272 | 271 | for i in $(seq 1 10);do |
273 | | - ip -net ns1 xfrm policy update src e000:0001::0000 dst ff01::0014:0000:0001 dir in tmpl src :: dst :: proto esp mode tunnel priority 100 action allow || break |
274 | | - ip -net ns1 xfrm policy set hthresh6 0 28 || break |
| 272 | + ip -net ${ns[1]} xfrm policy update src e000:0001::0000 dst ff01::0014:0000:0001 dir in tmpl src :: dst :: proto esp mode tunnel priority 100 action allow || break |
| 273 | + ip -net ${ns[1]} xfrm policy set hthresh6 0 28 || break |
275 | 274 |
|
276 | | - ip -net ns1 xfrm policy update src e000:0001::0000 dst ff01::01 dir in tmpl src :: dst :: proto esp mode tunnel priority 100 action allow || break |
277 | | - ip -net ns1 xfrm policy set hthresh6 0 28 || break |
| 275 | + ip -net ${ns[1]} xfrm policy update src e000:0001::0000 dst ff01::01 dir in tmpl src :: dst :: proto esp mode tunnel priority 100 action allow || break |
| 276 | + ip -net ${ns[1]} xfrm policy set hthresh6 0 28 || break |
278 | 277 | done |
279 | 278 |
|
280 | 279 | if [ $i -ne 10 ] ;then |
@@ -347,79 +346,80 @@ if [ $? -ne 0 ];then |
347 | 346 | exit $ksft_skip |
348 | 347 | fi |
349 | 348 |
|
350 | | -for i in 1 2 3 4; do |
351 | | - ip netns add ns$i |
352 | | - ip -net ns$i link set lo up |
353 | | -done |
| 349 | +setup_ns ns1 ns2 ns3 ns4 |
| 350 | +ns[1]=$ns1 |
| 351 | +ns[2]=$ns2 |
| 352 | +ns[3]=$ns3 |
| 353 | +ns[4]=$ns4 |
354 | 354 |
|
355 | 355 | DEV=veth0 |
356 | | -ip link add $DEV netns ns1 type veth peer name eth1 netns ns3 |
357 | | -ip link add $DEV netns ns2 type veth peer name eth1 netns ns4 |
| 356 | +ip link add $DEV netns ${ns[1]} type veth peer name eth1 netns ${ns[3]} |
| 357 | +ip link add $DEV netns ${ns[2]} type veth peer name eth1 netns ${ns[4]} |
358 | 358 |
|
359 | | -ip link add $DEV netns ns3 type veth peer name veth0 netns ns4 |
| 359 | +ip link add $DEV netns ${ns[3]} type veth peer name veth0 netns ${ns[4]} |
360 | 360 |
|
361 | 361 | DEV=veth0 |
362 | 362 | for i in 1 2; do |
363 | | - ip -net ns$i link set $DEV up |
364 | | - ip -net ns$i addr add 10.0.$i.2/24 dev $DEV |
365 | | - ip -net ns$i addr add dead:$i::2/64 dev $DEV |
366 | | - |
367 | | - ip -net ns$i addr add 10.0.$i.253 dev $DEV |
368 | | - ip -net ns$i addr add 10.0.$i.254 dev $DEV |
369 | | - ip -net ns$i addr add dead:$i::fd dev $DEV |
370 | | - ip -net ns$i addr add dead:$i::fe dev $DEV |
| 363 | + ip -net ${ns[$i]} link set $DEV up |
| 364 | + ip -net ${ns[$i]} addr add 10.0.$i.2/24 dev $DEV |
| 365 | + ip -net ${ns[$i]} addr add dead:$i::2/64 dev $DEV |
| 366 | + |
| 367 | + ip -net ${ns[$i]} addr add 10.0.$i.253 dev $DEV |
| 368 | + ip -net ${ns[$i]} addr add 10.0.$i.254 dev $DEV |
| 369 | + ip -net ${ns[$i]} addr add dead:$i::fd dev $DEV |
| 370 | + ip -net ${ns[$i]} addr add dead:$i::fe dev $DEV |
371 | 371 | done |
372 | 372 |
|
373 | 373 | for i in 3 4; do |
374 | | -ip -net ns$i link set eth1 up |
375 | | -ip -net ns$i link set veth0 up |
| 374 | + ip -net ${ns[$i]} link set eth1 up |
| 375 | + ip -net ${ns[$i]} link set veth0 up |
376 | 376 | done |
377 | 377 |
|
378 | | -ip -net ns1 route add default via 10.0.1.1 |
379 | | -ip -net ns2 route add default via 10.0.2.1 |
| 378 | +ip -net ${ns[1]} route add default via 10.0.1.1 |
| 379 | +ip -net ${ns[2]} route add default via 10.0.2.1 |
380 | 380 |
|
381 | | -ip -net ns3 addr add 10.0.1.1/24 dev eth1 |
382 | | -ip -net ns3 addr add 10.0.3.1/24 dev veth0 |
383 | | -ip -net ns3 addr add 2001:1::1/64 dev eth1 |
384 | | -ip -net ns3 addr add 2001:3::1/64 dev veth0 |
| 381 | +ip -net ${ns[3]} addr add 10.0.1.1/24 dev eth1 |
| 382 | +ip -net ${ns[3]} addr add 10.0.3.1/24 dev veth0 |
| 383 | +ip -net ${ns[3]} addr add 2001:1::1/64 dev eth1 |
| 384 | +ip -net ${ns[3]} addr add 2001:3::1/64 dev veth0 |
385 | 385 |
|
386 | | -ip -net ns3 route add default via 10.0.3.10 |
| 386 | +ip -net ${ns[3]} route add default via 10.0.3.10 |
387 | 387 |
|
388 | | -ip -net ns4 addr add 10.0.2.1/24 dev eth1 |
389 | | -ip -net ns4 addr add 10.0.3.10/24 dev veth0 |
390 | | -ip -net ns4 addr add 2001:2::1/64 dev eth1 |
391 | | -ip -net ns4 addr add 2001:3::10/64 dev veth0 |
392 | | -ip -net ns4 route add default via 10.0.3.1 |
| 388 | +ip -net ${ns[4]} addr add 10.0.2.1/24 dev eth1 |
| 389 | +ip -net ${ns[4]} addr add 10.0.3.10/24 dev veth0 |
| 390 | +ip -net ${ns[4]} addr add 2001:2::1/64 dev eth1 |
| 391 | +ip -net ${ns[4]} addr add 2001:3::10/64 dev veth0 |
| 392 | +ip -net ${ns[4]} route add default via 10.0.3.1 |
393 | 393 |
|
394 | 394 | for j in 4 6; do |
395 | 395 | for i in 3 4;do |
396 | | - ip netns exec ns$i sysctl net.ipv$j.conf.eth1.forwarding=1 > /dev/null |
397 | | - ip netns exec ns$i sysctl net.ipv$j.conf.veth0.forwarding=1 > /dev/null |
| 396 | + ip netns exec ${ns[$i]} sysctl net.ipv$j.conf.eth1.forwarding=1 > /dev/null |
| 397 | + ip netns exec ${ns[$i]} sysctl net.ipv$j.conf.veth0.forwarding=1 > /dev/null |
398 | 398 | done |
399 | 399 | done |
400 | 400 |
|
401 | 401 | # abuse iptables rule counter to check if ping matches a policy |
402 | | -ip netns exec ns3 iptables -p icmp -A FORWARD -m policy --dir out --pol ipsec |
403 | | -ip netns exec ns4 iptables -p icmp -A FORWARD -m policy --dir out --pol ipsec |
| 402 | +ip netns exec ${ns[3]} iptables -p icmp -A FORWARD -m policy --dir out --pol ipsec |
| 403 | +ip netns exec ${ns[4]} iptables -p icmp -A FORWARD -m policy --dir out --pol ipsec |
404 | 404 | if [ $? -ne 0 ];then |
405 | 405 | echo "SKIP: Could not insert iptables rule" |
406 | | - for i in 1 2 3 4;do ip netns del ns$i;done |
| 406 | + cleanup_ns $ns1 $ns2 $ns3 $ns4 |
407 | 407 | exit $ksft_skip |
408 | 408 | fi |
409 | 409 |
|
410 | 410 | # localip remoteip localnet remotenet |
411 | | -do_esp ns3 10.0.3.1 10.0.3.10 10.0.1.0/24 10.0.2.0/24 $SPI1 $SPI2 |
412 | | -do_esp ns3 dead:3::1 dead:3::10 dead:1::/64 dead:2::/64 $SPI1 $SPI2 |
413 | | -do_esp ns4 10.0.3.10 10.0.3.1 10.0.2.0/24 10.0.1.0/24 $SPI2 $SPI1 |
414 | | -do_esp ns4 dead:3::10 dead:3::1 dead:2::/64 dead:1::/64 $SPI2 $SPI1 |
| 411 | +do_esp ${ns[3]} 10.0.3.1 10.0.3.10 10.0.1.0/24 10.0.2.0/24 $SPI1 $SPI2 |
| 412 | +do_esp ${ns[3]} dead:3::1 dead:3::10 dead:1::/64 dead:2::/64 $SPI1 $SPI2 |
| 413 | +do_esp ${ns[4]} 10.0.3.10 10.0.3.1 10.0.2.0/24 10.0.1.0/24 $SPI2 $SPI1 |
| 414 | +do_esp ${ns[4]} dead:3::10 dead:3::1 dead:2::/64 dead:1::/64 $SPI2 $SPI1 |
415 | 415 |
|
416 | | -do_dummies4 ns3 |
417 | | -do_dummies6 ns4 |
| 416 | +do_dummies4 ${ns[3]} |
| 417 | +do_dummies6 ${ns[4]} |
418 | 418 |
|
419 | | -do_esp_policy_get_check ns3 10.0.1.0/24 10.0.2.0/24 |
420 | | -do_esp_policy_get_check ns4 10.0.2.0/24 10.0.1.0/24 |
421 | | -do_esp_policy_get_check ns3 dead:1::/64 dead:2::/64 |
422 | | -do_esp_policy_get_check ns4 dead:2::/64 dead:1::/64 |
| 419 | +do_esp_policy_get_check ${ns[3]} 10.0.1.0/24 10.0.2.0/24 |
| 420 | +do_esp_policy_get_check ${ns[4]} 10.0.2.0/24 10.0.1.0/24 |
| 421 | +do_esp_policy_get_check ${ns[3]} dead:1::/64 dead:2::/64 |
| 422 | +do_esp_policy_get_check ${ns[4]} dead:2::/64 dead:1::/64 |
423 | 423 |
|
424 | 424 | # ping to .254 should use ipsec, exception is not installed. |
425 | 425 | check_xfrm 1 254 |
|
432 | 432 |
|
433 | 433 | # installs exceptions |
434 | 434 | # localip remoteip encryptdst plaindst |
435 | | -do_exception ns3 10.0.3.1 10.0.3.10 10.0.2.253 10.0.2.240/28 |
436 | | -do_exception ns4 10.0.3.10 10.0.3.1 10.0.1.253 10.0.1.240/28 |
| 435 | +do_exception ${ns[3]} 10.0.3.1 10.0.3.10 10.0.2.253 10.0.2.240/28 |
| 436 | +do_exception ${ns[4]} 10.0.3.10 10.0.3.1 10.0.1.253 10.0.1.240/28 |
437 | 437 |
|
438 | | -do_exception ns3 dead:3::1 dead:3::10 dead:2::fd dead:2:f0::/96 |
439 | | -do_exception ns4 dead:3::10 dead:3::1 dead:1::fd dead:1:f0::/96 |
| 438 | +do_exception ${ns[3]} dead:3::1 dead:3::10 dead:2::fd dead:2:f0::/96 |
| 439 | +do_exception ${ns[4]} dead:3::10 dead:3::1 dead:1::fd dead:1:f0::/96 |
440 | 440 |
|
441 | 441 | check_exceptions "exceptions" |
442 | 442 | if [ $? -ne 0 ]; then |
443 | 443 | ret=1 |
444 | 444 | fi |
445 | 445 |
|
446 | 446 | # insert block policies with adjacent/overlapping netmasks |
447 | | -do_overlap ns3 |
| 447 | +do_overlap ${ns[3]} |
448 | 448 |
|
449 | 449 | check_exceptions "exceptions and block policies" |
450 | 450 | if [ $? -ne 0 ]; then |
451 | 451 | ret=1 |
452 | 452 | fi |
453 | 453 |
|
454 | | -for n in ns3 ns4;do |
| 454 | +for n in ${ns[3]} ${ns[4]};do |
455 | 455 | ip -net $n xfrm policy set hthresh4 28 24 hthresh6 126 125 |
456 | 456 | sleep $((RANDOM%5)) |
457 | 457 | done |
458 | 458 |
|
459 | 459 | check_exceptions "exceptions and block policies after hresh changes" |
460 | 460 |
|
461 | 461 | # full flush of policy db, check everything gets freed incl. internal meta data |
462 | | -ip -net ns3 xfrm policy flush |
| 462 | +ip -net ${ns[3]} xfrm policy flush |
463 | 463 |
|
464 | | -do_esp_policy ns3 10.0.3.1 10.0.3.10 10.0.1.0/24 10.0.2.0/24 |
465 | | -do_exception ns3 10.0.3.1 10.0.3.10 10.0.2.253 10.0.2.240/28 |
| 464 | +do_esp_policy ${ns[3]} 10.0.3.1 10.0.3.10 10.0.1.0/24 10.0.2.0/24 |
| 465 | +do_exception ${ns[3]} 10.0.3.1 10.0.3.10 10.0.2.253 10.0.2.240/28 |
466 | 466 |
|
467 | 467 | # move inexact policies to hash table |
468 | | -ip -net ns3 xfrm policy set hthresh4 16 16 |
| 468 | +ip -net ${ns[3]} xfrm policy set hthresh4 16 16 |
469 | 469 |
|
470 | 470 | sleep $((RANDOM%5)) |
471 | 471 | check_exceptions "exceptions and block policies after hthresh change in ns3" |
472 | 472 |
|
473 | 473 | # restore original hthresh settings -- move policies back to tables |
474 | | -for n in ns3 ns4;do |
| 474 | +for n in ${ns[3]} ${ns[4]};do |
475 | 475 | ip -net $n xfrm policy set hthresh4 32 32 hthresh6 128 128 |
476 | 476 | sleep $((RANDOM%5)) |
477 | 477 | done |
478 | 478 | check_exceptions "exceptions and block policies after htresh change to normal" |
479 | 479 |
|
480 | 480 | check_hthresh_repeat "policies with repeated htresh change" |
481 | 481 |
|
482 | | -check_random_order ns3 "policies inserted in random order" |
| 482 | +check_random_order ${ns[3]} "policies inserted in random order" |
483 | 483 |
|
484 | | -for i in 1 2 3 4;do ip netns del ns$i;done |
| 484 | +cleanup_ns $ns1 $ns2 $ns3 $ns4 |
485 | 485 |
|
486 | 486 | exit $ret |
0 commit comments