\hypertarget{classPimMribTable}{
\section{PimMribTable Class Reference}
\label{classPimMribTable}\index{PimMribTable@{PimMribTable}}
}


PIM-\/specific Multicast \hyperlink{classRouting}{Routing} Information Base Table.  




{\ttfamily \#include $<$pim\_\-mrib\_\-table.hh$>$}

Inheritance diagram for PimMribTable:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classPimMribTable}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classPimMribTable_a83e9607b6dd7aa268760c9a1665fb874}{PimMribTable} (\hyperlink{classPimNode}{PimNode} \&pim\_\-node)
\begin{DoxyCompactList}\small\item\em Constructor. \item\end{DoxyCompactList}\item 
\hypertarget{classPimMribTable_a0281d276865e46b295b379db08d9efb4}{
virtual \hyperlink{classPimMribTable_a0281d276865e46b295b379db08d9efb4}{$\sim$PimMribTable} ()}
\label{classPimMribTable_a0281d276865e46b295b379db08d9efb4}

\begin{DoxyCompactList}\small\item\em Destructor. \item\end{DoxyCompactList}\item 
\hyperlink{classPimNode}{PimNode} \& \hyperlink{classPimMribTable_a3a46fceadfb967cb5477063a5c8272d5}{pim\_\-node} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} \hyperlink{classPimNode}{PimNode} this table belongs to. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimMribTable_a45c07c16b087ef650ae2e3b8d6a88c63}{family} ()
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} address family. \item\end{DoxyCompactList}\item 
\hyperlink{classPimMrt}{PimMrt} \& \hyperlink{classPimMribTable_a015d18595437514f3ba8416883e42099}{pim\_\-mrt} ()
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} corresponding PIM Multicast \hyperlink{classRouting}{Routing} Table. \item\end{DoxyCompactList}\item 
\hypertarget{classPimMribTable_a45cae037ad7e383e8ca21844b3d8b2ad}{
void \hyperlink{classPimMribTable_a45cae037ad7e383e8ca21844b3d8b2ad}{clear} ()}
\label{classPimMribTable_a45cae037ad7e383e8ca21844b3d8b2ad}

\begin{DoxyCompactList}\small\item\em Clear \hyperlink{protocolthe-p}{the} table by removing all entries. \item\end{DoxyCompactList}\item 
\hyperlink{classMrib}{Mrib} $\ast$ \hyperlink{classPimMribTable_a7ef7598730d8f726f45b2c6a073c2840}{find} (const \hyperlink{classIPvX}{IPvX} \&address) const 
\begin{DoxyCompactList}\small\item\em Search \hyperlink{protocolthe-p}{the} table and find \hyperlink{protocolthe-p}{the} corresponding \hyperlink{classMrib}{Mrib} entry for a given destination address. \item\end{DoxyCompactList}\item 
void \hyperlink{classPimMribTable_ab5977b6b41ee2d46a0aa60af6d986940}{add\_\-pending\_\-insert} (uint32\_\-t tid, const \hyperlink{classMrib}{Mrib} \&mrib, const string \&next\_\-hop\_\-vif\_\-name)
\begin{DoxyCompactList}\small\item\em Add a MRIB entry to \hyperlink{protocolthe-p}{the} MRIB table. \item\end{DoxyCompactList}\item 
void \hyperlink{classPimMribTable_afa836c62eecae69f947ea2de09e00365}{add\_\-pending\_\-remove} (uint32\_\-t tid, const \hyperlink{classMrib}{Mrib} \&mrib)
\begin{DoxyCompactList}\small\item\em Remove a MRIB entry from \hyperlink{protocolthe-p}{the} MRIB table. \item\end{DoxyCompactList}\item 
void \hyperlink{classPimMribTable_afa681bc61e762641e8fa1e9753071514}{add\_\-pending\_\-remove\_\-all\_\-entries} (uint32\_\-t tid)
\begin{DoxyCompactList}\small\item\em Remove all MRIB entries from \hyperlink{protocolthe-p}{the} MRIB table. \item\end{DoxyCompactList}\item 
void \hyperlink{classPimMribTable_a86d0007ac38604cee1ba9bf80229e04e}{commit\_\-pending\_\-transactions} (uint32\_\-t tid)
\begin{DoxyCompactList}\small\item\em Commit all pending MRIB entries to \hyperlink{protocolthe-p}{the} MRIB table. \item\end{DoxyCompactList}\item 
void \hyperlink{classPimMribTable_a617036eb0881b1be7b9a731a4d95d4eb}{apply\_\-mrib\_\-changes} ()
\begin{DoxyCompactList}\small\item\em Apply all changes to \hyperlink{protocolthe-p}{the} table. \item\end{DoxyCompactList}\item 
list$<$ \hyperlink{classIPvXNet}{IPvXNet} $>$ \& \hyperlink{classPimMribTable_a308e66a8774dfe1c8ed954f373e7c5e0}{modified\_\-prefix\_\-list} ()
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} list of modified prefixes since \hyperlink{protocolthe-p}{the} last commit. \item\end{DoxyCompactList}\item 
void \hyperlink{classPimMribTable_a0181b8ab70f814168732a6f1e4c4622d}{resolve\_\-prefixes\_\-by\_\-vif\_\-name} (const string \&next\_\-hop\_\-vif\_\-name, uint32\_\-t next\_\-hop\_\-vif\_\-index)
\begin{DoxyCompactList}\small\item\em Resolve all destination prefixes whose next-\/hop vif name was not resolved earlier (e.g., \hyperlink{protocolthe-p}{the} vif was unknown). \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classPimMribTable_a6203b6fbcccc4669ceb4be3344f73333}{
void \hyperlink{classPimMribTable_a6203b6fbcccc4669ceb4be3344f73333}{add\_\-modified\_\-prefix} (const \hyperlink{classIPvXNet}{IPvXNet} \&modified\_\-prefix)}
\label{classPimMribTable_a6203b6fbcccc4669ceb4be3344f73333}

\begin{DoxyCompactList}\small\item\em Add/merge a modified prefix to \hyperlink{protocolthe-p}{the} '\_\-modified\_\-prefix\_\-list'. \item\end{DoxyCompactList}\item 
\hypertarget{classPimMribTable_af0a42b72ca3a90fbbb6cce7a5f2b6ba9}{
void \hyperlink{classPimMribTable_af0a42b72ca3a90fbbb6cce7a5f2b6ba9}{add\_\-unresolved\_\-prefix} (const \hyperlink{classIPvXNet}{IPvXNet} \&dest\_\-prefix, const string \&next\_\-hop\_\-vif\_\-name)}
\label{classPimMribTable_af0a42b72ca3a90fbbb6cce7a5f2b6ba9}

\begin{DoxyCompactList}\small\item\em Add a destination prefix whose next-\/hop vif name was not resolved (e.g., \hyperlink{protocolthe-p}{the} vif is unknown). \item\end{DoxyCompactList}\item 
\hypertarget{classPimMribTable_a2302761cf258a7e4e6168a69e2a79c1f}{
void \hyperlink{classPimMribTable_a2302761cf258a7e4e6168a69e2a79c1f}{delete\_\-unresolved\_\-prefix} (const \hyperlink{classIPvXNet}{IPvXNet} \&dest\_\-prefix)}
\label{classPimMribTable_a2302761cf258a7e4e6168a69e2a79c1f}

\begin{DoxyCompactList}\small\item\em Delete a destination prefix whose next-\/hop vif name was not resolved earlier (e.g., \hyperlink{protocolthe-p}{the} vif was unknown). \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classPimMribTable_a2d38de0a0de72e5c135c17cbbf09010a}{
\hyperlink{classPimNode}{PimNode} \& {\bfseries \_\-pim\_\-node}}
\label{classPimMribTable_a2d38de0a0de72e5c135c17cbbf09010a}

\item 
\hypertarget{classPimMribTable_ad363f91bf490ed98783f95505d4554fc}{
list$<$ \hyperlink{classIPvXNet}{IPvXNet} $>$ {\bfseries \_\-modified\_\-prefix\_\-list}}
\label{classPimMribTable_ad363f91bf490ed98783f95505d4554fc}

\item 
\hypertarget{classPimMribTable_a21774248d3dddd9973909aceca213dd9}{
map$<$ \hyperlink{classIPvXNet}{IPvXNet}, string $>$ {\bfseries \_\-unresolved\_\-prefixes}}
\label{classPimMribTable_a21774248d3dddd9973909aceca213dd9}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
PIM-\/specific Multicast \hyperlink{classRouting}{Routing} Information Base Table. 

\subsection{Constructor \& Destructor Documentation}
\hypertarget{classPimMribTable_a83e9607b6dd7aa268760c9a1665fb874}{
\index{PimMribTable@{PimMribTable}!PimMribTable@{PimMribTable}}
\index{PimMribTable@{PimMribTable}!PimMribTable@{PimMribTable}}
\subsubsection[{PimMribTable}]{\setlength{\rightskip}{0pt plus 5cm}PimMribTable::PimMribTable (
\begin{DoxyParamCaption}
\item[{{\bf PimNode} \&}]{pim\_\-node}
\end{DoxyParamCaption}
)}}
\label{classPimMribTable_a83e9607b6dd7aa268760c9a1665fb874}


Constructor. 


\begin{DoxyParams}{Parameters}
{\em pim\_\-node} & \hyperlink{protocolthe-p}{the} \hyperlink{classPimNode}{PimNode} this table belongs to. \\
\hline
\end{DoxyParams}


\subsection{Member Function Documentation}
\hypertarget{classPimMribTable_ab5977b6b41ee2d46a0aa60af6d986940}{
\index{PimMribTable@{PimMribTable}!add\_\-pending\_\-insert@{add\_\-pending\_\-insert}}
\index{add\_\-pending\_\-insert@{add\_\-pending\_\-insert}!PimMribTable@{PimMribTable}}
\subsubsection[{add\_\-pending\_\-insert}]{\setlength{\rightskip}{0pt plus 5cm}void PimMribTable::add\_\-pending\_\-insert (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{tid, }
\item[{const {\bf Mrib} \&}]{mrib, }
\item[{const string \&}]{next\_\-hop\_\-vif\_\-name}
\end{DoxyParamCaption}
)}}
\label{classPimMribTable_ab5977b6b41ee2d46a0aa60af6d986940}


Add a MRIB entry to \hyperlink{protocolthe-p}{the} MRIB table. 

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


\begin{DoxyParams}{Parameters}
{\em tid} & \hyperlink{protocolthe-p}{the} transaction ID. \\
\hline
{\em mrib} & \hyperlink{protocolthe-p}{the} MRIB entry to add. \\
\hline
{\em next\_\-hop\_\-vif\_\-name} & \hyperlink{protocolthe-p}{the} next-\/hop vif name. It is used for later resolving of Mrib::\_\-next\_\-hop\_\-vif\_\-index if \hyperlink{protocolthe-p}{the} vif name is not known yet. \\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\hyperlink{classMrib}{Mrib}. 
\end{DoxySeeAlso}
\hypertarget{classPimMribTable_afa836c62eecae69f947ea2de09e00365}{
\index{PimMribTable@{PimMribTable}!add\_\-pending\_\-remove@{add\_\-pending\_\-remove}}
\index{add\_\-pending\_\-remove@{add\_\-pending\_\-remove}!PimMribTable@{PimMribTable}}
\subsubsection[{add\_\-pending\_\-remove}]{\setlength{\rightskip}{0pt plus 5cm}void PimMribTable::add\_\-pending\_\-remove (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{tid, }
\item[{const {\bf Mrib} \&}]{mrib}
\end{DoxyParamCaption}
)}}
\label{classPimMribTable_afa836c62eecae69f947ea2de09e00365}


Remove a MRIB entry from \hyperlink{protocolthe-p}{the} MRIB table. 


\begin{DoxyParams}{Parameters}
{\em tid} & \hyperlink{protocolthe-p}{the} transaction ID. \\
\hline
{\em mrib} & \hyperlink{protocolthe-p}{the} MRIB entry to remove. \\
\hline
\end{DoxyParams}


Reimplemented from \hyperlink{classMribTable_a37697de3da375bbc427ea2bbd655d4cf}{MribTable}.

\hypertarget{classPimMribTable_afa681bc61e762641e8fa1e9753071514}{
\index{PimMribTable@{PimMribTable}!add\_\-pending\_\-remove\_\-all\_\-entries@{add\_\-pending\_\-remove\_\-all\_\-entries}}
\index{add\_\-pending\_\-remove\_\-all\_\-entries@{add\_\-pending\_\-remove\_\-all\_\-entries}!PimMribTable@{PimMribTable}}
\subsubsection[{add\_\-pending\_\-remove\_\-all\_\-entries}]{\setlength{\rightskip}{0pt plus 5cm}void PimMribTable::add\_\-pending\_\-remove\_\-all\_\-entries (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{tid}
\end{DoxyParamCaption}
)}}
\label{classPimMribTable_afa681bc61e762641e8fa1e9753071514}


Remove all MRIB entries from \hyperlink{protocolthe-p}{the} MRIB table. 


\begin{DoxyParams}{Parameters}
{\em tid} & \hyperlink{protocolthe-p}{the} transaction ID. \\
\hline
\end{DoxyParams}


Reimplemented from \hyperlink{classMribTable_aae0da55cd4f433a8b987ca8ce6511860}{MribTable}.

\hypertarget{classPimMribTable_a617036eb0881b1be7b9a731a4d95d4eb}{
\index{PimMribTable@{PimMribTable}!apply\_\-mrib\_\-changes@{apply\_\-mrib\_\-changes}}
\index{apply\_\-mrib\_\-changes@{apply\_\-mrib\_\-changes}!PimMribTable@{PimMribTable}}
\subsubsection[{apply\_\-mrib\_\-changes}]{\setlength{\rightskip}{0pt plus 5cm}void PimMribTable::apply\_\-mrib\_\-changes (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classPimMribTable_a617036eb0881b1be7b9a731a4d95d4eb}


Apply all changes to \hyperlink{protocolthe-p}{the} table. 

Note that this may trigger various changes to \hyperlink{protocolthe-p}{the} PIM protocol state machines. \hypertarget{classPimMribTable_a86d0007ac38604cee1ba9bf80229e04e}{
\index{PimMribTable@{PimMribTable}!commit\_\-pending\_\-transactions@{commit\_\-pending\_\-transactions}}
\index{commit\_\-pending\_\-transactions@{commit\_\-pending\_\-transactions}!PimMribTable@{PimMribTable}}
\subsubsection[{commit\_\-pending\_\-transactions}]{\setlength{\rightskip}{0pt plus 5cm}void PimMribTable::commit\_\-pending\_\-transactions (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{tid}
\end{DoxyParamCaption}
)}}
\label{classPimMribTable_a86d0007ac38604cee1ba9bf80229e04e}


Commit all pending MRIB entries to \hyperlink{protocolthe-p}{the} MRIB table. 


\begin{DoxyParams}{Parameters}
{\em tid} & \hyperlink{protocolthe-p}{the} transaction ID for \hyperlink{protocolthe-p}{the} pending MRIB entries to commit. \\
\hline
\end{DoxyParams}


Reimplemented from \hyperlink{classMribTable_ac795b6ac356cf1a612ff36924451ff87}{MribTable}.

\hypertarget{classPimMribTable_a45c07c16b087ef650ae2e3b8d6a88c63}{
\index{PimMribTable@{PimMribTable}!family@{family}}
\index{family@{family}!PimMribTable@{PimMribTable}}
\subsubsection[{family}]{\setlength{\rightskip}{0pt plus 5cm}int PimMribTable::family (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classPimMribTable_a45c07c16b087ef650ae2e3b8d6a88c63}


Get \hyperlink{protocolthe-p}{the} address family. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). 
\end{DoxyReturn}
\hypertarget{classPimMribTable_a7ef7598730d8f726f45b2c6a073c2840}{
\index{PimMribTable@{PimMribTable}!find@{find}}
\index{find@{find}!PimMribTable@{PimMribTable}}
\subsubsection[{find}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Mrib} $\ast$ PimMribTable::find (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{address}
\end{DoxyParamCaption}
) const}}
\label{classPimMribTable_a7ef7598730d8f726f45b2c6a073c2840}


Search \hyperlink{protocolthe-p}{the} table and find \hyperlink{protocolthe-p}{the} corresponding \hyperlink{classMrib}{Mrib} entry for a given destination address. 


\begin{DoxyParams}{Parameters}
{\em address} & \hyperlink{protocolthe-p}{the} destination address to search for. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} \hyperlink{classMrib}{Mrib} entry for \hyperlink{protocolthe-p}{the} destination address. 
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{classMrib}{Mrib}. 
\end{DoxySeeAlso}


Reimplemented from \hyperlink{classMribTable_a2a6617759a4ce228530f9a83b2bf6857}{MribTable}.

\hypertarget{classPimMribTable_a308e66a8774dfe1c8ed954f373e7c5e0}{
\index{PimMribTable@{PimMribTable}!modified\_\-prefix\_\-list@{modified\_\-prefix\_\-list}}
\index{modified\_\-prefix\_\-list@{modified\_\-prefix\_\-list}!PimMribTable@{PimMribTable}}
\subsubsection[{modified\_\-prefix\_\-list}]{\setlength{\rightskip}{0pt plus 5cm}list$<${\bf IPvXNet}$>$\& PimMribTable::modified\_\-prefix\_\-list (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPimMribTable_a308e66a8774dfe1c8ed954f373e7c5e0}


Get \hyperlink{protocolthe-p}{the} list of modified prefixes since \hyperlink{protocolthe-p}{the} last commit. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} list of modified prefixes since \hyperlink{protocolthe-p}{the} last commit. 
\end{DoxyReturn}
\hypertarget{classPimMribTable_a015d18595437514f3ba8416883e42099}{
\index{PimMribTable@{PimMribTable}!pim\_\-mrt@{pim\_\-mrt}}
\index{pim\_\-mrt@{pim\_\-mrt}!PimMribTable@{PimMribTable}}
\subsubsection[{pim\_\-mrt}]{\setlength{\rightskip}{0pt plus 5cm}{\bf PimMrt} \& PimMribTable::pim\_\-mrt (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classPimMribTable_a015d18595437514f3ba8416883e42099}


Get \hyperlink{protocolthe-p}{the} corresponding PIM Multicast \hyperlink{classRouting}{Routing} Table. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} corresponding PIM Multicast \hyperlink{classRouting}{Routing} Table. 
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{classPimMrt}{PimMrt}. 
\end{DoxySeeAlso}
\hypertarget{classPimMribTable_a3a46fceadfb967cb5477063a5c8272d5}{
\index{PimMribTable@{PimMribTable}!pim\_\-node@{pim\_\-node}}
\index{pim\_\-node@{pim\_\-node}!PimMribTable@{PimMribTable}}
\subsubsection[{pim\_\-node}]{\setlength{\rightskip}{0pt plus 5cm}{\bf PimNode}\& PimMribTable::pim\_\-node (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPimMribTable_a3a46fceadfb967cb5477063a5c8272d5}


Get \hyperlink{protocolthe-p}{the} \hyperlink{classPimNode}{PimNode} this table belongs to. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} \hyperlink{classPimNode}{PimNode} this table belongs to. 
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
PimTable. 
\end{DoxySeeAlso}
\hypertarget{classPimMribTable_a0181b8ab70f814168732a6f1e4c4622d}{
\index{PimMribTable@{PimMribTable}!resolve\_\-prefixes\_\-by\_\-vif\_\-name@{resolve\_\-prefixes\_\-by\_\-vif\_\-name}}
\index{resolve\_\-prefixes\_\-by\_\-vif\_\-name@{resolve\_\-prefixes\_\-by\_\-vif\_\-name}!PimMribTable@{PimMribTable}}
\subsubsection[{resolve\_\-prefixes\_\-by\_\-vif\_\-name}]{\setlength{\rightskip}{0pt plus 5cm}void PimMribTable::resolve\_\-prefixes\_\-by\_\-vif\_\-name (
\begin{DoxyParamCaption}
\item[{const string \&}]{next\_\-hop\_\-vif\_\-name, }
\item[{uint32\_\-t}]{next\_\-hop\_\-vif\_\-index}
\end{DoxyParamCaption}
)}}
\label{classPimMribTable_a0181b8ab70f814168732a6f1e4c4622d}


Resolve all destination prefixes whose next-\/hop vif name was not resolved earlier (e.g., \hyperlink{protocolthe-p}{the} vif was unknown). 


\begin{DoxyParams}{Parameters}
{\em next\_\-hop\_\-vif\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} resolved vif. \\
\hline
{\em next\_\-hop\_\-vif\_\-index} & \hyperlink{protocolthe-p}{the} index of \hyperlink{protocolthe-p}{the} resolved vif. \\
\hline
\end{DoxyParams}


The documentation for this class was generated from the following files:\begin{DoxyCompactItemize}
\item 
/home/greearb/git/xorp.ct.github/xorp/pim/pim\_\-mrib\_\-table.hh\item 
/home/greearb/git/xorp.ct.github/xorp/pim/pim\_\-mrib\_\-table.cc\end{DoxyCompactItemize}
