Allocate a virtio bridge in the host for wifi.
Test: Apply kernel change, crun ..., enable wifi.
Bug: 78245952
Change-Id: If3b9ddf5d4753573a852a69e0bb08f23769f2025
diff --git a/host/commands/launch/main.cc b/host/commands/launch/main.cc
index d304d5e..c845c2e 100644
--- a/host/commands/launch/main.cc
+++ b/host/commands/launch/main.cc
@@ -144,6 +144,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");
@@ -595,6 +597,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 bd70a95..f73d841 100644
--- a/host/libs/config/cuttlefish_config.cpp
+++ b/host/libs/config/cuttlefish_config.cpp
@@ -97,6 +97,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";
@@ -292,6 +294,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();
}
@@ -315,6 +325,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 50e8616..7a4a7c8 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;