Actions
Bug #2733
closedRebuild Adjacency LSA when face destroyed belongs to ACTIVE node
Start date:
04/06/2015
Due date:
% Done:
100%
Estimated time:
Description
Currently, when a face is destroyed, the code rebuilds an Adjacency LSA without checking the node's status:
adjacent->setFaceId(0);
adjacent->setStatus(Adjacent::STATUS_INACTIVE);
// A new adjacency LSA cannot be built until the neighbor is marked INACTIVE and
// has met the HELLO retry threshold
adjacent->setInterestTimedOutNo(m_confParam.getInterestRetryNumber());
m_nlsrLsdb.scheduleAdjLsaBuild();
Since FIB entries' expiration times are extended when a
router's Adjacency LSA is refreshed and the Adjacency LSA is rebuilt when the face is destroyed after each HELLO
Interest to the failed node, the Adjacency is never refreshed and the FIB entries expire.
Instead:
adjacent->setFaceId(0);
if (adjacent->getStatus() == Adjaceny::STATUS_ACTIVE) {
adjacent->setStatus(Adjacent::STATUS_INACTIVE);
// A new adjacency LSA cannot be built until the neighbor is marked INACTIVE and
// has met the HELLO retry threshold
adjacent->setInterestTimedOutNo(m_confParam.getInterestRetryNumber());
m_nlsrLsdb.scheduleAdjLsaBuild();
}
Actions