OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
EvpnMcastNode Class Referenceabstract

This is the base class for a multicast node in an EVPN instance. The node could either represent a local vRouter that's connected to a control node via XMPP or a remote vRouter/PE that's discovered via BGP. More...

#include <bgp_evpn.h>

Inheritance diagram for EvpnMcastNode:
Collaboration diagram for EvpnMcastNode:

Public Types

enum  Type { LocalNode, RemoteNode }
 

Public Member Functions

 EvpnMcastNode (EvpnManagerPartition *partition, EvpnRoute *route, uint8_t type)
 Constructor for EvpnMcastNode. The type indicates whether this is a local or remote EvpnMcastNode. More...
 
 EvpnMcastNode (EvpnManagerPartition *partition, EvpnRoute *route, uint8_t type, EvpnStatePtr state)
 
 ~EvpnMcastNode ()
 
bool UpdateAttributes (EvpnRoute *route)
 Update the label and attributes for a EvpnMcastNode. Return true if either of them changed. More...
 
virtual void TriggerUpdate ()=0
 Handle update of EvpnLocalMcastNode. More...
 
EvpnStatePtr state ()
 
void set_state (EvpnStatePtr state)
 
EvpnRouteroute ()
 
uint8_t type () const
 
const BgpAttrattr () const
 
uint32_t label () const
 
Ip4Address address () const
 
Ip4Address replicator_address () const
 
bool edge_replication_not_supported () const
 
bool assisted_replication_supported () const
 
bool assisted_replication_leaf () const
 
- Public Member Functions inherited from DBState
virtual ~DBState ()
 

Protected Attributes

EvpnManagerPartitionpartition_
 
EvpnStatePtr state_
 
EvpnRouteroute_
 
uint8_t type_
 
BgpAttrPtr attr_
 
uint32_t label_
 
Ip4Address address_
 
Ip4Address replicator_address_
 
bool edge_replication_not_supported_
 
bool assisted_replication_supported_
 
bool assisted_replication_leaf_
 

Private Member Functions

 DISALLOW_COPY_AND_ASSIGN (EvpnMcastNode)
 

Detailed Description

This is the base class for a multicast node in an EVPN instance. The node could either represent a local vRouter that's connected to a control node via XMPP or a remote vRouter/PE that's discovered via BGP.

In normal operation, the EvpnMcastNodes corresponding to vRouters (local or remote) support edge replication, while those corresponding to EVPN PEs do not. However, for test purposes, it's possible to have vRouters that no not support edge replication.

Definition at line 46 of file bgp_evpn.h.

Member Enumeration Documentation

Enumerator
LocalNode 
RemoteNode 

Definition at line 48 of file bgp_evpn.h.

Constructor & Destructor Documentation

EvpnMcastNode::EvpnMcastNode ( EvpnManagerPartition partition,
EvpnRoute route,
uint8_t  type 
)

Constructor for EvpnMcastNode. The type indicates whether this is a local or remote EvpnMcastNode.

Definition at line 79 of file bgp_evpn.cc.

Here is the call graph for this function:

EvpnMcastNode::EvpnMcastNode ( EvpnManagerPartition partition,
EvpnRoute route,
uint8_t  type,
EvpnStatePtr  state 
)

Definition at line 92 of file bgp_evpn.cc.

Here is the call graph for this function:

EvpnMcastNode::~EvpnMcastNode ( )

Definition at line 109 of file bgp_evpn.cc.

Here is the call graph for this function:

Member Function Documentation

Ip4Address EvpnMcastNode::address ( ) const
inline

Definition at line 77 of file bgp_evpn.h.

bool EvpnMcastNode::assisted_replication_leaf ( ) const
inline

Definition at line 85 of file bgp_evpn.h.

bool EvpnMcastNode::assisted_replication_supported ( ) const
inline

Definition at line 82 of file bgp_evpn.h.

const BgpAttr* EvpnMcastNode::attr ( ) const
inline

Definition at line 75 of file bgp_evpn.h.

EvpnMcastNode::DISALLOW_COPY_AND_ASSIGN ( EvpnMcastNode  )
private
bool EvpnMcastNode::edge_replication_not_supported ( ) const
inline

Definition at line 79 of file bgp_evpn.h.

uint32_t EvpnMcastNode::label ( ) const
inline

Definition at line 76 of file bgp_evpn.h.

Ip4Address EvpnMcastNode::replicator_address ( ) const
inline

Definition at line 78 of file bgp_evpn.h.

EvpnRoute* EvpnMcastNode::route ( )
inline

Definition at line 73 of file bgp_evpn.h.

void EvpnMcastNode::set_state ( EvpnStatePtr  state)
inline

Definition at line 72 of file bgp_evpn.h.

Here is the call graph for this function:

EvpnStatePtr EvpnMcastNode::state ( )
inline

Definition at line 71 of file bgp_evpn.h.

virtual void EvpnMcastNode::TriggerUpdate ( )
pure virtual

Handle update of EvpnLocalMcastNode.

We delete and add the Inclusive Multicast route to ensure that all the attributes are updated. An in-place update is not always possible since the vRouter address is part of the key for the Inclusive Multicast route.

Implemented in EvpnRemoteMcastNode, and EvpnLocalMcastNode.

uint8_t EvpnMcastNode::type ( ) const
inline

Definition at line 74 of file bgp_evpn.h.

bool EvpnMcastNode::UpdateAttributes ( EvpnRoute route)

Update the label and attributes for a EvpnMcastNode. Return true if either of them changed.

Definition at line 117 of file bgp_evpn.cc.

Here is the call graph for this function:

Member Data Documentation

Ip4Address EvpnMcastNode::address_
protected

Definition at line 96 of file bgp_evpn.h.

bool EvpnMcastNode::assisted_replication_leaf_
protected

Definition at line 100 of file bgp_evpn.h.

bool EvpnMcastNode::assisted_replication_supported_
protected

Definition at line 99 of file bgp_evpn.h.

BgpAttrPtr EvpnMcastNode::attr_
protected

Definition at line 94 of file bgp_evpn.h.

bool EvpnMcastNode::edge_replication_not_supported_
protected

Definition at line 98 of file bgp_evpn.h.

uint32_t EvpnMcastNode::label_
protected

Definition at line 95 of file bgp_evpn.h.

EvpnManagerPartition* EvpnMcastNode::partition_
protected

Definition at line 90 of file bgp_evpn.h.

Ip4Address EvpnMcastNode::replicator_address_
protected

Definition at line 97 of file bgp_evpn.h.

EvpnRoute* EvpnMcastNode::route_
protected

Definition at line 92 of file bgp_evpn.h.

EvpnStatePtr EvpnMcastNode::state_
protected

Definition at line 91 of file bgp_evpn.h.

uint8_t EvpnMcastNode::type_
protected

Definition at line 93 of file bgp_evpn.h.


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