INET Framework for OMNeT++/OMNEST
inet::Ipv4InterfaceData Class Reference

Ipv4-specific data in an NetworkInterface. More...

#include <Ipv4InterfaceData.h>

Inheritance diagram for inet::Ipv4InterfaceData:
inet::InterfaceProtocolData inet::TagBase inet::IPrintableObject

Classes

struct  HostMulticastData
 
struct  HostMulticastGroupData
 
struct  RouterMulticastData
 
struct  RouterMulticastGroupData
 

Public Types

enum  {
  F_IP_ADDRESS, F_NETMASK, F_METRIC, F_MULTICAST_TTL_THRESHOLD,
  F_MULTICAST_ADDRESSES, F_MULTICAST_LISTENERS
}
 
typedef std::vector< Ipv4AddressIpv4AddressVector
 
- Public Types inherited from inet::IPrintableObject
enum  PrintLevel {
  PRINT_LEVEL_TRACE, PRINT_LEVEL_DEBUG, PRINT_LEVEL_DETAIL, PRINT_LEVEL_INFO,
  PRINT_LEVEL_COMPLETE = INT_MIN
}
 
enum  PrintFlag { PRINT_FLAG_FORMATTED = (1 << 0), PRINT_FLAG_MULTILINE = (1 << 1) }
 

Public Member Functions

 Ipv4InterfaceData ()
 
virtual ~Ipv4InterfaceData ()
 
virtual std::string str () const override
 
virtual std::string detailedInfo () const
 
Getters
Ipv4Address getIPAddress () const
 
Ipv4Address getNetmask () const
 
Ipv4Address getNetworkBroadcastAddress () const
 
int getMetric () const
 
int getMulticastTtlThreshold () const
 
int getNumOfJoinedMulticastGroups () const
 
Ipv4Address getJoinedMulticastGroup (int index) const
 
const Ipv4MulticastSourceListgetJoinedMulticastSources (int index)
 
int getNumOfReportedMulticastGroups () const
 
Ipv4Address getReportedMulticastGroup (int index) const
 
const Ipv4MulticastSourceListgetReportedMulticastSources (int index) const
 
bool isMemberOfMulticastGroup (const Ipv4Address &multicastAddress) const
 
bool hasMulticastListener (Ipv4Address multicastAddress) const
 
bool hasMulticastListener (Ipv4Address multicastAddress, Ipv4Address sourceAddress) const
 
Setters
virtual void setIPAddress (Ipv4Address a)
 
virtual void setNetmask (Ipv4Address m)
 
virtual void setMetric (int m)
 
virtual void setMulticastTtlThreshold (int threshold)
 
virtual void joinMulticastGroup (const Ipv4Address &multicastAddress)
 
virtual void leaveMulticastGroup (const Ipv4Address &multicastAddress)
 
virtual void changeMulticastGroupMembership (Ipv4Address multicastAddress, McastSourceFilterMode oldFilterMode, const Ipv4AddressVector &oldSourceList, McastSourceFilterMode newFilterMode, const Ipv4AddressVector &newSourceList)
 This method is called by sockets to register their multicast group membership changes in the interface. More...
 
virtual void addMulticastListener (const Ipv4Address &multicastAddress)
 
virtual void addMulticastListener (Ipv4Address multicastAddress, Ipv4Address sourceAddress)
 
virtual void removeMulticastListener (const Ipv4Address &multicastAddress)
 
virtual void removeMulticastListener (Ipv4Address multicastAddress, Ipv4Address sourceAddress)
 
virtual void setMulticastListeners (Ipv4Address multicastAddress, McastSourceFilterMode filterMode, const Ipv4AddressVector &sourceList)
 
- Public Member Functions inherited from inet::InterfaceProtocolData
 InterfaceProtocolData (int id)
 
NetworkInterfacegetNetworkInterface () const
 Returns the NetworkInterface that contains this data object, or nullptr. More...
 
- Public Member Functions inherited from inet::TagBase
virtual const Ptr< TagBasedupShared () const
 
virtual const Ptr< TagBasechangeRegion (b offsetDelta, b lengthDelta) const
 
virtual void parsimPack (cCommBuffer *buffer) const override
 
virtual void parsimUnpack (cCommBuffer *buffer) override
 
virtual std::ostream & printToStream (std::ostream &stream, int level, int evFlags) const override
 Prints this object to the provided output stream. More...
 
virtual std::ostream & printFieldsToStream (std::ostream &stream, int level, int evFlags) const
 
- Public Member Functions inherited from inet::IPrintableObject
virtual ~IPrintableObject ()
 
virtual std::string printToString () const
 
virtual std::string printToString (int level, int evFlags=0) const
 
virtual std::string getInfoStringRepresentation (int evFlags=0) const
 
virtual std::string getDetailStringRepresentation (int evFlags=0) const
 
virtual std::string getDebugStringRepresentation (int evFlags=0) const
 
virtual std::string getTraceStringRepresentation (int evFlags=0) const
 
virtual std::string getCompleteStringRepresentation (int evFlags=0) const
 

Protected Types

typedef std::vector< HostMulticastGroupData * > HostMulticastGroupVector
 
typedef std::vector< RouterMulticastGroupData * > RouterMulticastGroupVector
 

Protected Member Functions

void changed1 (int fieldId)
 
HostMulticastDatagetHostData ()
 
const HostMulticastDatagetHostData () const
 
HostMulticastGroupDatafindHostGroupData (Ipv4Address multicastAddress)
 
bool removeHostGroupData (Ipv4Address multicastAddress)
 
RouterMulticastDatagetRouterData ()
 
const RouterMulticastDatagetRouterData () const
 
RouterMulticastGroupDatafindRouterGroupData (Ipv4Address multicastAddress) const
 
bool removeRouterGroupData (Ipv4Address multicastAddress)
 
- Protected Member Functions inherited from inet::InterfaceProtocolData
virtual void changed (simsignal_t signalID, int fieldId)
 

Protected Attributes

Ipv4Address inetAddr
 Ipv4 address of interface. More...
 
Ipv4Address netmask
 netmask More...
 
int metric
 link "cost"; see e.g. MS KB article Q299540 More...
 
HostMulticastDatahostData
 
RouterMulticastDatarouterData
 
- Protected Attributes inherited from inet::InterfaceProtocolData
NetworkInterfaceownerp = nullptr
 
int id
 

Private Member Functions

 Ipv4InterfaceData (const Ipv4InterfaceData &obj)
 
Ipv4InterfaceDataoperator= (const Ipv4InterfaceData &obj)
 

Detailed Description

Ipv4-specific data in an NetworkInterface.

Stores interface Ipv4 address, netmask, metric, etc.

See also
NetworkInterface

Member Typedef Documentation

◆ HostMulticastGroupVector

◆ Ipv4AddressVector

◆ RouterMulticastGroupVector

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
F_IP_ADDRESS 
F_NETMASK 
F_METRIC 
F_MULTICAST_TTL_THRESHOLD 
F_MULTICAST_ADDRESSES 
F_MULTICAST_LISTENERS 

Constructor & Destructor Documentation

◆ Ipv4InterfaceData() [1/2]

inet::Ipv4InterfaceData::Ipv4InterfaceData ( const Ipv4InterfaceData obj)
private

◆ Ipv4InterfaceData() [2/2]

inet::Ipv4InterfaceData::Ipv4InterfaceData ( )
147 {
149  metric = 0;
150  hostData = nullptr;
151  routerData = nullptr;
152 }

◆ ~Ipv4InterfaceData()

inet::Ipv4InterfaceData::~Ipv4InterfaceData ( )
virtual
155 {
156  delete hostData;
157  delete routerData;
158 }

Member Function Documentation

◆ addMulticastListener() [1/2]

void inet::Ipv4InterfaceData::addMulticastListener ( const Ipv4Address multicastAddress)
virtual
350 {
351  if (!multicastAddress.isMulticast())
352  throw cRuntimeError("Ipv4InterfaceData::addMulticastListener(): multicast address expected, received %s.", multicastAddress.str().c_str());
353 
354  RouterMulticastGroupData *groupData = findRouterGroupData(multicastAddress);
355  if (!groupData) {
356  groupData = new RouterMulticastGroupData(multicastAddress);
357  getRouterData()->reportedMulticastGroups.push_back(groupData);
358 
359  Ipv4MulticastGroupInfo info(getNetworkInterface(), multicastAddress);
360  check_and_cast<cModule *>(getNetworkInterface()->getInterfaceTable())->emit(ipv4MulticastGroupRegisteredSignal, &info);
361  }
362 
363  if (!groupData->sourceList.containsAll()) {
364  groupData->sourceList = Ipv4MulticastSourceList::ALL_SOURCES;
366  }
367 }

◆ addMulticastListener() [2/2]

void inet::Ipv4InterfaceData::addMulticastListener ( Ipv4Address  multicastAddress,
Ipv4Address  sourceAddress 
)
virtual
370 {
371  if (!multicastAddress.isMulticast())
372  throw cRuntimeError("Ipv4InterfaceData::addMulticastListener(): multicast address expected, received %s.", multicastAddress.str().c_str());
373 
374  RouterMulticastGroupData *groupData = findRouterGroupData(multicastAddress);
375  if (!groupData) {
376  groupData = new RouterMulticastGroupData(multicastAddress);
377  getRouterData()->reportedMulticastGroups.push_back(groupData);
378 
379  Ipv4MulticastGroupInfo info(getNetworkInterface(), multicastAddress);
380  check_and_cast<cModule *>(getNetworkInterface()->getInterfaceTable())->emit(ipv4MulticastGroupRegisteredSignal, &info);
381  }
382 
383  if (!groupData->sourceList.contains(sourceAddress)) {
384  groupData->sourceList.add(sourceAddress);
386  }
387 }

◆ changed1()

void inet::Ipv4InterfaceData::changed1 ( int  fieldId)
inlineprotected

◆ changeMulticastGroupMembership()

void inet::Ipv4InterfaceData::changeMulticastGroupMembership ( Ipv4Address  multicastAddress,
McastSourceFilterMode  oldFilterMode,
const Ipv4AddressVector oldSourceList,
McastSourceFilterMode  newFilterMode,
const Ipv4AddressVector newSourceList 
)
virtual

This method is called by sockets to register their multicast group membership changes in the interface.

214 {
215  if (!multicastAddress.isMulticast())
216  throw cRuntimeError("Ipv4InterfaceData::changeMulticastGroupMembership(): multicast address expected, received %s.", multicastAddress.str().c_str());
217 
218  HostMulticastGroupData *entry = findHostGroupData(multicastAddress);
219  if (!entry) {
220  ASSERT(oldFilterMode == MCAST_INCLUDE_SOURCES && oldSourceList.empty());
221  HostMulticastData *data = getHostData();
222  data->joinedMulticastGroups.push_back(new HostMulticastGroupData(multicastAddress));
223  entry = data->joinedMulticastGroups.back();
224  }
225 
226  std::map<Ipv4Address, int> *counts = oldFilterMode == MCAST_INCLUDE_SOURCES ? &entry->includeCounts : &entry->excludeCounts;
227  for (const auto& elem : oldSourceList) {
228  auto count = counts->find(elem);
229  if (count == counts->end())
230  throw cRuntimeError("Inconsistent reference counts in Ipv4InterfaceData.");
231  else if (count->second == 1)
232  counts->erase(count);
233  else
234  count->second--;
235  }
236 
237  counts = newFilterMode == MCAST_INCLUDE_SOURCES ? &entry->includeCounts : &entry->excludeCounts;
238  for (const auto& elem : newSourceList) {
239  auto count = counts->find(elem);
240  if (count == counts->end())
241  (*counts)[elem] = 1;
242  else
243  count->second++;
244  }
245 
246  // update number of EXCLUDE mode sockets
247  if (oldFilterMode == MCAST_INCLUDE_SOURCES && newFilterMode == MCAST_EXCLUDE_SOURCES)
248  entry->numOfExcludeModeSockets++;
249  else if (oldFilterMode == MCAST_EXCLUDE_SOURCES && newFilterMode == MCAST_INCLUDE_SOURCES)
250  entry->numOfExcludeModeSockets--;
251 
252  // compute filterMode and sourceList
253  bool changed = entry->updateSourceList();
254 
255  if (changed) {
257 
258  cModule *m = ownerp ? dynamic_cast<cModule *>(ownerp->getInterfaceTable()) : nullptr;
259  if (m) {
260  Ipv4MulticastGroupSourceInfo info(ownerp, multicastAddress, entry->sourceList);
261  m->emit(ipv4MulticastChangeSignal, &info);
262  }
263 
264  // Legacy notifications
265  if (oldFilterMode != newFilterMode && oldSourceList.empty() && newSourceList.empty()) {
266  cModule *m = ownerp ? dynamic_cast<cModule *>(ownerp->getInterfaceTable()) : nullptr;
267  if (m) {
268  Ipv4MulticastGroupInfo info2(ownerp, multicastAddress);
270  }
271  }
272 
273  // remove group data if it is INCLUDE(empty)
274  if (entry->sourceList.isEmpty()) {
275  removeHostGroupData(multicastAddress);
276  }
277  }
278 }

Referenced by joinMulticastGroup(), and leaveMulticastGroup().

◆ detailedInfo()

std::string inet::Ipv4InterfaceData::detailedInfo ( ) const
virtual
173 {
174  std::stringstream out;
175  out << "inet addr:" << getIPAddress() << "\tMask: " << getNetmask() << "\n";
176  out << "Metric: " << getMetric() << "\n";
177  if (hostData)
178  out << hostData->detailedInfo();
179  if (routerData)
180  out << routerData->detailedInfo();
181  return out.str();
182 }

◆ findHostGroupData()

Ipv4InterfaceData::HostMulticastGroupData * inet::Ipv4InterfaceData::findHostGroupData ( Ipv4Address  multicastAddress)
protected
456 {
457  ASSERT(multicastAddress.isMulticast());
459  for (auto& entrie : entries)
460  if ((entrie)->multicastGroup == multicastAddress)
461  return entrie;
462 
463  return nullptr;
464 }

Referenced by changeMulticastGroupMembership().

◆ findRouterGroupData()

Ipv4InterfaceData::RouterMulticastGroupData * inet::Ipv4InterfaceData::findRouterGroupData ( Ipv4Address  multicastAddress) const
protected
314 {
315  ASSERT(multicastAddress.isMulticast());
317  for (const auto& entrie : entries)
318  if ((entrie)->multicastGroup == multicastAddress)
319  return entrie;
320 
321  return nullptr;
322 }

Referenced by addMulticastListener(), hasMulticastListener(), and setMulticastListeners().

◆ getHostData() [1/2]

HostMulticastData* inet::Ipv4InterfaceData::getHostData ( )
inlineprotected

◆ getHostData() [2/2]

const HostMulticastData* inet::Ipv4InterfaceData::getHostData ( ) const
inlineprotected
135 { return const_cast<Ipv4InterfaceData *>(this)->getHostData(); }

Referenced by getHostData().

◆ getIPAddress()

◆ getJoinedMulticastGroup()

Ipv4Address inet::Ipv4InterfaceData::getJoinedMulticastGroup ( int  index) const
inline
162 { return getHostData()->joinedMulticastGroups[index]->multicastGroup; }

◆ getJoinedMulticastSources()

const Ipv4MulticastSourceList& inet::Ipv4InterfaceData::getJoinedMulticastSources ( int  index)
inline
163 { return getHostData()->joinedMulticastGroups[index]->sourceList; }

◆ getMetric()

int inet::Ipv4InterfaceData::getMetric ( ) const
inline
159 { return metric; }

Referenced by detailedInfo(), and inet::Ted::initializeTED().

◆ getMulticastTtlThreshold()

int inet::Ipv4InterfaceData::getMulticastTtlThreshold ( ) const
inline

◆ getNetmask()

◆ getNetworkBroadcastAddress()

Ipv4Address inet::Ipv4InterfaceData::getNetworkBroadcastAddress ( ) const
inline

◆ getNumOfJoinedMulticastGroups()

int inet::Ipv4InterfaceData::getNumOfJoinedMulticastGroups ( ) const
inline

◆ getNumOfReportedMulticastGroups()

int inet::Ipv4InterfaceData::getNumOfReportedMulticastGroups ( ) const
inline
164 { return getRouterData()->reportedMulticastGroups.size(); }

◆ getReportedMulticastGroup()

Ipv4Address inet::Ipv4InterfaceData::getReportedMulticastGroup ( int  index) const
inline
165 { return getRouterData()->reportedMulticastGroups[index]->multicastGroup; }

◆ getReportedMulticastSources()

const Ipv4MulticastSourceList& inet::Ipv4InterfaceData::getReportedMulticastSources ( int  index) const
inline
166 { return getRouterData()->reportedMulticastGroups[index]->sourceList; }

◆ getRouterData() [1/2]

RouterMulticastData* inet::Ipv4InterfaceData::getRouterData ( )
inlineprotected

◆ getRouterData() [2/2]

const RouterMulticastData* inet::Ipv4InterfaceData::getRouterData ( ) const
inlineprotected
139 { return const_cast<Ipv4InterfaceData *>(this)->getRouterData(); }

Referenced by getRouterData().

◆ hasMulticastListener() [1/2]

bool inet::Ipv4InterfaceData::hasMulticastListener ( Ipv4Address  multicastAddress) const
338 {
339  RouterMulticastGroupData *groupData = findRouterGroupData(multicastAddress);
340  return groupData && !groupData->sourceList.isEmpty();
341 }

Referenced by inet::Ipv4::forwardMulticastPacket().

◆ hasMulticastListener() [2/2]

bool inet::Ipv4InterfaceData::hasMulticastListener ( Ipv4Address  multicastAddress,
Ipv4Address  sourceAddress 
) const
344 {
345  RouterMulticastGroupData *groupData = findRouterGroupData(multicastAddress);
346  return groupData && !groupData->sourceList.contains(sourceAddress);
347 }

◆ isMemberOfMulticastGroup()

bool inet::Ipv4InterfaceData::isMemberOfMulticastGroup ( const Ipv4Address multicastAddress) const
185 {
187  for (HostMulticastGroupVector::const_iterator it = groups.begin(); it != groups.end(); ++it)
188  if ((*it)->multicastGroup == multicastAddress)
189  return true;
190 
191  return false;
192 }

Referenced by inet::Ipv4RoutingTable::isLocalMulticastAddress(), and inet::Ipv4::preroutingFinish().

◆ joinMulticastGroup()

void inet::Ipv4InterfaceData::joinMulticastGroup ( const Ipv4Address multicastAddress)
virtual

◆ leaveMulticastGroup()

void inet::Ipv4InterfaceData::leaveMulticastGroup ( const Ipv4Address multicastAddress)
virtual

◆ operator=()

Ipv4InterfaceData& inet::Ipv4InterfaceData::operator= ( const Ipv4InterfaceData obj)
private

◆ removeHostGroupData()

bool inet::Ipv4InterfaceData::removeHostGroupData ( Ipv4Address  multicastAddress)
protected
467 {
468  ASSERT(multicastAddress.isMulticast());
470  for (auto it = entries.begin(); it != entries.end(); ++it)
471  if ((*it)->multicastGroup == multicastAddress) {
472  delete *it;
473  entries.erase(it);
474  return true;
475  }
476  return false;
477 }

Referenced by changeMulticastGroupMembership().

◆ removeMulticastListener() [1/2]

void inet::Ipv4InterfaceData::removeMulticastListener ( const Ipv4Address multicastAddress)
virtual
390 {
392 
393  int n = multicastGroups.size();
394  int i;
395  for (i = 0; i < n; i++)
396  if (multicastGroups[i]->multicastGroup == multicastAddress)
397  break;
398 
399  if (i != n) {
400  delete multicastGroups[i];
401  multicastGroups.erase(multicastGroups.begin() + i);
403 
404  Ipv4MulticastGroupInfo info(getNetworkInterface(), multicastAddress);
405  check_and_cast<cModule *>(getNetworkInterface()->getInterfaceTable())->emit(ipv4MulticastGroupUnregisteredSignal, &info);
406  }
407 }

◆ removeMulticastListener() [2/2]

void inet::Ipv4InterfaceData::removeMulticastListener ( Ipv4Address  multicastAddress,
Ipv4Address  sourceAddress 
)
virtual
410 {
412 
413  int n = multicastGroups.size();
414  int i;
415  for (i = 0; i < n; i++)
416  if (multicastGroups[i]->multicastGroup == multicastAddress)
417  break;
418 
419  if (i != n) {
420  multicastGroups[i]->sourceList.remove(sourceAddress);
421  if (multicastGroups[i]->sourceList.isEmpty()) {
422  delete multicastGroups[i];
423  multicastGroups.erase(multicastGroups.begin() + i);
424 
425  Ipv4MulticastGroupInfo info(getNetworkInterface(), multicastAddress);
426  check_and_cast<cModule *>(getNetworkInterface()->getInterfaceTable())->emit(ipv4MulticastGroupUnregisteredSignal, &info);
427  }
429  }
430 }

◆ removeRouterGroupData()

bool inet::Ipv4InterfaceData::removeRouterGroupData ( Ipv4Address  multicastAddress)
protected
325 {
326  ASSERT(multicastAddress.isMulticast());
328  for (auto it = entries.begin(); it != entries.end(); ++it)
329  if ((*it)->multicastGroup == multicastAddress) {
330  delete *it;
331  entries.erase(it);
332  return true;
333  }
334  return false;
335 }

Referenced by setMulticastListeners().

◆ setIPAddress()

◆ setMetric()

virtual void inet::Ipv4InterfaceData::setMetric ( int  m)
inlinevirtual
176 { metric = m; changed1(F_METRIC); }

◆ setMulticastListeners()

void inet::Ipv4InterfaceData::setMulticastListeners ( Ipv4Address  multicastAddress,
McastSourceFilterMode  filterMode,
const Ipv4AddressVector sourceList 
)
virtual
433 {
434  if (!multicastAddress.isMulticast())
435  throw cRuntimeError("Ipv4InterfaceData::setMulticastListeners(): multicast address expected, received %s.", multicastAddress.str().c_str());
436 
437  RouterMulticastGroupData *groupData = findRouterGroupData(multicastAddress);
438  if (!groupData) {
439  groupData = new RouterMulticastGroupData(multicastAddress);
440  getRouterData()->reportedMulticastGroups.push_back(groupData);
441  }
442 
443  if (filterMode != groupData->sourceList.filterMode || sourceList != groupData->sourceList.sources) {
444  if (filterMode != MCAST_INCLUDE_SOURCES || !sourceList.empty()) {
445  groupData->sourceList.filterMode = filterMode;
446  groupData->sourceList.sources = sourceList;
447  }
448  else
449  removeRouterGroupData(multicastAddress);
450 
452  }
453 }

◆ setMulticastTtlThreshold()

virtual void inet::Ipv4InterfaceData::setMulticastTtlThreshold ( int  threshold)
inlinevirtual

◆ setNetmask()

virtual void inet::Ipv4InterfaceData::setNetmask ( Ipv4Address  m)
inlinevirtual
175 { netmask = m; changed1(F_NETMASK); }

◆ str()

std::string inet::Ipv4InterfaceData::str ( ) const
overridevirtual

Reimplemented from inet::TagBase.

161 {
162  std::stringstream out;
163  out << "Ipv4:{inet_addr:" << getIPAddress() << "/" << getNetmask().getNetmaskLength();
164  if (hostData)
165  out << hostData->str();
166  if (routerData)
167  out << routerData->str();
168  out << "}";
169  return out.str();
170 }

Member Data Documentation

◆ hostData

HostMulticastData* inet::Ipv4InterfaceData::hostData
protected

◆ inetAddr

Ipv4Address inet::Ipv4InterfaceData::inetAddr
protected

Ipv4 address of interface.

◆ metric

int inet::Ipv4InterfaceData::metric
protected

link "cost"; see e.g. MS KB article Q299540

Referenced by Ipv4InterfaceData().

◆ netmask

Ipv4Address inet::Ipv4InterfaceData::netmask
protected

netmask

Referenced by Ipv4InterfaceData().

◆ routerData

RouterMulticastData* inet::Ipv4InterfaceData::routerData
protected

The documentation for this class was generated from the following files:
inet::Ipv4InterfaceData::F_MULTICAST_TTL_THRESHOLD
@ F_MULTICAST_TTL_THRESHOLD
Definition: Ipv4InterfaceData.h:78
inet::Ipv4InterfaceData::metric
int metric
link "cost"; see e.g. MS KB article Q299540
Definition: Ipv4InterfaceData.h:128
inet::InterfaceProtocolData::getNetworkInterface
NetworkInterface * getNetworkInterface() const
Returns the NetworkInterface that contains this data object, or nullptr.
Definition: NetworkInterface.h:67
inet::NetworkInterface::F_IPV4_DATA
@ F_IPV4_DATA
Definition: NetworkInterface.h:150
inet::ipv4MulticastGroupLeftSignal
simsignal_t ipv4MulticastGroupLeftSignal
Definition: Simsignals.cc:50
inet::Ipv4InterfaceData::getHostData
HostMulticastData * getHostData()
Definition: Ipv4InterfaceData.h:134
inet::mpls_constants::empty
const char empty[]
Definition: ConstType.h:29
inet::Ipv4InterfaceData::F_NETMASK
@ F_NETMASK
Definition: Ipv4InterfaceData.h:78
inet::Ipv4InterfaceData::HostMulticastData::str
std::string str()
Definition: Ipv4InterfaceData.cc:83
inet::Ipv4Address::getNetmaskLength
int getNetmaskLength() const
Counts 1 bits in a netmask.
Definition: Ipv4Address.cc:234
inet::count
int count(const std::vector< T > &v, const Tk &a)
Definition: stlutils.h:54
inet::ipv4MulticastGroupJoinedSignal
simsignal_t ipv4MulticastGroupJoinedSignal
Definition: Simsignals.cc:49
inet::ipv4MulticastChangeSignal
simsignal_t ipv4MulticastChangeSignal
Definition: Simsignals.cc:51
inet::InterfaceProtocolData::ownerp
NetworkInterface * ownerp
Definition: NetworkInterface.h:54
inet::Ipv4InterfaceData::RouterMulticastData::detailedInfo
std::string detailedInfo()
Definition: Ipv4InterfaceData.cc:132
inet::Ipv4MulticastSourceList::ALL_SOURCES
static const Ipv4MulticastSourceList ALL_SOURCES
Definition: Ipv4InterfaceData.h:28
inet::Ipv4Address::ALLONES_ADDRESS
static const Ipv4Address ALLONES_ADDRESS
255.255.255.255
Definition: Ipv4Address.h:94
inet::Ipv4InterfaceData::Ipv4AddressVector
std::vector< Ipv4Address > Ipv4AddressVector
Definition: Ipv4InterfaceData.h:75
inet::Ipv4InterfaceData::routerData
RouterMulticastData * routerData
Definition: Ipv4InterfaceData.h:130
inet::Ipv4InterfaceData::HostMulticastData::detailedInfo
std::string detailedInfo()
Definition: Ipv4InterfaceData.cc:97
inet::Ipv4InterfaceData::changeMulticastGroupMembership
virtual void changeMulticastGroupMembership(Ipv4Address multicastAddress, McastSourceFilterMode oldFilterMode, const Ipv4AddressVector &oldSourceList, McastSourceFilterMode newFilterMode, const Ipv4AddressVector &newSourceList)
This method is called by sockets to register their multicast group membership changes in the interfac...
Definition: Ipv4InterfaceData.cc:211
inet::InterfaceProtocolData::InterfaceProtocolData
InterfaceProtocolData(int id)
Definition: NetworkInterface.h:62
inet::ipv4MulticastGroupRegisteredSignal
simsignal_t ipv4MulticastGroupRegisteredSignal
Definition: Simsignals.cc:52
inet::Ipv4InterfaceData::hostData
HostMulticastData * hostData
Definition: Ipv4InterfaceData.h:129
inet::Ipv4InterfaceData::getNetmask
Ipv4Address getNetmask() const
Definition: Ipv4InterfaceData.h:157
inet::NetworkInterface::getInterfaceTable
IInterfaceTable * getInterfaceTable() const
Returns the IInterfaceTable this interface is in, or nullptr.
Definition: NetworkInterface.h:205
inet::Ipv4InterfaceData::F_MULTICAST_ADDRESSES
@ F_MULTICAST_ADDRESSES
Definition: Ipv4InterfaceData.h:78
inet::Ipv4InterfaceData::Ipv4InterfaceData
Ipv4InterfaceData()
Definition: Ipv4InterfaceData.cc:145
inet::Ipv4InterfaceData::changed1
void changed1(int fieldId)
Definition: Ipv4InterfaceData.h:133
inet::Ipv4InterfaceData::HostMulticastData::joinedMulticastGroups
HostMulticastGroupVector joinedMulticastGroups
Definition: Ipv4InterfaceData.h:99
inet::Ipv4InterfaceData::RouterMulticastGroupVector
std::vector< RouterMulticastGroupData * > RouterMulticastGroupVector
Definition: Ipv4InterfaceData.h:114
inet::Ipv4InterfaceData::F_IP_ADDRESS
@ F_IP_ADDRESS
Definition: Ipv4InterfaceData.h:78
inet::InterfaceProtocolData::changed
virtual void changed(simsignal_t signalID, int fieldId)
Definition: NetworkInterface.cc:50
inet::Ipv4InterfaceData::removeRouterGroupData
bool removeRouterGroupData(Ipv4Address multicastAddress)
Definition: Ipv4InterfaceData.cc:324
inet::Ipv4InterfaceData::findRouterGroupData
RouterMulticastGroupData * findRouterGroupData(Ipv4Address multicastAddress) const
Definition: Ipv4InterfaceData.cc:313
inet::Ipv4InterfaceData::getMetric
int getMetric() const
Definition: Ipv4InterfaceData.h:159
inet::ipv4MulticastGroupUnregisteredSignal
simsignal_t ipv4MulticastGroupUnregisteredSignal
Definition: Simsignals.cc:53
inet::Ipv4InterfaceData::findHostGroupData
HostMulticastGroupData * findHostGroupData(Ipv4Address multicastAddress)
Definition: Ipv4InterfaceData.cc:455
inet::Ipv4Address::makeBroadcastAddress
Ipv4Address makeBroadcastAddress(Ipv4Address netmask) const
Returns the broadcast address for the given netmask.
Definition: Ipv4Address.cc:264
inet::interfaceIpv4ConfigChangedSignal
simsignal_t interfaceIpv4ConfigChangedSignal
Definition: Simsignals.cc:35
inet::Ipv4InterfaceData::netmask
Ipv4Address netmask
netmask
Definition: Ipv4InterfaceData.h:127
inet::Ipv4InterfaceData::F_METRIC
@ F_METRIC
Definition: Ipv4InterfaceData.h:78
inet::Ipv4InterfaceData::getRouterData
RouterMulticastData * getRouterData()
Definition: Ipv4InterfaceData.h:138
inet::Ipv4InterfaceData::RouterMulticastData::multicastTtlThreshold
int multicastTtlThreshold
multicast ttl threshold, used by multicast routers to limit multicast scope
Definition: Ipv4InterfaceData.h:118
inet::Ipv4InterfaceData::F_MULTICAST_LISTENERS
@ F_MULTICAST_LISTENERS
Definition: Ipv4InterfaceData.h:78
inet::MCAST_EXCLUDE_SOURCES
@ MCAST_EXCLUDE_SOURCES
Definition: NetworkInterface.h:33
inet::units::values::m
value< double, units::m > m
Definition: Units.h:1233
inet::Ipv4InterfaceData::getIPAddress
Ipv4Address getIPAddress() const
Definition: Ipv4InterfaceData.h:156
inet::MCAST_INCLUDE_SOURCES
@ MCAST_INCLUDE_SOURCES
Definition: NetworkInterface.h:33
inet::Ipv4InterfaceData::RouterMulticastData::reportedMulticastGroups
RouterMulticastGroupVector reportedMulticastGroups
multicast groups that have listeners on the link connected to this interface
Definition: Ipv4InterfaceData.h:117
inet::Ipv4InterfaceData::removeHostGroupData
bool removeHostGroupData(Ipv4Address multicastAddress)
Definition: Ipv4InterfaceData.cc:466
inet::Ipv4InterfaceData::inetAddr
Ipv4Address inetAddr
Ipv4 address of interface.
Definition: Ipv4InterfaceData.h:126
inet::Ipv4InterfaceData::RouterMulticastData::str
std::string str()
Definition: Ipv4InterfaceData.cc:116
inet::Ipv4InterfaceData::HostMulticastGroupVector
std::vector< HostMulticastGroupData * > HostMulticastGroupVector
Definition: Ipv4InterfaceData.h:96