network_settings.go 1004 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package daemon
  2. import (
  3. "github.com/dotcloud/docker/engine"
  4. "github.com/dotcloud/docker/nat"
  5. )
  6. // FIXME: move deprecated port stuff to nat to clean up the core.
  7. type PortMapping map[string]string // Deprecated
  8. type NetworkSettings struct {
  9. IPAddress string
  10. IPPrefixLen int
  11. Gateway string
  12. Bridge string
  13. PortMapping map[string]PortMapping // Deprecated
  14. Ports nat.PortMap
  15. }
  16. func (settings *NetworkSettings) PortMappingAPI() *engine.Table {
  17. var outs = engine.NewTable("", 0)
  18. for port, bindings := range settings.Ports {
  19. p, _ := nat.ParsePort(port.Port())
  20. if len(bindings) == 0 {
  21. out := &engine.Env{}
  22. out.SetInt("PrivatePort", p)
  23. out.Set("Type", port.Proto())
  24. outs.Add(out)
  25. continue
  26. }
  27. for _, binding := range bindings {
  28. out := &engine.Env{}
  29. h, _ := nat.ParsePort(binding.HostPort)
  30. out.SetInt("PrivatePort", p)
  31. out.SetInt("PublicPort", h)
  32. out.Set("Type", port.Proto())
  33. out.Set("IP", binding.HostIp)
  34. outs.Add(out)
  35. }
  36. }
  37. return outs
  38. }