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

#include <Ospfv3NeighborStateDown.h>

Inheritance diagram for inet::ospfv3::Ospfv3NeighborStateDown:
inet::ospfv3::Ospfv3NeighborState

Public Member Functions

 ~Ospfv3NeighborStateDown ()
 
virtual void processEvent (Ospfv3Neighbor *neighbor, Ospfv3Neighbor::Ospfv3NeighborEventType event) override
 
virtual Ospfv3Neighbor::Ospfv3NeighborStateType getState () const override
 
virtual std::string getNeighborStateString () override
 
- Public Member Functions inherited from inet::ospfv3::Ospfv3NeighborState
virtual ~Ospfv3NeighborState ()
 

Additional Inherited Members

- Protected Member Functions inherited from inet::ospfv3::Ospfv3NeighborState
void changeState (Ospfv3Neighbor *neighbor, Ospfv3NeighborState *newState, Ospfv3NeighborState *currentState)
 

Constructor & Destructor Documentation

◆ ~Ospfv3NeighborStateDown()

inet::ospfv3::Ospfv3NeighborStateDown::~Ospfv3NeighborStateDown ( )
inline
18 {}

Member Function Documentation

◆ getNeighborStateString()

virtual std::string inet::ospfv3::Ospfv3NeighborStateDown::getNeighborStateString ( )
inlineoverridevirtual

Implements inet::ospfv3::Ospfv3NeighborState.

21 { return std::string("Ospfv3NeighborStateDown"); }

◆ getState()

virtual Ospfv3Neighbor::Ospfv3NeighborStateType inet::ospfv3::Ospfv3NeighborStateDown::getState ( ) const
inlineoverridevirtual

◆ processEvent()

void inet::ospfv3::Ospfv3NeighborStateDown::processEvent ( Ospfv3Neighbor neighbor,
Ospfv3Neighbor::Ospfv3NeighborEventType  event 
)
overridevirtual

Implements inet::ospfv3::Ospfv3NeighborState.

18 {
19  /*
20  Send an Hello Packet to the neighbor (this neighbor
21  is always associated with an NBMA network) and start
22  the Inactivity Timer for the neighbor. The timer's
23  later firing would indicate that communication with
24  the neighbor was not attained.
25  */
26  if (event == Ospfv3Neighbor::START) {
27  int hopLimit = (neighbor->getInterface()->getType() == Ospfv3Interface::VIRTUAL_TYPE) ? VIRTUAL_LINK_TTL : 1;
28  neighbor->getInterface()->getArea()->getInstance()->getProcess()->clearTimer(neighbor->getPollTimer());
29  Packet *hello = neighbor->getInterface()->prepareHello();
30 // Ospfv3HelloPacket* hello = neighbor->getInterface()->prepareHello();
31  neighbor->getInterface()->getArea()->getInstance()->getProcess()->sendPacket(hello, neighbor->getNeighborIP(), neighbor->getInterface()->getIntName().c_str(), hopLimit);
32  neighbor->getInterface()->getArea()->getInstance()->getProcess()->setTimer(neighbor->getInactivityTimer(), neighbor->getNeighborDeadInterval());
33  this->changeState(neighbor, new Ospfv3NeighborStateAttempt, this);
34  }
35 
36  /*
37  Start the Inactivity Timer for the neighbor. The
38  timer's later firing would indicate that the
39  neighbor is dead.
40  */
41  if (event == Ospfv3Neighbor::HELLO_RECEIVED) {
42  neighbor->getInterface()->getArea()->getInstance()->getProcess()->clearTimer(neighbor->getPollTimer());
43  neighbor->getInterface()->getArea()->getInstance()->getProcess()->setTimer(neighbor->getInactivityTimer(), neighbor->getNeighborDeadInterval());
44  EV_DEBUG << "HELLO_RECEIVED, number of neighbors: " << neighbor->getInterface()->getNeighborCount() << endl;
45  changeState(neighbor, new Ospfv3NeighborStateInit, this);
46  }
47  if (event == Ospfv3Neighbor::POLL_TIMER) {
48  int hopLimit = (neighbor->getInterface()->getType() == Ospfv3Interface::VIRTUAL_TYPE) ? VIRTUAL_LINK_TTL : 1;
49  Packet *hello = neighbor->getInterface()->prepareHello();
50  neighbor->getInterface()->getArea()->getInstance()->getProcess()->sendPacket(hello, neighbor->getNeighborIP(), neighbor->getInterface()->getIntName().c_str(), hopLimit);
51  neighbor->getInterface()->getArea()->getInstance()->getProcess()->setTimer(neighbor->getPollTimer(), neighbor->getNeighborDeadInterval());
52  }
53 }

The documentation for this class was generated from the following files:
VIRTUAL_LINK_TTL
#define VIRTUAL_LINK_TTL
Definition: Ospfv2Common.h:36
inet::ospfv3::Ospfv3Neighbor::DOWN_STATE
@ DOWN_STATE
Definition: Ospfv3Neighbor.h:43
inet::ospfv3::Ospfv3NeighborState::changeState
void changeState(Ospfv3Neighbor *neighbor, Ospfv3NeighborState *newState, Ospfv3NeighborState *currentState)
Definition: Ospfv3NeighborState.cc:14
inet::ospfv3::Ospfv3Neighbor::HELLO_RECEIVED
@ HELLO_RECEIVED
Definition: Ospfv3Neighbor.h:23
inet::ospfv3::Ospfv3Neighbor::START
@ START
Definition: Ospfv3Neighbor.h:24
inet::ospfv3::Ospfv3Neighbor::POLL_TIMER
@ POLL_TIMER
Definition: Ospfv3Neighbor.h:35
inet::ospfv3::Ospfv3Interface::VIRTUAL_TYPE
@ VIRTUAL_TYPE
Definition: Ospfv3Interface.h:56