INET Framework for OMNeT++/OMNEST
inet::ospfv3::Ospfv3Neighbor Class Reference

#include <Ospfv3Neighbor.h>

Classes

struct  TransmittedLSA
 

Public Types

enum  Ospfv3NeighborEventType {
  HELLO_RECEIVED = 0, START = 1, TWOWAY_RECEIVED = 2, NEGOTIATION_DONE = 3,
  EXCHANGE_DONE = 4, BAD_LINK_STATE_REQUEST = 5, LOADING_DONE = 6, IS_ADJACENCY_OK = 7,
  SEQUENCE_NUMBER_MISMATCH = 8, ONEWAY_RECEIVED = 9, KILL_NEIGHBOR = 10, INACTIVITY_TIMER = 11,
  POLL_TIMER = 12, LINK_DOWN = 13, DD_RETRANSMISSION_TIMER = 14, UPDATE_RETRANSMISSION_TIMER = 15,
  REQUEST_RETRANSMISSION_TIMER = 16
}
 
enum  Ospfv3NeighborStateType {
  DOWN_STATE = 0, ATTEMPT_STATE = 1, INIT_STATE = 2, TWOWAY_STATE = 4,
  EXCHANGE_START_STATE = 8, EXCHANGE_STATE = 16, LOADING_STATE = 32, FULL_STATE = 64
}
 
enum  Ospfv3DatabaseExchangeRelationshipType { MASTER = 0, SLAVE = 1 }
 

Public Member Functions

 Ospfv3Neighbor (Ipv4Address newId, Ospfv3Interface *parent)
 
virtual ~Ospfv3Neighbor ()
 
void setNeighborPriority (int newPriority)
 
void setNeighborDeadInterval (int newInterval)
 
void setNeighborID (Ipv4Address newId)
 
void setNeighborAddress (Ipv6Address newAddress)
 
void setDesignatedRouterID (Ipv4Address newId)
 
void setBackupDesignatedRouterID (Ipv4Address newId)
 
void setOptions (Ospfv3Options options)
 
void setDatabaseExchangeRelationship (Ospfv3DatabaseExchangeRelationshipType newRelationship)
 
void setDDSequenceNumber (unsigned long newSequenceNmr)
 
void setupDesignatedRouters (bool setUp)
 
void setNeighborInterfaceID (uint32_t newID)
 
bool designatedRoutersAreSetUp () const
 
Ospfv3InterfacegetInterface ()
 
Ipv4Address getNeighborID ()
 
Ipv4Address getNeighborsDR ()
 
Ipv4Address getNeighborsBackup ()
 
Ipv6Address getNeighborIP ()
 
L3Address getNeighborBackupIP ()
 
L3Address getNeighborDesignatedIP ()
 
uint32_t getNeighborInterfaceID ()
 
Ospfv3Options getOptions () const
 
Ospfv3DatabaseExchangeRelationshipType getDatabaseExchangeRelationship ()
 
unsigned long getDDSequenceNumber ()
 
Ospfv3NeighborStateType getState () const
 
unsigned short getNeighborPriority ()
 
unsigned short getNeighborDeadInterval ()
 
void processEvent (Ospfv3Neighbor::Ospfv3NeighborEventType event)
 
void changeState (Ospfv3NeighborState *newState, Ospfv3NeighborState *currentState)
 
void reset ()
 
cMessage * getInactivityTimer ()
 
cMessage * getPollTimer ()
 
cMessage * getDDRetransmissionTimer ()
 
cMessage * getUpdateRetransmissionTimer ()
 
cMessage * getRequestRetransmissionTimer ()
 
bool needAdjacency ()
 
bool isFirstAdjacencyInited () const
 
void initFirstAdjacency ()
 
unsigned long getUniqueULong ()
 
void incrementDDSequenceNumber ()
 
void startUpdateRetransmissionTimer ()
 
void clearUpdateRetransmissionTimer ()
 
void startRequestRetransmissionTimer ()
 
void clearRequestRetransmissionTimer ()
 
void sendDDPacket (bool init=false)
 
void sendLinkStateRequestPacket ()
 
void setLastReceivedDDPacket (Ospfv3DdPacketId packetID)
 
Ospfv3DdPacketId getLastReceivedDDPacket ()
 
bool isLinkStateRequestListEmpty ()
 
bool isRequestRetransmissionTimerActive ()
 
bool isUpdateRetransmissionTimerActive () const
 
unsigned long getDatabaseSummaryListCount () const
 
void createDatabaseSummary ()
 
void deleteLastSentDDPacket ()
 
void retransmitUpdatePacket ()
 
void addToRetransmissionList (const Ospfv3Lsa *lsaC)
 
void removeFromRetransmissionList (LSAKeyType lsaKey)
 
Ospfv3LsafindOnRetransmissionList (LSAKeyType lsaKey)
 
bool isRetransmissionListEmpty () const
 
void ageTransmittedLSAList ()
 
bool isLinkStateRequestListEmpty (LSAKeyType lsaKey) const
 
void addToRequestList (const Ospfv3LsaHeader *lsaHeader)
 
bool retransmitDatabaseDescriptionPacket ()
 
bool isLSAOnRequestList (LSAKeyType lsaKey)
 
Ospfv3LsaHeaderfindOnRequestList (LSAKeyType lsaKey)
 
void removeFromRequestList (LSAKeyType lsaKey)
 
void addToTransmittedLSAList (LSAKeyType lsaKey)
 
bool isOnTransmittedLSAList (LSAKeyType lsaKey) const
 
void setLastHelloTime (int time)
 
int getLastHelloTime ()
 

Private Attributes

Ospfv3NeighborStatestate = nullptr
 
Ospfv3NeighborStatepreviousState = nullptr
 
cMessage * inactivityTimer = nullptr
 
cMessage * pollTimer = nullptr
 
cMessage * ddRetransmissionTimer = nullptr
 
cMessage * updateRetransmissionTimer = nullptr
 
bool updateRetransmissionTimerActive = false
 
cMessage * requestRetransmissionTimer = nullptr
 
bool requestRetransmissionTimerActive = false
 
Ospfv3DatabaseExchangeRelationshipType databaseExchangeRelationship = static_cast<Ospfv3DatabaseExchangeRelationshipType>(-1)
 
bool firstAdjacencyInited = false
 
unsigned long ddSequenceNumber
 
Ospfv3DdPacketId lastReceivedDDPacket
 
unsigned short neighborRtrPriority
 
Ipv4Address neighborId
 
Ipv6Address neighborIPAddress
 
Ospfv3Options neighborOptions
 
Ipv4Address neighborsDesignatedRouter
 
Ipv4Address neighborsBackupDesignatedRouter
 
L3Address neighborsBackupIP
 Backup advertised by the router. More...
 
L3Address neighborsDesignatedIP
 
uint32_t neighborInterfaceID
 
bool designatedRoutersSetUp = false
 
short neighborsRouterDeadInterval = 0
 
std::list< Ospfv3Lsa * > linkStateRetransmissionList
 
std::list< Ospfv3LsaHeader * > databaseSummaryList
 
std::list< Ospfv3LsaHeader * > linkStateRequestList
 
std::list< TransmittedLSAtransmittedLSAs
 
PacketlastTransmittedDDPacket = nullptr
 
Ospfv3InterfacecontainingInterface = nullptr
 
int last_hello_received = 0
 

Static Private Attributes

static unsigned long ddSequenceNumberInitSeed = 0
 

Member Enumeration Documentation

◆ Ospfv3DatabaseExchangeRelationshipType

Enumerator
MASTER 
SLAVE 
53  {
54  MASTER = 0,
55  SLAVE = 1
56  };

◆ Ospfv3NeighborEventType

Enumerator
HELLO_RECEIVED 
START 
TWOWAY_RECEIVED 
NEGOTIATION_DONE 
EXCHANGE_DONE 
BAD_LINK_STATE_REQUEST 
LOADING_DONE 
IS_ADJACENCY_OK 
SEQUENCE_NUMBER_MISMATCH 
ONEWAY_RECEIVED 
KILL_NEIGHBOR 
INACTIVITY_TIMER 
POLL_TIMER 
LINK_DOWN 
DD_RETRANSMISSION_TIMER 
UPDATE_RETRANSMISSION_TIMER 
REQUEST_RETRANSMISSION_TIMER 
22  {
23  HELLO_RECEIVED = 0,
24  START = 1,
25  TWOWAY_RECEIVED = 2,
26  NEGOTIATION_DONE = 3,
27  EXCHANGE_DONE = 4,
29  LOADING_DONE = 6,
30  IS_ADJACENCY_OK = 7,
32  ONEWAY_RECEIVED = 9,
33  KILL_NEIGHBOR = 10,
34  INACTIVITY_TIMER = 11,
35  POLL_TIMER = 12,
36  LINK_DOWN = 13,
40  };

◆ Ospfv3NeighborStateType

Enumerator
DOWN_STATE 
ATTEMPT_STATE 
INIT_STATE 
TWOWAY_STATE 
EXCHANGE_START_STATE 
EXCHANGE_STATE 
LOADING_STATE 
FULL_STATE 
42  {
43  DOWN_STATE = 0,
44  ATTEMPT_STATE = 1,
45  INIT_STATE = 2,
46  TWOWAY_STATE = 4,
48  EXCHANGE_STATE = 16,
49  LOADING_STATE = 32,
50  FULL_STATE = 64
51  };

Constructor & Destructor Documentation

◆ Ospfv3Neighbor()

inet::ospfv3::Ospfv3Neighbor::Ospfv3Neighbor ( Ipv4Address  newId,
Ospfv3Interface parent 
)
12 {
13  EV_DEBUG << "$$$$$$ New Ospfv3Neighbor has been created\n";
14  this->neighborId = newId;
15  this->state = new Ospfv3NeighborStateDown;
16  this->containingInterface = parent;
20  // this is always only link local address
22  if (this->getInterface()->getArea()->getInstance()->getAddressFamily() == IPV6INSTANCE) {
25  }
26  else {
29  }
30 
31  inactivityTimer = new cMessage("Ospfv3Neighbor::NeighborInactivityTimer", NEIGHBOR_INACTIVITY_TIMER);
32  inactivityTimer->setContextPointer(this);
33  pollTimer = new cMessage("Ospfv3Neighbor::NeighborPollTimer", NEIGHBOR_POLL_TIMER);
34  pollTimer->setContextPointer(this);
35  ddRetransmissionTimer = new cMessage("Ospfv3Neighbor::NeighborDDRetransmissionTimer", NEIGHBOR_DD_RETRANSMISSION_TIMER);
36  ddRetransmissionTimer->setContextPointer(this);
37  updateRetransmissionTimer = new cMessage("Ospfv3Neighbor::Neighbor::NeighborUpdateRetransmissionTimer", NEIGHBOR_UPDATE_RETRANSMISSION_TIMER);
38  updateRetransmissionTimer->setContextPointer(this);
39  requestRetransmissionTimer = new cMessage("Ospfv3sNeighbor::NeighborRequestRetransmissionTimer", NEIGHBOR_REQUEST_RETRANSMISSION_TIMER);
40  requestRetransmissionTimer->setContextPointer(this);
41 } // constructor

◆ ~Ospfv3Neighbor()

inet::ospfv3::Ospfv3Neighbor::~Ospfv3Neighbor ( )
virtual
44 {
45  reset();
46  Ospfv3Process *proc = this->getInterface()->getArea()->getInstance()->getProcess();
48  proc->clearTimer(pollTimer);
49  proc->clearTimer(ddRetransmissionTimer);
50  proc->clearTimer(updateRetransmissionTimer);
51  proc->clearTimer(requestRetransmissionTimer);
52  delete inactivityTimer;
53  delete pollTimer;
54  delete ddRetransmissionTimer;
57  if (previousState != nullptr) {
58  delete previousState;
59  }
60  delete state;
61 } // destructor

Member Function Documentation

◆ addToRequestList()

void inet::ospfv3::Ospfv3Neighbor::addToRequestList ( const Ospfv3LsaHeader lsaHeader)
628 {
629  linkStateRequestList.push_back(new Ospfv3LsaHeader(*lsaHeader));
630  EV_DEBUG << "Currently on request list:\n";
631  for (auto it = linkStateRequestList.begin(); it != linkStateRequestList.end(); it++) {
632  EV_DEBUG << "\tType: " << (*it)->getLsaType() << ", ID: " << (*it)->getLinkStateID() << ", Adv: " << (*it)->getAdvertisingRouter() << "\n";
633  }
634 }

Referenced by inet::ospfv3::Ospfv3Interface::preProcessDDPacket().

◆ addToRetransmissionList()

void inet::ospfv3::Ospfv3Neighbor::addToRetransmissionList ( const Ospfv3Lsa lsaC)
519 {
520  auto it = linkStateRetransmissionList.begin();
521  for (; it != linkStateRetransmissionList.end(); it++) {
522  if (((*it)->getHeader().getLinkStateID() == lsa->getHeader().getLinkStateID()) &&
523  ((*it)->getHeader().getAdvertisingRouter().getInt() == lsa->getHeader().getAdvertisingRouter().getInt()))
524  {
525  break;
526  }
527  }
528 
529  Ospfv3Lsa *lsaCopy = lsa->dup();
530 // switch (lsaC->getHeader().getLsaType()) {
531 // case ROUTER_LSA:
532 // lsaCopy = new Ospfv3RouterLsa((const_cast<Ospfv3Lsa*>(lsaC))));
533 // break;
534 //
535 // case NETWORK_LSA:
536 // lsaCopy = new Ospfv3NetworkLsa(*(check_and_cast<Ospfv3NetworkLsa *>(const_cast<Ospfv3Lsa*>(lsaC))));
537 // break;
538 //
539 // case INTER_AREA_PREFIX_LSA:
540 // lsaCopy = new Ospfv3InterAreaPrefixLsa(*(check_and_cast<Ospfv3InterAreaPrefixLsa* >(const_cast<Ospfv3Lsa*>(lsaC))));
541 // break;
545 //
546 // case LINK_LSA:
547 // lsaCopy = new Ospfv3LinkLsa(*(check_and_cast<Ospfv3LinkLsa *>(const_cast<Ospfv3Lsa*>(lsaC))));
548 // break;
549 //
550 // case INTRA_AREA_PREFIX_LSA:
551 // lsaCopy = new Ospfv3IntraAreaPrefixLsa(*(check_and_cast<Ospfv3IntraAreaPrefixLsa *>(const_cast<Ospfv3Lsa*>(lsaC))));
552 // break;
553 //
554 // default:
555 // ASSERT(false); // error
556 // break;
557 // }
558 
559  // if LSA is on retransmission list then replace it
560  if (it != linkStateRetransmissionList.end()) {
561  delete *it;
562  *it = static_cast<Ospfv3Lsa *>(lsaCopy);
563  }
564  else {
565  // if not then add it
566  linkStateRetransmissionList.push_back(static_cast<Ospfv3Lsa *>(lsaCopy));
567  }
568 }

◆ addToTransmittedLSAList()

void inet::ospfv3::Ospfv3Neighbor::addToTransmittedLSAList ( LSAKeyType  lsaKey)
678 {
679  TransmittedLSA transmit;
680 
681  transmit.lsaKey = lsaKey;
682  transmit.age = 0;
683 
684  transmittedLSAs.push_back(transmit);
685 } // addToTransmittedLSAList

Referenced by inet::ospfv3::Ospfv3Interface::floodLSA().

◆ ageTransmittedLSAList()

void inet::ospfv3::Ospfv3Neighbor::ageTransmittedLSAList ( )
700 {
701  auto it = transmittedLSAs.begin();
702  while ((it != transmittedLSAs.end()) && (it->age == MIN_LS_ARRIVAL)) {
703  transmittedLSAs.pop_front();
704  it = transmittedLSAs.begin();
705  }
706 // for (long i = 0; i < transmittedLSAs.size(); i++)
707 // {
708 // transmittedLSAs[i].age++;
709 // }
710  for (it = transmittedLSAs.begin(); it != transmittedLSAs.end(); it++) {
711  it->age++;
712  }
713 } // ageTransmittedLSAList

◆ changeState()

void inet::ospfv3::Ospfv3Neighbor::changeState ( Ospfv3NeighborState newState,
Ospfv3NeighborState currentState 
)
75 {
76  if (this->previousState != nullptr) {
77  EV_DEBUG << "Changing neighbor from state" << currentState->getNeighborStateString() << " to " << newState->getNeighborStateString() << "\n";
78  delete this->previousState;
79  }
80  this->state = newState;
81  this->previousState = currentState;
82 }

Referenced by inet::ospfv3::Ospfv3NeighborState::changeState().

◆ clearRequestRetransmissionTimer()

void inet::ospfv3::Ospfv3Neighbor::clearRequestRetransmissionTimer ( )

◆ clearUpdateRetransmissionTimer()

void inet::ospfv3::Ospfv3Neighbor::clearUpdateRetransmissionTimer ( )

◆ createDatabaseSummary()

void inet::ospfv3::Ospfv3Neighbor::createDatabaseSummary ( )
291 {
292  Ospfv3Area *area = this->getInterface()->getArea();
293  int routerLSACount = area->getRouterLSACount();
294 
295  for (int i = 0; i < routerLSACount; i++) {
296  Ospfv3LsaHeader *lsaHeader = new Ospfv3LsaHeader(area->getRouterLSA(i)->getHeader());
297  this->databaseSummaryList.push_back(lsaHeader);
298  }
299 
300  int networkLSACount = area->getNetworkLSACount();
301  for (int i = 0; i < networkLSACount; i++) {
302  Ospfv3LsaHeader *lsaHeader = new Ospfv3LsaHeader(area->getNetworkLSA(i)->getHeader());
303  this->databaseSummaryList.push_back(lsaHeader);
304  }
305 
306  int interAreaPrefixCount = area->getInterAreaPrefixLSACount();
307  for (int i = 0; i < interAreaPrefixCount; i++) {
308  Ospfv3LsaHeader *lsaHeader = new Ospfv3LsaHeader(area->getInterAreaPrefixLSA(i)->getHeader());
309  this->databaseSummaryList.push_back(lsaHeader);
310  }
311 
312  int linkLsaCount = this->getInterface()->getLinkLSACount();
313  for (int i = 0; i < linkLsaCount; i++) {
314  Ospfv3LsaHeader *lsaHeader = new Ospfv3LsaHeader(this->getInterface()->getLinkLSA(i)->getHeader());
315  this->databaseSummaryList.push_back(lsaHeader);
316  }
317 
318  int intraAreaPrefixCnt = area->getIntraAreaPrefixLSACount();
319  for (int i = 0; i < intraAreaPrefixCnt; i++) {
320  Ospfv3LsaHeader *lsaHeader = new Ospfv3LsaHeader(area->getIntraAreaPrefixLSA(i)->getHeader());
321  this->databaseSummaryList.push_back(lsaHeader);
322  }
323 }

Referenced by inet::ospfv3::Ospfv3NeighborStateExStart::processEvent().

◆ deleteLastSentDDPacket()

void inet::ospfv3::Ospfv3Neighbor::deleteLastSentDDPacket ( )
716 {
717  if (lastTransmittedDDPacket != nullptr) {
719  lastTransmittedDDPacket = nullptr;
720  }
721 } // deleteLastSentDDPacket

Referenced by inet::ospfv3::Ospfv3NeighborStateFull::processEvent(), and inet::ospfv3::Ospfv3NeighborStateLoading::processEvent().

◆ designatedRoutersAreSetUp()

bool inet::ospfv3::Ospfv3Neighbor::designatedRoutersAreSetUp ( ) const
inline

◆ findOnRequestList()

Ospfv3LsaHeader * inet::ospfv3::Ospfv3Neighbor::findOnRequestList ( LSAKeyType  lsaKey)
645 {
646  // linkStateRequestList - list of LSAs that need to be received from the neighbor
647  for (auto it = linkStateRequestList.begin(); it != linkStateRequestList.end(); it++) {
648  if (((*it)->getLinkStateID() == lsaKey.linkStateID) &&
649  ((*it)->getAdvertisingRouter() == lsaKey.advertisingRouter))
650  {
651  return *it;
652  }
653  }
654  return nullptr;
655 }

Referenced by isLSAOnRequestList().

◆ findOnRetransmissionList()

Ospfv3Lsa * inet::ospfv3::Ospfv3Neighbor::findOnRetransmissionList ( LSAKeyType  lsaKey)
602 {
603  for (auto& elem : linkStateRetransmissionList) {
604  if (((elem)->getHeader().getLinkStateID() == lsaKey.linkStateID) &&
605  ((elem)->getHeader().getAdvertisingRouter() == lsaKey.advertisingRouter))
606  {
607  return elem;
608  }
609  }
610  return nullptr;
611 }

Referenced by inet::ospfv3::Ospfv3Interface::processLSAck().

◆ getDatabaseExchangeRelationship()

Ospfv3DatabaseExchangeRelationshipType inet::ospfv3::Ospfv3Neighbor::getDatabaseExchangeRelationship ( )
inline

◆ getDatabaseSummaryListCount()

unsigned long inet::ospfv3::Ospfv3Neighbor::getDatabaseSummaryListCount ( ) const
inline

◆ getDDRetransmissionTimer()

◆ getDDSequenceNumber()

unsigned long inet::ospfv3::Ospfv3Neighbor::getDDSequenceNumber ( )
inline

◆ getInactivityTimer()

◆ getInterface()

◆ getLastHelloTime()

int inet::ospfv3::Ospfv3Neighbor::getLastHelloTime ( )
inline

◆ getLastReceivedDDPacket()

Ospfv3DdPacketId inet::ospfv3::Ospfv3Neighbor::getLastReceivedDDPacket ( )
inline

◆ getNeighborBackupIP()

L3Address inet::ospfv3::Ospfv3Neighbor::getNeighborBackupIP ( )
inline
83 { return this->neighborsBackupIP; }

◆ getNeighborDeadInterval()

unsigned short inet::ospfv3::Ospfv3Neighbor::getNeighborDeadInterval ( )
inline

◆ getNeighborDesignatedIP()

L3Address inet::ospfv3::Ospfv3Neighbor::getNeighborDesignatedIP ( )
inline
84 { return this->neighborsDesignatedIP; }

◆ getNeighborID()

◆ getNeighborInterfaceID()

◆ getNeighborIP()

◆ getNeighborPriority()

◆ getNeighborsBackup()

Ipv4Address inet::ospfv3::Ospfv3Neighbor::getNeighborsBackup ( )
inline

◆ getNeighborsDR()

Ipv4Address inet::ospfv3::Ospfv3Neighbor::getNeighborsDR ( )
inline

◆ getOptions()

Ospfv3Options inet::ospfv3::Ospfv3Neighbor::getOptions ( ) const
inline
86 { return this->neighborOptions; }

◆ getPollTimer()

◆ getRequestRetransmissionTimer()

cMessage* inet::ospfv3::Ospfv3Neighbor::getRequestRetransmissionTimer ( )
inline

◆ getState()

◆ getUniqueULong()

unsigned long inet::ospfv3::Ospfv3Neighbor::getUniqueULong ( )
146 {
147  return ddSequenceNumberInitSeed++;
148 }

Referenced by initFirstAdjacency().

◆ getUpdateRetransmissionTimer()

cMessage* inet::ospfv3::Ospfv3Neighbor::getUpdateRetransmissionTimer ( )
inline

◆ incrementDDSequenceNumber()

◆ initFirstAdjacency()

void inet::ospfv3::Ospfv3Neighbor::initFirstAdjacency ( )

◆ isFirstAdjacencyInited()

bool inet::ospfv3::Ospfv3Neighbor::isFirstAdjacencyInited ( ) const
inline

◆ isLinkStateRequestListEmpty() [1/2]

bool inet::ospfv3::Ospfv3Neighbor::isLinkStateRequestListEmpty ( )
inline

◆ isLinkStateRequestListEmpty() [2/2]

bool inet::ospfv3::Ospfv3Neighbor::isLinkStateRequestListEmpty ( LSAKeyType  lsaKey) const
590 {
591  for (auto lsa : linkStateRetransmissionList) {
592  if ((lsa->getHeader().getLinkStateID() == lsaKey.linkStateID) &&
593  (lsa->getHeader().getAdvertisingRouter() == lsaKey.advertisingRouter))
594  {
595  return true;
596  }
597  }
598  return false;
599 }

◆ isLSAOnRequestList()

bool inet::ospfv3::Ospfv3Neighbor::isLSAOnRequestList ( LSAKeyType  lsaKey)
637 {
638  if (findOnRequestList(lsaKey) == nullptr)
639  return false;
640 
641  return true;
642 }

◆ isOnTransmittedLSAList()

bool inet::ospfv3::Ospfv3Neighbor::isOnTransmittedLSAList ( LSAKeyType  lsaKey) const
688 {
689  for (std::list<TransmittedLSA>::const_iterator it = transmittedLSAs.begin(); it != transmittedLSAs.end(); it++) {
690  if ((it->lsaKey.linkStateID == lsaKey.linkStateID) &&
691  (it->lsaKey.advertisingRouter == lsaKey.advertisingRouter))
692  {
693  return true;
694  }
695  }
696  return false;
697 } // isOnTransmittedLSAList

◆ isRequestRetransmissionTimerActive()

bool inet::ospfv3::Ospfv3Neighbor::isRequestRetransmissionTimerActive ( )
inline

◆ isRetransmissionListEmpty()

bool inet::ospfv3::Ospfv3Neighbor::isRetransmissionListEmpty ( ) const
inline

◆ isUpdateRetransmissionTimerActive()

bool inet::ospfv3::Ospfv3Neighbor::isUpdateRetransmissionTimerActive ( ) const
inline

◆ needAdjacency()

bool inet::ospfv3::Ospfv3Neighbor::needAdjacency ( )
115 {
116  Ospfv3Interface::Ospfv3InterfaceType interfaceType = this->getInterface()->getType();
117  Ipv4Address routerID = this->getInterface()->getArea()->getInstance()->getProcess()->getRouterID();
118  Ipv4Address dRouter = this->getInterface()->getDesignatedID();
119  Ipv4Address backupDRouter = this->getInterface()->getBackupID();
120 
121  if ((interfaceType == Ospfv3Interface::POINTTOPOINT_TYPE) ||
122  (interfaceType == Ospfv3Interface::POINTTOMULTIPOINT_TYPE) ||
123  (interfaceType == Ospfv3Interface::VIRTUAL_TYPE) ||
124  (dRouter == routerID) ||
125  (backupDRouter == routerID) ||
128  (this->getNeighborID() == dRouter) ||
129  (this->getNeighborID() == backupDRouter))
130  {
131  EV_DEBUG << "I need an adjacency with router " << this->getNeighborID() << "\n";
132  return true;
133  }
134  else {
135  return false;
136  }
137 }

Referenced by inet::ospfv3::Ospfv3NeighborStateFull::processEvent(), inet::ospfv3::Ospfv3NeighborStateLoading::processEvent(), inet::ospfv3::Ospfv3NeighborState2Way::processEvent(), inet::ospfv3::Ospfv3NeighborStateExchange::processEvent(), inet::ospfv3::Ospfv3NeighborStateExStart::processEvent(), and inet::ospfv3::Ospfv3NeighborStateInit::processEvent().

◆ processEvent()

◆ removeFromRequestList()

void inet::ospfv3::Ospfv3Neighbor::removeFromRequestList ( LSAKeyType  lsaKey)
658 {
659  auto it = linkStateRequestList.begin();
660  while (it != linkStateRequestList.end()) {
661  if (((*it)->getLinkStateID() == lsaKey.linkStateID) &&
662  ((*it)->getAdvertisingRouter() == lsaKey.advertisingRouter))
663  {
664  delete *it;
665  it = linkStateRequestList.erase(it);
666  }
667  else {
668  it++;
669  }
670  }
674  }
675 } // removeFromRequestList

Referenced by inet::ospfv3::Ospfv3Interface::processLSU().

◆ removeFromRetransmissionList()

void inet::ospfv3::Ospfv3Neighbor::removeFromRetransmissionList ( LSAKeyType  lsaKey)
571 {
572  auto it = linkStateRetransmissionList.begin();
573  int counter = 0;
574  while (it != linkStateRetransmissionList.end()) {
575 
576  EV_DEBUG << counter++ << " - HEADER in retransmition list:\n" << (*it)->getHeader() << "\n";
577  if (((*it)->getHeader().getLinkStateID() == lsaKey.linkStateID) &&
578  ((*it)->getHeader().getAdvertisingRouter() == lsaKey.advertisingRouter))
579  {
580  delete *it;
581  it = linkStateRetransmissionList.erase(it);
582  }
583  else {
584  it++;
585  }
586  }
587 } // removeFromRetransmissionList

Referenced by inet::ospfv3::Ospfv3Interface::processLSAck(), and inet::ospfv3::Ospfv3Interface::processLSU().

◆ reset()

void inet::ospfv3::Ospfv3Neighbor::reset ( )
85 {
86  EV_DEBUG << "Reseting the neighbor " << this->getNeighborID() << "\n";
87  for (auto retIt = linkStateRetransmissionList.begin();
88  retIt != linkStateRetransmissionList.end();
89  retIt++)
90  {
91  delete *retIt;
92  }
94 
95  for (auto it = databaseSummaryList.begin(); it != databaseSummaryList.end(); it++) {
96  delete *it;
97  }
98  databaseSummaryList.clear();
99  for (auto it = linkStateRequestList.begin(); it != linkStateRequestList.end(); it++) {
100  delete *it;
101  }
102  linkStateRequestList.clear();
103 
107 
108  if (lastTransmittedDDPacket != nullptr) {
110  lastTransmittedDDPacket = nullptr;
111  }
112 }

Referenced by inet::ospfv3::Ospfv3NeighborStateAttempt::processEvent(), inet::ospfv3::Ospfv3NeighborStateLoading::processEvent(), inet::ospfv3::Ospfv3NeighborStateFull::processEvent(), inet::ospfv3::Ospfv3NeighborStateExchange::processEvent(), inet::ospfv3::Ospfv3NeighborState2Way::processEvent(), inet::ospfv3::Ospfv3NeighborStateInit::processEvent(), inet::ospfv3::Ospfv3NeighborStateExStart::processEvent(), and ~Ospfv3Neighbor().

◆ retransmitDatabaseDescriptionPacket()

bool inet::ospfv3::Ospfv3Neighbor::retransmitDatabaseDescriptionPacket ( )
614 {
615  EV_DEBUG << "Retransmitting DD Packet\n";
616  if (lastTransmittedDDPacket != nullptr) {
617  Packet *ddPacket = new Packet(*lastTransmittedDDPacket);
618  this->getInterface()->getArea()->getInstance()->getProcess()->sendPacket(ddPacket, this->getNeighborIP(), this->getInterface()->getIntName().c_str());
619  return true;
620  }
621  else {
622  EV_DEBUG << "But no packet is in the line\n";
623  return false;
624  }
625 }

Referenced by inet::ospfv3::Ospfv3Interface::processDDPacket(), and inet::ospfv3::Ospfv3NeighborStateExStart::processEvent().

◆ retransmitUpdatePacket()

void inet::ospfv3::Ospfv3Neighbor::retransmitUpdatePacket ( )
326 {
327  EV_DEBUG << "Retransmitting update packet\n";
328  const auto& updatePacket = makeShared<Ospfv3LinkStateUpdatePacket>();
329 
330  updatePacket->setType(ospf::LINKSTATE_UPDATE_PACKET);
331  updatePacket->setRouterID(this->getInterface()->getArea()->getInstance()->getProcess()->getRouterID());
332  updatePacket->setAreaID(this->getInterface()->getArea()->getAreaID());
333  updatePacket->setInstanceID(this->getInterface()->getArea()->getInstance()->getInstanceID());
334 
335  bool packetFull = false;
336  unsigned short lsaCount = 0;
338  auto it = linkStateRetransmissionList.begin();
339 
340  while (!packetFull && (it != linkStateRetransmissionList.end())) {
341  uint16_t lsaType = (*it)->getHeader().getLsaType();
342  const Ospfv3RouterLsa *routerLSA = (lsaType == ROUTER_LSA) ? dynamic_cast<Ospfv3RouterLsa *>(*it) : nullptr;
343  const Ospfv3NetworkLsa *networkLSA = (lsaType == NETWORK_LSA) ? dynamic_cast<Ospfv3NetworkLsa *>(*it) : nullptr;
344  const Ospfv3LinkLsa *linkLSA = (lsaType == LINK_LSA) ? dynamic_cast<Ospfv3LinkLsa *>(*it) : nullptr;
345  const Ospfv3InterAreaPrefixLsa *interAreaPrefixLSA = (lsaType == INTER_AREA_PREFIX_LSA) ? dynamic_cast<Ospfv3InterAreaPrefixLsa *>(*it) : nullptr;
346  const Ospfv3IntraAreaPrefixLsa *intraAreaPrefixLSA = (lsaType == INTRA_AREA_PREFIX_LSA) ? dynamic_cast<Ospfv3IntraAreaPrefixLsa *>(*it) : nullptr;
347 // OSPFASExternalLSA *asExternalLSA = (lsaType == AS_EXTERNAL_LSA_TYPE) ? dynamic_cast<OSPFASExternalLSA *>(*it) : nullptr;
348  B lsaSize;
349  bool includeLSA = false;
350 
351  switch (lsaType) {
352  case ROUTER_LSA:
353  if (routerLSA != nullptr) {
354  lsaSize = calculateLSASize(routerLSA);
355  }
356  break;
357 
358  case NETWORK_LSA:
359  if (networkLSA != nullptr) {
360  lsaSize = calculateLSASize(networkLSA);
361  }
362  break;
364  if (interAreaPrefixLSA != nullptr) {
365  lsaSize = calculateLSASize(interAreaPrefixLSA);
366  }
367  break;
368 // case AS_EXTERNAL_LSA_TYPE:
369 // if (asExternalLSA != nullptr) {
370 // lsaSize = calculateLSASize(asExternalLSA);
371 // }
372 // break;
373 //
374 // default:
375 // break;
376  case LINK_LSA:
377  if (linkLSA != nullptr)
378  lsaSize = calculateLSASize(linkLSA);
379  break;
381  if (intraAreaPrefixLSA != nullptr) {
382  lsaSize = calculateLSASize(intraAreaPrefixLSA);
383  }
384  break;
385  }
386 
387  if (B(packetLength + lsaSize).get() < this->getInterface()->getInterfaceMTU()) {
388  includeLSA = true;
389  lsaCount++;
390  }
391  else {
392  if ((lsaCount == 0) && (packetLength + lsaSize < IPV6_DATAGRAM_LENGTH)) {
393  includeLSA = true;
394  lsaCount++;
395  packetFull = true;
396  }
397  }
398 
399  if (includeLSA) {
400  packetLength += lsaSize;
401  switch (lsaType) {
402  case ROUTER_LSA:
403  if (routerLSA != nullptr) {
404  unsigned int routerLSACount = updatePacket->getRouterLSAsArraySize();
405 
406  updatePacket->setRouterLSAsArraySize(routerLSACount + 1);
407  updatePacket->setRouterLSAs(routerLSACount, *routerLSA);
408 
409  unsigned short lsAge = updatePacket->getRouterLSAs(routerLSACount).getHeader().getLsaAge();
410  if (lsAge < MAX_AGE - this->getInterface()->getTransDelayInterval()) {
411  updatePacket->getRouterLSAsForUpdate(routerLSACount).getHeaderForUpdate().setLsaAge(lsAge + this->getInterface()->getTransDelayInterval());
412  }
413  else {
414  updatePacket->getRouterLSAsForUpdate(routerLSACount).getHeaderForUpdate().setLsaAge(MAX_AGE);
415  }
416  }
417  break;
418 
419  case NETWORK_LSA:
420  if (networkLSA != nullptr) {
421  unsigned int networkLSACount = updatePacket->getNetworkLSAsArraySize();
422 
423  updatePacket->setNetworkLSAsArraySize(networkLSACount + 1);
424  updatePacket->setNetworkLSAs(networkLSACount, *networkLSA);
425 
426  unsigned short lsAge = updatePacket->getNetworkLSAs(networkLSACount).getHeader().getLsaAge();
427  if (lsAge < MAX_AGE - this->getInterface()->getTransDelayInterval()) {
428  updatePacket->getNetworkLSAsForUpdate(networkLSACount).getHeaderForUpdate().setLsaAge(lsAge + this->getInterface()->getTransDelayInterval());
429  }
430  else {
431  updatePacket->getNetworkLSAsForUpdate(networkLSACount).getHeaderForUpdate().setLsaAge(MAX_AGE);
432  }
433  }
434  break;
436  if (interAreaPrefixLSA != nullptr) {
437  unsigned int interAreaPrefixLSACount = updatePacket->getInterAreaPrefixLSAsArraySize();
438 
439  updatePacket->setInterAreaPrefixLSAsArraySize(interAreaPrefixLSACount + 1);
440  updatePacket->setInterAreaPrefixLSAs(interAreaPrefixLSACount, *interAreaPrefixLSA);
441 
442  unsigned short lsAge = updatePacket->getInterAreaPrefixLSAs(interAreaPrefixLSACount).getHeader().getLsaAge();
443  if (lsAge < MAX_AGE - this->getInterface()->getTransDelayInterval()) {
444  updatePacket->getInterAreaPrefixLSAsForUpdate(interAreaPrefixLSACount).getHeaderForUpdate().setLsaAge(lsAge + this->getInterface()->getTransDelayInterval());
445  }
446  else {
447  updatePacket->getInterAreaPrefixLSAsForUpdate(interAreaPrefixLSACount).getHeaderForUpdate().setLsaAge(MAX_AGE);
448  }
449  }
450  break;
451 // case AS_EXTERNAL_LSA_TYPE:
452 // if (asExternalLSA != nullptr) {
453 // unsigned int asExternalLSACount = updatePacket->getAsExternalLSAsArraySize();
454 //
455 // updatePacket->setAsExternalLSAsArraySize(asExternalLSACount + 1);
456 // updatePacket->setAsExternalLSAs(asExternalLSACount, *asExternalLSA);
457 //
458 // unsigned short lsAge = updatePacket->getAsExternalLSAs(asExternalLSACount).getHeader().getLsAge();
459 // if (lsAge < MAX_AGE - parentInterface->getTransmissionDelay()) {
460 // updatePacket->getAsExternalLSAs(asExternalLSACount).getHeader().setLsAge(lsAge + parentInterface->getTransmissionDelay());
461 // }
462 // else {
463 // updatePacket->getAsExternalLSAs(asExternalLSACount).getHeader().setLsAge(MAX_AGE);
464 // }
465 // }
466 // break;
467  case LINK_LSA:
468  if (linkLSA != nullptr) {
469  unsigned int linkLSACount = updatePacket->getLinkLSAsArraySize();
470 
471  updatePacket->setLinkLSAsArraySize(linkLSACount + 1);
472  updatePacket->setLinkLSAs(linkLSACount, *linkLSA);
473 
474  unsigned short lsAge = updatePacket->getLinkLSAs(linkLSACount).getHeader().getLsaAge();
475  if (lsAge < MAX_AGE - this->getInterface()->getTransDelayInterval()) {
476  updatePacket->getLinkLSAsForUpdate(linkLSACount).getHeaderForUpdate().setLsaAge(lsAge + this->getInterface()->getTransDelayInterval());
477  }
478  else {
479  updatePacket->getLinkLSAsForUpdate(linkLSACount).getHeaderForUpdate().setLsaAge(MAX_AGE);
480  }
481  }
482  break;
484  if (intraAreaPrefixLSA != nullptr) {
485  unsigned int intraAreaPrefixLSACount = updatePacket->getIntraAreaPrefixLSAsArraySize();
486 
487  updatePacket->setIntraAreaPrefixLSAsArraySize(intraAreaPrefixLSACount + 1);
488  updatePacket->setIntraAreaPrefixLSAs(intraAreaPrefixLSACount, *intraAreaPrefixLSA);
489 
490  unsigned short lsAge = updatePacket->getIntraAreaPrefixLSAs(intraAreaPrefixLSACount).getHeader().getLsaAge();
491  if (lsAge < MAX_AGE - this->getInterface()->getTransDelayInterval()) {
492  updatePacket->getIntraAreaPrefixLSAsForUpdate(intraAreaPrefixLSACount).getHeaderForUpdate().setLsaAge(lsAge + this->getInterface()->getTransDelayInterval());
493  }
494  else {
495  updatePacket->getIntraAreaPrefixLSAsForUpdate(intraAreaPrefixLSACount).getHeaderForUpdate().setLsaAge(MAX_AGE);
496  }
497  }
498  break;
499  default:
500  break;
501  }
502  }
503 
504  it++;
505  }
506 
507  EV_DEBUG << "Retransmit - packet length: " << packetLength << "\n";
508  updatePacket->setChunkLength(B(packetLength)); // IPV6 HEADER BYTES
509  Packet *pk = new Packet();
510  pk->insertAtBack(updatePacket);
511 
512  this->getInterface()->getArea()->getInstance()->getProcess()->sendPacket(pk, this->getNeighborIP(), this->getInterface()->getIntName().c_str());
513  // TODO
514 // int ttl = (parentInterface->getType() == Interface::VIRTUAL) ? VIRTUAL_LINK_TTL : 1;
515 // messageHandler->sendPacket(updatePacket, neighborIPAddress, parentInterface->getIfIndex(), ttl);
516 }

Referenced by inet::ospfv3::Ospfv3NeighborStateFull::processEvent(), inet::ospfv3::Ospfv3NeighborStateLoading::processEvent(), and inet::ospfv3::Ospfv3NeighborStateExchange::processEvent().

◆ sendDDPacket()

void inet::ospfv3::Ospfv3Neighbor::sendDDPacket ( bool  init = false)

&& (packetSize <= (maxPacketSize - OSPF_LSA_HEADER_LENGTH))) {

176 {
177  EV_DEBUG << "Start of function send DD Packet\n";
178  const auto& ddPacket = makeShared<Ospfv3DatabaseDescriptionPacket>();
179 
180  // common header first
181  ddPacket->setType(ospf::DATABASE_DESCRIPTION_PACKET);
182  ddPacket->setRouterID(this->getInterface()->getArea()->getInstance()->getProcess()->getRouterID());
183  ddPacket->setAreaID(this->getInterface()->getArea()->getAreaID());
184  ddPacket->setInstanceID(this->getInterface()->getArea()->getInstance()->getInstanceID());
185 
186  // DD packet next
187  Ospfv3Options options;
188  options.eBit = this->getInterface()->getArea()->getExternalRoutingCapability();
189  ddPacket->setOptions(options);
190  ddPacket->setInterfaceMTU(this->getInterface()->getInterfaceMTU());
191  Ospfv3DdOptions ddOptions;
192  ddPacket->setSequenceNumber(this->ddSequenceNumber);
193 
195 
196  if (init || databaseSummaryList.empty()) {
197  ddPacket->setLsaHeadersArraySize(0);
198  }
199  else {
200  while (!this->databaseSummaryList.empty()) {
201  unsigned long headerCount = ddPacket->getLsaHeadersArraySize();
202  Ospfv3LsaHeader *lsaHeader = *(databaseSummaryList.begin());
203  ddPacket->setLsaHeadersArraySize(headerCount + 1);
204  ddPacket->setLsaHeaders(headerCount, *lsaHeader);
205  delete lsaHeader;
206  databaseSummaryList.pop_front();
207  packetSize += OSPFV3_LSA_HEADER_LENGTH;
208  }
209  }
210 
211  EV_DEBUG << "DatabaseSummatyListCount = " << this->getDatabaseSummaryListCount() << endl;
212  if (init) {
213  ddOptions.iBit = true;
214  ddOptions.mBit = true;
215  ddOptions.msBit = true;
216  }
217  else {
218  ddOptions.iBit = false;
219  ddOptions.mBit = (databaseSummaryList.empty()) ? false : true;
220  ddOptions.msBit = (databaseExchangeRelationship == Ospfv3Neighbor::MASTER) ? true : false;
221  }
222 
223  ddPacket->setDdOptions(ddOptions);
224 
225  ddPacket->setPacketLengthField(packetSize.get());
226  ddPacket->setChunkLength(packetSize);
227  Packet *pk = new Packet();
228  pk->insertAtBack(ddPacket);
229 
230  // TODO - ddPacket does not include Virtual Links and HopLimit. Also Checksum is not calculated
231  if (this->getInterface()->getType() == Ospfv3Interface::POINTTOPOINT_TYPE) {
232  EV_DEBUG << "(P2P link ) Send DD Packet to OSPF MCAST\n";
233  this->getInterface()->getArea()->getInstance()->getProcess()->sendPacket(pk, Ipv6Address::ALL_OSPF_ROUTERS_MCAST, this->getInterface()->getIntName().c_str());
234  }
235  else {
236  EV_DEBUG << "Send DD Packet to " << this->getNeighborIP() << "\n";
237  this->getInterface()->getArea()->getInstance()->getProcess()->sendPacket(pk, this->getNeighborIP(), this->getInterface()->getIntName().c_str());
238  }
239 }

Referenced by inet::ospfv3::Ospfv3Interface::preProcessDDPacket(), inet::ospfv3::Ospfv3Interface::processDDPacket(), inet::ospfv3::Ospfv3NeighborStateLoading::processEvent(), inet::ospfv3::Ospfv3NeighborStateFull::processEvent(), inet::ospfv3::Ospfv3NeighborStateExchange::processEvent(), inet::ospfv3::Ospfv3NeighborState2Way::processEvent(), inet::ospfv3::Ospfv3NeighborStateInit::processEvent(), and inet::ospfv3::Ospfv3NeighborStateExStart::processEvent().

◆ sendLinkStateRequestPacket()

void inet::ospfv3::Ospfv3Neighbor::sendLinkStateRequestPacket ( )
242 {
243  const auto& requestPacket = makeShared<Ospfv3LinkStateRequestPacket>();
244  requestPacket->setType(ospf::LINKSTATE_REQUEST_PACKET);
245  requestPacket->setRouterID(this->getInterface()->getArea()->getInstance()->getProcess()->getRouterID());
246  requestPacket->setAreaID(this->getInterface()->getArea()->getAreaID());
247  requestPacket->setInstanceID(this->getInterface()->getArea()->getInstance()->getInstanceID());
248 
249 // long maxPacketSize = (((IP_MAX_HEADER_BYTES + OSPF_HEADER_LENGTH + OSPF_REQUEST_LENGTH) > parentInterface->getMTU()) ?
250 // IPV4_DATAGRAM_LENGTH :
251 // parentInterface->getMTU()) - IP_MAX_HEADER_BYTES;
252  B packetSize = OSPFV3_HEADER_LENGTH;
253 
254  if (linkStateRequestList.empty()) {
255  requestPacket->setRequestsArraySize(0);
256  }
257  else {
258  auto it = linkStateRequestList.begin();
259 
260  while (it != linkStateRequestList.end()) { // TODO - maxpacketsize
261  unsigned long requestCount = requestPacket->getRequestsArraySize();
262  Ospfv3LsaHeader *requestHeader = (*it);
263  Ospfv3LsRequest request;
264 
265  request.lsaType = requestHeader->getLsaType();
266  request.lsaID = requestHeader->getLinkStateID();
267  request.advertisingRouter = requestHeader->getAdvertisingRouter();
268 
269  requestPacket->setRequestsArraySize(requestCount + 1);
270  requestPacket->setRequests(requestCount, request);
271 
272  packetSize += OSPFV3_LSR_LENGTH;
273  it++;
274  }
275  }
276 
277  requestPacket->setChunkLength(packetSize);
278  // TODO - TTL and Checksum calculation for LS Request is not implemented yet
279 
280  Packet *pk = new Packet();
281  pk->insertAtBack(requestPacket);
282  if (this->getInterface()->getType() == Ospfv3Interface::POINTTOPOINT_TYPE) {
283  this->getInterface()->getArea()->getInstance()->getProcess()->sendPacket(pk, Ipv6Address::ALL_OSPF_ROUTERS_MCAST, this->getInterface()->getIntName().c_str());
284  }
285  else {
286  this->getInterface()->getArea()->getInstance()->getProcess()->sendPacket(pk, this->getNeighborIP(), this->getInterface()->getIntName().c_str());
287  }
288 }

Referenced by inet::ospfv3::Ospfv3Interface::processDDPacket(), inet::ospfv3::Ospfv3NeighborStateLoading::processEvent(), and inet::ospfv3::Ospfv3NeighborStateExchange::processEvent().

◆ setBackupDesignatedRouterID()

void inet::ospfv3::Ospfv3Neighbor::setBackupDesignatedRouterID ( Ipv4Address  newId)
inline

◆ setDatabaseExchangeRelationship()

void inet::ospfv3::Ospfv3Neighbor::setDatabaseExchangeRelationship ( Ospfv3DatabaseExchangeRelationshipType  newRelationship)
inline
72 { this->databaseExchangeRelationship = newRelationship; }

Referenced by inet::ospfv3::Ospfv3Interface::processDDPacket().

◆ setDDSequenceNumber()

void inet::ospfv3::Ospfv3Neighbor::setDDSequenceNumber ( unsigned long  newSequenceNmr)
inline
73 { this->ddSequenceNumber = newSequenceNmr; }

Referenced by inet::ospfv3::Ospfv3Interface::preProcessDDPacket().

◆ setDesignatedRouterID()

void inet::ospfv3::Ospfv3Neighbor::setDesignatedRouterID ( Ipv4Address  newId)
inline

◆ setLastHelloTime()

void inet::ospfv3::Ospfv3Neighbor::setLastHelloTime ( int  time)
inline

◆ setLastReceivedDDPacket()

void inet::ospfv3::Ospfv3Neighbor::setLastReceivedDDPacket ( Ospfv3DdPacketId  packetID)
inline

◆ setNeighborAddress()

void inet::ospfv3::Ospfv3Neighbor::setNeighborAddress ( Ipv6Address  newAddress)
inline
68 { this->neighborIPAddress = newAddress; }

Referenced by inet::ospfv3::Ospfv3Interface::processHelloPacket().

◆ setNeighborDeadInterval()

void inet::ospfv3::Ospfv3Neighbor::setNeighborDeadInterval ( int  newInterval)
inline

◆ setNeighborID()

void inet::ospfv3::Ospfv3Neighbor::setNeighborID ( Ipv4Address  newId)
inline
67 { this->neighborId = newId; }

Referenced by inet::ospfv3::Ospfv3Interface::processHelloPacket().

◆ setNeighborInterfaceID()

void inet::ospfv3::Ospfv3Neighbor::setNeighborInterfaceID ( uint32_t  newID)
inline

◆ setNeighborPriority()

void inet::ospfv3::Ospfv3Neighbor::setNeighborPriority ( int  newPriority)
inline
65 { this->neighborRtrPriority = newPriority; }

Referenced by inet::ospfv3::Ospfv3Interface::processHelloPacket().

◆ setOptions()

void inet::ospfv3::Ospfv3Neighbor::setOptions ( Ospfv3Options  options)
inline
71 { this->neighborOptions = options; }

◆ setupDesignatedRouters()

void inet::ospfv3::Ospfv3Neighbor::setupDesignatedRouters ( bool  setUp)
inline

◆ startRequestRetransmissionTimer()

void inet::ospfv3::Ospfv3Neighbor::startRequestRetransmissionTimer ( )

◆ startUpdateRetransmissionTimer()

void inet::ospfv3::Ospfv3Neighbor::startUpdateRetransmissionTimer ( )

Member Data Documentation

◆ containingInterface

Ospfv3Interface* inet::ospfv3::Ospfv3Neighbor::containingInterface = nullptr
private

Referenced by getInterface(), and Ospfv3Neighbor().

◆ databaseExchangeRelationship

Ospfv3DatabaseExchangeRelationshipType inet::ospfv3::Ospfv3Neighbor::databaseExchangeRelationship = static_cast<Ospfv3DatabaseExchangeRelationshipType>(-1)
private

◆ databaseSummaryList

std::list<Ospfv3LsaHeader *> inet::ospfv3::Ospfv3Neighbor::databaseSummaryList
private

◆ ddRetransmissionTimer

cMessage* inet::ospfv3::Ospfv3Neighbor::ddRetransmissionTimer = nullptr
private

◆ ddSequenceNumber

unsigned long inet::ospfv3::Ospfv3Neighbor::ddSequenceNumber
private

◆ ddSequenceNumberInitSeed

unsigned long inet::ospfv3::Ospfv3Neighbor::ddSequenceNumberInitSeed = 0
staticprivate

Referenced by getUniqueULong().

◆ designatedRoutersSetUp

bool inet::ospfv3::Ospfv3Neighbor::designatedRoutersSetUp = false
private

◆ firstAdjacencyInited

bool inet::ospfv3::Ospfv3Neighbor::firstAdjacencyInited = false
private

◆ inactivityTimer

cMessage* inet::ospfv3::Ospfv3Neighbor::inactivityTimer = nullptr
private

◆ last_hello_received

int inet::ospfv3::Ospfv3Neighbor::last_hello_received = 0
private

◆ lastReceivedDDPacket

Ospfv3DdPacketId inet::ospfv3::Ospfv3Neighbor::lastReceivedDDPacket
private

◆ lastTransmittedDDPacket

Packet* inet::ospfv3::Ospfv3Neighbor::lastTransmittedDDPacket = nullptr
private

◆ linkStateRequestList

std::list<Ospfv3LsaHeader *> inet::ospfv3::Ospfv3Neighbor::linkStateRequestList
private

◆ linkStateRetransmissionList

◆ neighborId

Ipv4Address inet::ospfv3::Ospfv3Neighbor::neighborId
private

◆ neighborInterfaceID

uint32_t inet::ospfv3::Ospfv3Neighbor::neighborInterfaceID
private

◆ neighborIPAddress

Ipv6Address inet::ospfv3::Ospfv3Neighbor::neighborIPAddress
private

◆ neighborOptions

Ospfv3Options inet::ospfv3::Ospfv3Neighbor::neighborOptions
private

Referenced by getOptions(), and setOptions().

◆ neighborRtrPriority

unsigned short inet::ospfv3::Ospfv3Neighbor::neighborRtrPriority
private

◆ neighborsBackupDesignatedRouter

Ipv4Address inet::ospfv3::Ospfv3Neighbor::neighborsBackupDesignatedRouter
private

◆ neighborsBackupIP

L3Address inet::ospfv3::Ospfv3Neighbor::neighborsBackupIP
private

Backup advertised by the router.

Referenced by getNeighborBackupIP(), and Ospfv3Neighbor().

◆ neighborsDesignatedIP

L3Address inet::ospfv3::Ospfv3Neighbor::neighborsDesignatedIP
private

◆ neighborsDesignatedRouter

Ipv4Address inet::ospfv3::Ospfv3Neighbor::neighborsDesignatedRouter
private

◆ neighborsRouterDeadInterval

short inet::ospfv3::Ospfv3Neighbor::neighborsRouterDeadInterval = 0
private

◆ pollTimer

cMessage* inet::ospfv3::Ospfv3Neighbor::pollTimer = nullptr
private

◆ previousState

Ospfv3NeighborState* inet::ospfv3::Ospfv3Neighbor::previousState = nullptr
private

Referenced by changeState(), and ~Ospfv3Neighbor().

◆ requestRetransmissionTimer

cMessage* inet::ospfv3::Ospfv3Neighbor::requestRetransmissionTimer = nullptr
private

◆ requestRetransmissionTimerActive

bool inet::ospfv3::Ospfv3Neighbor::requestRetransmissionTimerActive = false
private

◆ state

Ospfv3NeighborState* inet::ospfv3::Ospfv3Neighbor::state = nullptr
private

◆ transmittedLSAs

std::list<TransmittedLSA> inet::ospfv3::Ospfv3Neighbor::transmittedLSAs
private

◆ updateRetransmissionTimer

cMessage* inet::ospfv3::Ospfv3Neighbor::updateRetransmissionTimer = nullptr
private

◆ updateRetransmissionTimerActive

bool inet::ospfv3::Ospfv3Neighbor::updateRetransmissionTimerActive = false
private

The documentation for this class was generated from the following files:
inet::ospfv3::Ospfv3Neighbor::neighborRtrPriority
unsigned short neighborRtrPriority
Definition: Ospfv3Neighbor.h:158
inet::ospfv3::Ospfv3Neighbor::inactivityTimer
cMessage * inactivityTimer
Definition: Ospfv3Neighbor.h:147
inet::ospfv3::Ospfv3Neighbor::TWOWAY_STATE
@ TWOWAY_STATE
Definition: Ospfv3Neighbor.h:46
inet::ospfv3::Ospfv3Neighbor::requestRetransmissionTimer
cMessage * requestRetransmissionTimer
Definition: Ospfv3Neighbor.h:152
inet::ospfv3::Ospfv3Neighbor::processEvent
void processEvent(Ospfv3Neighbor::Ospfv3NeighborEventType event)
Definition: Ospfv3Neighbor.cc:68
inet::ospfv3::IPV6_DATAGRAM_LENGTH
const B IPV6_DATAGRAM_LENGTH
Definition: Ospfv3Common.h:56
inet::ospfv3::Ospfv3Neighbor::TWOWAY_RECEIVED
@ TWOWAY_RECEIVED
Definition: Ospfv3Neighbor.h:25
inet::ospfv3::Ospfv3Neighbor::getNeighborID
Ipv4Address getNeighborID()
Definition: Ospfv3Neighbor.h:79
inet::ospfv3::Ospfv3Neighbor::FULL_STATE
@ FULL_STATE
Definition: Ospfv3Neighbor.h:50
inet::ospfv3::Ospfv3Neighbor::getRequestRetransmissionTimer
cMessage * getRequestRetransmissionTimer()
Definition: Ospfv3Neighbor.h:100
inet::ospfv3::Ospfv3Interface::Ospfv3InterfaceType
Ospfv3InterfaceType
Definition: Ospfv3Interface.h:50
inet::ospfv3::Ospfv3Neighbor::DOWN_STATE
@ DOWN_STATE
Definition: Ospfv3Neighbor.h:43
inet::ospfv3::Ospfv3Interface::getType
Ospfv3InterfaceType getType() const
Definition: Ospfv3Interface.h:129
inet::ospfv3::Ospfv3Instance::getProcess
Ospfv3Process * getProcess() const
Definition: Ospfv3Instance.h:32
inet::ospf::LINKSTATE_REQUEST_PACKET
@ LINKSTATE_REQUEST_PACKET
Definition: OspfPacketBase_m.h:67
inet::ospfv3::Ospfv3Neighbor::neighborsRouterDeadInterval
short neighborsRouterDeadInterval
Definition: Ospfv3Neighbor.h:169
inet::ospfv3::Ospfv3Neighbor::databaseSummaryList
std::list< Ospfv3LsaHeader * > databaseSummaryList
Definition: Ospfv3Neighbor.h:171
inet::ospfv3::Ospfv3Neighbor::updateRetransmissionTimer
cMessage * updateRetransmissionTimer
Definition: Ospfv3Neighbor.h:150
inet::ospfv3::NEIGHBOR_UPDATE_RETRANSMISSION_TIMER
@ NEIGHBOR_UPDATE_RETRANSMISSION_TIMER
Definition: Ospfv3Timers.h:14
inet::ospfv3::Ospfv3Neighbor::EXCHANGE_START_STATE
@ EXCHANGE_START_STATE
Definition: Ospfv3Neighbor.h:47
inet::ospfv3::Ospfv3Neighbor::linkStateRetransmissionList
std::list< Ospfv3Lsa * > linkStateRetransmissionList
Definition: Ospfv3Neighbor.h:170
inet::ospfv3::Ospfv3Neighbor::SLAVE
@ SLAVE
Definition: Ospfv3Neighbor.h:55
inet::ospfv3::NEIGHBOR_REQUEST_RETRANSMISSION_TIMER
@ NEIGHBOR_REQUEST_RETRANSMISSION_TIMER
Definition: Ospfv3Timers.h:15
inet::ospfv3::Ospfv3Neighbor::ATTEMPT_STATE
@ ATTEMPT_STATE
Definition: Ospfv3Neighbor.h:44
inet::ospfv3::Ospfv3Neighbor::getUniqueULong
unsigned long getUniqueULong()
Definition: Ospfv3Neighbor.cc:145
inet::ospfv3::Ospfv3Neighbor::ONEWAY_RECEIVED
@ ONEWAY_RECEIVED
Definition: Ospfv3Neighbor.h:32
inet::ospfv3::OSPFV3_LSR_LENGTH
const B OSPFV3_LSR_LENGTH
Definition: Ospfv3Common.h:60
inet::ospfv3::Ospfv3Process::sendPacket
void sendPacket(Packet *packet, Ipv6Address destination, const char *ifName, short hopLimit=1)
Definition: Ospfv3Process.cc:690
inet::ospfv3::Ospfv3Neighbor::INACTIVITY_TIMER
@ INACTIVITY_TIMER
Definition: Ospfv3Neighbor.h:34
MAX_AGE
#define MAX_AGE
Definition: Ospfv2Common.h:27
inet::ospfv3::Ospfv3Neighbor::previousState
Ospfv3NeighborState * previousState
Definition: Ospfv3Neighbor.h:146
inet::ospfv3::INTRA_AREA_PREFIX_LSA
@ INTRA_AREA_PREFIX_LSA
Definition: Ospfv3Packet_m.h:404
inet::ospfv3::NETWORK_LSA
@ NETWORK_LSA
Definition: Ospfv3Packet_m.h:397
inet::ospfv3::Ospfv3Neighbor::neighborOptions
Ospfv3Options neighborOptions
Definition: Ospfv3Neighbor.h:162
inet::ospfv3::Ospfv3Interface::getDesignatedID
Ipv4Address getDesignatedID() const
Definition: Ospfv3Interface.h:133
inet::ospfv3::Ospfv3Neighbor::ddSequenceNumber
unsigned long ddSequenceNumber
Definition: Ospfv3Neighbor.h:156
inet::ospf::LINKSTATE_UPDATE_PACKET
@ LINKSTATE_UPDATE_PACKET
Definition: OspfPacketBase_m.h:68
inet::ospfv3::Ospfv3Area::getInstance
Ospfv3Instance * getInstance() const
Definition: Ospfv3Area.h:41
inet::ospfv3::LINK_LSA
@ LINK_LSA
Definition: Ospfv3Packet_m.h:403
inet::ospfv3::Ospfv3Neighbor::neighborsBackupDesignatedRouter
Ipv4Address neighborsBackupDesignatedRouter
Definition: Ospfv3Neighbor.h:164
inet::ospfv3::Ospfv3Neighbor::UPDATE_RETRANSMISSION_TIMER
@ UPDATE_RETRANSMISSION_TIMER
Definition: Ospfv3Neighbor.h:38
inet::ospfv3::Ospfv3Neighbor::SEQUENCE_NUMBER_MISMATCH
@ SEQUENCE_NUMBER_MISMATCH
Definition: Ospfv3Neighbor.h:31
inet::ospfv3::Ospfv3Neighbor::updateRetransmissionTimerActive
bool updateRetransmissionTimerActive
Definition: Ospfv3Neighbor.h:151
inet::ospfv3::Ospfv3Neighbor::firstAdjacencyInited
bool firstAdjacencyInited
Definition: Ospfv3Neighbor.h:155
inet::ospfv3::Ospfv3Interface::getBackupID
Ipv4Address getBackupID() const
Definition: Ospfv3Interface.h:134
inet::ospfv3::Ospfv3Process::getRouterID
Ipv4Address getRouterID()
Definition: Ospfv3Process.h:40
inet::units::units::B
intscale< b, 1, 8 > B
Definition: Units.h:1168
inet::ospfv3::Ospfv3Neighbor::NEGOTIATION_DONE
@ NEGOTIATION_DONE
Definition: Ospfv3Neighbor.h:26
inet::ospfv3::calculateLSASize
B calculateLSASize(const Ospfv3RouterLsa *routerLSA)
Definition: Ospfv3Lsa.cc:19
inet::ospfv3::Ospfv3Neighbor::getUpdateRetransmissionTimer
cMessage * getUpdateRetransmissionTimer()
Definition: Ospfv3Neighbor.h:99
inet::Ipv6Address::UNSPECIFIED_ADDRESS
static const Ipv6Address UNSPECIFIED_ADDRESS
The unspecified address.
Definition: Ipv6Address.h:54
inet::ospfv3::Ospfv3Neighbor::lastReceivedDDPacket
Ospfv3DdPacketId lastReceivedDDPacket
Definition: Ospfv3Neighbor.h:157
inet::ospfv3::Ospfv3Neighbor::HELLO_RECEIVED
@ HELLO_RECEIVED
Definition: Ospfv3Neighbor.h:23
inet::ospf::DATABASE_DESCRIPTION_PACKET
@ DATABASE_DESCRIPTION_PACKET
Definition: OspfPacketBase_m.h:66
inet::ospfv3::Ospfv3Neighbor::MASTER
@ MASTER
Definition: Ospfv3Neighbor.h:54
inet::ospfv3::Ospfv3Neighbor::neighborIPAddress
Ipv6Address neighborIPAddress
Definition: Ospfv3Neighbor.h:161
inet::ospfv3::Ospfv3Neighbor::neighborsDesignatedIP
L3Address neighborsDesignatedIP
Definition: Ospfv3Neighbor.h:166
inet::ospfv3::Ospfv3Interface::POINTTOMULTIPOINT_TYPE
@ POINTTOMULTIPOINT_TYPE
Definition: Ospfv3Interface.h:55
inet::ospfv3::Ospfv3Neighbor::EXCHANGE_DONE
@ EXCHANGE_DONE
Definition: Ospfv3Neighbor.h:27
inet::ospfv3::NEIGHBOR_DD_RETRANSMISSION_TIMER
@ NEIGHBOR_DD_RETRANSMISSION_TIMER
Definition: Ospfv3Timers.h:13
IPV6INSTANCE
#define IPV6INSTANCE
Definition: Ospfv3Common.h:21
inet::ospfv3::Ospfv3Neighbor::BAD_LINK_STATE_REQUEST
@ BAD_LINK_STATE_REQUEST
Definition: Ospfv3Neighbor.h:28
inet::ospfv3::Ospfv3Neighbor::requestRetransmissionTimerActive
bool requestRetransmissionTimerActive
Definition: Ospfv3Neighbor.h:153
inet::ospfv3::Ospfv3Neighbor::getState
Ospfv3NeighborStateType getState() const
Definition: Ospfv3Neighbor.cc:63
inet::ospfv3::OSPFV3_LSA_HEADER_LENGTH
const B OSPFV3_LSA_HEADER_LENGTH
Definition: Ospfv3Common.h:59
inet::ospfv3::Ospfv3Neighbor::REQUEST_RETRANSMISSION_TIMER
@ REQUEST_RETRANSMISSION_TIMER
Definition: Ospfv3Neighbor.h:39
inet::ospfv3::Ospfv3Neighbor::LINK_DOWN
@ LINK_DOWN
Definition: Ospfv3Neighbor.h:36
inet::ospfv3::Ospfv3Interface::POINTTOPOINT_TYPE
@ POINTTOPOINT_TYPE
Definition: Ospfv3Interface.h:52
inet::ospfv3::Ospfv3Neighbor::START
@ START
Definition: Ospfv3Neighbor.h:24
inet::ospfv3::Ospfv3Neighbor::LOADING_DONE
@ LOADING_DONE
Definition: Ospfv3Neighbor.h:29
inet::ospfv3::Ospfv3Neighbor::clearRequestRetransmissionTimer
void clearRequestRetransmissionTimer()
Definition: Ospfv3Neighbor.cc:169
inet::ospfv3::INTER_AREA_PREFIX_LSA
@ INTER_AREA_PREFIX_LSA
Definition: Ospfv3Packet_m.h:398
inet::ospfv3::Ospfv3Process::setTimer
void setTimer(cMessage *msg, double delay)
Definition: Ospfv3Process.cc:654
inet::ospfv3::Ospfv3Neighbor::pollTimer
cMessage * pollTimer
Definition: Ospfv3Neighbor.h:148
inet::ospfv3::Ospfv3Neighbor::state
Ospfv3NeighborState * state
Definition: Ospfv3Neighbor.h:145
inet::ospfv3::Ospfv3Neighbor::clearUpdateRetransmissionTimer
void clearUpdateRetransmissionTimer()
Definition: Ospfv3Neighbor.cc:157
inet::ospfv3::Ospfv3Neighbor::POLL_TIMER
@ POLL_TIMER
Definition: Ospfv3Neighbor.h:35
inet::ospfv3::Ospfv3Neighbor::IS_ADJACENCY_OK
@ IS_ADJACENCY_OK
Definition: Ospfv3Neighbor.h:30
inet::ospfv3::Ospfv3Neighbor::getDatabaseSummaryListCount
unsigned long getDatabaseSummaryListCount() const
Definition: Ospfv3Neighbor.h:120
inet::ospfv3::Ospfv3Interface::VIRTUAL_TYPE
@ VIRTUAL_TYPE
Definition: Ospfv3Interface.h:56
inet::ospfv3::Ospfv3Neighbor::lastTransmittedDDPacket
Packet * lastTransmittedDDPacket
Definition: Ospfv3Neighbor.h:174
inet::ospfv3::Ospfv3Neighbor::neighborsBackupIP
L3Address neighborsBackupIP
Backup advertised by the router.
Definition: Ospfv3Neighbor.h:165
inet::ospfv3::OSPFV3_HEADER_LENGTH
const B OSPFV3_HEADER_LENGTH
Definition: Ospfv3Common.h:57
inet::Ipv4Address::UNSPECIFIED_ADDRESS
static const Ipv4Address UNSPECIFIED_ADDRESS
0.0.0.0
Definition: Ipv4Address.h:91
inet::ospfv3::Ospfv3Neighbor::findOnRequestList
Ospfv3LsaHeader * findOnRequestList(LSAKeyType lsaKey)
Definition: Ospfv3Neighbor.cc:644
inet::ospfv3::Ospfv3Neighbor::EXCHANGE_STATE
@ EXCHANGE_STATE
Definition: Ospfv3Neighbor.h:48
inet::ospfv3::NEIGHBOR_POLL_TIMER
@ NEIGHBOR_POLL_TIMER
Definition: Ospfv3Timers.h:12
inet::ospfv3::Ospfv3Neighbor::reset
void reset()
Definition: Ospfv3Neighbor.cc:84
inet::ospfv3::Ospfv3Neighbor::designatedRoutersSetUp
bool designatedRoutersSetUp
Definition: Ospfv3Neighbor.h:168
inet::ospfv3::Ospfv3Neighbor::neighborsDesignatedRouter
Ipv4Address neighborsDesignatedRouter
Definition: Ospfv3Neighbor.h:163
inet::ospfv3::Ospfv3Neighbor::INIT_STATE
@ INIT_STATE
Definition: Ospfv3Neighbor.h:45
inet::ospfv3::Ospfv3NeighborState::processEvent
virtual void processEvent(Ospfv3Neighbor *neighbor, Ospfv3Neighbor::Ospfv3NeighborEventType event)=0
inet::ospfv3::Ospfv3Neighbor::last_hello_received
int last_hello_received
Definition: Ospfv3Neighbor.h:179
inet::ospfv3::Ospfv3Neighbor::databaseExchangeRelationship
Ospfv3DatabaseExchangeRelationshipType databaseExchangeRelationship
Definition: Ospfv3Neighbor.h:154
MIN_LS_ARRIVAL
#define MIN_LS_ARRIVAL
Definition: Ospfv2Common.h:26
inet::ospfv3::OSPFV3_DD_HEADER_LENGTH
const B OSPFV3_DD_HEADER_LENGTH
Definition: Ospfv3Common.h:58
inet::ospfv3::Ospfv3Neighbor::DD_RETRANSMISSION_TIMER
@ DD_RETRANSMISSION_TIMER
Definition: Ospfv3Neighbor.h:37
inet::ospfv3::Ospfv3Interface::getArea
Ospfv3Area * getArea() const
Definition: Ospfv3Interface.h:142
inet::ospfv3::NEIGHBOR_INACTIVITY_TIMER
@ NEIGHBOR_INACTIVITY_TIMER
Definition: Ospfv3Timers.h:11
inet::Ipv6Address::ALL_OSPF_ROUTERS_MCAST
static const Ipv6Address ALL_OSPF_ROUTERS_MCAST
OSPF multicast address for listening.
Definition: Ipv6Address.h:84
inet::ospfv3::Ospfv3Neighbor::getNeighborIP
Ipv6Address getNeighborIP()
Definition: Ospfv3Neighbor.h:82
inet::ospfv3::Ospfv3Interface::getLinkLSACount
int getLinkLSACount()
Definition: Ospfv3Interface.h:177
inet::ospfv3::Ospfv3Neighbor::linkStateRequestList
std::list< Ospfv3LsaHeader * > linkStateRequestList
Definition: Ospfv3Neighbor.h:172
inet::ospfv3::ROUTER_LSA
@ ROUTER_LSA
Definition: Ospfv3Packet_m.h:396
inet::ospfv3::Ospfv3Process::clearTimer
void clearTimer(cMessage *msg)
Definition: Ospfv3Process.h:44
inet::ospfv3::Ospfv3Neighbor::neighborInterfaceID
uint32_t neighborInterfaceID
Definition: Ospfv3Neighbor.h:167
inet::ospfv3::Ospfv3Area::getExternalRoutingCapability
bool getExternalRoutingCapability()
Definition: Ospfv3Area.h:48
inet::ospfv3::Ospfv3Neighbor::containingInterface
Ospfv3Interface * containingInterface
Definition: Ospfv3Neighbor.h:176
inet::ospfv3::Ospfv3NeighborState::getState
virtual Ospfv3Neighbor::Ospfv3NeighborStateType getState() const =0
DEFAULT_DEAD_INTERVAL
#define DEFAULT_DEAD_INTERVAL
Definition: Ospfv3Common.h:14
inet::ospfv3::NULL_IPV4ADDRESS
const Ipv4Address NULL_IPV4ADDRESS(0, 0, 0, 0)
inet::ospfv3::Ospfv3Neighbor::getInterface
Ospfv3Interface * getInterface()
Definition: Ospfv3Neighbor.h:78
inet::ospfv3::Ospfv3Neighbor::KILL_NEIGHBOR
@ KILL_NEIGHBOR
Definition: Ospfv3Neighbor.h:33
inet::ospfv3::Ospfv3Neighbor::LOADING_STATE
@ LOADING_STATE
Definition: Ospfv3Neighbor.h:49
inet::ospfv3::Ospfv3Neighbor::ddRetransmissionTimer
cMessage * ddRetransmissionTimer
Definition: Ospfv3Neighbor.h:149
inet::ospfv3::Ospfv3Neighbor::transmittedLSAs
std::list< TransmittedLSA > transmittedLSAs
Definition: Ospfv3Neighbor.h:173
inet::ospfv3::Ospfv3Neighbor::neighborId
Ipv4Address neighborId
Definition: Ospfv3Neighbor.h:159
inet::ospfv3::Ospfv3Neighbor::ddSequenceNumberInitSeed
static unsigned long ddSequenceNumberInitSeed
Definition: Ospfv3Neighbor.h:177
inet::ospfv3::Ospfv3Area::getRouterLSACount
int getRouterLSACount()
Definition: Ospfv3Area.h:64