tools/testing/selftests/net/forwarding/tc_flower_cfm.sh

Source file repositories/reference/linux-study-clean/tools/testing/selftests/net/forwarding/tc_flower_cfm.sh

File Facts

System
Linux kernel
Corpus path
tools/testing/selftests/net/forwarding/tc_flower_cfm.sh
Extension
.sh
Size
4968 bytes
Lines
207
Domain
Support Tooling And Documentation
Bucket
tools
Inferred role
Support Tooling And Documentation: tools
Status
atlas-only

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

#!/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

Annotation

Implementation Notes