зеркало из https://github.com/microsoft/docker.git
49 строки
1.2 KiB
Go
49 строки
1.2 KiB
Go
package daemon
|
|
|
|
import (
|
|
"github.com/docker/docker/engine"
|
|
"github.com/docker/docker/nat"
|
|
)
|
|
|
|
// FIXME: move deprecated port stuff to nat to clean up the core.
|
|
type PortMapping map[string]string // Deprecated
|
|
|
|
type NetworkSettings struct {
|
|
IPAddress string
|
|
IPPrefixLen int
|
|
MacAddress string
|
|
LinkLocalIPv6Address string
|
|
LinkLocalIPv6PrefixLen int
|
|
GlobalIPv6Address string
|
|
GlobalIPv6PrefixLen int
|
|
Gateway string
|
|
IPv6Gateway string
|
|
Bridge string
|
|
PortMapping map[string]PortMapping // Deprecated
|
|
Ports nat.PortMap
|
|
}
|
|
|
|
func (settings *NetworkSettings) PortMappingAPI() *engine.Table {
|
|
var outs = engine.NewTable("", 0)
|
|
for port, bindings := range settings.Ports {
|
|
p, _ := nat.ParsePort(port.Port())
|
|
if len(bindings) == 0 {
|
|
out := &engine.Env{}
|
|
out.SetInt("PrivatePort", p)
|
|
out.Set("Type", port.Proto())
|
|
outs.Add(out)
|
|
continue
|
|
}
|
|
for _, binding := range bindings {
|
|
out := &engine.Env{}
|
|
h, _ := nat.ParsePort(binding.HostPort)
|
|
out.SetInt("PrivatePort", p)
|
|
out.SetInt("PublicPort", h)
|
|
out.Set("Type", port.Proto())
|
|
out.Set("IP", binding.HostIp)
|
|
outs.Add(out)
|
|
}
|
|
}
|
|
return outs
|
|
}
|