INET Framework for OMNeT++/OMNEST
inet::Igmpv3::RouterInterfaceData Struct Reference

#include <Igmpv3.h>

Public Member Functions

 RouterInterfaceData (Igmpv3 *owner, NetworkInterface *ie)
 
virtual ~RouterInterfaceData ()
 
RouterGroupDatagetOrCreateGroupData (Ipv4Address group)
 
void deleteGroupData (Ipv4Address group)
 

Public Attributes

Igmpv3owner
 
NetworkInterfaceie
 
GroupToRouterDataMap groups
 
RouterState state
 
cMessage * generalQueryTimer
 

Friends

std::ostream & operator<< (std::ostream &out, const Igmpv3::RouterInterfaceData &entry)
 

Constructor & Destructor Documentation

◆ RouterInterfaceData()

inet::Igmpv3::RouterInterfaceData::RouterInterfaceData ( Igmpv3 owner,
NetworkInterface ie 
)
1276  : owner(owner), ie(ie)
1277 {
1278  ASSERT(owner);
1279  ASSERT(ie);
1280 
1282  generalQueryTimer = new cMessage("Igmpv3 General Query timer", IGMPV3_R_GENERAL_QUERY_TIMER);
1283  generalQueryTimer->setContextPointer(this);
1284 }

◆ ~RouterInterfaceData()

inet::Igmpv3::RouterInterfaceData::~RouterInterfaceData ( )
virtual
1287 {
1288  owner->cancelAndDelete(generalQueryTimer);
1289 
1290  for (auto& elem : groups)
1291  delete elem.second;
1292 }

Member Function Documentation

◆ deleteGroupData()

void inet::Igmpv3::RouterInterfaceData::deleteGroupData ( Ipv4Address  group)
1308 {
1309  auto it = groups.find(group);
1310  if (it != groups.end()) {
1311  RouterGroupData *data = it->second;
1312  groups.erase(it);
1313  delete data;
1315  owner->numGroups--;
1316  }
1317 }

Referenced by inet::Igmpv3::processRouterGroupTimer(), and inet::Igmpv3::processRouterSourceTimer().

◆ getOrCreateGroupData()

Igmpv3::RouterGroupData * inet::Igmpv3::RouterInterfaceData::getOrCreateGroupData ( Ipv4Address  group)
1295 {
1296  auto it = groups.find(group);
1297  if (it != groups.end())
1298  return it->second;
1299 
1300  RouterGroupData *data = new RouterGroupData(this, group);
1301  groups[group] = data;
1302  owner->numGroups++;
1304  return data;
1305 }

Referenced by inet::Igmpv3::processQuery(), and inet::Igmpv3::processReport().

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  out,
const Igmpv3::RouterInterfaceData entry 
)
friend
173  {
174  out << "routerState: " << Igmpv3::getRouterStateString(entry.state) << " ";
175  out << "queryTimer: " << entry.generalQueryTimer->getArrivalTime() << " ";
176  if (entry.groups.empty())
177  out << "(empty)";
178  else {
179  for (auto& g : entry.groups) {
180  out << "(groupAddress: " << g.second->groupAddr << " ";
181  out << "routerGroupState: " << Igmpv3::getRouterGroupStateString(g.second->state) << " ";
182  out << "timer: " << g.second->timer->getArrivalTime() << " ";
183  out << "filter: " << Igmpv3::getFilterModeString(g.second->filter) << ") ";
184  }
185  }
186 
187  return out;
188  }

Member Data Documentation

◆ generalQueryTimer

cMessage* inet::Igmpv3::RouterInterfaceData::generalQueryTimer

◆ groups

GroupToRouterDataMap inet::Igmpv3::RouterInterfaceData::groups

◆ ie

◆ owner

Igmpv3* inet::Igmpv3::RouterInterfaceData::owner

Referenced by RouterInterfaceData().

◆ state


The documentation for this struct was generated from the following files:
inet::Igmpv3::getRouterStateString
static const std::string getRouterStateString(RouterState rs)
Definition: Igmpv3.cc:1395
inet::Igmpv3::IGMPV3_RS_INITIAL
@ IGMPV3_RS_INITIAL
Definition: Igmpv3.h:36
inet::Igmpv3::numRouterGroups
int numRouterGroups
Definition: Igmpv3.h:214
inet::units::units::g
milli< kg >::type g
Definition: Units.h:1071
inet::Igmpv3::RouterInterfaceData::owner
Igmpv3 * owner
Definition: Igmpv3.h:162
inet::Igmpv3::getFilterModeString
static const std::string getFilterModeString(FilterMode fm)
Definition: Igmpv3.cc:1431
inet::Igmpv3::RouterInterfaceData::state
RouterState state
Definition: Igmpv3.h:165
inet::Igmpv3::RouterInterfaceData::generalQueryTimer
cMessage * generalQueryTimer
Definition: Igmpv3.h:166
inet::Igmpv3::numGroups
int numGroups
Definition: Igmpv3.h:212
inet::Igmpv3::getRouterGroupStateString
static const std::string getRouterGroupStateString(RouterGroupState rgs)
Definition: Igmpv3.cc:1407
inet::Igmpv3::RouterInterfaceData::groups
GroupToRouterDataMap groups
Definition: Igmpv3.h:164
inet::Igmpv3::IGMPV3_R_GENERAL_QUERY_TIMER
@ IGMPV3_R_GENERAL_QUERY_TIMER
Definition: Igmpv3.h:68
inet::Igmpv3::RouterInterfaceData::ie
NetworkInterface * ie
Definition: Igmpv3.h:163