// Copyright 2017 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 LIBCONTAINER_CONFIG_H_
#define LIBCONTAINER_CONFIG_H_

#include <vector>

#include <base/callback_forward.h>
#include <brillo/brillo_export.h>
#include <libminijail.h>

#include "libcontainer/libcontainer.h"

namespace libcontainer {

// A hook that can be run at different stages of the container startup. The PID
// parameter is the pid of the container's init process in the outer namespace.
// The hook should return true on success.
using HookCallback = base::Callback<bool(pid_t)>;
using HookOnceCallback = base::OnceCallback<bool(pid_t)>;

class BRILLO_EXPORT Config {
 public:
  Config();
  Config(const Config&) = delete;
  Config& operator=(const Config&) = delete;

  ~Config();

  container_config* get() const { return config_; }

  // Runs |callback| when |event| is reached. If |callback| fails,
  // container_start() will fail and tear down the container.
  void AddHook(minijail_hook_event_t event,
               libcontainer::HookCallback callback);

 private:
  container_config* const config_;
};

}  // namespace libcontainer

#endif  // LIBCONTAINER_CONFIG_H_
