INET Framework for OMNeT++/OMNEST
inet::PimDm::UpstreamInterface Struct Reference
Inheritance diagram for inet::PimDm::UpstreamInterface:

Public Types

enum  Flags { SOURCE_DIRECTLY_CONNECTED = 0x01 }
 
enum  GraftPruneState { FORWARDING, PRUNED, ACK_PENDING }
 
enum  OriginatorState { NOT_ORIGINATOR, ORIGINATOR }
 

Public Member Functions

 UpstreamInterface (Route *owner, NetworkInterface *ie, Ipv4Address neighbor, bool isSourceDirectlyConnected)
 
virtual ~UpstreamInterface ()
 
Routeroute () const
 
PimDmpimdm () const
 
int getInterfaceId () const
 
Ipv4Address rpfNeighbor ()
 
GraftPruneState getGraftPruneState () const
 
cMessage * getGraftRetryTimer () const
 
cMessage * getOverrideTimer () const
 
simtime_t getLastPruneSentTime () const
 
bool isSourceDirectlyConnected () const
 
OriginatorState getOriginatorState () const
 
cMessage * getSourceActiveTimer () const
 
cMessage * getStateRefreshTimer () const
 
unsigned short getMaxTtlSeen () const
 
void startGraftRetryTimer ()
 The method is used to create PIMGraftRetry timer. More...
 
void startOverrideTimer ()
 
void startSourceActiveTimer ()
 The method is used to create PIMSourceActive timer. More...
 
void startStateRefreshTimer ()
 The method is used to create PimStateRefresh timer. More...
 
void startPruneLimitTimer ()
 
void stopPruneLimitTimer ()
 
bool isPruneLimitTimerRunning ()
 

Public Attributes

Ipv4Address nextHop
 
GraftPruneState graftPruneState
 
cMessage * graftRetryTimer
 
cMessage * overrideTimer
 
simtime_t lastPruneSentTime
 
OriginatorState originatorState
 
cMessage * sourceActiveTimer
 
cMessage * stateRefreshTimer
 
unsigned short maxTtlSeen
 

Member Enumeration Documentation

◆ Flags

Enumerator
SOURCE_DIRECTLY_CONNECTED 
35  {
37  };

◆ GraftPruneState

Enumerator
FORWARDING 
PRUNED 
ACK_PENDING 
39  {
40  FORWARDING, // oiflist != nullptr
41  PRUNED, // olist is empty
42  ACK_PENDING // waiting for a Graft Ack
43  };

◆ OriginatorState

Enumerator
NOT_ORIGINATOR 
ORIGINATOR 

Constructor & Destructor Documentation

◆ UpstreamInterface()

inet::PimDm::UpstreamInterface::UpstreamInterface ( Route owner,
NetworkInterface ie,
Ipv4Address  neighbor,
bool  isSourceDirectlyConnected 
)
inline
62  : Interface(owner, ie), nextHop(neighbor),

◆ ~UpstreamInterface()

inet::PimDm::UpstreamInterface::~UpstreamInterface ( )
virtual
1797 {
1798  owner->owner->cancelAndDelete(stateRefreshTimer);
1799  owner->owner->cancelAndDelete(graftRetryTimer);
1800  owner->owner->cancelAndDelete(sourceActiveTimer);
1801  owner->owner->cancelAndDelete(overrideTimer);
1802 }

Member Function Documentation

◆ getGraftPruneState()

GraftPruneState inet::PimDm::UpstreamInterface::getGraftPruneState ( ) const
inline
71 { return graftPruneState; }

Referenced by inet::operator<<().

◆ getGraftRetryTimer()

cMessage* inet::PimDm::UpstreamInterface::getGraftRetryTimer ( ) const
inline
72 { return graftRetryTimer; }

Referenced by inet::operator<<().

◆ getInterfaceId()

◆ getLastPruneSentTime()

simtime_t inet::PimDm::UpstreamInterface::getLastPruneSentTime ( ) const
inline
74 { return lastPruneSentTime; }

Referenced by inet::operator<<().

◆ getMaxTtlSeen()

unsigned short inet::PimDm::UpstreamInterface::getMaxTtlSeen ( ) const
inline
79 { return maxTtlSeen; }

Referenced by inet::operator<<().

◆ getOriginatorState()

OriginatorState inet::PimDm::UpstreamInterface::getOriginatorState ( ) const
inline
76 { return originatorState; }

Referenced by inet::operator<<().

◆ getOverrideTimer()

cMessage* inet::PimDm::UpstreamInterface::getOverrideTimer ( ) const
inline
73 { return overrideTimer; }

Referenced by inet::operator<<().

◆ getSourceActiveTimer()

cMessage* inet::PimDm::UpstreamInterface::getSourceActiveTimer ( ) const
inline
77 { return sourceActiveTimer; }

Referenced by inet::operator<<().

◆ getStateRefreshTimer()

cMessage* inet::PimDm::UpstreamInterface::getStateRefreshTimer ( ) const
inline
78 { return stateRefreshTimer; }

Referenced by inet::operator<<().

◆ isPruneLimitTimerRunning()

bool inet::PimDm::UpstreamInterface::isPruneLimitTimerRunning ( )
inline

◆ isSourceDirectlyConnected()

◆ pimdm()

PimDm* inet::PimDm::UpstreamInterface::pimdm ( ) const
inline
68 { return check_and_cast<PimDm *>(owner->owner); }

◆ route()

Route* inet::PimDm::UpstreamInterface::route ( ) const
inline

◆ rpfNeighbor()

◆ startGraftRetryTimer()

void inet::PimDm::UpstreamInterface::startGraftRetryTimer ( )

The method is used to create PIMGraftRetry timer.

The timer is set when router wants to join to multicast tree again and send PIM Prune message to upstream. Router waits for Graft Retry Timer (3 s) for PIM PruneAck message from upstream. If timer expires, router will send PIM Prune message again. It is set to (S,G).

1811 {
1812  graftRetryTimer = new cMessage("PIMGraftRetryTimer", GraftRetryTimer);
1813  graftRetryTimer->setContextPointer(this);
1814  pimdm()->scheduleAfter(pimdm()->graftRetryInterval, graftRetryTimer);
1815 }

Referenced by inet::PimDm::processOlistNonEmptyEvent(), and inet::PimDm::rpfInterfaceHasChanged().

◆ startOverrideTimer()

void inet::PimDm::UpstreamInterface::startOverrideTimer ( )
1818 {
1819  overrideTimer = new cMessage("PIMOverrideTimer", UpstreamOverrideTimer);
1820  overrideTimer->setContextPointer(this);
1821  pimdm()->scheduleAfter(pimdm()->overrideInterval, overrideTimer);
1822 }

Referenced by inet::PimDm::processPrune(), and inet::PimDm::processStateRefreshPacket().

◆ startPruneLimitTimer()

void inet::PimDm::UpstreamInterface::startPruneLimitTimer ( )
inline

◆ startSourceActiveTimer()

void inet::PimDm::UpstreamInterface::startSourceActiveTimer ( )

The method is used to create PIMSourceActive timer.

The timer is set when source of multicast is connected directly to the router. If timer expires, router will remove the route from multicast routing table. It is set to (S,G).

1830 {
1831  sourceActiveTimer = new cMessage("PIMSourceActiveTimer", SourceActiveTimer);
1832  sourceActiveTimer->setContextPointer(this);
1833  pimdm()->scheduleAfter(pimdm()->sourceActiveInterval, sourceActiveTimer);
1834 }

Referenced by inet::PimDm::unroutableMulticastPacketArrived().

◆ startStateRefreshTimer()

void inet::PimDm::UpstreamInterface::startStateRefreshTimer ( )

The method is used to create PimStateRefresh timer.

The timer is set when source of multicast is connected directly to the router. If timer expires, router will send StateRefresh message, which will propagate through all network and wil reset Prune Timer. It is set to (S,G).

1842 {
1843  stateRefreshTimer = new cMessage("PIMStateRefreshTimer", StateRefreshTimer);
1844  sourceActiveTimer->setContextPointer(this);
1845  pimdm()->scheduleAfter(pimdm()->stateRefreshInterval, stateRefreshTimer);
1846 }

Referenced by inet::PimDm::multicastPacketArrivedOnRpfInterface(), and inet::PimDm::unroutableMulticastPacketArrived().

◆ stopPruneLimitTimer()

void inet::PimDm::UpstreamInterface::stopPruneLimitTimer ( )
inline

Member Data Documentation

◆ graftPruneState

◆ graftRetryTimer

◆ lastPruneSentTime

simtime_t inet::PimDm::UpstreamInterface::lastPruneSentTime

◆ maxTtlSeen

◆ nextHop

Ipv4Address inet::PimDm::UpstreamInterface::nextHop

◆ originatorState

◆ overrideTimer

◆ sourceActiveTimer

cMessage* inet::PimDm::UpstreamInterface::sourceActiveTimer

◆ stateRefreshTimer

cMessage* inet::PimDm::UpstreamInterface::stateRefreshTimer

The documentation for this struct was generated from the following files:
inet::PimDm::UpstreamInterface::isSourceDirectlyConnected
bool isSourceDirectlyConnected() const
Definition: PimDm.h:75
inet::PimDm::UpstreamInterface::FORWARDING
@ FORWARDING
Definition: PimDm.h:40
inet::PimDm::UpstreamInterface::ORIGINATOR
@ ORIGINATOR
Definition: PimDm.h:45
inet::PimDm::UpstreamInterface::graftPruneState
GraftPruneState graftPruneState
Definition: PimDm.h:50
inet::PimDm::UpstreamInterface::lastPruneSentTime
simtime_t lastPruneSentTime
Definition: PimDm.h:53
inet::PimDm::UpstreamInterface::ACK_PENDING
@ ACK_PENDING
Definition: PimDm.h:42
inet::PimDm::UpstreamInterface::sourceActiveTimer
cMessage * sourceActiveTimer
Definition: PimDm.h:57
inet::PimBase::SourceActiveTimer
@ SourceActiveTimer
Definition: PimBase.h:133
inet::PimDm::UpstreamInterface::stateRefreshTimer
cMessage * stateRefreshTimer
Definition: PimDm.h:58
inet::PimBase::UpstreamOverrideTimer
@ UpstreamOverrideTimer
Definition: PimBase.h:131
inet::PimDm::UpstreamInterface::PRUNED
@ PRUNED
Definition: PimDm.h:41
inet::PimDm::sourceActiveInterval
double sourceActiveInterval
Definition: PimDm.h:159
inet::PimDm::UpstreamInterface::SOURCE_DIRECTLY_CONNECTED
@ SOURCE_DIRECTLY_CONNECTED
Definition: PimDm.h:36
inet::PimBase::StateRefreshTimer
@ StateRefreshTimer
Definition: PimBase.h:134
inet::PimDm::UpstreamInterface::maxTtlSeen
unsigned short maxTtlSeen
Definition: PimDm.h:59
inet::PimDm::UpstreamInterface::originatorState
OriginatorState originatorState
Definition: PimDm.h:56
inet::PimDm::UpstreamInterface::overrideTimer
cMessage * overrideTimer
Definition: PimDm.h:52
inet::PimDm::UpstreamInterface::pimdm
PimDm * pimdm() const
Definition: PimDm.h:68
inet::PimDm::stateRefreshInterval
double stateRefreshInterval
Definition: PimDm.h:160
inet::PimDm::pruneLimitInterval
double pruneLimitInterval
Definition: PimDm.h:155
inet::PimDm::graftRetryInterval
double graftRetryInterval
Definition: PimDm.h:158
inet::PimDm::overrideInterval
double overrideInterval
Definition: PimDm.h:156
inet::PimBase::GraftRetryTimer
@ GraftRetryTimer
Definition: PimBase.h:130
inet::PimDm::UpstreamInterface::graftRetryTimer
cMessage * graftRetryTimer
Definition: PimDm.h:51
inet::PimDm::UpstreamInterface::nextHop
Ipv4Address nextHop
Definition: PimDm.h:47
inet::PimDm::UpstreamInterface::NOT_ORIGINATOR
@ NOT_ORIGINATOR
Definition: PimDm.h:45