This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2652P: ZED processes Leave Request broadcast from parent without checking destination IEEE address

Part Number: CC2652P


In SDK 5.40, there is an issue(ZIGBEE-1515) was said fixed, but I don't think so.

In zigbee R22, the parent node will send nwk-leave-request-command to end-device when the parent node's children-list-table have no this end-device's information. And this nwk-leave-request-command's rejoin flag is enabled, and its have no IEEE address. 

  • Hi Aries,

    Here is our prior E2E thread

    The Zigbee PRO specification states in 3.6.1.10.3.1"If the device is a ZigBee Coordinator or if the message was sent to a broadcast address, the message shall be dropped and no further processing shall be performed."  ZDO_ProcessMgmtLeaveReq addresses this by now silently discarding any packets which were broadcast:

      if (inMsg->wasBroadcast)
      {
        // 3.6.1.10.1 R22 - silently discards leave frame if broadcast
        return;
      }

    Are you not observing this with your setup?  The other change made is that the end device will not stop polling if not the targeted node:

      if ( ZG_BUILD_ENDDEVICE_TYPE )
      {
        // Stop polling if not rejoining network and the Leave is destined for this device
        if ( (req.rejoin == FALSE) && (req.extAddr == NULL) )
        {
          // Stop polling and get ready to reset
          nwk_SetCurrentPollRateType(POLL_RATE_DISABLED,TRUE);
        }
      }

    Regards,
    Ryan

  • Is it meaning that if a end-device needs to be removed, trust-center should send MgmtLeaveReq command to its parent node. Now the broadcast sending is nolonger valid, the trust-center should remember every end-device's parents node?

  • I understand what you are implying and will ask the R&D Team to further interpret the Specification's intentions.    You could choose to discard broadcast Mgmt Leave Requests only for ZG_BUILD_ENDDEVICE_TYPE nodes but this may not be aligned with the Spec.

    Regards,
    Ryan

  • If a end-device's parent node is not trust-center, can turst-center kick out it by directly send any command to it? In the past trust-center should know end-device's parent node's short-address.

  • End devices should only accept Leave Requests from its direct parent.  So the trust center (typically ZC) will need to know the parent node's address in order to issue the Management Leave Request for the ZR to process and translate into a NWK Leave Request to the ZED.

    Regards,
    Ryan

  • It is too difficult for many others trust-center to know the parent node's address. In SDK 5.40, I have found that the end-devices can accept Management-Leave-Request relayed by its parent node.

      if ( ( ZG_BUILD_ENDDEVICE_TYPE ) && ( ZG_DEVICE_ENDDEVICE_TYPE ) )
      {
        // 3.6.1.10.3 R22 - silently discard leave frame not delivered by parent device
        if(inMsg->macSrcAddr != _NIB.nwkCoordAddress)
        {
          return;
        }
      }

    These code means that end-device only accept command relayed by its parent node, No matter who generate it.

  • I have confirmed with Software Development that this is the intended design in accordance with interpretation of the Zigbee Specification.  You can choose to break this spec requirement by removing the code or create a lookup table on the TC.

    Regards,
    Ryan

  • Following  Software Development's designing code, TC not needs lookup table. The "inMsg->macSrcAddr" means that the command is relayed by parent node. who generate this command is not important.

  • Can you please show me a sniffer log of the parent relaying the Management Leave Request from the ZC instead of translating it into a Leave Request for its child?

    Regards,
    Ryan

  • I have not run the new SDK on my device. But this code can prove it.

      if ( ( ZG_BUILD_ENDDEVICE_TYPE ) && ( ZG_DEVICE_ENDDEVICE_TYPE ) )
      {
        // 3.6.1.10.3 R22 - silently discard leave frame not delivered by parent device
        if(inMsg->macSrcAddr != _NIB.nwkCoordAddress)
        {
          return;
        }
      }

  • Thanks for clarifying.

    Regards,
    Ryan