Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # SPDX-License-Identifier: GPL-2.0
0003 
0004 # Test that a link aggregation device (bonding, team) removes the hardware
0005 # addresses that it adds on its underlying devices.
0006 test_LAG_cleanup()
0007 {
0008         local driver=$1
0009         local mode=$2
0010         local ucaddr="02:00:00:12:34:56"
0011         local addr6="fe80::78:9abc/64"
0012         local mcaddr="33:33:ff:78:9a:bc"
0013         local name
0014 
0015         ip link add dummy1 type dummy
0016         ip link add dummy2 type dummy
0017         if [ "$driver" = "bonding" ]; then
0018                 name="bond1"
0019                 ip link add "$name" up type bond mode "$mode"
0020                 ip link set dev dummy1 master "$name"
0021                 ip link set dev dummy2 master "$name"
0022         elif [ "$driver" = "team" ]; then
0023                 name="team0"
0024                 teamd -d -c '
0025                         {
0026                                 "device": "'"$name"'",
0027                                 "runner": {
0028                                         "name": "'"$mode"'"
0029                                 },
0030                                 "ports": {
0031                                         "dummy1":
0032                                                 {},
0033                                         "dummy2":
0034                                                 {}
0035                                 }
0036                         }
0037                 '
0038                 ip link set dev "$name" up
0039         else
0040                 check_err 1
0041                 log_test test_LAG_cleanup ": unknown driver \"$driver\""
0042                 return
0043         fi
0044 
0045         # Used to test dev->uc handling
0046         ip link add mv0 link "$name" up address "$ucaddr" type macvlan
0047         # Used to test dev->mc handling
0048         ip address add "$addr6" dev "$name"
0049         ip link set dev "$name" down
0050         ip link del "$name"
0051 
0052         not grep_bridge_fdb "$ucaddr" bridge fdb show >/dev/null
0053         check_err $? "macvlan unicast address still present on a slave"
0054 
0055         not grep_bridge_fdb "$mcaddr" bridge fdb show >/dev/null
0056         check_err $? "IPv6 solicited-node multicast mac address still present on a slave"
0057 
0058         cleanup
0059 
0060         log_test "$driver cleanup mode $mode"
0061 }