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

OSPF::NeighborStateExchange Class Reference

#include <OSPFNeighborStateExchange.h>

Inheritance diagram for OSPF::NeighborStateExchange:

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::NeighborStateExchange::GetState void   )  const [inline, virtual]
 

Implements OSPF::NeighborState.

00012 { return Neighbor::ExchangeState; }

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

00014 {
00015     if ((event == OSPF::Neighbor::KillNeighbor) || (event == OSPF::Neighbor::LinkDown)) {
00016         MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00017         neighbor->Reset ();
00018         messageHandler->ClearTimer (neighbor->GetInactivityTimer ());
00019         ChangeState (neighbor, new OSPF::NeighborStateDown, this);
00020     }
00021     if (event == OSPF::Neighbor::InactivityTimer) {
00022         neighbor->Reset ();
00023         if (neighbor->GetInterface ()->GetType () == OSPF::Interface::NBMA) {
00024             MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00025             messageHandler->StartTimer (neighbor->GetPollTimer (), neighbor->GetInterface ()->GetPollInterval ());
00026         }
00027         ChangeState (neighbor, new OSPF::NeighborStateDown, this);
00028     }
00029     if (event == OSPF::Neighbor::OneWayReceived) {
00030         neighbor->Reset ();
00031         ChangeState (neighbor, new OSPF::NeighborStateInit, this);
00032     }
00033     if (event == OSPF::Neighbor::HelloReceived) {
00034         MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00035         messageHandler->ClearTimer (neighbor->GetInactivityTimer ());
00036         messageHandler->StartTimer (neighbor->GetInactivityTimer (), neighbor->GetRouterDeadInterval ());
00037     }
00038     if (event == OSPF::Neighbor::IsAdjacencyOK) {
00039         if (!neighbor->NeedAdjacency ()) {
00040             neighbor->Reset ();
00041             ChangeState (neighbor, new OSPF::NeighborStateTwoWay, this);
00042         }
00043     }
00044     if ((event == OSPF::Neighbor::SequenceNumberMismatch) || (event == OSPF::Neighbor::BadLinkStateRequest)) {
00045         MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00046         neighbor->Reset ();
00047         neighbor->IncrementDDSequenceNumber ();
00048         neighbor->SendDatabaseDescriptionPacket (true);
00049         messageHandler->StartTimer (neighbor->GetDDRetransmissionTimer (), neighbor->GetInterface ()->GetRetransmissionInterval ());
00050         ChangeState (neighbor, new OSPF::NeighborStateExchangeStart, this);
00051     }
00052     if (event == OSPF::Neighbor::ExchangeDone) {
00053         if (neighbor->IsLinkStateRequestListEmpty ()) {
00054             MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00055             messageHandler->StartTimer (neighbor->GetDDRetransmissionTimer (), neighbor->GetRouterDeadInterval ());
00056             neighbor->ClearRequestRetransmissionTimer ();
00057             ChangeState (neighbor, new OSPF::NeighborStateFull, this);
00058         } else {
00059             MessageHandler* messageHandler = neighbor->GetInterface ()->GetArea ()->GetRouter ()->GetMessageHandler ();
00060             messageHandler->StartTimer (neighbor->GetDDRetransmissionTimer (), neighbor->GetRouterDeadInterval ());
00061             ChangeState (neighbor, new OSPF::NeighborStateLoading, this);
00062         }
00063     }
00064     if (event == OSPF::Neighbor::UpdateRetransmissionTimer) {
00065         neighbor->RetransmitUpdatePacket ();
00066         neighbor->StartUpdateRetransmissionTimer ();
00067     }
00068     if (event == OSPF::Neighbor::RequestRetransmissionTimer) {
00069         neighbor->SendLinkStateRequestPacket ();
00070         neighbor->StartRequestRetransmissionTimer ();
00071     }
00072 }


The documentation for this class was generated from the following files:
Generated on Sat Apr 1 20:52:25 2006 for INET Framework for OMNeT++/OMNEST by  doxygen 1.4.1