diff --git a/examples/platform/linux/AppMain.cpp b/examples/platform/linux/AppMain.cpp index bb77b5a60c0477..f8fb1dd1fb8bcd 100644 --- a/examples/platform/linux/AppMain.cpp +++ b/examples/platform/linux/AppMain.cpp @@ -177,6 +177,24 @@ CHIP_ERROR InitCommissionableDataProvider(LinuxCommissionableDataProvider & prov // properly to the commissioner later, PASE will succeed. } + if (options.discriminator.HasValue()) + { + options.payload.discriminator = options.discriminator.Value(); + } + else + { + uint16_t defaultTestDiscriminator = 0; + chip::DeviceLayer::TestOnlyCommissionableDataProvider TestOnlyCommissionableDataProvider; + VerifyOrDie(TestOnlyCommissionableDataProvider.GetSetupDiscriminator(defaultTestDiscriminator) == CHIP_NO_ERROR); + + ChipLogError(Support, + "*** WARNING: Using temporary test discriminator %u due to --discriminator not " + "given on command line. This is temporary and will disappear. Please update your scripts " + "to explicitly configure discriminator. ***", + static_cast(defaultTestDiscriminator)); + options.payload.discriminator = defaultTestDiscriminator; + } + // Default to minimum PBKDF iterations uint32_t spake2pIterationCount = chip::Crypto::kSpake2p_Min_PBKDF_Iterations; if (options.spake2pIterations != 0) diff --git a/examples/platform/linux/Options.cpp b/examples/platform/linux/Options.cpp index 47322b73da2d4b..4f1f5348ca8ff6 100644 --- a/examples/platform/linux/Options.cpp +++ b/examples/platform/linux/Options.cpp @@ -239,7 +239,7 @@ bool HandleOption(const char * aProgram, OptionSet * aOptions, int aIdentifier, } else { - LinuxDeviceOptions::GetInstance().payload.discriminator = value; + LinuxDeviceOptions::GetInstance().discriminator.SetValue(value); } break; } diff --git a/examples/platform/linux/Options.h b/examples/platform/linux/Options.h index 1506fa53e61b81..c0c02b8f7fad3f 100644 --- a/examples/platform/linux/Options.h +++ b/examples/platform/linux/Options.h @@ -36,6 +36,7 @@ struct LinuxDeviceOptions { chip::SetupPayload payload; + chip::Optional discriminator; chip::Optional> spake2pVerifier; chip::Optional> spake2pSalt; uint32_t spake2pIterations = 0; // When not provided (0), will default elsewhere