|
INET Framework for OMNeT++/OMNEST
|
00001 #ifndef __INET_MESSAGEHANDLER_H 00002 #define __INET_MESSAGEHANDLER_H 00003 00004 #include "AnsaIMessageHandler.h" 00005 #include "AnsaHelloHandler.h" 00006 #include "AnsaDatabaseDescriptionHandler.h" 00007 #include "AnsaLinkStateRequestHandler.h" 00008 #include "AnsaLinkStateUpdateHandler.h" 00009 #include "AnsaLinkStateAcknowledgementHandler.h" 00010 #include "OSPFTimer_m.h" 00011 #include "IPControlInfo.h" 00012 #include "AnsaOSPFInterface.h" 00013 //#include "OSPFNeighbor.h" 00014 00015 namespace AnsaOSPF { 00016 00017 class MessageHandler : public IMessageHandler { 00018 private: 00019 cSimpleModule* ospfModule; 00020 00021 HelloHandler helloHandler; 00022 DatabaseDescriptionHandler ddHandler; 00023 LinkStateRequestHandler lsRequestHandler; 00024 LinkStateUpdateHandler lsUpdateHandler; 00025 LinkStateAcknowledgementHandler lsAckHandler; 00026 00027 public: 00028 MessageHandler (Router* containingRouter, cSimpleModule* containingModule); 00029 00030 void MessageReceived(cMessage* message); 00031 void HandleTimer (OSPFTimer* timer); 00032 00033 void ProcessPacket (OSPFPacket* packet, Interface* unused1 = NULL, Neighbor* unused2 = NULL); 00034 00035 void SendPacket (OSPFPacket* packet, IPv4Address destination, int outputIfIndex, short ttl = 1); 00036 void ClearTimer (OSPFTimer* timer); 00037 void StartTimer (OSPFTimer* timer, simtime_t delay); 00038 00039 void PrintEvent (const char* eventString, const Interface* onInterface = NULL, const Neighbor* forNeighbor = NULL) const; 00040 void PrintHelloPacket (const OSPFHelloPacket* helloPacket, IPv4Address destination, int outputIfIndex) const; 00041 void PrintDatabaseDescriptionPacket (const OSPFDatabaseDescriptionPacket* ddPacket, IPv4Address destination, int outputIfIndex) const; 00042 void PrintLinkStateRequestPacket (const OSPFLinkStateRequestPacket* requestPacket, IPv4Address destination, int outputIfIndex) const; 00043 void PrintLinkStateUpdatePacket (const OSPFLinkStateUpdatePacket* updatePacket, IPv4Address destination, int outputIfIndex) const; 00044 void PrintLinkStateAcknowledgementPacket(const OSPFLinkStateAcknowledgementPacket* ackPacket, IPv4Address destination, int outputIfIndex) const; 00045 00046 // Authentication not implemented 00047 bool AuthenticatePacket (OSPFPacket* packet) { return true; } 00048 }; 00049 00050 } // namespace AnsaOSPF 00051 00052 #endif // __INET_MESSAGEHANDLER_H 00053