diff options
Diffstat (limited to 'libpod/networking_linux.go')
| -rw-r--r-- | libpod/networking_linux.go | 41 | 
1 files changed, 24 insertions, 17 deletions
| diff --git a/libpod/networking_linux.go b/libpod/networking_linux.go index 55d338e7d..0526e646e 100644 --- a/libpod/networking_linux.go +++ b/libpod/networking_linux.go @@ -22,13 +22,13 @@ import (  	cnitypes "github.com/containernetworking/cni/pkg/types/current"  	"github.com/containernetworking/plugins/pkg/ns" -	"github.com/containers/podman/v2/libpod/define" -	"github.com/containers/podman/v2/libpod/events" -	"github.com/containers/podman/v2/libpod/network" -	"github.com/containers/podman/v2/pkg/errorhandling" -	"github.com/containers/podman/v2/pkg/netns" -	"github.com/containers/podman/v2/pkg/rootless" -	"github.com/containers/podman/v2/pkg/rootlessport" +	"github.com/containers/podman/v3/libpod/define" +	"github.com/containers/podman/v3/libpod/events" +	"github.com/containers/podman/v3/libpod/network" +	"github.com/containers/podman/v3/pkg/errorhandling" +	"github.com/containers/podman/v3/pkg/netns" +	"github.com/containers/podman/v3/pkg/rootless" +	"github.com/containers/podman/v3/pkg/rootlessport"  	"github.com/cri-o/ocicni/pkg/ocicni"  	"github.com/pkg/errors"  	"github.com/sirupsen/logrus" @@ -480,9 +480,8 @@ func (r *Runtime) setupSlirp4netns(ctr *Container) error {  	if havePortMapping {  		if isSlirpHostForward {  			return r.setupRootlessPortMappingViaSlirp(ctr, cmd, apiSocket) -		} else { -			return r.setupRootlessPortMappingViaRLK(ctr, netnsPath)  		} +		return r.setupRootlessPortMappingViaRLK(ctr, netnsPath)  	}  	return nil  } @@ -1135,18 +1134,22 @@ func (w *logrusDebugWriter) Write(p []byte) (int, error) {  // NetworkDisconnect removes a container from the network  func (c *Container) NetworkDisconnect(nameOrID, netName string, force bool) error { +	// only the bridge mode supports cni networks +	if !c.config.NetMode.IsBridge() { +		return errors.Errorf("network mode %q is not supported", c.config.NetMode) +	} +  	networks, err := c.networksByNameIndex()  	if err != nil {  		return err  	} -	exists, err := network.Exists(c.runtime.config, netName) +	// check if network exists and if the input is a ID we get the name +	// ocicni only uses names so it is important that we only use the name +	netName, err = network.NormalizeName(c.runtime.config, netName)  	if err != nil {  		return err  	} -	if !exists { -		return errors.Wrap(define.ErrNoSuchNetwork, netName) -	}  	index, nameExists := networks[netName]  	if !nameExists && len(networks) > 0 { @@ -1192,18 +1195,22 @@ func (c *Container) NetworkDisconnect(nameOrID, netName string, force bool) erro  // ConnectNetwork connects a container to a given network  func (c *Container) NetworkConnect(nameOrID, netName string, aliases []string) error { +	// only the bridge mode supports cni networks +	if !c.config.NetMode.IsBridge() { +		return errors.Errorf("network mode %q is not supported", c.config.NetMode) +	} +  	networks, err := c.networksByNameIndex()  	if err != nil {  		return err  	} -	exists, err := network.Exists(c.runtime.config, netName) +	// check if network exists and if the input is a ID we get the name +	// ocicni only uses names so it is important that we only use the name +	netName, err = network.NormalizeName(c.runtime.config, netName)  	if err != nil {  		return err  	} -	if !exists { -		return errors.Wrap(define.ErrNoSuchNetwork, netName) -	}  	c.lock.Lock()  	defer c.lock.Unlock() | 
