|
9 | 9 | ksft_skip=4 |
10 | 10 |
|
11 | 11 | # all tests in this script. Can be overridden with -t option |
12 | | -TESTS="unregister down carrier nexthop suppress ipv6_notify ipv4_notify ipv6_rt ipv4_rt ipv6_addr_metric ipv4_addr_metric ipv6_route_metrics ipv4_route_metrics ipv4_route_v6_gw rp_filter ipv4_del_addr ipv4_mangle ipv6_mangle ipv4_bcast_neigh" |
| 12 | +TESTS="unregister down carrier nexthop suppress ipv6_notify ipv4_notify \ |
| 13 | + ipv6_rt ipv4_rt ipv6_addr_metric ipv4_addr_metric ipv6_route_metrics \ |
| 14 | + ipv4_route_metrics ipv4_route_v6_gw rp_filter ipv4_del_addr \ |
| 15 | + ipv4_mangle ipv6_mangle ipv4_bcast_neigh fib6_gc_test" |
13 | 16 |
|
14 | 17 | VERBOSE=0 |
15 | 18 | PAUSE_ON_FAIL=no |
16 | 19 | PAUSE=no |
17 | | -IP="ip -netns ns1" |
18 | | -NS_EXEC="ip netns exec ns1" |
| 20 | +IP="$(which ip) -netns ns1" |
| 21 | +NS_EXEC="$(which ip) netns exec ns1" |
19 | 22 |
|
20 | 23 | which ping6 > /dev/null 2>&1 && ping6=$(which ping6) || ping6=$(which ping) |
21 | 24 |
|
@@ -747,6 +750,68 @@ fib_notify_test() |
747 | 750 | cleanup &> /dev/null |
748 | 751 | } |
749 | 752 |
|
| 753 | +fib6_gc_test() |
| 754 | +{ |
| 755 | + setup |
| 756 | + |
| 757 | + echo |
| 758 | + echo "Fib6 garbage collection test" |
| 759 | + set -e |
| 760 | + |
| 761 | + EXPIRE=3 |
| 762 | + |
| 763 | + # Check expiration of routes every $EXPIRE seconds (GC) |
| 764 | + $NS_EXEC sysctl -wq net.ipv6.route.gc_interval=$EXPIRE |
| 765 | + |
| 766 | + $IP link add dummy_10 type dummy |
| 767 | + $IP link set dev dummy_10 up |
| 768 | + $IP -6 address add 2001:10::1/64 dev dummy_10 |
| 769 | + |
| 770 | + $NS_EXEC sysctl -wq net.ipv6.route.flush=1 |
| 771 | + |
| 772 | + # Temporary routes |
| 773 | + for i in $(seq 1 1000); do |
| 774 | + # Expire route after $EXPIRE seconds |
| 775 | + $IP -6 route add 2001:20::$i \ |
| 776 | + via 2001:10::2 dev dummy_10 expires $EXPIRE |
| 777 | + done |
| 778 | + sleep $(($EXPIRE * 2)) |
| 779 | + N_EXP_SLEEP=$($IP -6 route list |grep expires|wc -l) |
| 780 | + if [ $N_EXP_SLEEP -ne 0 ]; then |
| 781 | + echo "FAIL: expected 0 routes with expires, got $N_EXP_SLEEP" |
| 782 | + ret=1 |
| 783 | + else |
| 784 | + ret=0 |
| 785 | + fi |
| 786 | + |
| 787 | + # Permanent routes |
| 788 | + for i in $(seq 1 5000); do |
| 789 | + $IP -6 route add 2001:30::$i \ |
| 790 | + via 2001:10::2 dev dummy_10 |
| 791 | + done |
| 792 | + # Temporary routes |
| 793 | + for i in $(seq 1 1000); do |
| 794 | + # Expire route after $EXPIRE seconds |
| 795 | + $IP -6 route add 2001:20::$i \ |
| 796 | + via 2001:10::2 dev dummy_10 expires $EXPIRE |
| 797 | + done |
| 798 | + sleep $(($EXPIRE * 2)) |
| 799 | + N_EXP_SLEEP=$($IP -6 route list |grep expires|wc -l) |
| 800 | + if [ $N_EXP_SLEEP -ne 0 ]; then |
| 801 | + echo "FAIL: expected 0 routes with expires," \ |
| 802 | + "got $N_EXP_SLEEP (5000 permanent routes)" |
| 803 | + ret=1 |
| 804 | + else |
| 805 | + ret=0 |
| 806 | + fi |
| 807 | + |
| 808 | + set +e |
| 809 | + |
| 810 | + log_test $ret 0 "ipv6 route garbage collection" |
| 811 | + |
| 812 | + cleanup &> /dev/null |
| 813 | +} |
| 814 | + |
750 | 815 | fib_suppress_test() |
751 | 816 | { |
752 | 817 | echo |
|
2217 | 2282 | ipv4_mangle) ipv4_mangle_test;; |
2218 | 2283 | ipv6_mangle) ipv6_mangle_test;; |
2219 | 2284 | ipv4_bcast_neigh) ipv4_bcast_neigh_test;; |
| 2285 | + fib6_gc_test|ipv6_gc) fib6_gc_test;; |
2220 | 2286 |
|
2221 | 2287 | help) echo "Test names: $TESTS"; exit 0;; |
2222 | 2288 | esac |
|
0 commit comments