Multicast Routing Modelling In OMNeT++
MulticastIPRoute.cc
Go to the documentation of this file.
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