mirror of
https://github.com/containers/podman.git
synced 2025-08-06 11:32:07 +08:00
Make c.networks() list include the default network
This makes things a lot more clear - if we are actually joining a CNI network, we are guaranteed to get a non-zero length list of networks. We do, however, need to know if the network we are joining is the default network for inspecting containers as it determines how we populate the response struct. To handle this, add a bool to indicate that the network listed was the default network, and only the default network. Signed-off-by: Matthew Heon <mheon@redhat.com>
This commit is contained in:
@ -110,10 +110,15 @@ func (r *Runtime) configureNetNS(ctr *Container, ctrNS ns.NetNS) ([]*cnitypes.Re
|
||||
|
||||
podName := getCNIPodName(ctr)
|
||||
|
||||
networks, err := ctr.networks()
|
||||
networks, _, err := ctr.networks()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// All networks have been removed from the container.
|
||||
// This is effectively forcing net=none.
|
||||
if len(networks) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// Update container map of interface descriptions
|
||||
if err := ctr.setupNetworkDescriptions(networks); err != nil {
|
||||
@ -224,7 +229,7 @@ func (r *Runtime) setupRootlessNetNS(ctr *Container) error {
|
||||
if ctr.config.NetMode.IsSlirp4netns() {
|
||||
return r.setupSlirp4netns(ctr)
|
||||
}
|
||||
networks, err := ctr.networks()
|
||||
networks, _, err := ctr.networks()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -744,13 +749,13 @@ func (r *Runtime) teardownNetNS(ctr *Container) error {
|
||||
|
||||
logrus.Debugf("Tearing down network namespace at %s for container %s", ctr.state.NetNS.Path(), ctr.ID())
|
||||
|
||||
networks, err := ctr.networks()
|
||||
networks, _, err := ctr.networks()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// rootless containers do not use the CNI plugin directly
|
||||
if !rootless.IsRootless() && !ctr.config.NetMode.IsSlirp4netns() {
|
||||
if !rootless.IsRootless() && !ctr.config.NetMode.IsSlirp4netns() && len(networks) > 0 {
|
||||
var requestedIP net.IP
|
||||
if ctr.requestedIP != nil {
|
||||
requestedIP = ctr.requestedIP
|
||||
@ -863,7 +868,7 @@ func (c *Container) getContainerNetworkInfo() (*define.InspectNetworkSettings, e
|
||||
settings := new(define.InspectNetworkSettings)
|
||||
settings.Ports = makeInspectPortBindings(c.config.PortMappings)
|
||||
|
||||
networks, err := c.networks()
|
||||
networks, isDefault, err := c.networks()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -872,7 +877,7 @@ func (c *Container) getContainerNetworkInfo() (*define.InspectNetworkSettings, e
|
||||
if c.state.NetNS == nil {
|
||||
// We still want to make dummy configurations for each CNI net
|
||||
// the container joined.
|
||||
if len(networks) > 0 {
|
||||
if len(networks) > 0 && !isDefault {
|
||||
settings.Networks = make(map[string]*define.InspectAdditionalNetwork, len(networks))
|
||||
for _, net := range networks {
|
||||
cniNet := new(define.InspectAdditionalNetwork)
|
||||
@ -893,7 +898,7 @@ func (c *Container) getContainerNetworkInfo() (*define.InspectNetworkSettings, e
|
||||
}
|
||||
|
||||
// If we have CNI networks - handle that here
|
||||
if len(networks) > 0 {
|
||||
if len(networks) > 0 && !isDefault {
|
||||
if len(networks) != len(c.state.NetworkStatus) {
|
||||
return nil, errors.Wrapf(define.ErrInternal, "network inspection mismatch: asked to join %d CNI networks but have information on %d networks", len(networks), len(c.state.NetworkStatus))
|
||||
}
|
||||
@ -1101,7 +1106,7 @@ func (c *Container) NetworkConnect(nameOrID, netName string, aliases []string) e
|
||||
return err
|
||||
}
|
||||
|
||||
ctrNetworks, err := c.networks()
|
||||
ctrNetworks, _, err := c.networks()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
Reference in New Issue
Block a user