diff options
Diffstat (limited to 'host/libs/vm_manager/crosvm_builder.cpp')
-rw-r--r-- | host/libs/vm_manager/crosvm_builder.cpp | 43 |
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_; } |