![]() |
Multicast Routing Modelling In OMNeT++
|
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