in plugins/ecs-bridge/engine/engine.go [72:104]
func (engine *engine) CreateBridge(bridgeName string, mtu int) (*netlink.Bridge, error) {
bridge, err := engine.lookupBridge(bridgeName)
if err != nil {
return nil, err
}
if bridge == nil {
err = engine.createBridge(bridgeName, mtu)
if err != nil {
if !strings.Contains(err.Error(), fileExistsErrMsg) {
return nil, err
}
// If the error returned by createBridge is that the bridge already exists, proceed to
// lookupBridge because that means the bridge was created by someone else right before
// we tried creating it, which is fine
}
// We need to lookup the bridge link again because LinkAdd
// doesn't return a handle to the link with all the other
// attributes set
bridge, err = engine.lookupBridge(bridgeName)
if err != nil {
return nil, err
}
}
if err := engine.netLink.LinkSetUp(bridge); err != nil {
return nil, errors.Wrapf(err,
"bridge create: unable to bring up the bridge interface %s", bridgeName)
}
return bridge, nil
}