diff --git a/libnetwork/ipamapi/contract.go b/libnetwork/ipamapi/contract.go index e7845f28e7..3563d70c08 100644 --- a/libnetwork/ipamapi/contract.go +++ b/libnetwork/ipamapi/contract.go @@ -46,6 +46,7 @@ var ( ErrOverlapPool = types.ForbiddenErrorf("Address pool overlaps with existing pool on this address space") ErrNoAvailablePool = types.NoServiceErrorf("No available pool") ErrNoAvailableIPs = types.NoServiceErrorf("No available addresses on this pool") + ErrNoIPReturned = types.NoServiceErrorf("No address returned") ErrIPAlreadyAllocated = types.ForbiddenErrorf("Address already in use") ErrIPOutOfRange = types.BadRequestErrorf("Requested address is out of range") ErrPoolOverlap = types.ForbiddenErrorf("Pool overlaps with other one on this address space") diff --git a/libnetwork/ipams/remote/remote.go b/libnetwork/ipams/remote/remote.go index 799a2e77f4..4ad3287e66 100644 --- a/libnetwork/ipams/remote/remote.go +++ b/libnetwork/ipams/remote/remote.go @@ -111,6 +111,8 @@ func (a *allocator) RequestAddress(poolID string, address net.IP, options map[st } if res.Address != "" { retAddress, err = types.ParseCIDR(res.Address) + } else { + return nil, nil, ipamapi.ErrNoIPReturned } return retAddress, res.Data, err }