func()

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
}