Public Member Functions

OSPF::InterfaceStateWaiting Class Reference

#include <OSPFInterfaceStateWaiting.h>

Inheritance diagram for OSPF::InterfaceStateWaiting:
OSPF::InterfaceState

List of all members.

Public Member Functions

virtual void ProcessEvent (Interface *intf, Interface::InterfaceEventType event)
virtual
Interface::InterfaceStateType 
GetState (void) const

Detailed Description

Definition at line 25 of file OSPFInterfaceStateWaiting.h.


Member Function Documentation

virtual Interface::InterfaceStateType OSPF::InterfaceStateWaiting::GetState ( void   )  const [inline, virtual]

Implements OSPF::InterfaceState.

Definition at line 29 of file OSPFInterfaceStateWaiting.h.

{ return Interface::WaitingState; }

void OSPF::InterfaceStateWaiting::ProcessEvent ( OSPF::Interface intf,
Interface::InterfaceEventType  event 
) [virtual]

Implements OSPF::InterfaceState.

Definition at line 25 of file OSPFInterfaceStateWaiting.cc.

{
    if ((event == OSPF::Interface::BackupSeen) ||
        (event == OSPF::Interface::WaitTimer))
    {
        CalculateDesignatedRouter(intf);
    }
    if (event == OSPF::Interface::InterfaceDown) {
        intf->Reset();
        ChangeState(intf, new OSPF::InterfaceStateDown, this);
    }
    if (event == OSPF::Interface::LoopIndication) {
        intf->Reset();
        ChangeState(intf, new OSPF::InterfaceStateLoopback, this);
    }
    if (event == OSPF::Interface::HelloTimer) {
        if (intf->GetType() == OSPF::Interface::Broadcast) {
            intf->SendHelloPacket(OSPF::AllSPFRouters);
        } else {    // OSPF::Interface::NBMA
            unsigned long neighborCount = intf->GetNeighborCount();
            int           ttl           = (intf->GetType() == OSPF::Interface::Virtual) ? VIRTUAL_LINK_TTL : 1;
            for (unsigned long i = 0; i < neighborCount; i++) {
                OSPF::Neighbor* neighbor = intf->GetNeighbor(i);
                if (neighbor->GetPriority() > 0) {
                    intf->SendHelloPacket(neighbor->GetAddress(), ttl);
                }
            }
        }
        intf->GetArea()->GetRouter()->GetMessageHandler()->StartTimer(intf->GetHelloTimer(), intf->GetHelloInterval());
    }
    if (event == OSPF::Interface::AcknowledgementTimer) {
        intf->SendDelayedAcknowledgements();
    }
}


The documentation for this class was generated from the following files: