|
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