__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ 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 (vrf)           |
# |    + $h1           |
# |    | 192.0.2.1/28  |
# +----|---------------+
#      |
# +----|--------------------------------+
# | SW |                                |
# | +--|------------------------------+ |
# | |  + $swp1           BR1 (802.1d) | |
# | |                                 | |
# | |  + vx1 (vxlan)                  | |
# | |    local 192.0.2.17             | |
# | |    id 1000 dstport $VXPORT      | |
# | +---------------------------------+ |
# |                                     |
# |  192.0.2.32/28 via 192.0.2.18       |
# |                                     |
# |  + $rp1                             |
# |  | 192.0.2.17/28                    |
# +--|----------------------------------+
#    |
# +--|----------------------------------+
# |  |                                  |
# |  + $rp2                             |
# |    192.0.2.18/28                    |
# |                                     |
# | VRP2 (vrf)                          |
# +-------------------------------------+

: ${VXPORT:=4789}
: ${ALL_TESTS:="
	default_test
	plain_test
	reserved_0_test
	reserved_10_test
	reserved_31_test
	reserved_56_test
	reserved_63_test
    "}

NUM_NETIFS=4
source lib.sh

h1_create()
{
	simple_if_init $h1 192.0.2.1/28
	defer simple_if_fini $h1 192.0.2.1/28

	tc qdisc add dev $h1 clsact
	defer tc qdisc del dev $h1 clsact

	tc filter add dev $h1 ingress pref 77 \
	   prot ip flower skip_hw ip_proto icmp action drop
	defer tc filter del dev $h1 ingress pref 77
}

switch_create()
{
	ip_link_add br1 type bridge vlan_filtering 0 mcast_snooping 0
	# Make sure the bridge uses the MAC address of the local port and not
	# that of the VxLAN's device.
	ip_link_set_addr br1 $(mac_get $swp1)
	ip_link_set_up br1

	ip_link_set_up $rp1
	ip_addr_add $rp1 192.0.2.17/28
	ip_route_add 192.0.2.32/28 nexthop via 192.0.2.18

	ip_link_set_master $swp1 br1
	ip_link_set_up $swp1
}

vrp2_create()
{
	simple_if_init $rp2 192.0.2.18/28
	defer simple_if_fini $rp2 192.0.2.18/28
}

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

	rp1=${NETIFS[p3]}
	rp2=${NETIFS[p4]}

	vrf_prepare
	defer vrf_cleanup

	forwarding_enable
	defer forwarding_restore

	h1_create
	switch_create

	vrp2_create
}

vxlan_header_bytes()
{
	local vni=$1; shift
	local -a extra_bits=("$@")
	local -a bits
	local i

	for ((i=0; i < 64; i++)); do
		bits[i]=0
	done

	# Bit 4 is the I flag and is always on.
	bits[4]=1

	for i in ${extra_bits[@]}; do
		bits[i]=1
	done

	# Bits 32..55 carry the VNI
	local mask=0x800000
	for ((i=0; i < 24; i++)); do
		bits[$((i + 32))]=$(((vni & mask) != 0))
		((mask >>= 1))
	done

	local bytes
	for ((i=0; i < 8; i++)); do
		local byte=0
		local j
		for ((j=0; j < 8; j++)); do
			local bit=${bits[8 * i + j]}
			((byte += bit << (7 - j)))
		done
		bytes+=$(printf %02x $byte):
	done

	echo ${bytes%:}
}

neg_bytes()
{
	local bytes=$1; shift

	local -A neg=([0]=f [1]=e [2]=d [3]=c [4]=b [5]=a [6]=9 [7]=8
		      [8]=7 [9]=6 [a]=5 [b]=4 [c]=3 [d]=2 [e]=1 [f]=0 [:]=:)
	local out
	local i

	for ((i=0; i < ${#bytes}; i++)); do
		local c=${bytes:$i:1}
		out+=${neg[$c]}
	done
	echo $out
}

vxlan_ping_do()
{
	local count=$1; shift
	local dev=$1; shift
	local next_hop_mac=$1; shift
	local dest_ip=$1; shift
	local dest_mac=$1; shift
	local vni=$1; shift
	local reserved_bits=$1; shift

	local vxlan_header=$(vxlan_header_bytes $vni $reserved_bits)

	$MZ $dev -c $count -d 100msec -q \
		-b $next_hop_mac -B $dest_ip \
		-t udp sp=23456,dp=$VXPORT,p=$(:
		    )"$vxlan_header:"$(              : VXLAN
		    )"$dest_mac:"$(                  : ETH daddr
		    )"00:11:22:33:44:55:"$(          : ETH saddr
		    )"08:00:"$(                      : ETH type
		    )"45:"$(                         : IP version + IHL
		    )"00:"$(                         : IP TOS
		    )"00:54:"$(                      : IP total length
		    )"99:83:"$(                      : IP identification
		    )"40:00:"$(                      : IP flags + frag off
		    )"40:"$(                         : IP TTL
		    )"01:"$(                         : IP proto
		    )"00:00:"$(                      : IP header csum
		    )"$(ipv4_to_bytes 192.0.2.3):"$( : IP saddr
		    )"$(ipv4_to_bytes 192.0.2.1):"$( : IP daddr
		    )"08:"$(                         : ICMP type
		    )"00:"$(                         : ICMP code
		    )"8b:f2:"$(                      : ICMP csum
		    )"1f:6a:"$(                      : ICMP request identifier
		    )"00:01:"$(                      : ICMP request seq. number
		    )"4f:ff:c5:5b:00:00:00:00:"$(    : ICMP payload
		    )"6d:74:0b:00:00:00:00:00:"$(    :
		    )"10:11:12:13:14:15:16:17:"$(    :
		    )"18:19:1a:1b:1c:1d:1e:1f:"$(    :
		    )"20:21:22:23:24:25:26:27:"$(    :
		    )"28:29:2a:2b:2c:2d:2e:2f:"$(    :
		    )"30:31:32:33:34:35:36:37"
}

vxlan_device_add()
{
	ip_link_add vx1 up type vxlan id 1000		\
		local 192.0.2.17 dstport "$VXPORT"	\
		nolearning noudpcsum tos inherit ttl 100 "$@"
	ip_link_set_master vx1 br1
}

vxlan_all_reserved_bits()
{
	local i

	for ((i=0; i < 64; i++)); do
		if ((i == 4 || i >= 32 && i < 56)); then
			continue
		fi
		echo $i
	done
}

vxlan_ping_vanilla()
{
	vxlan_ping_do 10 $rp2 $(mac_get $rp1) 192.0.2.17 $(mac_get $h1) 1000
}

vxlan_ping_reserved()
{
	for bit in $(vxlan_all_reserved_bits); do
		vxlan_ping_do 1 $rp2 $(mac_get $rp1) \
			      192.0.2.17 $(mac_get $h1) 1000 "$bit"
		((n++))
	done
}

vxlan_ping_test()
{
	local what=$1; shift
	local get_stat=$1; shift
	local expect=$1; shift

	RET=0

	local t0=$($get_stat)

	"$@"
	check_err $? "Failure when running $@"

	local t1=$($get_stat)
	local delta=$((t1 - t0))

	((expect == delta))
	check_err $? "Expected to capture $expect packets, got $delta."

	log_test "$what"
}

__default_test_do()
{
	local n_allowed_bits=$1; shift
	local what=$1; shift

	vxlan_ping_test "$what: clean packets" \
		"tc_rule_stats_get $h1 77 ingress" \
		10 vxlan_ping_vanilla

	local t0=$(link_stats_get vx1 rx errors)
	vxlan_ping_test "$what: mangled packets" \
		"tc_rule_stats_get $h1 77 ingress" \
		$n_allowed_bits vxlan_ping_reserved
	local t1=$(link_stats_get vx1 rx errors)

	RET=0
	local expect=$((39 - n_allowed_bits))
	local delta=$((t1 - t0))
	((expect == delta))
	check_err $? "Expected $expect error packets, got $delta."
	log_test "$what: drops reported"
}

default_test_do()
{
	vxlan_device_add
	__default_test_do 0 "Default"
}

default_test()
{
	in_defer_scope \
	    default_test_do
}

plain_test_do()
{
	vxlan_device_add reserved_bits 0xf7ffffff000000ff
	__default_test_do 0 "reserved_bits 0xf7ffffff000000ff"
}

plain_test()
{
	in_defer_scope \
	    plain_test_do
}

reserved_test()
{
	local bit=$1; shift

	local allowed_bytes=$(vxlan_header_bytes 0xffffff $bit)
	local reserved_bytes=$(neg_bytes $allowed_bytes)
	local reserved_bits=${reserved_bytes//:/}

	vxlan_device_add reserved_bits 0x$reserved_bits
	__default_test_do 1 "reserved_bits 0x$reserved_bits"
}

reserved_0_test()
{
	in_defer_scope \
	    reserved_test 0
}

reserved_10_test()
{
	in_defer_scope \
	    reserved_test 10
}

reserved_31_test()
{
	in_defer_scope \
	    reserved_test 31
}

reserved_56_test()
{
	in_defer_scope \
	    reserved_test 56
}

reserved_63_test()
{
	in_defer_scope \
	    reserved_test 63
}

trap cleanup EXIT

setup_prepare
setup_wait
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