~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/testing/selftests/drivers/net/bonding/bond_topo_2d1c.sh

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #!/bin/bash
  2 # SPDX-License-Identifier: GPL-2.0
  3 #
  4 # Topology for Bond mode 1,5,6 testing
  5 #
  6 #  +-------------------------+
  7 #  |          bond0          |  Server
  8 #  |            +            |  192.0.2.1/24
  9 #  |      eth0  |  eth1      |  2001:db8::1/24
 10 #  |        +---+---+        |
 11 #  |        |       |        |
 12 #  +-------------------------+
 13 #           |       |
 14 #  +-------------------------+
 15 #  |        |       |        |
 16 #  |    +---+-------+---+    |  Gateway
 17 #  |    |      br0      |    |  192.0.2.254/24
 18 #  |    +-------+-------+    |  2001:db8::254/24
 19 #  |            |            |
 20 #  +-------------------------+
 21 #               |
 22 #  +-------------------------+
 23 #  |            |            |  Client
 24 #  |            +            |  192.0.2.10/24
 25 #  |          eth0           |  2001:db8::10/24
 26 #  +-------------------------+
 27 
 28 REQUIRE_MZ=no
 29 NUM_NETIFS=0
 30 lib_dir=$(dirname "$0")
 31 source "$lib_dir"/../../../net/forwarding/lib.sh
 32 
 33 s_ns="s-$(mktemp -u XXXXXX)"
 34 c_ns="c-$(mktemp -u XXXXXX)"
 35 g_ns="g-$(mktemp -u XXXXXX)"
 36 s_ip4="192.0.2.1"
 37 c_ip4="192.0.2.10"
 38 g_ip4="192.0.2.254"
 39 s_ip6="2001:db8::1"
 40 c_ip6="2001:db8::10"
 41 g_ip6="2001:db8::254"
 42 
 43 gateway_create()
 44 {
 45         ip netns add ${g_ns}
 46         ip -n ${g_ns} link add br0 type bridge
 47         ip -n ${g_ns} link set br0 up
 48         ip -n ${g_ns} addr add ${g_ip4}/24 dev br0
 49         ip -n ${g_ns} addr add ${g_ip6}/24 dev br0
 50 }
 51 
 52 gateway_destroy()
 53 {
 54         ip -n ${g_ns} link del br0
 55         ip netns del ${g_ns}
 56 }
 57 
 58 server_create()
 59 {
 60         ip netns add ${s_ns}
 61         ip -n ${s_ns} link add bond0 type bond mode active-backup miimon 100
 62 
 63         for i in $(seq 0 1); do
 64                 ip -n ${s_ns} link add eth${i} type veth peer name s${i} netns ${g_ns}
 65 
 66                 ip -n ${g_ns} link set s${i} up
 67                 ip -n ${g_ns} link set s${i} master br0
 68                 ip -n ${s_ns} link set eth${i} master bond0
 69 
 70                 tc -n ${g_ns} qdisc add dev s${i} clsact
 71         done
 72 
 73         ip -n ${s_ns} link set bond0 up
 74         ip -n ${s_ns} addr add ${s_ip4}/24 dev bond0
 75         ip -n ${s_ns} addr add ${s_ip6}/24 dev bond0
 76 }
 77 
 78 # Reset bond with new mode and options
 79 bond_reset()
 80 {
 81         # Count the eth link number in real-time as this function
 82         # maybe called from other topologies.
 83         local link_num=$(ip -n ${s_ns} -br link show | grep -c "^eth")
 84         local param="$1"
 85         link_num=$((link_num -1))
 86 
 87         ip -n ${s_ns} link set bond0 down
 88         ip -n ${s_ns} link del bond0
 89 
 90         ip -n ${s_ns} link add bond0 type bond $param
 91         for i in $(seq 0 ${link_num}); do
 92                 ip -n ${s_ns} link set eth$i master bond0
 93         done
 94 
 95         ip -n ${s_ns} link set bond0 up
 96         ip -n ${s_ns} addr add ${s_ip4}/24 dev bond0
 97         ip -n ${s_ns} addr add ${s_ip6}/24 dev bond0
 98         # Wait for IPv6 address ready as it needs DAD
 99         slowwait 2 ip netns exec ${s_ns} ping6 ${c_ip6} -c 1 -W 0.1 &> /dev/null
100 }
101 
102 server_destroy()
103 {
104         # Count the eth link number in real-time as this function
105         # maybe called from other topologies.
106         local link_num=$(ip -n ${s_ns} -br link show | grep -c "^eth")
107         link_num=$((link_num -1))
108         for i in $(seq 0 ${link_num}); do
109                 ip -n ${s_ns} link del eth${i}
110         done
111         ip netns del ${s_ns}
112 }
113 
114 client_create()
115 {
116         ip netns add ${c_ns}
117         ip -n ${c_ns} link add eth0 type veth peer name c0 netns ${g_ns}
118 
119         ip -n ${g_ns} link set c0 up
120         ip -n ${g_ns} link set c0 master br0
121 
122         ip -n ${c_ns} link set eth0 up
123         ip -n ${c_ns} addr add ${c_ip4}/24 dev eth0
124         ip -n ${c_ns} addr add ${c_ip6}/24 dev eth0
125 }
126 
127 client_destroy()
128 {
129         ip -n ${c_ns} link del eth0
130         ip netns del ${c_ns}
131 }
132 
133 setup_prepare()
134 {
135         gateway_create
136         server_create
137         client_create
138 }
139 
140 cleanup()
141 {
142         pre_cleanup
143 
144         client_destroy
145         server_destroy
146         gateway_destroy
147 }
148 
149 bond_check_connection()
150 {
151         local msg=${1:-"check connection"}
152 
153         slowwait 2 ip netns exec ${s_ns} ping ${c_ip4} -c 1 -W 0.1 &> /dev/null
154         ip netns exec ${s_ns} ping ${c_ip4} -c5 -i 0.1 &>/dev/null
155         check_err $? "${msg}: ping failed"
156         ip netns exec ${s_ns} ping6 ${c_ip6} -c5 -i 0.1 &>/dev/null
157         check_err $? "${msg}: ping6 failed"
158 }

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php