Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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