diff --git a/libnetwork/network.go b/libnetwork/network.go index e4b6e4adaa..aedc44f6a2 100644 --- a/libnetwork/network.go +++ b/libnetwork/network.go @@ -489,6 +489,10 @@ func (n *network) UnmarshalJSON(b []byte) (err error) { if v, ok := netMap["inDelete"]; ok { n.inDelete = v.(bool) } + // Reconcile old networks with the recently added `--ipv6` flag + if !n.enableIPv6 { + n.enableIPv6 = len(n.ipamV6Info) > 0 + } return nil } @@ -779,7 +783,7 @@ func (n *network) CreateEndpoint(name string, options ...EndpointOption) (Endpoi ep.ipamOptions[netlabel.MacAddress] = ep.iface.mac.String() } - if err = ep.assignAddress(ipam.driver, true, !n.postIPv6); err != nil { + if err = ep.assignAddress(ipam.driver, true, n.enableIPv6 && !n.postIPv6); err != nil { return nil, err } defer func() { @@ -799,7 +803,7 @@ func (n *network) CreateEndpoint(name string, options ...EndpointOption) (Endpoi } }() - if err = ep.assignAddress(ipam.driver, false, n.postIPv6); err != nil { + if err = ep.assignAddress(ipam.driver, false, n.enableIPv6 && n.postIPv6); err != nil { return nil, err } @@ -1033,6 +1037,10 @@ func (n *network) ipamAllocate() error { } }() + if !n.enableIPv6 { + return nil + } + return n.ipamAllocateVersion(6, ipam) } @@ -1153,7 +1161,7 @@ func (n *network) ipamReleaseVersion(ipVer int, ipam ipamapi.Ipam) { return } - if *infoList == nil { + if len(*infoList) == 0 { return }