diff --git a/src/core/net/dhcp6_client.cpp b/src/core/net/dhcp6_client.cpp index 448a599ae..a3b3f05c0 100644 --- a/src/core/net/dhcp6_client.cpp +++ b/src/core/net/dhcp6_client.cpp @@ -345,7 +345,8 @@ otError Dhcp6Client::AppendIaNa(Message &aMessage, uint16_t aRloc16) for (uint8_t i = 0; i < OT_ARRAY_LENGTH(mIdentityAssociations); ++i) { - if (mIdentityAssociations[i].mStatus == kIaStatusSolicitReplied) + if (mIdentityAssociations[i].mStatus == kIaStatusInvalid || + mIdentityAssociations[i].mStatus == kIaStatusSolicitReplied) { continue; } @@ -381,7 +382,8 @@ otError Dhcp6Client::AppendIaAddress(Message &aMessage, uint16_t aRloc16) for (uint8_t i = 0; i < OT_ARRAY_LENGTH(mIdentityAssociations); ++i) { - if ((mIdentityAssociations[i].mStatus != kIaStatusSolicitReplied) && + if ((mIdentityAssociations[i].mStatus == kIaStatusSolicit || + mIdentityAssociations[i].mStatus == kIaStatusSoliciting) && (mIdentityAssociations[i].mPrefixAgentRloc == aRloc16)) { option.SetAddress(mIdentityAssociations[i].mNetifAddress.mAddress);