| // Copyright 2023 The Fuchsia 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 "minimal_driver_runtime.h" |
| |
| #include <lib/fdf/env.h> |
| |
| namespace network::tun { |
| |
| zx::result<std::unique_ptr<MinimalDriverRuntime>> MinimalDriverRuntime::Create() { |
| // Call this before creating the MinimalDriverRuntime object. This ensures that fdf_env_reset is |
| // only called if fdf_env_start succeeds. |
| zx_status_t status = fdf_env_start(); |
| if (status != ZX_OK) { |
| return zx::error(status); |
| } |
| |
| std::unique_ptr<MinimalDriverRuntime> runtime(new MinimalDriverRuntime); |
| |
| fdf_env_register_driver_entry(runtime.get()); |
| |
| return zx::ok(std::move(runtime)); |
| } |
| |
| MinimalDriverRuntime::~MinimalDriverRuntime() { |
| fdf_env_register_driver_exit(); |
| fdf_env_reset(); |
| } |
| |
| } // namespace network::tun |