INET Framework for OMNeT++/OMNEST
AnsaOSPF::InterfaceStateNotDesignatedRouter Class Reference

#include <AnsaOSPFInterfaceStateNotDesignatedRouter.h>

Inheritance diagram for AnsaOSPF::InterfaceStateNotDesignatedRouter:
AnsaOSPF::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 8 of file AnsaOSPFInterfaceStateNotDesignatedRouter.h.


Member Function Documentation

Implements AnsaOSPF::InterfaceState.

Definition at line 8 of file AnsaOSPFInterfaceStateNotDesignatedRouter.cc.

{
    if (event == AnsaOSPF::Interface::NeighborChange) {
        CalculateDesignatedRouter(intf);
    }
    if (event == AnsaOSPF::Interface::InterfaceDown) {
        intf->SetIsGoingDown(true);
        intf->Reset();
        ChangeState(intf, new AnsaOSPF::InterfaceStateDown, this);
        intf->SetIsGoingDown(false);
    }
    if (event == AnsaOSPF::Interface::LoopIndication) {
        intf->Reset();
        ChangeState(intf, new AnsaOSPF::InterfaceStateLoopback, this);
    }
    if (event == AnsaOSPF::Interface::HelloTimer) {
        if (intf->GetType() == AnsaOSPF::Interface::Broadcast) {
            intf->SendHelloPacket(AnsaOSPF::AllSPFRouters);
        } else {    // AnsaOSPF::Interface::NBMA
            if (intf->GetRouterPriority() > 0) {
                unsigned long neighborCount = intf->GetNeighborCount();
                for (unsigned long i = 0; i < neighborCount; i++) {
                    const AnsaOSPF::Neighbor* neighbor = intf->GetNeighbor(i);
                    if (neighbor->GetPriority() > 0) {
                        intf->SendHelloPacket(neighbor->GetAddress());
                    }
                }
            } else {
                intf->SendHelloPacket(intf->GetDesignatedRouter().ipInterfaceAddress);
                intf->SendHelloPacket(intf->GetBackupDesignatedRouter().ipInterfaceAddress);
            }
        }
        intf->GetArea()->GetRouter()->GetMessageHandler()->StartTimer(intf->GetHelloTimer(), intf->GetHelloInterval());
    }
    if (event == AnsaOSPF::Interface::AcknowledgementTimer) {
        intf->SendDelayedAcknowledgements();
    }
}

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