|
INET Framework for OMNeT++/OMNEST
|
#include <ansaOspfNeighbor6.h>
Definition at line 29 of file ansaOspfNeighbor6.h.
Definition at line 65 of file ansaOspfNeighbor6.h.
Definition at line 34 of file ansaOspfNeighbor6.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 54 of file ansaOspfNeighbor6.h.
{
DownState = 0,
AttemptState = 1,
InitState = 2,
TwoWayState = 4,
ExchangeStartState = 8,
ExchangeState = 16,
LoadingState = 32,
FullState = 64
};
| AnsaOspf6::Neighbor::Neighbor | ( | RouterID | neighbor = NullRouterID | ) |
Definition at line 27 of file ansaOspfNeighbor6.cc.
:
updateRetransmissionTimerActive(false),
requestRetransmissionTimerActive(false),
firstAdjacencyInited(false),
ddSequenceNumber(0),
neighborID(neighbor),
neighborPriority(0),
neighborIPAddress(IPv6Address::UNSPECIFIED_ADDRESS),
neighborsDesignatedRouter(AnsaOspf6::NullDesignatedRouterID),
neighborsBackupDesignatedRouter(AnsaOspf6::NullDesignatedRouterID),
designatedRoutersSetUp(false),
neighborsRouterDeadInterval(40),
lastTransmittedDDPacket(NULL){
inactivityTimer = new OspfTimer6;
inactivityTimer->setTimerKind(NeighborInactivityTimer);
inactivityTimer->setContextPointer(this);
inactivityTimer->setName("AnsaOspf6::Neighbor::NeighborInactivityTimer");
pollTimer = new OspfTimer6;
pollTimer->setTimerKind(NeighborPollTimer);
pollTimer->setContextPointer(this);
pollTimer->setName("AnsaOspf6::Neighbor::NeighborPollTimer");
/* TODO
ddRetransmissionTimer = new OspfTimer6;
ddRetransmissionTimer->setTimerKind(NeighborDDRetransmissionTimer);
ddRetransmissionTimer->setContextPointer(this);
ddRetransmissionTimer->setName("AnsaOspf6::Neighbor::NeighborDDRetransmissionTimer");
updateRetransmissionTimer = new OspfTimer6;
updateRetransmissionTimer->setTimerKind(NeighborUpdateRetransmissionTimer);
updateRetransmissionTimer->setContextPointer(this);
updateRetransmissionTimer->setName("AnsaOspf6::Neighbor::Neighbor::NeighborUpdateRetransmissionTimer");
requestRetransmissionTimer = new OspfTimer6;
requestRetransmissionTimer->setTimerKind(NeighborRequestRetransmissionTimer);
requestRetransmissionTimer->setContextPointer(this);
requestRetransmissionTimer->setName("AnsaOspf6::Neighbor::NeighborRequestRetransmissionTimer");
memset(&lastReceivedDDPacket, 0, sizeof(AnsaOspf6::Neighbor::DDPacketID));
// setting only I and M bits is invalid -> good initializer
lastReceivedDDPacket.ddOptions.I_Init = true;
lastReceivedDDPacket.ddOptions.M_More = true;
*/
state = new AnsaOspf6::NeighborStateDown;
previousState = NULL;
}
| AnsaOspf6::Neighbor::~Neighbor | ( | void | ) | [virtual] |
Definition at line 74 of file ansaOspfNeighbor6.cc.
{
Reset();
MessageHandler* messageHandler = parentInterface->GetArea()->GetRouter()->GetMessageHandler();
if (inactivityTimer != NULL){
messageHandler->ClearTimer(inactivityTimer);
delete inactivityTimer;
}
if (pollTimer != NULL){
messageHandler->ClearTimer(pollTimer);
delete pollTimer;
}
/*
delete ddRetransmissionTimer;
delete updateRetransmissionTimer;
delete requestRetransmissionTimer;
*/
if (previousState != NULL) {
delete previousState;
}
delete state;
}
| void AnsaOspf6::Neighbor::AddToRequestList | ( | OspfLsaHeader6 * | lsaHeader | ) |
Definition at line 492 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::DatabaseDescriptionHandler::ProcessDDPacket().
{
linkStateRequestList.push_back(new OspfLsaHeader6 (*lsaHeader));
}
| void AnsaOspf6::Neighbor::AddToRetransmissionList | ( | OspfLsa6 * | 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 397 of file ansaOspfNeighbor6.cc.
{
std::list<OspfLsa6*>::iterator it;
for (it = linkStateRetransmissionList.begin(); it != linkStateRetransmissionList.end(); it++){
if ( ((*it)->getHeader().getLinkStateID() == lsa->getHeader().getLinkStateID())
&& ((*it)->getHeader().getAdvertisingRouter() == lsa->getHeader().getAdvertisingRouter())){
break;
}
}
OspfLsa6* lsaCopy = NULL;
switch (lsa->getHeader().getLsType()){
case RouterLsaType:
lsaCopy = new OspfRouterLsa6(*(check_and_cast<OspfRouterLsa6*> (lsa)));
break;
case NetworkLsaType:
lsaCopy = new OspfNetworkLsa6(*(check_and_cast<OspfNetworkLsa6*> (lsa)));
break;
case InterAreaPrefixLsaType:
lsaCopy = new OspfInterAreaPrefixLsa6(*(check_and_cast<OspfInterAreaPrefixLsa6*> (lsa)));
break;
case InterAreaRouterLsaType:
lsaCopy = new OspfInterAreaRouterLsa6(*(check_and_cast<OspfInterAreaRouterLsa6*> (lsa)));
break;
case AsExternalLsaType:
lsaCopy = new OspfAsExternalLsa6(*(check_and_cast<OspfAsExternalLsa6*> (lsa)));
break;
// TODO ?? patøí to sem
case LinkLsaType:
lsaCopy = new OspfLinkLsa6(*(check_and_cast<OspfLinkLsa6*> (lsa)));
break;
case IntraAreaPrefixLsaType:
lsaCopy = new OspfIntraAreaPrefixLsa6(*(check_and_cast<OspfIntraAreaPrefixLsa6*> (lsa)));
break;
default:
ASSERT(false); // error
break;
}
if (it != linkStateRetransmissionList.end()){
delete (*it);
*it = static_cast<OspfLsa6*> (lsaCopy);
}else{
linkStateRetransmissionList.push_back(static_cast<OspfLsa6*> (lsaCopy));
}
}
Definition at line 550 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::Interface::FloodLSA().
{
TransmittedLSA transmit;
transmit.lsaKey = lsaKey;
transmit.age = 0;
transmittedLSAs.push_back(transmit);
}
| void AnsaOspf6::Neighbor::AgeTransmittedLSAList | ( | void | ) |
Definition at line 570 of file ansaOspfNeighbor6.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 AnsaOspf6::Neighbor::ChangeState | ( | NeighborState * | newState, |
| NeighborState * | currentState | ||
| ) | [private] |
Definition at line 100 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::NeighborState::ChangeState().
{
if (previousState != NULL){
delete previousState;
}
state = newState;
previousState = currentState;
}
| void AnsaOspf6::Neighbor::ClearRequestRetransmissionTimer | ( | void | ) |
Definition at line 544 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::NeighborStateExchange::ProcessEvent(), AnsaOspf6::NeighborStateLoading::ProcessEvent(), and AnsaOspf6::DatabaseDescriptionHandler::ProcessPacket().
{
MessageHandler* messageHandler = parentInterface->GetArea()->GetRouter()->GetMessageHandler();
messageHandler->ClearTimer(requestRetransmissionTimer);
requestRetransmissionTimerActive = false;
}
| void AnsaOspf6::Neighbor::ClearUpdateRetransmissionTimer | ( | void | ) |
Definition at line 486 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::LinkStateAcknowledgementHandler::ProcessPacket().
{
MessageHandler* messageHandler = parentInterface->GetArea()->GetRouter()->GetMessageHandler();
messageHandler->ClearTimer(updateRetransmissionTimer);
updateRetransmissionTimerActive = false;
}
| void AnsaOspf6::Neighbor::CreateDatabaseSummary | ( | void | ) |
Definition at line 262 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::NeighborStateExchangeStart::ProcessEvent().
{
AnsaOspf6::Area* area = parentInterface->GetArea();
unsigned long routerLSACount = area->GetRouterLSACount();
for (unsigned long i = 0; i < routerLSACount; i++){
if (area->GetRouterLSA(i)->getHeader().getLsAge() < MAX_AGE){
OspfLsaHeader6* routerLSA = new OspfLsaHeader6(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){
OspfLsaHeader6* networkLSA = new OspfLsaHeader6(area->GetNetworkLSA(j)->getHeader());
databaseSummaryList.push_back(networkLSA);
}
}
unsigned long interAreaPrefixLSACount = area->GetInterAreaPrefixLSACount();
for (unsigned long j = 0; j < interAreaPrefixLSACount; j++){
if (area->GetInterAreaPrefixLSA(j)->getHeader().getLsAge() < MAX_AGE){
OspfLsaHeader6* interAreaPrefixLSA = new OspfLsaHeader6(area->GetInterAreaPrefixLSA(j)->getHeader());
databaseSummaryList.push_back(interAreaPrefixLSA);
}
}
unsigned long interAreaRouterLSACount = area->GetInterAreaRouterLSACount();
for (unsigned long j = 0; j < interAreaRouterLSACount; j++){
if (area->GetInterAreaRouterLSA(j)->getHeader().getLsAge() < MAX_AGE){
OspfLsaHeader6* interAreaRouterLSA = new OspfLsaHeader6(area->GetInterAreaRouterLSA(j)->getHeader());
databaseSummaryList.push_back(interAreaRouterLSA);
}
}
/* TODO: link lsa?
unsigned long networkLSACount = area->GetNetworkLSACount();
for (unsigned long j = 0; j < networkLSACount; j++){
if (area->GetNetworkLSA(j)->getHeader().getLsAge() < MAX_AGE){
OspfLsaHeader6* networkLSA = new OspfLsaHeader6(area->GetNetworkLSA(j)->getHeader());
databaseSummaryList.push_back(networkLSA);
}
}
*/
if ( (parentInterface->GetType() != AnsaOspf6::Interface::Virtual)
&& (area->GetExternalRoutingCapability())){
AnsaOspf6::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){
OspfLsaHeader6* asExternalLSA = new OspfLsaHeader6(router->GetASExternalLSA(m)->getHeader());
databaseSummaryList.push_back(asExternalLSA);
}
}
}
unsigned long intraAreaPrefixLSACount = area->GetIntraAreaPrefixLSACount();
for (unsigned long j = 0; j < intraAreaPrefixLSACount; j++){
if (area->GetIntraAreaPrefixLSA(j)->getHeader().getLsAge() < MAX_AGE){
OspfLsaHeader6* intraAreaPrefixLSA = new OspfLsaHeader6(area->GetIntraAreaPrefixLSA(j)->getHeader());
databaseSummaryList.push_back(intraAreaPrefixLSA);
}
}
}
| void AnsaOspf6::Neighbor::DeleteLastSentDDPacket | ( | void | ) |
Definition at line 729 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::NeighborStateFull::ProcessEvent(), and AnsaOspf6::NeighborStateLoading::ProcessEvent().
{
if (lastTransmittedDDPacket != NULL){
delete lastTransmittedDDPacket;
lastTransmittedDDPacket = NULL;
}
}
| bool AnsaOspf6::Neighbor::DesignatedRoutersAreSetUp | ( | void | ) | const [inline] |
Definition at line 183 of file ansaOspfNeighbor6.h.
{ return designatedRoutersSetUp; }
Definition at line 526 of file ansaOspfNeighbor6.cc.
{
for (std::list<OspfLsaHeader6*>::iterator it = linkStateRequestList.begin(); it
!= linkStateRequestList.end(); it++){
if (((*it)->getLinkStateID() == lsaKey.linkStateID)
&& ((*it)->getAdvertisingRouter() == lsaKey.advertisingRouter)){
return (*it);
}
}
return NULL;
}
Definition at line 468 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::LinkStateAcknowledgementHandler::ProcessPacket().
{
for (std::list<OspfLsa6*>::iterator it = linkStateRetransmissionList.begin(); it
!= linkStateRetransmissionList.end(); it++){
if (((*it)->getHeader().getLinkStateID() == lsaKey.linkStateID)
&& ((*it)->getHeader().getAdvertisingRouter() == lsaKey.advertisingRouter)){
return (*it);
}
}
return NULL;
}
| IPv6Address AnsaOspf6::Neighbor::GetAddress | ( | void | ) | const [inline] |
Definition at line 155 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::LinkStateUpdateHandler::AcknowledgeLSA(), AnsaOspf6::Interface::AddNeighbor(), AnsaOspf6::NeighborStateDown::ProcessEvent(), AnsaOspf6::InterfaceStateNotDesignatedRouter::ProcessEvent(), AnsaOspf6::InterfaceStatePointToPoint::ProcessEvent(), AnsaOspf6::InterfaceStateDesignatedRouter::ProcessEvent(), AnsaOspf6::InterfaceStateWaiting::ProcessEvent(), AnsaOspf6::InterfaceStateBackup::ProcessEvent(), AnsaOspf6::HelloHandler::ProcessPacket(), AnsaOspf6::LinkStateRequestHandler::ProcessPacket(), and AnsaOspf6::LinkStateUpdateHandler::ProcessPacket().
{ return neighborIPAddress; }
| DesignatedRouterID AnsaOspf6::Neighbor::GetBackupDesignatedRouter | ( | void | ) | const [inline] |
Definition at line 159 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::InterfaceState::CalculateDesignatedRouter(), operator<<(), and AnsaOspf6::HelloHandler::ProcessPacket().
{ return neighborsBackupDesignatedRouter; }
| DatabaseExchangeRelationshipType AnsaOspf6::Neighbor::GetDatabaseExchangeRelationship | ( | void | ) | const [inline] |
Definition at line 170 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::DatabaseDescriptionHandler::ProcessDDPacket(), and AnsaOspf6::DatabaseDescriptionHandler::ProcessPacket().
{ return databaseExchangeRelationship; }
| unsigned long AnsaOspf6::Neighbor::GetDatabaseSummaryListCount | ( | void | ) | const [inline] |
Definition at line 185 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::DatabaseDescriptionHandler::ProcessDDPacket().
{ return databaseSummaryList.size(); }
| OspfTimer6* AnsaOspf6::Neighbor::GetDDRetransmissionTimer | ( | void | ) | [inline] |
Definition at line 178 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::NeighborStateExchange::ProcessEvent(), AnsaOspf6::NeighborStateTwoWay::ProcessEvent(), AnsaOspf6::NeighborStateLoading::ProcessEvent(), AnsaOspf6::NeighborStateInit::ProcessEvent(), AnsaOspf6::NeighborStateFull::ProcessEvent(), and AnsaOspf6::NeighborStateExchangeStart::ProcessEvent().
{ return ddRetransmissionTimer; }
| unsigned long AnsaOspf6::Neighbor::GetDDSequenceNumber | ( | void | ) | const [inline] |
Definition at line 163 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::DatabaseDescriptionHandler::ProcessPacket().
{ return ddSequenceNumber; }
| DesignatedRouterID AnsaOspf6::Neighbor::GetDesignatedRouter | ( | void | ) | const [inline] |
Definition at line 157 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::InterfaceState::CalculateDesignatedRouter(), operator<<(), and AnsaOspf6::HelloHandler::ProcessPacket().
{ return neighborsDesignatedRouter; }
| OspfTimer6* AnsaOspf6::Neighbor::GetInactivityTimer | ( | void | ) | [inline] |
Definition at line 176 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::NeighborStateAttempt::ProcessEvent(), AnsaOspf6::NeighborStateTwoWay::ProcessEvent(), AnsaOspf6::NeighborStateLoading::ProcessEvent(), AnsaOspf6::NeighborStateInit::ProcessEvent(), AnsaOspf6::NeighborStateFull::ProcessEvent(), AnsaOspf6::NeighborStateExchangeStart::ProcessEvent(), AnsaOspf6::NeighborStateExchange::ProcessEvent(), and AnsaOspf6::NeighborStateDown::ProcessEvent().
{ return inactivityTimer; }
| Interface* AnsaOspf6::Neighbor::GetInterface | ( | void | ) | [inline] |
Definition at line 173 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::MessageHandler::HandleTimer(), AnsaOspf6::NeighborStateTwoWay::ProcessEvent(), AnsaOspf6::NeighborStateLoading::ProcessEvent(), AnsaOspf6::NeighborStateInit::ProcessEvent(), AnsaOspf6::NeighborStateFull::ProcessEvent(), AnsaOspf6::NeighborStateExchangeStart::ProcessEvent(), AnsaOspf6::NeighborStateExchange::ProcessEvent(), AnsaOspf6::NeighborStateDown::ProcessEvent(), and AnsaOspf6::NeighborStateAttempt::ProcessEvent().
{ return parentInterface; }
| const Interface* AnsaOspf6::Neighbor::GetInterface | ( | void | ) | const [inline] |
Definition at line 174 of file ansaOspfNeighbor6.h.
{ return parentInterface; }
| DDPacketID AnsaOspf6::Neighbor::GetLastReceivedDDPacket | ( | void | ) | const [inline] |
Definition at line 167 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::DatabaseDescriptionHandler::ProcessPacket().
{ return lastReceivedDDPacket; }
| RouterID AnsaOspf6::Neighbor::GetNeighborID | ( | void | ) | const [inline] |
Definition at line 151 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::Interface::AddNeighbor(), AnsaOspf6::InterfaceState::CalculateDesignatedRouter(), AnsaOspf6::Interface::FloodLSA(), operator<<(), AnsaOspf6::MessageHandler::PrintEvent(), AnsaOspf6::HelloHandler::ProcessPacket(), and AnsaOspf6::DatabaseDescriptionHandler::ProcessPacket().
{ return neighborID; }
| OspfOptions6 AnsaOspf6::Neighbor::GetOptions | ( | void | ) | const [inline] |
Definition at line 165 of file ansaOspfNeighbor6.h.
{ return neighborOptions; }
| OspfTimer6* AnsaOspf6::Neighbor::GetPollTimer | ( | void | ) | [inline] |
Definition at line 177 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::NeighborStateAttempt::ProcessEvent(), AnsaOspf6::NeighborStateTwoWay::ProcessEvent(), AnsaOspf6::NeighborStateLoading::ProcessEvent(), AnsaOspf6::NeighborStateInit::ProcessEvent(), AnsaOspf6::NeighborStateFull::ProcessEvent(), AnsaOspf6::NeighborStateExchangeStart::ProcessEvent(), AnsaOspf6::NeighborStateExchange::ProcessEvent(), and AnsaOspf6::NeighborStateDown::ProcessEvent().
{ return pollTimer; }
| unsigned char AnsaOspf6::Neighbor::GetPriority | ( | void | ) | const [inline] |
Definition at line 153 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::InterfaceState::CalculateDesignatedRouter(), operator<<(), AnsaOspf6::InterfaceStateWaiting::ProcessEvent(), AnsaOspf6::InterfaceStateNotDesignatedRouter::ProcessEvent(), AnsaOspf6::InterfaceStateDown::ProcessEvent(), and AnsaOspf6::HelloHandler::ProcessPacket().
{ return neighborPriority; }
| short AnsaOspf6::Neighbor::GetRouterDeadInterval | ( | void | ) | const [inline] |
Definition at line 161 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::NeighborStateAttempt::ProcessEvent(), AnsaOspf6::NeighborStateTwoWay::ProcessEvent(), AnsaOspf6::NeighborStateLoading::ProcessEvent(), AnsaOspf6::NeighborStateInit::ProcessEvent(), AnsaOspf6::NeighborStateFull::ProcessEvent(), AnsaOspf6::NeighborStateExchangeStart::ProcessEvent(), AnsaOspf6::NeighborStateExchange::ProcessEvent(), and AnsaOspf6::NeighborStateDown::ProcessEvent().
{ return neighborsRouterDeadInterval; }
Definition at line 151 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::InterfaceState::CalculateDesignatedRouter(), operator<<(), AnsaOspf6::MessageHandler::PrintEvent(), AnsaOspf6::LinkStateAcknowledgementHandler::ProcessPacket(), AnsaOspf6::LinkStateRequestHandler::ProcessPacket(), AnsaOspf6::HelloHandler::ProcessPacket(), AnsaOspf6::DatabaseDescriptionHandler::ProcessPacket(), and AnsaOspf6::LinkStateUpdateHandler::ProcessPacket().
| const char * AnsaOspf6::Neighbor::GetStateString | ( | NeighborStateType | stateType | ) | [static] |
Definition at line 155 of file ansaOspfNeighbor6.cc.
Referenced by operator<<(), and AnsaOspf6::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 AnsaOspf6::Neighbor::GetUniqueULong | ( | void | ) |
Definition at line 147 of file ansaOspfNeighbor6.cc.
{
return (ddSequenceNumberInitSeed++);
}
| OspfTimer6* AnsaOspf6::Neighbor::GetUpdateRetransmissionTimer | ( | void | ) | [inline] |
Definition at line 179 of file ansaOspfNeighbor6.h.
{ return updateRetransmissionTimer; }
| void AnsaOspf6::Neighbor::IncrementDDSequenceNumber | ( | void | ) | [inline] |
Definition at line 187 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::DatabaseDescriptionHandler::ProcessDDPacket(), AnsaOspf6::NeighborStateTwoWay::ProcessEvent(), AnsaOspf6::NeighborStateLoading::ProcessEvent(), AnsaOspf6::NeighborStateInit::ProcessEvent(), AnsaOspf6::NeighborStateFull::ProcessEvent(), and AnsaOspf6::NeighborStateExchange::ProcessEvent().
{ ddSequenceNumber++; }
| void AnsaOspf6::Neighbor::InitFirstAdjacency | ( | void | ) |
Definition at line 142 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::NeighborStateInit::ProcessEvent(), and AnsaOspf6::NeighborStateTwoWay::ProcessEvent().
{
ddSequenceNumber = GetUniqueULong();
firstAdjacencyInited = true;
}
| bool AnsaOspf6::Neighbor::IsFirstAdjacencyInited | ( | void | ) | const [inline] |
Definition at line 182 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::NeighborStateInit::ProcessEvent(), and AnsaOspf6::NeighborStateTwoWay::ProcessEvent().
{ return firstAdjacencyInited; }
| bool AnsaOspf6::Neighbor::IsLinkStateRequestListEmpty | ( | void | ) | const [inline] |
Definition at line 188 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::NeighborStateExchange::ProcessEvent(), and AnsaOspf6::DatabaseDescriptionHandler::ProcessPacket().
{ return linkStateRequestList.empty(); }
| bool AnsaOspf6::Neighbor::IsLinkStateRetransmissionListEmpty | ( | void | ) | const [inline] |
Definition at line 189 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::LinkStateAcknowledgementHandler::ProcessPacket().
{ return linkStateRetransmissionList.empty(); }
| bool AnsaOspf6::Neighbor::IsLSAOnRequestList | ( | AnsaOspf6::LsaKeyType6 | lsaKey | ) | const |
Definition at line 514 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::LinkStateUpdateHandler::ProcessPacket().
{
for (std::list<OspfLsaHeader6*>::const_iterator it = linkStateRequestList.begin(); it
!= linkStateRequestList.end(); it++){
const OspfLsaHeader6* lsaHeader = *it;
if ((lsaHeader->getLinkStateID() == lsaKey.linkStateID)
&& (lsaHeader->getAdvertisingRouter() == lsaKey.advertisingRouter)){
return true;
}
}
return false;
}
| bool AnsaOspf6::Neighbor::IsLSAOnRetransmissionList | ( | AnsaOspf6::LsaKeyType6 | lsaKey | ) | const |
Definition at line 456 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::LinkStateUpdateHandler::ProcessPacket().
{
for (std::list<OspfLsa6*>::const_iterator it = linkStateRetransmissionList.begin(); it
!= linkStateRetransmissionList.end(); it++){
const OspfLsa6* lsa = *it;
if ((lsa->getHeader().getLinkStateID() == lsaKey.linkStateID)
&& (lsa->getHeader().getAdvertisingRouter() == lsaKey.advertisingRouter)){
return true;
}
}
return false;
}
| bool AnsaOspf6::Neighbor::IsOnTransmittedLSAList | ( | AnsaOspf6::LsaKeyType6 | lsaKey | ) | const |
Definition at line 559 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::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 AnsaOspf6::Neighbor::IsRequestRetransmissionTimerActive | ( | void | ) | const [inline] |
Definition at line 181 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::DatabaseDescriptionHandler::ProcessPacket().
{ return requestRetransmissionTimerActive; }
| bool AnsaOspf6::Neighbor::IsUpdateRetransmissionTimerActive | ( | void | ) | const [inline] |
Definition at line 180 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::Interface::FloodLSA().
{ return updateRetransmissionTimerActive; }
| bool AnsaOspf6::Neighbor::NeedAdjacency | ( | void | ) |
Definition at line 367 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::NeighborStateExchange::ProcessEvent(), AnsaOspf6::NeighborStateTwoWay::ProcessEvent(), AnsaOspf6::NeighborStateLoading::ProcessEvent(), AnsaOspf6::NeighborStateInit::ProcessEvent(), AnsaOspf6::NeighborStateFull::ProcessEvent(), and AnsaOspf6::NeighborStateExchangeStart::ProcessEvent().
{
/* TODO:
AnsaOspf6::Interface::OspfInterfaceType interfaceType = parentInterface->GetType();
AnsaOspf6::RouterID routerID = parentInterface->GetArea()->GetRouter()->GetRouterID();
AnsaOspf6::DesignatedRouterID dRouter = parentInterface->GetDesignatedRouter();
AnsaOspf6::DesignatedRouterID backupDRouter = parentInterface->GetBackupDesignatedRouter();
if ( (interfaceType == AnsaOspf6::Interface::PointToPoint)
|| (interfaceType == AnsaOspf6::Interface::PointToMultiPoint)
|| (interfaceType == AnsaOspf6::Interface::Virtual)
|| (dRouter == routerID)
|| (backupDRouter == routerID)
|| ((neighborsDesignatedRouter == dRouter) || (!designatedRoutersSetUp))
|| (neighborsBackupDesignatedRouter == backupDRouter)
|| (!designatedRoutersSetUp)){
return true;
}else{
return false;
}
*/
return false;
}
| void AnsaOspf6::Neighbor::PopFirstLinkStateRequest | ( | void | ) | [inline] |
Definition at line 190 of file ansaOspfNeighbor6.h.
{ linkStateRequestList.pop_front(); }
| void AnsaOspf6::Neighbor::ProcessEvent | ( | NeighborEventType | event | ) |
Definition at line 108 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::MessageHandler::HandleTimer(), AnsaOspf6::DatabaseDescriptionHandler::ProcessDDPacket(), AnsaOspf6::InterfaceStateDown::ProcessEvent(), AnsaOspf6::LinkStateRequestHandler::ProcessPacket(), AnsaOspf6::HelloHandler::ProcessPacket(), AnsaOspf6::DatabaseDescriptionHandler::ProcessPacket(), and AnsaOspf6::LinkStateUpdateHandler::ProcessPacket().
{
state->ProcessEvent(this, event);
}
| void AnsaOspf6::Neighbor::RemoveFromRequestList | ( | AnsaOspf6::LsaKeyType6 | lsaKey | ) |
Definition at line 496 of file ansaOspfNeighbor6.cc.
{
std::list<OspfLsaHeader6*>::iterator it = linkStateRequestList.begin();
while (it != linkStateRequestList.end()){
if (((*it)->getLinkStateID() == lsaKey.linkStateID)
&& ((*it)->getAdvertisingRouter() == lsaKey.advertisingRouter)){
delete (*it);
it = linkStateRequestList.erase(it);
}else{
it++;
}
}
if ((GetState() == AnsaOspf6::Neighbor::LoadingState) && (linkStateRequestList.empty())){
ClearRequestRetransmissionTimer();
ProcessEvent(AnsaOspf6::Neighbor::LoadingDone);
}
}
Definition at line 443 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::LinkStateAcknowledgementHandler::ProcessPacket(), and AnsaOspf6::LinkStateUpdateHandler::ProcessPacket().
{
std::list<OspfLsa6*>::iterator it = linkStateRetransmissionList.begin();
while (it != linkStateRetransmissionList.end()){
if (((*it)->getHeader().getLinkStateID() == lsaKey.linkStateID)
&& ((*it)->getHeader().getAdvertisingRouter() == lsaKey.advertisingRouter)){
delete (*it);
it = linkStateRetransmissionList.erase(it);
}else{
it++;
}
}
}
| void AnsaOspf6::Neighbor::Reset | ( | void | ) |
Definition at line 112 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::NeighborStateAttempt::ProcessEvent(), AnsaOspf6::NeighborStateTwoWay::ProcessEvent(), AnsaOspf6::NeighborStateLoading::ProcessEvent(), AnsaOspf6::NeighborStateInit::ProcessEvent(), AnsaOspf6::NeighborStateFull::ProcessEvent(), AnsaOspf6::NeighborStateExchangeStart::ProcessEvent(), and AnsaOspf6::NeighborStateExchange::ProcessEvent().
{
/* TODO:
for (std::list<OspfLsa6*>::iterator retIt = linkStateRetransmissionList.begin(); retIt
!= linkStateRetransmissionList.end(); retIt++){
delete (*retIt);
}
linkStateRetransmissionList.clear();
std::list<OspfLsaHeader6*>::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 AnsaOspf6::Neighbor::RetransmitDatabaseDescriptionPacket | ( | void | ) |
Definition at line 241 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::NeighborStateExchangeStart::ProcessEvent(), and AnsaOspf6::DatabaseDescriptionHandler::ProcessPacket().
{
if (lastTransmittedDDPacket != NULL){
OspfDatabaseDescriptionPacket6* ddPacket = new OspfDatabaseDescriptionPacket6(
*lastTransmittedDDPacket);
AnsaOspf6::MessageHandler* messageHandler =
parentInterface->GetArea()->GetRouter()->GetMessageHandler();
int ttl = (parentInterface->GetType() == AnsaOspf6::Interface::Virtual) ? VIRTUAL_LINK_TTL : 1;
if (parentInterface->GetType() == AnsaOspf6::Interface::PointToPoint){
messageHandler->SendPacket(ddPacket, AnsaOspf6::AllSPFRouters,
parentInterface->GetIfIndex(), ttl);
}else{
messageHandler->SendPacket(ddPacket, neighborIPAddress, parentInterface->GetIfIndex(), ttl);
}
return true;
}else{
return false;
}
}
| void AnsaOspf6::Neighbor::RetransmitUpdatePacket | ( | void | ) |
Definition at line 581 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::NeighborStateExchange::ProcessEvent(), AnsaOspf6::NeighborStateLoading::ProcessEvent(), and AnsaOspf6::NeighborStateFull::ProcessEvent().
{
OspfLinkStateUpdatePacket6* updatePacket = new OspfLinkStateUpdatePacket6;
updatePacket->setType(LinkStateUpdatePacket);
updatePacket->setRouterID(parentInterface->GetArea()->GetRouter()->GetRouterID());
updatePacket->setAreaID(parentInterface->GetArea()->GetAreaID());
bool packetFull = false;
unsigned short lsaCount = 0;
std::list<OspfLsa6*>::iterator it = linkStateRetransmissionList.begin();
while (!packetFull && (it != linkStateRetransmissionList.end())){
LsaType6 lsaType = static_cast<LsaType6> ((*it)->getHeader().getLsType());
OspfRouterLsa6* routerLSA = (lsaType == RouterLsaType) ? dynamic_cast<OspfRouterLsa6*> (*it) : NULL;
OspfNetworkLsa6* networkLSA = (lsaType == NetworkLsaType) ? dynamic_cast<OspfNetworkLsa6*> (*it) : NULL;
OspfInterAreaPrefixLsa6* interAreaPrefixLSA = (lsaType = InterAreaPrefixLsaType) ? dynamic_cast<OspfInterAreaPrefixLsa6*> (*it) : NULL;
OspfInterAreaRouterLsa6* interAreaRouterLSA = (lsaType = InterAreaRouterLsaType) ? dynamic_cast<OspfInterAreaRouterLsa6*> (*it) : NULL;
OspfAsExternalLsa6* asExternalLSA = (lsaType == AsExternalLsaType) ? dynamic_cast<OspfAsExternalLsa6*> (*it) : NULL;
OspfLinkLsa6* linkLSA = (lsaType == LinkLsaType) ? dynamic_cast<OspfLinkLsa6*> (*it) : NULL;
OspfIntraAreaPrefixLsa6* intraAreaPrefixLSA = (lsaType = IntraAreaPrefixLsaType) ? dynamic_cast<OspfIntraAreaPrefixLsa6*> (*it) : NULL;
long lsaSize = 0;
bool includeLSA = true;
lsaCount++;
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 InterAreaPrefixLsaType:
if (interAreaPrefixLSA != NULL){
unsigned int interAreaPrefixLSACount = updatePacket->getInterAreaPrefixLsasArraySize();
updatePacket->setInterAreaPrefixLsasArraySize(interAreaPrefixLSACount + 1);
updatePacket->setInterAreaPrefixLsas(interAreaPrefixLSACount, *interAreaPrefixLSA);
unsigned short lsAge = updatePacket->getInterAreaPrefixLsas(interAreaPrefixLSACount).getHeader().getLsAge();
if (lsAge < MAX_AGE - parentInterface->GetTransmissionDelay()){
updatePacket->getInterAreaPrefixLsas(interAreaPrefixLSACount).getHeader().setLsAge(lsAge + parentInterface->GetTransmissionDelay());
}else{
updatePacket->getInterAreaPrefixLsas(interAreaPrefixLSACount).getHeader().setLsAge(MAX_AGE);
}
}
break;
case InterAreaRouterLsaType:
if (interAreaRouterLSA != NULL){
unsigned int interAreaRouterLSACount = updatePacket->getInterAreaRouterLsasArraySize();
updatePacket->setInterAreaRouterLsasArraySize(interAreaRouterLSACount + 1);
updatePacket->setInterAreaRouterLsas(interAreaRouterLSACount, *interAreaRouterLSA);
unsigned short lsAge = updatePacket->getInterAreaRouterLsas(interAreaRouterLSACount).getHeader().getLsAge();
if (lsAge < MAX_AGE - parentInterface->GetTransmissionDelay()){
updatePacket->getInterAreaRouterLsas(interAreaRouterLSACount).getHeader().setLsAge(lsAge + parentInterface->GetTransmissionDelay());
}else{
updatePacket->getInterAreaRouterLsas(interAreaRouterLSACount).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;
case LinkLsaType:
if (linkLSA != NULL){
unsigned int linkLSACount = updatePacket->getLinkLsasArraySize();
updatePacket->setLinkLsasArraySize(linkLSACount + 1);
updatePacket->setLinkLsas(linkLSACount, *linkLSA);
unsigned short lsAge = updatePacket->getLinkLsas(linkLSACount).getHeader().getLsAge();
if (lsAge < MAX_AGE - parentInterface->GetTransmissionDelay()){
updatePacket->getLinkLsas(linkLSACount).getHeader().setLsAge(lsAge + parentInterface->GetTransmissionDelay());
}else{
updatePacket->getLinkLsas(linkLSACount).getHeader().setLsAge(MAX_AGE);
}
}
break;
case IntraAreaPrefixLsaType:
if (intraAreaPrefixLSA != NULL){
unsigned int intraAreaPrefixLSACount = updatePacket->getIntraAreaPrefixLsasArraySize();
updatePacket->setIntraAreaPrefixLsasArraySize(intraAreaPrefixLSACount + 1);
updatePacket->setIntraAreaPrefixLsas(intraAreaPrefixLSACount, *intraAreaPrefixLSA);
unsigned short lsAge = updatePacket->getIntraAreaPrefixLsas(intraAreaPrefixLSACount).getHeader().getLsAge();
if (lsAge < MAX_AGE - parentInterface->GetTransmissionDelay()){
updatePacket->getIntraAreaPrefixLsas(intraAreaPrefixLSACount).getHeader().setLsAge(lsAge + parentInterface->GetTransmissionDelay());
}else{
updatePacket->getIntraAreaPrefixLsas(intraAreaPrefixLSACount).getHeader().setLsAge(MAX_AGE);
}
}
break;
default:
break;
}
}
it++;
}
AnsaOspf6::MessageHandler* messageHandler = parentInterface->GetArea()->GetRouter()->GetMessageHandler();
int ttl = (parentInterface->GetType() == AnsaOspf6::Interface::Virtual) ? VIRTUAL_LINK_TTL : 1;
messageHandler->SendPacket(updatePacket, neighborIPAddress, parentInterface->GetIfIndex(), ttl);
}
| void AnsaOspf6::Neighbor::SendDatabaseDescriptionPacket | ( | bool | init = false | ) |
Definition at line 179 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::DatabaseDescriptionHandler::ProcessDDPacket(), AnsaOspf6::NeighborStateExchangeStart::ProcessEvent(), AnsaOspf6::NeighborStateLoading::ProcessEvent(), AnsaOspf6::NeighborStateInit::ProcessEvent(), AnsaOspf6::NeighborStateFull::ProcessEvent(), AnsaOspf6::NeighborStateTwoWay::ProcessEvent(), AnsaOspf6::NeighborStateExchange::ProcessEvent(), and AnsaOspf6::DatabaseDescriptionHandler::ProcessPacket().
{
OspfDatabaseDescriptionPacket6* ddPacket = new OspfDatabaseDescriptionPacket6;
ddPacket->setType(DatabaseDescriptionPacket);
ddPacket->setRouterID(parentInterface->GetArea()->GetRouter()->GetRouterID());
ddPacket->setAreaID(parentInterface->GetArea()->GetAreaID());
if (parentInterface->GetType() != AnsaOspf6::Interface::Virtual){
ddPacket->setInterfaceMtu(parentInterface->GetMtu());
}else{
ddPacket->setInterfaceMtu(0);
}
OspfOptions6 options;
memset(&options, 0, sizeof(OspfOptions6));
options.E_ExternalRoutingCapability = parentInterface->GetArea()->GetExternalRoutingCapability();
ddPacket->setOptions(options);
ddPacket->setDdSequenceNumber(ddSequenceNumber);
if (init || databaseSummaryList.empty()){
ddPacket->setLsaHeadersArraySize(0);
}else{
// delete included LSAs from summary list
// (they are still in lastTransmittedDDPacket)
while (!databaseSummaryList.empty()){
unsigned long headerCount = ddPacket->getLsaHeadersArraySize();
OspfLsaHeader6* lsaHeader = *(databaseSummaryList.begin());
ddPacket->setLsaHeadersArraySize(headerCount + 1);
ddPacket->setLsaHeaders(headerCount, *lsaHeader);
delete lsaHeader;
databaseSummaryList.pop_front();
}
}
OspfDdOptions6 ddOptions;
memset(&ddOptions, 0, sizeof(OspfDdOptions6));
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 == AnsaOspf6::Neighbor::Master) ? true : false;
}
ddPacket->setDdOptions(ddOptions);
AnsaOspf6::MessageHandler* messageHandler = parentInterface->GetArea()->GetRouter()->GetMessageHandler();
int ttl = (parentInterface->GetType() == AnsaOspf6::Interface::Virtual) ? VIRTUAL_LINK_TTL : 1;
if (parentInterface->GetType() == AnsaOspf6::Interface::PointToPoint){
messageHandler->SendPacket(ddPacket, AnsaOspf6::AllSPFRouters, parentInterface->GetIfIndex(), ttl);
}else{
messageHandler->SendPacket(ddPacket, neighborIPAddress, parentInterface->GetIfIndex(), ttl);
}
if (lastTransmittedDDPacket != NULL){
delete lastTransmittedDDPacket;
}
lastTransmittedDDPacket = new OspfDatabaseDescriptionPacket6(*ddPacket);
}
| void AnsaOspf6::Neighbor::SendLinkStateRequestPacket | ( | void | ) |
Definition at line 330 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::NeighborStateExchange::ProcessEvent(), AnsaOspf6::NeighborStateLoading::ProcessEvent(), and AnsaOspf6::DatabaseDescriptionHandler::ProcessPacket().
{
OspfLinkStateRequestPacket6* requestPacket = new OspfLinkStateRequestPacket6;
requestPacket->setType(LinkStateRequestPacket);
requestPacket->setRouterID(parentInterface->GetArea()->GetRouter()->GetRouterID());
requestPacket->setAreaID(parentInterface->GetArea()->GetAreaID());
if (linkStateRequestList.empty()){
requestPacket->setRequestsArraySize(0);
}else{
std::list<OspfLsaHeader6*>::iterator it = linkStateRequestList.begin();
while (it != linkStateRequestList.end()){
unsigned long requestCount = requestPacket->getRequestsArraySize();
OspfLsaHeader6* requestHeader = (*it);
OspfLsaRequest6 request;
request.lsType = requestHeader->getLsType();
request.linkStateID = requestHeader->getLinkStateID();
request.advertisingRouter = requestHeader->getAdvertisingRouter();
requestPacket->setRequestsArraySize(requestCount + 1);
requestPacket->setRequests(requestCount, request);
it++;
}
}
AnsaOspf6::MessageHandler* messageHandler = parentInterface->GetArea()->GetRouter()->GetMessageHandler();
int ttl = (parentInterface->GetType() == AnsaOspf6::Interface::Virtual) ? VIRTUAL_LINK_TTL : 1;
if (parentInterface->GetType() == AnsaOspf6::Interface::PointToPoint){
messageHandler->SendPacket(requestPacket, AnsaOspf6::AllSPFRouters, parentInterface->GetIfIndex(), ttl);
}else{
messageHandler->SendPacket(requestPacket, neighborIPAddress, parentInterface->GetIfIndex(), ttl);
}
}
| void AnsaOspf6::Neighbor::SetAddress | ( | IPv6Address | address | ) | [inline] |
Definition at line 154 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::HelloHandler::ProcessPacket().
{ neighborIPAddress = address; }
| void AnsaOspf6::Neighbor::SetBackupDesignatedRouter | ( | DesignatedRouterID | routerID | ) | [inline] |
Definition at line 158 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::HelloHandler::ProcessPacket().
{ neighborsBackupDesignatedRouter = routerID; }
| void AnsaOspf6::Neighbor::SetDatabaseExchangeRelationship | ( | DatabaseExchangeRelationshipType | relation | ) | [inline] |
Definition at line 169 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::DatabaseDescriptionHandler::ProcessPacket().
{ databaseExchangeRelationship = relation; }
| void AnsaOspf6::Neighbor::SetDDSequenceNumber | ( | unsigned long | sequenceNumber | ) | [inline] |
Definition at line 162 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::DatabaseDescriptionHandler::ProcessDDPacket(), and AnsaOspf6::DatabaseDescriptionHandler::ProcessPacket().
{ ddSequenceNumber = sequenceNumber; }
| void AnsaOspf6::Neighbor::SetDesignatedRouter | ( | DesignatedRouterID | routerID | ) | [inline] |
Definition at line 156 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::HelloHandler::ProcessPacket().
{ neighborsDesignatedRouter = routerID; }
| void AnsaOspf6::Neighbor::SetInterface | ( | Interface * | intf | ) | [inline] |
Definition at line 172 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::Interface::AddNeighbor().
{ parentInterface = intf; }
| void AnsaOspf6::Neighbor::SetLastReceivedDDPacket | ( | DDPacketID | packetID | ) | [inline] |
Definition at line 166 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::DatabaseDescriptionHandler::ProcessPacket().
{ lastReceivedDDPacket = packetID; }
| void AnsaOspf6::Neighbor::SetNeighborID | ( | RouterID | id | ) | [inline] |
Definition at line 150 of file ansaOspfNeighbor6.h.
{ neighborID = id; }
| void AnsaOspf6::Neighbor::SetOptions | ( | OspfOptions6 | options | ) | [inline] |
Definition at line 164 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::DatabaseDescriptionHandler::ProcessPacket().
{ neighborOptions = options; }
| void AnsaOspf6::Neighbor::SetPriority | ( | unsigned char | priority | ) | [inline] |
Definition at line 152 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::HelloHandler::ProcessPacket().
{ neighborPriority = priority; }
| void AnsaOspf6::Neighbor::SetRouterDeadInterval | ( | short | interval | ) | [inline] |
Definition at line 160 of file ansaOspfNeighbor6.h.
Referenced by AnsaOspf6::HelloHandler::ProcessPacket().
{ neighborsRouterDeadInterval = interval; }
| void AnsaOspf6::Neighbor::SetUpDesignatedRouters | ( | bool | setUp | ) | [inline] |
Definition at line 184 of file ansaOspfNeighbor6.h.
{ designatedRoutersSetUp = setUp; }
| void AnsaOspf6::Neighbor::StartRequestRetransmissionTimer | ( | void | ) |
Definition at line 537 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::NeighborStateExchange::ProcessEvent(), AnsaOspf6::NeighborStateLoading::ProcessEvent(), and AnsaOspf6::DatabaseDescriptionHandler::ProcessPacket().
{
MessageHandler* messageHandler = parentInterface->GetArea()->GetRouter()->GetMessageHandler();
messageHandler->StartTimer(requestRetransmissionTimer,
parentInterface->GetRetransmissionInterval());
requestRetransmissionTimerActive = true;
}
| void AnsaOspf6::Neighbor::StartUpdateRetransmissionTimer | ( | void | ) |
Definition at line 479 of file ansaOspfNeighbor6.cc.
Referenced by AnsaOspf6::Interface::FloodLSA(), AnsaOspf6::NeighborStateLoading::ProcessEvent(), AnsaOspf6::NeighborStateFull::ProcessEvent(), and AnsaOspf6::NeighborStateExchange::ProcessEvent().
{
MessageHandler* messageHandler = parentInterface->GetArea()->GetRouter()->GetMessageHandler();
messageHandler->StartTimer(updateRetransmissionTimer,
parentInterface->GetRetransmissionInterval());
updateRetransmissionTimerActive = true;
}
friend class NeighborState [friend] |
Definition at line 31 of file ansaOspfNeighbor6.h.
Definition at line 91 of file ansaOspfNeighbor6.h.
Referenced by GetDatabaseExchangeRelationship(), and SetDatabaseExchangeRelationship().
std::list<OspfLsaHeader6*> AnsaOspf6::Neighbor::databaseSummaryList [private] |
Definition at line 104 of file ansaOspfNeighbor6.h.
Referenced by GetDatabaseSummaryListCount().
Definition at line 86 of file ansaOspfNeighbor6.h.
Referenced by GetDDRetransmissionTimer().
unsigned long AnsaOspf6::Neighbor::ddSequenceNumber [private] |
Definition at line 93 of file ansaOspfNeighbor6.h.
Referenced by GetDDSequenceNumber(), IncrementDDSequenceNumber(), and SetDDSequenceNumber().
unsigned long AnsaOspf6::Neighbor::ddSequenceNumberInitSeed = 0 [static, private] |
Definition at line 112 of file ansaOspfNeighbor6.h.
bool AnsaOspf6::Neighbor::designatedRoutersSetUp [private] |
Definition at line 101 of file ansaOspfNeighbor6.h.
Referenced by DesignatedRoutersAreSetUp(), and SetUpDesignatedRouters().
bool AnsaOspf6::Neighbor::firstAdjacencyInited [private] |
Definition at line 92 of file ansaOspfNeighbor6.h.
Referenced by IsFirstAdjacencyInited().
OspfTimer6* AnsaOspf6::Neighbor::inactivityTimer [private] |
Definition at line 84 of file ansaOspfNeighbor6.h.
Referenced by GetInactivityTimer(), and Neighbor().
Definition at line 94 of file ansaOspfNeighbor6.h.
Referenced by GetLastReceivedDDPacket(), and SetLastReceivedDDPacket().
Definition at line 107 of file ansaOspfNeighbor6.h.
std::list<OspfLsaHeader6*> AnsaOspf6::Neighbor::linkStateRequestList [private] |
Definition at line 105 of file ansaOspfNeighbor6.h.
Referenced by IsLinkStateRequestListEmpty(), and PopFirstLinkStateRequest().
std::list<OspfLsa6*> AnsaOspf6::Neighbor::linkStateRetransmissionList [private] |
Definition at line 103 of file ansaOspfNeighbor6.h.
Referenced by IsLinkStateRetransmissionListEmpty().
RouterID AnsaOspf6::Neighbor::neighborID [private] |
Definition at line 95 of file ansaOspfNeighbor6.h.
Referenced by GetNeighborID(), and SetNeighborID().
Definition at line 97 of file ansaOspfNeighbor6.h.
Referenced by GetAddress(), and SetAddress().
Definition at line 98 of file ansaOspfNeighbor6.h.
Referenced by GetOptions(), and SetOptions().
unsigned char AnsaOspf6::Neighbor::neighborPriority [private] |
Definition at line 96 of file ansaOspfNeighbor6.h.
Referenced by GetPriority(), and SetPriority().
Definition at line 100 of file ansaOspfNeighbor6.h.
Referenced by GetBackupDesignatedRouter(), and SetBackupDesignatedRouter().
Definition at line 99 of file ansaOspfNeighbor6.h.
Referenced by GetDesignatedRouter(), and SetDesignatedRouter().
short AnsaOspf6::Neighbor::neighborsRouterDeadInterval [private] |
Definition at line 102 of file ansaOspfNeighbor6.h.
Referenced by GetRouterDeadInterval(), and SetRouterDeadInterval().
Interface* AnsaOspf6::Neighbor::parentInterface [private] |
Definition at line 109 of file ansaOspfNeighbor6.h.
Referenced by GetInterface(), and SetInterface().
OspfTimer6* AnsaOspf6::Neighbor::pollTimer [private] |
Definition at line 85 of file ansaOspfNeighbor6.h.
Referenced by GetPollTimer(), and Neighbor().
NeighborState* AnsaOspf6::Neighbor::previousState [private] |
Definition at line 83 of file ansaOspfNeighbor6.h.
Referenced by Neighbor().
Definition at line 89 of file ansaOspfNeighbor6.h.
bool AnsaOspf6::Neighbor::requestRetransmissionTimerActive [private] |
Definition at line 90 of file ansaOspfNeighbor6.h.
Referenced by IsRequestRetransmissionTimerActive().
NeighborState* AnsaOspf6::Neighbor::state [private] |
Definition at line 82 of file ansaOspfNeighbor6.h.
Referenced by Neighbor().
std::list<TransmittedLSA> AnsaOspf6::Neighbor::transmittedLSAs [private] |
Definition at line 106 of file ansaOspfNeighbor6.h.
Definition at line 87 of file ansaOspfNeighbor6.h.
Referenced by GetUpdateRetransmissionTimer().
bool AnsaOspf6::Neighbor::updateRetransmissionTimerActive [private] |
Definition at line 88 of file ansaOspfNeighbor6.h.
Referenced by IsUpdateRetransmissionTimerActive().