| // 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_ |