Add network interface for wifi when running with qemu
Bug: 78245952
Test: run on gce
Change-Id: I9d38736a9de6e30d20970f48051e8d384da11b45
Merged-In: I9d38736a9de6e30d20970f48051e8d384da11b45
(cherry picked from commit 029dc0e6cd8006a3dfa5f3220cc3033aa71b318c)
diff --git a/host/commands/launch/main.cc b/host/commands/launch/main.cc
index 264c37b..3b85ff2 100644
--- a/host/commands/launch/main.cc
+++ b/host/commands/launch/main.cc
@@ -136,10 +136,13 @@
DEFINE_string(wifi_relay_binary,
vsoc::DefaultHostArtifactsPath("bin/wifi_relay"),
"Location of the wifi_relay binary.");
-std::string g_default_wifi_interface{GetPerInstanceDefault("cvd-wifi-")};
-DEFINE_string(wifi_interface, g_default_wifi_interface.c_str(),
+DEFINE_string(wifi_interface,
+ vsoc::HostSupportsQemuCli() ? GetPerInstanceDefault("cvd-wbr-")
+ : GetPerInstanceDefault("cvd-wifi-"),
"Network interface to use for wifi");
-DEFINE_string(wifi_tap_name, GetPerInstanceDefault("awifi"),
+DEFINE_string(wifi_tap_name,
+ vsoc::HostSupportsQemuCli() ? GetPerInstanceDefault("cvd-wtap-")
+ : GetPerInstanceDefault("awifi"),
"The name of the tap interface to use for wifi");
// TODO(b/72969289) This should be generated
DEFINE_string(dtb, vsoc::DefaultHostArtifactsPath("config/cuttlefish.dtb"),
diff --git a/host/libs/vm_manager/cf_qemu.sh b/host/libs/vm_manager/cf_qemu.sh
index ba45ffa..513f51c 100644
--- a/host/libs/vm_manager/cf_qemu.sh
+++ b/host/libs/vm_manager/cf_qemu.sh
@@ -28,6 +28,7 @@
default_uuid="699acfc4-c8c4-11e7-882b-5065f31dc1${CUTTLEFISH_INSTANCE}"
default_dir="${HOME}/runfiles"
default_mobile_tap_name="cvd-mtap-${CUTTLEFISH_INSTANCE}"
+default_wifi_tap_name="cvd-wtap-${CUTTLEFISH_INSTANCE}"
if [[ -z "${ivshmem_vector_count}" ]]; then
echo "The required ivshmem_vector_count environment variable is not set" >&2
@@ -54,26 +55,28 @@
-append "${kernel_args:-"loop.max_part=7 console=ttyS0 androidboot.console=ttyS1 androidboot.hardware=vsoc enforcing=0 audit=1 androidboot.selinux=permissive mac80211_hwsim.radios=0 security=selinux buildvariant=userdebug androidboot.serialno=CUTTLEFISHCVD01 androidboot.lcd_density=160"}"
-dtb "${dtb_path:-${HOME}/config/cuttlefish.dtb}"
-device "piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2"
- -device "virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x3"
+ -device "virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x4"
-drive "file=${system_image_path:-${HOME}/system.img},format=raw,if=none,id=drive-virtio-disk0,aio=threads"
- -device "virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1"
+ -device "virtio-blk-pci,scsi=off,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1"
-drive "file=${data_image_path:-${HOME}/userdata.img},format=raw,if=none,id=drive-virtio-disk1,aio=threads"
- -device "virtio-blk-pci,scsi=off,bus=pci.0,addr=0x5,drive=drive-virtio-disk1,id=virtio-disk1"
+ -device "virtio-blk-pci,scsi=off,bus=pci.0,addr=0x6,drive=drive-virtio-disk1,id=virtio-disk1"
-drive "file=${cache_image_path:-${HOME}/cache.img},format=raw,if=none,id=drive-virtio-disk2,aio=threads"
- -device "virtio-blk-pci,scsi=off,bus=pci.0,addr=0x6,drive=drive-virtio-disk2,id=virtio-disk2"
+ -device "virtio-blk-pci,scsi=off,bus=pci.0,addr=0x7,drive=drive-virtio-disk2,id=virtio-disk2"
-drive "file=${vendor_image_path:-${HOME}/vendor.img},format=raw,if=none,id=drive-virtio-disk3,aio=threads"
- -device "virtio-blk-pci,scsi=off,bus=pci.0,addr=0x7,drive=drive-virtio-disk3,id=virtio-disk3"
- -netdev "tap,id=hostnet0,ifname=${mobile_tap_name:-${default_mobile_tap_name}},script=no,downscript=no"
+ -device "virtio-blk-pci,scsi=off,bus=pci.0,addr=0x8,drive=drive-virtio-disk3,id=virtio-disk3"
+ -netdev "tap,id=hostnet0,ifname=${wifi_tap_name:-${default_wifi_tap_name}},script=no,downscript=no"
-device "virtio-net-pci,netdev=hostnet0,id=net0,bus=pci.0,addr=0x2"
+ -netdev "tap,id=hostnet1,ifname=${mobile_tap_name:-${default_mobile_tap_name}},script=no,downscript=no"
+ -device "virtio-net-pci,netdev=hostnet1,id=net1,bus=pci.0,addr=0x3"
-chardev "socket,id=charserial0,path=${kernel_log_socket_name:-${default_dir}/kernel-log}"
-device "isa-serial,chardev=charserial0,id=serial0"
-chardev "socket,id=charserial1,path=${console_path:-${default_dir}/console},server,nowait"
-device "isa-serial,chardev=charserial1,id=serial1"
-chardev "file,id=charchannel0,path=${logcat_path:-${default_dir}/logcat},append=on"
-device "virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=cf-logcat"
- -device "virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x8"
+ -device "virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x9"
-object "rng-random,id=objrng0,filename=/dev/urandom"
- -device "virtio-rng-pci,rng=objrng0,id=rng0,max-bytes=1024,period=2000,bus=pci.0,addr=0x9"
+ -device "virtio-rng-pci,rng=objrng0,id=rng0,max-bytes=1024,period=2000,bus=pci.0,addr=0xa"
-chardev "socket,path=${ivshmem_qemu_socket_path:-${default_dir}/ivshmem_socket_qemu},id=ivsocket"
-device "ivshmem-doorbell,chardev=ivsocket,vectors=${ivshmem_vector_count}"
-cpu host
diff --git a/host/libs/vm_manager/qemu_manager.cpp b/host/libs/vm_manager/qemu_manager.cpp
index a12bc61..6ee628b 100644
--- a/host/libs/vm_manager/qemu_manager.cpp
+++ b/host/libs/vm_manager/qemu_manager.cpp
@@ -74,6 +74,7 @@
qemu_envp.push_back("data_image_path=" + config->data_image_path());
qemu_envp.push_back("cache_image_path=" + config->cache_image_path());
qemu_envp.push_back("vendor_image_path=" + config->vendor_image_path());
+ qemu_envp.push_back("wifi_tap_name=" + config->wifi_tap_name());
qemu_envp.push_back("mobile_tap_name=" + config->mobile_tap_name());
qemu_envp.push_back("kernel_log_socket_name=" +
config->kernel_log_socket_name());