diff --git a/daemon/network.go b/daemon/network.go index a2110eca89..9975aa0ee9 100644 --- a/daemon/network.go +++ b/daemon/network.go @@ -798,12 +798,7 @@ func (daemon *Daemon) clearAttachableNetworks() { // buildCreateEndpointOptions builds endpoint options from a given network. func buildCreateEndpointOptions(c *container.Container, n *libnetwork.Network, epConfig *network.EndpointSettings, sb *libnetwork.Sandbox, daemonDNS []string) ([]libnetwork.EndpointOption, error) { - var ( - bindings = make(nat.PortMap) - pbList []networktypes.PortBinding - exposeList []networktypes.TransportPort - createOptions []libnetwork.EndpointOption - ) + var createOptions []libnetwork.EndpointOption defaultNetName := runconfig.DefaultDaemonNetworkMode().NetworkName() @@ -813,31 +808,27 @@ func buildCreateEndpointOptions(c *container.Container, n *libnetwork.Network, e } if epConfig != nil { - ipam := epConfig.IPAMConfig - - if ipam != nil { - var ( - ipList []net.IP - ip, ip6, linkip net.IP - ) - + if ipam := epConfig.IPAMConfig; ipam != nil { + var ipList []net.IP for _, ips := range ipam.LinkLocalIPs { - if linkip = net.ParseIP(ips); linkip == nil && ips != "" { + linkIP := net.ParseIP(ips) + if linkIP == nil && ips != "" { return nil, errors.Errorf("Invalid link-local IP address: %s", ipam.LinkLocalIPs) } - ipList = append(ipList, linkip) + ipList = append(ipList, linkIP) } - if ip = net.ParseIP(ipam.IPv4Address); ip == nil && ipam.IPv4Address != "" { + ip := net.ParseIP(ipam.IPv4Address) + if ip == nil && ipam.IPv4Address != "" { return nil, errors.Errorf("Invalid IPv4 address: %s)", ipam.IPv4Address) } - if ip6 = net.ParseIP(ipam.IPv6Address); ip6 == nil && ipam.IPv6Address != "" { + ip6 := net.ParseIP(ipam.IPv6Address) + if ip6 == nil && ipam.IPv6Address != "" { return nil, errors.Errorf("Invalid IPv6 address: %s)", ipam.IPv6Address) } - createOptions = append(createOptions, - libnetwork.CreateOptionIpam(ip, ip6, ipList, nil)) + createOptions = append(createOptions, libnetwork.CreateOptionIpam(ip, ip6, ipList, nil)) } for _, alias := range epConfig.Aliases { @@ -848,9 +839,7 @@ func buildCreateEndpointOptions(c *container.Container, n *libnetwork.Network, e } } - if c.NetworkSettings.Service != nil { - svcCfg := c.NetworkSettings.Service - + if svcCfg := c.NetworkSettings.Service; svcCfg != nil { var vip string if svcCfg.VirtualAddresses[n.ID()] != nil { vip = svcCfg.VirtualAddresses[n.ID()].IPv4 @@ -900,6 +889,7 @@ func buildCreateEndpointOptions(c *container.Container, n *libnetwork.Network, e return createOptions, nil } + bindings := make(nat.PortMap) if c.HostConfig.PortBindings != nil { for p, b := range c.HostConfig.PortBindings { bindings[p] = []nat.PortBinding{} @@ -920,11 +910,16 @@ func buildCreateEndpointOptions(c *container.Container, n *libnetwork.Network, e i++ } nat.SortPortMap(ports, bindings) + + var ( + exposedPorts []networktypes.TransportPort + publishedPorts []networktypes.PortBinding + ) for _, port := range ports { expose := networktypes.TransportPort{} expose.Proto = networktypes.ParseProtocol(port.Proto()) expose.Port = uint16(port.Int()) - exposeList = append(exposeList, expose) + exposedPorts = append(exposedPorts, expose) pb := networktypes.PortBinding{Port: expose.Port, Proto: expose.Proto} binding := bindings[port] @@ -941,11 +936,11 @@ func buildCreateEndpointOptions(c *container.Container, n *libnetwork.Network, e pbCopy.HostPort = uint16(portStart) pbCopy.HostPortEnd = uint16(portEnd) pbCopy.HostIP = net.ParseIP(binding[i].HostIP) - pbList = append(pbList, pbCopy) + publishedPorts = append(publishedPorts, pbCopy) } if c.HostConfig.PublishAllPorts && len(binding) == 0 { - pbList = append(pbList, pb) + publishedPorts = append(publishedPorts, pb) } } @@ -962,9 +957,7 @@ func buildCreateEndpointOptions(c *container.Container, n *libnetwork.Network, e libnetwork.CreateOptionDNS(dns)) } - createOptions = append(createOptions, - libnetwork.CreateOptionPortMapping(pbList), - libnetwork.CreateOptionExposedPorts(exposeList)) + createOptions = append(createOptions, libnetwork.CreateOptionPortMapping(publishedPorts), libnetwork.CreateOptionExposedPorts(exposedPorts)) return createOptions, nil }