1cab14d10SDavid Ahern#!/bin/bash 2cab14d10SDavid Ahern# SPDX-License-Identifier: GPL-2.0 3cab14d10SDavid Ahern 4*ba7d1e99SPetr Machata# +-------------------------+ 5*ba7d1e99SPetr Machata# | H1 | 6*ba7d1e99SPetr Machata# | $h1 + | 7*ba7d1e99SPetr Machata# | 192.0.2.2/24 | | 8*ba7d1e99SPetr Machata# | 2001:db8:1::2/64 | | 9*ba7d1e99SPetr Machata# +-------------------|-----+ 10*ba7d1e99SPetr Machata# | 11*ba7d1e99SPetr Machata# +-------------------|----------------------+ 12*ba7d1e99SPetr Machata# | | R1 | 13*ba7d1e99SPetr Machata# | $rp11 + | 14*ba7d1e99SPetr Machata# | 192.0.2.1/24 | 15*ba7d1e99SPetr Machata# | 2001:db8:1::1/64 | 16*ba7d1e99SPetr Machata# | | 17*ba7d1e99SPetr Machata# | + $rp12 + $rp13 | 18*ba7d1e99SPetr Machata# | | 169.254.2.12/24 | 169.254.3.13/24 | 19*ba7d1e99SPetr Machata# | | fe80:2::12/64 | fe80:3::13/64 | 20*ba7d1e99SPetr Machata# +--|--------------------|------------------+ 21*ba7d1e99SPetr Machata# | | 22*ba7d1e99SPetr Machata# +--|--------------------|------------------+ 23*ba7d1e99SPetr Machata# | + $rp22 + $rp23 | 24*ba7d1e99SPetr Machata# | 169.254.2.22/24 169.254.3.23/24 | 25*ba7d1e99SPetr Machata# | fe80:2::22/64 fe80:3::23/64 | 26*ba7d1e99SPetr Machata# | | 27*ba7d1e99SPetr Machata# | $rp21 + | 28*ba7d1e99SPetr Machata# | 198.51.100.1/24 | | 29*ba7d1e99SPetr Machata# | 2001:db8:2::1/64 | R2 | 30*ba7d1e99SPetr Machata# +-------------------|----------------------+ 31*ba7d1e99SPetr Machata# | 32*ba7d1e99SPetr Machata# +-------------------|-----+ 33*ba7d1e99SPetr Machata# | | | 34*ba7d1e99SPetr Machata# | $h2 + | 35*ba7d1e99SPetr Machata# | 198.51.100.2/24 | 36*ba7d1e99SPetr Machata# | 2001:db8:2::2/64 H2 | 37*ba7d1e99SPetr Machata# +-------------------------+ 38*ba7d1e99SPetr Machata 391beaff77SIdo SchimmelALL_TESTS=" 401beaff77SIdo Schimmel ping_ipv4 411beaff77SIdo Schimmel ping_ipv6 421beaff77SIdo Schimmel multipath_test 431beaff77SIdo Schimmel ping_ipv4_blackhole 441beaff77SIdo Schimmel ping_ipv6_blackhole 45a22b0426SPetr Machata nh_stats_test_v4 46a22b0426SPetr Machata nh_stats_test_v6 471beaff77SIdo Schimmel" 48cab14d10SDavid AhernNUM_NETIFS=8 49cab14d10SDavid Ahernsource lib.sh 50a22b0426SPetr Machatasource router_mpath_nh_lib.sh 51cab14d10SDavid Ahern 52cab14d10SDavid Ahernh1_create() 53cab14d10SDavid Ahern{ 54cab14d10SDavid Ahern vrf_create "vrf-h1" 55cab14d10SDavid Ahern ip link set dev $h1 master vrf-h1 56cab14d10SDavid Ahern 57cab14d10SDavid Ahern ip link set dev vrf-h1 up 58cab14d10SDavid Ahern ip link set dev $h1 up 59cab14d10SDavid Ahern 60cab14d10SDavid Ahern ip address add 192.0.2.2/24 dev $h1 61cab14d10SDavid Ahern ip address add 2001:db8:1::2/64 dev $h1 62cab14d10SDavid Ahern 63cab14d10SDavid Ahern ip route add 198.51.100.0/24 vrf vrf-h1 nexthop via 192.0.2.1 64cab14d10SDavid Ahern ip route add 2001:db8:2::/64 vrf vrf-h1 nexthop via 2001:db8:1::1 65cab14d10SDavid Ahern} 66cab14d10SDavid Ahern 67cab14d10SDavid Ahernh1_destroy() 68cab14d10SDavid Ahern{ 69cab14d10SDavid Ahern ip route del 2001:db8:2::/64 vrf vrf-h1 70cab14d10SDavid Ahern ip route del 198.51.100.0/24 vrf vrf-h1 71cab14d10SDavid Ahern 72cab14d10SDavid Ahern ip address del 2001:db8:1::2/64 dev $h1 73cab14d10SDavid Ahern ip address del 192.0.2.2/24 dev $h1 74cab14d10SDavid Ahern 75cab14d10SDavid Ahern ip link set dev $h1 down 76cab14d10SDavid Ahern vrf_destroy "vrf-h1" 77cab14d10SDavid Ahern} 78cab14d10SDavid Ahern 79cab14d10SDavid Ahernh2_create() 80cab14d10SDavid Ahern{ 81cab14d10SDavid Ahern vrf_create "vrf-h2" 82cab14d10SDavid Ahern ip link set dev $h2 master vrf-h2 83cab14d10SDavid Ahern 84cab14d10SDavid Ahern ip link set dev vrf-h2 up 85cab14d10SDavid Ahern ip link set dev $h2 up 86cab14d10SDavid Ahern 87cab14d10SDavid Ahern ip address add 198.51.100.2/24 dev $h2 88cab14d10SDavid Ahern ip address add 2001:db8:2::2/64 dev $h2 89cab14d10SDavid Ahern 90cab14d10SDavid Ahern ip route add 192.0.2.0/24 vrf vrf-h2 nexthop via 198.51.100.1 91cab14d10SDavid Ahern ip route add 2001:db8:1::/64 vrf vrf-h2 nexthop via 2001:db8:2::1 92cab14d10SDavid Ahern} 93cab14d10SDavid Ahern 94cab14d10SDavid Ahernh2_destroy() 95cab14d10SDavid Ahern{ 96cab14d10SDavid Ahern ip route del 2001:db8:1::/64 vrf vrf-h2 97cab14d10SDavid Ahern ip route del 192.0.2.0/24 vrf vrf-h2 98cab14d10SDavid Ahern 99cab14d10SDavid Ahern ip address del 2001:db8:2::2/64 dev $h2 100cab14d10SDavid Ahern ip address del 198.51.100.2/24 dev $h2 101cab14d10SDavid Ahern 102cab14d10SDavid Ahern ip link set dev $h2 down 103cab14d10SDavid Ahern vrf_destroy "vrf-h2" 104cab14d10SDavid Ahern} 105cab14d10SDavid Ahern 106cab14d10SDavid Ahernrouter1_create() 107cab14d10SDavid Ahern{ 108cab14d10SDavid Ahern vrf_create "vrf-r1" 109cab14d10SDavid Ahern ip link set dev $rp11 master vrf-r1 110cab14d10SDavid Ahern ip link set dev $rp12 master vrf-r1 111cab14d10SDavid Ahern ip link set dev $rp13 master vrf-r1 112cab14d10SDavid Ahern 113cab14d10SDavid Ahern ip link set dev vrf-r1 up 114cab14d10SDavid Ahern ip link set dev $rp11 up 115cab14d10SDavid Ahern ip link set dev $rp12 up 116cab14d10SDavid Ahern ip link set dev $rp13 up 117cab14d10SDavid Ahern 118cab14d10SDavid Ahern ip address add 192.0.2.1/24 dev $rp11 119cab14d10SDavid Ahern ip address add 2001:db8:1::1/64 dev $rp11 120cab14d10SDavid Ahern 121cab14d10SDavid Ahern ip address add 169.254.2.12/24 dev $rp12 122cab14d10SDavid Ahern ip address add fe80:2::12/64 dev $rp12 123cab14d10SDavid Ahern 124cab14d10SDavid Ahern ip address add 169.254.3.13/24 dev $rp13 125cab14d10SDavid Ahern ip address add fe80:3::13/64 dev $rp13 126cab14d10SDavid Ahern} 127cab14d10SDavid Ahern 128cab14d10SDavid Ahernrouter1_destroy() 129cab14d10SDavid Ahern{ 130cab14d10SDavid Ahern ip route del 2001:db8:2::/64 vrf vrf-r1 131cab14d10SDavid Ahern ip route del 198.51.100.0/24 vrf vrf-r1 132cab14d10SDavid Ahern 133cab14d10SDavid Ahern ip address del fe80:3::13/64 dev $rp13 134cab14d10SDavid Ahern ip address del 169.254.3.13/24 dev $rp13 135cab14d10SDavid Ahern 136cab14d10SDavid Ahern ip address del fe80:2::12/64 dev $rp12 137cab14d10SDavid Ahern ip address del 169.254.2.12/24 dev $rp12 138cab14d10SDavid Ahern 139cab14d10SDavid Ahern ip address del 2001:db8:1::1/64 dev $rp11 140cab14d10SDavid Ahern ip address del 192.0.2.1/24 dev $rp11 141cab14d10SDavid Ahern 142cab14d10SDavid Ahern ip nexthop del id 103 143cab14d10SDavid Ahern ip nexthop del id 101 144cab14d10SDavid Ahern ip nexthop del id 102 145cab14d10SDavid Ahern ip nexthop del id 106 146cab14d10SDavid Ahern ip nexthop del id 104 147cab14d10SDavid Ahern ip nexthop del id 105 148cab14d10SDavid Ahern 149cab14d10SDavid Ahern ip link set dev $rp13 down 150cab14d10SDavid Ahern ip link set dev $rp12 down 151cab14d10SDavid Ahern ip link set dev $rp11 down 152cab14d10SDavid Ahern 153cab14d10SDavid Ahern vrf_destroy "vrf-r1" 154cab14d10SDavid Ahern} 155cab14d10SDavid Ahern 156cab14d10SDavid Ahernrouter2_create() 157cab14d10SDavid Ahern{ 158cab14d10SDavid Ahern vrf_create "vrf-r2" 159cab14d10SDavid Ahern ip link set dev $rp21 master vrf-r2 160cab14d10SDavid Ahern ip link set dev $rp22 master vrf-r2 161cab14d10SDavid Ahern ip link set dev $rp23 master vrf-r2 162cab14d10SDavid Ahern 163cab14d10SDavid Ahern ip link set dev vrf-r2 up 164cab14d10SDavid Ahern ip link set dev $rp21 up 165cab14d10SDavid Ahern ip link set dev $rp22 up 166cab14d10SDavid Ahern ip link set dev $rp23 up 167cab14d10SDavid Ahern 168cab14d10SDavid Ahern ip address add 198.51.100.1/24 dev $rp21 169cab14d10SDavid Ahern ip address add 2001:db8:2::1/64 dev $rp21 170cab14d10SDavid Ahern 171cab14d10SDavid Ahern ip address add 169.254.2.22/24 dev $rp22 172cab14d10SDavid Ahern ip address add fe80:2::22/64 dev $rp22 173cab14d10SDavid Ahern 174cab14d10SDavid Ahern ip address add 169.254.3.23/24 dev $rp23 175cab14d10SDavid Ahern ip address add fe80:3::23/64 dev $rp23 176cab14d10SDavid Ahern} 177cab14d10SDavid Ahern 178cab14d10SDavid Ahernrouter2_destroy() 179cab14d10SDavid Ahern{ 180cab14d10SDavid Ahern ip route del 2001:db8:1::/64 vrf vrf-r2 181cab14d10SDavid Ahern ip route del 192.0.2.0/24 vrf vrf-r2 182cab14d10SDavid Ahern 183cab14d10SDavid Ahern ip address del fe80:3::23/64 dev $rp23 184cab14d10SDavid Ahern ip address del 169.254.3.23/24 dev $rp23 185cab14d10SDavid Ahern 186cab14d10SDavid Ahern ip address del fe80:2::22/64 dev $rp22 187cab14d10SDavid Ahern ip address del 169.254.2.22/24 dev $rp22 188cab14d10SDavid Ahern 189cab14d10SDavid Ahern ip address del 2001:db8:2::1/64 dev $rp21 190cab14d10SDavid Ahern ip address del 198.51.100.1/24 dev $rp21 191cab14d10SDavid Ahern 192cab14d10SDavid Ahern ip nexthop del id 201 193cab14d10SDavid Ahern ip nexthop del id 202 194cab14d10SDavid Ahern ip nexthop del id 204 195cab14d10SDavid Ahern ip nexthop del id 205 196cab14d10SDavid Ahern 197cab14d10SDavid Ahern ip link set dev $rp23 down 198cab14d10SDavid Ahern ip link set dev $rp22 down 199cab14d10SDavid Ahern ip link set dev $rp21 down 200cab14d10SDavid Ahern 201cab14d10SDavid Ahern vrf_destroy "vrf-r2" 202cab14d10SDavid Ahern} 203cab14d10SDavid Ahern 204cab14d10SDavid Ahernrouting_nh_obj() 205cab14d10SDavid Ahern{ 206cab14d10SDavid Ahern ip nexthop add id 101 via 169.254.2.22 dev $rp12 207cab14d10SDavid Ahern ip nexthop add id 102 via 169.254.3.23 dev $rp13 208cab14d10SDavid Ahern ip nexthop add id 103 group 101/102 209cab14d10SDavid Ahern ip route add 198.51.100.0/24 vrf vrf-r1 nhid 103 210cab14d10SDavid Ahern 211cab14d10SDavid Ahern ip nexthop add id 104 via fe80:2::22 dev $rp12 212cab14d10SDavid Ahern ip nexthop add id 105 via fe80:3::23 dev $rp13 213cab14d10SDavid Ahern ip nexthop add id 106 group 104/105 214cab14d10SDavid Ahern ip route add 2001:db8:2::/64 vrf vrf-r1 nhid 106 215cab14d10SDavid Ahern 216cab14d10SDavid Ahern ip nexthop add id 201 via 169.254.2.12 dev $rp22 217cab14d10SDavid Ahern ip nexthop add id 202 via 169.254.3.13 dev $rp23 218cab14d10SDavid Ahern ip nexthop add id 203 group 201/202 219cab14d10SDavid Ahern ip route add 192.0.2.0/24 vrf vrf-r2 nhid 203 220cab14d10SDavid Ahern 221cab14d10SDavid Ahern ip nexthop add id 204 via fe80:2::12 dev $rp22 222cab14d10SDavid Ahern ip nexthop add id 205 via fe80:3::13 dev $rp23 223cab14d10SDavid Ahern ip nexthop add id 206 group 204/205 224cab14d10SDavid Ahern ip route add 2001:db8:1::/64 vrf vrf-r2 nhid 206 225cab14d10SDavid Ahern} 226cab14d10SDavid Ahern 227cab14d10SDavid Ahernmultipath4_test() 228cab14d10SDavid Ahern{ 229cab14d10SDavid Ahern local desc="$1" 230cab14d10SDavid Ahern local weight_rp12=$2 231cab14d10SDavid Ahern local weight_rp13=$3 232cab14d10SDavid Ahern local t0_rp12 t0_rp13 t1_rp12 t1_rp13 233cab14d10SDavid Ahern local packets_rp12 packets_rp13 234cab14d10SDavid Ahern 235cab14d10SDavid Ahern # Transmit multiple flows from h1 to h2 and make sure they are 236cab14d10SDavid Ahern # distributed between both multipath links (rp12 and rp13) 237cab14d10SDavid Ahern # according to the configured weights. 238cab14d10SDavid Ahern sysctl_set net.ipv4.fib_multipath_hash_policy 1 239cab14d10SDavid Ahern ip nexthop replace id 103 group 101,$weight_rp12/102,$weight_rp13 240cab14d10SDavid Ahern 241cab14d10SDavid Ahern t0_rp12=$(link_stats_tx_packets_get $rp12) 242cab14d10SDavid Ahern t0_rp13=$(link_stats_tx_packets_get $rp13) 243cab14d10SDavid Ahern 24411df27f7SDanielle Ratson ip vrf exec vrf-h1 $MZ $h1 -q -p 64 -A 192.0.2.2 -B 198.51.100.2 \ 245748d2744SIdo Schimmel -d $MZ_DELAY -t udp "sp=1024,dp=0-32768" 246cab14d10SDavid Ahern 247cab14d10SDavid Ahern t1_rp12=$(link_stats_tx_packets_get $rp12) 248cab14d10SDavid Ahern t1_rp13=$(link_stats_tx_packets_get $rp13) 249cab14d10SDavid Ahern 250cab14d10SDavid Ahern let "packets_rp12 = $t1_rp12 - $t0_rp12" 251cab14d10SDavid Ahern let "packets_rp13 = $t1_rp13 - $t0_rp13" 252cab14d10SDavid Ahern multipath_eval "$desc" $weight_rp12 $weight_rp13 $packets_rp12 $packets_rp13 253cab14d10SDavid Ahern 254cab14d10SDavid Ahern # Restore settings. 255cab14d10SDavid Ahern ip nexthop replace id 103 group 101/102 256cab14d10SDavid Ahern sysctl_restore net.ipv4.fib_multipath_hash_policy 257cab14d10SDavid Ahern} 258cab14d10SDavid Ahern 2597b2d64f9SIdo Schimmelmultipath6_test() 260cab14d10SDavid Ahern{ 261cab14d10SDavid Ahern local desc="$1" 262cab14d10SDavid Ahern local weight_rp12=$2 263cab14d10SDavid Ahern local weight_rp13=$3 264cab14d10SDavid Ahern local t0_rp12 t0_rp13 t1_rp12 t1_rp13 265cab14d10SDavid Ahern local packets_rp12 packets_rp13 266cab14d10SDavid Ahern 267cab14d10SDavid Ahern # Transmit multiple flows from h1 to h2 and make sure they are 268cab14d10SDavid Ahern # distributed between both multipath links (rp12 and rp13) 269cab14d10SDavid Ahern # according to the configured weights. 270cab14d10SDavid Ahern sysctl_set net.ipv6.fib_multipath_hash_policy 1 271cab14d10SDavid Ahern 272cab14d10SDavid Ahern ip nexthop replace id 106 group 104,$weight_rp12/105,$weight_rp13 273cab14d10SDavid Ahern 274cab14d10SDavid Ahern t0_rp12=$(link_stats_tx_packets_get $rp12) 275cab14d10SDavid Ahern t0_rp13=$(link_stats_tx_packets_get $rp13) 276cab14d10SDavid Ahern 277cab14d10SDavid Ahern $MZ $h1 -6 -q -p 64 -A 2001:db8:1::2 -B 2001:db8:2::2 \ 278748d2744SIdo Schimmel -d $MZ_DELAY -t udp "sp=1024,dp=0-32768" 279cab14d10SDavid Ahern 280cab14d10SDavid Ahern t1_rp12=$(link_stats_tx_packets_get $rp12) 281cab14d10SDavid Ahern t1_rp13=$(link_stats_tx_packets_get $rp13) 282cab14d10SDavid Ahern 283cab14d10SDavid Ahern let "packets_rp12 = $t1_rp12 - $t0_rp12" 284cab14d10SDavid Ahern let "packets_rp13 = $t1_rp13 - $t0_rp13" 285cab14d10SDavid Ahern multipath_eval "$desc" $weight_rp12 $weight_rp13 $packets_rp12 $packets_rp13 286cab14d10SDavid Ahern 287cab14d10SDavid Ahern ip nexthop replace id 106 group 104/105 288cab14d10SDavid Ahern 289cab14d10SDavid Ahern sysctl_restore net.ipv6.fib_multipath_hash_policy 290cab14d10SDavid Ahern} 291cab14d10SDavid Ahern 292cab14d10SDavid Ahernmultipath_test() 293cab14d10SDavid Ahern{ 294cab14d10SDavid Ahern log_info "Running IPv4 multipath tests" 295cab14d10SDavid Ahern multipath4_test "ECMP" 1 1 296cab14d10SDavid Ahern multipath4_test "Weighted MP 2:1" 2 1 297cab14d10SDavid Ahern multipath4_test "Weighted MP 11:45" 11 45 298cab14d10SDavid Ahern 2993600f29aSIdo Schimmel log_info "Running IPv4 multipath tests with IPv6 link-local nexthops" 3003600f29aSIdo Schimmel ip nexthop replace id 101 via fe80:2::22 dev $rp12 3013600f29aSIdo Schimmel ip nexthop replace id 102 via fe80:3::23 dev $rp13 3023600f29aSIdo Schimmel 3033600f29aSIdo Schimmel multipath4_test "ECMP" 1 1 3043600f29aSIdo Schimmel multipath4_test "Weighted MP 2:1" 2 1 3053600f29aSIdo Schimmel multipath4_test "Weighted MP 11:45" 11 45 3063600f29aSIdo Schimmel 3073600f29aSIdo Schimmel ip nexthop replace id 102 via 169.254.3.23 dev $rp13 3083600f29aSIdo Schimmel ip nexthop replace id 101 via 169.254.2.22 dev $rp12 3093600f29aSIdo Schimmel 310cab14d10SDavid Ahern log_info "Running IPv6 multipath tests" 311cab14d10SDavid Ahern multipath6_test "ECMP" 1 1 312cab14d10SDavid Ahern multipath6_test "Weighted MP 2:1" 2 1 313cab14d10SDavid Ahern multipath6_test "Weighted MP 11:45" 11 45 314cab14d10SDavid Ahern} 315cab14d10SDavid Ahern 3161beaff77SIdo Schimmelping_ipv4_blackhole() 3171beaff77SIdo Schimmel{ 3181beaff77SIdo Schimmel RET=0 3191beaff77SIdo Schimmel 3201beaff77SIdo Schimmel ip nexthop add id 1001 blackhole 3211beaff77SIdo Schimmel ip nexthop add id 1002 group 1001 3221beaff77SIdo Schimmel 3231beaff77SIdo Schimmel ip route replace 198.51.100.0/24 vrf vrf-r1 nhid 1001 3241beaff77SIdo Schimmel ping_do $h1 198.51.100.2 3251beaff77SIdo Schimmel check_fail $? "ping did not fail when using a blackhole nexthop" 3261beaff77SIdo Schimmel 3271beaff77SIdo Schimmel ip route replace 198.51.100.0/24 vrf vrf-r1 nhid 1002 3281beaff77SIdo Schimmel ping_do $h1 198.51.100.2 3291beaff77SIdo Schimmel check_fail $? "ping did not fail when using a blackhole nexthop group" 3301beaff77SIdo Schimmel 3311beaff77SIdo Schimmel ip route replace 198.51.100.0/24 vrf vrf-r1 nhid 103 3321beaff77SIdo Schimmel ping_do $h1 198.51.100.2 3331beaff77SIdo Schimmel check_err $? "ping failed with a valid nexthop" 3341beaff77SIdo Schimmel 3351beaff77SIdo Schimmel log_test "IPv4 blackhole ping" 3361beaff77SIdo Schimmel 3371beaff77SIdo Schimmel ip nexthop del id 1002 3381beaff77SIdo Schimmel ip nexthop del id 1001 3391beaff77SIdo Schimmel} 3401beaff77SIdo Schimmel 3411beaff77SIdo Schimmelping_ipv6_blackhole() 3421beaff77SIdo Schimmel{ 3431beaff77SIdo Schimmel RET=0 3441beaff77SIdo Schimmel 3451beaff77SIdo Schimmel ip -6 nexthop add id 1001 blackhole 3461beaff77SIdo Schimmel ip nexthop add id 1002 group 1001 3471beaff77SIdo Schimmel 3481beaff77SIdo Schimmel ip route replace 2001:db8:2::/64 vrf vrf-r1 nhid 1001 3491beaff77SIdo Schimmel ping6_do $h1 2001:db8:2::2 3501beaff77SIdo Schimmel check_fail $? "ping did not fail when using a blackhole nexthop" 3511beaff77SIdo Schimmel 3521beaff77SIdo Schimmel ip route replace 2001:db8:2::/64 vrf vrf-r1 nhid 1002 3531beaff77SIdo Schimmel ping6_do $h1 2001:db8:2::2 3541beaff77SIdo Schimmel check_fail $? "ping did not fail when using a blackhole nexthop group" 3551beaff77SIdo Schimmel 3561beaff77SIdo Schimmel ip route replace 2001:db8:2::/64 vrf vrf-r1 nhid 106 3571beaff77SIdo Schimmel ping6_do $h1 2001:db8:2::2 3581beaff77SIdo Schimmel check_err $? "ping failed with a valid nexthop" 3591beaff77SIdo Schimmel 3601beaff77SIdo Schimmel log_test "IPv6 blackhole ping" 3611beaff77SIdo Schimmel 3621beaff77SIdo Schimmel ip nexthop del id 1002 3631beaff77SIdo Schimmel ip -6 nexthop del id 1001 3641beaff77SIdo Schimmel} 3651beaff77SIdo Schimmel 366a22b0426SPetr Machatanh_stats_test_v4() 367a22b0426SPetr Machata{ 368a22b0426SPetr Machata __nh_stats_test_v4 mpath 369a22b0426SPetr Machata} 370a22b0426SPetr Machata 371a22b0426SPetr Machatanh_stats_test_v6() 372a22b0426SPetr Machata{ 373a22b0426SPetr Machata __nh_stats_test_v6 mpath 374a22b0426SPetr Machata} 375a22b0426SPetr Machata 376cab14d10SDavid Ahernsetup_prepare() 377cab14d10SDavid Ahern{ 378cab14d10SDavid Ahern h1=${NETIFS[p1]} 379cab14d10SDavid Ahern rp11=${NETIFS[p2]} 380cab14d10SDavid Ahern 381cab14d10SDavid Ahern rp12=${NETIFS[p3]} 382cab14d10SDavid Ahern rp22=${NETIFS[p4]} 383cab14d10SDavid Ahern 384cab14d10SDavid Ahern rp13=${NETIFS[p5]} 385cab14d10SDavid Ahern rp23=${NETIFS[p6]} 386cab14d10SDavid Ahern 387cab14d10SDavid Ahern rp21=${NETIFS[p7]} 388cab14d10SDavid Ahern h2=${NETIFS[p8]} 389cab14d10SDavid Ahern 390cab14d10SDavid Ahern vrf_prepare 391cab14d10SDavid Ahern 392cab14d10SDavid Ahern h1_create 393cab14d10SDavid Ahern h2_create 394cab14d10SDavid Ahern 395cab14d10SDavid Ahern router1_create 396cab14d10SDavid Ahern router2_create 397cab14d10SDavid Ahern 398cab14d10SDavid Ahern forwarding_enable 399cab14d10SDavid Ahern} 400cab14d10SDavid Ahern 401cab14d10SDavid Aherncleanup() 402cab14d10SDavid Ahern{ 403cab14d10SDavid Ahern pre_cleanup 404cab14d10SDavid Ahern 405cab14d10SDavid Ahern forwarding_restore 406cab14d10SDavid Ahern 407cab14d10SDavid Ahern router2_destroy 408cab14d10SDavid Ahern router1_destroy 409cab14d10SDavid Ahern 410cab14d10SDavid Ahern h2_destroy 411cab14d10SDavid Ahern h1_destroy 412cab14d10SDavid Ahern 413cab14d10SDavid Ahern vrf_cleanup 414cab14d10SDavid Ahern} 415cab14d10SDavid Ahern 416cab14d10SDavid Ahernping_ipv4() 417cab14d10SDavid Ahern{ 418cab14d10SDavid Ahern ping_test $h1 198.51.100.2 419cab14d10SDavid Ahern} 420cab14d10SDavid Ahern 421cab14d10SDavid Ahernping_ipv6() 422cab14d10SDavid Ahern{ 423cab14d10SDavid Ahern ping6_test $h1 2001:db8:2::2 424cab14d10SDavid Ahern} 425cab14d10SDavid Ahern 426cab14d10SDavid Ahernip nexthop ls >/dev/null 2>&1 427cab14d10SDavid Ahernif [ $? -ne 0 ]; then 428cab14d10SDavid Ahern echo "Nexthop objects not supported; skipping tests" 4297844ec21SPo-Hsu Lin exit $ksft_skip 430cab14d10SDavid Ahernfi 431cab14d10SDavid Ahern 432cab14d10SDavid Aherntrap cleanup EXIT 433cab14d10SDavid Ahern 434cab14d10SDavid Ahernsetup_prepare 435cab14d10SDavid Ahernsetup_wait 436cab14d10SDavid Ahernrouting_nh_obj 437cab14d10SDavid Ahern 438cab14d10SDavid Aherntests_run 439cab14d10SDavid Ahern 440cab14d10SDavid Ahernexit $EXIT_STATUS 441