1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0 3# 4# Test macvlan over balance-alb 5 6lib_dir=$(dirname "$0") 7source ${lib_dir}/bond_topo_2d1c.sh 8 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 macv0 19 ip netns del ${m1_ns} 20 ip -n ${m2_ns} link del macv0 21 ip netns del ${m2_ns} 22 23 client_destroy 24 server_destroy 25 gateway_destroy 26} 27 28check_connection() 29{ 30 local ns=${1} 31 local target=${2} 32 local message=${3:-"macvlan_over_bond"} 33 RET=0 34 35 36 ip netns exec ${ns} ping ${target} -c 4 -i 0.1 &>/dev/null 37 check_err $? "ping failed" 38 log_test "$mode: $message" 39} 40 41macvlan_over_bond() 42{ 43 local param="$1" 44 RET=0 45 46 # setup new bond mode 47 bond_reset "${param}" 48 49 ip -n ${s_ns} link add link bond0 name macv0 type macvlan mode bridge 50 ip -n ${s_ns} link set macv0 netns ${m1_ns} 51 ip -n ${m1_ns} link set dev macv0 up 52 ip -n ${m1_ns} addr add ${m1_ip4}/24 dev macv0 53 ip -n ${m1_ns} addr add ${m1_ip6}/24 dev macv0 54 55 ip -n ${s_ns} link add link bond0 name macv0 type macvlan mode bridge 56 ip -n ${s_ns} link set macv0 netns ${m2_ns} 57 ip -n ${m2_ns} link set dev macv0 up 58 ip -n ${m2_ns} addr add ${m2_ip4}/24 dev macv0 59 ip -n ${m2_ns} addr add ${m2_ip6}/24 dev macv0 60 61 sleep 2 62 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 5 74 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 eth0 85} 86 87trap cleanup EXIT 88 89setup_prepare 90ip netns add ${m1_ns} 91ip netns add ${m2_ns} 92 93modes="active-backup balance-tlb balance-alb" 94 95for mode in $modes; do 96 macvlan_over_bond "mode $mode" 97done 98 99exit $EXIT_STATUS 100