xorp

PimMribTable Class Reference

PIM-specific Multicast Routing Information Base Table. More...

#include <pim_mrib_table.hh>

Inheritance diagram for PimMribTable:
MribTable

List of all members.

Public Member Functions

 PimMribTable (PimNode &pim_node)
 Constructor.
virtual ~PimMribTable ()
 Destructor.
PimNodepim_node () const
 Get the PimNode this table belongs to.
int family ()
 Get the address family.
PimMrtpim_mrt ()
 Get the corresponding PIM Multicast Routing Table.
void clear ()
 Clear the table by removing all entries.
Mribfind (const IPvX &address) const
 Search the table and find the corresponding Mrib entry for a given destination address.
void add_pending_insert (uint32_t tid, const Mrib &mrib, const string &next_hop_vif_name)
 Add a MRIB entry to the MRIB table.
void add_pending_remove (uint32_t tid, const Mrib &mrib)
 Remove a MRIB entry from the MRIB table.
void add_pending_remove_all_entries (uint32_t tid)
 Remove all MRIB entries from the MRIB table.
void commit_pending_transactions (uint32_t tid)
 Commit all pending MRIB entries to the MRIB table.
void apply_mrib_changes ()
 Apply all changes to the table.
list< IPvXNet > & modified_prefix_list ()
 Get the list of modified prefixes since the last commit.
void resolve_prefixes_by_vif_name (const string &next_hop_vif_name, uint32_t next_hop_vif_index)
 Resolve all destination prefixes whose next-hop vif name was not resolved earlier (e.g., the vif was unknown).

Private Member Functions

void add_modified_prefix (const IPvXNet &modified_prefix)
 Add/merge a modified prefix to the '_modified_prefix_list'.
void add_unresolved_prefix (const IPvXNet &dest_prefix, const string &next_hop_vif_name)
 Add a destination prefix whose next-hop vif name was not resolved (e.g., the vif is unknown).
void delete_unresolved_prefix (const IPvXNet &dest_prefix)
 Delete a destination prefix whose next-hop vif name was not resolved earlier (e.g., the vif was unknown).

Private Attributes

PimNode_pim_node
list< IPvXNet_modified_prefix_list
map< IPvXNet, string > _unresolved_prefixes

Detailed Description

PIM-specific Multicast Routing Information Base Table.


Constructor & Destructor Documentation

PimMribTable::PimMribTable ( PimNode pim_node)

Constructor.

Parameters:
pim_nodethe PimNode this table belongs to.

Member Function Documentation

void PimMribTable::add_pending_insert ( uint32_t  tid,
const Mrib mrib,
const string &  next_hop_vif_name 
)

Add a MRIB entry to the MRIB table.

Note that if the MRIB entry is for one of my own addresses, then we check the next-hop interface. If it points toward the loopback interface (e.g., in case of KAME IPv6 stack), then we overwrite it with the network interface this address belongs to.

Parameters:
tidthe transaction ID.
mribthe MRIB entry to add.
next_hop_vif_namethe next-hop vif name. It is used for later resolving of Mrib::_next_hop_vif_index if the vif name is not known yet.
See also:
Mrib.
void PimMribTable::add_pending_remove ( uint32_t  tid,
const Mrib mrib 
)

Remove a MRIB entry from the MRIB table.

Parameters:
tidthe transaction ID.
mribthe MRIB entry to remove.

Reimplemented from MribTable.

void PimMribTable::add_pending_remove_all_entries ( uint32_t  tid)

Remove all MRIB entries from the MRIB table.

Parameters:
tidthe transaction ID.

Reimplemented from MribTable.

void PimMribTable::apply_mrib_changes ( )

Apply all changes to the table.

Note that this may trigger various changes to the PIM protocol state machines.

void PimMribTable::commit_pending_transactions ( uint32_t  tid)

Commit all pending MRIB entries to the MRIB table.

Parameters:
tidthe transaction ID for the pending MRIB entries to commit.

Reimplemented from MribTable.

int PimMribTable::family ( )

Get the address family.

Returns:
the address family (AF_INET or AF_INET6 for IPv4 and IPv6 respectively).
Mrib * PimMribTable::find ( const IPvX address) const

Search the table and find the corresponding Mrib entry for a given destination address.

Parameters:
addressthe destination address to search for.
Returns:
the Mrib entry for the destination address.
See also:
Mrib.

Reimplemented from MribTable.

list<IPvXNet>& PimMribTable::modified_prefix_list ( ) [inline]

Get the list of modified prefixes since the last commit.

Returns:
the list of modified prefixes since the last commit.
PimMrt & PimMribTable::pim_mrt ( )

Get the corresponding PIM Multicast Routing Table.

Returns:
the corresponding PIM Multicast Routing Table.
See also:
PimMrt.
PimNode& PimMribTable::pim_node ( ) const [inline]

Get the PimNode this table belongs to.

Returns:
the PimNode this table belongs to.
See also:
PimTable.
void PimMribTable::resolve_prefixes_by_vif_name ( const string &  next_hop_vif_name,
uint32_t  next_hop_vif_index 
)

Resolve all destination prefixes whose next-hop vif name was not resolved earlier (e.g., the vif was unknown).

Parameters:
next_hop_vif_namethe name of the resolved vif.
next_hop_vif_indexthe index of the resolved vif.

The documentation for this class was generated from the following files:
 All Classes Namespaces Functions Variables Typedefs Enumerations