#include <OSPFInterfaceStateNotDesignatedRouter.h>
Inheritance diagram for OSPF::InterfaceStateNotDesignatedRouter:

Public Member Functions | |
| virtual void | ProcessEvent (Interface *intf, Interface::InterfaceEventType event) |
| virtual Interface::InterfaceStateType | GetState (void) const |
|
|
Implements OSPF::InterfaceState. 00012 { return Interface::NotDesignatedRouterState; }
|
|
||||||||||||
|
00009 {
00010 if (event == OSPF::Interface::NeighborChange) {
00011 CalculateDesignatedRouter (intf);
00012 }
00013 if (event == OSPF::Interface::InterfaceDown) {
00014 intf->Reset ();
00015 ChangeState (intf, new OSPF::InterfaceStateDown, this);
00016 }
00017 if (event == OSPF::Interface::LoopIndication) {
00018 intf->Reset ();
00019 ChangeState (intf, new OSPF::InterfaceStateLoopback, this);
00020 }
00021 if (event == OSPF::Interface::HelloTimer) {
00022 if (intf->GetType () == OSPF::Interface::Broadcast) {
00023 intf->SendHelloPacket (OSPF::AllSPFRouters);
00024 } else { // OSPF::Interface::NBMA
00025 if (intf->GetRouterPriority () > 0) {
00026 unsigned long neighborCount = intf->GetNeighborCount ();
00027 for (unsigned long i = 0; i < neighborCount; i++) {
00028 const OSPF::Neighbor* neighbor = intf->GetNeighbor (i);
00029 if (neighbor->GetPriority () > 0) {
00030 intf->SendHelloPacket (neighbor->GetAddress ());
00031 }
00032 }
00033 } else {
00034 intf->SendHelloPacket (intf->GetDesignatedRouter ().ipInterfaceAddress);
00035 intf->SendHelloPacket (intf->GetBackupDesignatedRouter ().ipInterfaceAddress);
00036 }
00037 }
00038 intf->GetArea ()->GetRouter ()->GetMessageHandler ()->StartTimer (intf->GetHelloTimer (), intf->GetHelloInterval ());
00039 }
00040 if (event == OSPF::Interface::AcknowledgementTimer) {
00041 intf->SendDelayedAcknowledgements ();
00042 }
00043 }
|
1.4.1