[dhcp6-client] use NetifUnicastAddress in IdentityAssociation struct (#4308)

This commit is contained in:
Abtin Keshavarzian
2019-11-09 01:10:23 +01:00
committed by Jonathan Hui
parent 11d3d9bbf2
commit 8b4f3fff31
2 changed files with 14 additions and 12 deletions
+7 -6
View File
@@ -61,10 +61,11 @@ Dhcp6Client::Dhcp6Client(Instance &aInstance)
memset(mIdentityAssociations, 0, sizeof(mIdentityAssociations)); memset(mIdentityAssociations, 0, sizeof(mIdentityAssociations));
} }
bool Dhcp6Client::MatchNetifAddressWithPrefix(const otNetifAddress &aNetifAddress, const otIp6Prefix &aIp6Prefix) bool Dhcp6Client::MatchNetifAddressWithPrefix(const Ip6::NetifUnicastAddress &aNetifAddress,
const otIp6Prefix & aIp6Prefix)
{ {
return aIp6Prefix.mLength == aNetifAddress.mPrefixLength && return (aIp6Prefix.mLength == aNetifAddress.mPrefixLength) &&
otIp6PrefixMatch(&aNetifAddress.mAddress, &aIp6Prefix.mPrefix) >= aIp6Prefix.mLength; (aNetifAddress.GetAddress().PrefixMatch(aIp6Prefix.mPrefix) >= aIp6Prefix.mLength);
} }
void Dhcp6Client::UpdateAddresses(void) void Dhcp6Client::UpdateAddresses(void)
@@ -103,7 +104,7 @@ void Dhcp6Client::UpdateAddresses(void)
if (!found) if (!found)
{ {
Get<ThreadNetif>().RemoveUnicastAddress(*static_cast<Ip6::NetifUnicastAddress *>(&ia.mNetifAddress)); Get<ThreadNetif>().RemoveUnicastAddress(ia.mNetifAddress);
mIdentityAssociations[i].mStatus = kIaStatusInvalid; mIdentityAssociations[i].mStatus = kIaStatusInvalid;
} }
} }
@@ -584,7 +585,7 @@ otError Dhcp6Client::ProcessIaAddress(Message &aMessage, uint16_t aOffset)
continue; continue;
} }
if (otIp6PrefixMatch(&ia.mNetifAddress.mAddress, &option.GetAddress()) >= ia.mNetifAddress.mPrefixLength) if (ia.mNetifAddress.GetAddress().PrefixMatch(option.GetAddress()) >= ia.mNetifAddress.mPrefixLength)
{ {
mIdentityAssociations[i].mNetifAddress.mAddress = option.GetAddress(); mIdentityAssociations[i].mNetifAddress.mAddress = option.GetAddress();
mIdentityAssociations[i].mPreferredLifetime = option.GetPreferredLifetime(); mIdentityAssociations[i].mPreferredLifetime = option.GetPreferredLifetime();
@@ -592,7 +593,7 @@ otError Dhcp6Client::ProcessIaAddress(Message &aMessage, uint16_t aOffset)
mIdentityAssociations[i].mNetifAddress.mPreferred = option.GetPreferredLifetime() != 0; mIdentityAssociations[i].mNetifAddress.mPreferred = option.GetPreferredLifetime() != 0;
mIdentityAssociations[i].mNetifAddress.mValid = option.GetValidLifetime() != 0; mIdentityAssociations[i].mNetifAddress.mValid = option.GetValidLifetime() != 0;
mIdentityAssociations[i].mStatus = kIaStatusSolicitReplied; mIdentityAssociations[i].mStatus = kIaStatusSolicitReplied;
Get<ThreadNetif>().AddUnicastAddress(*static_cast<Ip6::NetifUnicastAddress *>(&ia.mNetifAddress)); Get<ThreadNetif>().AddUnicastAddress(ia.mNetifAddress);
break; break;
} }
} }
+7 -6
View File
@@ -43,6 +43,7 @@
#include "mac/mac.hpp" #include "mac/mac.hpp"
#include "mac/mac_types.hpp" #include "mac/mac_types.hpp"
#include "net/dhcp6.hpp" #include "net/dhcp6.hpp"
#include "net/netif.hpp"
#include "net/udp6.hpp" #include "net/udp6.hpp"
namespace ot { namespace ot {
@@ -87,11 +88,11 @@ enum IaStatus
*/ */
struct IdentityAssociation struct IdentityAssociation
{ {
otNetifAddress mNetifAddress; ///< the NetifAddress Ip6::NetifUnicastAddress mNetifAddress; ///< the NetifAddress
uint32_t mPreferredLifetime; ///< The preferred lifetime. uint32_t mPreferredLifetime; ///< The preferred lifetime.
uint32_t mValidLifetime; ///< The valid lifetime. uint32_t mValidLifetime; ///< The valid lifetime.
uint16_t mPrefixAgentRloc; ///< Rloc of Prefix Agent uint16_t mPrefixAgentRloc; ///< Rloc of Prefix Agent
uint8_t mStatus; ///< Status of IdentityAssociation uint8_t mStatus; ///< Status of IdentityAssociation
}; };
/** /**
@@ -120,7 +121,7 @@ private:
void Start(void); void Start(void);
void Stop(void); void Stop(void);
static bool MatchNetifAddressWithPrefix(const otNetifAddress &aNetifAddress, const otIp6Prefix &aIp6Prefix); static bool MatchNetifAddressWithPrefix(const Ip6::NetifUnicastAddress &aAddress, const otIp6Prefix &aIp6Prefix);
otError Solicit(uint16_t aRloc16); otError Solicit(uint16_t aRloc16);