Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0
3
4ALL_TESTS="shared_block_test"
5NUM_NETIFS=4
6source tc_common.sh
7source lib.sh
8
9tcflags="skip_hw"
10
11h1_create()
12{
13 simple_if_init $h1 192.0.2.1/24
14}
15
16h1_destroy()
17{
18 simple_if_fini $h1 192.0.2.1/24
19}
20
21h2_create()
22{
23 simple_if_init $h2 192.0.2.1/24
24}
25
26h2_destroy()
27{
28 simple_if_fini $h2 192.0.2.1/24
29}
30
31switch_create()
32{
33 simple_if_init $swp1 192.0.2.2/24
34 tc qdisc add dev $swp1 ingress_block 22 egress_block 23 clsact
35
36 simple_if_init $swp2 192.0.2.2/24
37 tc qdisc add dev $swp2 ingress_block 22 egress_block 23 clsact
38}
39
40switch_destroy()
41{
42 tc qdisc del dev $swp2 clsact
43 simple_if_fini $swp2 192.0.2.2/24
44
45 tc qdisc del dev $swp1 clsact
46 simple_if_fini $swp1 192.0.2.2/24
47}
48
49shared_block_test()
50{
51 RET=0
52
53 tc filter add block 22 protocol ip pref 1 handle 101 flower \
54 $tcflags dst_ip 192.0.2.2 action drop
55
56 $MZ $h1 -c 1 -p 64 -a $h1mac -b $swmac -A 192.0.2.1 -B 192.0.2.2 \
57 -t ip -q
58
59 tc_check_packets "block 22" 101 1
60 check_err $? "Did not match first incoming packet on a block"
61
62 $MZ $h2 -c 1 -p 64 -a $h2mac -b $swmac -A 192.0.2.1 -B 192.0.2.2 \
63 -t ip -q
64
65 tc_check_packets "block 22" 101 2
66 check_err $? "Did not match second incoming packet on a block"
67
68 tc filter del block 22 protocol ip pref 1 handle 101 flower
69
70 log_test "shared block ($tcflags)"
71}
72
73setup_prepare()
74{
75 h1=${NETIFS[p1]}
76 swp1=${NETIFS[p2]}
77
78 swp2=${NETIFS[p3]}
79 h2=${NETIFS[p4]}
80
81 h1mac=$(mac_get $h1)
82 h2mac=$(mac_get $h2)
83
84 swmac=$(mac_get $swp1)
85 swp2origmac=$(mac_get $swp2)
86 ip link set $swp2 address $swmac
87
88 vrf_prepare
89
90 h1_create
91 h2_create
92 switch_create
93}
94
95cleanup()
96{
97 pre_cleanup
98
99 switch_destroy
100 h2_destroy
101 h1_destroy
102
103 vrf_cleanup
104
105 ip link set $swp2 address $swp2origmac
106}
107
108trap cleanup EXIT
109
110setup_prepare
111setup_wait
112
113tests_run
114
115tc_offload_check
116if [[ $? -ne 0 ]]; then
117 log_info "Could not test offloaded functionality"
118else
119 tcflags="skip_sw"
120 tests_run
121fi
122
123exit $EXIT_STATUS