Allocate a virtio bridge in the host for wifi.
Test: Apply kernel change, crun ..., enable wifi.
Bug: 78245952
Change-Id: If3b9ddf5d4753573a852a69e0bb08f23769f2025
Merged-In: If3b9ddf5d4753573a852a69e0bb08f23769f2025
(cherry picked from commit 975175ab791a6dc040e07e9a54f07017f54b923e)
diff --git a/host/commands/launch/main.cc b/host/commands/launch/main.cc
index 7e45b47..d72280e 100644
--- a/host/commands/launch/main.cc
+++ b/host/commands/launch/main.cc
@@ -148,6 +148,8 @@
std::string g_default_wifi_interface{GetPerInstanceDefault("cvd-wifi-")};
DEFINE_string(wifi_interface, g_default_wifi_interface.c_str(),
"Network interface to use for wifi");
+DEFINE_string(wifi_tap_name, GetPerInstanceDefault("awifi"),
+ "The name of the tap interface to use for wifi");
// TODO(b/72969289) This should be generated
DEFINE_string(dtb, DefaultHostArtifactsPath("config/cuttlefish.dtb"),
"Path to the cuttlefish.dtb file");
@@ -536,6 +538,9 @@
config->set_mobile_bridge_name(FLAGS_mobile_interface);
config->set_mobile_tap_name(FLAGS_mobile_tap_name);
+ config->set_wifi_bridge_name(FLAGS_wifi_interface);
+ config->set_wifi_tap_name(FLAGS_wifi_tap_name);
+
config->set_wifi_guest_mac_addr(FLAGS_guest_mac_address);
config->set_wifi_host_mac_addr(FLAGS_host_mac_address);
diff --git a/host/libs/config/cuttlefish_config.cpp b/host/libs/config/cuttlefish_config.cpp
index ea0d5db..178ff0f 100644
--- a/host/libs/config/cuttlefish_config.cpp
+++ b/host/libs/config/cuttlefish_config.cpp
@@ -99,6 +99,8 @@
const char* kMobileBridgeName = "mobile_bridge_name";
const char* kMobileTapName = "mobile_tap_name";
+const char* kWifiBridgeName = "wifi_bridge_name";
+const char* kWifiTapName = "wifi_tap_name";
const char* kWifiGuestMacAddr = "wifi_guest_mac_addr";
const char* kWifiHostMacAddr = "wifi_host_mac_addr";
const char* kEntropySource = "entropy_source";
@@ -295,6 +297,14 @@
(*dictionary_)[kMobileBridgeName] = mobile_bridge_name;
}
+std::string CuttlefishConfig::wifi_bridge_name() const {
+ return (*dictionary_)[kWifiBridgeName].asString();
+}
+void CuttlefishConfig::set_wifi_bridge_name(
+ const std::string& wifi_bridge_name) {
+ (*dictionary_)[kWifiBridgeName] = wifi_bridge_name;
+}
+
std::string CuttlefishConfig::wifi_guest_mac_addr() const {
return (*dictionary_)[kWifiGuestMacAddr].asString();
}
@@ -318,6 +328,13 @@
(*dictionary_)[kMobileTapName] = mobile_tap_name;
}
+std::string CuttlefishConfig::wifi_tap_name() const {
+ return (*dictionary_)[kWifiTapName].asString();
+}
+void CuttlefishConfig::set_wifi_tap_name(const std::string& wifi_tap_name) {
+ (*dictionary_)[kWifiTapName] = wifi_tap_name;
+}
+
std::string CuttlefishConfig::entropy_source() const {
return (*dictionary_)[kEntropySource].asString();
}
diff --git a/host/libs/config/cuttlefish_config.h b/host/libs/config/cuttlefish_config.h
index 9c1f53f..4451653 100644
--- a/host/libs/config/cuttlefish_config.h
+++ b/host/libs/config/cuttlefish_config.h
@@ -136,6 +136,12 @@
std::string mobile_tap_name() const;
void set_mobile_tap_name(const std::string& mobile_tap_name);
+ std::string wifi_bridge_name() const;
+ void set_wifi_bridge_name(const std::string& wifi_bridge_name);
+
+ std::string wifi_tap_name() const;
+ void set_wifi_tap_name(const std::string& wifi_tap_name);
+
std::string wifi_guest_mac_addr() const;
void set_wifi_guest_mac_addr(const std::string& wifi_guest_mac_addr);
diff --git a/host/libs/vm_manager/libvirt_manager.cpp b/host/libs/vm_manager/libvirt_manager.cpp
index a1c830d..bebe12d 100644
--- a/host/libs/vm_manager/libvirt_manager.cpp
+++ b/host/libs/vm_manager/libvirt_manager.cpp
@@ -316,6 +316,8 @@
ConfigureNIC(devices, config->mobile_tap_name(), config->mobile_bridge_name(),
vsoc::GetInstance(), 1);
+ ConfigureNIC(devices, config->wifi_tap_name(), config->wifi_bridge_name(),
+ vsoc::GetInstance(), 2);
ConfigureHWRNG(devices, config->entropy_source());
xmlChar* tgt;