![]() |
Multicast Routing Modelling In OMNeT++
|
00001 00008 #include "MulticastIPRoute.h" 00009 00010 using namespace std; 00011 00012 MulticastIPRoute::MulticastIPRoute() 00013 { 00014 inInt.intPtr = NULL; 00015 grt = NULL; 00016 sat = NULL; 00017 srt = NULL; 00018 } 00019 00020 string MulticastIPRoute::info() const 00021 { 00022 stringstream out; 00023 out << "("; 00024 if (source.isUnspecified()) out << "* "; else out << source << ", "; 00025 if (group.isUnspecified()) out << "* "; else out << group << "), "; 00026 if (RP.isUnspecified()) out << "0.0.0.0"<< endl; else out << "RP is " << RP << endl; 00027 out << "Incoming interface: "; 00028 if(inInt.intPtr != NULL) 00029 { 00030 if (inInt.intPtr) out << inInt.intPtr->getName() << ", "; 00031 out << "RPF neighbor " << inInt.nextHop << endl; 00032 out << "Outgoing interface list:" << endl; 00033 } 00034 00035 for (InterfaceVector::const_iterator i = outInt.begin(); i < outInt.end(); i++) 00036 { 00037 if ((*i).intPtr) out << (*i).intPtr->getName() << ", "; 00038 if (i->forwarding == Forward) out << "Forward/"; else out << "Pruned/"; 00039 if (i->mode == Densemode) out << "Dense"; else out << "Sparse"; 00040 out << endl; 00041 } 00042 00043 return out.str(); 00044 } 00045 00046 string MulticastIPRoute::detailedInfo() const 00047 { 00048 return string(); 00049 } 00050 00051 00052 bool MulticastIPRoute::isFlagSet(flag fl) 00053 { 00054 for(unsigned int i = 0; i < flags.size(); i++) 00055 { 00056 if (flags[i] == fl) 00057 return true; 00058 } 00059 return false; 00060 } 00061 00062 void MulticastIPRoute::addFlag(flag fl) 00063 { 00064 if (!isFlagSet(fl)) 00065 flags.push_back(fl); 00066 } 00067 00068 void MulticastIPRoute::removeFlag(flag fl) 00069 { 00070 for(unsigned int i = 0; i < flags.size(); i++) 00071 { 00072 if (flags[i] == fl) 00073 { 00074 flags.erase(flags.begin() + i); 00075 return; 00076 } 00077 } 00078 } 00079 00080 int MulticastIPRoute::getOutIdByIntId(int intId) 00081 { 00082 unsigned int i; 00083 for (i = 0; i < outInt.size(); i++) 00084 { 00085 if (outInt[i].intId == intId) 00086 break; 00087 } 00088 return i; 00089 } 00090 00091 bool MulticastIPRoute::isOilistNull() 00092 { 00093 bool olistNull = true; 00094 for (unsigned int i = 0; i < outInt.size(); i++) 00095 { 00096 if (outInt[i].forwarding == Forward) 00097 { 00098 olistNull = false; 00099 break; 00100 } 00101 } 00102 return olistNull; 00103 } 00104