Blame SOURCES/rear-bz1639705.patch

e8a0f5
diff --git a/tests/setup1/README b/tests/setup1/README
e8a0f5
index 75bc000b..1cc4faa8 100644
e8a0f5
--- a/tests/setup1/README
e8a0f5
+++ b/tests/setup1/README
e8a0f5
@@ -3,7 +3,7 @@
e8a0f5
                    +----------------------------------+
e8a0f5
 
e8a0f5
 
e8a0f5
-You need a VM with 10 network interfaces (eth0 being the main interface).
e8a0f5
+You need a VM with 13 network interfaces (eth0 being the main interface).
e8a0f5
 All interfaces except eth0 can be non-reachable.
e8a0f5
 
e8a0f5
 kvm.xml is an example template of such VM.
e8a0f5
@@ -12,10 +12,11 @@ kvm.xml is an example template of such VM.
e8a0f5
 eth0		IP 192.168.122.x/24 default 192.168.122.1 (x=177)
e8a0f5
 bond12		eth1 + eth2 mode=4 miimon=1000 IP 1.1.1.1
e8a0f5
 bond34		eth3 + eth4 mode=1 miimon=100 IP 2.2.2.2 route 102.0.0.0/8
e8a0f5
-team56		eth5 + eth6 IP 3.3.3.3 route 103.0.0.0/8
e8a0f5
+team56		eth5 + eth6 lacp IP 3.3.3.3 route 103.0.0.0/8
e8a0f5
 bridge78	eth7 + eth8 IP 4.4.4.4 route 104.0.0.0/8
e8a0f5
 vlan1eth9	eth9.1 IP 5.5.5.5 route 105.0.0.0/8
e8a0f5
 eth10		IP 6.6.6.6 route 106.0.0.0/8
e8a0f5
+team1112	eth11 + eth12 activebackup IP 7.7.7.7 route 107.0.0.0/8
e8a0f5
 
e8a0f5
 routes:
e8a0f5
 default via 192.168.122.1 dev eth0
e8a0f5
@@ -24,23 +25,24 @@ default via 192.168.122.1 dev eth0
e8a0f5
 104.0.0.0/8 via 4.4.4.254 dev bridge78
e8a0f5
 105.0.0.0/8 via 5.5.5.254 dev eth9.1
e8a0f5
 106.0.0.0/8 via 6.6.6.254 dev eth10
e8a0f5
+107.0.0.0/8 via 7.7.7.254 dev team1112
e8a0f5
 
e8a0f5
 
e8a0f5
 Running the unit tests:
e8a0f5
 ----------------------
e8a0f5
 
e8a0f5
-After copying the files and making sure the script has been adapted,
e8a0f5
+After copying the network configuration files and rebooting the system,
e8a0f5
 
e8a0f5
 from the VM, run the following command:
e8a0f5
 
e8a0f5
-# for i in $(seq 1 8); do ./tcase$i.sh; done
e8a0f5
+# for i in $(seq 1 8); do ./tcase${i}.sh; done
e8a0f5
 
e8a0f5
 This will record the generated network+route files.
e8a0f5
 
e8a0f5
 Then to verify result, run the following command (this will take down the
e8a0f5
 network, except eth0):
e8a0f5
 
e8a0f5
-# for i in $(seq 1 8); do ./verify.sh tcase$i_results; done
e8a0f5
+# for i in $(seq 1 8); do ./verify.sh tcase${i}_results; done
e8a0f5
 
e8a0f5
 
e8a0f5
 -------------------------------------------------------------------------------
e8a0f5
@@ -51,92 +53,98 @@ Test Case #1: standard
e8a0f5
 
e8a0f5
 Expected results:
e8a0f5
 
e8a0f5
-team56 -> eth5
e8a0f5
 default via 192.168.122.1 dev eth0
e8a0f5
 102.0.0.0/8 via 2.2.2.254 dev bond34
e8a0f5
-103.0.0.0/8 via 3.3.3.254 dev eth5
e8a0f5
+103.0.0.0/8 via 3.3.3.254 dev team56
e8a0f5
 104.0.0.0/8 via 4.4.4.254 dev bridge78
e8a0f5
 105.0.0.0/8 via 5.5.5.254 dev eth9.1
e8a0f5
 106.0.0.0/8 via 6.6.6.254 dev eth10
e8a0f5
+107.0.0.0/8 via 7.7.7.254 dev team1112
e8a0f5
 
e8a0f5
 
e8a0f5
 Test Case #2: simplification
e8a0f5
 ------------
e8a0f5
 
e8a0f5
-SIMPLIFY_BONDING=y SIMPLIFY_BRIDGE=y
e8a0f5
+SIMPLIFY_BONDING=y SIMPLIFY_BRIDGE=y SIMPLIFY_TEAMING=y
e8a0f5
 
e8a0f5
 Expected results:
e8a0f5
 
e8a0f5
-bond12 -> eth1
e8a0f5
+bond12 -> bond12 (not simplified because mode=4)
e8a0f5
 bond34 -> eth3
e8a0f5
-team56 -> eth5
e8a0f5
+team56 -> team56 (not simplified because runner=lacp)
e8a0f5
 bridge78 -> eth7
e8a0f5
+team1112 -> eth11
e8a0f5
 default via 192.168.122.1 dev eth0
e8a0f5
 102.0.0.0/8 via 2.2.2.254 dev eth3
e8a0f5
-103.0.0.0/8 via 3.3.3.254 dev eth5
e8a0f5
+103.0.0.0/8 via 3.3.3.254 dev team56
e8a0f5
 104.0.0.0/8 via 4.4.4.254 dev eth7
e8a0f5
 105.0.0.0/8 via 5.5.5.254 dev eth9.1
e8a0f5
 106.0.0.0/8 via 6.6.6.254 dev eth10
e8a0f5
+107.0.0.0/8 via 7.7.7.254 dev eth11
e8a0f5
 
e8a0f5
 
e8a0f5
-Test Case #3: standard with eth2, eth4, eth6, eth8, eth10 DOWN
e8a0f5
+Test Case #3: standard with eth2, eth4, eth6, eth8, eth10, eth12 DOWN
e8a0f5
 ------------
e8a0f5
 
e8a0f5
-for eth in eth2 eth4 eth6 eth8 eth10; do ifdown $eth; done
e8a0f5
+for eth in eth2 eth4 eth6 eth8 eth10 eth12; do ifdown $eth; done
e8a0f5
 
e8a0f5
 Expected results:
e8a0f5
 
e8a0f5
 eth2, eth4, eth6, eth8, eth10 not in file
e8a0f5
 default via 192.168.122.1 dev eth0
e8a0f5
 102.0.0.0/8 via 2.2.2.254 dev bond34
e8a0f5
-103.0.0.0/8 via 3.3.3.254 dev eth5
e8a0f5
+103.0.0.0/8 via 3.3.3.254 dev team56
e8a0f5
 104.0.0.0/8 via 4.4.4.254 dev bridge78
e8a0f5
 105.0.0.0/8 via 5.5.5.254 dev eth9.1
e8a0f5
+107.0.0.0/8 via 7.7.7.254 dev team1112
e8a0f5
 
e8a0f5
 
e8a0f5
-Test Case #4: simplification with eth2, eth4, eth6, eth8, eth10 DOWN
e8a0f5
+Test Case #4: simplification with eth2, eth4, eth6, eth8, eth10, eth12 DOWN
e8a0f5
 ------------
e8a0f5
 
e8a0f5
-for eth in eth2 eth4 eth6 eth8 eth10; do ifdown $eth; done
e8a0f5
+for eth in eth2 eth4 eth6 eth8 eth10 eth12; do ifdown $eth; done
e8a0f5
 
e8a0f5
 Expected results:
e8a0f5
 
e8a0f5
-eth2, eth4, eth6, eth8, eth10 not in file
e8a0f5
+eth4, eth6, eth8, eth10, eth12 not in file
e8a0f5
 default via 192.168.122.1 dev eth0
e8a0f5
 102.0.0.0/8 via 2.2.2.254 dev eth3
e8a0f5
-103.0.0.0/8 via 3.3.3.254 dev eth5
e8a0f5
+103.0.0.0/8 via 3.3.3.254 dev team56
e8a0f5
 104.0.0.0/8 via 4.4.4.254 dev eth7
e8a0f5
 105.0.0.0/8 via 5.5.5.254 dev eth9.1
e8a0f5
+107.0.0.0/8 via 7.7.7.254 dev eth11
e8a0f5
 
e8a0f5
 
e8a0f5
-Test Case #5: standard with eth1, eth3, eth5, eth7, eth9 DOWN
e8a0f5
+Test Case #5: standard with eth1, eth3, eth5, eth7, eth9, eth11 DOWN
e8a0f5
 ------------
e8a0f5
 
e8a0f5
-for eth in eth1 eth3 eth5 eth7 eth9; do ifdown $eth; done
e8a0f5
+for eth in eth1 eth3 eth5 eth7 eth9 eth11; do ifdown $eth; done
e8a0f5
 
e8a0f5
 Expected results:
e8a0f5
 
e8a0f5
 eth2, eth4, eth6, eth8, eth10 not in file
e8a0f5
 default via 192.168.122.1 dev eth0
e8a0f5
 102.0.0.0/8 via 2.2.2.254 dev bond34
e8a0f5
-103.0.0.0/8 via 3.3.3.254 dev eth6
e8a0f5
+103.0.0.0/8 via 3.3.3.254 dev team56
e8a0f5
 104.0.0.0/8 via 4.4.4.254 dev bridge78
e8a0f5
 106.0.0.0/8 via 6.6.6.254 dev eth10
e8a0f5
+107.0.0.0/8 via 7.7.7.254 dev team1112
e8a0f5
 
e8a0f5
 
e8a0f5
-Test Case #6: simplification with eth1, eth3, eth5, eth7, eth9 DOWN
e8a0f5
+Test Case #6: simplification with eth1, eth3, eth5, eth7, eth9, eth11 DOWN
e8a0f5
 ------------
e8a0f5
 
e8a0f5
-for eth in eth1 eth3 eth5 eth7 eth9; do ifdown $eth; done
e8a0f5
+for eth in eth1 eth3 eth5 eth7 eth9 eth11; do ifdown $eth; done
e8a0f5
 
e8a0f5
 Expected results:
e8a0f5
 
e8a0f5
-eth2, eth4, eth6, eth8, eth10 not in file
e8a0f5
+eth4, eth6, eth8, eth10 not in file
e8a0f5
 default via 192.168.122.1 dev eth0
e8a0f5
 102.0.0.0/8 via 2.2.2.254 dev eth4
e8a0f5
-103.0.0.0/8 via 3.3.3.254 dev eth6
e8a0f5
+103.0.0.0/8 via 3.3.3.254 dev team56
e8a0f5
 104.0.0.0/8 via 4.4.4.254 dev eth8
e8a0f5
 106.0.0.0/8 via 6.6.6.254 dev eth10
e8a0f5
+107.0.0.0/8 via 7.7.7.254 dev eth12
e8a0f5
 
e8a0f5
 
e8a0f5
 Test Case #7: IP address mapping
e8a0f5
@@ -149,6 +157,7 @@ bond34	2.2.2.100/16
e8a0f5
 bridge78	4.4.4.100/24
e8a0f5
 #eth9.1	5.5.5.100/24
e8a0f5
 eth10	6.6.6.100/16
e8a0f5
+team1112	7.7.7.100/16
e8a0f5
 
e8a0f5
 Expected results:
e8a0f5
 
e8a0f5
@@ -156,14 +165,15 @@ bond12 -> 1.1.1.100/16
e8a0f5
 bond34 -> 2.2.2.100/16
e8a0f5
 eth5 -> 3.3.3.3/16 (no mapping)
e8a0f5
 bridge78 -> 4.4.4.100/24
e8a0f5
-eth9.1 => 5.5.5.5/24 (no mapping)
e8a0f5
-eth10 => 6.6.6.100/16
e8a0f5
+eth9.1 -> 5.5.5.5/24 (no mapping)
e8a0f5
+eth10 -> 6.6.6.100/16
e8a0f5
+team1112 -> 7.7.7.100/16
e8a0f5
 
e8a0f5
 
e8a0f5
 Test Case #8: IP address mapping & simplification
e8a0f5
 ------------
e8a0f5
 
e8a0f5
-SIMPLIFY_BONDING=y SIMPLIFY_BRIDGE=y
e8a0f5
+SIMPLIFY_BONDING=y SIMPLIFY_BRIDGE=y SIMPLIFY_TEAMING=y
e8a0f5
 
e8a0f5
 # cat mappings/ip_addresses 
e8a0f5
 bond12	1.1.1.100/16
e8a0f5
@@ -172,12 +182,14 @@ bond34	2.2.2.100/16
e8a0f5
 bridge78	4.4.4.100/24
e8a0f5
 #eth9.1	5.5.5.100/24
e8a0f5
 eth10	6.6.6.100/16
e8a0f5
+team1112	7.7.7.100/16
e8a0f5
 
e8a0f5
 Expected results:
e8a0f5
 
e8a0f5
-eth1 => 1.1.1.100/16
e8a0f5
-eth3 => 2.2.2.100/16
e8a0f5
-eth5 => 3.3.3.3/16 (no mapping)
e8a0f5
-eth7 => 4.4.4.100/24
e8a0f5
-eth9.1 => 5.5.5.5/24 (no mapping)
e8a0f5
-eth10 => 6.6.6.100/16
e8a0f5
+bond12 -> 1.1.1.100/16
e8a0f5
+eth3 -> 2.2.2.100/16
e8a0f5
+eth5 -> 3.3.3.3/16 (no mapping)
e8a0f5
+eth7 -> 4.4.4.100/24
e8a0f5
+eth9.1 -> 5.5.5.5/24 (no mapping)
e8a0f5
+eth10 -> 6.6.6.100/16
e8a0f5
+eth11 -> 7.7.7.100/16
e8a0f5
diff --git a/tests/setup1/etc/sysconfig/network-scripts/ifcfg-eth11 b/tests/setup1/etc/sysconfig/network-scripts/ifcfg-eth11
e8a0f5
new file mode 100644
e8a0f5
index 00000000..f8709b3e
e8a0f5
--- /dev/null
e8a0f5
+++ b/tests/setup1/etc/sysconfig/network-scripts/ifcfg-eth11
e8a0f5
@@ -0,0 +1,6 @@
e8a0f5
+NAME="eth11"
e8a0f5
+DEVICE="eth11"
e8a0f5
+ONBOOT="yes"
e8a0f5
+TEAM_MASTER="team1112"
e8a0f5
+DEVICETYPE="TeamPort"
e8a0f5
+TYPE="Ethernet"
e8a0f5
diff --git a/tests/setup1/etc/sysconfig/network-scripts/ifcfg-eth12 b/tests/setup1/etc/sysconfig/network-scripts/ifcfg-eth12
e8a0f5
new file mode 100644
e8a0f5
index 00000000..a5d62722
e8a0f5
--- /dev/null
e8a0f5
+++ b/tests/setup1/etc/sysconfig/network-scripts/ifcfg-eth12
e8a0f5
@@ -0,0 +1,6 @@
e8a0f5
+NAME="eth12"
e8a0f5
+DEVICE="eth12"
e8a0f5
+ONBOOT="yes"
e8a0f5
+TEAM_MASTER="team1112"
e8a0f5
+DEVICETYPE="TeamPort"
e8a0f5
+TYPE="Ethernet"
e8a0f5
diff --git a/tests/setup1/etc/sysconfig/network-scripts/ifcfg-team1112 b/tests/setup1/etc/sysconfig/network-scripts/ifcfg-team1112
e8a0f5
new file mode 100644
e8a0f5
index 00000000..fd48fb47
e8a0f5
--- /dev/null
e8a0f5
+++ b/tests/setup1/etc/sysconfig/network-scripts/ifcfg-team1112
e8a0f5
@@ -0,0 +1,9 @@
e8a0f5
+DEVICE="team1112"
e8a0f5
+TEAM_CONFIG='{"device":"team1112","runner":{"name":"activebackup"},"link_watch":{"name":"ethtool"},"ports":{"eth11":{"prio":-10,"sticky":true},"eth12":{"prio":100}}}'
e8a0f5
+PROXY_METHOD="none"
e8a0f5
+BROWSER_ONLY="no"
e8a0f5
+NAME="team1112"
e8a0f5
+ONBOOT="yes"
e8a0f5
+DEVICETYPE="Team"
e8a0f5
+IPADDR=7.7.7.7
e8a0f5
+PREFIX=16
e8a0f5
diff --git a/tests/setup1/etc/sysconfig/network-scripts/route-team1112 b/tests/setup1/etc/sysconfig/network-scripts/route-team1112
e8a0f5
new file mode 100644
e8a0f5
index 00000000..d3e82f33
e8a0f5
--- /dev/null
e8a0f5
+++ b/tests/setup1/etc/sysconfig/network-scripts/route-team1112
e8a0f5
@@ -0,0 +1 @@
e8a0f5
+107.0.0.0/8 via 7.7.7.254
e8a0f5
diff --git a/tests/setup1/kvm.xml b/tests/setup1/kvm.xml
e8a0f5
index 3e7e84aa..2e7d10cf 100644
e8a0f5
--- a/tests/setup1/kvm.xml
e8a0f5
+++ b/tests/setup1/kvm.xml
e8a0f5
@@ -106,6 +106,14 @@
e8a0f5
       <model type='virtio'/>
e8a0f5
       <address type='pci' domain='0x0000' bus='0x00' slot='0x12' function='0x0'/>
e8a0f5
     </interface>
e8a0f5
+    <interface type='network'>
e8a0f5
+      <model type='virtio'/>
e8a0f5
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x13' function='0x0'/>
e8a0f5
+    </interface>
e8a0f5
+    <interface type='network'>
e8a0f5
+      <model type='virtio'/>
e8a0f5
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x14' function='0x0'/>
e8a0f5
+    </interface>
e8a0f5
     <serial type='pty'>
e8a0f5
       <target port='0'/>
e8a0f5
     </serial>
e8a0f5
diff --git a/tests/setup1/mappings/ip_addresses b/tests/setup1/mappings/ip_addresses
e8a0f5
index 145300b9..102fdfcf 100644
e8a0f5
--- a/tests/setup1/mappings/ip_addresses
e8a0f5
+++ b/tests/setup1/mappings/ip_addresses
e8a0f5
@@ -4,3 +4,4 @@ bond34	2.2.2.100/16
e8a0f5
 bridge78	4.4.4.100/24
e8a0f5
 #eth9.1	5.5.5.100/24
e8a0f5
 eth10	6.6.6.100/16
e8a0f5
+team1112	7.7.7.100/16
e8a0f5
diff --git a/tests/setup1/run.sh b/tests/setup1/run.sh
e8a0f5
index 8dbc436b..3de8a5ba 100644
e8a0f5
--- a/tests/setup1/run.sh
e8a0f5
+++ b/tests/setup1/run.sh
e8a0f5
@@ -4,9 +4,9 @@ echo
e8a0f5
 echo "$0"
e8a0f5
 echo
e8a0f5
 
e8a0f5
-REAR_DIR="/path/to/rear/sources"
e8a0f5
+REAR_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/../..")"
e8a0f5
 
e8a0f5
-RESULT_DIR="/root/$(basename $0 .sh)_results"
e8a0f5
+RESULT_DIR="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")")/$(basename $0 .sh)_results"
e8a0f5
 mkdir -p $RESULT_DIR
e8a0f5
 
e8a0f5
 function DebugPrint () {
e8a0f5
@@ -41,9 +41,10 @@ function has_binary () {
e8a0f5
 	which $1 >/dev/null 2>&1
e8a0f5
 }
e8a0f5
 
e8a0f5
-TMP_DIR=/root/tmp
e8a0f5
+TMP_DIR="/tmp/$(basename "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")"
e8a0f5
 
e8a0f5
-rm -fr $TMP_DIR
e8a0f5
+rm -fr $TMP_DIR >/dev/null 2>&1
e8a0f5
+mkdir -p $TMP_DIR
e8a0f5
 
e8a0f5
 # Add to sed -e below to test "ip_link_supports_bridge='false'" (RHEL6)
e8a0f5
 #    -e "s#\$ip_link_supports_bridge#'false'#" \
e8a0f5
@@ -53,13 +54,13 @@ rm -fr $TMP_DIR
e8a0f5
 
e8a0f5
 # Add to sed -e below to have code using 'brctl' instead of 'ip link' (RHEL6)
e8a0f5
 #    -e "s#\$net_devices_have_lower_links#'false'#" \
e8a0f5
-sed -e "s#^network_devices_setup_script=.*#network_devices_setup_script=/tmp/60-network-devices.sh#" \
e8a0f5
-    $REAR_DIR/usr/share/rear/rescue/GNU/Linux/310_network_devices.sh > /tmp/310_network_devices.sh
e8a0f5
-sed "s#^netscript=.*#netscript=/tmp/62-routing.sh#" $REAR_DIR/usr/share/rear/rescue/GNU/Linux/350_routing.sh > /tmp/350_routing.sh
e8a0f5
+sed -e "s#^network_devices_setup_script=.*#network_devices_setup_script=$TMP_DIR/60-network-devices.sh#" \
e8a0f5
+    $REAR_DIR/usr/share/rear/rescue/GNU/Linux/310_network_devices.sh > $TMP_DIR/310_network_devices.sh
e8a0f5
+sed "s#^network_routing_setup_script=.*#network_routing_setup_script=$TMP_DIR/62-routing.sh#" $REAR_DIR/usr/share/rear/rescue/GNU/Linux/350_routing.sh > $TMP_DIR/350_routing.sh
e8a0f5
 
e8a0f5
-. /tmp/310_network_devices.sh
e8a0f5
-. /tmp/350_routing.sh
e8a0f5
+. $TMP_DIR/310_network_devices.sh
e8a0f5
+. $TMP_DIR/350_routing.sh
e8a0f5
 
e8a0f5
-for f in /tmp/60-network-devices.sh /tmp/62-routing.sh; do
e8a0f5
+for f in $TMP_DIR/60-network-devices.sh $TMP_DIR/62-routing.sh; do
e8a0f5
 	grep -v "dev eth0" $f > $RESULT_DIR/$(basename $f)
e8a0f5
 done
e8a0f5
diff --git a/tests/setup1/tcase1.sh b/tests/setup1/tcase1.sh
e8a0f5
index 597f3f5c..7b5032c7 100755
e8a0f5
--- a/tests/setup1/tcase1.sh
e8a0f5
+++ b/tests/setup1/tcase1.sh
e8a0f5
@@ -1,6 +1,5 @@
e8a0f5
 #!/bin/bash
e8a0f5
 
e8a0f5
 unset CONFIG_DIR
e8a0f5
-#CONFIG_DIR=/root
e8a0f5
 
e8a0f5
-. ./run.sh
e8a0f5
+. "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"/run.sh
e8a0f5
diff --git a/tests/setup1/tcase1_results/ip_a.expected b/tests/setup1/tcase1_results/ip_a.expected
e8a0f5
index e039f6f9..415d840b 100644
e8a0f5
--- a/tests/setup1/tcase1_results/ip_a.expected
e8a0f5
+++ b/tests/setup1/tcase1_results/ip_a.expected
e8a0f5
@@ -2,14 +2,15 @@ eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master b
e8a0f5
 eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond12 state UP qlen 1000
e8a0f5
 eth3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond34 state UP qlen 1000
e8a0f5
 eth4: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond34 state UP qlen 1000
e8a0f5
-eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-    inet 3.3.3.3/16 scope global eth5
e8a0f5
-eth6: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
+eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team56 state UP qlen 1000
e8a0f5
+eth6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team56 state UP qlen 1000
e8a0f5
 eth7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bridge78 state UP qlen 1000
e8a0f5
 eth8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bridge78 state UP qlen 1000
e8a0f5
 eth9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
 eth10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
     inet 6.6.6.6/16 scope global eth10
e8a0f5
+eth11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team1112 state UP qlen 1000
e8a0f5
+eth12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team1112 state UP qlen 1000
e8a0f5
 bond12: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
     inet 1.1.1.1/16 scope global bond12
e8a0f5
 bond34: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
@@ -18,3 +19,7 @@ bridge78: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen
e8a0f5
     inet 4.4.4.4/24 scope global bridge78
e8a0f5
 eth9.1@eth9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
     inet 5.5.5.5/24 scope global eth9.1
e8a0f5
+team1112: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 7.7.7.7/16 scope global team1112
e8a0f5
+team56: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 3.3.3.3/16 scope global team56
e8a0f5
diff --git a/tests/setup1/tcase1_results/ip_r.expected b/tests/setup1/tcase1_results/ip_r.expected
e8a0f5
index 0e5ee87c..f246714c 100644
e8a0f5
--- a/tests/setup1/tcase1_results/ip_r.expected
e8a0f5
+++ b/tests/setup1/tcase1_results/ip_r.expected
e8a0f5
@@ -3,9 +3,11 @@
e8a0f5
 104.0.0.0/8 via 4.4.4.254 
e8a0f5
 105.0.0.0/8 via 5.5.5.254 
e8a0f5
 106.0.0.0/8 via 6.6.6.254 
e8a0f5
+107.0.0.0/8 via 7.7.7.254 
e8a0f5
 1.1.0.0/16 proto kernel scope link src 1.1.1.1 
e8a0f5
 2.2.0.0/16 proto kernel scope link src 2.2.2.2 
e8a0f5
 3.3.0.0/16 proto kernel scope link src 3.3.3.3 
e8a0f5
 4.4.4.0/24 proto kernel scope link src 4.4.4.4 
e8a0f5
 5.5.5.0/24 proto kernel scope link src 5.5.5.5 
e8a0f5
 6.6.0.0/16 proto kernel scope link src 6.6.6.6 
e8a0f5
+7.7.0.0/16 proto kernel scope link src 7.7.7.7 
e8a0f5
diff --git a/tests/setup1/tcase2.sh b/tests/setup1/tcase2.sh
e8a0f5
index faa39396..65d1aa34 100755
e8a0f5
--- a/tests/setup1/tcase2.sh
e8a0f5
+++ b/tests/setup1/tcase2.sh
e8a0f5
@@ -1,9 +1,9 @@
e8a0f5
 #!/bin/bash
e8a0f5
 
e8a0f5
 unset CONFIG_DIR
e8a0f5
-#CONFIG_DIR=/root
e8a0f5
 
e8a0f5
 export SIMPLIFY_BONDING=y
e8a0f5
 export SIMPLIFY_BRIDGE=y
e8a0f5
+export SIMPLIFY_TEAMING=y
e8a0f5
 
e8a0f5
-. ./run.sh
e8a0f5
+. "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"/run.sh
e8a0f5
diff --git a/tests/setup1/tcase2_results/ip_a.expected b/tests/setup1/tcase2_results/ip_a.expected
e8a0f5
index 51280843..21c5e686 100644
e8a0f5
--- a/tests/setup1/tcase2_results/ip_a.expected
e8a0f5
+++ b/tests/setup1/tcase2_results/ip_a.expected
e8a0f5
@@ -1,17 +1,22 @@
e8a0f5
-eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-    inet 1.1.1.1/16 scope global eth1
e8a0f5
-eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
+bond12: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 1.1.1.1/16 scope global bond12
e8a0f5
+eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond12 state UP qlen 1000
e8a0f5
+eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond12 state UP qlen 1000
e8a0f5
 eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
     inet 2.2.2.2/16 scope global eth3
e8a0f5
 eth4: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
-eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-    inet 3.3.3.3/16 scope global eth5
e8a0f5
-eth6: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
+eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team56 state UP qlen 1000
e8a0f5
+eth6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team56 state UP qlen 1000
e8a0f5
 eth7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
     inet 4.4.4.4/24 scope global eth7
e8a0f5
 eth8: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
 eth10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
     inet 6.6.6.6/16 scope global eth10
e8a0f5
+eth11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
+    inet 7.7.7.7/16 scope global eth11
e8a0f5
+eth12: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth9.1@eth9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
     inet 5.5.5.5/24 scope global eth9.1
e8a0f5
+team56: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 3.3.3.3/16 scope global team56
e8a0f5
diff --git a/tests/setup1/tcase2_results/ip_r.expected b/tests/setup1/tcase2_results/ip_r.expected
e8a0f5
index 0e5ee87c..f246714c 100644
e8a0f5
--- a/tests/setup1/tcase2_results/ip_r.expected
e8a0f5
+++ b/tests/setup1/tcase2_results/ip_r.expected
e8a0f5
@@ -3,9 +3,11 @@
e8a0f5
 104.0.0.0/8 via 4.4.4.254 
e8a0f5
 105.0.0.0/8 via 5.5.5.254 
e8a0f5
 106.0.0.0/8 via 6.6.6.254 
e8a0f5
+107.0.0.0/8 via 7.7.7.254 
e8a0f5
 1.1.0.0/16 proto kernel scope link src 1.1.1.1 
e8a0f5
 2.2.0.0/16 proto kernel scope link src 2.2.2.2 
e8a0f5
 3.3.0.0/16 proto kernel scope link src 3.3.3.3 
e8a0f5
 4.4.4.0/24 proto kernel scope link src 4.4.4.4 
e8a0f5
 5.5.5.0/24 proto kernel scope link src 5.5.5.5 
e8a0f5
 6.6.0.0/16 proto kernel scope link src 6.6.6.6 
e8a0f5
+7.7.0.0/16 proto kernel scope link src 7.7.7.7 
e8a0f5
diff --git a/tests/setup1/tcase3.sh b/tests/setup1/tcase3.sh
e8a0f5
index 45ce04ce..7ab38f3b 100755
e8a0f5
--- a/tests/setup1/tcase3.sh
e8a0f5
+++ b/tests/setup1/tcase3.sh
e8a0f5
@@ -1,10 +1,9 @@
e8a0f5
 #!/bin/bash
e8a0f5
 
e8a0f5
 unset CONFIG_DIR
e8a0f5
-#CONFIG_DIR=/root
e8a0f5
 
e8a0f5
-for eth in eth2 eth4 eth6 eth8 eth10; do ifdown $eth; done
e8a0f5
+for eth in eth2 eth4 eth6 eth8 eth10 eth12; do ifdown $eth; done
e8a0f5
 
e8a0f5
-. ./run.sh
e8a0f5
+. "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"/run.sh
e8a0f5
 
e8a0f5
-for eth in eth2 eth4 eth6 eth8 eth10; do ifup $eth; done
e8a0f5
+for eth in eth2 eth4 eth6 eth8 eth10 eth12; do ifup $eth; done
e8a0f5
diff --git a/tests/setup1/tcase3_results/ip_a.expected b/tests/setup1/tcase3_results/ip_a.expected
e8a0f5
index 9adf521d..6071fb27 100644
e8a0f5
--- a/tests/setup1/tcase3_results/ip_a.expected
e8a0f5
+++ b/tests/setup1/tcase3_results/ip_a.expected
e8a0f5
@@ -2,13 +2,14 @@ eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master b
e8a0f5
 eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond34 state UP qlen 1000
e8a0f5
 eth4: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
-eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-    inet 3.3.3.3/16 scope global eth5
e8a0f5
+eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team56 state UP qlen 1000
e8a0f5
 eth6: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bridge78 state UP qlen 1000
e8a0f5
 eth8: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
 eth10: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
+eth11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team1112 state UP qlen 1000
e8a0f5
+eth12: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 bond12: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
     inet 1.1.1.1/16 scope global bond12
e8a0f5
 bond34: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
@@ -17,3 +18,7 @@ bridge78: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen
e8a0f5
     inet 4.4.4.4/24 scope global bridge78
e8a0f5
 eth9.1@eth9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
     inet 5.5.5.5/24 scope global eth9.1
e8a0f5
+team56: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 3.3.3.3/16 scope global team56
e8a0f5
+team1112: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 7.7.7.7/16 scope global team1112
e8a0f5
diff --git a/tests/setup1/tcase3_results/ip_r.expected b/tests/setup1/tcase3_results/ip_r.expected
e8a0f5
index 62f16947..223a7db1 100644
e8a0f5
--- a/tests/setup1/tcase3_results/ip_r.expected
e8a0f5
+++ b/tests/setup1/tcase3_results/ip_r.expected
e8a0f5
@@ -2,8 +2,10 @@
e8a0f5
 103.0.0.0/8 via 3.3.3.254 
e8a0f5
 104.0.0.0/8 via 4.4.4.254 
e8a0f5
 105.0.0.0/8 via 5.5.5.254 
e8a0f5
+107.0.0.0/8 via 7.7.7.254 
e8a0f5
 1.1.0.0/16 proto kernel scope link src 1.1.1.1 
e8a0f5
 2.2.0.0/16 proto kernel scope link src 2.2.2.2 
e8a0f5
 3.3.0.0/16 proto kernel scope link src 3.3.3.3 
e8a0f5
 4.4.4.0/24 proto kernel scope link src 4.4.4.4 
e8a0f5
 5.5.5.0/24 proto kernel scope link src 5.5.5.5 
e8a0f5
+7.7.0.0/16 proto kernel scope link src 7.7.7.7 
e8a0f5
diff --git a/tests/setup1/tcase4.sh b/tests/setup1/tcase4.sh
e8a0f5
index d28d2606..ac22ea73 100755
e8a0f5
--- a/tests/setup1/tcase4.sh
e8a0f5
+++ b/tests/setup1/tcase4.sh
e8a0f5
@@ -1,13 +1,13 @@
e8a0f5
 #!/bin/bash
e8a0f5
 
e8a0f5
 unset CONFIG_DIR
e8a0f5
-#CONFIG_DIR=/root
e8a0f5
 
e8a0f5
 export SIMPLIFY_BONDING=y
e8a0f5
 export SIMPLIFY_BRIDGE=y
e8a0f5
+export SIMPLIFY_TEAMING=y
e8a0f5
 
e8a0f5
-for eth in eth2 eth4 eth6 eth8 eth10; do ifdown $eth; done
e8a0f5
+for eth in eth2 eth4 eth6 eth8 eth10 eth12; do ifdown $eth; done
e8a0f5
 
e8a0f5
-. ./run.sh
e8a0f5
+. "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"/run.sh
e8a0f5
 
e8a0f5
-for eth in eth2 eth4 eth6 eth8 eth10; do ifup $eth; done
e8a0f5
+for eth in eth2 eth4 eth6 eth8 eth10 eth12; do ifup $eth; done
e8a0f5
diff --git a/tests/setup1/tcase4_results/ip_a.expected b/tests/setup1/tcase4_results/ip_a.expected
e8a0f5
index e12bd4d0..7112b5af 100644
e8a0f5
--- a/tests/setup1/tcase4_results/ip_a.expected
e8a0f5
+++ b/tests/setup1/tcase4_results/ip_a.expected
e8a0f5
@@ -1,16 +1,21 @@
e8a0f5
-eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-    inet 1.1.1.1/16 scope global eth1
e8a0f5
+bond12: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 1.1.1.1/16 scope global bond12
e8a0f5
+eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond12 state UP qlen 1000
e8a0f5
 eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
     inet 2.2.2.2/16 scope global eth3
e8a0f5
 eth4: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
-eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-    inet 3.3.3.3/16 scope global eth5
e8a0f5
+eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team56 state UP qlen 1000
e8a0f5
 eth6: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
     inet 4.4.4.4/24 scope global eth7
e8a0f5
 eth8: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
 eth10: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
+eth11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
+    inet 7.7.7.7/16 scope global eth11
e8a0f5
+eth12: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth9.1@eth9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
     inet 5.5.5.5/24 scope global eth9.1
e8a0f5
+team56: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 3.3.3.3/16 scope global team56
e8a0f5
diff --git a/tests/setup1/tcase4_results/ip_r.expected b/tests/setup1/tcase4_results/ip_r.expected
e8a0f5
index 62f16947..223a7db1 100644
e8a0f5
--- a/tests/setup1/tcase4_results/ip_r.expected
e8a0f5
+++ b/tests/setup1/tcase4_results/ip_r.expected
e8a0f5
@@ -2,8 +2,10 @@
e8a0f5
 103.0.0.0/8 via 3.3.3.254 
e8a0f5
 104.0.0.0/8 via 4.4.4.254 
e8a0f5
 105.0.0.0/8 via 5.5.5.254 
e8a0f5
+107.0.0.0/8 via 7.7.7.254 
e8a0f5
 1.1.0.0/16 proto kernel scope link src 1.1.1.1 
e8a0f5
 2.2.0.0/16 proto kernel scope link src 2.2.2.2 
e8a0f5
 3.3.0.0/16 proto kernel scope link src 3.3.3.3 
e8a0f5
 4.4.4.0/24 proto kernel scope link src 4.4.4.4 
e8a0f5
 5.5.5.0/24 proto kernel scope link src 5.5.5.5 
e8a0f5
+7.7.0.0/16 proto kernel scope link src 7.7.7.7 
e8a0f5
diff --git a/tests/setup1/tcase5.sh b/tests/setup1/tcase5.sh
e8a0f5
index adb09bda..dc786a8a 100755
e8a0f5
--- a/tests/setup1/tcase5.sh
e8a0f5
+++ b/tests/setup1/tcase5.sh
e8a0f5
@@ -1,10 +1,9 @@
e8a0f5
 #!/bin/bash
e8a0f5
 
e8a0f5
 unset CONFIG_DIR
e8a0f5
-#CONFIG_DIR=/root
e8a0f5
 
e8a0f5
-for eth in eth1 eth3 eth5 eth7 eth9; do ifdown $eth; done
e8a0f5
+for eth in eth1 eth3 eth5 eth7 eth9 eth11; do ifdown $eth; done
e8a0f5
 
e8a0f5
-. ./run.sh
e8a0f5
+. "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"/run.sh
e8a0f5
 
e8a0f5
-for eth in eth1 eth3 eth5 eth7 eth9; do ifup $eth; done
e8a0f5
+for eth in eth1 eth3 eth5 eth7 eth9 eth11; do ifup $eth; done
e8a0f5
diff --git a/tests/setup1/tcase5_results/ip_a.expected b/tests/setup1/tcase5_results/ip_a.expected
e8a0f5
index bd1152c8..e55915fc 100644
e8a0f5
--- a/tests/setup1/tcase5_results/ip_a.expected
e8a0f5
+++ b/tests/setup1/tcase5_results/ip_a.expected
e8a0f5
@@ -3,16 +3,21 @@ eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master b
e8a0f5
 eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth4: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond34 state UP qlen 1000
e8a0f5
 eth5: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
-eth6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-    inet 3.3.3.3/16 scope global eth6
e8a0f5
+eth6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team56 state UP qlen 1000
e8a0f5
 eth7: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bridge78 state UP qlen 1000
e8a0f5
 eth9: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
     inet 6.6.6.6/16 scope global eth10
e8a0f5
+eth11: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
+eth12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team1112 state UP qlen 1000
e8a0f5
 bond12: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
     inet 1.1.1.1/16 scope global bond12
e8a0f5
 bond34: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
     inet 2.2.2.2/16 scope global bond34
e8a0f5
 bridge78: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
     inet 4.4.4.4/24 scope global bridge78
e8a0f5
+team1112: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 7.7.7.7/16 scope global team1112
e8a0f5
+team56: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 3.3.3.3/16 scope global team56
e8a0f5
diff --git a/tests/setup1/tcase5_results/ip_r.expected b/tests/setup1/tcase5_results/ip_r.expected
e8a0f5
index 87a8f9fe..50638c8a 100644
e8a0f5
--- a/tests/setup1/tcase5_results/ip_r.expected
e8a0f5
+++ b/tests/setup1/tcase5_results/ip_r.expected
e8a0f5
@@ -2,8 +2,10 @@
e8a0f5
 103.0.0.0/8 via 3.3.3.254 
e8a0f5
 104.0.0.0/8 via 4.4.4.254 
e8a0f5
 106.0.0.0/8 via 6.6.6.254 
e8a0f5
+107.0.0.0/8 via 7.7.7.254 
e8a0f5
 1.1.0.0/16 proto kernel scope link src 1.1.1.1 
e8a0f5
 2.2.0.0/16 proto kernel scope link src 2.2.2.2 
e8a0f5
 3.3.0.0/16 proto kernel scope link src 3.3.3.3 
e8a0f5
 4.4.4.0/24 proto kernel scope link src 4.4.4.4 
e8a0f5
 6.6.0.0/16 proto kernel scope link src 6.6.6.6 
e8a0f5
+7.7.0.0/16 proto kernel scope link src 7.7.7.7 
e8a0f5
diff --git a/tests/setup1/tcase6.sh b/tests/setup1/tcase6.sh
e8a0f5
index 0f11c0ae..698b88c3 100755
e8a0f5
--- a/tests/setup1/tcase6.sh
e8a0f5
+++ b/tests/setup1/tcase6.sh
e8a0f5
@@ -1,13 +1,13 @@
e8a0f5
 #!/bin/bash
e8a0f5
 
e8a0f5
 unset CONFIG_DIR
e8a0f5
-#CONFIG_DIR=/root
e8a0f5
 
e8a0f5
 export SIMPLIFY_BONDING=y
e8a0f5
 export SIMPLIFY_BRIDGE=y
e8a0f5
+export SIMPLIFY_TEAMING=y
e8a0f5
 
e8a0f5
-for eth in eth1 eth3 eth5 eth7 eth9; do ifdown $eth; done
e8a0f5
+for eth in eth1 eth3 eth5 eth7 eth9 eth11; do ifdown $eth; done
e8a0f5
 
e8a0f5
-. ./run.sh
e8a0f5
+. "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"/run.sh
e8a0f5
 
e8a0f5
-for eth in eth1 eth3 eth5 eth7 vlan1eth9; do ifup $eth; done
e8a0f5
+for eth in eth1 eth3 eth5 eth7 vlan1eth9 eth11; do ifup $eth; done
e8a0f5
diff --git a/tests/setup1/tcase6_results/ip_a.expected b/tests/setup1/tcase6_results/ip_a.expected
e8a0f5
index c04e1e12..4f086280 100644
e8a0f5
--- a/tests/setup1/tcase6_results/ip_a.expected
e8a0f5
+++ b/tests/setup1/tcase6_results/ip_a.expected
e8a0f5
@@ -1,15 +1,20 @@
e8a0f5
+bond12: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 1.1.1.1/16 scope global bond12
e8a0f5
 eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
-eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-    inet 1.1.1.1/16 scope global eth2
e8a0f5
+eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond12 state UP qlen 1000
e8a0f5
 eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
     inet 2.2.2.2/16 scope global eth4
e8a0f5
 eth5: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
-eth6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-    inet 3.3.3.3/16 scope global eth6
e8a0f5
+eth6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team56 state UP qlen 1000
e8a0f5
 eth7: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
     inet 4.4.4.4/24 scope global eth8
e8a0f5
 eth9: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
     inet 6.6.6.6/16 scope global eth10
e8a0f5
+eth11: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
+eth12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
+    inet 7.7.7.7/16 scope global eth12
e8a0f5
+team56: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 3.3.3.3/16 scope global team56
e8a0f5
diff --git a/tests/setup1/tcase6_results/ip_r.expected b/tests/setup1/tcase6_results/ip_r.expected
e8a0f5
index 87a8f9fe..50638c8a 100644
e8a0f5
--- a/tests/setup1/tcase6_results/ip_r.expected
e8a0f5
+++ b/tests/setup1/tcase6_results/ip_r.expected
e8a0f5
@@ -2,8 +2,10 @@
e8a0f5
 103.0.0.0/8 via 3.3.3.254 
e8a0f5
 104.0.0.0/8 via 4.4.4.254 
e8a0f5
 106.0.0.0/8 via 6.6.6.254 
e8a0f5
+107.0.0.0/8 via 7.7.7.254 
e8a0f5
 1.1.0.0/16 proto kernel scope link src 1.1.1.1 
e8a0f5
 2.2.0.0/16 proto kernel scope link src 2.2.2.2 
e8a0f5
 3.3.0.0/16 proto kernel scope link src 3.3.3.3 
e8a0f5
 4.4.4.0/24 proto kernel scope link src 4.4.4.4 
e8a0f5
 6.6.0.0/16 proto kernel scope link src 6.6.6.6 
e8a0f5
+7.7.0.0/16 proto kernel scope link src 7.7.7.7 
e8a0f5
diff --git a/tests/setup1/tcase7.sh b/tests/setup1/tcase7.sh
e8a0f5
index 57b3cdff..7dc07f63 100755
e8a0f5
--- a/tests/setup1/tcase7.sh
e8a0f5
+++ b/tests/setup1/tcase7.sh
e8a0f5
@@ -1,5 +1,5 @@
e8a0f5
 #!/bin/bash
e8a0f5
 
e8a0f5
-CONFIG_DIR=/root
e8a0f5
+CONFIG_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
e8a0f5
 
e8a0f5
-. ./run.sh
e8a0f5
+. "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"/run.sh
e8a0f5
diff --git a/tests/setup1/tcase7_results/ip_a.expected b/tests/setup1/tcase7_results/ip_a.expected
e8a0f5
index c6ace88f..dba7dab6 100644
e8a0f5
--- a/tests/setup1/tcase7_results/ip_a.expected
e8a0f5
+++ b/tests/setup1/tcase7_results/ip_a.expected
e8a0f5
@@ -2,14 +2,15 @@ eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master b
e8a0f5
 eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond12 state UP qlen 1000
e8a0f5
 eth3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond34 state UP qlen 1000
e8a0f5
 eth4: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond34 state UP qlen 1000
e8a0f5
-eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-    inet 3.3.3.3/16 scope global eth5
e8a0f5
-eth6: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
+eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team56 state UP qlen 1000
e8a0f5
+eth6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team56 state UP qlen 1000
e8a0f5
 eth7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bridge78 state UP qlen 1000
e8a0f5
 eth8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bridge78 state UP qlen 1000
e8a0f5
 eth9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
 eth10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
     inet 6.6.6.100/16 scope global eth10
e8a0f5
+eth11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team1112 state UP qlen 1000
e8a0f5
+eth12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team1112 state UP qlen 1000
e8a0f5
 bond12: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
     inet 1.1.1.100/16 scope global bond12
e8a0f5
 bond34: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
@@ -18,3 +19,7 @@ bridge78: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen
e8a0f5
     inet 4.4.4.100/24 scope global bridge78
e8a0f5
 eth9.1@eth9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
     inet 5.5.5.5/24 scope global eth9.1
e8a0f5
+team1112: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 7.7.7.100/16 scope global team1112
e8a0f5
+team56: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 3.3.3.3/16 scope global team56
e8a0f5
diff --git a/tests/setup1/tcase7_results/ip_r.expected b/tests/setup1/tcase7_results/ip_r.expected
e8a0f5
index 2481d7f3..a89163a6 100644
e8a0f5
--- a/tests/setup1/tcase7_results/ip_r.expected
e8a0f5
+++ b/tests/setup1/tcase7_results/ip_r.expected
e8a0f5
@@ -3,9 +3,11 @@
e8a0f5
 104.0.0.0/8 via 4.4.4.254 
e8a0f5
 105.0.0.0/8 via 5.5.5.254 
e8a0f5
 106.0.0.0/8 via 6.6.6.254 
e8a0f5
+107.0.0.0/8 via 7.7.7.254 
e8a0f5
 1.1.0.0/16 proto kernel scope link src 1.1.1.100 
e8a0f5
 2.2.0.0/16 proto kernel scope link src 2.2.2.100 
e8a0f5
 3.3.0.0/16 proto kernel scope link src 3.3.3.3 
e8a0f5
 4.4.4.0/24 proto kernel scope link src 4.4.4.100 
e8a0f5
 5.5.5.0/24 proto kernel scope link src 5.5.5.5 
e8a0f5
 6.6.0.0/16 proto kernel scope link src 6.6.6.100 
e8a0f5
+7.7.0.0/16 proto kernel scope link src 7.7.7.100 
e8a0f5
diff --git a/tests/setup1/tcase8.sh b/tests/setup1/tcase8.sh
e8a0f5
index c40c5e15..6982d005 100755
e8a0f5
--- a/tests/setup1/tcase8.sh
e8a0f5
+++ b/tests/setup1/tcase8.sh
e8a0f5
@@ -1,8 +1,9 @@
e8a0f5
 #!/bin/bash
e8a0f5
 
e8a0f5
-CONFIG_DIR=/root
e8a0f5
+CONFIG_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
e8a0f5
 
e8a0f5
 export SIMPLIFY_BONDING=y
e8a0f5
 export SIMPLIFY_BRIDGE=y
e8a0f5
+export SIMPLIFY_TEAMING=y
e8a0f5
 
e8a0f5
-. ./run.sh
e8a0f5
+. "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"/run.sh
e8a0f5
diff --git a/tests/setup1/tcase8_results/ip_a.expected b/tests/setup1/tcase8_results/ip_a.expected
e8a0f5
index 6801434d..fb0e2d1e 100644
e8a0f5
--- a/tests/setup1/tcase8_results/ip_a.expected
e8a0f5
+++ b/tests/setup1/tcase8_results/ip_a.expected
e8a0f5
@@ -1,17 +1,22 @@
e8a0f5
-eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-    inet 1.1.1.100/16 scope global eth1
e8a0f5
-eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
+bond12: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 1.1.1.100/16 scope global bond12
e8a0f5
+eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond12 state UP qlen 1000
e8a0f5
+eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond12 state UP qlen 1000
e8a0f5
 eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
     inet 2.2.2.100/16 scope global eth3
e8a0f5
 eth4: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
-eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-    inet 3.3.3.3/16 scope global eth5
e8a0f5
-eth6: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
+eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team56 state UP qlen 1000
e8a0f5
+eth6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team56 state UP qlen 1000
e8a0f5
 eth7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
     inet 4.4.4.100/24 scope global eth7
e8a0f5
 eth8: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
 eth10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
     inet 6.6.6.100/16 scope global eth10
e8a0f5
+eth11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
+    inet 7.7.7.100/16 scope global eth11
e8a0f5
+eth12: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth9.1@eth9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
     inet 5.5.5.5/24 scope global eth9.1
e8a0f5
+team56: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 3.3.3.3/16 scope global team56
e8a0f5
diff --git a/tests/setup1/tcase8_results/ip_r.expected b/tests/setup1/tcase8_results/ip_r.expected
e8a0f5
index 2481d7f3..a89163a6 100644
e8a0f5
--- a/tests/setup1/tcase8_results/ip_r.expected
e8a0f5
+++ b/tests/setup1/tcase8_results/ip_r.expected
e8a0f5
@@ -3,9 +3,11 @@
e8a0f5
 104.0.0.0/8 via 4.4.4.254 
e8a0f5
 105.0.0.0/8 via 5.5.5.254 
e8a0f5
 106.0.0.0/8 via 6.6.6.254 
e8a0f5
+107.0.0.0/8 via 7.7.7.254 
e8a0f5
 1.1.0.0/16 proto kernel scope link src 1.1.1.100 
e8a0f5
 2.2.0.0/16 proto kernel scope link src 2.2.2.100 
e8a0f5
 3.3.0.0/16 proto kernel scope link src 3.3.3.3 
e8a0f5
 4.4.4.0/24 proto kernel scope link src 4.4.4.100 
e8a0f5
 5.5.5.0/24 proto kernel scope link src 5.5.5.5 
e8a0f5
 6.6.0.0/16 proto kernel scope link src 6.6.6.100 
e8a0f5
+7.7.0.0/16 proto kernel scope link src 7.7.7.100 
e8a0f5
diff --git a/tests/setup1/verify.sh b/tests/setup1/verify.sh
e8a0f5
index a9fd9c6c..146d017b 100755
e8a0f5
--- a/tests/setup1/verify.sh
e8a0f5
+++ b/tests/setup1/verify.sh
e8a0f5
@@ -32,7 +32,7 @@ DEVICES="$( ls /sys/class/net/ | egrep -wv "(bonding_masters|eth0|lo)" )"
e8a0f5
 
e8a0f5
 for dev in $DEVICES; do
e8a0f5
 	ip addr show dev $dev
e8a0f5
-done 2>/dev/null | egrep -w "(mtu|inet)" | sed "s/^[0-9]*: //" > $tmpfile_ipa
e8a0f5
+done 2>/dev/null | egrep -w "(mtu|inet)" | sed -e "s/^[0-9]*: //" -e "s/ group \S* / /" > $tmpfile_ipa
e8a0f5
 
e8a0f5
 for dev in $DEVICES; do
e8a0f5
 	ip r show dev $dev
e8a0f5
diff --git a/tests/setup2/README b/tests/setup2/README
e8a0f5
index 40731f83..34b123fb 100644
e8a0f5
--- a/tests/setup2/README
e8a0f5
+++ b/tests/setup2/README
e8a0f5
@@ -3,7 +3,7 @@
e8a0f5
                    +----------------------------------+
e8a0f5
 
e8a0f5
 
e8a0f5
-You need a VM with 10 network interfaces (eth0 being the main interface).
e8a0f5
+You need a VM with 11 network interfaces (eth0 being the main interface).
e8a0f5
 All interfaces except eth0 can be non-reachable.
e8a0f5
 
e8a0f5
 kvm.xml is an example template of such VM.
e8a0f5
@@ -31,18 +31,18 @@ default via 192.168.122.1 dev eth0
e8a0f5
 Running the unit tests:
e8a0f5
 ----------------------
e8a0f5
 
e8a0f5
-After copying the files and making sure the script has been adapted,
e8a0f5
+After copying the network configuration files and rebooting the system,
e8a0f5
 
e8a0f5
 from the VM, run the following command:
e8a0f5
 
e8a0f5
-# for i in $(seq 1 8); do ./tcase$i.sh; done
e8a0f5
+# for i in $(seq 1 8); do ./tcase${i}.sh; done
e8a0f5
 
e8a0f5
 This will record the generated network+route files.
e8a0f5
 
e8a0f5
 Then to verify result, run the following command (this will take down the
e8a0f5
 network, except eth0):
e8a0f5
 
e8a0f5
-# for i in $(seq 1 8); do ./verify.sh tcase$i_results; done
e8a0f5
+# for i in $(seq 1 8); do ./verify.sh tcase${i}_results; done
e8a0f5
 
e8a0f5
 
e8a0f5
 -------------------------------------------------------------------------------
e8a0f5
@@ -64,15 +64,15 @@ team89 -> eth8
e8a0f5
 Test Case #2: simplification
e8a0f5
 ------------
e8a0f5
 
e8a0f5
-SIMPLIFY_BONDING=y SIMPLIFY_BRIDGE=y
e8a0f5
+SIMPLIFY_BONDING=y SIMPLIFY_BRIDGE=y SIMPLIFY_TEAMING=y
e8a0f5
 
e8a0f5
 Expected results:
e8a0f5
 
e8a0f5
-bond12 -> eth1
e8a0f5
+bond12 -> bond12 (not simplified, because mode=4)
e8a0f5
 bond34 -> eth3
e8a0f5
 bridge2 -> eth3.2
e8a0f5
 team567 -> eth5.5
e8a0f5
-team89 -> eth8
e8a0f5
+team89 -> team89 (not simplified, because runner=lacp)
e8a0f5
 bridge3 -> eth10.3
e8a0f5
 
e8a0f5
 
e8a0f5
@@ -100,7 +100,6 @@ for eth in eth2 eth4 eth6 eth8 eth10; do ifdown $eth; done
e8a0f5
 Expected results:
e8a0f5
 
e8a0f5
 eth2, eth4, eth6, eth8, eth10 not in file
e8a0f5
-bond12 -> eth1
e8a0f5
 bond34 -> eth3
e8a0f5
 bridge2 -> eth3.2
e8a0f5
 team567 -> eth5.5
e8a0f5
@@ -136,7 +135,6 @@ for eth in eth1 eth3 eth5 eth7 eth9; do ifdown $eth; done
e8a0f5
 Expected results:
e8a0f5
 
e8a0f5
 eth2, eth4, eth6, eth8, eth10 not in file
e8a0f5
-bond12 -> eth2
e8a0f5
 bond34 -> eth4
e8a0f5
 team567 -> eth6
e8a0f5
 team89 -> eth8
e8a0f5
@@ -168,7 +166,7 @@ bridge3 -> 4.4.4.100/24
e8a0f5
 Test Case #8: IP address mapping & simplification
e8a0f5
 ------------
e8a0f5
 
e8a0f5
-SIMPLIFY_BONDING=y SIMPLIFY_BRIDGE=y
e8a0f5
+SIMPLIFY_BONDING=y SIMPLIFY_BRIDGE=y SIMPLIFY_TEAMING=y
e8a0f5
 
e8a0f5
 # cat mappings/ip_addresses 
e8a0f5
 bond12.1	1.1.1.100/16
e8a0f5
diff --git a/tests/setup2/tcase1.sh b/tests/setup2/tcase1.sh
e8a0f5
index 597f3f5c..7b5032c7 100755
e8a0f5
--- a/tests/setup2/tcase1.sh
e8a0f5
+++ b/tests/setup2/tcase1.sh
e8a0f5
@@ -1,6 +1,5 @@
e8a0f5
 #!/bin/bash
e8a0f5
 
e8a0f5
 unset CONFIG_DIR
e8a0f5
-#CONFIG_DIR=/root
e8a0f5
 
e8a0f5
-. ./run.sh
e8a0f5
+. "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"/run.sh
e8a0f5
diff --git a/tests/setup2/tcase1_results/ip_a.expected b/tests/setup2/tcase1_results/ip_a.expected
e8a0f5
index 8e36b66c..23a2d8df 100644
e8a0f5
--- a/tests/setup2/tcase1_results/ip_a.expected
e8a0f5
+++ b/tests/setup2/tcase1_results/ip_a.expected
e8a0f5
@@ -14,10 +14,12 @@ eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master b
e8a0f5
 eth3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond34 state UP qlen 1000
e8a0f5
 eth4: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond34 state UP qlen 1000
e8a0f5
 eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-eth5.5@eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
-    inet 3.3.3.3/16 scope global eth5.5
e8a0f5
-eth6: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
-eth7: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
-eth8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-eth8.3@eth8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master bridge3 state UP qlen 1000
e8a0f5
-eth9: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
+eth5.5@eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master team567 state UP qlen 1000
e8a0f5
+eth6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team567 state UP qlen 1000
e8a0f5
+eth7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team567 state UP qlen 1000
e8a0f5
+eth8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team89 state UP qlen 1000
e8a0f5
+eth9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team89 state UP qlen 1000
e8a0f5
+team567: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 3.3.3.3/16 scope global team567
e8a0f5
+team89: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+team89.3@team89: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master bridge3 state UP qlen 1000
e8a0f5
diff --git a/tests/setup2/tcase2.sh b/tests/setup2/tcase2.sh
e8a0f5
index faa39396..65d1aa34 100755
e8a0f5
--- a/tests/setup2/tcase2.sh
e8a0f5
+++ b/tests/setup2/tcase2.sh
e8a0f5
@@ -1,9 +1,9 @@
e8a0f5
 #!/bin/bash
e8a0f5
 
e8a0f5
 unset CONFIG_DIR
e8a0f5
-#CONFIG_DIR=/root
e8a0f5
 
e8a0f5
 export SIMPLIFY_BONDING=y
e8a0f5
 export SIMPLIFY_BRIDGE=y
e8a0f5
+export SIMPLIFY_TEAMING=y
e8a0f5
 
e8a0f5
-. ./run.sh
e8a0f5
+. "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"/run.sh
e8a0f5
diff --git a/tests/setup2/tcase2_results/ip_a.expected b/tests/setup2/tcase2_results/ip_a.expected
e8a0f5
index b2043ea2..097c6ed8 100644
e8a0f5
--- a/tests/setup2/tcase2_results/ip_a.expected
e8a0f5
+++ b/tests/setup2/tcase2_results/ip_a.expected
e8a0f5
@@ -1,10 +1,11 @@
e8a0f5
-eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
+bond12.1@bond12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 1.1.1.1/16 scope global bond12.1
e8a0f5
+bond12: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond12 state UP qlen 1000
e8a0f5
 eth10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
 eth10.3@eth10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
     inet 4.4.4.4/24 scope global eth10.3
e8a0f5
-eth1.1@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
-    inet 1.1.1.1/16 scope global eth1.1
e8a0f5
-eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
+eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond12 state UP qlen 1000
e8a0f5
 eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
 eth3.2@eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
     inet 2.2.2.2/24 scope global eth3.2
e8a0f5
diff --git a/tests/setup2/tcase3.sh b/tests/setup2/tcase3.sh
e8a0f5
index d23a1198..3b792b42 100755
e8a0f5
--- a/tests/setup2/tcase3.sh
e8a0f5
+++ b/tests/setup2/tcase3.sh
e8a0f5
@@ -1,10 +1,9 @@
e8a0f5
 #!/bin/bash
e8a0f5
 
e8a0f5
 unset CONFIG_DIR
e8a0f5
-#CONFIG_DIR=/root
e8a0f5
 
e8a0f5
 for eth in eth2 eth4 eth6 eth8 eth10; do ifdown $eth; done
e8a0f5
 
e8a0f5
-. ./run.sh
e8a0f5
+. "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"/run.sh
e8a0f5
 
e8a0f5
 for eth in eth2 eth4 eth6 eth8 vlan3eth10; do ifup $eth; done
e8a0f5
diff --git a/tests/setup2/tcase3_results/ip_a.expected b/tests/setup2/tcase3_results/ip_a.expected
e8a0f5
index 0b0c00ba..6cbcf572 100644
e8a0f5
--- a/tests/setup2/tcase3_results/ip_a.expected
e8a0f5
+++ b/tests/setup2/tcase3_results/ip_a.expected
e8a0f5
@@ -13,10 +13,12 @@ eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond34 state UP qlen 1000
e8a0f5
 eth4: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-eth5.5@eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
-    inet 3.3.3.3/16 scope global eth5.5
e8a0f5
+eth5.5@eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master team567 state UP qlen 1000
e8a0f5
 eth6: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
-eth7: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
+eth7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team567 state UP qlen 1000
e8a0f5
 eth8: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
-eth9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-eth9.3@eth9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master bridge3 state UP qlen 1000
e8a0f5
+eth9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team89 state UP qlen 1000
e8a0f5
+team567: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 3.3.3.3/16 scope global team567
e8a0f5
+team89.3@team89: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master bridge3 state UP qlen 1000
e8a0f5
+team89: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
diff --git a/tests/setup2/tcase4.sh b/tests/setup2/tcase4.sh
e8a0f5
index f66236ff..5d8cfdd5 100755
e8a0f5
--- a/tests/setup2/tcase4.sh
e8a0f5
+++ b/tests/setup2/tcase4.sh
e8a0f5
@@ -1,13 +1,13 @@
e8a0f5
 #!/bin/bash
e8a0f5
 
e8a0f5
 unset CONFIG_DIR
e8a0f5
-#CONFIG_DIR=/root
e8a0f5
 
e8a0f5
 export SIMPLIFY_BONDING=y
e8a0f5
 export SIMPLIFY_BRIDGE=y
e8a0f5
+export SIMPLIFY_TEAMING=y
e8a0f5
 
e8a0f5
 for eth in eth2 eth4 eth6 eth8 eth10; do ifdown $eth; done
e8a0f5
 
e8a0f5
-. ./run.sh
e8a0f5
+. "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"/run.sh
e8a0f5
 
e8a0f5
 for eth in eth2 eth4 eth6 eth8 vlan3eth10; do ifup $eth; done
e8a0f5
diff --git a/tests/setup2/tcase4_results/ip_a.expected b/tests/setup2/tcase4_results/ip_a.expected
e8a0f5
index 8171a018..6afa74e5 100644
e8a0f5
--- a/tests/setup2/tcase4_results/ip_a.expected
e8a0f5
+++ b/tests/setup2/tcase4_results/ip_a.expected
e8a0f5
@@ -1,7 +1,8 @@
e8a0f5
-eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
+bond12.1@bond12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 1.1.1.1/16 scope global bond12.1
e8a0f5
+bond12: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond12 state UP qlen 1000
e8a0f5
 eth10: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
-eth1.1@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
-    inet 1.1.1.1/16 scope global eth1.1
e8a0f5
 eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
 eth3.2@eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
@@ -13,6 +14,7 @@ eth5.5@eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP q
e8a0f5
 eth6: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth7: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth8: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
-eth9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-eth9.3@eth9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
-    inet 4.4.4.4/24 scope global eth9.3
e8a0f5
+eth9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team89 state UP qlen 1000
e8a0f5
+team89: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+team89.3@team89: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 4.4.4.4/24 scope global team89.3
e8a0f5
diff --git a/tests/setup2/tcase5.sh b/tests/setup2/tcase5.sh
e8a0f5
index 1085a80d..e332d9af 100755
e8a0f5
--- a/tests/setup2/tcase5.sh
e8a0f5
+++ b/tests/setup2/tcase5.sh
e8a0f5
@@ -1,10 +1,9 @@
e8a0f5
 #!/bin/bash
e8a0f5
 
e8a0f5
 unset CONFIG_DIR
e8a0f5
-#CONFIG_DIR=/root
e8a0f5
 
e8a0f5
 for eth in eth1 eth3 eth5 eth7 eth9; do ifdown $eth; done
e8a0f5
 
e8a0f5
-. ./run.sh
e8a0f5
+. "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"/run.sh
e8a0f5
 
e8a0f5
 for eth in eth1 eth3 vlan5eth5 eth7 eth9; do ifup $eth; done
e8a0f5
diff --git a/tests/setup2/tcase5_results/ip_a.expected b/tests/setup2/tcase5_results/ip_a.expected
e8a0f5
index 4841575c..2d08e19c 100644
e8a0f5
--- a/tests/setup2/tcase5_results/ip_a.expected
e8a0f5
+++ b/tests/setup2/tcase5_results/ip_a.expected
e8a0f5
@@ -14,9 +14,11 @@ eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master b
e8a0f5
 eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth4: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond34 state UP qlen 1000
e8a0f5
 eth5: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
-eth6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-    inet 3.3.3.3/16 scope global eth6
e8a0f5
+eth6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team567 state UP qlen 1000
e8a0f5
 eth7: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
-eth8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-eth8.3@eth8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master bridge3 state UP qlen 1000
e8a0f5
+eth8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team89 state UP qlen 1000
e8a0f5
 eth9: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
+team567: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 3.3.3.3/16 scope global team567
e8a0f5
+team89: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+team89.3@team89: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master bridge3 state UP qlen 1000
e8a0f5
diff --git a/tests/setup2/tcase6.sh b/tests/setup2/tcase6.sh
e8a0f5
index 998672bf..b9a5153f 100755
e8a0f5
--- a/tests/setup2/tcase6.sh
e8a0f5
+++ b/tests/setup2/tcase6.sh
e8a0f5
@@ -1,13 +1,13 @@
e8a0f5
 #!/bin/bash
e8a0f5
 
e8a0f5
 unset CONFIG_DIR
e8a0f5
-#CONFIG_DIR=/root
e8a0f5
 
e8a0f5
 export SIMPLIFY_BONDING=y
e8a0f5
 export SIMPLIFY_BRIDGE=y
e8a0f5
+export SIMPLIFY_TEAMING=y
e8a0f5
 
e8a0f5
 for eth in eth1 eth3 eth5 eth7 eth9; do ifdown $eth; done
e8a0f5
 
e8a0f5
-. ./run.sh
e8a0f5
+. "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"/run.sh
e8a0f5
 
e8a0f5
 for eth in eth1 eth3 vlan5eth5 eth7 eth9; do ifup $eth; done
e8a0f5
diff --git a/tests/setup2/tcase6_results/ip_a.expected b/tests/setup2/tcase6_results/ip_a.expected
e8a0f5
index 879aff9b..4239377a 100644
e8a0f5
--- a/tests/setup2/tcase6_results/ip_a.expected
e8a0f5
+++ b/tests/setup2/tcase6_results/ip_a.expected
e8a0f5
@@ -1,10 +1,11 @@
e8a0f5
+bond12.1@bond12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 1.1.1.1/16 scope global bond12.1
e8a0f5
+bond12: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
 eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
 eth10.3@eth10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
     inet 4.4.4.4/24 scope global eth10.3
e8a0f5
-eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-eth2.1@eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
-    inet 1.1.1.1/16 scope global eth2.1
e8a0f5
+eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond12 state UP qlen 1000
e8a0f5
 eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
 eth4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
 eth4.2@eth4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
diff --git a/tests/setup2/tcase7.sh b/tests/setup2/tcase7.sh
e8a0f5
index 57b3cdff..7dc07f63 100755
e8a0f5
--- a/tests/setup2/tcase7.sh
e8a0f5
+++ b/tests/setup2/tcase7.sh
e8a0f5
@@ -1,5 +1,5 @@
e8a0f5
 #!/bin/bash
e8a0f5
 
e8a0f5
-CONFIG_DIR=/root
e8a0f5
+CONFIG_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
e8a0f5
 
e8a0f5
-. ./run.sh
e8a0f5
+. "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"/run.sh
e8a0f5
diff --git a/tests/setup2/tcase7_results/ip_a.expected b/tests/setup2/tcase7_results/ip_a.expected
e8a0f5
index a1825c41..4136fb4b 100644
e8a0f5
--- a/tests/setup2/tcase7_results/ip_a.expected
e8a0f5
+++ b/tests/setup2/tcase7_results/ip_a.expected
e8a0f5
@@ -14,10 +14,12 @@ eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master b
e8a0f5
 eth3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond34 state UP qlen 1000
e8a0f5
 eth4: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond34 state UP qlen 1000
e8a0f5
 eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-eth5.5@eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
-    inet 3.3.3.100/16 scope global eth5.5
e8a0f5
-eth6: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
-eth7: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
-eth8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
-eth8.3@eth8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master bridge3 state UP qlen 1000
e8a0f5
-eth9: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
+eth5.5@eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master team567 state UP qlen 1000
e8a0f5
+eth6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team567 state UP qlen 1000
e8a0f5
+eth7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team567 state UP qlen 1000
e8a0f5
+eth8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team89 state UP qlen 1000
e8a0f5
+eth9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team89 state UP qlen 1000
e8a0f5
+team567: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 3.3.3.100/16 scope global team567
e8a0f5
+team89: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+team89.3@team89: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master bridge3 state UP qlen 1000
e8a0f5
diff --git a/tests/setup2/tcase8.sh b/tests/setup2/tcase8.sh
e8a0f5
index c40c5e15..6982d005 100755
e8a0f5
--- a/tests/setup2/tcase8.sh
e8a0f5
+++ b/tests/setup2/tcase8.sh
e8a0f5
@@ -1,8 +1,9 @@
e8a0f5
 #!/bin/bash
e8a0f5
 
e8a0f5
-CONFIG_DIR=/root
e8a0f5
+CONFIG_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
e8a0f5
 
e8a0f5
 export SIMPLIFY_BONDING=y
e8a0f5
 export SIMPLIFY_BRIDGE=y
e8a0f5
+export SIMPLIFY_TEAMING=y
e8a0f5
 
e8a0f5
-. ./run.sh
e8a0f5
+. "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"/run.sh
e8a0f5
diff --git a/tests/setup2/tcase8_results/ip_a.expected b/tests/setup2/tcase8_results/ip_a.expected
e8a0f5
index 28140aa1..19e11934 100644
e8a0f5
--- a/tests/setup2/tcase8_results/ip_a.expected
e8a0f5
+++ b/tests/setup2/tcase8_results/ip_a.expected
e8a0f5
@@ -1,10 +1,11 @@
e8a0f5
-eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
+bond12.1@bond12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+    inet 1.1.1.100/16 scope global bond12.1
e8a0f5
+bond12: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
+eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond12 state UP qlen 1000
e8a0f5
 eth10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
 eth10.3@eth10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
     inet 4.4.4.100/24 scope global eth10.3
e8a0f5
-eth1.1@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
-    inet 1.1.1.100/16 scope global eth1.1
e8a0f5
-eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
e8a0f5
+eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond12 state UP qlen 1000
e8a0f5
 eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
e8a0f5
 eth3.2@eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
e8a0f5
     inet 2.2.2.2/24 scope global eth3.2
e8a0f5
diff --git a/usr/share/rear/conf/default.conf b/usr/share/rear/conf/default.conf
e8a0f5
index 796f228a..ef118998 100644
e8a0f5
--- a/usr/share/rear/conf/default.conf
e8a0f5
+++ b/usr/share/rear/conf/default.conf
e8a0f5
@@ -2237,15 +2237,16 @@ USE_CFG2HTML=
e8a0f5
 # If SKIP_CFG2HTML is enabled, skip this script (backward compatibility) - the var will become obsolete in rear-1.18
e8a0f5
 # SKIP_CFG2HTML=
e8a0f5
 
e8a0f5
-# Simplify bonding setups by configuring always the first active device of a bond
e8a0f5
-SIMPLIFY_BONDING=
e8a0f5
+# Simplify bonding setups by configuring always the first active device of a
e8a0f5
+# bond, except when mode is 4 (IEEE 802.3ad policy)
e8a0f5
+SIMPLIFY_BONDING=no
e8a0f5
 
e8a0f5
 # Simplify bridge setups by configuring always the first active device of a bridge
e8a0f5
-SIMPLIFY_BRIDGE=
e8a0f5
+SIMPLIFY_BRIDGE=no
e8a0f5
 
e8a0f5
-# Simplify team setups by configuring always the first active device of a team
e8a0f5
-# Current implementation only supports this mode
e8a0f5
-#SIMPLIFY_TEAM=
e8a0f5
+# Simplify team setups by configuring always the first active device of a team,
e8a0f5
+# except when runner is 'lacp' (IEEE 802.3ad policy)
e8a0f5
+SIMPLIFY_TEAMING=no
e8a0f5
 
e8a0f5
 # Serial Console support is enabled if serial devices are found on the system and
e8a0f5
 # then matching kernel command line parameters like 'console=ttyS0,9600 console=ttyS1,9600'
e8a0f5
diff --git a/usr/share/rear/rescue/GNU/Linux/310_network_devices.sh b/usr/share/rear/rescue/GNU/Linux/310_network_devices.sh
e8a0f5
index 8d24d2d5..4698618c 100644
e8a0f5
--- a/usr/share/rear/rescue/GNU/Linux/310_network_devices.sh
e8a0f5
+++ b/usr/share/rear/rescue/GNU/Linux/310_network_devices.sh
e8a0f5
@@ -146,7 +146,7 @@ ip link help 2>&1 | grep -qw bridge && ip_link_supports_bridge='true'
e8a0f5
 #
e8a0f5
 #   - if it is a bond
e8a0f5
 #
e8a0f5
-#     - if SIMPLIFY_BONDING is set
e8a0f5
+#     - if SIMPLIFY_BONDING is set and mode is not 4 (IEEE 802.3ad policy)
e8a0f5
 #       - configure the first UP underlying interface using ALGO
e8a0f5
 #       - keep record of interface mapping into new underlying interface
e8a0f5
 #     - otherwise
e8a0f5
@@ -157,10 +157,14 @@ ip link help 2>&1 | grep -qw bridge && ip_link_supports_bridge='true'
e8a0f5
 #
e8a0f5
 #     - configure the vlan based on parent's interface
e8a0f5
 #
e8a0f5
-#   - if it is a team, only simplification is currently implemented
e8a0f5
+#   - if it is a team
e8a0f5
 #
e8a0f5
-#     - configure the first UP underlying interface using ALGO
e8a0f5
-#     - keep record of interface mapping into new underlying interface
e8a0f5
+#     - if SIMPLIFY_TEAMING is set and runner is not 'lacp' (IEEE 802.3ad policy)
e8a0f5
+#       - configure the first UP underlying interface using ALGO
e8a0f5
+#       - keep record of interface mapping into new underlying interface
e8a0f5
+#     - otherwise
e8a0f5
+#       - configure the team
e8a0f5
+#       - configure all UP underlying interfaces using ALGO
e8a0f5
 #
e8a0f5
 # - in any case, a given interface is only configured once; when an interface
e8a0f5
 #   has already been configured, configuration code should be ignored by
e8a0f5
@@ -470,7 +474,7 @@ function handle_bridge () {
e8a0f5
     local tmpfile=$( mktemp )
e8a0f5
     local itf
e8a0f5
 
e8a0f5
-    if test "$SIMPLIFY_BRIDGE" ; then
e8a0f5
+    if is_true "$SIMPLIFY_BRIDGE" ; then
e8a0f5
         for itf in $( get_lower_interfaces $network_interface ) ; do
e8a0f5
             DebugPrint "$network_interface has lower interface $itf"
e8a0f5
             is_interface_up $itf || continue
e8a0f5
@@ -552,6 +556,7 @@ function handle_bridge () {
e8a0f5
 }
e8a0f5
 
e8a0f5
 already_set_up_teams=""
e8a0f5
+team_initialized=
e8a0f5
 
e8a0f5
 function handle_team () {
e8a0f5
     local network_interface=$1
e8a0f5
@@ -569,13 +574,58 @@ function handle_team () {
e8a0f5
     fi
e8a0f5
     already_set_up_teams+=" $network_interface"
e8a0f5
 
e8a0f5
-    # FIXME? Team code below simplifies the configuration, returning first port only
e8a0f5
-    # There should a SIMPLIFY_TEAM variable for that
e8a0f5
-
e8a0f5
     local rc
e8a0f5
     local nitfs=0
e8a0f5
     local tmpfile=$( mktemp )
e8a0f5
     local itf
e8a0f5
+    local teaming_runner="$( teamdctl "$network_interface" state item get setup.runner_name )"
e8a0f5
+
e8a0f5
+    if is_true "$SIMPLIFY_TEAMING" && [ "$teaming_runner" != "lacp" ] ; then
e8a0f5
+
e8a0f5
+        for itf in $( get_lower_interfaces $network_interface ) ; do
e8a0f5
+            DebugPrint "$network_interface has lower interface $itf"
e8a0f5
+            is_interface_up $itf || continue
e8a0f5
+            is_linked_to_physical $itf || continue
e8a0f5
+            handle_interface $itf >$tmpfile
e8a0f5
+            rc=$?
e8a0f5
+            [ $rc -eq $rc_error ] && continue
e8a0f5
+            let nitfs++
e8a0f5
+            echo "# Original interface was $network_interface, now is $itf"
e8a0f5
+            [ $rc -eq $rc_success ] && cat $tmpfile
e8a0f5
+            # itf may have been mapped into some other interface
e8a0f5
+            itf=$( get_mapped_network_interface $itf )
e8a0f5
+            # We found an interface, so stop here after mapping team to lower interface
e8a0f5
+            map_network_interface $network_interface $itf
e8a0f5
+            break
e8a0f5
+        done
e8a0f5
+        rm $tmpfile
e8a0f5
+
e8a0f5
+        # If we didn't find any lower interface, we are in trouble ...
e8a0f5
+        if [ $nitfs -eq 0 ] ; then
e8a0f5
+            LogPrintError "Couldn't find any suitable lower interface for '$network_interface'."
e8a0f5
+            return $rc_error
e8a0f5
+        fi
e8a0f5
+
e8a0f5
+        # setup_device_params has already been called by interface team was mapped onto
e8a0f5
+
e8a0f5
+        return $rc_success
e8a0f5
+    elif is_true "$SIMPLIFY_TEAMING" ; then
e8a0f5
+        # Teaming runner 'lacp' (IEEE 802.3ad policy) cannot be simplified
e8a0f5
+        # because there is some special setup on the switch itself, requiring
e8a0f5
+        # to keep the system's network interface's configuration intact.
e8a0f5
+        LogPrint "Note: not simplifying network configuration for '$network_interface' because teaming runner is 'lacp' (IEEE 802.3ad policy)."
e8a0f5
+    fi
e8a0f5
+
e8a0f5
+    #
e8a0f5
+    # Non-simplified teaming mode
e8a0f5
+    #
e8a0f5
+
e8a0f5
+    if [ -z "$team_initialized" ] ; then
e8a0f5
+        PROGS=( "${PROGS[@]}" 'teamd' 'teamdctl' )
e8a0f5
+        team_initialized="y"
e8a0f5
+    fi
e8a0f5
+
e8a0f5
+    local teamconfig="$( teamdctl -o "$network_interface" config dump actual )"
e8a0f5
 
e8a0f5
     for itf in $( get_lower_interfaces $network_interface ) ; do
e8a0f5
         DebugPrint "$network_interface has lower interface $itf"
e8a0f5
@@ -585,13 +635,15 @@ function handle_team () {
e8a0f5
         rc=$?
e8a0f5
         [ $rc -eq $rc_error ] && continue
e8a0f5
         let nitfs++
e8a0f5
-        echo "# Original interface was $network_interface, now is $itf"
e8a0f5
         [ $rc -eq $rc_success ] && cat $tmpfile
e8a0f5
         # itf may have been mapped into some other interface
e8a0f5
-        itf=$( get_mapped_network_interface $itf )
e8a0f5
-        # We found an interface, so stop here after mapping team to lower interface
e8a0f5
-        map_network_interface $network_interface $itf
e8a0f5
-        break
e8a0f5
+        local newitf=$( get_mapped_network_interface $itf )
e8a0f5
+        if [ "$itf" != "$newitf" ] ; then
e8a0f5
+            # Fix the teaming configuration
e8a0f5
+            teamconfig="$( echo "$teamconfig" | sed "s/\"$itf\"/\"$newitf\"/g" )"
e8a0f5
+        fi
e8a0f5
+        # Make sure lower device is down before configuring the team
e8a0f5
+        echo "ip link set dev $itf down"
e8a0f5
     done
e8a0f5
     rm $tmpfile
e8a0f5
 
e8a0f5
@@ -601,12 +653,15 @@ function handle_team () {
e8a0f5
         return $rc_error
e8a0f5
     fi
e8a0f5
 
e8a0f5
-    # setup_device_params has already been called by interface team was mapped onto
e8a0f5
+    echo "teamd -d -c '$teamconfig'"
e8a0f5
+
e8a0f5
+    setup_device_params $network_interface
e8a0f5
 
e8a0f5
     return $rc_success
e8a0f5
 }
e8a0f5
 
e8a0f5
 already_set_up_bonds=""
e8a0f5
+bond_initialized=
e8a0f5
 
e8a0f5
 function handle_bond () {
e8a0f5
     local network_interface=$1
e8a0f5
@@ -618,22 +673,19 @@ function handle_bond () {
e8a0f5
 
e8a0f5
     DebugPrint "$network_interface is a bond"
e8a0f5
 
e8a0f5
-    if [ -z "$already_set_up_bonds" ] ; then
e8a0f5
-        if ! test "$SIMPLIFY_BONDING" ; then
e8a0f5
-            echo "modprobe bonding"
e8a0f5
-            MODULES=( "${MODULES[@]}" 'bonding' )
e8a0f5
-        fi
e8a0f5
-    elif [[ " $already_set_up_bonds " == *\ $network_interface\ * ]] ; then
e8a0f5
+    if [[ " $already_set_up_bonds " == *\ $network_interface\ * ]] ; then
e8a0f5
         DebugPrint "$network_interface already handled..."
e8a0f5
         return $rc_ignore
e8a0f5
     fi
e8a0f5
     already_set_up_bonds+=" $network_interface"
e8a0f5
 
e8a0f5
+    local rc
e8a0f5
     local nitfs=0
e8a0f5
     local tmpfile=$( mktemp )
e8a0f5
     local itf
e8a0f5
+    local bonding_mode=$( awk '{ print $2 }' $sysfspath/bonding/mode )
e8a0f5
 
e8a0f5
-    if test "$SIMPLIFY_BONDING" ; then
e8a0f5
+    if is_true "$SIMPLIFY_BONDING" && [ $bonding_mode -ne 4 ] ; then
e8a0f5
         for itf in $( get_lower_interfaces $network_interface ) ; do
e8a0f5
             DebugPrint "$network_interface has lower interface $itf"
e8a0f5
             is_interface_up $itf || continue
e8a0f5
@@ -663,13 +715,23 @@ function handle_bond () {
e8a0f5
         # setup_device_params has already been called by interface bond was mapped onto
e8a0f5
 
e8a0f5
         return $rc_success
e8a0f5
+    elif is_true "$SIMPLIFY_BONDING" ; then
e8a0f5
+        # Bond mode '4' (IEEE 802.3ad policy) cannot be simplified because
e8a0f5
+        # there is some special setup on the switch itself, requiring to keep
e8a0f5
+        # the system's network interface's configuration intact.
e8a0f5
+        LogPrint "Note: not simplifying network configuration for '$network_interface' because bonding mode is '4' (IEEE 802.3ad policy)."
e8a0f5
     fi
e8a0f5
 
e8a0f5
     #
e8a0f5
     # Non-simplified bonding mode
e8a0f5
     #
e8a0f5
 
e8a0f5
-    local bonding_mode=$( awk '{ print $2 }' $sysfspath/bonding/mode )
e8a0f5
+    if [ -z "$bond_initialized" ] ; then
e8a0f5
+        echo "modprobe bonding"
e8a0f5
+        MODULES=( "${MODULES[@]}" 'bonding' )
e8a0f5
+        bond_initialized="y"
e8a0f5
+    fi
e8a0f5
+
e8a0f5
     local miimon=$( cat $sysfspath/bonding/miimon )
e8a0f5
     local use_carrier=$( cat $sysfspath/bonding/use_carrier )
e8a0f5
 
e8a0f5
@@ -689,7 +751,8 @@ EOT
e8a0f5
         is_interface_up $itf || continue
e8a0f5
         is_linked_to_physical $itf || continue
e8a0f5
         handle_interface $itf >$tmpfile
e8a0f5
-        [ $? -eq $rc_error ] && continue
e8a0f5
+        rc=$?
e8a0f5
+        [ $rc -eq $rc_error ] && continue
e8a0f5
         let nitfs++
e8a0f5
         [ $rc -eq $rc_success ] && cat $tmpfile
e8a0f5
         # itf may have been mapped into some other interface
e8a0f5
@@ -884,3 +947,5 @@ unset -f handle_team
e8a0f5
 unset -f handle_bond
e8a0f5
 unset -f handle_vlan
e8a0f5
 unset -f handle_physdev
e8a0f5
+
e8a0f5
+# vim: set et ts=4 sw=4: