Merge branch 'rtnetlink-allow-to-enslave-with-one-msg-an-up-interface'
Nicolas Dichtel says: ==================== rtnetlink: allow to enslave with one msg an up interface The first patch fixes a regression, introduced in linux v6.1, by reverting a patch. The second patch adds a test to verify this API. ==================== Link: https://lore.kernel.org/r/20240108094103.2001224-1-nicolas.dichtel@6wind.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -2899,13 +2899,6 @@ static int do_setlink(const struct sk_buff *skb,
|
||||
call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
|
||||
}
|
||||
|
||||
if (tb[IFLA_MASTER]) {
|
||||
err = do_set_master(dev, nla_get_u32(tb[IFLA_MASTER]), extack);
|
||||
if (err)
|
||||
goto errout;
|
||||
status |= DO_SETLINK_MODIFIED;
|
||||
}
|
||||
|
||||
if (ifm->ifi_flags || ifm->ifi_change) {
|
||||
err = dev_change_flags(dev, rtnl_dev_combine_flags(dev, ifm),
|
||||
extack);
|
||||
@@ -2913,6 +2906,13 @@ static int do_setlink(const struct sk_buff *skb,
|
||||
goto errout;
|
||||
}
|
||||
|
||||
if (tb[IFLA_MASTER]) {
|
||||
err = do_set_master(dev, nla_get_u32(tb[IFLA_MASTER]), extack);
|
||||
if (err)
|
||||
goto errout;
|
||||
status |= DO_SETLINK_MODIFIED;
|
||||
}
|
||||
|
||||
if (tb[IFLA_CARRIER]) {
|
||||
err = dev_change_carrier(dev, nla_get_u8(tb[IFLA_CARRIER]));
|
||||
if (err)
|
||||
|
||||
@@ -28,6 +28,7 @@ ALL_TESTS="
|
||||
kci_test_neigh_get
|
||||
kci_test_bridge_parent_id
|
||||
kci_test_address_proto
|
||||
kci_test_enslave_bonding
|
||||
"
|
||||
|
||||
devdummy="test-dummy0"
|
||||
@@ -1241,6 +1242,33 @@ kci_test_address_proto()
|
||||
return $ret
|
||||
}
|
||||
|
||||
kci_test_enslave_bonding()
|
||||
{
|
||||
local testns="testns"
|
||||
local bond="bond123"
|
||||
local dummy="dummy123"
|
||||
local ret=0
|
||||
|
||||
run_cmd ip netns add "$testns"
|
||||
if [ $ret -ne 0 ]; then
|
||||
end_test "SKIP bonding tests: cannot add net namespace $testns"
|
||||
return $ksft_skip
|
||||
fi
|
||||
|
||||
run_cmd ip -netns $testns link add dev $bond type bond mode balance-rr
|
||||
run_cmd ip -netns $testns link add dev $dummy type dummy
|
||||
run_cmd ip -netns $testns link set dev $dummy up
|
||||
run_cmd ip -netns $testns link set dev $dummy master $bond down
|
||||
if [ $ret -ne 0 ]; then
|
||||
end_test "FAIL: initially up interface added to a bond and set down"
|
||||
ip netns del "$testns"
|
||||
return 1
|
||||
fi
|
||||
|
||||
end_test "PASS: enslave interface in a bond"
|
||||
ip netns del "$testns"
|
||||
}
|
||||
|
||||
kci_test_rtnl()
|
||||
{
|
||||
local current_test
|
||||
|
||||
Reference in New Issue
Block a user