aboutsummaryrefslogtreecommitdiff
path: root/host/libs/vm_manager/crosvm_builder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'host/libs/vm_manager/crosvm_builder.cpp')
-rw-r--r--host/libs/vm_manager/crosvm_builder.cpp43
1 files changed, 24 insertions, 19 deletions
diff --git a/host/libs/vm_manager/crosvm_builder.cpp b/host/libs/vm_manager/crosvm_builder.cpp
index cb863db32..5e44a1673 100644
--- a/host/libs/vm_manager/crosvm_builder.cpp
+++ b/host/libs/vm_manager/crosvm_builder.cpp
@@ -28,6 +28,17 @@
#include "host/libs/config/known_paths.h"
namespace cuttlefish {
+namespace {
+
+std::string MacCrosvmArgument(std::optional<std::string_view> mac) {
+ return mac.has_value() ? fmt::format(",mac={}", mac.value()) : "";
+}
+
+std::string PciCrosvmArgument(std::optional<pci::Address> pci) {
+ return pci.has_value() ? fmt::format(",pci-address={}", pci.value().Id()) : "";
+}
+
+}
CrosvmBuilder::CrosvmBuilder() : command_("crosvm") {}
@@ -59,19 +70,21 @@ void CrosvmBuilder::AddControlSocket(const std::string& control_socket,
command_.AddParameter("--socket=", control_socket);
}
+// TODO: b/243198718 - switch to virtio-console
void CrosvmBuilder::AddHvcSink() {
- command_.AddParameter("--serial=hardware=virtio-console,num=", ++hvc_num_,
- ",type=sink");
+ command_.AddParameter(
+ "--serial=hardware=legacy-virtio-console,num=", ++hvc_num_, ",type=sink");
}
void CrosvmBuilder::AddHvcReadOnly(const std::string& output, bool console) {
- command_.AddParameter("--serial=hardware=virtio-console,num=", ++hvc_num_,
- ",type=file,path=", output,
- console ? ",console=true" : "");
+ command_.AddParameter(
+ "--serial=hardware=legacy-virtio-console,num=", ++hvc_num_,
+ ",type=file,path=", output, console ? ",console=true" : "");
}
void CrosvmBuilder::AddHvcReadWrite(const std::string& output,
const std::string& input) {
- command_.AddParameter("--serial=hardware=virtio-console,num=", ++hvc_num_,
- ",type=file,path=", output, ",input=", input);
+ command_.AddParameter(
+ "--serial=hardware=legacy-virtio-console,num=", ++hvc_num_,
+ ",type=file,path=", output, ",input=", input);
}
void CrosvmBuilder::AddReadOnlyDisk(const std::string& path) {
@@ -104,10 +117,12 @@ void CrosvmBuilder::AddSerial(const std::string& output,
}
#ifdef __linux__
-SharedFD CrosvmBuilder::AddTap(const std::string& tap_name) {
+SharedFD CrosvmBuilder::AddTap(const std::string& tap_name,
+ std::optional<std::string_view> mac,
+ const std::optional<pci::Address>& pci) {
auto tap_fd = OpenTapInterface(tap_name);
if (tap_fd->IsOpen()) {
- command_.AddParameter("--net=tap-fd=", tap_fd);
+ command_.AddParameter("--net=tap-fd=", tap_fd, MacCrosvmArgument(mac), PciCrosvmArgument(pci));
} else {
LOG(ERROR) << "Unable to connect to \"" << tap_name
<< "\": " << tap_fd->StrError();
@@ -115,16 +130,6 @@ SharedFD CrosvmBuilder::AddTap(const std::string& tap_name) {
return tap_fd;
}
-SharedFD CrosvmBuilder::AddTap(const std::string& tap_name, const std::string& mac) {
- auto tap_fd = OpenTapInterface(tap_name);
- if (tap_fd->IsOpen()) {
- command_.AddParameter("--net=tap-fd=", tap_fd, ",mac=\"", mac, "\"");
- } else {
- LOG(ERROR) << "Unable to connect to \"" << tap_name
- << "\": " << tap_fd->StrError();
- }
- return tap_fd;
-}
#endif
int CrosvmBuilder::HvcNum() { return hvc_num_; }