Skip to content

Commit 575d800

Browse files
author
CKI KWF Bot
committed
Merge: bonding: assign random address if device address is same as bond
MR: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-10/-/merge_requests/916 JIRA: https://issues.redhat.com/browse/RHEL-84037 See commit log for description of issue. Signed-off-by: Hangbin Liu <haliu@redhat.com> Approved-by: José Ignacio Tornos Martínez <jtornosm@redhat.com> Approved-by: Xin Long <lxin@redhat.com> Approved-by: CKI KWF Bot <cki-ci-bot+kwf-gitlab-com@redhat.com> Merged-by: CKI GitLab Kmaint Pipeline Bot <26919896-cki-kmaint-pipeline-bot@users.noreply.gitlab.com>
2 parents 03ca39e + d6215c7 commit 575d800

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

drivers/net/bonding/bond_main.c

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2119,15 +2119,26 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev,
21192119
* set the master's mac address to that of the first slave
21202120
*/
21212121
memcpy(ss.__data, bond_dev->dev_addr, bond_dev->addr_len);
2122-
ss.ss_family = slave_dev->type;
2123-
res = dev_set_mac_address(slave_dev, (struct sockaddr *)&ss,
2124-
extack);
2125-
if (res) {
2126-
slave_err(bond_dev, slave_dev, "Error %d calling set_mac_address\n", res);
2127-
goto err_restore_mtu;
2128-
}
2122+
} else if (bond->params.fail_over_mac == BOND_FOM_FOLLOW &&
2123+
BOND_MODE(bond) == BOND_MODE_ACTIVEBACKUP &&
2124+
memcmp(slave_dev->dev_addr, bond_dev->dev_addr, bond_dev->addr_len) == 0) {
2125+
/* Set slave to random address to avoid duplicate mac
2126+
* address in later fail over.
2127+
*/
2128+
eth_random_addr(ss.__data);
2129+
} else {
2130+
goto skip_mac_set;
21292131
}
21302132

2133+
ss.ss_family = slave_dev->type;
2134+
res = dev_set_mac_address(slave_dev, (struct sockaddr *)&ss, extack);
2135+
if (res) {
2136+
slave_err(bond_dev, slave_dev, "Error %d calling set_mac_address\n", res);
2137+
goto err_restore_mtu;
2138+
}
2139+
2140+
skip_mac_set:
2141+
21312142
/* set no_addrconf flag before open to prevent IPv6 addrconf */
21322143
slave_dev->priv_flags |= IFF_NO_ADDRCONF;
21332144

0 commit comments

Comments
 (0)