// Copyright 2022 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef INIT_STARTUP_FLAGS_H_
#define INIT_STARTUP_FLAGS_H_

namespace startup {

// Define a struct to contain the flags we set when parsing USE flags.
struct Flags {
  // Indicates built with USE=encrypted_reboot_vault. Used to determine
  // if we need to setup the encrypted reboot vault.
  bool encrypted_reboot_vault;
  // Indicates built with USE=encrypted_stateful, used to determine which
  // mount function to use
  bool encstateful;
  // Indicates built with USE=direncryption. Used when mounting the stateful
  // partition to determine if we should enable directory encryption.
  bool direncryption;
  // Indicates built with USE=fsverity. Used when mounting the stateful
  // partition.
  bool fsverity;
  // Indicates whether stateful migration to lvm is allowed.
  bool lvm_migration;
  // Indicates built with USE=lvm_stateful_partition. Used when mounting the
  // stateful partition.
  bool lvm_stateful;
  // Indicates built with USE=prjquota. Used when mounting the stateful
  // partition.
  bool prjquota;
  // Not a USE flag, but indicates if built with both USE=tpm2 and
  // USE=encrypted_stateful. Used to determine if we will try to create
  // a system key.
  bool sys_key_util;
  // Increases the level of log verbosity from the default (warning) to info
  // or verbose.
  int verbosity;
};

}  // namespace startup

#endif  // INIT_STARTUP_FLAGS_H_
