From 3e4ed6cc98842a1b9e42f86d35868793cad7ff1d Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Wed, 7 Mar 2018 17:45:42 +0000 Subject: [PATCH] [meshcop] update Border Agent Locator TLV on keep alives (#2596) --- src/core/meshcop/leader.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/core/meshcop/leader.cpp b/src/core/meshcop/leader.cpp index beb86612b..fd2f4631f 100644 --- a/src/core/meshcop/leader.cpp +++ b/src/core/meshcop/leader.cpp @@ -201,6 +201,22 @@ void Leader::HandleKeepAlive(Coap::Header &aHeader, Message &aMessage, const Ip6 } else { + NetworkData::Leader & netdata = GetNetif().GetNetworkDataLeader(); + BorderAgentLocatorTlv *borderAgentLocator; + uint16_t rloc; + + borderAgentLocator = + static_cast(netdata.GetCommissioningDataSubTlv(Tlv::kBorderAgentLocator)); + assert(borderAgentLocator != NULL); + + rloc = HostSwap16(aMessageInfo.GetPeerAddr().mFields.m16[7]); + + if (borderAgentLocator->GetBorderAgentLocator() != rloc) + { + borderAgentLocator->SetBorderAgentLocator(HostSwap16(aMessageInfo.GetPeerAddr().mFields.m16[7])); + netdata.IncrementVersion(); + } + responseState = StateTlv::kAccept; mTimer.Start(TimerMilli::SecToMsec(kTimeoutLeaderPetition)); }