#include <OSPFNeighbor.h>
Definition at line 32 of file OSPFNeighbor.h.
Definition at line 37 of file OSPFNeighbor.h.
{ HelloReceived = 0, Start = 1, TwoWayReceived = 2, NegotiationDone = 3, ExchangeDone = 4, BadLinkStateRequest = 5, LoadingDone = 6, IsAdjacencyOK = 7, SequenceNumberMismatch = 8, OneWayReceived = 9, KillNeighbor = 10, InactivityTimer = 11, PollTimer = 12, LinkDown = 13, DDRetransmissionTimer = 14, UpdateRetransmissionTimer = 15, RequestRetransmissionTimer = 16 };
DownState | |
AttemptState | |
InitState | |
TwoWayState | |
ExchangeStartState | |
ExchangeState | |
LoadingState | |
FullState |
Definition at line 57 of file OSPFNeighbor.h.
{ DownState = 0, AttemptState = 1, InitState = 2, TwoWayState = 4, ExchangeStartState = 8, ExchangeState = 16, LoadingState = 32, FullState = 64 };
OSPF::Neighbor::Neighbor | ( | RouterID | neighbor = NullRouterID |
) |
Definition at line 29 of file OSPFNeighbor.cc.
: updateRetransmissionTimerActive(false), requestRetransmissionTimerActive(false), firstAdjacencyInited(false), ddSequenceNumber(0), neighborID(neighbor), neighborPriority(0), neighborIPAddress(OSPF::NullIPv4Address), neighborsDesignatedRouter(OSPF::NullDesignatedRouterID), neighborsBackupDesignatedRouter(OSPF::NullDesignatedRouterID), designatedRoutersSetUp(false), neighborsRouterDeadInterval(40), lastTransmittedDDPacket(NULL) { memset(&lastReceivedDDPacket, 0, sizeof(OSPF::Neighbor::DDPacketID)); // setting only I and M bits is invalid -> good initializer lastReceivedDDPacket.ddOptions.I_Init = true; lastReceivedDDPacket.ddOptions.M_More = true; inactivityTimer = new OSPFTimer; inactivityTimer->setTimerKind(NeighborInactivityTimer); inactivityTimer->setContextPointer(this); inactivityTimer->setName("OSPF::Neighbor::NeighborInactivityTimer"); pollTimer = new OSPFTimer; pollTimer->setTimerKind(NeighborPollTimer); pollTimer->setContextPointer(this); pollTimer->setName("OSPF::Neighbor::NeighborPollTimer"); ddRetransmissionTimer = new OSPFTimer; ddRetransmissionTimer->setTimerKind(NeighborDDRetransmissionTimer); ddRetransmissionTimer->setContextPointer(this); ddRetransmissionTimer->setName("OSPF::Neighbor::NeighborDDRetransmissionTimer"); updateRetransmissionTimer = new OSPFTimer; updateRetransmissionTimer->setTimerKind(NeighborUpdateRetransmissionTimer); updateRetransmissionTimer->setContextPointer(this); updateRetransmissionTimer->setName("OSPF::Neighbor::Neighbor::NeighborUpdateRetransmissionTimer"); requestRetransmissionTimer = new OSPFTimer; requestRetransmissionTimer->setTimerKind(NeighborRequestRetransmissionTimer); requestRetransmissionTimer->setContextPointer(this); requestRetransmissionTimer->setName("OSPF::Neighbor::NeighborRequestRetransmissionTimer"); state = new OSPF::NeighborStateDown; previousState = NULL; }
OSPF::Neighbor::~Neighbor | ( | void | ) | [virtual] |
Definition at line 71 of file OSPFNeighbor.cc.
{ Reset(); MessageHandler* messageHandler = parentInterface->GetArea()->GetRouter()->GetMessageHandler(); messageHandler->ClearTimer(inactivityTimer); messageHandler->ClearTimer(pollTimer); delete inactivityTimer; delete pollTimer; delete ddRetransmissionTimer; delete updateRetransmissionTimer; delete requestRetransmissionTimer; if (previousState != NULL) { delete previousState; } delete state; }
void OSPF::Neighbor::AddToRequestList | ( | OSPFLSAHeader * | lsaHeader | ) |
Definition at line 486 of file OSPFNeighbor.cc.
Referenced by OSPF::DatabaseDescriptionHandler::ProcessDDPacket().
{ linkStateRequestList.push_back(new OSPFLSAHeader(*lsaHeader)); }
void OSPF::Neighbor::AddToRetransmissionList | ( | OSPFLSA * | lsa | ) |
If the LSA is already on the retransmission list then it is replaced, else a copy of the LSA is added to the end of the retransmission list.
lsa | [in] The LSA to be added. |
Definition at line 393 of file OSPFNeighbor.cc.
{ std::list<OSPFLSA*>::iterator it; for (it = linkStateRetransmissionList.begin(); it != linkStateRetransmissionList.end(); it++) { if (((*it)->getHeader().getLinkStateID() == lsa->getHeader().getLinkStateID()) && ((*it)->getHeader().getAdvertisingRouter().getInt() == lsa->getHeader().getAdvertisingRouter().getInt())) { break; } } OSPFLSA* lsaCopy = NULL; switch (lsa->getHeader().getLsType()) { case RouterLSAType: lsaCopy = new OSPFRouterLSA(*(check_and_cast<OSPFRouterLSA*> (lsa))); break; case NetworkLSAType: lsaCopy = new OSPFNetworkLSA(*(check_and_cast<OSPFNetworkLSA*> (lsa))); break; case SummaryLSA_NetworksType: case SummaryLSA_ASBoundaryRoutersType: lsaCopy = new OSPFSummaryLSA(*(check_and_cast<OSPFSummaryLSA*> (lsa))); break; case ASExternalLSAType: lsaCopy = new OSPFASExternalLSA(*(check_and_cast<OSPFASExternalLSA*> (lsa))); break; default: ASSERT(false); // error break; } if (it != linkStateRetransmissionList.end()) { delete(*it); *it = static_cast<OSPFLSA*> (lsaCopy); } else { linkStateRetransmissionList.push_back(static_cast<OSPFLSA*> (lsaCopy)); } }
void OSPF::Neighbor::AddToTransmittedLSAList | ( | OSPF::LSAKeyType | lsaKey | ) |
Definition at line 550 of file OSPFNeighbor.cc.
Referenced by OSPF::Interface::FloodLSA().
{ TransmittedLSA transmit; transmit.lsaKey = lsaKey; transmit.age = 0; transmittedLSAs.push_back(transmit); }
void OSPF::Neighbor::AgeTransmittedLSAList | ( | void | ) |
Definition at line 572 of file OSPFNeighbor.cc.
{ std::list<TransmittedLSA>::iterator it = transmittedLSAs.begin(); while ((it != transmittedLSAs.end()) && (it->age == MIN_LS_ARRIVAL)) { transmittedLSAs.pop_front(); it = transmittedLSAs.begin(); } for (it = transmittedLSAs.begin(); it != transmittedLSAs.end(); it++) { it->age++; } }
void OSPF::Neighbor::ChangeState | ( | NeighborState * | newState, | |
NeighborState * | currentState | |||
) | [private] |
Definition at line 88 of file OSPFNeighbor.cc.
Referenced by OSPF::NeighborState::ChangeState().
{ if (previousState != NULL) { delete previousState; } state = newState; previousState = currentState; }
void OSPF::Neighbor::ClearRequestRetransmissionTimer | ( | void | ) |
Definition at line 543 of file OSPFNeighbor.cc.
Referenced by OSPF::NeighborStateLoading::ProcessEvent(), OSPF::NeighborStateExchange::ProcessEvent(), OSPF::DatabaseDescriptionHandler::ProcessPacket(), RemoveFromRequestList(), and Reset().
{ MessageHandler* messageHandler = parentInterface->GetArea()->GetRouter()->GetMessageHandler(); messageHandler->ClearTimer(requestRetransmissionTimer); requestRetransmissionTimerActive = false; }
void OSPF::Neighbor::ClearUpdateRetransmissionTimer | ( | void | ) |
Definition at line 479 of file OSPFNeighbor.cc.
Referenced by OSPF::LinkStateAcknowledgementHandler::ProcessPacket(), and Reset().
{ MessageHandler* messageHandler = parentInterface->GetArea()->GetRouter()->GetMessageHandler(); messageHandler->ClearTimer(updateRetransmissionTimer); updateRetransmissionTimerActive = false; }
void OSPF::Neighbor::CreateDatabaseSummary | ( | void | ) |
Definition at line 262 of file OSPFNeighbor.cc.
Referenced by OSPF::NeighborStateExchangeStart::ProcessEvent().
{ OSPF::Area* area = parentInterface->GetArea(); unsigned long routerLSACount = area->GetRouterLSACount(); /* Note: OSPF specification says: * "LSAs whose age is equal to MaxAge are instead added to the neighbor's * Link state retransmission list." * But this task has been already done during the aging of the database. (???) * So we'll skip this. */ for (unsigned long i = 0; i < routerLSACount; i++) { if (area->GetRouterLSA(i)->getHeader().getLsAge() < MAX_AGE) { OSPFLSAHeader* routerLSA = new OSPFLSAHeader(area->GetRouterLSA(i)->getHeader()); databaseSummaryList.push_back(routerLSA); } } unsigned long networkLSACount = area->GetNetworkLSACount(); for (unsigned long j = 0; j < networkLSACount; j++) { if (area->GetNetworkLSA(j)->getHeader().getLsAge() < MAX_AGE) { OSPFLSAHeader* networkLSA = new OSPFLSAHeader(area->GetNetworkLSA(j)->getHeader()); databaseSummaryList.push_back(networkLSA); } } unsigned long summaryLSACount = area->GetSummaryLSACount(); for (unsigned long k = 0; k < summaryLSACount; k++) { if (area->GetSummaryLSA(k)->getHeader().getLsAge() < MAX_AGE) { OSPFLSAHeader* summaryLSA = new OSPFLSAHeader(area->GetSummaryLSA(k)->getHeader()); databaseSummaryList.push_back(summaryLSA); } } if ((parentInterface->GetType() != OSPF::Interface::Virtual) && (area->GetExternalRoutingCapability())) { OSPF::Router* router = area->GetRouter(); unsigned long asExternalLSACount = router->GetASExternalLSACount(); for (unsigned long m = 0; m < asExternalLSACount; m++) { if (router->GetASExternalLSA(m)->getHeader().getLsAge() < MAX_AGE) { OSPFLSAHeader* asExternalLSA = new OSPFLSAHeader(router->GetASExternalLSA(m)->getHeader()); databaseSummaryList.push_back(asExternalLSA); } } } }
void OSPF::Neighbor::DeleteLastSentDDPacket | ( | void | ) |
Definition at line 726 of file OSPFNeighbor.cc.
Referenced by OSPF::NeighborStateLoading::ProcessEvent(), and OSPF::NeighborStateFull::ProcessEvent().
{ if (lastTransmittedDDPacket != NULL) { delete lastTransmittedDDPacket; lastTransmittedDDPacket = NULL; } }
bool OSPF::Neighbor::DesignatedRoutersAreSetUp | ( | void | ) | const [inline] |
Definition at line 187 of file OSPFNeighbor.h.
Referenced by OSPF::HelloHandler::ProcessPacket().
{ return designatedRoutersSetUp; }
OSPFLSAHeader * OSPF::Neighbor::FindOnRequestList | ( | OSPF::LSAKeyType | lsaKey | ) |
Definition at line 524 of file OSPFNeighbor.cc.
{ for (std::list<OSPFLSAHeader*>::iterator it = linkStateRequestList.begin(); it != linkStateRequestList.end(); it++) { if (((*it)->getLinkStateID() == lsaKey.linkStateID) && ((*it)->getAdvertisingRouter().getInt() == lsaKey.advertisingRouter)) { return (*it); } } return NULL; }
OSPFLSA * OSPF::Neighbor::FindOnRetransmissionList | ( | OSPF::LSAKeyType | lsaKey | ) |
Definition at line 460 of file OSPFNeighbor.cc.
Referenced by OSPF::LinkStateAcknowledgementHandler::ProcessPacket().
{ for (std::list<OSPFLSA*>::iterator it = linkStateRetransmissionList.begin(); it != linkStateRetransmissionList.end(); it++) { if (((*it)->getHeader().getLinkStateID() == lsaKey.linkStateID) && ((*it)->getHeader().getAdvertisingRouter().getInt() == lsaKey.advertisingRouter)) { return (*it); } } return NULL; }
IPv4Address OSPF::Neighbor::GetAddress | ( | void | ) | const [inline] |
Definition at line 159 of file OSPFNeighbor.h.
Referenced by OSPF::LinkStateUpdateHandler::AcknowledgeLSA(), OSPF::Interface::AddNeighbor(), OSPF::InterfaceState::CalculateDesignatedRouter(), OSPF::Area::CalculateNextHops(), OSPF::Area::OriginateRouterLSA(), OSPF::NeighborStateDown::ProcessEvent(), OSPF::InterfaceStateWaiting::ProcessEvent(), OSPF::InterfaceStatePointToPoint::ProcessEvent(), OSPF::InterfaceStateNotDesignatedRouter::ProcessEvent(), OSPF::InterfaceStateDesignatedRouter::ProcessEvent(), OSPF::InterfaceStateBackup::ProcessEvent(), OSPF::LinkStateUpdateHandler::ProcessPacket(), OSPF::LinkStateRequestHandler::ProcessPacket(), and OSPF::HelloHandler::ProcessPacket().
{ return neighborIPAddress; }
DesignatedRouterID OSPF::Neighbor::GetBackupDesignatedRouter | ( | void | ) | const [inline] |
Definition at line 163 of file OSPFNeighbor.h.
Referenced by OSPF::InterfaceState::CalculateDesignatedRouter(), and OSPF::HelloHandler::ProcessPacket().
{ return neighborsBackupDesignatedRouter; }
DatabaseExchangeRelationshipType OSPF::Neighbor::GetDatabaseExchangeRelationship | ( | void | ) | const [inline] |
Definition at line 174 of file OSPFNeighbor.h.
Referenced by OSPF::DatabaseDescriptionHandler::ProcessDDPacket(), and OSPF::DatabaseDescriptionHandler::ProcessPacket().
{ return databaseExchangeRelationship; }
unsigned long OSPF::Neighbor::GetDatabaseSummaryListCount | ( | void | ) | const [inline] |
Definition at line 189 of file OSPFNeighbor.h.
Referenced by OSPF::DatabaseDescriptionHandler::ProcessDDPacket().
{ return databaseSummaryList.size(); }
OSPFTimer* OSPF::Neighbor::GetDDRetransmissionTimer | ( | void | ) | [inline] |
Definition at line 182 of file OSPFNeighbor.h.
Referenced by OSPF::NeighborStateTwoWay::ProcessEvent(), OSPF::NeighborStateLoading::ProcessEvent(), OSPF::NeighborStateInit::ProcessEvent(), OSPF::NeighborStateFull::ProcessEvent(), OSPF::NeighborStateExchangeStart::ProcessEvent(), and OSPF::NeighborStateExchange::ProcessEvent().
{ return ddRetransmissionTimer; }
unsigned long OSPF::Neighbor::GetDDSequenceNumber | ( | void | ) | const [inline] |
Definition at line 167 of file OSPFNeighbor.h.
Referenced by OSPF::DatabaseDescriptionHandler::ProcessPacket().
{ return ddSequenceNumber; }
DesignatedRouterID OSPF::Neighbor::GetDesignatedRouter | ( | void | ) | const [inline] |
Definition at line 161 of file OSPFNeighbor.h.
Referenced by OSPF::InterfaceState::CalculateDesignatedRouter(), and OSPF::HelloHandler::ProcessPacket().
{ return neighborsDesignatedRouter; }
OSPFTimer* OSPF::Neighbor::GetInactivityTimer | ( | void | ) | [inline] |
Definition at line 180 of file OSPFNeighbor.h.
Referenced by OSPF::NeighborStateTwoWay::ProcessEvent(), OSPF::NeighborStateLoading::ProcessEvent(), OSPF::NeighborStateInit::ProcessEvent(), OSPF::NeighborStateFull::ProcessEvent(), OSPF::NeighborStateExchangeStart::ProcessEvent(), OSPF::NeighborStateExchange::ProcessEvent(), OSPF::NeighborStateDown::ProcessEvent(), and OSPF::NeighborStateAttempt::ProcessEvent().
{ return inactivityTimer; }
Interface* OSPF::Neighbor::GetInterface | ( | void | ) | [inline] |
Definition at line 177 of file OSPFNeighbor.h.
Referenced by OSPF::NeighborState::ChangeState(), OSPF::MessageHandler::HandleTimer(), OSPF::NeighborStateTwoWay::ProcessEvent(), OSPF::NeighborStateLoading::ProcessEvent(), OSPF::NeighborStateInit::ProcessEvent(), OSPF::NeighborStateFull::ProcessEvent(), OSPF::NeighborStateExchangeStart::ProcessEvent(), OSPF::NeighborStateExchange::ProcessEvent(), OSPF::NeighborStateDown::ProcessEvent(), and OSPF::NeighborStateAttempt::ProcessEvent().
{ return parentInterface; }
const Interface* OSPF::Neighbor::GetInterface | ( | void | ) | const [inline] |
Definition at line 178 of file OSPFNeighbor.h.
{ return parentInterface; }
DDPacketID OSPF::Neighbor::GetLastReceivedDDPacket | ( | void | ) | const [inline] |
Definition at line 171 of file OSPFNeighbor.h.
Referenced by OSPF::DatabaseDescriptionHandler::ProcessPacket().
{ return lastReceivedDDPacket; }
RouterID OSPF::Neighbor::GetNeighborID | ( | void | ) | const [inline] |
Definition at line 155 of file OSPFNeighbor.h.
Referenced by OSPF::Interface::AddNeighbor(), OSPF::InterfaceState::CalculateDesignatedRouter(), OSPF::Area::CalculateNextHops(), OSPF::Interface::FloodLSA(), OSPF::Area::OriginateNetworkLSA(), OSPF::Area::OriginateRouterLSA(), OSPF::MessageHandler::PrintEvent(), OSPF::HelloHandler::ProcessPacket(), and OSPF::DatabaseDescriptionHandler::ProcessPacket().
{ return neighborID; }
OSPFOptions OSPF::Neighbor::GetOptions | ( | void | ) | const [inline] |
Definition at line 169 of file OSPFNeighbor.h.
{ return neighborOptions; }
OSPFTimer* OSPF::Neighbor::GetPollTimer | ( | void | ) | [inline] |
Definition at line 181 of file OSPFNeighbor.h.
Referenced by OSPF::NeighborStateTwoWay::ProcessEvent(), OSPF::NeighborStateLoading::ProcessEvent(), OSPF::NeighborStateInit::ProcessEvent(), OSPF::NeighborStateFull::ProcessEvent(), OSPF::NeighborStateExchangeStart::ProcessEvent(), OSPF::NeighborStateExchange::ProcessEvent(), OSPF::NeighborStateDown::ProcessEvent(), and OSPF::NeighborStateAttempt::ProcessEvent().
{ return pollTimer; }
unsigned char OSPF::Neighbor::GetPriority | ( | void | ) | const [inline] |
Definition at line 157 of file OSPFNeighbor.h.
Referenced by OSPF::InterfaceState::CalculateDesignatedRouter(), OSPF::InterfaceStateWaiting::ProcessEvent(), OSPF::InterfaceStateNotDesignatedRouter::ProcessEvent(), OSPF::InterfaceStateDown::ProcessEvent(), and OSPF::HelloHandler::ProcessPacket().
{ return neighborPriority; }
short OSPF::Neighbor::GetRouterDeadInterval | ( | void | ) | const [inline] |
Definition at line 165 of file OSPFNeighbor.h.
Referenced by OSPF::NeighborStateTwoWay::ProcessEvent(), OSPF::NeighborStateLoading::ProcessEvent(), OSPF::NeighborStateInit::ProcessEvent(), OSPF::NeighborStateFull::ProcessEvent(), OSPF::NeighborStateExchangeStart::ProcessEvent(), OSPF::NeighborStateExchange::ProcessEvent(), OSPF::NeighborStateDown::ProcessEvent(), and OSPF::NeighborStateAttempt::ProcessEvent().
{ return neighborsRouterDeadInterval; }
OSPF::Neighbor::NeighborStateType OSPF::Neighbor::GetState | ( | void | ) | const |
Definition at line 145 of file OSPFNeighbor.cc.
Referenced by OSPF::InterfaceState::CalculateDesignatedRouter(), OSPF::Area::OriginateNetworkLSA(), OSPF::Area::OriginateRouterLSA(), OSPF::MessageHandler::PrintEvent(), OSPF::LinkStateUpdateHandler::ProcessPacket(), OSPF::LinkStateRequestHandler::ProcessPacket(), OSPF::LinkStateAcknowledgementHandler::ProcessPacket(), OSPF::HelloHandler::ProcessPacket(), OSPF::DatabaseDescriptionHandler::ProcessPacket(), and RemoveFromRequestList().
{ return state->GetState(); }
const char * OSPF::Neighbor::GetStateString | ( | NeighborStateType | stateType | ) | [static] |
Definition at line 150 of file OSPFNeighbor.cc.
Referenced by OSPF::MessageHandler::PrintEvent().
{ switch (stateType) { case DownState: return "Down"; case AttemptState: return "Attempt"; case InitState: return "Init"; case TwoWayState: return "TwoWay"; case ExchangeStartState: return "ExchangeStart"; case ExchangeState: return "Exchange"; case LoadingState: return "Loading"; case FullState: return "Full"; default: ASSERT(false); } return ""; }
unsigned long OSPF::Neighbor::GetUniqueULong | ( | void | ) |
Definition at line 139 of file OSPFNeighbor.cc.
Referenced by InitFirstAdjacency().
{ // FIXME!!! Should come from a global unique number generator module. return (ddSequenceNumberInitSeed++); }
OSPFTimer* OSPF::Neighbor::GetUpdateRetransmissionTimer | ( | void | ) | [inline] |
Definition at line 183 of file OSPFNeighbor.h.
{ return updateRetransmissionTimer; }
void OSPF::Neighbor::IncrementDDSequenceNumber | ( | void | ) | [inline] |
Definition at line 191 of file OSPFNeighbor.h.
Referenced by OSPF::DatabaseDescriptionHandler::ProcessDDPacket(), OSPF::NeighborStateTwoWay::ProcessEvent(), OSPF::NeighborStateLoading::ProcessEvent(), OSPF::NeighborStateInit::ProcessEvent(), OSPF::NeighborStateFull::ProcessEvent(), and OSPF::NeighborStateExchange::ProcessEvent().
{ ddSequenceNumber++; }
void OSPF::Neighbor::InitFirstAdjacency | ( | void | ) |
Definition at line 133 of file OSPFNeighbor.cc.
Referenced by OSPF::NeighborStateTwoWay::ProcessEvent(), and OSPF::NeighborStateInit::ProcessEvent().
{ ddSequenceNumber = GetUniqueULong(); firstAdjacencyInited = true; }
bool OSPF::Neighbor::IsFirstAdjacencyInited | ( | void | ) | const [inline] |
Definition at line 186 of file OSPFNeighbor.h.
Referenced by OSPF::NeighborStateTwoWay::ProcessEvent(), and OSPF::NeighborStateInit::ProcessEvent().
{ return firstAdjacencyInited; }
bool OSPF::Neighbor::IsLinkStateRequestListEmpty | ( | void | ) | const [inline] |
Definition at line 192 of file OSPFNeighbor.h.
Referenced by OSPF::NeighborStateExchange::ProcessEvent(), and OSPF::DatabaseDescriptionHandler::ProcessPacket().
{ return linkStateRequestList.empty(); }
bool OSPF::Neighbor::IsLinkStateRetransmissionListEmpty | ( | void | ) | const [inline] |
Definition at line 193 of file OSPFNeighbor.h.
Referenced by OSPF::LinkStateAcknowledgementHandler::ProcessPacket().
{ return linkStateRetransmissionList.empty(); }
bool OSPF::Neighbor::IsLSAOnRequestList | ( | OSPF::LSAKeyType | lsaKey | ) | const |
Definition at line 511 of file OSPFNeighbor.cc.
Referenced by OSPF::LinkStateUpdateHandler::ProcessPacket().
{ for (std::list<OSPFLSAHeader*>::const_iterator it = linkStateRequestList.begin(); it != linkStateRequestList.end(); it++) { const OSPFLSAHeader* lsaHeader = *it; if ((lsaHeader->getLinkStateID() == lsaKey.linkStateID) && (lsaHeader->getAdvertisingRouter().getInt() == lsaKey.advertisingRouter)) { return true; } } return false; }
bool OSPF::Neighbor::IsLSAOnRetransmissionList | ( | OSPF::LSAKeyType | lsaKey | ) | const |
Definition at line 447 of file OSPFNeighbor.cc.
Referenced by OSPF::LinkStateUpdateHandler::ProcessPacket().
{ for (std::list<OSPFLSA*>::const_iterator it = linkStateRetransmissionList.begin(); it != linkStateRetransmissionList.end(); it++) { const OSPFLSA* lsa = *it; if ((lsa->getHeader().getLinkStateID() == lsaKey.linkStateID) && (lsa->getHeader().getAdvertisingRouter().getInt() == lsaKey.advertisingRouter)) { return true; } } return false; }
bool OSPF::Neighbor::IsOnTransmittedLSAList | ( | OSPF::LSAKeyType | lsaKey | ) | const |
Definition at line 560 of file OSPFNeighbor.cc.
Referenced by OSPF::LinkStateUpdateHandler::ProcessPacket().
{ for (std::list<TransmittedLSA>::const_iterator it = transmittedLSAs.begin(); it != transmittedLSAs.end(); it++) { if ((it->lsaKey.linkStateID == lsaKey.linkStateID) && (it->lsaKey.advertisingRouter == lsaKey.advertisingRouter)) { return true; } } return false; }
bool OSPF::Neighbor::IsRequestRetransmissionTimerActive | ( | void | ) | const [inline] |
Definition at line 185 of file OSPFNeighbor.h.
Referenced by OSPF::DatabaseDescriptionHandler::ProcessPacket().
{ return requestRetransmissionTimerActive; }
bool OSPF::Neighbor::IsUpdateRetransmissionTimerActive | ( | void | ) | const [inline] |
Definition at line 184 of file OSPFNeighbor.h.
Referenced by OSPF::Interface::FloodLSA().
{ return updateRetransmissionTimerActive; }
bool OSPF::Neighbor::NeedAdjacency | ( | void | ) |
Definition at line 363 of file OSPFNeighbor.cc.
Referenced by OSPF::NeighborStateTwoWay::ProcessEvent(), OSPF::NeighborStateLoading::ProcessEvent(), OSPF::NeighborStateInit::ProcessEvent(), OSPF::NeighborStateFull::ProcessEvent(), OSPF::NeighborStateExchangeStart::ProcessEvent(), and OSPF::NeighborStateExchange::ProcessEvent().
{ OSPF::Interface::OSPFInterfaceType interfaceType = parentInterface->GetType(); OSPF::RouterID routerID = parentInterface->GetArea()->GetRouter()->GetRouterID(); OSPF::DesignatedRouterID dRouter = parentInterface->GetDesignatedRouter(); OSPF::DesignatedRouterID backupDRouter = parentInterface->GetBackupDesignatedRouter(); if ((interfaceType == OSPF::Interface::PointToPoint) || (interfaceType == OSPF::Interface::PointToMultiPoint) || (interfaceType == OSPF::Interface::Virtual) || (dRouter.routerID == routerID) || (backupDRouter.routerID == routerID) || ((neighborsDesignatedRouter.routerID == dRouter.routerID) || (!designatedRoutersSetUp && (neighborsDesignatedRouter.ipInterfaceAddress == dRouter.ipInterfaceAddress))) || ((neighborsBackupDesignatedRouter.routerID == backupDRouter.routerID) || (!designatedRoutersSetUp && (neighborsBackupDesignatedRouter.ipInterfaceAddress == backupDRouter.ipInterfaceAddress)))) { return true; } else { return false; } }
void OSPF::Neighbor::PopFirstLinkStateRequest | ( | void | ) | [inline] |
Definition at line 194 of file OSPFNeighbor.h.
{ linkStateRequestList.pop_front(); }
void OSPF::Neighbor::ProcessEvent | ( | NeighborEventType | event | ) |
Definition at line 97 of file OSPFNeighbor.cc.
Referenced by OSPF::MessageHandler::HandleTimer(), OSPF::DatabaseDescriptionHandler::ProcessDDPacket(), OSPF::InterfaceStateDown::ProcessEvent(), OSPF::LinkStateUpdateHandler::ProcessPacket(), OSPF::LinkStateRequestHandler::ProcessPacket(), OSPF::HelloHandler::ProcessPacket(), OSPF::DatabaseDescriptionHandler::ProcessPacket(), and RemoveFromRequestList().
{ state->ProcessEvent(this, event); }
void OSPF::Neighbor::RemoveFromRequestList | ( | OSPF::LSAKeyType | lsaKey | ) |
Definition at line 491 of file OSPFNeighbor.cc.
{ std::list<OSPFLSAHeader*>::iterator it = linkStateRequestList.begin(); while (it != linkStateRequestList.end()) { if (((*it)->getLinkStateID() == lsaKey.linkStateID) && ((*it)->getAdvertisingRouter().getInt() == lsaKey.advertisingRouter)) { delete(*it); it = linkStateRequestList.erase(it); } else { it++; } } if ((GetState() == OSPF::Neighbor::LoadingState) && (linkStateRequestList.empty())) { ClearRequestRetransmissionTimer(); ProcessEvent(OSPF::Neighbor::LoadingDone); } }
void OSPF::Neighbor::RemoveFromRetransmissionList | ( | OSPF::LSAKeyType | lsaKey | ) |
Definition at line 432 of file OSPFNeighbor.cc.
Referenced by OSPF::LinkStateUpdateHandler::ProcessPacket(), and OSPF::LinkStateAcknowledgementHandler::ProcessPacket().
{ std::list<OSPFLSA*>::iterator it = linkStateRetransmissionList.begin(); while (it != linkStateRetransmissionList.end()) { if (((*it)->getHeader().getLinkStateID() == lsaKey.linkStateID) && ((*it)->getHeader().getAdvertisingRouter().getInt() == lsaKey.advertisingRouter)) { delete(*it); it = linkStateRetransmissionList.erase(it); } else { it++; } } }
void OSPF::Neighbor::Reset | ( | void | ) |
Definition at line 102 of file OSPFNeighbor.cc.
Referenced by OSPF::NeighborStateTwoWay::ProcessEvent(), OSPF::NeighborStateLoading::ProcessEvent(), OSPF::NeighborStateInit::ProcessEvent(), OSPF::NeighborStateFull::ProcessEvent(), OSPF::NeighborStateExchangeStart::ProcessEvent(), OSPF::NeighborStateExchange::ProcessEvent(), OSPF::NeighborStateAttempt::ProcessEvent(), and ~Neighbor().
{ for (std::list<OSPFLSA*>::iterator retIt = linkStateRetransmissionList.begin(); retIt != linkStateRetransmissionList.end(); retIt++) { delete(*retIt); } linkStateRetransmissionList.clear(); std::list<OSPFLSAHeader*>::iterator it; for (it = databaseSummaryList.begin(); it != databaseSummaryList.end(); it++) { delete(*it); } databaseSummaryList.clear(); for (it = linkStateRequestList.begin(); it != linkStateRequestList.end(); it++) { delete(*it); } linkStateRequestList.clear(); parentInterface->GetArea()->GetRouter()->GetMessageHandler()->ClearTimer(ddRetransmissionTimer); ClearUpdateRetransmissionTimer(); ClearRequestRetransmissionTimer(); if (lastTransmittedDDPacket != NULL) { delete lastTransmittedDDPacket; lastTransmittedDDPacket = NULL; } }
bool OSPF::Neighbor::RetransmitDatabaseDescriptionPacket | ( | void | ) |
Definition at line 243 of file OSPFNeighbor.cc.
Referenced by OSPF::NeighborStateExchangeStart::ProcessEvent(), and OSPF::DatabaseDescriptionHandler::ProcessPacket().
{ if (lastTransmittedDDPacket != NULL) { OSPFDatabaseDescriptionPacket* ddPacket = new OSPFDatabaseDescriptionPacket(*lastTransmittedDDPacket); OSPF::MessageHandler* messageHandler = parentInterface->GetArea()->GetRouter()->GetMessageHandler(); int ttl = (parentInterface->GetType() == OSPF::Interface::Virtual) ? VIRTUAL_LINK_TTL : 1; if (parentInterface->GetType() == OSPF::Interface::PointToPoint) { messageHandler->SendPacket(ddPacket, OSPF::AllSPFRouters, parentInterface->GetIfIndex(), ttl); } else { messageHandler->SendPacket(ddPacket, neighborIPAddress, parentInterface->GetIfIndex(), ttl); } return true; } else { return false; } }
void OSPF::Neighbor::RetransmitUpdatePacket | ( | void | ) |
Definition at line 584 of file OSPFNeighbor.cc.
Referenced by OSPF::NeighborStateLoading::ProcessEvent(), OSPF::NeighborStateFull::ProcessEvent(), and OSPF::NeighborStateExchange::ProcessEvent().
{ OSPFLinkStateUpdatePacket* updatePacket = new OSPFLinkStateUpdatePacket; updatePacket->setType(LinkStateUpdatePacket); updatePacket->setRouterID(parentInterface->GetArea()->GetRouter()->GetRouterID()); updatePacket->setAreaID(parentInterface->GetArea()->GetAreaID()); updatePacket->setAuthenticationType(parentInterface->GetAuthenticationType()); OSPF::AuthenticationKeyType authKey = parentInterface->GetAuthenticationKey(); for (int i = 0; i < 8; i++) { updatePacket->setAuthentication(i, authKey.bytes[i]); } bool packetFull = false; unsigned short lsaCount = 0; unsigned long packetLength = IPV4_HEADER_LENGTH + OSPF_LSA_HEADER_LENGTH; std::list<OSPFLSA*>::iterator it = linkStateRetransmissionList.begin(); while (!packetFull && (it != linkStateRetransmissionList.end())) { LSAType lsaType = static_cast<LSAType> ((*it)->getHeader().getLsType()); OSPFRouterLSA* routerLSA = (lsaType == RouterLSAType) ? dynamic_cast<OSPFRouterLSA*> (*it) : NULL; OSPFNetworkLSA* networkLSA = (lsaType == NetworkLSAType) ? dynamic_cast<OSPFNetworkLSA*> (*it) : NULL; OSPFSummaryLSA* summaryLSA = ((lsaType == SummaryLSA_NetworksType) || (lsaType == SummaryLSA_ASBoundaryRoutersType)) ? dynamic_cast<OSPFSummaryLSA*> (*it) : NULL; OSPFASExternalLSA* asExternalLSA = (lsaType == ASExternalLSAType) ? dynamic_cast<OSPFASExternalLSA*> (*it) : NULL; long lsaSize = 0; bool includeLSA = false; switch (lsaType) { case RouterLSAType: if (routerLSA != NULL) { lsaSize = CalculateLSASize(routerLSA); } break; case NetworkLSAType: if (networkLSA != NULL) { lsaSize = CalculateLSASize(networkLSA); } break; case SummaryLSA_NetworksType: case SummaryLSA_ASBoundaryRoutersType: if (summaryLSA != NULL) { lsaSize = CalculateLSASize(summaryLSA); } break; case ASExternalLSAType: if (asExternalLSA != NULL) { lsaSize = CalculateLSASize(asExternalLSA); } break; default: break; } if (packetLength + lsaSize < parentInterface->GetMTU()) { includeLSA = true; lsaCount++; } else { if ((lsaCount == 0) && (packetLength + lsaSize < IPV4_DATAGRAM_LENGTH)) { includeLSA = true; lsaCount++; packetFull = true; } } if (includeLSA) { switch (lsaType) { case RouterLSAType: if (routerLSA != NULL) { unsigned int routerLSACount = updatePacket->getRouterLSAsArraySize(); updatePacket->setRouterLSAsArraySize(routerLSACount + 1); updatePacket->setRouterLSAs(routerLSACount, *routerLSA); unsigned short lsAge = updatePacket->getRouterLSAs(routerLSACount).getHeader().getLsAge(); if (lsAge < MAX_AGE - parentInterface->GetTransmissionDelay()) { updatePacket->getRouterLSAs(routerLSACount).getHeader().setLsAge(lsAge + parentInterface->GetTransmissionDelay()); } else { updatePacket->getRouterLSAs(routerLSACount).getHeader().setLsAge(MAX_AGE); } } break; case NetworkLSAType: if (networkLSA != NULL) { unsigned int networkLSACount = updatePacket->getNetworkLSAsArraySize(); updatePacket->setNetworkLSAsArraySize(networkLSACount + 1); updatePacket->setNetworkLSAs(networkLSACount, *networkLSA); unsigned short lsAge = updatePacket->getNetworkLSAs(networkLSACount).getHeader().getLsAge(); if (lsAge < MAX_AGE - parentInterface->GetTransmissionDelay()) { updatePacket->getNetworkLSAs(networkLSACount).getHeader().setLsAge(lsAge + parentInterface->GetTransmissionDelay()); } else { updatePacket->getNetworkLSAs(networkLSACount).getHeader().setLsAge(MAX_AGE); } } break; case SummaryLSA_NetworksType: case SummaryLSA_ASBoundaryRoutersType: if (summaryLSA != NULL) { unsigned int summaryLSACount = updatePacket->getSummaryLSAsArraySize(); updatePacket->setSummaryLSAsArraySize(summaryLSACount + 1); updatePacket->setSummaryLSAs(summaryLSACount, *summaryLSA); unsigned short lsAge = updatePacket->getSummaryLSAs(summaryLSACount).getHeader().getLsAge(); if (lsAge < MAX_AGE - parentInterface->GetTransmissionDelay()) { updatePacket->getSummaryLSAs(summaryLSACount).getHeader().setLsAge(lsAge + parentInterface->GetTransmissionDelay()); } else { updatePacket->getSummaryLSAs(summaryLSACount).getHeader().setLsAge(MAX_AGE); } } break; case ASExternalLSAType: if (asExternalLSA != NULL) { unsigned int asExternalLSACount = updatePacket->getAsExternalLSAsArraySize(); updatePacket->setAsExternalLSAsArraySize(asExternalLSACount + 1); updatePacket->setAsExternalLSAs(asExternalLSACount, *asExternalLSA); unsigned short lsAge = updatePacket->getAsExternalLSAs(asExternalLSACount).getHeader().getLsAge(); if (lsAge < MAX_AGE - parentInterface->GetTransmissionDelay()) { updatePacket->getAsExternalLSAs(asExternalLSACount).getHeader().setLsAge(lsAge + parentInterface->GetTransmissionDelay()); } else { updatePacket->getAsExternalLSAs(asExternalLSACount).getHeader().setLsAge(MAX_AGE); } } break; default: break; } } it++; } updatePacket->setPacketLength(0); // TODO: Calculate correct length updatePacket->setChecksum(0); // TODO: Calculate correct cheksum(16-bit one's complement of the entire packet) OSPF::MessageHandler* messageHandler = parentInterface->GetArea()->GetRouter()->GetMessageHandler(); int ttl = (parentInterface->GetType() == OSPF::Interface::Virtual) ? VIRTUAL_LINK_TTL : 1; messageHandler->SendPacket(updatePacket, neighborIPAddress, parentInterface->GetIfIndex(), ttl); }
void OSPF::Neighbor::SendDatabaseDescriptionPacket | ( | bool | init = false |
) |
Definition at line 166 of file OSPFNeighbor.cc.
Referenced by OSPF::DatabaseDescriptionHandler::ProcessDDPacket(), OSPF::NeighborStateTwoWay::ProcessEvent(), OSPF::NeighborStateLoading::ProcessEvent(), OSPF::NeighborStateInit::ProcessEvent(), OSPF::NeighborStateFull::ProcessEvent(), OSPF::NeighborStateExchangeStart::ProcessEvent(), OSPF::NeighborStateExchange::ProcessEvent(), and OSPF::DatabaseDescriptionHandler::ProcessPacket().
{ OSPFDatabaseDescriptionPacket* ddPacket = new OSPFDatabaseDescriptionPacket; ddPacket->setType(DatabaseDescriptionPacket); ddPacket->setRouterID(parentInterface->GetArea()->GetRouter()->GetRouterID()); ddPacket->setAreaID(parentInterface->GetArea()->GetAreaID()); ddPacket->setAuthenticationType(parentInterface->GetAuthenticationType()); OSPF::AuthenticationKeyType authKey = parentInterface->GetAuthenticationKey(); for (int i = 0; i < 8; i++) { ddPacket->setAuthentication(i, authKey.bytes[i]); } if (parentInterface->GetType() != OSPF::Interface::Virtual) { ddPacket->setInterfaceMTU(parentInterface->GetMTU()); } else { ddPacket->setInterfaceMTU(0); } OSPFOptions options; memset(&options, 0, sizeof(OSPFOptions)); options.E_ExternalRoutingCapability = parentInterface->GetArea()->GetExternalRoutingCapability(); ddPacket->setOptions(options); ddPacket->setDdSequenceNumber(ddSequenceNumber); long maxPacketSize = ((IPV4_HEADER_LENGTH + OSPF_HEADER_LENGTH + OSPF_DD_HEADER_LENGTH + OSPF_LSA_HEADER_LENGTH) > parentInterface->GetMTU()) ? IPV4_DATAGRAM_LENGTH : parentInterface->GetMTU(); if (init || databaseSummaryList.empty()) { ddPacket->setLsaHeadersArraySize(0); } else { // delete included LSAs from summary list // (they are still in lastTransmittedDDPacket) long packetSize = IPV4_HEADER_LENGTH + OSPF_HEADER_LENGTH + OSPF_DD_HEADER_LENGTH; while ((!databaseSummaryList.empty()) && (packetSize <= (maxPacketSize - OSPF_LSA_HEADER_LENGTH))) { unsigned long headerCount = ddPacket->getLsaHeadersArraySize(); OSPFLSAHeader* lsaHeader = *(databaseSummaryList.begin()); ddPacket->setLsaHeadersArraySize(headerCount + 1); ddPacket->setLsaHeaders(headerCount, *lsaHeader); delete lsaHeader; databaseSummaryList.pop_front(); packetSize += OSPF_LSA_HEADER_LENGTH; } } OSPFDDOptions ddOptions; memset(&ddOptions, 0, sizeof(OSPFDDOptions)); if (init) { ddOptions.I_Init = true; ddOptions.M_More = true; ddOptions.MS_MasterSlave = true; } else { ddOptions.I_Init = false; ddOptions.M_More = (databaseSummaryList.empty()) ? false : true; ddOptions.MS_MasterSlave = (databaseExchangeRelationship == OSPF::Neighbor::Master) ? true : false; } ddPacket->setDdOptions(ddOptions); ddPacket->setPacketLength(0); // TODO: Calculate correct length ddPacket->setChecksum(0); // TODO: Calculate correct cheksum(16-bit one's complement of the entire packet) OSPF::MessageHandler* messageHandler = parentInterface->GetArea()->GetRouter()->GetMessageHandler(); int ttl = (parentInterface->GetType() == OSPF::Interface::Virtual) ? VIRTUAL_LINK_TTL : 1; if (parentInterface->GetType() == OSPF::Interface::PointToPoint) { messageHandler->SendPacket(ddPacket, OSPF::AllSPFRouters, parentInterface->GetIfIndex(), ttl); } else { messageHandler->SendPacket(ddPacket, neighborIPAddress, parentInterface->GetIfIndex(), ttl); } if (lastTransmittedDDPacket != NULL) { delete lastTransmittedDDPacket; } lastTransmittedDDPacket = new OSPFDatabaseDescriptionPacket(*ddPacket); }
void OSPF::Neighbor::SendLinkStateRequestPacket | ( | void | ) |
Definition at line 311 of file OSPFNeighbor.cc.
Referenced by OSPF::NeighborStateLoading::ProcessEvent(), OSPF::NeighborStateExchange::ProcessEvent(), and OSPF::DatabaseDescriptionHandler::ProcessPacket().
{ OSPFLinkStateRequestPacket* requestPacket = new OSPFLinkStateRequestPacket; requestPacket->setType(LinkStateRequestPacket); requestPacket->setRouterID(parentInterface->GetArea()->GetRouter()->GetRouterID()); requestPacket->setAreaID(parentInterface->GetArea()->GetAreaID()); requestPacket->setAuthenticationType(parentInterface->GetAuthenticationType()); OSPF::AuthenticationKeyType authKey = parentInterface->GetAuthenticationKey(); for (int i = 0; i < 8; i++) { requestPacket->setAuthentication(i, authKey.bytes[i]); } long maxPacketSize = ((IPV4_HEADER_LENGTH + OSPF_HEADER_LENGTH + OSPF_REQUEST_LENGTH) > parentInterface->GetMTU()) ? IPV4_DATAGRAM_LENGTH : parentInterface->GetMTU(); if (linkStateRequestList.empty()) { requestPacket->setRequestsArraySize(0); } else { long packetSize = IPV4_HEADER_LENGTH + OSPF_HEADER_LENGTH; std::list<OSPFLSAHeader*>::iterator it = linkStateRequestList.begin(); while ((it != linkStateRequestList.end()) && (packetSize <= (maxPacketSize - OSPF_REQUEST_LENGTH))) { unsigned long requestCount = requestPacket->getRequestsArraySize(); OSPFLSAHeader* requestHeader = (*it); LSARequest request; request.lsType = requestHeader->getLsType(); request.linkStateID = requestHeader->getLinkStateID(); request.advertisingRouter = requestHeader->getAdvertisingRouter(); requestPacket->setRequestsArraySize(requestCount + 1); requestPacket->setRequests(requestCount, request); packetSize += OSPF_REQUEST_LENGTH; it++; } } requestPacket->setPacketLength(0); // TODO: Calculate correct length requestPacket->setChecksum(0); // TODO: Calculate correct cheksum(16-bit one's complement of the entire packet) OSPF::MessageHandler* messageHandler = parentInterface->GetArea()->GetRouter()->GetMessageHandler(); int ttl = (parentInterface->GetType() == OSPF::Interface::Virtual) ? VIRTUAL_LINK_TTL : 1; if (parentInterface->GetType() == OSPF::Interface::PointToPoint) { messageHandler->SendPacket(requestPacket, OSPF::AllSPFRouters, parentInterface->GetIfIndex(), ttl); } else { messageHandler->SendPacket(requestPacket, neighborIPAddress, parentInterface->GetIfIndex(), ttl); } }
void OSPF::Neighbor::SetAddress | ( | IPv4Address | address | ) | [inline] |
Definition at line 158 of file OSPFNeighbor.h.
Referenced by OSPFRouting::LoadInterfaceParameters(), and OSPF::HelloHandler::ProcessPacket().
{ neighborIPAddress = address; }
void OSPF::Neighbor::SetBackupDesignatedRouter | ( | DesignatedRouterID | routerID | ) | [inline] |
Definition at line 162 of file OSPFNeighbor.h.
Referenced by OSPF::HelloHandler::ProcessPacket().
{ neighborsBackupDesignatedRouter = routerID; }
void OSPF::Neighbor::SetDatabaseExchangeRelationship | ( | DatabaseExchangeRelationshipType | relation | ) | [inline] |
Definition at line 173 of file OSPFNeighbor.h.
Referenced by OSPF::DatabaseDescriptionHandler::ProcessPacket().
{ databaseExchangeRelationship = relation; }
void OSPF::Neighbor::SetDDSequenceNumber | ( | unsigned long | sequenceNumber | ) | [inline] |
Definition at line 166 of file OSPFNeighbor.h.
Referenced by OSPF::DatabaseDescriptionHandler::ProcessDDPacket(), and OSPF::DatabaseDescriptionHandler::ProcessPacket().
{ ddSequenceNumber = sequenceNumber; }
void OSPF::Neighbor::SetDesignatedRouter | ( | DesignatedRouterID | routerID | ) | [inline] |
Definition at line 160 of file OSPFNeighbor.h.
Referenced by OSPF::HelloHandler::ProcessPacket().
{ neighborsDesignatedRouter = routerID; }
void OSPF::Neighbor::SetInterface | ( | Interface * | intf | ) | [inline] |
Definition at line 176 of file OSPFNeighbor.h.
Referenced by OSPF::Interface::AddNeighbor().
{ parentInterface = intf; }
void OSPF::Neighbor::SetLastReceivedDDPacket | ( | DDPacketID | packetID | ) | [inline] |
Definition at line 170 of file OSPFNeighbor.h.
Referenced by OSPF::DatabaseDescriptionHandler::ProcessPacket().
{ lastReceivedDDPacket = packetID; }
void OSPF::Neighbor::SetNeighborID | ( | RouterID | id | ) | [inline] |
Definition at line 154 of file OSPFNeighbor.h.
Referenced by OSPFRouting::LoadVirtualLink(), and OSPF::HelloHandler::ProcessPacket().
{ neighborID = id; }
void OSPF::Neighbor::SetOptions | ( | OSPFOptions | options | ) | [inline] |
Definition at line 168 of file OSPFNeighbor.h.
Referenced by OSPF::DatabaseDescriptionHandler::ProcessPacket().
{ neighborOptions = options; }
void OSPF::Neighbor::SetPriority | ( | unsigned char | priority | ) | [inline] |
Definition at line 156 of file OSPFNeighbor.h.
Referenced by OSPFRouting::LoadInterfaceParameters(), and OSPF::HelloHandler::ProcessPacket().
{ neighborPriority = priority; }
void OSPF::Neighbor::SetRouterDeadInterval | ( | short | interval | ) | [inline] |
Definition at line 164 of file OSPFNeighbor.h.
Referenced by OSPF::HelloHandler::ProcessPacket().
{ neighborsRouterDeadInterval = interval; }
void OSPF::Neighbor::SetUpDesignatedRouters | ( | bool | setUp | ) | [inline] |
Definition at line 188 of file OSPFNeighbor.h.
Referenced by OSPF::HelloHandler::ProcessPacket().
{ designatedRoutersSetUp = setUp; }
void OSPF::Neighbor::StartRequestRetransmissionTimer | ( | void | ) |
Definition at line 536 of file OSPFNeighbor.cc.
Referenced by OSPF::NeighborStateLoading::ProcessEvent(), OSPF::NeighborStateExchange::ProcessEvent(), and OSPF::DatabaseDescriptionHandler::ProcessPacket().
{ MessageHandler* messageHandler = parentInterface->GetArea()->GetRouter()->GetMessageHandler(); messageHandler->StartTimer(requestRetransmissionTimer, parentInterface->GetRetransmissionInterval()); requestRetransmissionTimerActive = true; }
void OSPF::Neighbor::StartUpdateRetransmissionTimer | ( | void | ) |
Definition at line 472 of file OSPFNeighbor.cc.
Referenced by OSPF::Interface::FloodLSA(), OSPF::NeighborStateLoading::ProcessEvent(), OSPF::NeighborStateFull::ProcessEvent(), and OSPF::NeighborStateExchange::ProcessEvent().
{ MessageHandler* messageHandler = parentInterface->GetArea()->GetRouter()->GetMessageHandler(); messageHandler->StartTimer(updateRetransmissionTimer, parentInterface->GetRetransmissionInterval()); updateRetransmissionTimerActive = true; }
friend class NeighborState [friend] |
Definition at line 34 of file OSPFNeighbor.h.
Definition at line 95 of file OSPFNeighbor.h.
Referenced by GetDatabaseExchangeRelationship(), SendDatabaseDescriptionPacket(), and SetDatabaseExchangeRelationship().
std::list<OSPFLSAHeader*> OSPF::Neighbor::databaseSummaryList [private] |
Definition at line 108 of file OSPFNeighbor.h.
Referenced by CreateDatabaseSummary(), GetDatabaseSummaryListCount(), Reset(), and SendDatabaseDescriptionPacket().
OSPFTimer* OSPF::Neighbor::ddRetransmissionTimer [private] |
Definition at line 90 of file OSPFNeighbor.h.
Referenced by GetDDRetransmissionTimer(), Neighbor(), Reset(), and ~Neighbor().
unsigned long OSPF::Neighbor::ddSequenceNumber [private] |
Definition at line 97 of file OSPFNeighbor.h.
Referenced by GetDDSequenceNumber(), IncrementDDSequenceNumber(), InitFirstAdjacency(), SendDatabaseDescriptionPacket(), and SetDDSequenceNumber().
unsigned long OSPF::Neighbor::ddSequenceNumberInitSeed = 0 [static, private] |
Definition at line 116 of file OSPFNeighbor.h.
Referenced by GetUniqueULong().
bool OSPF::Neighbor::designatedRoutersSetUp [private] |
Definition at line 105 of file OSPFNeighbor.h.
Referenced by DesignatedRoutersAreSetUp(), NeedAdjacency(), and SetUpDesignatedRouters().
bool OSPF::Neighbor::firstAdjacencyInited [private] |
Definition at line 96 of file OSPFNeighbor.h.
Referenced by InitFirstAdjacency(), and IsFirstAdjacencyInited().
OSPFTimer* OSPF::Neighbor::inactivityTimer [private] |
Definition at line 88 of file OSPFNeighbor.h.
Referenced by GetInactivityTimer(), Neighbor(), and ~Neighbor().
Definition at line 98 of file OSPFNeighbor.h.
Referenced by GetLastReceivedDDPacket(), Neighbor(), and SetLastReceivedDDPacket().
OSPFDatabaseDescriptionPacket* OSPF::Neighbor::lastTransmittedDDPacket [private] |
Definition at line 111 of file OSPFNeighbor.h.
Referenced by DeleteLastSentDDPacket(), Reset(), RetransmitDatabaseDescriptionPacket(), and SendDatabaseDescriptionPacket().
std::list<OSPFLSAHeader*> OSPF::Neighbor::linkStateRequestList [private] |
Definition at line 109 of file OSPFNeighbor.h.
Referenced by AddToRequestList(), FindOnRequestList(), IsLinkStateRequestListEmpty(), IsLSAOnRequestList(), PopFirstLinkStateRequest(), RemoveFromRequestList(), Reset(), and SendLinkStateRequestPacket().
std::list<OSPFLSA*> OSPF::Neighbor::linkStateRetransmissionList [private] |
Definition at line 107 of file OSPFNeighbor.h.
Referenced by AddToRetransmissionList(), FindOnRetransmissionList(), IsLinkStateRetransmissionListEmpty(), IsLSAOnRetransmissionList(), RemoveFromRetransmissionList(), Reset(), and RetransmitUpdatePacket().
RouterID OSPF::Neighbor::neighborID [private] |
Definition at line 99 of file OSPFNeighbor.h.
Referenced by GetNeighborID(), and SetNeighborID().
IPv4Address OSPF::Neighbor::neighborIPAddress [private] |
Definition at line 101 of file OSPFNeighbor.h.
Referenced by GetAddress(), RetransmitDatabaseDescriptionPacket(), RetransmitUpdatePacket(), SendDatabaseDescriptionPacket(), SendLinkStateRequestPacket(), and SetAddress().
OSPFOptions OSPF::Neighbor::neighborOptions [private] |
Definition at line 102 of file OSPFNeighbor.h.
Referenced by GetOptions(), and SetOptions().
unsigned char OSPF::Neighbor::neighborPriority [private] |
Definition at line 100 of file OSPFNeighbor.h.
Referenced by GetPriority(), and SetPriority().
Definition at line 104 of file OSPFNeighbor.h.
Referenced by GetBackupDesignatedRouter(), NeedAdjacency(), and SetBackupDesignatedRouter().
Definition at line 103 of file OSPFNeighbor.h.
Referenced by GetDesignatedRouter(), NeedAdjacency(), and SetDesignatedRouter().
short OSPF::Neighbor::neighborsRouterDeadInterval [private] |
Definition at line 106 of file OSPFNeighbor.h.
Referenced by GetRouterDeadInterval(), and SetRouterDeadInterval().
Interface* OSPF::Neighbor::parentInterface [private] |
Definition at line 113 of file OSPFNeighbor.h.
Referenced by ClearRequestRetransmissionTimer(), ClearUpdateRetransmissionTimer(), CreateDatabaseSummary(), GetInterface(), NeedAdjacency(), Reset(), RetransmitDatabaseDescriptionPacket(), RetransmitUpdatePacket(), SendDatabaseDescriptionPacket(), SendLinkStateRequestPacket(), SetInterface(), StartRequestRetransmissionTimer(), StartUpdateRetransmissionTimer(), and ~Neighbor().
OSPFTimer* OSPF::Neighbor::pollTimer [private] |
Definition at line 89 of file OSPFNeighbor.h.
Referenced by GetPollTimer(), Neighbor(), and ~Neighbor().
NeighborState* OSPF::Neighbor::previousState [private] |
Definition at line 87 of file OSPFNeighbor.h.
Referenced by ChangeState(), Neighbor(), and ~Neighbor().
OSPFTimer* OSPF::Neighbor::requestRetransmissionTimer [private] |
Definition at line 93 of file OSPFNeighbor.h.
Referenced by ClearRequestRetransmissionTimer(), Neighbor(), StartRequestRetransmissionTimer(), and ~Neighbor().
bool OSPF::Neighbor::requestRetransmissionTimerActive [private] |
Definition at line 94 of file OSPFNeighbor.h.
Referenced by ClearRequestRetransmissionTimer(), IsRequestRetransmissionTimerActive(), and StartRequestRetransmissionTimer().
NeighborState* OSPF::Neighbor::state [private] |
Definition at line 86 of file OSPFNeighbor.h.
Referenced by ChangeState(), GetState(), Neighbor(), ProcessEvent(), and ~Neighbor().
std::list<TransmittedLSA> OSPF::Neighbor::transmittedLSAs [private] |
Definition at line 110 of file OSPFNeighbor.h.
Referenced by AddToTransmittedLSAList(), AgeTransmittedLSAList(), and IsOnTransmittedLSAList().
OSPFTimer* OSPF::Neighbor::updateRetransmissionTimer [private] |
Definition at line 91 of file OSPFNeighbor.h.
Referenced by ClearUpdateRetransmissionTimer(), GetUpdateRetransmissionTimer(), Neighbor(), StartUpdateRetransmissionTimer(), and ~Neighbor().
bool OSPF::Neighbor::updateRetransmissionTimerActive [private] |
Definition at line 92 of file OSPFNeighbor.h.
Referenced by ClearUpdateRetransmissionTimer(), IsUpdateRetransmissionTimerActive(), and StartUpdateRetransmissionTimer().