mirror of
https://github.com/containers/podman.git
synced 2025-05-17 23:26:08 +08:00
libpod: Move convertPortMappings and getNetworkOptions to networking_common.go
[NO NEW TESTS NEEDED] Signed-off-by: Doug Rabson <dfr@rabson.org>
This commit is contained in:
42
libpod/networking_common.go
Normal file
42
libpod/networking_common.go
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
//go:build linux || freebsd
|
||||||
|
// +build linux freebsd
|
||||||
|
|
||||||
|
package libpod
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/containers/common/libnetwork/types"
|
||||||
|
"github.com/containers/common/pkg/machine"
|
||||||
|
)
|
||||||
|
|
||||||
|
// convertPortMappings will remove the HostIP part from the ports when running inside podman machine.
|
||||||
|
// This is need because a HostIP of 127.0.0.1 would now allow the gvproxy forwarder to reach to open ports.
|
||||||
|
// For machine the HostIP must only be used by gvproxy and never in the VM.
|
||||||
|
func (c *Container) convertPortMappings() []types.PortMapping {
|
||||||
|
if !machine.IsGvProxyBased() || len(c.config.PortMappings) == 0 {
|
||||||
|
return c.config.PortMappings
|
||||||
|
}
|
||||||
|
// if we run in a machine VM we have to ignore the host IP part
|
||||||
|
newPorts := make([]types.PortMapping, 0, len(c.config.PortMappings))
|
||||||
|
for _, port := range c.config.PortMappings {
|
||||||
|
port.HostIP = ""
|
||||||
|
newPorts = append(newPorts, port)
|
||||||
|
}
|
||||||
|
return newPorts
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Container) getNetworkOptions(networkOpts map[string]types.PerNetworkOptions) types.NetworkOptions {
|
||||||
|
opts := types.NetworkOptions{
|
||||||
|
ContainerID: c.config.ID,
|
||||||
|
ContainerName: getCNIPodName(c),
|
||||||
|
}
|
||||||
|
opts.PortMappings = c.convertPortMappings()
|
||||||
|
|
||||||
|
// If the container requested special network options use this instead of the config.
|
||||||
|
// This is the case for container restore or network reload.
|
||||||
|
if c.perNetworkOpts != nil {
|
||||||
|
opts.Networks = c.perNetworkOpts
|
||||||
|
} else {
|
||||||
|
opts.Networks = networkOpts
|
||||||
|
}
|
||||||
|
return opts
|
||||||
|
}
|
@ -79,39 +79,6 @@ type LinkStatistics64 struct {
|
|||||||
TxCompressed uint64
|
TxCompressed uint64
|
||||||
}
|
}
|
||||||
|
|
||||||
// convertPortMappings will remove the HostIP part from the ports when running inside podman machine.
|
|
||||||
// This is need because a HostIP of 127.0.0.1 would now allow the gvproxy forwarder to reach to open ports.
|
|
||||||
// For machine the HostIP must only be used by gvproxy and never in the VM.
|
|
||||||
func (c *Container) convertPortMappings() []types.PortMapping {
|
|
||||||
if !c.runtime.config.Engine.MachineEnabled || len(c.config.PortMappings) == 0 {
|
|
||||||
return c.config.PortMappings
|
|
||||||
}
|
|
||||||
// if we run in a machine VM we have to ignore the host IP part
|
|
||||||
newPorts := make([]types.PortMapping, 0, len(c.config.PortMappings))
|
|
||||||
for _, port := range c.config.PortMappings {
|
|
||||||
port.HostIP = ""
|
|
||||||
newPorts = append(newPorts, port)
|
|
||||||
}
|
|
||||||
return newPorts
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Container) getNetworkOptions(networkOpts map[string]types.PerNetworkOptions) types.NetworkOptions {
|
|
||||||
opts := types.NetworkOptions{
|
|
||||||
ContainerID: c.config.ID,
|
|
||||||
ContainerName: getCNIPodName(c),
|
|
||||||
}
|
|
||||||
opts.PortMappings = c.convertPortMappings()
|
|
||||||
|
|
||||||
// If the container requested special network options use this instead of the config.
|
|
||||||
// This is the case for container restore or network reload.
|
|
||||||
if c.perNetworkOpts != nil {
|
|
||||||
opts.Networks = c.perNetworkOpts
|
|
||||||
} else {
|
|
||||||
opts.Networks = networkOpts
|
|
||||||
}
|
|
||||||
return opts
|
|
||||||
}
|
|
||||||
|
|
||||||
type RootlessNetNS struct {
|
type RootlessNetNS struct {
|
||||||
dir string
|
dir string
|
||||||
Lock lockfile.Locker
|
Lock lockfile.Locker
|
||||||
|
@ -25,7 +25,6 @@ import (
|
|||||||
"github.com/containers/common/libnetwork/resolvconf"
|
"github.com/containers/common/libnetwork/resolvconf"
|
||||||
"github.com/containers/common/libnetwork/types"
|
"github.com/containers/common/libnetwork/types"
|
||||||
"github.com/containers/common/pkg/config"
|
"github.com/containers/common/pkg/config"
|
||||||
"github.com/containers/common/pkg/machine"
|
|
||||||
"github.com/containers/common/pkg/netns"
|
"github.com/containers/common/pkg/netns"
|
||||||
"github.com/containers/common/pkg/util"
|
"github.com/containers/common/pkg/util"
|
||||||
"github.com/containers/podman/v4/libpod/define"
|
"github.com/containers/podman/v4/libpod/define"
|
||||||
@ -59,39 +58,6 @@ const (
|
|||||||
persistentCNIDir = "/var/lib/cni"
|
persistentCNIDir = "/var/lib/cni"
|
||||||
)
|
)
|
||||||
|
|
||||||
// convertPortMappings will remove the HostIP part from the ports when running inside podman machine.
|
|
||||||
// This is need because a HostIP of 127.0.0.1 would now allow the gvproxy forwarder to reach to open ports.
|
|
||||||
// For machine the HostIP must only be used by gvproxy and never in the VM.
|
|
||||||
func (c *Container) convertPortMappings() []types.PortMapping {
|
|
||||||
if !machine.IsGvProxyBased() || len(c.config.PortMappings) == 0 {
|
|
||||||
return c.config.PortMappings
|
|
||||||
}
|
|
||||||
// if we run in a machine VM we have to ignore the host IP part
|
|
||||||
newPorts := make([]types.PortMapping, 0, len(c.config.PortMappings))
|
|
||||||
for _, port := range c.config.PortMappings {
|
|
||||||
port.HostIP = ""
|
|
||||||
newPorts = append(newPorts, port)
|
|
||||||
}
|
|
||||||
return newPorts
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Container) getNetworkOptions(networkOpts map[string]types.PerNetworkOptions) types.NetworkOptions {
|
|
||||||
opts := types.NetworkOptions{
|
|
||||||
ContainerID: c.config.ID,
|
|
||||||
ContainerName: getCNIPodName(c),
|
|
||||||
}
|
|
||||||
opts.PortMappings = c.convertPortMappings()
|
|
||||||
|
|
||||||
// If the container requested special network options use this instead of the config.
|
|
||||||
// This is the case for container restore or network reload.
|
|
||||||
if c.perNetworkOpts != nil {
|
|
||||||
opts.Networks = c.perNetworkOpts
|
|
||||||
} else {
|
|
||||||
opts.Networks = networkOpts
|
|
||||||
}
|
|
||||||
return opts
|
|
||||||
}
|
|
||||||
|
|
||||||
type RootlessNetNS struct {
|
type RootlessNetNS struct {
|
||||||
ns ns.NetNS
|
ns ns.NetNS
|
||||||
dir string
|
dir string
|
||||||
|
Reference in New Issue
Block a user