brintos

brintos / linux-shallow public Read only

0
0
Text · 2.9 KiB · 36bd7cb Raw
138 lines · bash
1#!/bin/sh2# SPDX-License-Identifier: GPL-2.03 4# Test various socket options that can be set by attaching programs to cgroups.5 6MY_DIR=$(dirname $0)7TEST=$MY_DIR/test_cgrp2_sock8CGRP_MNT="/tmp/cgroupv2-test_cgrp2_sock"9 10################################################################################11#12print_result()13{14	local rc=$115	local status=" OK "16 17	[ $rc -ne 0 ] && status="FAIL"18 19	printf "%-50s    [%4s]\n" "$2" "$status"20}21 22check_sock()23{24	out=$($TEST)25	echo $out | grep -q "$1"26	if [ $? -ne 0 ]; then27		print_result 1 "IPv4: $2"28		echo "    expected: $1"29		echo "        have: $out"30		rc=131	else32		print_result 0 "IPv4: $2"33	fi34}35 36check_sock6()37{38	out=$($TEST -6)39	echo $out | grep -q "$1"40	if [ $? -ne 0 ]; then41		print_result 1 "IPv6: $2"42		echo "    expected: $1"43		echo "        have: $out"44		rc=145	else46		print_result 0 "IPv6: $2"47	fi48}49 50################################################################################51#52 53cleanup()54{55	echo $$ >> ${CGRP_MNT}/cgroup.procs56	rmdir ${CGRP_MNT}/sockopts57}58 59cleanup_and_exit()60{61	local rc=$162	local msg="$2"63 64	[ -n "$msg" ] && echo "ERROR: $msg"65 66	$TEST -d ${CGRP_MNT}/sockopts67	ip li del cgrp2_sock68	umount ${CGRP_MNT}69 70	exit $rc71}72 73 74################################################################################75# main76 77rc=078 79ip li add cgrp2_sock type dummy 2>/dev/null80 81set -e82mkdir -p ${CGRP_MNT}83mount -t cgroup2 none ${CGRP_MNT}84set +e85 86 87# make sure we have a known start point88cleanup 2>/dev/null89 90mkdir -p ${CGRP_MNT}/sockopts91[ $? -ne 0 ] && cleanup_and_exit 1 "Failed to create cgroup hierarchy"92 93 94# set pid into cgroup95echo $$ > ${CGRP_MNT}/sockopts/cgroup.procs96 97# no bpf program attached, so socket should show no settings98check_sock "dev , mark 0, priority 0" "No programs attached"99check_sock6 "dev , mark 0, priority 0" "No programs attached"100 101# verify device is set102#103$TEST -b cgrp2_sock ${CGRP_MNT}/sockopts104if [ $? -ne 0 ]; then105	cleanup_and_exit 1 "Failed to install program to set device"106fi107check_sock "dev cgrp2_sock, mark 0, priority 0" "Device set"108check_sock6 "dev cgrp2_sock, mark 0, priority 0" "Device set"109 110# verify mark is set111#112$TEST -m 666 ${CGRP_MNT}/sockopts113if [ $? -ne 0 ]; then114	cleanup_and_exit 1 "Failed to install program to set mark"115fi116check_sock "dev , mark 666, priority 0" "Mark set"117check_sock6 "dev , mark 666, priority 0" "Mark set"118 119# verify priority is set120#121$TEST -p 123 ${CGRP_MNT}/sockopts122if [ $? -ne 0 ]; then123	cleanup_and_exit 1 "Failed to install program to set priority"124fi125check_sock "dev , mark 0, priority 123" "Priority set"126check_sock6 "dev , mark 0, priority 123" "Priority set"127 128# all 3 at once129#130$TEST -b cgrp2_sock -m 666 -p 123 ${CGRP_MNT}/sockopts131if [ $? -ne 0 ]; then132	cleanup_and_exit 1 "Failed to install program to set device, mark and priority"133fi134check_sock "dev cgrp2_sock, mark 666, priority 123" "Priority set"135check_sock6 "dev cgrp2_sock, mark 666, priority 123" "Priority set"136 137cleanup_and_exit $rc138