diff options
author | jinran-google <jinran@google.com> | 2022-06-10 12:00:16 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-09 21:00:16 -0700 |
commit | 18d9fe01ca1505b944e413e99f747151f9ea677e (patch) | |
tree | 68306749b3ea5639263a25aa190962f36ed92c7e /src/ncp | |
parent | 9cfb91e73fe50886f50e63e8271474cf37d993f1 (diff) | |
download | ot-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.cpp | 13 | ||||
-rw-r--r-- | src/ncp/ncp_openthread.hpp | 10 |
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 |