brintos

brintos / linux-shallow public Read only

0
0
Text · 3.7 KiB · 195ef83 Raw
159 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03#4# Topology for Bond mode 1,5,6 testing5#6#  +-------------------------+7#  |          bond0          |  Server8#  |            +            |  192.0.2.1/249#  |      eth0  |  eth1      |  2001:db8::1/2410#  |        +---+---+        |11#  |        |       |        |12#  +-------------------------+13#           |       |14#  +-------------------------+15#  |        |       |        |16#  |    +---+-------+---+    |  Gateway17#  |    |      br0      |    |  192.0.2.254/2418#  |    +-------+-------+    |  2001:db8::254/2419#  |            |            |20#  +-------------------------+21#               |22#  +-------------------------+23#  |            |            |  Client24#  |            +            |  192.0.2.10/2425#  |          eth0           |  2001:db8::10/2426#  +-------------------------+27 28REQUIRE_MZ=no29NUM_NETIFS=030lib_dir=$(dirname "$0")31source "$lib_dir"/../../../net/forwarding/lib.sh32 33s_ns="s-$(mktemp -u XXXXXX)"34c_ns="c-$(mktemp -u XXXXXX)"35g_ns="g-$(mktemp -u XXXXXX)"36s_ip4="192.0.2.1"37c_ip4="192.0.2.10"38g_ip4="192.0.2.254"39s_ip6="2001:db8::1"40c_ip6="2001:db8::10"41g_ip6="2001:db8::254"42 43gateway_create()44{45	ip netns add ${g_ns}46	ip -n ${g_ns} link add br0 type bridge47	ip -n ${g_ns} link set br0 up48	ip -n ${g_ns} addr add ${g_ip4}/24 dev br049	ip -n ${g_ns} addr add ${g_ip6}/24 dev br050}51 52gateway_destroy()53{54	ip -n ${g_ns} link del br055	ip netns del ${g_ns}56}57 58server_create()59{60	ip netns add ${s_ns}61	ip -n ${s_ns} link add bond0 type bond mode active-backup miimon 10062 63	for i in $(seq 0 1); do64		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} up67		ip -n ${g_ns} link set s${i} master br068		ip -n ${s_ns} link set eth${i} master bond069 70		tc -n ${g_ns} qdisc add dev s${i} clsact71	done72 73	ip -n ${s_ns} link set bond0 up74	ip -n ${s_ns} addr add ${s_ip4}/24 dev bond075	ip -n ${s_ns} addr add ${s_ip6}/24 dev bond076}77 78# Reset bond with new mode and options79bond_reset()80{81	# Count the eth link number in real-time as this function82	# 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 down88	ip -n ${s_ns} link del bond089 90	ip -n ${s_ns} link add bond0 type bond $param91	for i in $(seq 0 ${link_num}); do92		ip -n ${s_ns} link set eth$i master bond093	done94 95	ip -n ${s_ns} link set bond0 up96	ip -n ${s_ns} addr add ${s_ip4}/24 dev bond097	ip -n ${s_ns} addr add ${s_ip6}/24 dev bond098	# Wait for IPv6 address ready as it needs DAD99	slowwait 2 ip netns exec ${s_ns} ping6 ${c_ip6} -c 1 -W 0.1 &> /dev/null100}101 102server_destroy()103{104	# Count the eth link number in real-time as this function105	# 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}); do109		ip -n ${s_ns} link del eth${i}110	done111	ip netns del ${s_ns}112}113 114client_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 up120	ip -n ${g_ns} link set c0 master br0121 122	ip -n ${c_ns} link set eth0 up123	ip -n ${c_ns} addr add ${c_ip4}/24 dev eth0124	ip -n ${c_ns} addr add ${c_ip6}/24 dev eth0125}126 127client_destroy()128{129	ip -n ${c_ns} link del eth0130	ip netns del ${c_ns}131}132 133setup_prepare()134{135	gateway_create136	server_create137	client_create138}139 140cleanup()141{142	pre_cleanup143 144	client_destroy145	server_destroy146	gateway_destroy147}148 149bond_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/null154	ip netns exec ${s_ns} ping ${c_ip4} -c5 -i 0.1 &>/dev/null155	check_err $? "${msg}: ping failed"156	ip netns exec ${s_ns} ping6 ${c_ip6} -c5 -i 0.1 &>/dev/null157	check_err $? "${msg}: ping6 failed"158}159