Multicast Routing Modelling In OMNeT++
PimSplitter.h
Go to the documentation of this file.
00001 
00011 #ifndef PIMSPLITTER_H_
00012 #define PIMSPLITTER_H_
00013 
00014 #include <omnetpp.h>
00015 #include "PIMPacket_m.h"
00016 #include "PIMTimer_m.h"
00017 #include "IPControlInfo.h"
00018 #include "IPv4InterfaceData.h"
00019 #include "AnsaInterfaceTableAccess.h"
00020 #include "MulticastRoutingTableAccess.h"
00021 #include "RoutingTableAccess.h"
00022 #include "AnsaInterfaceTable.h"
00023 #include "AnsaRoutingTable.h"
00024 #include "NotificationBoard.h"
00025 #include "NotifierConsts.h"
00026 #include "InterfaceStateManager.h"
00027 #include "IPvXAddress.h"
00028 #include "PimNeighborTable.h"
00029 #include "PimInterfaceTable.h"
00030 
00031 
00032 #define HT 30.0                                                                         
00041 class PimSplitter : public cSimpleModule, protected INotifiable
00042 {
00043         private:
00044                 IRoutingTable                   *rt;            
00045                 MulticastRoutingTable           *mrt;                   
00046             IInterfaceTable             *ift;           
00047             NotificationBoard                   *nb;                    
00048             PimInterfaceTable                   *pimIft;                
00049             PimNeighborTable                    *pimNbt;                
00050             const char *                                hostname;       
00052            void processPIMPkt(PIMPacket *pkt);
00053            void processNLTimer(PIMTimer *timer);
00054 
00055            // methods for Hello packets
00056            PIMHello* createHelloPkt(int iftID);
00057            void sendHelloPkt();
00058            void processHelloPkt(PIMPacket *pkt);
00059 
00060            // process notification
00061            void receiveChangeNotification(int category, const cPolymorphic *details);
00062            virtual void newMulticast(IPAddress destAddr, IPAddress srcAddr);
00063            void igmpChange(InterfaceEntry *interface);
00064 
00065            // not in use
00066            bool LoadConfigFromXML(const char *filename);
00067 
00068         protected:
00069                 virtual int numInitStages() const  {return 5;}
00070                 virtual void handleMessage(cMessage *msg);
00071                 virtual void initialize(int stage);
00072 
00073         public:
00074                 PimSplitter(){};
00075 };
00076 
00077 
00078 #endif /* PIMSPLITTER_H_ */
00079 
00080