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

This class represents (in the context of an EVPN instance) a local vRouter that's connected to a control node via XMPP. An EvpnLocalMcastNode gets created and associated as DBState with the broadcast MAC route advertised by the vRouter. More...

#include <bgp_evpn.h>

Inheritance diagram for EvpnLocalMcastNode:
Collaboration diagram for EvpnLocalMcastNode:

Public Member Functions

 EvpnLocalMcastNode (EvpnManagerPartition *partition, EvpnRoute *route)
 Constructor for EvpnLocalMcastNode. More...
 
 EvpnLocalMcastNode (EvpnManagerPartition *partition, EvpnRoute *route, EvpnStatePtr state)
 
virtual ~EvpnLocalMcastNode ()
 
virtual void TriggerUpdate ()
 Handle update of EvpnLocalMcastNode. More...
 
UpdateInfoGetUpdateInfo (EvpnRoute *route)
 
EvpnRouteinclusive_mcast_route ()
 
- Public Member Functions inherited from EvpnMcastNode
 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...
 
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 ()
 

Private Member Functions

void AddInclusiveMulticastRoute ()
 Add Inclusive Multicast route for this EvpnLocalMcastNode. The attributes are based on the Broadcast MAC route. More...
 
void DeleteInclusiveMulticastRoute ()
 Delete Inclusive Multicast route for this EvpnLocalMcastNode. More...
 
 DISALLOW_COPY_AND_ASSIGN (EvpnLocalMcastNode)
 

Private Attributes

EvpnRouteinclusive_mcast_route_
 

Additional Inherited Members

- Public Types inherited from EvpnMcastNode
enum  Type { LocalNode, RemoteNode }
 
- Protected Attributes inherited from EvpnMcastNode
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_
 

Detailed Description

This class represents (in the context of an EVPN instance) a local vRouter that's connected to a control node via XMPP. An EvpnLocalMcastNode gets created and associated as DBState with the broadcast MAC route advertised by the vRouter.

The EvpnLocalMcastNode mainly exists to translate the broadcast MAC route advertised by the vRouter into an EVPN Inclusive Multicast route. In the other direction, EvpnLocalMcastNode serves as the anchor point to build a vRouter specific ingress replication olist so that the vRouter can send multicast traffic to EVPN PEs (and possibly vRouters in test environment) that do not support edge replication.

An Inclusive Multicast route is added for each EvpnLocalMcastNode. The attributes of the Inclusive Multicast route are based on the broadcast MAC route corresponding to the EvpnLocalMcastNode. The label for the broadcast MAC route is advertised as the label for ingress replication in the PmsiTunnel attribute.

Definition at line 124 of file bgp_evpn.h.

Constructor & Destructor Documentation

EvpnLocalMcastNode::EvpnLocalMcastNode ( EvpnManagerPartition partition,
EvpnRoute route 
)

Constructor for EvpnLocalMcastNode.

Add an Inclusive Multicast route corresponding to Broadcast MAC route.

Need to Notify the Broadcast MAC route so that the table Export method can run and build the OList. OList is not built till EvpnLocalMcastNode has been created.

Definition at line 183 of file bgp_evpn.cc.

Here is the call graph for this function:

EvpnLocalMcastNode::EvpnLocalMcastNode ( EvpnManagerPartition partition,
EvpnRoute route,
EvpnStatePtr  state 
)

Definition at line 192 of file bgp_evpn.cc.

Here is the call graph for this function:

EvpnLocalMcastNode::~EvpnLocalMcastNode ( )
virtual

Definition at line 206 of file bgp_evpn.cc.

Here is the call graph for this function:

Member Function Documentation

void EvpnLocalMcastNode::AddInclusiveMulticastRoute ( )
private

Add Inclusive Multicast route for this EvpnLocalMcastNode. The attributes are based on the Broadcast MAC route.

Definition at line 214 of file bgp_evpn.cc.

Here is the call graph for this function:

void EvpnLocalMcastNode::DeleteInclusiveMulticastRoute ( )
private

Delete Inclusive Multicast route for this EvpnLocalMcastNode.

Definition at line 262 of file bgp_evpn.cc.

Here is the call graph for this function:

EvpnLocalMcastNode::DISALLOW_COPY_AND_ASSIGN ( EvpnLocalMcastNode  )
private
UpdateInfo * EvpnLocalMcastNode::GetUpdateInfo ( EvpnRoute route)

Definition at line 302 of file bgp_evpn.cc.

Here is the call graph for this function:

EvpnRoute* EvpnLocalMcastNode::inclusive_mcast_route ( )
inline

Definition at line 147 of file bgp_evpn.h.

void EvpnLocalMcastNode::TriggerUpdate ( )
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.

Implements EvpnMcastNode.

Definition at line 288 of file bgp_evpn.cc.

Here is the call graph for this function:

Member Data Documentation

EvpnRoute* EvpnLocalMcastNode::inclusive_mcast_route_
private

Definition at line 157 of file bgp_evpn.h.


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