GNU Linux-libre 4.19.286-gnu1
[releases.git] / tools / testing / selftests / net / forwarding / mirror_topo_lib.sh
1 # SPDX-License-Identifier: GPL-2.0
2
3 # This is the standard topology for testing mirroring. The tests that use it
4 # tweak it in one way or another--typically add more devices to the topology.
5 #
6 #   +---------------------+                             +---------------------+
7 #   | H1                  |                             |                  H2 |
8 #   |     + $h1           |                             |           $h2 +     |
9 #   |     | 192.0.2.1/28  |                             |  192.0.2.2/28 |     |
10 #   +-----|---------------+                             +---------------|-----+
11 #         |                                                             |
12 #   +-----|-------------------------------------------------------------|-----+
13 #   | SW  o--> mirror                                                   |     |
14 #   | +---|-------------------------------------------------------------|---+ |
15 #   | |   + $swp1                    BR                           $swp2 +   | |
16 #   | +---------------------------------------------------------------------+ |
17 #   |                                                                         |
18 #   |     + $swp3                                                             |
19 #   +-----|-------------------------------------------------------------------+
20 #         |
21 #   +-----|-------------------------------------------------------------------+
22 #   | H3  + $h3                                                               |
23 #   |                                                                         |
24 #   +-------------------------------------------------------------------------+
25
26 mirror_topo_h1_create()
27 {
28         simple_if_init $h1 192.0.2.1/28
29 }
30
31 mirror_topo_h1_destroy()
32 {
33         simple_if_fini $h1 192.0.2.1/28
34 }
35
36 mirror_topo_h2_create()
37 {
38         simple_if_init $h2 192.0.2.2/28
39 }
40
41 mirror_topo_h2_destroy()
42 {
43         simple_if_fini $h2 192.0.2.2/28
44 }
45
46 mirror_topo_h3_create()
47 {
48         simple_if_init $h3
49         tc qdisc add dev $h3 clsact
50 }
51
52 mirror_topo_h3_destroy()
53 {
54         tc qdisc del dev $h3 clsact
55         simple_if_fini $h3
56 }
57
58 mirror_topo_switch_create()
59 {
60         ip link set dev $swp3 up
61
62         ip link add name br1 type bridge vlan_filtering 1
63         ip link set dev br1 up
64
65         ip link set dev $swp1 master br1
66         ip link set dev $swp1 up
67
68         ip link set dev $swp2 master br1
69         ip link set dev $swp2 up
70
71         tc qdisc add dev $swp1 clsact
72 }
73
74 mirror_topo_switch_destroy()
75 {
76         tc qdisc del dev $swp1 clsact
77
78         ip link set dev $swp1 down
79         ip link set dev $swp2 down
80         ip link del dev br1
81
82         ip link set dev $swp3 down
83 }
84
85 mirror_topo_create()
86 {
87         mirror_topo_h1_create
88         mirror_topo_h2_create
89         mirror_topo_h3_create
90
91         mirror_topo_switch_create
92 }
93
94 mirror_topo_destroy()
95 {
96         mirror_topo_switch_destroy
97
98         mirror_topo_h3_destroy
99         mirror_topo_h2_destroy
100         mirror_topo_h1_destroy
101 }