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;