blob: f35676b4edd83f8798eac033477bb670bd83fc22 [file] [log] [blame]
// Copyright 2018 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 VM_TOOLS_CONCIERGE_TAP_DEVICE_BUILDER_H_
#define VM_TOOLS_CONCIERGE_TAP_DEVICE_BUILDER_H_
#include <stdint.h>
#include <string>
#include <base/files/scoped_file.h>
#include <base/macros.h>
#include <chromeos/patchpanel/mac_address_generator.h>
namespace vm_tools {
namespace concierge {
// Builds and configures a tap device. If the returned ScopedFD is valid then
// the device has been properly configured.
base::ScopedFD BuildTapDevice(const patchpanel::MacAddress& mac_addr,
uint32_t ipv4_addr,
uint32_t ipv4_netmask,
bool vnet_hdr);
// Opens and configures a tap device. If the returned ScopedFD is valid then
// the device has been properly configured.
// If |ifname_out| is non-null, it is populated with the final interface name.
base::ScopedFD OpenTapDevice(const std::string& ifname_in,
bool vnet_hdr,
std::string* ifname_out);
} // namespace concierge
} // namespace vm_tools
#endif // VM_TOOLS_CONCIERGE_TAP_DEVICE_BUILDER_H_