// Copyright 2019 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CRYPTOHOME_MOUNT_CONSTANTS_H_
#define CRYPTOHOME_MOUNT_CONSTANTS_H_

namespace cryptohome {

enum class MountType {
  NONE,        // Not mounted.
  ECRYPTFS,    // Encrypted with ecryptfs.
  DIR_CRYPTO,  // Encrypted with dircrypto.
  EPHEMERAL,   // Ephemeral mount.
};

// Paths to sparse file for ephemeral mounts.
extern const char kEphemeralCryptohomeDir[];
extern const char kSparseFileDir[];

extern const char kDefaultSharedUser[];

extern const char kDefaultShadowRoot[];
extern const char kDefaultSkeletonSource[];

// Directories that we intend to track (make pass-through in cryptohome vault)
extern const char kCacheDir[];
extern const char kDownloadsDir[];
extern const char kMyFilesDir[];
extern const char kGCacheDir[];

// subdir of kGCacheDir
extern const char kGCacheVersion1Dir[];
extern const char kGCacheVersion2Dir[];

// subdir of kGCacheVersion1Dir
extern const char kGCacheTmpDir[];

extern const char kGCacheBlobsDir[];

extern const char kUserHomeSuffix[];
extern const char kRootHomeSuffix[];

// Name of the temporary mount directory.
extern const char kTemporaryMountDir[];

extern const char kUserHomeSuffix[];
extern const char kRootHomeSuffix[];

extern const char kEphemeralMountDir[];
extern const char kEphemeralMountType[];
extern const char kEphemeralMountOptions[];

// Daemon store directories.
extern const char kEtcDaemonStoreBaseDir[];
extern const char kRunDaemonStoreBaseDir[];

}  // namespace cryptohome

#endif  // CRYPTOHOME_MOUNT_CONSTANTS_H_
