403Webshell
Server IP : 13.213.54.232  /  Your IP : 216.73.217.11
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux ip-172-31-17-110 6.8.0-1029-aws #31~22.04.1-Ubuntu SMP Thu Apr 24 21:16:18 UTC 2025 x86_64
User : www-data ( 33)
PHP Version : 7.1.33-67+ubuntu22.04.1+deb.sury.org+1
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib/modules/6.8.0-1029-aws/build/tools/testing/selftests/net/forwarding/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/modules/6.8.0-1029-aws/build/tools/testing/selftests/net/forwarding/tc_flower_cfm.sh
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0

ALL_TESTS="match_cfm_opcode match_cfm_level match_cfm_level_and_opcode"
NUM_NETIFS=2
source tc_common.sh
source lib.sh

h1_create()
{
	simple_if_init $h1
}

h1_destroy()
{
	simple_if_fini $h1
}

h2_create()
{
	simple_if_init $h2
	tc qdisc add dev $h2 clsact
}

h2_destroy()
{
	tc qdisc del dev $h2 clsact
	simple_if_fini $h2
}

u8_to_hex()
{
	local u8=$1; shift

	printf "%02x" $u8
}

generate_cfm_hdr()
{
	local mdl=$1; shift
	local op=$1; shift
	local flags=$1; shift
	local tlv_offset=$1; shift

	local cfm_hdr=$(:
	               )"$(u8_to_hex $((mdl << 5))):"$( 	: MD level and Version
	               )"$(u8_to_hex $op):"$(			: OpCode
	               )"$(u8_to_hex $flags):"$(		: Flags
	               )"$(u8_to_hex $tlv_offset)"$(		: TLV offset
	               )

	echo $cfm_hdr
}

match_cfm_opcode()
{
	local ethtype="89 02"; readonly ethtype
	RET=0

	tc filter add dev $h2 ingress protocol cfm pref 1 handle 101 \
	   flower cfm op 47 action drop
	tc filter add dev $h2 ingress protocol cfm pref 1 handle 102 \
	   flower cfm op 43 action drop

	pkt="$ethtype $(generate_cfm_hdr 7 47 0 32)"
	$MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q
	pkt="$ethtype $(generate_cfm_hdr 6 5 0 4)"
	$MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q

	tc_check_packets "dev $h2 ingress" 101 1
	check_err $? "Did not match on correct opcode"

	tc_check_packets "dev $h2 ingress" 102 0
	check_err $? "Matched on the wrong opcode"

	pkt="$ethtype $(generate_cfm_hdr 0 43 0 12)"
	$MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q

	tc_check_packets "dev $h2 ingress" 101 1
	check_err $? "Matched on the wrong opcode"

	tc_check_packets "dev $h2 ingress" 102 1
	check_err $? "Did not match on correct opcode"

	tc filter del dev $h2 ingress protocol cfm pref 1 handle 101 flower
	tc filter del dev $h2 ingress protocol cfm pref 1 handle 102 flower

	log_test "CFM opcode match test"
}

match_cfm_level()
{
	local ethtype="89 02"; readonly ethtype
	RET=0

	tc filter add dev $h2 ingress protocol cfm pref 1 handle 101 \
	   flower cfm mdl 5 action drop
	tc filter add dev $h2 ingress protocol cfm pref 1 handle 102 \
	   flower cfm mdl 3 action drop
	tc filter add dev $h2 ingress protocol cfm pref 1 handle 103 \
	   flower cfm mdl 0 action drop

	pkt="$ethtype $(generate_cfm_hdr 5 42 0 12)"
	$MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q
	pkt="$ethtype $(generate_cfm_hdr 6 1 0 70)"
	$MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q
	pkt="$ethtype $(generate_cfm_hdr 0 1 0 70)"
	$MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q

	tc_check_packets "dev $h2 ingress" 101 1
	check_err $? "Did not match on correct level"

	tc_check_packets "dev $h2 ingress" 102 0
	check_err $? "Matched on the wrong level"

	tc_check_packets "dev $h2 ingress" 103 1
	check_err $? "Did not match on correct level"

	pkt="$ethtype $(generate_cfm_hdr 3 0 0 4)"
	$MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q

	tc_check_packets "dev $h2 ingress" 101 1
	check_err $? "Matched on the wrong level"

	tc_check_packets "dev $h2 ingress" 102 1
	check_err $? "Did not match on correct level"

	tc_check_packets "dev $h2 ingress" 103 1
	check_err $? "Matched on the wrong level"

	tc filter del dev $h2 ingress protocol cfm pref 1 handle 101 flower
	tc filter del dev $h2 ingress protocol cfm pref 1 handle 102 flower
	tc filter del dev $h2 ingress protocol cfm pref 1 handle 103 flower

	log_test "CFM level match test"
}

match_cfm_level_and_opcode()
{
	local ethtype="89 02"; readonly ethtype
	RET=0

	tc filter add dev $h2 ingress protocol cfm pref 1 handle 101 \
	   flower cfm mdl 5 op 41 action drop
	tc filter add dev $h2 ingress protocol cfm pref 1 handle 102 \
	   flower cfm mdl 7 op 42 action drop

	pkt="$ethtype $(generate_cfm_hdr 5 41 0 4)"
	$MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q
	pkt="$ethtype $(generate_cfm_hdr 7 3 0 4)"
	$MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q
	pkt="$ethtype $(generate_cfm_hdr 3 42 0 12)"
	$MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q

	tc_check_packets "dev $h2 ingress" 101 1
	check_err $? "Did not match on correct level and opcode"

	tc_check_packets "dev $h2 ingress" 102 0
	check_err $? "Matched on the wrong level and opcode"

	pkt="$ethtype $(generate_cfm_hdr 7 42 0 12)"
	$MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac "$pkt" -q

	tc_check_packets "dev $h2 ingress" 101 1
	check_err $? "Matched on the wrong level and opcode"

	tc_check_packets "dev $h2 ingress" 102 1
	check_err $? "Did not match on correct level and opcode"

	tc filter del dev $h2 ingress protocol cfm pref 1 handle 101 flower
	tc filter del dev $h2 ingress protocol cfm pref 1 handle 102 flower

	log_test "CFM opcode and level match test"
}

setup_prepare()
{
	h1=${NETIFS[p1]}
	h2=${NETIFS[p2]}
	h1mac=$(mac_get $h1)
	h2mac=$(mac_get $h2)

	vrf_prepare

	h1_create
	h2_create
}

cleanup()
{
	pre_cleanup

	h2_destroy
	h1_destroy

	vrf_cleanup
}

trap cleanup EXIT

setup_prepare
setup_wait

tests_run

exit $EXIT_STATUS

Youez - 2016 - github.com/yon3zu
LinuXploit