Merge "Update the default cbrsnetworkmonitor permissions granted to Cuttlefish." into rvc-d1-dev
diff --git a/host/commands/assemble_cvd/flags.cc b/host/commands/assemble_cvd/flags.cc
index d57e871..8562271 100644
--- a/host/commands/assemble_cvd/flags.cc
+++ b/host/commands/assemble_cvd/flags.cc
@@ -31,6 +31,7 @@
#define VBMETA_MAX_SIZE 65536ul
using vsoc::ForCurrentInstance;
+using vsoc::RandomSerialNumber;
using cvd::AssemblerExitCodes;
DEFINE_string(cache_image, "", "Location of the cache partition image.");
@@ -86,6 +87,8 @@
"Total amount of memory available for guest, MB.");
DEFINE_string(serial_number, ForCurrentInstance("CUTTLEFISHCVD"),
"Serial number to use for the device");
+DEFINE_bool(use_random_serial, false,
+ "Whether to use random serial for the device.");
DEFINE_string(assembly_dir,
cvd::StringFromEnv("HOME", ".") + "/cuttlefish_assembly",
"A directory to put generated files common between instances");
@@ -405,7 +408,11 @@
.ForInstance(num);
// Set this first so that calls to PerInstancePath below are correct
instance.set_instance_dir(FLAGS_instance_dir + "." + std::to_string(num));
- instance.set_serial_number(FLAGS_serial_number + std::to_string(num));
+ if(FLAGS_use_random_serial){
+ instance.set_serial_number(RandomSerialNumber("CFCVD" + std::to_string(num)));
+ } else {
+ instance.set_serial_number(FLAGS_serial_number + std::to_string(num));
+ }
instance.set_mobile_bridge_name(StrForInstance("cvd-mbr-", num));
instance.set_mobile_tap_name(StrForInstance("cvd-mtap-", num));
diff --git a/host/libs/config/cuttlefish_config.cpp b/host/libs/config/cuttlefish_config.cpp
index cc9a000..c11ed16 100644
--- a/host/libs/config/cuttlefish_config.cpp
+++ b/host/libs/config/cuttlefish_config.cpp
@@ -25,6 +25,7 @@
#include <iterator>
#include <sstream>
#include <string>
+#include <time.h>
#include <android-base/strings.h>
#include <glog/logging.h>
@@ -994,6 +995,16 @@
}
int ForCurrentInstance(int base) { return base + GetInstance() - 1; }
+std::string RandomSerialNumber(const std::string& prefix) {
+ const char hex_characters[] = "0123456789ABCDEF";
+ std::srand(time(0));
+ char str[10];
+ for(int i=0; i<10; i++){
+ str[i] = hex_characters[rand() % strlen(hex_characters)];
+ }
+ return prefix + str;
+}
+
std::string GetDefaultPerInstanceDir() {
std::ostringstream stream;
stream << std::getenv("HOME") << "/cuttlefish_runtime";
diff --git a/host/libs/config/cuttlefish_config.h b/host/libs/config/cuttlefish_config.h
index c99ecf1..e6a1e79 100644
--- a/host/libs/config/cuttlefish_config.h
+++ b/host/libs/config/cuttlefish_config.h
@@ -388,6 +388,9 @@
std::string ForCurrentInstance(const char* prefix);
int ForCurrentInstance(int base);
+// Returns a random serial number appended to a given prefix.
+std::string RandomSerialNumber(const std::string& prefix);
+
std::string GetDefaultPerInstanceDir();
std::string GetDefaultMempath();
int GetDefaultPerInstanceVsockCid();