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

#include "libcontainer/config.h"

#include <utility>

#include <base/callback.h>
#include <base/logging.h>

// TODO(lhchavez): Remove this once container_config only holds a pointer to
// libcontainer::Config.
extern void container_config_add_hook(struct container_config* c,
                                      minijail_hook_event_t event,
                                      libcontainer::HookCallback callback);

namespace libcontainer {

Config::Config() : config_(container_config_create()) {
  // container_config_create() allocates using std::nothrow, so we need to
  // explicitly call abort(2) when allocation fails.
  CHECK(config_);
}

Config::~Config() {
  container_config_destroy(config_);
}

void Config::AddHook(minijail_hook_event_t event,
                     libcontainer::HookCallback callback) {
  container_config_add_hook(config_, event, std::move(callback));
}

}  // namespace libcontainer
