diff --git a/configure.ac b/configure.ac index 0ebbcf6f6..83d0cca21 100644 --- a/configure.ac +++ b/configure.ac @@ -568,6 +568,38 @@ AC_SUBST(OPENTHREAD_ENABLE_BORDER_AGENT_PROXY) AM_CONDITIONAL([OPENTHREAD_ENABLE_BORDER_AGENT_PROXY], [test "${enable_border_agent_proxy}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_BORDER_AGENT_PROXY],[${OPENTHREAD_ENABLE_BORDER_AGENT_PROXY}],[Define to 1 to enable the border agent proxy feature.]) +# +# Thread Network Diagnostic for MTD +# + +AC_ARG_ENABLE(mtd_network_diagnostic, + [AS_HELP_STRING([--enable-mtd-network-diagnostic],[Enable network diagnostic support for MTD @<:@default=no@:>@.])], + [ + case "${enableval}" in + + no|yes) + enable_mtd_network_diagnostic=${enableval} + ;; + + *) + AC_MSG_ERROR([Invalid value ${enable_mtd_network_diagnostic} for --enable-mtd-network-diagnostic]) + ;; + esac + ], + [enable_mtd_network_diagnostic=no]) + +if test "$enable_mtd_network_diagnostic" = "yes"; then + OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC=1 +else + OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC=0 +fi + +AC_MSG_CHECKING([whether to enable the network diagnostic for MTD]) +AC_MSG_RESULT(${enable_mtd_network_diagnostic}) +AC_SUBST(OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC) +AM_CONDITIONAL([OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC], [test "${enable_mtd_network_diagnostic}" = "yes"]) +AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC],[${OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC}],[Define to 1 to enable network diagnostic for MTD.]) + # # Thread Commissioner # @@ -1303,6 +1335,7 @@ AC_MSG_NOTICE([ OpenThread NCP-MTD support : ${enable_ncp_app_mtd} OpenThread NCP-FTD support : ${enable_ncp_app_ftd} OpenThread NCP-BUS Configuration : ${with_ncp_bus} + OpenThread MTD Network Diagnostic support : ${enable_mtd_network_diagnostic} OpenThread builtin mbedtls support : ${enable_builtin_mbedtls} OpenThread Border Agent Proxy support : ${enable_border_agent_proxy} OpenThread Commissioner support : ${enable_commissioner} diff --git a/examples/Makefile-posix b/examples/Makefile-posix index d4c5a598e..9483f4f4d 100644 --- a/examples/Makefile-posix +++ b/examples/Makefile-posix @@ -81,26 +81,27 @@ TargetTuple = $(shell ${AbsTopSourceDir}/third_party/nlbuild # If the user has asserted COVERAGE, alter the configuration options # accordingly. -configure_OPTIONS = \ - --enable-cli-app=all \ - --enable-ncp-app=all \ - --with-ncp-bus=uart \ - --enable-diag \ - --enable-default-logging \ - --enable-raw-link-api=yes \ - --with-examples=posix \ - --with-platform-info=POSIX \ - --enable-application-coap \ - --enable-border-agent-proxy \ - --enable-cert-log \ - --enable-commissioner \ - --enable-dhcp6-client \ - --enable-dhcp6-server \ - --enable-dns-client \ - --enable-jam-detection \ - --enable-joiner \ - --enable-legacy \ - --enable-mac-whitelist \ +configure_OPTIONS = \ + --enable-cli-app=all \ + --enable-ncp-app=all \ + --with-ncp-bus=uart \ + --enable-diag \ + --enable-default-logging \ + --enable-raw-link-api=yes \ + --with-examples=posix \ + --with-platform-info=POSIX \ + --enable-application-coap \ + --enable-border-agent-proxy \ + --enable-cert-log \ + --enable-commissioner \ + --enable-dhcp6-client \ + --enable-dhcp6-server \ + --enable-dns-client \ + --enable-jam-detection \ + --enable-joiner \ + --enable-legacy \ + --enable-mac-whitelist \ + --enable-mtd-network-diagnostic \ $(NULL) ifeq ($(COVERAGE),1) diff --git a/src/cli/cli.cpp b/src/cli/cli.cpp index 4b2796dc9..c74650331 100644 --- a/src/cli/cli.cpp +++ b/src/cli/cli.cpp @@ -151,7 +151,9 @@ const struct Command Interpreter::sCommands[] = { "masterkey", &Interpreter::ProcessMasterKey }, { "mode", &Interpreter::ProcessMode }, { "netdataregister", &Interpreter::ProcessNetworkDataRegister }, +#if OPENTHREAD_FTD || OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC { "networkdiagnostic", &Interpreter::ProcessNetworkDiagnostic }, +#endif // OPENTHREAD_FTD || OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC #if OPENTHREAD_FTD { "networkidtimeout", &Interpreter::ProcessNetworkIdTimeout }, #endif @@ -238,7 +240,9 @@ Interpreter::Interpreter(otInstance *aInstance): #else memset(mSlaacAddresses, 0, sizeof(mSlaacAddresses)); otSetStateChangedCallback(mInstance, &Interpreter::s_HandleNetifStateChanged, this); +#if OPENTHREAD_FTD || OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC otThreadSetReceiveDiagnosticGetCallback(mInstance, &Interpreter::s_HandleDiagnosticGetResponse, this); +#endif mIcmpHandler.mReceiveCallback = Interpreter::s_HandleIcmpReceive; mIcmpHandler.mContext = this; @@ -3030,6 +3034,7 @@ exit: return; } +#if OPENTHREAD_FTD || OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC void Interpreter::ProcessNetworkDiagnostic(int argc, char *argv[]) { ThreadError error = kThreadError_None; @@ -3068,6 +3073,7 @@ void Interpreter::ProcessNetworkDiagnostic(int argc, char *argv[]) exit: AppendResult(error); } +#endif // OPENTHREAD_FTD || OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC #ifndef OTDLL void Interpreter::s_HandleDiagnosticGetResponse(otMessage *aMessage, const otMessageInfo *aMessageInfo, diff --git a/src/cli/cli.hpp b/src/cli/cli.hpp index c1fd1fb02..454cd71ec 100644 --- a/src/cli/cli.hpp +++ b/src/cli/cli.hpp @@ -226,7 +226,9 @@ private: void ProcessMasterKey(int argc, char *argv[]); void ProcessMode(int argc, char *argv[]); void ProcessNetworkDataRegister(int argc, char *argv[]); +#if OPENTHREAD_FTD || OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC void ProcessNetworkDiagnostic(int argc, char *argv[]); +#endif // OPENTHREAD_FTD || OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC #if OPENTHREAD_FTD void ProcessNetworkIdTimeout(int argc, char *argv[]); #endif diff --git a/src/core/api/thread_api.cpp b/src/core/api/thread_api.cpp index 206b9ace7..c5a3c9e99 100644 --- a/src/core/api/thread_api.cpp +++ b/src/core/api/thread_api.cpp @@ -434,6 +434,7 @@ const char *otGetVersionString(void) return sVersion; } +#if OPENTHREAD_FTD || OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC void otThreadSetReceiveDiagnosticGetCallback(otInstance *aInstance, otReceiveDiagnosticGetCallback aCallback, void *aCallbackContext) { @@ -457,6 +458,7 @@ ThreadError otThreadSendDiagnosticReset(otInstance *aInstance, const otIp6Addres aTlvTypes, aCount); } +#endif // OPENTHREAD_FTD || OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC ThreadError otThreadSetEnabled(otInstance *aInstance, bool aEnabled) { diff --git a/src/core/crypto/pbkdf2_cmac.h b/src/core/crypto/pbkdf2_cmac.h index 1d5581bc7..8e64c6e6c 100644 --- a/src/core/crypto/pbkdf2_cmac.h +++ b/src/core/crypto/pbkdf2_cmac.h @@ -59,7 +59,7 @@ extern "C" { void otPbkdf2Cmac( const uint8_t *aPassword, uint16_t aPasswordLen, const uint8_t *aSalt, uint16_t aSaltLen, - uint32_t aIterationCounter , uint16_t aKeyLen, + uint32_t aIterationCounter, uint16_t aKeyLen, uint8_t *aKey); #ifdef __cplusplus diff --git a/src/core/thread/network_diagnostic.cpp b/src/core/thread/network_diagnostic.cpp index 76b73c5e3..707c56259 100644 --- a/src/core/thread/network_diagnostic.cpp +++ b/src/core/thread/network_diagnostic.cpp @@ -58,6 +58,8 @@ using ot::Encoding::BigEndian::HostSwap16; +#if OPENTHREAD_FTD || OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC + namespace ot { namespace NetworkDiagnostic { @@ -642,3 +644,5 @@ exit: } // namespace NetworkDiagnostic } // namespace ot + +#endif // OPENTHREAD_FTD || OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC diff --git a/src/core/thread/thread_netif.cpp b/src/core/thread/thread_netif.cpp index 930dba857..cf0306b0f 100644 --- a/src/core/thread/thread_netif.cpp +++ b/src/core/thread/thread_netif.cpp @@ -82,7 +82,9 @@ ThreadNetif::ThreadNetif(Ip6::Ip6 &aIp6): mMleRouter(*this), mNetworkDataLocal(*this), mNetworkDataLeader(*this), +#if OPENTHREAD_FTD || OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC mNetworkDiagnostic(*this), +#endif #if OPENTHREAD_ENABLE_COMMISSIONER && OPENTHREAD_FTD mSecureCoapServer(*this, OPENTHREAD_CONFIG_JOINER_UDP_PORT), mCommissioner(*this), diff --git a/src/core/thread/thread_netif.hpp b/src/core/thread/thread_netif.hpp index 2d414076f..0a9f23097 100644 --- a/src/core/thread/thread_netif.hpp +++ b/src/core/thread/thread_netif.hpp @@ -161,6 +161,7 @@ public: */ virtual ThreadError RouteLookup(const Ip6::Address &aSource, const Ip6::Address &aDestination, uint8_t *aPrefixMatch); +#if OPENTHREAD_FTD || OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC /** * This method returns a reference to the network diagnostic object. * @@ -168,6 +169,7 @@ public: * */ NetworkDiagnostic::NetworkDiagnostic &GetNetworkDiagnostic(void) { return mNetworkDiagnostic; } +#endif // OPENTHREAD_FTD || OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC #if OPENTHREAD_ENABLE_DHCP6_CLIENT /** @@ -427,7 +429,9 @@ private: Mle::MleRouter mMleRouter; NetworkData::Local mNetworkDataLocal; NetworkData::Leader mNetworkDataLeader; +#if OPENTHREAD_FTD || OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC NetworkDiagnostic::NetworkDiagnostic mNetworkDiagnostic; +#endif // OPENTHREAD_FTD || OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC bool mIsUp; #if OPENTHREAD_ENABLE_COMMISSIONER && OPENTHREAD_FTD