From 96d3008465dd49f272ba13db05fbce371b6b4f71 Mon Sep 17 00:00:00 2001 From: Michael Crosby Date: Wed, 4 Sep 2013 00:29:20 +0000 Subject: [PATCH] Add flag to set the default ip ports are bound to --- config.go | 5 +++++ docker/docker.go | 7 +++++++ network.go | 8 +++++--- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/config.go b/config.go index 6d86535a6..d32179056 100644 --- a/config.go +++ b/config.go @@ -1,5 +1,9 @@ package docker +import ( + "net" +) + type DaemonConfig struct { Pidfile string GraphPath string @@ -9,4 +13,5 @@ type DaemonConfig struct { Dns []string EnableIptables bool BridgeIface string + DefaultIp net.IP } diff --git a/docker/docker.go b/docker/docker.go index fb2f79013..e2f000786 100644 --- a/docker/docker.go +++ b/docker/docker.go @@ -7,6 +7,7 @@ import ( "github.com/dotcloud/docker/utils" "io/ioutil" "log" + "net" "os" "os/signal" "strconv" @@ -38,7 +39,10 @@ func main() { flHosts := docker.ListOpts{fmt.Sprintf("unix://%s", docker.DEFAULTUNIXSOCKET)} flag.Var(&flHosts, "H", "tcp://host:port to bind/connect to or unix://path/to/socket to use") flEnableIptables := flag.Bool("iptables", true, "Disable iptables within docker") + flDefaultIp := flag.String("ip", "0.0.0.0", "Default ip address to use when binding a containers ports") + flag.Parse() + if *flVersion { showVersion() return @@ -69,6 +73,8 @@ func main() { dns = []string{*flDns} } + ip := net.ParseIP(*flDefaultIp) + config := &docker.DaemonConfig{ Pidfile: *pidfile, GraphPath: *flGraphPath, @@ -78,6 +84,7 @@ func main() { EnableIptables: *flEnableIptables, BridgeIface: bridge, ProtoAddresses: flHosts, + DefaultIp: ip, } if err := daemon(config); err != nil { log.Fatal(err) diff --git a/network.go b/network.go index 082047207..029b18a67 100644 --- a/network.go +++ b/network.go @@ -210,7 +210,8 @@ type PortMapper struct { udpMapping map[int]*net.UDPAddr udpProxies map[int]proxy.Proxy - iptables *iptables.Chain + iptables *iptables.Chain + defaultIp net.IP } func (mapper *PortMapper) Map(port int, backendAddr net.Addr) error { @@ -223,7 +224,7 @@ func (mapper *PortMapper) Map(port int, backendAddr net.Addr) error { } } mapper.tcpMapping[port] = backendAddr.(*net.TCPAddr) - proxy, err := proxy.NewProxy(&net.TCPAddr{IP: net.IPv4(0, 0, 0, 0), Port: port}, backendAddr) + proxy, err := proxy.NewProxy(&net.TCPAddr{IP: mapper.defaultIp, Port: port}, backendAddr) if err != nil { mapper.Unmap(port, "tcp") return err @@ -239,7 +240,7 @@ func (mapper *PortMapper) Map(port int, backendAddr net.Addr) error { } } mapper.udpMapping[port] = backendAddr.(*net.UDPAddr) - proxy, err := proxy.NewProxy(&net.UDPAddr{IP: net.IPv4(0, 0, 0, 0), Port: port}, backendAddr) + proxy, err := proxy.NewProxy(&net.UDPAddr{IP: mapper.defaultIp, Port: port}, backendAddr) if err != nil { mapper.Unmap(port, "udp") return err @@ -305,6 +306,7 @@ func newPortMapper(config *DaemonConfig) (*PortMapper, error) { udpMapping: make(map[int]*net.UDPAddr), udpProxies: make(map[int]proxy.Proxy), iptables: chain, + defaultIp: config.DefaultIp, } return mapper, nil }