INET Framework for OMNeT++/OMNEST
AnsaOspf6::InterfaceStateWaiting Class Reference

#include <ansaOspfInterfaceStateWaiting6.h>

Inheritance diagram for AnsaOspf6::InterfaceStateWaiting:
AnsaOspf6::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 23 of file ansaOspfInterfaceStateWaiting6.h.


Member Function Documentation

Implements AnsaOspf6::InterfaceState.

Definition at line 26 of file ansaOspfInterfaceStateWaiting6.h.

Implements AnsaOspf6::InterfaceState.

Definition at line 23 of file ansaOspfInterfaceStateWaiting6.cc.

                                                                                                                     {

   if ((event == AnsaOspf6::Interface::BackupSeen) || (event == AnsaOspf6::Interface::WaitTimer)){
      CalculateDesignatedRouter(intf);
   }

   if (event == AnsaOspf6::Interface::InterfaceDown){
      intf->SetIsGoingDown(true);
      intf->Reset();
      ChangeState(intf, new AnsaOspf6::InterfaceStateDown, this);
      intf->SetIsGoingDown(false);
   }

   if (event == AnsaOspf6::Interface::LoopIndication){
      intf->Reset();
      ChangeState(intf, new AnsaOspf6::InterfaceStateLoopback, this);
   }

   if (event == AnsaOspf6::Interface::HelloTimer){
      if (intf->GetType() == AnsaOspf6::Interface::Broadcast){
         intf->SendHelloPacket(AnsaOspf6::AllSPFRouters);
      }else{    // AnsaOspf6::Interface::NBMA
         unsigned long neighborCount = intf->GetNeighborCount();
         int ttl = (intf->GetType() == AnsaOspf6::Interface::Virtual) ? VIRTUAL_LINK_TTL : 1;
         for (unsigned long i = 0; i < neighborCount; i++) {
            AnsaOspf6::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 == AnsaOspf6::Interface::AcknowledgementTimer){
      intf->SendDelayedAcknowledgements();
   }
}

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