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