Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

OSPF::NeighborStateInit Class Reference

#include <OSPFNeighborStateInit.h>

Inheritance diagram for OSPF::NeighborStateInit:

OSPF::NeighborState List of all members.

Public Member Functions

virtual void ProcessEvent (Neighbor *neighbor, Neighbor::NeighborEventType event)
virtual Neighbor::NeighborStateType GetState (void) const

Member Function Documentation

virtual Neighbor::NeighborStateType OSPF::NeighborStateInit::GetState void   )  const [inline, virtual]
 

Implements OSPF::NeighborState.

00012 { return Neighbor::InitState; }

void OSPF::NeighborStateInit::ProcessEvent Neighbor neighbor,
Neighbor::NeighborEventType  event
[virtual]
 

00011 {
00012     if ((event == OSPF::Neighbor::KillNeighbor) || (event == OSPF::Neighbor::LinkDown)) {
00013         MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00014         neighbor->Reset ();
00015         messageHandler->ClearTimer (neighbor->GetInactivityTimer ());
00016         ChangeState (neighbor, new OSPF::NeighborStateDown, this);
00017     }
00018     if (event == OSPF::Neighbor::InactivityTimer) {
00019         neighbor->Reset ();
00020         if (neighbor->GetInterface ()->GetType () == OSPF::Interface::NBMA) {
00021             MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00022             messageHandler->StartTimer (neighbor->GetPollTimer (), neighbor->GetInterface ()->GetPollInterval ());
00023         }
00024         ChangeState (neighbor, new OSPF::NeighborStateDown, this);
00025     }
00026     if (event == OSPF::Neighbor::HelloReceived) {
00027         MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00028         messageHandler->ClearTimer (neighbor->GetInactivityTimer ());
00029         messageHandler->StartTimer (neighbor->GetInactivityTimer (), neighbor->GetRouterDeadInterval ());
00030     }
00031     if (event == OSPF::Neighbor::TwoWayReceived) {
00032         if (neighbor->NeedAdjacency ()) {
00033             MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00034             if (!(neighbor->IsFirstAdjacencyInited ())) {
00035                 neighbor->InitFirstAdjacency ();
00036             } else {
00037                 neighbor->IncrementDDSequenceNumber ();
00038             }
00039             neighbor->SendDatabaseDescriptionPacket (true);
00040             messageHandler->StartTimer (neighbor->GetDDRetransmissionTimer (), neighbor->GetInterface ()->GetRetransmissionInterval ());
00041             ChangeState (neighbor, new OSPF::NeighborStateExchangeStart, this);
00042         } else {
00043             ChangeState (neighbor, new OSPF::NeighborStateTwoWay, this);
00044         }
00045     }
00046 }


The documentation for this class was generated from the following files:
Generated on Thu Oct 19 18:22:33 2006 for INET Framework for OMNeT++/OMNEST by  doxygen 1.4.0