aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRahul Yadav <yadavrah@google.com>2020-06-30 19:05:17 +0100
committerRahul Yadav <yadavrah@google.com>2020-07-01 18:09:32 +0000
commit35576fd8227c57fb76ed2052fcca447bf342e5cd (patch)
tree746089644feeec7bc81f913f4b151c8b139f54fd
parent9e44111074b2c5ba4e974f7c6f768f8c32dcbe26 (diff)
downloadcuttlefish-35576fd8227c57fb76ed2052fcca447bf342e5cd.tar.gz
Add use_random_flag to assemble cvd.
If true, the device will use a random serial instead of the default one. Test: launch_cvd -use_random_serial=true Bug: 159131860 Bug: 150684690 Change-Id: I25f28c53cfda4c181fc9d3d2737a4dd42b91ea96 Merged-In: Ia6cbaa27bbd623e914df32734ec87f6e9e960381
-rw-r--r--host/commands/assemble_cvd/flags.cc9
-rw-r--r--host/libs/config/cuttlefish_config.cpp11
-rw-r--r--host/libs/config/cuttlefish_config.h3
3 files changed, 22 insertions, 1 deletions
diff --git a/host/commands/assemble_cvd/flags.cc b/host/commands/assemble_cvd/flags.cc
index d57e87173..8562271aa 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 @@ DEFINE_int32(memory_mb, 2048,
"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 @@ vsoc::CuttlefishConfig InitializeCuttlefishConfiguration(
.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 cc9a000af..c11ed1660 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 @@ std::string ForCurrentInstance(const char* prefix) {
}
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 c99ecf186..e6a1e79e6 100644
--- a/host/libs/config/cuttlefish_config.h
+++ b/host/libs/config/cuttlefish_config.h
@@ -388,6 +388,9 @@ std::string GetGlobalConfigFileLink();
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();