brintos

brintos / linux-shallow public Read only

0
0
Text · 2.3 KiB · b1f0781 Raw
112 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03#4# Test that filters that match on the same port range, but with different5# combination of IPv4/IPv6 and TCP/UDP all use the same port range register by6# observing port range registers' occupancy via devlink-resource.7 8lib_dir=$(dirname $0)/../../../net/forwarding9 10ALL_TESTS="11	port_range_occ_test12"13NUM_NETIFS=214source $lib_dir/lib.sh15source $lib_dir/devlink_lib.sh16 17h1_create()18{19	simple_if_init $h120}21 22h1_destroy()23{24	simple_if_fini $h125}26 27switch_create()28{29	simple_if_init $swp130	tc qdisc add dev $swp1 clsact31}32 33switch_destroy()34{35	tc qdisc del dev $swp1 clsact36	simple_if_fini $swp137}38 39setup_prepare()40{41	h1=${NETIFS[p1]}42	swp1=${NETIFS[p2]}43 44	vrf_prepare45 46	h1_create47	switch_create48}49 50cleanup()51{52	pre_cleanup53 54	switch_destroy55	h1_destroy56 57	vrf_cleanup58}59 60port_range_occ_get()61{62	devlink_resource_occ_get port_range_registers63}64 65port_range_occ_test()66{67	RET=068 69	local occ=$(port_range_occ_get)70 71	# Two port range registers are used, for source and destination port72	# ranges.73	tc filter add dev $swp1 ingress pref 1 handle 101 proto ip \74		flower skip_sw ip_proto udp src_port 1-100 dst_port 1-100 \75		action pass76	(( occ + 2 == $(port_range_occ_get) ))77	check_err $? "Got occupancy $(port_range_occ_get), expected $((occ + 2))"78 79	tc filter add dev $swp1 ingress pref 1 handle 102 proto ip \80		flower skip_sw ip_proto tcp src_port 1-100 dst_port 1-100 \81		action pass82	tc filter add dev $swp1 ingress pref 2 handle 103 proto ipv6 \83		flower skip_sw ip_proto udp src_port 1-100 dst_port 1-100 \84		action pass85	tc filter add dev $swp1 ingress pref 2 handle 104 proto ipv6 \86		flower skip_sw ip_proto tcp src_port 1-100 dst_port 1-100 \87		action pass88	(( occ + 2 == $(port_range_occ_get) ))89	check_err $? "Got occupancy $(port_range_occ_get), expected $((occ + 2))"90 91	tc filter del dev $swp1 ingress pref 2 handle 104 flower92	tc filter del dev $swp1 ingress pref 2 handle 103 flower93	tc filter del dev $swp1 ingress pref 1 handle 102 flower94	(( occ + 2 == $(port_range_occ_get) ))95	check_err $? "Got occupancy $(port_range_occ_get), expected $((occ + 2))"96 97	tc filter del dev $swp1 ingress pref 1 handle 101 flower98	(( occ == $(port_range_occ_get) ))99	check_err $? "Got occupancy $(port_range_occ_get), expected $occ"100 101	log_test "port range occupancy"102}103 104trap cleanup EXIT105 106setup_prepare107setup_wait108 109tests_run110 111exit $EXIT_STATUS112