__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0

# +-------------------------+
# |  H1                     |
# |               $h1 +     |
# |      192.0.2.2/24 |     |
# |  2001:db8:1::2/64 |     |
# +-------------------|-----+
#                     |
# +-------------------|----------------------+
# |                   |                   R1 |
# |             $rp11 +                      |
# |      192.0.2.1/24                        |
# |  2001:db8:1::1/64                        |
# |                                          |
# |  + $rp12              + $rp13            |
# |  | 169.254.2.12/24    | 169.254.3.13/24  |
# |  | fe80:2::12/64      | fe80:3::13/64    |
# +--|--------------------|------------------+
#    |                    |
# +--|--------------------|------------------+
# |  + $rp22              + $rp23            |
# |    169.254.2.22/24      169.254.3.23/24  |
# |    fe80:2::22/64        fe80:3::23/64    |
# |                                          |
# |             $rp21 +                      |
# |   198.51.100.1/24 |                      |
# |  2001:db8:2::1/64 |                   R2 |
# +-------------------|----------------------+
#                     |
# +-------------------|-----+
# |                   |     |
# |               $h2 +     |
# |   198.51.100.2/24       |
# |  2001:db8:2::2/64    H2 |
# +-------------------------+

ALL_TESTS="
	ping_ipv4
	ping_ipv6
	multipath_test
	multipath16_test
	ping_ipv4_blackhole
	ping_ipv6_blackhole
	nh_stats_test_v4
	nh_stats_test_v6
"
NUM_NETIFS=8
source lib.sh
source router_mpath_nh_lib.sh

h1_create()
{
	vrf_create "vrf-h1"
	ip link set dev $h1 master vrf-h1

	ip link set dev vrf-h1 up
	ip link set dev $h1 up

	ip address add 192.0.2.2/24 dev $h1
	ip address add 2001:db8:1::2/64 dev $h1

	ip route add 198.51.100.0/24 vrf vrf-h1 nexthop via 192.0.2.1
	ip route add 2001:db8:2::/64 vrf vrf-h1 nexthop via 2001:db8:1::1
}

h1_destroy()
{
	ip route del 2001:db8:2::/64 vrf vrf-h1
	ip route del 198.51.100.0/24 vrf vrf-h1

	ip address del 2001:db8:1::2/64 dev $h1
	ip address del 192.0.2.2/24 dev $h1

	ip link set dev $h1 down
	vrf_destroy "vrf-h1"
}

h2_create()
{
	vrf_create "vrf-h2"
	ip link set dev $h2 master vrf-h2

	ip link set dev vrf-h2 up
	ip link set dev $h2 up

	ip address add 198.51.100.2/24 dev $h2
	ip address add 2001:db8:2::2/64 dev $h2

	ip route add 192.0.2.0/24 vrf vrf-h2 nexthop via 198.51.100.1
	ip route add 2001:db8:1::/64 vrf vrf-h2 nexthop via 2001:db8:2::1
}

h2_destroy()
{
	ip route del 2001:db8:1::/64 vrf vrf-h2
	ip route del 192.0.2.0/24 vrf vrf-h2

	ip address del 2001:db8:2::2/64 dev $h2
	ip address del 198.51.100.2/24 dev $h2

	ip link set dev $h2 down
	vrf_destroy "vrf-h2"
}

router1_create()
{
	vrf_create "vrf-r1"
	ip link set dev $rp11 master vrf-r1
	ip link set dev $rp12 master vrf-r1
	ip link set dev $rp13 master vrf-r1

	ip link set dev vrf-r1 up
	ip link set dev $rp11 up
	ip link set dev $rp12 up
	ip link set dev $rp13 up

	ip address add 192.0.2.1/24 dev $rp11
	ip address add 2001:db8:1::1/64 dev $rp11

	ip address add 169.254.2.12/24 dev $rp12
	ip address add fe80:2::12/64 dev $rp12

	ip address add 169.254.3.13/24 dev $rp13
	ip address add fe80:3::13/64 dev $rp13
}

router1_destroy()
{
	ip route del 2001:db8:2::/64 vrf vrf-r1
	ip route del 198.51.100.0/24 vrf vrf-r1

	ip address del fe80:3::13/64 dev $rp13
	ip address del 169.254.3.13/24 dev $rp13

	ip address del fe80:2::12/64 dev $rp12
	ip address del 169.254.2.12/24 dev $rp12

	ip address del 2001:db8:1::1/64 dev $rp11
	ip address del 192.0.2.1/24 dev $rp11

	ip nexthop del id 103
	ip nexthop del id 101
	ip nexthop del id 102
	ip nexthop del id 106
	ip nexthop del id 104
	ip nexthop del id 105

	ip link set dev $rp13 down
	ip link set dev $rp12 down
	ip link set dev $rp11 down

	vrf_destroy "vrf-r1"
}

router2_create()
{
	vrf_create "vrf-r2"
	ip link set dev $rp21 master vrf-r2
	ip link set dev $rp22 master vrf-r2
	ip link set dev $rp23 master vrf-r2

	ip link set dev vrf-r2 up
	ip link set dev $rp21 up
	ip link set dev $rp22 up
	ip link set dev $rp23 up

	ip address add 198.51.100.1/24 dev $rp21
	ip address add 2001:db8:2::1/64 dev $rp21

	ip address add 169.254.2.22/24 dev $rp22
	ip address add fe80:2::22/64 dev $rp22

	ip address add 169.254.3.23/24 dev $rp23
	ip address add fe80:3::23/64 dev $rp23
}

router2_destroy()
{
	ip route del 2001:db8:1::/64 vrf vrf-r2
	ip route del 192.0.2.0/24 vrf vrf-r2

	ip address del fe80:3::23/64 dev $rp23
	ip address del 169.254.3.23/24 dev $rp23

	ip address del fe80:2::22/64 dev $rp22
	ip address del 169.254.2.22/24 dev $rp22

	ip address del 2001:db8:2::1/64 dev $rp21
	ip address del 198.51.100.1/24 dev $rp21

	ip nexthop del id 201
	ip nexthop del id 202
	ip nexthop del id 204
	ip nexthop del id 205

	ip link set dev $rp23 down
	ip link set dev $rp22 down
	ip link set dev $rp21 down

	vrf_destroy "vrf-r2"
}

routing_nh_obj()
{
	ip nexthop add id 101 via 169.254.2.22 dev $rp12
	ip nexthop add id 102 via 169.254.3.23 dev $rp13
	ip nexthop add id 103 group 101/102
	ip route add 198.51.100.0/24 vrf vrf-r1 nhid 103

	ip nexthop add id 104 via fe80:2::22 dev $rp12
	ip nexthop add id 105 via fe80:3::23 dev $rp13
	ip nexthop add id 106 group 104/105
	ip route add 2001:db8:2::/64 vrf vrf-r1 nhid 106

	ip nexthop add id 201 via 169.254.2.12 dev $rp22
	ip nexthop add id 202 via 169.254.3.13 dev $rp23
	ip nexthop add id 203 group 201/202
	ip route add 192.0.2.0/24 vrf vrf-r2 nhid 203

	ip nexthop add id 204 via fe80:2::12 dev $rp22
	ip nexthop add id 205 via fe80:3::13 dev $rp23
	ip nexthop add id 206 group 204/205
	ip route add 2001:db8:1::/64 vrf vrf-r2 nhid 206
}

multipath4_test()
{
	local desc=$1; shift
	local weight_rp12=$1; shift
	local weight_rp13=$1; shift
	local ports=${1-sp=1024,dp=0-32768}; shift

	local t0_rp12 t0_rp13 t1_rp12 t1_rp13
	local packets_rp12 packets_rp13

	# Transmit multiple flows from h1 to h2 and make sure they are
	# distributed between both multipath links (rp12 and rp13)
	# according to the configured weights.
	sysctl_set net.ipv4.fib_multipath_hash_policy 1
	ip nexthop replace id 103 group 101,$weight_rp12/102,$weight_rp13

	t0_rp12=$(link_stats_tx_packets_get $rp12)
	t0_rp13=$(link_stats_tx_packets_get $rp13)

	ip vrf exec vrf-h1 $MZ $h1 -q -p 64 -A 192.0.2.2 -B 198.51.100.2 \
		-d $MZ_DELAY -t udp "$ports"
	sleep 1

	t1_rp12=$(link_stats_tx_packets_get $rp12)
	t1_rp13=$(link_stats_tx_packets_get $rp13)

	let "packets_rp12 = $t1_rp12 - $t0_rp12"
	let "packets_rp13 = $t1_rp13 - $t0_rp13"
	multipath_eval "$desc" $weight_rp12 $weight_rp13 $packets_rp12 $packets_rp13

	# Restore settings.
	ip nexthop replace id 103 group 101/102
	sysctl_restore net.ipv4.fib_multipath_hash_policy
}

multipath6_test()
{
	local desc=$1; shift
	local weight_rp12=$1; shift
	local weight_rp13=$1; shift
	local ports=${1-sp=1024,dp=0-32768}; shift

	local t0_rp12 t0_rp13 t1_rp12 t1_rp13
	local packets_rp12 packets_rp13

	# Transmit multiple flows from h1 to h2 and make sure they are
	# distributed between both multipath links (rp12 and rp13)
	# according to the configured weights.
	sysctl_set net.ipv6.fib_multipath_hash_policy 1

	ip nexthop replace id 106 group 104,$weight_rp12/105,$weight_rp13

	t0_rp12=$(link_stats_tx_packets_get $rp12)
	t0_rp13=$(link_stats_tx_packets_get $rp13)

	$MZ $h1 -6 -q -p 64 -A 2001:db8:1::2 -B 2001:db8:2::2 \
		-d $MZ_DELAY -t udp "$ports"
	sleep 1

	t1_rp12=$(link_stats_tx_packets_get $rp12)
	t1_rp13=$(link_stats_tx_packets_get $rp13)

	let "packets_rp12 = $t1_rp12 - $t0_rp12"
	let "packets_rp13 = $t1_rp13 - $t0_rp13"
	multipath_eval "$desc" $weight_rp12 $weight_rp13 $packets_rp12 $packets_rp13

	ip nexthop replace id 106 group 104/105

	sysctl_restore net.ipv6.fib_multipath_hash_policy
}

multipath_test()
{
	log_info "Running IPv4 multipath tests"
	multipath4_test "ECMP" 1 1
	multipath4_test "Weighted MP 2:1" 2 1
	multipath4_test "Weighted MP 11:45" 11 45

	log_info "Running IPv4 multipath tests with IPv6 link-local nexthops"
	ip nexthop replace id 101 via fe80:2::22 dev $rp12
	ip nexthop replace id 102 via fe80:3::23 dev $rp13

	multipath4_test "ECMP" 1 1
	multipath4_test "Weighted MP 2:1" 2 1
	multipath4_test "Weighted MP 11:45" 11 45

	ip nexthop replace id 102 via 169.254.3.23 dev $rp13
	ip nexthop replace id 101 via 169.254.2.22 dev $rp12

	log_info "Running IPv6 multipath tests"
	multipath6_test "ECMP" 1 1
	multipath6_test "Weighted MP 2:1" 2 1
	multipath6_test "Weighted MP 11:45" 11 45
}

multipath16_test()
{
	check_nhgw16 104 || return

	log_info "Running 16-bit IPv4 multipath tests"
	multipath4_test "65535:65535" 65535 65535
	multipath4_test "128:512" 128 512
	omit_on_slow \
		multipath4_test "255:65535" 255 65535 sp=1024-1026,dp=0-65535

	log_info "Running 16-bit IPv6 multipath tests"
	multipath6_test "65535:65535" 65535 65535
	multipath6_test "128:512" 128 512
	omit_on_slow \
		multipath6_test "255:65535" 255 65535 sp=1024-1026,dp=0-65535
}

ping_ipv4_blackhole()
{
	RET=0

	ip nexthop add id 1001 blackhole
	ip nexthop add id 1002 group 1001

	ip route replace 198.51.100.0/24 vrf vrf-r1 nhid 1001
	ping_do $h1 198.51.100.2
	check_fail $? "ping did not fail when using a blackhole nexthop"

	ip route replace 198.51.100.0/24 vrf vrf-r1 nhid 1002
	ping_do $h1 198.51.100.2
	check_fail $? "ping did not fail when using a blackhole nexthop group"

	ip route replace 198.51.100.0/24 vrf vrf-r1 nhid 103
	ping_do $h1 198.51.100.2
	check_err $? "ping failed with a valid nexthop"

	log_test "IPv4 blackhole ping"

	ip nexthop del id 1002
	ip nexthop del id 1001
}

ping_ipv6_blackhole()
{
	RET=0

	ip -6 nexthop add id 1001 blackhole
	ip nexthop add id 1002 group 1001

	ip route replace 2001:db8:2::/64 vrf vrf-r1 nhid 1001
	ping6_do $h1 2001:db8:2::2
	check_fail $? "ping did not fail when using a blackhole nexthop"

	ip route replace 2001:db8:2::/64 vrf vrf-r1 nhid 1002
	ping6_do $h1 2001:db8:2::2
	check_fail $? "ping did not fail when using a blackhole nexthop group"

	ip route replace 2001:db8:2::/64 vrf vrf-r1 nhid 106
	ping6_do $h1 2001:db8:2::2
	check_err $? "ping failed with a valid nexthop"

	log_test "IPv6 blackhole ping"

	ip nexthop del id 1002
	ip -6 nexthop del id 1001
}

nh_stats_test_v4()
{
	__nh_stats_test_v4 mpath
}

nh_stats_test_v6()
{
	__nh_stats_test_v6 mpath
}

setup_prepare()
{
	h1=${NETIFS[p1]}
	rp11=${NETIFS[p2]}

	rp12=${NETIFS[p3]}
	rp22=${NETIFS[p4]}

	rp13=${NETIFS[p5]}
	rp23=${NETIFS[p6]}

	rp21=${NETIFS[p7]}
	h2=${NETIFS[p8]}

	vrf_prepare

	h1_create
	h2_create

	router1_create
	router2_create

	forwarding_enable
}

cleanup()
{
	pre_cleanup

	forwarding_restore

	router2_destroy
	router1_destroy

	h2_destroy
	h1_destroy

	vrf_cleanup
}

ping_ipv4()
{
	ping_test $h1 198.51.100.2
}

ping_ipv6()
{
	ping6_test $h1 2001:db8:2::2
}

ip nexthop ls >/dev/null 2>&1
if [ $? -ne 0 ]; then
	echo "Nexthop objects not supported; skipping tests"
	exit $ksft_skip
fi

trap cleanup EXIT

setup_prepare
setup_wait
routing_nh_obj

tests_run

exit $EXIT_STATUS

Filemanager

Name Type Size Permission Actions
Makefile File 2.94 KB 0644
bridge_fdb_learning_limit.sh File 5.8 KB 0755
bridge_igmp.sh File 14.71 KB 0755
bridge_locked_port.sh File 9.25 KB 0755
bridge_mdb.sh File 45.15 KB 0755
bridge_mdb_host.sh File 1.66 KB 0755
bridge_mdb_max.sh File 29.98 KB 0755
bridge_mdb_port_down.sh File 2.24 KB 0755
bridge_mld.sh File 16.17 KB 0755
bridge_port_isolation.sh File 2.32 KB 0755
bridge_sticky_fdb.sh File 1.13 KB 0755
bridge_vlan_aware.sh File 4.2 KB 0755
bridge_vlan_mcast.sh File 16.74 KB 0755
bridge_vlan_unaware.sh File 1.65 KB 0755
custom_multipath_hash.sh File 9.8 KB 0755
devlink_lib.sh File 12.81 KB 0644
dual_vxlan_bridge.sh File 11.21 KB 0755
fib_offload_lib.sh File 24.57 KB 0644
gre_custom_multipath_hash.sh File 12.51 KB 0755
gre_inner_v4_multipath.sh File 7.55 KB 0755
gre_inner_v6_multipath.sh File 7.66 KB 0755
gre_multipath.sh File 6.29 KB 0755
gre_multipath_nh.sh File 8.1 KB 0755
gre_multipath_nh_res.sh File 8.25 KB 0755
ip6_forward_instats_vrf.sh File 3.04 KB 0755
ip6gre_custom_multipath_hash.sh File 12.77 KB 0755
ip6gre_flat.sh File 1.18 KB 0755
ip6gre_flat_key.sh File 1.24 KB 0755
ip6gre_flat_keys.sh File 1.3 KB 0755
ip6gre_hier.sh File 1.27 KB 0755
ip6gre_hier_key.sh File 1.33 KB 0755
ip6gre_hier_keys.sh File 1.39 KB 0755
ip6gre_inner_v4_multipath.sh File 7.77 KB 0755
ip6gre_inner_v6_multipath.sh File 7.88 KB 0755
ip6gre_lib.sh File 15.75 KB 0644
ipip_flat_gre.sh File 838 B 0755
ipip_flat_gre_key.sh File 860 B 0755
ipip_flat_gre_keys.sh File 886 B 0755
ipip_hier_gre.sh File 887 B 0755
ipip_hier_gre_key.sh File 910 B 0755
ipip_hier_gre_keys.sh File 938 B 0755
ipip_lib.sh File 8.34 KB 0644
lib.sh File 41.63 KB 0644
lib_sh_test.sh File 3.57 KB 0755
local_termination.sh File 14.42 KB 0755
min_max_mtu.sh File 4.74 KB 0755
mirror_gre.sh File 2.9 KB 0755
mirror_gre_bound.sh File 5.51 KB 0755
mirror_gre_bridge_1d.sh File 4.12 KB 0755
mirror_gre_bridge_1d_vlan.sh File 2.37 KB 0755
mirror_gre_bridge_1q.sh File 3.97 KB 0755
mirror_gre_bridge_1q_lag.sh File 7.02 KB 0755
mirror_gre_changes.sh File 5.17 KB 0755
mirror_gre_flower.sh File 2.61 KB 0755
mirror_gre_lag_lacp.sh File 7.48 KB 0755
mirror_gre_lib.sh File 3.65 KB 0644
mirror_gre_neigh.sh File 2.08 KB 0755
mirror_gre_nh.sh File 2.53 KB 0755
mirror_gre_topo_lib.sh File 3.45 KB 0644
mirror_gre_vlan.sh File 1.36 KB 0755
mirror_gre_vlan_bridge_1q.sh File 8.46 KB 0755
mirror_lib.sh File 3.72 KB 0644
mirror_topo_lib.sh File 2.73 KB 0644
mirror_vlan.sh File 1.86 KB 0755
no_forwarding.sh File 5.52 KB 0755
pedit_dsfield.sh File 6.69 KB 0755
pedit_ip.sh File 4.41 KB 0755
pedit_l4port.sh File 4.46 KB 0755
q_in_vni.sh File 10.71 KB 0755
q_in_vni_ipv6.sh File 10.87 KB 0755
router.sh File 7.32 KB 0755
router_bridge.sh File 3.97 KB 0755
router_bridge_1d.sh File 5.1 KB 0755
router_bridge_1d_lag.sh File 9.3 KB 0755
router_bridge_lag.sh File 6.82 KB 0755
router_bridge_pvid_vlan_upper.sh File 3.5 KB 0755
router_bridge_vlan.sh File 5.46 KB 0755
router_bridge_vlan_upper.sh File 3.92 KB 0755
router_bridge_vlan_upper_pvid.sh File 3.7 KB 0755
router_broadcast.sh File 5.02 KB 0755
router_mpath_nh.sh File 10.73 KB 0755
router_mpath_nh_lib.sh File 3.2 KB 0644
router_mpath_nh_res.sh File 12.71 KB 0755
router_mpath_seed.sh File 7.37 KB 0755
router_multicast.sh File 14.6 KB 0755
router_multipath.sh File 7.07 KB 0755
router_nh.sh File 3.31 KB 0755
router_vid_1.sh File 3.52 KB 0755
sch_ets.sh File 745 B 0755
sch_ets_core.sh File 7.33 KB 0644
sch_ets_tests.sh File 4.09 KB 0644
sch_red.sh File 11.14 KB 0755
sch_tbf_core.sh File 4.77 KB 0644
sch_tbf_ets.sh File 118 B 0755
sch_tbf_etsprio.sh File 1.37 KB 0644
sch_tbf_prio.sh File 118 B 0755
sch_tbf_root.sh File 496 B 0755
skbedit_priority.sh File 3.87 KB 0755
tc_actions.sh File 9.3 KB 0755
tc_chains.sh File 4.83 KB 0755
tc_common.sh File 710 B 0644
tc_flower.sh File 21.24 KB 0755
tc_flower_cfm.sh File 4.85 KB 0755
tc_flower_l2_miss.sh File 9.13 KB 0755
tc_flower_port_range.sh File 7.35 KB 0755
tc_flower_router.sh File 3.02 KB 0755
tc_mpls_l2vpn.sh File 5.03 KB 0755
tc_police.sh File 11.75 KB 0755
tc_shblocks.sh File 2.68 KB 0755
tc_tunnel_key.sh File 3.71 KB 0755
tc_vlan_modify.sh File 3.17 KB 0755
tsn_lib.sh File 5.47 KB 0644
vxlan_asymmetric.sh File 17.55 KB 0755
vxlan_asymmetric_ipv6.sh File 16.03 KB 0755
vxlan_bridge_1d.sh File 20.4 KB 0755
vxlan_bridge_1d_ipv6.sh File 21.31 KB 0755
vxlan_bridge_1d_port_8472.sh File 172 B 0755
vxlan_bridge_1d_port_8472_ipv6.sh File 188 B 0755
vxlan_bridge_1q.sh File 22.91 KB 0755
vxlan_bridge_1q_ipv6.sh File 24.35 KB 0755
vxlan_bridge_1q_port_8472.sh File 172 B 0755
vxlan_bridge_1q_port_8472_ipv6.sh File 188 B 0755
vxlan_reserved.sh File 7.23 KB 0755
vxlan_symmetric.sh File 18.05 KB 0755
vxlan_symmetric_ipv6.sh File 18.31 KB 0755
Filemanager