INET Framework for OMNeT++/OMNEST
AnsaMessageHandler.h
Go to the documentation of this file.
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