Browse Source

Add IsPrivate method for NetworkMode

This method indicates that container using private network stack

Signed-off-by: Alexandr Morozov <lk4d4math@gmail.com>
Alexandr Morozov 11 years ago
parent
commit
080ca86191
2 changed files with 7 additions and 2 deletions
  1. 2 2
      daemon/container.go
  2. 5 0
      runconfig/hostconfig.go

+ 2 - 2
daemon/container.go

@@ -434,7 +434,7 @@ func (container *Container) buildHostnameAndHostsFiles(IP string) error {
 
 func (container *Container) allocateNetwork() error {
 	mode := container.hostConfig.NetworkMode
-	if container.Config.NetworkDisabled || mode.IsContainer() || mode.IsHost() || mode.IsNone() {
+	if container.Config.NetworkDisabled || !mode.IsPrivate() {
 		return nil
 	}
 
@@ -905,7 +905,7 @@ func (container *Container) updateParentsHosts() error {
 		}
 
 		c := container.daemon.Get(cid)
-		if c != nil && !container.daemon.config.DisableNetwork && !container.hostConfig.NetworkMode.IsContainer() && !container.hostConfig.NetworkMode.IsHost() {
+		if c != nil && !container.daemon.config.DisableNetwork && container.hostConfig.NetworkMode.IsPrivate() {
 			if err := etchosts.Update(c.HostsPath, container.NetworkSettings.IPAddress, container.Name[1:]); err != nil {
 				return fmt.Errorf("Failed to update /etc/hosts in parent container: %v", err)
 			}

+ 5 - 0
runconfig/hostconfig.go

@@ -10,6 +10,11 @@ import (
 
 type NetworkMode string
 
+// IsPrivate indicates whether container use it's private network stack
+func (n NetworkMode) IsPrivate() bool {
+	return !(n.IsHost() || n.IsContainer() || n.IsNone())
+}
+
 func (n NetworkMode) IsHost() bool {
 	return n == "host"
 }