Skip to content

Commit feeff4f

Browse files
authored
Merge pull request #2380 from liskin/bridge-atomic-hwaddr
bridge: Fix hwaddr set race between us and udev
2 parents fec6476 + 8710ffe commit feeff4f

1 file changed

Lines changed: 6 additions & 7 deletions

File tree

drivers/bridge/setup_device.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,17 @@ func setupDevice(config *networkConfiguration, i *bridgeInterface) error {
3535
setMac = kv.Kernel > 3 || (kv.Kernel == 3 && kv.Major >= 3)
3636
}
3737

38+
if setMac {
39+
hwAddr := netutils.GenerateRandomMAC()
40+
i.Link.Attrs().HardwareAddr = hwAddr
41+
logrus.Debugf("Setting bridge mac address to %s", hwAddr)
42+
}
43+
3844
if err = i.nlh.LinkAdd(i.Link); err != nil {
3945
logrus.Debugf("Failed to create bridge %s via netlink. Trying ioctl", config.BridgeName)
4046
return ioctlCreateBridge(config.BridgeName, setMac)
4147
}
4248

43-
if setMac {
44-
hwAddr := netutils.GenerateRandomMAC()
45-
if err = i.nlh.LinkSetHardwareAddr(i.Link, hwAddr); err != nil {
46-
return fmt.Errorf("failed to set bridge mac-address %s : %s", hwAddr, err.Error())
47-
}
48-
logrus.Debugf("Setting bridge mac address to %s", hwAddr)
49-
}
5049
return err
5150
}
5251

0 commit comments

Comments
 (0)