Merge pull request #809 from squeed/bridge-refresh-mac

bridge: refresh host-veth mac after port add
This commit is contained in:
Dan Williams 2023-01-16 10:56:47 -06:00 committed by GitHub
commit c4d24e80d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -517,24 +517,6 @@ func cmdAdd(args *skel.CmdArgs) error {
return err return err
} }
// check bridge port state
retries := []int{0, 50, 500, 1000, 1000}
for idx, sleep := range retries {
time.Sleep(time.Duration(sleep) * time.Millisecond)
hostVeth, err := netlink.LinkByName(hostInterface.Name)
if err != nil {
return err
}
if hostVeth.Attrs().OperState == netlink.OperUp {
break
}
if idx == len(retries)-1 {
return fmt.Errorf("bridge port in error state: %s", hostVeth.Attrs().OperState)
}
}
if n.IsGW { if n.IsGW {
var firstV4Addr net.IP var firstV4Addr net.IP
var vlanInterface *current.Interface var vlanInterface *current.Interface
@ -601,6 +583,29 @@ func cmdAdd(args *skel.CmdArgs) error {
} }
} }
var hostVeth netlink.Link
// check bridge port state
retries := []int{0, 50, 500, 1000, 1000}
for idx, sleep := range retries {
time.Sleep(time.Duration(sleep) * time.Millisecond)
hostVeth, err = netlink.LinkByName(hostInterface.Name)
if err != nil {
return err
}
if hostVeth.Attrs().OperState == netlink.OperUp {
break
}
if idx == len(retries)-1 {
return fmt.Errorf("bridge port in error state: %s", hostVeth.Attrs().OperState)
}
}
// In certain circumstances, the host-side of the veth may change addrs
hostInterface.Mac = hostVeth.Attrs().HardwareAddr.String()
// Refetch the bridge since its MAC address may change when the first // Refetch the bridge since its MAC address may change when the first
// veth is added or after its IP address is set // veth is added or after its IP address is set
br, err = bridgeByName(n.BrName) br, err = bridgeByName(n.BrName)