Add flag for enabling Rust aconfigd_system

Also, switch aflags to read from aconfigd_system when the flag is enabled.

Bug: 378079539
Test: m
Change-Id: Ibdb324699efa9ed1ca9711935ecddf2c4102b024
Merged-In: Ibdb324699efa9ed1ca9711935ecddf2c4102b024
diff --git a/tools/aconfig/aconfig_flags/flags.aconfig b/tools/aconfig/aconfig_flags/flags.aconfig
index 0a004ca..b66d282 100644
--- a/tools/aconfig/aconfig_flags/flags.aconfig
+++ b/tools/aconfig/aconfig_flags/flags.aconfig
@@ -14,3 +14,11 @@
   bug: "369808805"
   description: "When enabled, launch aconfigd from config infra module."
 }
+
+flag {
+  name: "enable_system_aconfigd_rust"
+  namespace: "core_experiments_team_internal"
+  bug: "378079539"
+  description: "When enabled, the aconfigd cc_binary target becomes a no-op, and the rust_binary aconfigd-system target starts up."
+  is_fixed_read_only: true
+}
diff --git a/tools/aconfig/aconfig_flags/src/lib.rs b/tools/aconfig/aconfig_flags/src/lib.rs
index 2e89127..b413c62 100644
--- a/tools/aconfig/aconfig_flags/src/lib.rs
+++ b/tools/aconfig/aconfig_flags/src/lib.rs
@@ -39,6 +39,11 @@
     pub fn enable_aconfigd_from_mainline() -> bool {
         aconfig_flags_rust::enable_only_new_storage()
     }
+
+    /// Returns the value for the enable_system_aconfigd_rust flag.
+    pub fn enable_system_aconfigd_rust() -> bool {
+        aconfig_flags_rust::enable_system_aconfigd_rust()
+    }
 }
 
 /// Module used when building with cargo
@@ -55,4 +60,10 @@
         // Used only to enable typechecking and testing with cargo
         true
     }
+
+    /// Returns a placeholder value for the enable_system_aconfigd_rust flag.
+    pub fn enable_system_aconfigd_rust() -> bool {
+        // Used only to enable typechecking and testing with cargo
+        true
+    }
 }
diff --git a/tools/aconfig/aflags/src/aconfig_storage_source.rs b/tools/aconfig/aflags/src/aconfig_storage_source.rs
index 68edf7d..3f593fe 100644
--- a/tools/aconfig/aflags/src/aconfig_storage_source.rs
+++ b/tools/aconfig/aflags/src/aconfig_storage_source.rs
@@ -93,7 +93,12 @@
         special_fields: SpecialFields::new(),
     };
 
-    let mut socket = UnixStream::connect("/dev/socket/aconfigd")?;
+    let socket_name = if aconfig_flags::auto_generated::enable_system_aconfigd_rust() {
+        "/dev/socket/aconfigd_system"
+    } else {
+        "/dev/socket/aconfigd"
+    };
+    let mut socket = UnixStream::connect(socket_name)?;
 
     let message_buffer = messages.write_to_bytes()?;
     let mut message_length_buffer: [u8; 4] = [0; 4];