brintos

brintos / linux-shallow public Read only

0
0
Text · 4.8 KiB · 9981035 Raw
137 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03 4ipv6=false5 6source ./hsr_common.sh7 8do_complete_ping_test()9{10	echo "INFO: Initial validation ping (HSR-SAN/RedBox)."11	# Each node has to be able to reach each one.12	do_ping "${ns1}" 100.64.0.213	do_ping "${ns2}" 100.64.0.114	# Ping between SANs (test bridge)15	do_ping "${ns4}" 100.64.0.5116	do_ping "${ns5}" 100.64.0.4117	# Ping from SANs to hsr1 (via hsr2) (and opposite)18	do_ping "${ns3}" 100.64.0.119	do_ping "${ns1}" 100.64.0.320	do_ping "${ns1}" 100.64.0.4121	do_ping "${ns4}" 100.64.0.122	do_ping "${ns1}" 100.64.0.5123	do_ping "${ns5}" 100.64.0.124	stop_if_error "Initial validation failed."25 26	# Wait for MGNT HSR frames being received and nodes being27	# merged.28	sleep 529 30	echo "INFO: Longer ping test (HSR-SAN/RedBox)."31	# Ping from SAN to hsr1 (via hsr2)32	do_ping_long "${ns3}" 100.64.0.133	# Ping from hsr1 (via hsr2) to SANs (and opposite)34	do_ping_long "${ns1}" 100.64.0.335	do_ping_long "${ns1}" 100.64.0.4136	do_ping_long "${ns4}" 100.64.0.137	do_ping_long "${ns1}" 100.64.0.5138	do_ping_long "${ns5}" 100.64.0.139	stop_if_error "Longer ping test failed."40 41	echo "INFO: All good."42}43 44setup_hsr_interfaces()45{46	local HSRv="$1"47 48	echo "INFO: preparing interfaces for HSRv${HSRv} (HSR-SAN/RedBox)."49#50# IPv4 addresses (100.64.X.Y/24), and [X.Y] is presented on below diagram:51#52#53# |NS1                     |               |NS4                |54# |       [0.1]            |               |                   |55# |    /-- hsr1 --\        |               |    [0.41]         |56# | ns1eth1     ns1eth2    |               |    ns4eth1 (SAN)  |57# |------------------------|               |-------------------|58#      |            |                                |59#      |            |                                |60#      |            |                                |61# |------------------------|   |-------------------------------|62# | ns2eth1     ns2eth2    |   |                  ns3eth2      |63# |    \-- hsr2 --/        |   |                 /             |64# |      [0.2] \           |   |                /              |  |------------|65# |             ns2eth3    |---| ns3eth1 -- ns3br1 -- ns3eth3--|--| ns5eth1    |66# |             (interlink)|   | [0.3]      [0.11]             |  | [0.51]     |67# |NS2 (RedBOX)            |   |NS3 (BR)                       |  | NS5 (SAN)  |68#69#70	# Check if iproute2 supports adding interlink port to hsrX device71	ip link help hsr | grep -q INTERLINK72	[ $? -ne 0 ] && { echo "iproute2: HSR interlink interface not supported!"; exit 0; }73 74	# Create interfaces for name spaces75	ip link add ns1eth1 netns "${ns1}" type veth peer name ns2eth1 netns "${ns2}"76	ip link add ns1eth2 netns "${ns1}" type veth peer name ns2eth2 netns "${ns2}"77	ip link add ns2eth3 netns "${ns2}" type veth peer name ns3eth1 netns "${ns3}"78	ip link add ns3eth2 netns "${ns3}" type veth peer name ns4eth1 netns "${ns4}"79	ip link add ns3eth3 netns "${ns3}" type veth peer name ns5eth1 netns "${ns5}"80 81	sleep 182 83	ip -n "${ns1}" link set ns1eth1 up84	ip -n "${ns1}" link set ns1eth2 up85 86	ip -n "${ns2}" link set ns2eth1 up87	ip -n "${ns2}" link set ns2eth2 up88	ip -n "${ns2}" link set ns2eth3 up89 90	ip -n "${ns3}" link add name ns3br1 type bridge91	ip -n "${ns3}" link set ns3br1 up92	ip -n "${ns3}" link set ns3eth1 master ns3br1 up93	ip -n "${ns3}" link set ns3eth2 master ns3br1 up94	ip -n "${ns3}" link set ns3eth3 master ns3br1 up95 96	ip -n "${ns4}" link set ns4eth1 up97	ip -n "${ns5}" link set ns5eth1 up98 99	ip -net "$ns1" link set address 00:11:22:00:01:01 dev ns1eth1100	ip -net "$ns1" link set address 00:11:22:00:01:02 dev ns1eth2101 102	ip -net "$ns2" link set address 00:11:22:00:02:01 dev ns2eth1103	ip -net "$ns2" link set address 00:11:22:00:02:02 dev ns2eth2104	ip -net "$ns2" link set address 00:11:22:00:02:03 dev ns2eth3105 106	ip -net "$ns3" link set address 00:11:22:00:03:11 dev ns3eth1107	ip -net "$ns3" link set address 00:11:22:00:03:11 dev ns3eth2108	ip -net "$ns3" link set address 00:11:22:00:03:11 dev ns3eth3109	ip -net "$ns3" link set address 00:11:22:00:03:11 dev ns3br1110 111	ip -net "$ns4" link set address 00:11:22:00:04:01 dev ns4eth1112	ip -net "$ns5" link set address 00:11:22:00:05:01 dev ns5eth1113 114	ip -net "${ns1}" link add name hsr1 type hsr slave1 ns1eth1 slave2 ns1eth2 supervision 45 version ${HSRv} proto 0115	ip -net "${ns2}" link add name hsr2 type hsr slave1 ns2eth1 slave2 ns2eth2 interlink ns2eth3 supervision 45 version ${HSRv} proto 0116 117	ip -n "${ns1}" addr add 100.64.0.1/24 dev hsr1118	ip -n "${ns2}" addr add 100.64.0.2/24 dev hsr2119	ip -n "${ns3}" addr add 100.64.0.11/24 dev ns3br1120	ip -n "${ns3}" addr add 100.64.0.3/24 dev ns3eth1121	ip -n "${ns4}" addr add 100.64.0.41/24 dev ns4eth1122	ip -n "${ns5}" addr add 100.64.0.51/24 dev ns5eth1123 124	ip -n "${ns1}" link set hsr1 up125	ip -n "${ns2}" link set hsr2 up126}127 128check_prerequisites129setup_ns ns1 ns2 ns3 ns4 ns5130 131trap cleanup_all_ns EXIT132 133setup_hsr_interfaces 1134do_complete_ping_test135 136exit $ret137