aboutsummaryrefslogtreecommitdiff
path: root/src/ncp
diff options
context:
space:
mode:
authorjinran-google <jinran@google.com>2022-06-10 12:00:16 +0800
committerGitHub <noreply@github.com>2022-06-09 21:00:16 -0700
commit18d9fe01ca1505b944e413e99f747151f9ea677e (patch)
tree68306749b3ea5639263a25aa190962f36ed92c7e /src/ncp
parent9cfb91e73fe50886f50e63e8271474cf37d993f1 (diff)
downloadot-br-posix-18d9fe01ca1505b944e413e99f747151f9ea677e.tar.gz
[agent] add command-line arg to disable auto attach (#1402)
Diffstat (limited to 'src/ncp')
-rw-r--r--src/ncp/ncp_openthread.cpp13
-rw-r--r--src/ncp/ncp_openthread.hpp10
2 files changed, 12 insertions, 11 deletions
diff --git a/src/ncp/ncp_openthread.cpp b/src/ncp/ncp_openthread.cpp
index 337b31c0..8f908a87 100644
--- a/src/ncp/ncp_openthread.cpp
+++ b/src/ncp/ncp_openthread.cpp
@@ -64,8 +64,10 @@ static const uint16_t kThreadVersion13 = 4; ///< Thread Version 1.3
ControllerOpenThread::ControllerOpenThread(const char * aInterfaceName,
const std::vector<const char *> &aRadioUrls,
const char * aBackboneInterfaceName,
- bool aDryRun)
+ bool aDryRun,
+ bool aEnableAutoAttach)
: mInstance(nullptr)
+ , mEnableAutoAttach(aEnableAutoAttach)
{
VerifyOrDie(aRadioUrls.size() <= OT_PLATFORM_CONFIG_MAX_RADIO_URLS, "Too many Radio URLs!");
@@ -242,15 +244,12 @@ void ControllerOpenThread::Process(const MainloopContext &aMainloop)
bool ControllerOpenThread::IsAutoAttachEnabled(void)
{
- const char *val = getenv("OTBR_NO_AUTO_ATTACH");
-
- // Auto Thread attaching is enabled if OTBR_NO_AUTO_ATTACH is unset, empty or "0"
- return (val == nullptr || !strcmp(val, "") || !strcmp(val, "0"));
+ return mEnableAutoAttach;
}
void ControllerOpenThread::DisableAutoAttach(void)
{
- setenv("OTBR_NO_AUTO_ATTACH", "1", 1);
+ mEnableAutoAttach = false;
}
void ControllerOpenThread::PostTimerTask(Milliseconds aDelay, TaskRunner::Task<void> aTask)
@@ -280,7 +279,7 @@ void ControllerOpenThread::Reset(void)
{
handler();
}
- unsetenv("OTBR_NO_AUTO_ATTACH");
+ mEnableAutoAttach = true;
}
const char *ControllerOpenThread::GetThreadVersion(void)
diff --git a/src/ncp/ncp_openthread.hpp b/src/ncp/ncp_openthread.hpp
index 5b9f712e..b21ee7a2 100644
--- a/src/ncp/ncp_openthread.hpp
+++ b/src/ncp/ncp_openthread.hpp
@@ -68,12 +68,14 @@ public:
* @param[in] aRadioUrls The radio URLs (can be IEEE802.15.4 or TREL radio).
* @param[in] aBackboneInterfaceName The Backbone network interface name.
* @param[in] aDryRun TRUE to indicate dry-run mode. FALSE otherwise.
+ * @param[in] aEnableAutoAttach Whether or not to automatically attach to the saved network.
*
*/
ControllerOpenThread(const char * aInterfaceName,
const std::vector<const char *> &aRadioUrls,
const char * aBackboneInterfaceName,
- bool aDryRun);
+ bool aDryRun,
+ bool aEnableAutoAttach);
/**
* This method initialize the NCP controller.
@@ -185,9 +187,8 @@ private:
void HandleBackboneRouterNdProxyEvent(otBackboneRouterNdProxyEvent aEvent, const otIp6Address *aAddress);
#endif
- static bool IsAutoAttachEnabled(void);
-
- static void DisableAutoAttach(void);
+ bool IsAutoAttachEnabled(void);
+ void DisableAutoAttach(void);
static otLogLevel ConvertToOtLogLevel(otbrLogLevel aLevel);
@@ -198,6 +199,7 @@ private:
std::vector<std::function<void(void)>> mResetHandlers;
TaskRunner mTaskRunner;
std::vector<ThreadStateChangedCallback> mThreadStateChangedCallbacks;
+ bool mEnableAutoAttach = false;
};
} // namespace Ncp