/*
 * Copyright (C) 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

syntax = "proto3";

package android.profiles;

// Next: 3
message Cgroups {
    repeated Cgroup cgroups = 1 [json_name = "Cgroups"];
    Cgroups2 cgroups2 = 2 [json_name = "Cgroups2"];
}

// Next: 7
message Cgroup {
    string controller = 1 [json_name = "Controller"];
    string path = 2 [json_name = "Path"];
    string mode = 3 [json_name = "Mode"];
    string uid = 4 [json_name = "UID"];
    string gid = 5 [json_name = "GID"];
// Booleans default to false when not specified. File reconstruction fails
// when a boolean is specified as false, so leave unspecified in that case
// https://developers.google.com/protocol-buffers/docs/proto3#default
    bool needs_activation = 6 [json_name = "NeedsActivation"];
}

// Next: 6
message Cgroups2 {
    string path = 1 [json_name = "Path"];
    string mode = 2 [json_name = "Mode"];
    string uid = 3 [json_name = "UID"];
    string gid = 4 [json_name = "GID"];
    repeated Cgroup controllers = 5 [json_name = "Controllers"];
}
