100 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03#4# Test macvlan over balance-alb5 6lib_dir=$(dirname "$0")7source ${lib_dir}/bond_topo_2d1c.sh8 9m1_ns="m1-$(mktemp -u XXXXXX)"10m2_ns="m1-$(mktemp -u XXXXXX)"11m1_ip4="192.0.2.11"12m1_ip6="2001:db8::11"13m2_ip4="192.0.2.12"14m2_ip6="2001:db8::12"15 16cleanup()17{18 ip -n ${m1_ns} link del macv019 ip netns del ${m1_ns}20 ip -n ${m2_ns} link del macv021 ip netns del ${m2_ns}22 23 client_destroy24 server_destroy25 gateway_destroy26}27 28check_connection()29{30 local ns=${1}31 local target=${2}32 local message=${3:-"macvlan_over_bond"}33 RET=034 35 36 ip netns exec ${ns} ping ${target} -c 4 -i 0.1 &>/dev/null37 check_err $? "ping failed"38 log_test "$mode: $message"39}40 41macvlan_over_bond()42{43 local param="$1"44 RET=045 46 # setup new bond mode47 bond_reset "${param}"48 49 ip -n ${s_ns} link add link bond0 name macv0 type macvlan mode bridge50 ip -n ${s_ns} link set macv0 netns ${m1_ns}51 ip -n ${m1_ns} link set dev macv0 up52 ip -n ${m1_ns} addr add ${m1_ip4}/24 dev macv053 ip -n ${m1_ns} addr add ${m1_ip6}/24 dev macv054 55 ip -n ${s_ns} link add link bond0 name macv0 type macvlan mode bridge56 ip -n ${s_ns} link set macv0 netns ${m2_ns}57 ip -n ${m2_ns} link set dev macv0 up58 ip -n ${m2_ns} addr add ${m2_ip4}/24 dev macv059 ip -n ${m2_ns} addr add ${m2_ip6}/24 dev macv060 61 sleep 262 63 check_connection "${c_ns}" "${s_ip4}" "IPv4: client->server"64 check_connection "${c_ns}" "${s_ip6}" "IPv6: client->server"65 check_connection "${c_ns}" "${m1_ip4}" "IPv4: client->macvlan_1"66 check_connection "${c_ns}" "${m1_ip6}" "IPv6: client->macvlan_1"67 check_connection "${c_ns}" "${m2_ip4}" "IPv4: client->macvlan_2"68 check_connection "${c_ns}" "${m2_ip6}" "IPv6: client->macvlan_2"69 check_connection "${m1_ns}" "${m2_ip4}" "IPv4: macvlan_1->macvlan_2"70 check_connection "${m1_ns}" "${m2_ip6}" "IPv6: macvlan_1->macvlan_2"71 72 73 sleep 574 75 check_connection "${s_ns}" "${c_ip4}" "IPv4: server->client"76 check_connection "${s_ns}" "${c_ip6}" "IPv6: server->client"77 check_connection "${m1_ns}" "${c_ip4}" "IPv4: macvlan_1->client"78 check_connection "${m1_ns}" "${c_ip6}" "IPv6: macvlan_1->client"79 check_connection "${m2_ns}" "${c_ip4}" "IPv4: macvlan_2->client"80 check_connection "${m2_ns}" "${c_ip6}" "IPv6: macvlan_2->client"81 check_connection "${m2_ns}" "${m1_ip4}" "IPv4: macvlan_2->macvlan_2"82 check_connection "${m2_ns}" "${m1_ip6}" "IPv6: macvlan_2->macvlan_2"83 84 ip -n ${c_ns} neigh flush dev eth085}86 87trap cleanup EXIT88 89setup_prepare90ip netns add ${m1_ns}91ip netns add ${m2_ns}92 93modes="active-backup balance-tlb balance-alb"94 95for mode in $modes; do96 macvlan_over_bond "mode $mode"97done98 99exit $EXIT_STATUS100