// Copyright 2016 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.

syntax = "proto2";
option optimize_for = LITE_RUNTIME;

package imageloader;

message ImageCommand {
  oneof op {
    MountCommand mount_command = 1;
    UnmountAllCommand unmount_all_command = 2;
    UnmountCommand unmount_command = 3;
  }
}

message MountCommand {
  enum FileSystem {
    SQUASH = 1;
    EXT4 = 2;
  }
  required string mount_path = 2;
  required string table = 3;
  required FileSystem fs_type = 4 [default = SQUASH];
}

message UnmountAllCommand {
  required bool dry_run = 5 [default = true];
  required string unmount_rootpath = 6;
}

message UnmountCommand {
  required string unmount_path = 7;
}

message CommandResponse {
  required bool success = 1 [default = false];
  // |paths| are only set for response of UnmountAllCommand: paths that can be
  // unmounted.
  repeated string paths = 2;
}
