diff options
author | Rahul Yadav <yadavrah@google.com> | 2020-06-30 19:05:17 +0100 |
---|---|---|
committer | Rahul Yadav <yadavrah@google.com> | 2020-07-01 18:09:32 +0000 |
commit | 35576fd8227c57fb76ed2052fcca447bf342e5cd (patch) | |
tree | 746089644feeec7bc81f913f4b151c8b139f54fd | |
parent | 9e44111074b2c5ba4e974f7c6f768f8c32dcbe26 (diff) | |
download | cuttlefish-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.cc | 9 | ||||
-rw-r--r-- | host/libs/config/cuttlefish_config.cpp | 11 | ||||
-rw-r--r-- | host/libs/config/cuttlefish_config.h | 3 |
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(); |