INET Framework for OMNeT++/OMNEST
inet::PIMDM::UpstreamInterface Struct Reference
Inheritance diagram for inet::PIMDM::UpstreamInterface:
inet::PIMBase::Interface

Public Types

enum  Flags { SOURCE_DIRECTLY_CONNECTED = 0x01 }
 
enum  GraftPruneState { FORWARDING, PRUNED, ACK_PENDING }
 
enum  OriginatorState { NOT_ORIGINATOR, ORIGINATOR }
 
- Public Types inherited from inet::PIMBase::Interface
enum  AssertState { NO_ASSERT_INFO, I_LOST_ASSERT, I_WON_ASSERT }
 

Public Member Functions

 UpstreamInterface (Route *owner, InterfaceEntry *ie, IPv4Address neighbor, bool isSourceDirectlyConnected)
 
virtual ~UpstreamInterface ()
 
Routeroute () const
 
PIMDMpimdm () const
 
int getInterfaceId () const
 
IPv4Address rpfNeighbor ()
 
bool isSourceDirectlyConnected () 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 Member Functions inherited from inet::PIMBase::Interface
 Interface (RouteEntry *owner, InterfaceEntry *ie)
 
virtual ~Interface ()
 
bool isFlagSet (int flag) const
 
void setFlags (int flags)
 
void clearFlag (int flag)
 
void setFlag (int flag, bool value)
 
void startAssertTimer (double assertTime)
 
void deleteAssertInfo ()
 

Public Attributes

IPv4Address nextHop
 
GraftPruneState graftPruneState
 
cMessage * graftRetryTimer
 
cMessage * overrideTimer
 
simtime_t lastPruneSentTime
 
OriginatorState originatorState
 
cMessage * sourceActiveTimer
 
cMessage * stateRefreshTimer
 
unsigned short maxTtlSeen
 
- Public Attributes inherited from inet::PIMBase::Interface
RouteEntryowner
 
InterfaceEntryie
 
int flags
 
AssertState assertState
 
cMessage * assertTimer
 
AssertMetric winnerMetric
 

Member Enumeration Documentation

Enumerator
SOURCE_DIRECTLY_CONNECTED 
Enumerator
FORWARDING 
PRUNED 
ACK_PENDING 
53  {
54  FORWARDING, // oiflist != nullptr
55  PRUNED, // olist is empty
56  ACK_PENDING // waiting for a Graft Ack
57  };

Constructor & Destructor Documentation

inet::PIMDM::UpstreamInterface::UpstreamInterface ( Route owner,
InterfaceEntry ie,
IPv4Address  neighbor,
bool  isSourceDirectlyConnected 
)
inline
76  : Interface(owner, ie), nextHop(neighbor),
cMessage * overrideTimer
Definition: PIMDM.h:66
Interface(RouteEntry *owner, InterfaceEntry *ie)
Definition: PIMBase.h:92
IPv4Address nextHop
Definition: PIMDM.h:61
bool isSourceDirectlyConnected() const
Definition: PIMDM.h:85
cMessage * graftRetryTimer
Definition: PIMDM.h:65
unsigned short maxTtlSeen
Definition: PIMDM.h:73
cMessage * sourceActiveTimer
Definition: PIMDM.h:71
OriginatorState originatorState
Definition: PIMDM.h:70
cMessage * stateRefreshTimer
Definition: PIMDM.h:72
simtime_t lastPruneSentTime
Definition: PIMDM.h:67
RouteEntry * owner
Definition: PIMBase.h:82
void setFlag(int flag, bool value)
Definition: PIMBase.h:101
InterfaceEntry * ie
Definition: PIMBase.h:83
GraftPruneState graftPruneState
Definition: PIMDM.h:64
inet::PIMDM::UpstreamInterface::~UpstreamInterface ( )
virtual
1778 {
1779  owner->owner->cancelAndDelete(stateRefreshTimer);
1780  owner->owner->cancelAndDelete(graftRetryTimer);
1781  owner->owner->cancelAndDelete(sourceActiveTimer);
1782  owner->owner->cancelAndDelete(overrideTimer);
1783 }
cMessage * overrideTimer
Definition: PIMDM.h:66
cMessage * graftRetryTimer
Definition: PIMDM.h:65
cMessage * sourceActiveTimer
Definition: PIMDM.h:71
cMessage * stateRefreshTimer
Definition: PIMDM.h:72
RouteEntry * owner
Definition: PIMBase.h:82
PIMBase * owner
Definition: PIMBase.h:64

Member Function Documentation

int inet::PIMDM::UpstreamInterface::getInterfaceId ( ) const
inline
bool inet::PIMDM::UpstreamInterface::isPruneLimitTimerRunning ( )
inline

Referenced by inet::PIMDM::multicastPacketArrivedOnRpfInterface().

93 { return lastPruneSentTime > 0.0 && simTime() < lastPruneSentTime + pimdm()->pruneLimitInterval; }
PIMDM * pimdm() const
Definition: PIMDM.h:82
simtime_t lastPruneSentTime
Definition: PIMDM.h:67
double pruneLimitInterval
Definition: PIMDM.h:161
PIMDM* inet::PIMDM::UpstreamInterface::pimdm ( ) const
inline
82 { return check_and_cast<PIMDM *>(owner->owner); }
RouteEntry * owner
Definition: PIMBase.h:82
PIMBase * owner
Definition: PIMBase.h:64
PIMDM()
Definition: PIMDM.h:185
Route* inet::PIMDM::UpstreamInterface::route ( ) const
inline
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).

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

1792 {
1793  graftRetryTimer = new cMessage("PIMGraftRetryTimer", GraftRetryTimer);
1794  graftRetryTimer->setContextPointer(this);
1795  pimdm()->scheduleAt(simTime() + pimdm()->graftRetryInterval, graftRetryTimer);
1796 }
PIMDM * pimdm() const
Definition: PIMDM.h:82
cMessage * graftRetryTimer
Definition: PIMDM.h:65
double graftRetryInterval
Definition: PIMDM.h:164
Definition: PIMBase.h:142
void inet::PIMDM::UpstreamInterface::startOverrideTimer ( )

Referenced by inet::PIMDM::processPrune().

1799 {
1800  overrideTimer = new cMessage("PIMOverrideTimer", UpstreamOverrideTimer);
1801  overrideTimer->setContextPointer(this);
1802  pimdm()->scheduleAt(simTime() + pimdm()->overrideInterval, overrideTimer);
1803 }
cMessage * overrideTimer
Definition: PIMDM.h:66
double overrideInterval
Definition: PIMDM.h:162
PIMDM * pimdm() const
Definition: PIMDM.h:82
Definition: PIMBase.h:143
void inet::PIMDM::UpstreamInterface::startPruneLimitTimer ( )
inline
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).

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

1811 {
1812  sourceActiveTimer = new cMessage("PIMSourceActiveTimer", SourceActiveTimer);
1813  sourceActiveTimer->setContextPointer(this);
1814  pimdm()->scheduleAt(simTime() + pimdm()->sourceActiveInterval, sourceActiveTimer);
1815 }
PIMDM * pimdm() const
Definition: PIMDM.h:82
double sourceActiveInterval
Definition: PIMDM.h:165
Definition: PIMBase.h:145
cMessage * sourceActiveTimer
Definition: PIMDM.h:71
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).

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

1823 {
1824  stateRefreshTimer = new cMessage("PIMStateRefreshTimer", StateRefreshTimer);
1825  sourceActiveTimer->setContextPointer(this);
1826  pimdm()->scheduleAt(simTime() + pimdm()->stateRefreshInterval, stateRefreshTimer);
1827 }
PIMDM * pimdm() const
Definition: PIMDM.h:82
cMessage * sourceActiveTimer
Definition: PIMDM.h:71
cMessage * stateRefreshTimer
Definition: PIMDM.h:72
double stateRefreshInterval
Definition: PIMDM.h:166
Definition: PIMBase.h:146
void inet::PIMDM::UpstreamInterface::stopPruneLimitTimer ( )
inline

Member Data Documentation

simtime_t inet::PIMDM::UpstreamInterface::lastPruneSentTime
IPv4Address inet::PIMDM::UpstreamInterface::nextHop
cMessage* inet::PIMDM::UpstreamInterface::overrideTimer
cMessage* inet::PIMDM::UpstreamInterface::sourceActiveTimer
cMessage* inet::PIMDM::UpstreamInterface::stateRefreshTimer

The documentation for this struct was generated from the following files: