diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp index d091178bf..50cace62e 100644 --- a/src/core/thread/mle_router.cpp +++ b/src/core/thread/mle_router.cpp @@ -1687,6 +1687,8 @@ otError MleRouter::HandleParentRequest(const Message &aMessage, const Ip6::Messa LogMleMessage("Receive Parent Request", aMessageInfo.GetPeerAddr()); + VerifyOrExit(IsRouterRoleEnabled(), error = OT_ERROR_INVALID_STATE); + // A Router MUST NOT send an MLE Parent Response if: // 1. It has no available Child capacity (if Max Child Count minus @@ -2133,6 +2135,8 @@ otError MleRouter::HandleChildIdRequest(const Message &aMessage, const Ip6::Mess LogMleMessage("Receive Child ID Request", aMessageInfo.GetPeerAddr()); + VerifyOrExit(IsRouterRoleEnabled(), error = OT_ERROR_INVALID_STATE); + // only process message when operating as a child, router, or leader VerifyOrExit(mRole >= OT_DEVICE_ROLE_CHILD, error = OT_ERROR_INVALID_STATE);