\hypertarget{classPimNode}{
\section{PimNode Class Reference}
\label{classPimNode}\index{PimNode@{PimNode}}
}


The PIM node class.  




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

Inheritance diagram for PimNode:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=6.877193cm]{classPimNode}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classPimNode_aab78eef06e4350e2f35886e14e41d407}{PimNode} (int family, xorp\_\-module\_\-id module\_\-id, \hyperlink{classEventLoop}{EventLoop} \&eventloop)
\begin{DoxyCompactList}\small\item\em Constructor for a given address family, module ID, and event loop. \item\end{DoxyCompactList}\item 
virtual \hyperlink{classPimNode_a0abbdfd79634ee3901732c38d228a9d0}{$\sim$PimNode} ()
\begin{DoxyCompactList}\small\item\em Destructor. \item\end{DoxyCompactList}\item 
\hypertarget{classPimNode_a1ceceb540e747ae99dfef99c63e8e4ab}{
virtual void \hyperlink{classPimNode_a1ceceb540e747ae99dfef99c63e8e4ab}{destruct\_\-me} ()}
\label{classPimNode_a1ceceb540e747ae99dfef99c63e8e4ab}

\begin{DoxyCompactList}\small\item\em Does manual destruction work. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_a44f8ed1e771b4aa6167cd25b887d8fdc}{start} ()
\begin{DoxyCompactList}\small\item\em Start \hyperlink{protocolthe-p}{the} node operation. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_a436d2c9d77ad3fcedc7a738d4ac678e0}{stop} ()
\begin{DoxyCompactList}\small\item\em Stop \hyperlink{protocolthe-p}{the} node operation. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_a0183c5a412f0a7e79cb4e32aadd12e0d}{final\_\-start} ()
\begin{DoxyCompactList}\small\item\em Completely start \hyperlink{protocolthe-p}{the} node operation. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_ab49d94a8471376202edde99988ee1261}{final\_\-stop} ()
\begin{DoxyCompactList}\small\item\em Completely stop \hyperlink{protocolthe-p}{the} node operation. \item\end{DoxyCompactList}\item 
void \hyperlink{classPimNode_a1d8d864c70280d793d597ae14fd07136}{enable} ()
\begin{DoxyCompactList}\small\item\em Enable node operation. \item\end{DoxyCompactList}\item 
void \hyperlink{classPimNode_ac5642f25b0777a619dbe596f0f71d8e0}{disable} ()
\begin{DoxyCompactList}\small\item\em Disable node operation. \item\end{DoxyCompactList}\item 
uint8\_\-t \hyperlink{classPimNode_aa71e4bfa9c44b002f6738a4b9756dbd6}{ip\_\-protocol\_\-number} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} IP protocol number. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_aff5f868d66c37fd8d48ea2d3694b561e}{add\_\-vif} (const \hyperlink{classVif}{Vif} \&vif, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Install a new PIM vif. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_aa19ecd50e4e1a2bfb441173474b6a8a7}{add\_\-vif} (const string \&vif\_\-name, uint32\_\-t vif\_\-index, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Install a new PIM vif. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_ad36f081459344f18f4fb9bbe6ba8741d}{delete\_\-vif} (const string \&vif\_\-name, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Delete an existing PIM vif. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_a542d87980a856aacd064ad6e009e24c3}{set\_\-vif\_\-flags} (const string \&vif\_\-name, bool is\_\-pim\_\-register, bool is\_\-p2p, bool is\_\-loopback, bool is\_\-multicast, bool is\_\-broadcast, bool is\_\-up, uint32\_\-t mtu, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Set flags to a vif. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_a3be499c2fe99838eb1fe4960585071e8}{add\_\-vif\_\-addr} (const string \&vif\_\-name, const \hyperlink{classIPvX}{IPvX} \&addr, const \hyperlink{classIPvXNet}{IPvXNet} \&subnet\_\-addr, const \hyperlink{classIPvX}{IPvX} \&broadcast\_\-addr, const \hyperlink{classIPvX}{IPvX} \&peer\_\-addr, bool \&should\_\-send\_\-pim\_\-hello, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Add a new address to a vif, or update an existing address. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_a197a1a722ff3779a781ee1c7fdce2325}{delete\_\-vif\_\-addr} (const string \&vif\_\-name, const \hyperlink{classIPvX}{IPvX} \&addr, bool \&should\_\-send\_\-pim\_\-hello, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Delete an address from a vif. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_abac0b1699f8b3724cf23c6c0a9e686ea}{enable\_\-vif} (const string \&vif\_\-name, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Enable an existing PIM vif. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_a83c91e79473d82ab03fde6b3782ee666}{disable\_\-vif} (const string \&vif\_\-name, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Disable an existing PIM vif. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_a3978f2ea09e2a3202facf11895905bd9}{start\_\-vif} (const string \&vif\_\-name, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Start an existing PIM vif. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_aed3b54e8a2051a75ea620e3ad08b31a1}{stop\_\-vif} (const string \&vif\_\-name, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Stop an existing PIM vif. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_abc5f7dfea4720c5bbc115147dcd61ef6}{start\_\-all\_\-vifs} ()
\begin{DoxyCompactList}\small\item\em Start PIM on all enabled interfaces. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_ad3a11365087538082547ed3a45d9e0d0}{stop\_\-all\_\-vifs} ()
\begin{DoxyCompactList}\small\item\em Stop PIM on all interfaces it was running on. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_a030676d2355a812da166a238aa3ccb2a}{enable\_\-all\_\-vifs} ()
\begin{DoxyCompactList}\small\item\em Enable PIM on all interfaces. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_a5823a0f5ff12c3f1b903ca69638aff09}{disable\_\-all\_\-vifs} ()
\begin{DoxyCompactList}\small\item\em Disable PIM on all interfaces. \item\end{DoxyCompactList}\item 
void \hyperlink{classPimNode_a7459ba0a29daf21261442a3bc27cf6e6}{delete\_\-all\_\-vifs} ()
\begin{DoxyCompactList}\small\item\em Delete all PIM vifs. \item\end{DoxyCompactList}\item 
void \hyperlink{classPimNode_a611c010ba468ab841dd2497b0bd5dfbd}{vif\_\-shutdown\_\-completed} (const string \&vif\_\-name)
\begin{DoxyCompactList}\small\item\em A method called when a vif has completed its shutdown. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_a963d2e0cfbb60ff3edd39dbe4ab5f50c}{proto\_\-recv} (const string \&if\_\-name, const string \&vif\_\-name, const \hyperlink{classIPvX}{IPvX} \&src\_\-address, const \hyperlink{classIPvX}{IPvX} \&dst\_\-address, uint8\_\-t ip\_\-protocol, int32\_\-t ip\_\-ttl, int32\_\-t ip\_\-tos, bool ip\_\-router\_\-alert, bool ip\_\-internet\_\-control, const vector$<$ uint8\_\-t $>$ \&payload, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Receive a protocol packet. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_a4ea6f5138db961a4f9ccc4e8c052943c}{pim\_\-send} (const string \&if\_\-name, const string \&vif\_\-name, const \hyperlink{classIPvX}{IPvX} \&src\_\-address, const \hyperlink{classIPvX}{IPvX} \&dst\_\-address, uint8\_\-t ip\_\-protocol, int32\_\-t ip\_\-ttl, int32\_\-t ip\_\-tos, bool ip\_\-router\_\-alert, bool ip\_\-internet\_\-control, \hyperlink{structbuffer__}{buffer\_\-t} $\ast$buffer, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} a protocol packet. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_aad54f16da6858aed74ed9980c6c9aadc}{signal\_\-message\_\-recv} (const string \&src\_\-module\_\-instance\_\-name, int message\_\-type, uint32\_\-t vif\_\-index, const \hyperlink{classIPvX}{IPvX} \&src, const \hyperlink{classIPvX}{IPvX} \&dst, const uint8\_\-t $\ast$rcvbuf, size\_\-t rcvlen)
\begin{DoxyCompactList}\small\item\em Receive a signal message from \hyperlink{protocolthe-p}{the} kernel. \item\end{DoxyCompactList}\item 
\hypertarget{classPimNode_a8fe5dc526fecb74153c087316e5e3e67}{
int \hyperlink{classPimNode_a8fe5dc526fecb74153c087316e5e3e67}{signal\_\-message\_\-send} (const string \&, int, uint32\_\-t, const \hyperlink{classIPvX}{IPvX} \&, const \hyperlink{classIPvX}{IPvX} \&, const uint8\_\-t $\ast$, size\_\-t)}
\label{classPimNode_a8fe5dc526fecb74153c087316e5e3e67}

\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} signal message: not used by PIM. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classPimNode_a3b8e1d1b54cf188a2157e3fc8290ab26}{register\_\-receiver} (const string \&if\_\-name, const string \&vif\_\-name, uint8\_\-t ip\_\-protocol, bool enable\_\-multicast\_\-loopback)=0
\begin{DoxyCompactList}\small\item\em Register as a receiver to receive packets. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classPimNode_a4a029cbf20ade79a2cbee9c4c0af2234}{unregister\_\-receiver} (const string \&if\_\-name, const string \&vif\_\-name, uint8\_\-t ip\_\-protocol)=0
\begin{DoxyCompactList}\small\item\em Unregister as a receiver to receive packets. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classPimNode_ae0873c04d4b1d3ebb8e6fec7e15f2baf}{register\_\-protocol} (const string \&if\_\-name, const string \&vif\_\-name, uint8\_\-t ip\_\-protocol)=0
\begin{DoxyCompactList}\small\item\em Register a protocol on an interface in \hyperlink{protocolthe-p}{the} Multicast FEA. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classPimNode_a353bb60dab3ea193fe80a4b11dd6d219}{unregister\_\-protocol} (const string \&if\_\-name, const string \&vif\_\-name)=0
\begin{DoxyCompactList}\small\item\em Unregister a protocol on an interface in \hyperlink{protocolthe-p}{the} Multicast FEA. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classPimNode_a2d571b7f146e9cd262e4a4cd8bde94a9}{join\_\-multicast\_\-group} (const string \&if\_\-name, const string \&vif\_\-name, uint8\_\-t ip\_\-protocol, const \hyperlink{classIPvX}{IPvX} \&group\_\-address)=0
\begin{DoxyCompactList}\small\item\em Join a multicast group on an interface. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classPimNode_a32847bab9d2ab568947adf0373b95259}{leave\_\-multicast\_\-group} (const string \&if\_\-name, const string \&vif\_\-name, uint8\_\-t ip\_\-protocol, const \hyperlink{classIPvX}{IPvX} \&group\_\-address)=0
\begin{DoxyCompactList}\small\item\em Leave a multicast group on an interface. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classPimNode_abc56320ad85f953faa22db6202cf0769}{add\_\-mfc\_\-to\_\-kernel} (const \hyperlink{classPimMfc}{PimMfc} \&pim\_\-mfc)=0
\begin{DoxyCompactList}\small\item\em Add a Multicast Forwarding Cache to \hyperlink{protocolthe-p}{the} kernel. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classPimNode_acd4adf41efbff7dd4df2f921f29745ec}{delete\_\-mfc\_\-from\_\-kernel} (const \hyperlink{classPimMfc}{PimMfc} \&pim\_\-mfc)=0
\begin{DoxyCompactList}\small\item\em Delete a Multicast Forwarding Cache to \hyperlink{protocolthe-p}{the} kernel. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classPimNode_ae15d4b9ef2c793b9f9bdaeaf3779e26d}{add\_\-dataflow\_\-monitor} (const \hyperlink{classIPvX}{IPvX} \&source\_\-addr, const \hyperlink{classIPvX}{IPvX} \&group\_\-addr, uint32\_\-t threshold\_\-interval\_\-sec, uint32\_\-t threshold\_\-interval\_\-usec, uint32\_\-t threshold\_\-packets, uint32\_\-t threshold\_\-bytes, bool is\_\-threshold\_\-in\_\-packets, bool is\_\-threshold\_\-in\_\-bytes, bool is\_\-geq\_\-upcall, bool is\_\-leq\_\-upcall)=0
\begin{DoxyCompactList}\small\item\em Add a dataflow monitor to \hyperlink{protocolthe-p}{the} MFEA. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classPimNode_a37d5c4a37727ecac00d4e83e3c72a313}{delete\_\-dataflow\_\-monitor} (const \hyperlink{classIPvX}{IPvX} \&source\_\-addr, const \hyperlink{classIPvX}{IPvX} \&group\_\-addr, uint32\_\-t threshold\_\-interval\_\-sec, uint32\_\-t threshold\_\-interval\_\-usec, uint32\_\-t threshold\_\-packets, uint32\_\-t threshold\_\-bytes, bool is\_\-threshold\_\-in\_\-packets, bool is\_\-threshold\_\-in\_\-bytes, bool is\_\-geq\_\-upcall, bool is\_\-leq\_\-upcall)=0
\begin{DoxyCompactList}\small\item\em Delete a dataflow monitor from \hyperlink{protocolthe-p}{the} MFEA. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classPimNode_a423b3dfbc1989581a869ddde1a6e1de5}{delete\_\-all\_\-dataflow\_\-monitor} (const \hyperlink{classIPvX}{IPvX} \&source\_\-addr, const \hyperlink{classIPvX}{IPvX} \&group\_\-addr)=0
\begin{DoxyCompactList}\small\item\em Delete all dataflow monitors for a given source and group address from \hyperlink{protocolthe-p}{the} MFEA. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classPimNode_a0fc0636ebc875f540bec5f007d8779f5}{add\_\-protocol\_\-mld6igmp} (uint32\_\-t vif\_\-index)=0
\begin{DoxyCompactList}\small\item\em Register this protocol with \hyperlink{protocolthe-p}{the} MLD/IGMP module. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classPimNode_a890373e9b390876c2116b44e8b35a7bc}{delete\_\-protocol\_\-mld6igmp} (uint32\_\-t vif\_\-index)=0
\begin{DoxyCompactList}\small\item\em Deregister this protocol with \hyperlink{protocolthe-p}{the} MLD/IGMP module. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_a7165562445dd638e9ee0c396a7a5effd}{add\_\-membership} (uint32\_\-t vif\_\-index, const \hyperlink{classIPvX}{IPvX} \&source, const \hyperlink{classIPvX}{IPvX} \&group)
\begin{DoxyCompactList}\small\item\em Receive \char`\"{}add membership\char`\"{} from \hyperlink{protocolthe-p}{the} MLD/IGMP module. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_a43dd766d7d2e529ec1a048720fa3ba72}{delete\_\-membership} (uint32\_\-t vif\_\-index, const \hyperlink{classIPvX}{IPvX} \&source, const \hyperlink{classIPvX}{IPvX} \&group)
\begin{DoxyCompactList}\small\item\em Receive \char`\"{}delete membership\char`\"{} from \hyperlink{protocolthe-p}{the} MLD/IGMP module. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPimNode_a751f62e8e1953ed62e35d2dcb6c8e207}{is\_\-directly\_\-connected} (const \hyperlink{classPimVif}{PimVif} \&pim\_\-vif, const \hyperlink{classIPvX}{IPvX} \&ipaddr\_\-test) const 
\begin{DoxyCompactList}\small\item\em Test if an address is directly connected to a specified virtual interface. \item\end{DoxyCompactList}\item 
\hyperlink{classPimVif}{PimVif} $\ast$ \hyperlink{classPimNode_ad936396479f18cc9017face169905ef6}{vif\_\-find\_\-pim\_\-register} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} PIM-\/Register virtual interface. \item\end{DoxyCompactList}\item 
uint32\_\-t \hyperlink{classPimNode_ab1c5330ab9566ac565c2b44751ed6631}{pim\_\-register\_\-vif\_\-index} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} vif index of \hyperlink{protocolthe-p}{the} PIM-\/Register virtual interface. \item\end{DoxyCompactList}\item 
\hyperlink{classPimMrt}{PimMrt} \& \hyperlink{classPimNode_add29fc00ce41af02417b26113fb481f7}{pim\_\-mrt} ()
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} PIM Multicast \hyperlink{classRouting}{Routing} Table. \item\end{DoxyCompactList}\item 
\hyperlink{classPimMribTable}{PimMribTable} \& \hyperlink{classPimNode_a117f2060c96804fead5f545965d7ae8c}{pim\_\-mrib\_\-table} ()
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} table with \hyperlink{protocolthe-p}{the} Multicast \hyperlink{classRouting}{Routing} Information Base used by PIM. \item\end{DoxyCompactList}\item 
\hyperlink{classPimBsr}{PimBsr} \& \hyperlink{classPimNode_aecc54bf8dd77caeec772ff4f3fad3ab2}{pim\_\-bsr} ()
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} PIM Bootstrap entity. \item\end{DoxyCompactList}\item 
\hyperlink{classRpTable}{RpTable} \& \hyperlink{classPimNode_ab06a194ddf6cd0a0fb0930424d34b773}{rp\_\-table} ()
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} PIM RP table. \item\end{DoxyCompactList}\item 
\hyperlink{classPimScopeZoneTable}{PimScopeZoneTable} \& \hyperlink{classPimNode_a06bb92ba33b4f3f156a1c2ebe1ce1901}{pim\_\-scope\_\-zone\_\-table} ()
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} PIM Scope-\/Zone table. \item\end{DoxyCompactList}\item 
Mifset \& \hyperlink{classPimNode_a56fa2d39cbcc460a53e6d457a67371fe}{pim\_\-vifs\_\-dr} ()
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} set of vifs for which this PIM note is a Designated Router. \item\end{DoxyCompactList}\item 
void \hyperlink{classPimNode_aa47e1fa45300dfe901d947b5164f5d4c}{set\_\-pim\_\-vifs\_\-dr} (uint32\_\-t vif\_\-index, bool v)
\begin{DoxyCompactList}\small\item\em Set/reset a virtual interface as a Designated Router. \item\end{DoxyCompactList}\item 
\hyperlink{classPimVif}{PimVif} $\ast$ \hyperlink{classPimNode_aa28b4a5c4a1e12ea153e750b14b1b2a4}{pim\_\-vif\_\-rpf\_\-find} (const \hyperlink{classIPvX}{IPvX} \&dst\_\-addr)
\begin{DoxyCompactList}\small\item\em Find \hyperlink{protocolthe-p}{the} RPF virtual interface for a given destination address. \item\end{DoxyCompactList}\item 
\hyperlink{classPimNbr}{PimNbr} $\ast$ \hyperlink{classPimNode_ab610cf3fb04b2713cbf21bf12e212f14}{pim\_\-nbr\_\-rpf\_\-find} (const \hyperlink{classIPvX}{IPvX} \&dst\_\-addr)
\begin{DoxyCompactList}\small\item\em Find \hyperlink{protocolthe-p}{the} RPF PIM neighbor for a given destination address. \item\end{DoxyCompactList}\item 
\hyperlink{classPimNbr}{PimNbr} $\ast$ \hyperlink{classPimNode_a0c24dd0d2646c9f6bec9c5108ccad3b1}{pim\_\-nbr\_\-rpf\_\-find} (const \hyperlink{classIPvX}{IPvX} \&dst\_\-addr, const \hyperlink{classMrib}{Mrib} $\ast$mrib)
\begin{DoxyCompactList}\small\item\em Find \hyperlink{protocolthe-p}{the} RPF PIM neighbor for a given destination address, and already known \hyperlink{classMrib}{Mrib} entry. \item\end{DoxyCompactList}\item 
\hyperlink{classPimNbr}{PimNbr} $\ast$ \hyperlink{classPimNode_af53f0a1ae2e1fce6ea5273e9b57f84cf}{pim\_\-nbr\_\-find\_\-global} (const \hyperlink{classIPvX}{IPvX} \&nbr\_\-addr)
\begin{DoxyCompactList}\small\item\em Find a PIM neighbor by its address. \item\end{DoxyCompactList}\item 
\hypertarget{classPimNode_a57a9f6901019e38483fcf9bd50079913}{
void \hyperlink{classPimNode_a57a9f6901019e38483fcf9bd50079913}{enable\_\-bsr} ()}
\label{classPimNode_a57a9f6901019e38483fcf9bd50079913}

\begin{DoxyCompactList}\small\item\em Enable \hyperlink{protocolthe-p}{the} PIM Bootstrap mechanism. \item\end{DoxyCompactList}\item 
\hypertarget{classPimNode_a4dca8408f3c3bf2627ba51ec6e2a95af}{
void \hyperlink{classPimNode_a4dca8408f3c3bf2627ba51ec6e2a95af}{disable\_\-bsr} ()}
\label{classPimNode_a4dca8408f3c3bf2627ba51ec6e2a95af}

\begin{DoxyCompactList}\small\item\em Disable \hyperlink{protocolthe-p}{the} PIM Bootstrap mechanism. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_a1983f3cc0f29d02779f3e5e386c086e4}{start\_\-bsr} ()
\begin{DoxyCompactList}\small\item\em Start \hyperlink{protocolthe-p}{the} Bootstrap mechanism. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_a0469e3cbf123f41d9d28a9dae7bd5a19}{stop\_\-bsr} ()
\begin{DoxyCompactList}\small\item\em Stop \hyperlink{protocolthe-p}{the} Bootstrap mechanism. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_a2d40a762404fdde8d96e01594ea665ed}{apply\_\-bsr\_\-changes} (string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Apply BSR configuration changes. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_a8e5635236326d0f8885ab830c9181fc9}{set\_\-config\_\-all\_\-vifs\_\-done} (string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Complete \hyperlink{protocolthe-p}{the} set of vif configuration changes. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_a93f108a56e2acb8f31c18a78ab6e6009}{get\_\-vif\_\-proto\_\-version} (const string \&vif\_\-name, int \&proto\_\-version, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} protocol version on an interface. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_a1e2fb5e2ddc74dfc2d3a546f040b9d9b}{set\_\-vif\_\-proto\_\-version} (const string \&vif\_\-name, int proto\_\-version, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} protocol version on an interface. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimNode_ac5418584a3265a85dc424f7c61ce4101}{reset\_\-vif\_\-proto\_\-version} (const string \&vif\_\-name, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Reset \hyperlink{protocolthe-p}{the} protocol version on an interface to its default value. \item\end{DoxyCompactList}\item 
\hypertarget{classPimNode_a6dfdb0175c2e1b5e5292bd4180878a4b}{
int {\bfseries get\_\-vif\_\-hello\_\-triggered\_\-delay} (const string \&vif\_\-name, uint16\_\-t \&hello\_\-triggered\_\-delay, string \&error\_\-msg)}
\label{classPimNode_a6dfdb0175c2e1b5e5292bd4180878a4b}

\item 
\hypertarget{classPimNode_a94f641e46320060e7ba83e31e5b5ef32}{
int {\bfseries set\_\-vif\_\-hello\_\-triggered\_\-delay} (const string \&vif\_\-name, uint16\_\-t hello\_\-triggered\_\-delay, string \&error\_\-msg)}
\label{classPimNode_a94f641e46320060e7ba83e31e5b5ef32}

\item 
\hypertarget{classPimNode_afa83651301bb023731f81155f9b409be}{
int {\bfseries reset\_\-vif\_\-hello\_\-triggered\_\-delay} (const string \&vif\_\-name, string \&error\_\-msg)}
\label{classPimNode_afa83651301bb023731f81155f9b409be}

\item 
\hypertarget{classPimNode_ade7b59dfb24da523a3e698e725d9114e}{
int {\bfseries get\_\-vif\_\-hello\_\-period} (const string \&vif\_\-name, uint16\_\-t \&hello\_\-period, string \&error\_\-msg)}
\label{classPimNode_ade7b59dfb24da523a3e698e725d9114e}

\item 
\hypertarget{classPimNode_a487467c8ab3b83eb54aa838fba5aba5f}{
int {\bfseries set\_\-vif\_\-hello\_\-period} (const string \&vif\_\-name, uint16\_\-t hello\_\-period, string \&error\_\-msg)}
\label{classPimNode_a487467c8ab3b83eb54aa838fba5aba5f}

\item 
\hypertarget{classPimNode_a85dff642c49b1098671c389d7306f381}{
int {\bfseries reset\_\-vif\_\-hello\_\-period} (const string \&vif\_\-name, string \&error\_\-msg)}
\label{classPimNode_a85dff642c49b1098671c389d7306f381}

\item 
\hypertarget{classPimNode_a7621e3fa42dc7d19aa9b255d6d7b32a1}{
int {\bfseries get\_\-vif\_\-hello\_\-holdtime} (const string \&vif\_\-name, uint16\_\-t \&hello\_\-holdtime, string \&error\_\-msg)}
\label{classPimNode_a7621e3fa42dc7d19aa9b255d6d7b32a1}

\item 
\hypertarget{classPimNode_a4ef6b35ac194abe417cb3c6a5e9ea906}{
int {\bfseries set\_\-vif\_\-hello\_\-holdtime} (const string \&vif\_\-name, uint16\_\-t hello\_\-holdtime, string \&error\_\-msg)}
\label{classPimNode_a4ef6b35ac194abe417cb3c6a5e9ea906}

\item 
\hypertarget{classPimNode_a490c3d5ecc0c9625598105a16b66db87}{
int {\bfseries reset\_\-vif\_\-hello\_\-holdtime} (const string \&vif\_\-name, string \&error\_\-msg)}
\label{classPimNode_a490c3d5ecc0c9625598105a16b66db87}

\item 
\hypertarget{classPimNode_af6e15e5cf8dc09dc3fd494622032b9d6}{
int {\bfseries get\_\-vif\_\-dr\_\-priority} (const string \&vif\_\-name, uint32\_\-t \&dr\_\-priority, string \&error\_\-msg)}
\label{classPimNode_af6e15e5cf8dc09dc3fd494622032b9d6}

\item 
\hypertarget{classPimNode_a34a7902d9c87157804787257dcee1659}{
int {\bfseries set\_\-vif\_\-dr\_\-priority} (const string \&vif\_\-name, uint32\_\-t dr\_\-priority, string \&error\_\-msg)}
\label{classPimNode_a34a7902d9c87157804787257dcee1659}

\item 
\hypertarget{classPimNode_ab3c23068a1e2344a97cc6616b3bcf189}{
int {\bfseries reset\_\-vif\_\-dr\_\-priority} (const string \&vif\_\-name, string \&error\_\-msg)}
\label{classPimNode_ab3c23068a1e2344a97cc6616b3bcf189}

\item 
\hypertarget{classPimNode_a54acbf1e208156c911f3526d99ad9400}{
int {\bfseries get\_\-vif\_\-propagation\_\-delay} (const string \&vif\_\-name, uint16\_\-t \&propagation\_\-delay, string \&error\_\-msg)}
\label{classPimNode_a54acbf1e208156c911f3526d99ad9400}

\item 
\hypertarget{classPimNode_acc950c94cc2214a72c409b0ad2abc5fc}{
int {\bfseries set\_\-vif\_\-propagation\_\-delay} (const string \&vif\_\-name, uint16\_\-t propagation\_\-delay, string \&error\_\-msg)}
\label{classPimNode_acc950c94cc2214a72c409b0ad2abc5fc}

\item 
\hypertarget{classPimNode_a6cf47d68b09916b17767dad65bbe2526}{
int {\bfseries reset\_\-vif\_\-propagation\_\-delay} (const string \&vif\_\-name, string \&error\_\-msg)}
\label{classPimNode_a6cf47d68b09916b17767dad65bbe2526}

\item 
\hypertarget{classPimNode_a4ded7ea0c07489f9bbae97fbb0123fac}{
int {\bfseries get\_\-vif\_\-override\_\-interval} (const string \&vif\_\-name, uint16\_\-t \&override\_\-interval, string \&error\_\-msg)}
\label{classPimNode_a4ded7ea0c07489f9bbae97fbb0123fac}

\item 
\hypertarget{classPimNode_ad7014c95c466f949dac43bf894d87914}{
int {\bfseries set\_\-vif\_\-override\_\-interval} (const string \&vif\_\-name, uint16\_\-t override\_\-interval, string \&error\_\-msg)}
\label{classPimNode_ad7014c95c466f949dac43bf894d87914}

\item 
\hypertarget{classPimNode_af7f259a51264b7e09e764c85290af1ce}{
int {\bfseries reset\_\-vif\_\-override\_\-interval} (const string \&vif\_\-name, string \&error\_\-msg)}
\label{classPimNode_af7f259a51264b7e09e764c85290af1ce}

\item 
\hypertarget{classPimNode_adfd0fdf95785a5f00c8800d24f885479}{
int {\bfseries get\_\-vif\_\-is\_\-tracking\_\-support\_\-disabled} (const string \&vif\_\-name, bool \&is\_\-tracking\_\-support\_\-disabled, string \&error\_\-msg)}
\label{classPimNode_adfd0fdf95785a5f00c8800d24f885479}

\item 
\hypertarget{classPimNode_a8a4d8a9c38fbdcb510b781c611f6ba42}{
int {\bfseries set\_\-vif\_\-is\_\-tracking\_\-support\_\-disabled} (const string \&vif\_\-name, bool is\_\-tracking\_\-support\_\-disabled, string \&error\_\-msg)}
\label{classPimNode_a8a4d8a9c38fbdcb510b781c611f6ba42}

\item 
\hypertarget{classPimNode_ad9716b5187d0805529a0c4d0dc8dcf85}{
int {\bfseries reset\_\-vif\_\-is\_\-tracking\_\-support\_\-disabled} (const string \&vif\_\-name, string \&error\_\-msg)}
\label{classPimNode_ad9716b5187d0805529a0c4d0dc8dcf85}

\item 
\hypertarget{classPimNode_a38790e1955539694a30e3a3053194da8}{
int {\bfseries get\_\-vif\_\-accept\_\-nohello\_\-neighbors} (const string \&vif\_\-name, bool \&accept\_\-nohello\_\-neighbors, string \&error\_\-msg)}
\label{classPimNode_a38790e1955539694a30e3a3053194da8}

\item 
\hypertarget{classPimNode_ab9e103116bcab40c660d4e4c6a8d35e1}{
int {\bfseries set\_\-vif\_\-accept\_\-nohello\_\-neighbors} (const string \&vif\_\-name, bool accept\_\-nohello\_\-neighbors, string \&error\_\-msg)}
\label{classPimNode_ab9e103116bcab40c660d4e4c6a8d35e1}

\item 
\hypertarget{classPimNode_a578db4f453f3479770a1323d56748f79}{
int {\bfseries reset\_\-vif\_\-accept\_\-nohello\_\-neighbors} (const string \&vif\_\-name, string \&error\_\-msg)}
\label{classPimNode_a578db4f453f3479770a1323d56748f79}

\item 
\hypertarget{classPimNode_ad33f8d1b5a0c0241f44dd6d157d2531c}{
int {\bfseries get\_\-vif\_\-join\_\-prune\_\-period} (const string \&vif\_\-name, uint16\_\-t \&join\_\-prune\_\-period, string \&error\_\-msg)}
\label{classPimNode_ad33f8d1b5a0c0241f44dd6d157d2531c}

\item 
\hypertarget{classPimNode_a7064a3fc7c432d84ce2f385ff6cc8bf3}{
int {\bfseries set\_\-vif\_\-join\_\-prune\_\-period} (const string \&vif\_\-name, uint16\_\-t join\_\-prune\_\-period, string \&error\_\-msg)}
\label{classPimNode_a7064a3fc7c432d84ce2f385ff6cc8bf3}

\item 
\hypertarget{classPimNode_a690c914ded0013c79a51f67558dec6f6}{
int {\bfseries reset\_\-vif\_\-join\_\-prune\_\-period} (const string \&vif\_\-name, string \&error\_\-msg)}
\label{classPimNode_a690c914ded0013c79a51f67558dec6f6}

\item 
\hypertarget{classPimNode_a1f37aeb095b4c3159986935c591479d2}{
int {\bfseries get\_\-switch\_\-to\_\-spt\_\-threshold} (bool \&is\_\-enabled, uint32\_\-t \&interval\_\-sec, uint32\_\-t \&bytes, string \&error\_\-msg)}
\label{classPimNode_a1f37aeb095b4c3159986935c591479d2}

\item 
\hypertarget{classPimNode_a2e73b148253c9b2b08c8410092c46bc4}{
int {\bfseries set\_\-switch\_\-to\_\-spt\_\-threshold} (bool is\_\-enabled, uint32\_\-t interval\_\-sec, uint32\_\-t bytes, string \&error\_\-msg)}
\label{classPimNode_a2e73b148253c9b2b08c8410092c46bc4}

\item 
\hypertarget{classPimNode_abc35c0559967a8872d4b38e91b38c9ba}{
int {\bfseries reset\_\-switch\_\-to\_\-spt\_\-threshold} (string \&error\_\-msg)}
\label{classPimNode_abc35c0559967a8872d4b38e91b38c9ba}

\item 
\hypertarget{classPimNode_afcd035d6078feadda2481bc2de049f14}{
int {\bfseries add\_\-config\_\-scope\_\-zone\_\-by\_\-vif\_\-name} (const \hyperlink{classIPvXNet}{IPvXNet} \&scope\_\-zone\_\-id, const string \&vif\_\-name, string \&error\_\-msg)}
\label{classPimNode_afcd035d6078feadda2481bc2de049f14}

\item 
\hypertarget{classPimNode_acf32311bd255b7561fbfbf6e55b1cbf1}{
int {\bfseries add\_\-config\_\-scope\_\-zone\_\-by\_\-vif\_\-addr} (const \hyperlink{classIPvXNet}{IPvXNet} \&scope\_\-zone\_\-id, const \hyperlink{classIPvX}{IPvX} \&vif\_\-addr, string \&error\_\-msg)}
\label{classPimNode_acf32311bd255b7561fbfbf6e55b1cbf1}

\item 
\hypertarget{classPimNode_a6c5c1791646f6407928d194604f94865}{
int {\bfseries delete\_\-config\_\-scope\_\-zone\_\-by\_\-vif\_\-name} (const \hyperlink{classIPvXNet}{IPvXNet} \&scope\_\-zone\_\-id, const string \&vif\_\-name, string \&error\_\-msg)}
\label{classPimNode_a6c5c1791646f6407928d194604f94865}

\item 
\hypertarget{classPimNode_ac72a40b7d007504ef348dd07bcc2d925}{
int {\bfseries delete\_\-config\_\-scope\_\-zone\_\-by\_\-vif\_\-addr} (const \hyperlink{classIPvXNet}{IPvXNet} \&scope\_\-zone\_\-id, const \hyperlink{classIPvX}{IPvX} \&vif\_\-addr, string \&error\_\-msg)}
\label{classPimNode_ac72a40b7d007504ef348dd07bcc2d925}

\item 
\hypertarget{classPimNode_afb994628bcfb2fdf43c32893476bd053}{
int {\bfseries add\_\-config\_\-cand\_\-bsr} (const \hyperlink{classIPvXNet}{IPvXNet} \&scope\_\-zone\_\-id, bool is\_\-scope\_\-zone, const string \&vif\_\-name, const \hyperlink{classIPvX}{IPvX} \&vif\_\-addr, uint8\_\-t bsr\_\-priority, uint8\_\-t hash\_\-mask\_\-len, string \&error\_\-msg)}
\label{classPimNode_afb994628bcfb2fdf43c32893476bd053}

\item 
\hypertarget{classPimNode_a509db6590029079e37dffa38ddb4d53b}{
int {\bfseries delete\_\-config\_\-cand\_\-bsr} (const \hyperlink{classIPvXNet}{IPvXNet} \&scope\_\-zone\_\-id, bool is\_\-scope\_\-zone, string \&error\_\-msg)}
\label{classPimNode_a509db6590029079e37dffa38ddb4d53b}

\item 
\hypertarget{classPimNode_a12e4aafd5ac1d168652b345c0005474c}{
int {\bfseries add\_\-config\_\-cand\_\-rp} (const \hyperlink{classIPvXNet}{IPvXNet} \&group\_\-prefix, bool is\_\-scope\_\-zone, const string \&vif\_\-name, const \hyperlink{classIPvX}{IPvX} \&vif\_\-addr, uint8\_\-t rp\_\-priority, uint16\_\-t rp\_\-holdtime, string \&error\_\-msg)}
\label{classPimNode_a12e4aafd5ac1d168652b345c0005474c}

\item 
\hypertarget{classPimNode_afa3a57fb070f4e800fbef7f4585c98d8}{
int {\bfseries delete\_\-config\_\-cand\_\-rp} (const \hyperlink{classIPvXNet}{IPvXNet} \&group\_\-prefix, bool is\_\-scope\_\-zone, const string \&vif\_\-name, const \hyperlink{classIPvX}{IPvX} \&vif\_\-addr, string \&error\_\-msg)}
\label{classPimNode_afa3a57fb070f4e800fbef7f4585c98d8}

\item 
\hypertarget{classPimNode_a847044aa91a69ecf9cd9e63bed63595e}{
int {\bfseries add\_\-config\_\-static\_\-rp} (const \hyperlink{classIPvXNet}{IPvXNet} \&group\_\-prefix, const \hyperlink{classIPvX}{IPvX} \&rp\_\-addr, uint8\_\-t rp\_\-priority, uint8\_\-t hash\_\-mask\_\-len, string \&error\_\-msg)}
\label{classPimNode_a847044aa91a69ecf9cd9e63bed63595e}

\item 
\hypertarget{classPimNode_a4d6ae5a65e5c9776d101949d26451edf}{
int {\bfseries delete\_\-config\_\-static\_\-rp} (const \hyperlink{classIPvXNet}{IPvXNet} \&group\_\-prefix, const \hyperlink{classIPvX}{IPvX} \&rp\_\-addr, string \&error\_\-msg)}
\label{classPimNode_a4d6ae5a65e5c9776d101949d26451edf}

\item 
\hypertarget{classPimNode_aa912bc301d01f61d0f62ff785491e142}{
int {\bfseries delete\_\-config\_\-all\_\-static\_\-group\_\-prefixes\_\-rp} (const \hyperlink{classIPvX}{IPvX} \&rp\_\-addr, string \&error\_\-msg)}
\label{classPimNode_aa912bc301d01f61d0f62ff785491e142}

\item 
\hypertarget{classPimNode_ad7a3c33be40409a562ac3b23444ff68e}{
int {\bfseries delete\_\-config\_\-all\_\-static\_\-rps} (string \&error\_\-msg)}
\label{classPimNode_ad7a3c33be40409a562ac3b23444ff68e}

\item 
\hypertarget{classPimNode_ad0940df6e3cbf7f1a0ed0c4042a3343d}{
int {\bfseries config\_\-static\_\-rp\_\-done} (string \&error\_\-msg)}
\label{classPimNode_ad0940df6e3cbf7f1a0ed0c4042a3343d}

\item 
\hypertarget{classPimNode_acc06dffb82d40777700b5269bda41b03}{
int {\bfseries add\_\-alternative\_\-subnet} (const string \&vif\_\-name, const \hyperlink{classIPvXNet}{IPvXNet} \&subnet, string \&error\_\-msg)}
\label{classPimNode_acc06dffb82d40777700b5269bda41b03}

\item 
\hypertarget{classPimNode_a7ff002a9fcf264edd3834d6a72836282}{
int {\bfseries delete\_\-alternative\_\-subnet} (const string \&vif\_\-name, const \hyperlink{classIPvXNet}{IPvXNet} \&subnet, string \&error\_\-msg)}
\label{classPimNode_a7ff002a9fcf264edd3834d6a72836282}

\item 
\hypertarget{classPimNode_a5bacfd25b5fe61641f6d601483d8047c}{
int {\bfseries remove\_\-all\_\-alternative\_\-subnets} (const string \&vif\_\-name, string \&error\_\-msg)}
\label{classPimNode_a5bacfd25b5fe61641f6d601483d8047c}

\item 
bool \hyperlink{classPimNode_a582022816af9b2ed895cdae94b5dad38}{is\_\-log\_\-trace} () const 
\begin{DoxyCompactList}\small\item\em Test if trace log is enabled. \item\end{DoxyCompactList}\item 
void \hyperlink{classPimNode_a19bf117ce5086de009397538422aaa0d}{set\_\-log\_\-trace} (bool is\_\-enabled)
\begin{DoxyCompactList}\small\item\em Enable/disable trace log. \item\end{DoxyCompactList}\item 
\hypertarget{classPimNode_a0f465f7ab0a92f71b18bed5be04583ea}{
int {\bfseries add\_\-test\_\-jp\_\-entry} (const \hyperlink{classIPvX}{IPvX} \&source\_\-addr, const \hyperlink{classIPvX}{IPvX} \&group\_\-addr, uint8\_\-t group\_\-mask\_\-len, mrt\_\-entry\_\-type\_\-t mrt\_\-entry\_\-type, action\_\-jp\_\-t action\_\-jp, uint16\_\-t holdtime, bool is\_\-new\_\-group)}
\label{classPimNode_a0f465f7ab0a92f71b18bed5be04583ea}

\item 
\hypertarget{classPimNode_aa58e71120195ba7983750495c83702b2}{
int {\bfseries send\_\-test\_\-jp\_\-entry} (const string \&vif\_\-name, const \hyperlink{classIPvX}{IPvX} \&nbr\_\-addr, string \&error\_\-msg)}
\label{classPimNode_aa58e71120195ba7983750495c83702b2}

\item 
\hypertarget{classPimNode_a8285b69db86f0206fb34421786d52b47}{
int {\bfseries send\_\-test\_\-assert} (const string \&vif\_\-name, const \hyperlink{classIPvX}{IPvX} \&source\_\-addr, const \hyperlink{classIPvX}{IPvX} \&group\_\-addr, bool rpt\_\-bit, uint32\_\-t metric\_\-preference, uint32\_\-t metric, string \&error\_\-msg)}
\label{classPimNode_a8285b69db86f0206fb34421786d52b47}

\item 
\hypertarget{classPimNode_a68383b9cd83f7a06d975fc00bfae1a09}{
int {\bfseries add\_\-test\_\-bsr\_\-zone} (const \hyperlink{classPimScopeZoneId}{PimScopeZoneId} \&zone\_\-id, const \hyperlink{classIPvX}{IPvX} \&bsr\_\-addr, uint8\_\-t bsr\_\-priority, uint8\_\-t hash\_\-mask\_\-len, uint16\_\-t fragment\_\-tag)}
\label{classPimNode_a68383b9cd83f7a06d975fc00bfae1a09}

\item 
\hypertarget{classPimNode_a1cd800e1e9397d376ec9d4892cac8065}{
int {\bfseries add\_\-test\_\-bsr\_\-group\_\-prefix} (const \hyperlink{classPimScopeZoneId}{PimScopeZoneId} \&zone\_\-id, const \hyperlink{classIPvXNet}{IPvXNet} \&group\_\-prefix, bool is\_\-scope\_\-zone, uint8\_\-t expected\_\-rp\_\-count)}
\label{classPimNode_a1cd800e1e9397d376ec9d4892cac8065}

\item 
\hypertarget{classPimNode_a10aaf11c85973d87847063840f009fcd}{
int {\bfseries add\_\-test\_\-bsr\_\-rp} (const \hyperlink{classPimScopeZoneId}{PimScopeZoneId} \&zone\_\-id, const \hyperlink{classIPvXNet}{IPvXNet} \&group\_\-prefix, const \hyperlink{classIPvX}{IPvX} \&rp\_\-addr, uint8\_\-t rp\_\-priority, uint16\_\-t rp\_\-holdtime)}
\label{classPimNode_a10aaf11c85973d87847063840f009fcd}

\item 
\hypertarget{classPimNode_a7090c1248306bf4c896483073952ffa5}{
int {\bfseries send\_\-test\_\-bootstrap} (const string \&vif\_\-name, string \&error\_\-msg)}
\label{classPimNode_a7090c1248306bf4c896483073952ffa5}

\item 
\hypertarget{classPimNode_a8e2af8068a54109eca49be8efbdfa82c}{
int {\bfseries send\_\-test\_\-bootstrap\_\-by\_\-dest} (const string \&vif\_\-name, const \hyperlink{classIPvX}{IPvX} \&dest\_\-addr, string \&error\_\-msg)}
\label{classPimNode_a8e2af8068a54109eca49be8efbdfa82c}

\item 
\hypertarget{classPimNode_af4491e31e5f91d07cabfa8ba488c9257}{
int {\bfseries send\_\-test\_\-cand\_\-rp\_\-adv} ()}
\label{classPimNode_af4491e31e5f91d07cabfa8ba488c9257}

\item 
\hypertarget{classPimNode_a2187f1d15e8e265b39a6ef968ec4c1cc}{
void {\bfseries add\_\-pim\_\-mre\_\-no\_\-pim\_\-nbr} (\hyperlink{classPimMre}{PimMre} $\ast$pim\_\-mre)}
\label{classPimNode_a2187f1d15e8e265b39a6ef968ec4c1cc}

\item 
\hypertarget{classPimNode_a9c3361a5e0f068fd839b62743ea13741}{
void {\bfseries delete\_\-pim\_\-mre\_\-no\_\-pim\_\-nbr} (\hyperlink{classPimMre}{PimMre} $\ast$pim\_\-mre)}
\label{classPimNode_a9c3361a5e0f068fd839b62743ea13741}

\item 
\hypertarget{classPimNode_ab63af032b3b9e6aeff1bb2bd62655e96}{
list$<$ \hyperlink{classPimNbr}{PimNbr} $\ast$ $>$ \& {\bfseries processing\_\-pim\_\-nbr\_\-list} ()}
\label{classPimNode_ab63af032b3b9e6aeff1bb2bd62655e96}

\item 
\hypertarget{classPimNode_a7a70ade01281270a0e2c40d30465889b}{
void {\bfseries init\_\-processing\_\-pim\_\-mre\_\-rp} (uint32\_\-t vif\_\-index, const \hyperlink{classIPvX}{IPvX} \&pim\_\-nbr\_\-addr)}
\label{classPimNode_a7a70ade01281270a0e2c40d30465889b}

\item 
\hypertarget{classPimNode_a274984b1833cf1da71ea6fa68ceb93a8}{
void {\bfseries init\_\-processing\_\-pim\_\-mre\_\-wc} (uint32\_\-t vif\_\-index, const \hyperlink{classIPvX}{IPvX} \&pim\_\-nbr\_\-addr)}
\label{classPimNode_a274984b1833cf1da71ea6fa68ceb93a8}

\item 
\hypertarget{classPimNode_a26d87ac843522dac3862d77d8fd32856}{
void {\bfseries init\_\-processing\_\-pim\_\-mre\_\-sg} (uint32\_\-t vif\_\-index, const \hyperlink{classIPvX}{IPvX} \&pim\_\-nbr\_\-addr)}
\label{classPimNode_a26d87ac843522dac3862d77d8fd32856}

\item 
\hypertarget{classPimNode_a2bbc8d3a447c2849c4c41ad01cc73e61}{
void {\bfseries init\_\-processing\_\-pim\_\-mre\_\-sg\_\-rpt} (uint32\_\-t vif\_\-index, const \hyperlink{classIPvX}{IPvX} \&pim\_\-nbr\_\-addr)}
\label{classPimNode_a2bbc8d3a447c2849c4c41ad01cc73e61}

\item 
\hypertarget{classPimNode_a5ec67b75a9425263f0329964cc660b8b}{
\hyperlink{classPimNbr}{PimNbr} $\ast$ {\bfseries find\_\-processing\_\-pim\_\-mre\_\-rp} (uint32\_\-t vif\_\-index, const \hyperlink{classIPvX}{IPvX} \&pim\_\-nbr\_\-addr)}
\label{classPimNode_a5ec67b75a9425263f0329964cc660b8b}

\item 
\hypertarget{classPimNode_ac31e7505467289eb3bf3ecbf921ec8c7}{
\hyperlink{classPimNbr}{PimNbr} $\ast$ {\bfseries find\_\-processing\_\-pim\_\-mre\_\-wc} (uint32\_\-t vif\_\-index, const \hyperlink{classIPvX}{IPvX} \&pim\_\-nbr\_\-addr)}
\label{classPimNode_ac31e7505467289eb3bf3ecbf921ec8c7}

\item 
\hypertarget{classPimNode_a54fad6a09289164b88fce9693c72447e}{
\hyperlink{classPimNbr}{PimNbr} $\ast$ {\bfseries find\_\-processing\_\-pim\_\-mre\_\-sg} (uint32\_\-t vif\_\-index, const \hyperlink{classIPvX}{IPvX} \&pim\_\-nbr\_\-addr)}
\label{classPimNode_a54fad6a09289164b88fce9693c72447e}

\item 
\hypertarget{classPimNode_af27e9b0f977914c0ed470956e48c0f31}{
\hyperlink{classPimNbr}{PimNbr} $\ast$ {\bfseries find\_\-processing\_\-pim\_\-mre\_\-sg\_\-rpt} (uint32\_\-t vif\_\-index, const \hyperlink{classIPvX}{IPvX} \&pim\_\-nbr\_\-addr)}
\label{classPimNode_af27e9b0f977914c0ed470956e48c0f31}

\item 
\hypertarget{classPimNode_aec6371f893028ee61f31b3bfc3c53cc1}{
\hyperlink{classConfigParam}{ConfigParam}$<$ bool $>$ \& {\bfseries is\_\-switch\_\-to\_\-spt\_\-enabled} ()}
\label{classPimNode_aec6371f893028ee61f31b3bfc3c53cc1}

\item 
\hypertarget{classPimNode_a9723f251426d774182ffa5161927026a}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ \& {\bfseries switch\_\-to\_\-spt\_\-threshold\_\-interval\_\-sec} ()}
\label{classPimNode_a9723f251426d774182ffa5161927026a}

\item 
\hypertarget{classPimNode_a37ce9dc65be1d3640c2e08db7d8155e1}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ \& {\bfseries switch\_\-to\_\-spt\_\-threshold\_\-bytes} ()}
\label{classPimNode_a37ce9dc65be1d3640c2e08db7d8155e1}

\item 
\hypertarget{classPimNode_abf6a11c3d74a87e764d2ba38d1b38452}{
void {\bfseries clear\_\-pim\_\-statistics} ()}
\label{classPimNode_abf6a11c3d74a87e764d2ba38d1b38452}

\item 
\hypertarget{classPimNode_a1376f757f7f44fd19e60bf73b59901be}{
int {\bfseries clear\_\-pim\_\-statistics\_\-per\_\-vif} (const string \&vif\_\-name, string \&error\_\-msg)}
\label{classPimNode_a1376f757f7f44fd19e60bf73b59901be}

\item 
\hypertarget{classPimNode_a9f00a14b3350a75e9e6ad3dd959758b6}{
uint32\_\-t {\bfseries pimstat\_\-hello\_\-messages\_\-received} () const }
\label{classPimNode_a9f00a14b3350a75e9e6ad3dd959758b6}

\item 
\hypertarget{classPimNode_ab9bfa5748f265311a1458bd31ece87c1}{
uint32\_\-t {\bfseries pimstat\_\-hello\_\-messages\_\-sent} () const }
\label{classPimNode_ab9bfa5748f265311a1458bd31ece87c1}

\item 
\hypertarget{classPimNode_ad8cc9190c6337742f898f42aba043792}{
uint32\_\-t {\bfseries pimstat\_\-hello\_\-messages\_\-rx\_\-errors} () const }
\label{classPimNode_ad8cc9190c6337742f898f42aba043792}

\item 
\hypertarget{classPimNode_a379154a4d0261cb8d0803b619f80ab14}{
uint32\_\-t {\bfseries pimstat\_\-register\_\-messages\_\-received} () const }
\label{classPimNode_a379154a4d0261cb8d0803b619f80ab14}

\item 
\hypertarget{classPimNode_adb26752aa6d3ebd5775890b69c23a8c3}{
uint32\_\-t {\bfseries pimstat\_\-register\_\-messages\_\-sent} () const }
\label{classPimNode_adb26752aa6d3ebd5775890b69c23a8c3}

\item 
\hypertarget{classPimNode_ab26d46949e8832faab3f3707261290f5}{
uint32\_\-t {\bfseries pimstat\_\-register\_\-messages\_\-rx\_\-errors} () const }
\label{classPimNode_ab26d46949e8832faab3f3707261290f5}

\item 
\hypertarget{classPimNode_ac0180bed637198d4b90efe26808cbfbf}{
uint32\_\-t {\bfseries pimstat\_\-register\_\-stop\_\-messages\_\-received} () const }
\label{classPimNode_ac0180bed637198d4b90efe26808cbfbf}

\item 
\hypertarget{classPimNode_a58737a596f5a3c3756adc25b26d781a4}{
uint32\_\-t {\bfseries pimstat\_\-register\_\-stop\_\-messages\_\-sent} () const }
\label{classPimNode_a58737a596f5a3c3756adc25b26d781a4}

\item 
\hypertarget{classPimNode_ab9bd1afd201c72637cd94df0081dbd6f}{
uint32\_\-t {\bfseries pimstat\_\-register\_\-stop\_\-messages\_\-rx\_\-errors} () const }
\label{classPimNode_ab9bd1afd201c72637cd94df0081dbd6f}

\item 
\hypertarget{classPimNode_a1ce65a9ba595bd7769607cacc513747d}{
uint32\_\-t {\bfseries pimstat\_\-join\_\-prune\_\-messages\_\-received} () const }
\label{classPimNode_a1ce65a9ba595bd7769607cacc513747d}

\item 
\hypertarget{classPimNode_abd19e8bad31fea41c631b2a571bbd0dc}{
uint32\_\-t {\bfseries pimstat\_\-join\_\-prune\_\-messages\_\-sent} () const }
\label{classPimNode_abd19e8bad31fea41c631b2a571bbd0dc}

\item 
\hypertarget{classPimNode_aa305663c37abc880dcda3d4cad3e46fa}{
uint32\_\-t {\bfseries pimstat\_\-join\_\-prune\_\-messages\_\-rx\_\-errors} () const }
\label{classPimNode_aa305663c37abc880dcda3d4cad3e46fa}

\item 
\hypertarget{classPimNode_a3fada20e8837d41d6a218f14d0bf3515}{
uint32\_\-t {\bfseries pimstat\_\-bootstrap\_\-messages\_\-received} () const }
\label{classPimNode_a3fada20e8837d41d6a218f14d0bf3515}

\item 
\hypertarget{classPimNode_a79859c8799dd35c1678e6c2f9a90f3b7}{
uint32\_\-t {\bfseries pimstat\_\-bootstrap\_\-messages\_\-sent} () const }
\label{classPimNode_a79859c8799dd35c1678e6c2f9a90f3b7}

\item 
\hypertarget{classPimNode_ac4d530adf0e84361e73a49e7fbfe8218}{
uint32\_\-t {\bfseries pimstat\_\-bootstrap\_\-messages\_\-rx\_\-errors} () const }
\label{classPimNode_ac4d530adf0e84361e73a49e7fbfe8218}

\item 
\hypertarget{classPimNode_aa29a35270c4c0e0e689ac6f9b9b648e1}{
uint32\_\-t {\bfseries pimstat\_\-assert\_\-messages\_\-received} () const }
\label{classPimNode_aa29a35270c4c0e0e689ac6f9b9b648e1}

\item 
\hypertarget{classPimNode_a31f6c39d2066ad90137250e6a8177647}{
uint32\_\-t {\bfseries pimstat\_\-assert\_\-messages\_\-sent} () const }
\label{classPimNode_a31f6c39d2066ad90137250e6a8177647}

\item 
\hypertarget{classPimNode_afbd2d95a6b41ddc9cb081b19dd4404f7}{
uint32\_\-t {\bfseries pimstat\_\-assert\_\-messages\_\-rx\_\-errors} () const }
\label{classPimNode_afbd2d95a6b41ddc9cb081b19dd4404f7}

\item 
\hypertarget{classPimNode_a3bfa5d22bd2cdcebab630f450d88e40c}{
uint32\_\-t {\bfseries pimstat\_\-graft\_\-messages\_\-received} () const }
\label{classPimNode_a3bfa5d22bd2cdcebab630f450d88e40c}

\item 
\hypertarget{classPimNode_aec9b9561d5d199f16abf819d75e36578}{
uint32\_\-t {\bfseries pimstat\_\-graft\_\-messages\_\-sent} () const }
\label{classPimNode_aec9b9561d5d199f16abf819d75e36578}

\item 
\hypertarget{classPimNode_a9990f74e6decbc86c4f2187270466561}{
uint32\_\-t {\bfseries pimstat\_\-graft\_\-messages\_\-rx\_\-errors} () const }
\label{classPimNode_a9990f74e6decbc86c4f2187270466561}

\item 
\hypertarget{classPimNode_a66541d2ee1e35d4d2647c511278f6baf}{
uint32\_\-t {\bfseries pimstat\_\-graft\_\-ack\_\-messages\_\-received} () const }
\label{classPimNode_a66541d2ee1e35d4d2647c511278f6baf}

\item 
\hypertarget{classPimNode_a51bf9573c60024f07bb4d1156451c974}{
uint32\_\-t {\bfseries pimstat\_\-graft\_\-ack\_\-messages\_\-sent} () const }
\label{classPimNode_a51bf9573c60024f07bb4d1156451c974}

\item 
\hypertarget{classPimNode_ad88fdadce89122d7bcbad24bcbd829c9}{
uint32\_\-t {\bfseries pimstat\_\-graft\_\-ack\_\-messages\_\-rx\_\-errors} () const }
\label{classPimNode_ad88fdadce89122d7bcbad24bcbd829c9}

\item 
\hypertarget{classPimNode_af0369207463ebb72e237e951930f2c9b}{
uint32\_\-t {\bfseries pimstat\_\-candidate\_\-rp\_\-messages\_\-received} () const }
\label{classPimNode_af0369207463ebb72e237e951930f2c9b}

\item 
\hypertarget{classPimNode_add1c9b934dfb916882b556bd9ed4b0f4}{
uint32\_\-t {\bfseries pimstat\_\-candidate\_\-rp\_\-messages\_\-sent} () const }
\label{classPimNode_add1c9b934dfb916882b556bd9ed4b0f4}

\item 
\hypertarget{classPimNode_a5ef05eb487c827fcc0e632b3cc3fb9ce}{
uint32\_\-t {\bfseries pimstat\_\-candidate\_\-rp\_\-messages\_\-rx\_\-errors} () const }
\label{classPimNode_a5ef05eb487c827fcc0e632b3cc3fb9ce}

\item 
\hypertarget{classPimNode_a72df80c8b45c800fbaa25f08459efbdb}{
uint32\_\-t {\bfseries pimstat\_\-unknown\_\-type\_\-messages} () const }
\label{classPimNode_a72df80c8b45c800fbaa25f08459efbdb}

\item 
\hypertarget{classPimNode_a59dc76bc3f33fd44e7398bdafc5eb83a}{
uint32\_\-t {\bfseries pimstat\_\-unknown\_\-version\_\-messages} () const }
\label{classPimNode_a59dc76bc3f33fd44e7398bdafc5eb83a}

\item 
\hypertarget{classPimNode_a2dedf29ca047a7b6d99b11aed942fa70}{
uint32\_\-t {\bfseries pimstat\_\-neighbor\_\-unknown\_\-messages} () const }
\label{classPimNode_a2dedf29ca047a7b6d99b11aed942fa70}

\item 
\hypertarget{classPimNode_a2fba945a20f3fb342fb5e497d10b29d7}{
uint32\_\-t {\bfseries pimstat\_\-bad\_\-length\_\-messages} () const }
\label{classPimNode_a2fba945a20f3fb342fb5e497d10b29d7}

\item 
\hypertarget{classPimNode_a6828ec049b5736eb3ea5acfbec8a0f13}{
uint32\_\-t {\bfseries pimstat\_\-bad\_\-checksum\_\-messages} () const }
\label{classPimNode_a6828ec049b5736eb3ea5acfbec8a0f13}

\item 
\hypertarget{classPimNode_af6c29f20030d69880d9cd7f36ccf5b9c}{
uint32\_\-t {\bfseries pimstat\_\-bad\_\-receive\_\-interface\_\-messages} () const }
\label{classPimNode_af6c29f20030d69880d9cd7f36ccf5b9c}

\item 
\hypertarget{classPimNode_a63fcd9180598c7aa46ea18c1ddb46d41}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-interface\_\-disabled\_\-messages} () const }
\label{classPimNode_a63fcd9180598c7aa46ea18c1ddb46d41}

\item 
\hypertarget{classPimNode_acf118023414d5ef3cc169d19134b6453}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-register\_\-not\_\-rp} () const }
\label{classPimNode_acf118023414d5ef3cc169d19134b6453}

\item 
\hypertarget{classPimNode_a04a83be0243992497e7ce6cfcabbb537}{
uint32\_\-t {\bfseries pimstat\_\-rp\_\-filtered\_\-source} () const }
\label{classPimNode_a04a83be0243992497e7ce6cfcabbb537}

\item 
\hypertarget{classPimNode_ac5fef44ee5862912851f552cbd51c8dd}{
uint32\_\-t {\bfseries pimstat\_\-unknown\_\-register\_\-stop} () const }
\label{classPimNode_ac5fef44ee5862912851f552cbd51c8dd}

\item 
\hypertarget{classPimNode_ac87a08ebd5eb922b7ae3dd0da402705d}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-join\_\-prune\_\-no\_\-state} () const }
\label{classPimNode_ac87a08ebd5eb922b7ae3dd0da402705d}

\item 
\hypertarget{classPimNode_ab6a264fcb8c2e72c15826f375e72b330}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-graft\_\-graft\_\-ack\_\-no\_\-state} () const }
\label{classPimNode_ab6a264fcb8c2e72c15826f375e72b330}

\item 
\hypertarget{classPimNode_a75fca228c627cb8ba61d3426383c2c47}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-graft\_\-on\_\-upstream\_\-interface} () const }
\label{classPimNode_a75fca228c627cb8ba61d3426383c2c47}

\item 
\hypertarget{classPimNode_a244c7d13403b265906cffee4b1a9235b}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-candidate\_\-rp\_\-not\_\-bsr} () const }
\label{classPimNode_a244c7d13403b265906cffee4b1a9235b}

\item 
\hypertarget{classPimNode_ad832b6b3fca326a05fb79deaa88f6146}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-bsr\_\-when\_\-bsr} () const }
\label{classPimNode_ad832b6b3fca326a05fb79deaa88f6146}

\item 
\hypertarget{classPimNode_a7cb963069d6296d21d4397b235268f18}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-bsr\_\-not\_\-rpf\_\-interface} () const }
\label{classPimNode_a7cb963069d6296d21d4397b235268f18}

\item 
\hypertarget{classPimNode_a7a55eca5b692a6f92379f8bc1877f999}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-unknown\_\-hello\_\-option} () const }
\label{classPimNode_a7a55eca5b692a6f92379f8bc1877f999}

\item 
\hypertarget{classPimNode_a0a557c745dacf1d3c4eec59a83e99a97}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-data\_\-no\_\-state} () const }
\label{classPimNode_a0a557c745dacf1d3c4eec59a83e99a97}

\item 
\hypertarget{classPimNode_a67a3f0c6dd8cc1aa13aea08b8cead6d2}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-rp\_\-no\_\-state} () const }
\label{classPimNode_a67a3f0c6dd8cc1aa13aea08b8cead6d2}

\item 
\hypertarget{classPimNode_af8beded9fa8a8a2ecb545fe333e9c305}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-aggregate} () const }
\label{classPimNode_af8beded9fa8a8a2ecb545fe333e9c305}

\item 
\hypertarget{classPimNode_a5019e79e0bbe2366e3f0d954a9519d27}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-malformed\_\-packet} () const }
\label{classPimNode_a5019e79e0bbe2366e3f0d954a9519d27}

\item 
\hypertarget{classPimNode_a7b38da5c945d7bfa298146d94ac60f0f}{
uint32\_\-t {\bfseries pimstat\_\-no\_\-rp} () const }
\label{classPimNode_a7b38da5c945d7bfa298146d94ac60f0f}

\item 
\hypertarget{classPimNode_a22e240b8ecdd9ec61076fd0274f36113}{
uint32\_\-t {\bfseries pimstat\_\-no\_\-route\_\-upstream} () const }
\label{classPimNode_a22e240b8ecdd9ec61076fd0274f36113}

\item 
\hypertarget{classPimNode_ad302b2f67cd8f25630c5b25b473cc6bd}{
uint32\_\-t {\bfseries pimstat\_\-rp\_\-mismatch} () const }
\label{classPimNode_ad302b2f67cd8f25630c5b25b473cc6bd}

\item 
\hypertarget{classPimNode_afaf449e2862be76752e00eb1dba28e07}{
uint32\_\-t {\bfseries pimstat\_\-rpf\_\-neighbor\_\-unknown} () const }
\label{classPimNode_afaf449e2862be76752e00eb1dba28e07}

\item 
\hypertarget{classPimNode_a1ecc0391e44edc559a9edf3bd0d70008}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-join\_\-rp} () const }
\label{classPimNode_a1ecc0391e44edc559a9edf3bd0d70008}

\item 
\hypertarget{classPimNode_a240518a5f8d555a81cc46fc6b09591f4}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-prune\_\-rp} () const }
\label{classPimNode_a240518a5f8d555a81cc46fc6b09591f4}

\item 
\hypertarget{classPimNode_a7697593a61e06cccc0212ed15ef72b35}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-join\_\-wc} () const }
\label{classPimNode_a7697593a61e06cccc0212ed15ef72b35}

\item 
\hypertarget{classPimNode_aa2f5ef11bc15fff5acbf5c279a05c472}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-prune\_\-wc} () const }
\label{classPimNode_aa2f5ef11bc15fff5acbf5c279a05c472}

\item 
\hypertarget{classPimNode_a028c8f3360cc4f520447d6d5519b6999}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-join\_\-sg} () const }
\label{classPimNode_a028c8f3360cc4f520447d6d5519b6999}

\item 
\hypertarget{classPimNode_a3e70b442c8b153669f39872e8d339e2d}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-prune\_\-sg} () const }
\label{classPimNode_a3e70b442c8b153669f39872e8d339e2d}

\item 
\hypertarget{classPimNode_a609b4c149082e1c7262c0dc3ff693724}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-join\_\-sg\_\-rpt} () const }
\label{classPimNode_a609b4c149082e1c7262c0dc3ff693724}

\item 
\hypertarget{classPimNode_a88d9810f0cf2b22f5c505f549b6a8727}{
uint32\_\-t {\bfseries pimstat\_\-rx\_\-prune\_\-sg\_\-rpt} () const }
\label{classPimNode_a88d9810f0cf2b22f5c505f549b6a8727}

\item 
\hypertarget{classPimNode_a8b33e6b225a80e8cef87497279e1fb7f}{
int {\bfseries pimstat\_\-hello\_\-messages\_\-received\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a8b33e6b225a80e8cef87497279e1fb7f}

\item 
\hypertarget{classPimNode_a4731f8a0c4e59977b9d637758cff5c2b}{
int {\bfseries pimstat\_\-hello\_\-messages\_\-sent\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a4731f8a0c4e59977b9d637758cff5c2b}

\item 
\hypertarget{classPimNode_a70108a17c73c3fa2658c6f9fa721ac79}{
int {\bfseries pimstat\_\-hello\_\-messages\_\-rx\_\-errors\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a70108a17c73c3fa2658c6f9fa721ac79}

\item 
\hypertarget{classPimNode_a3fd23493b4e5fddae212ca63ab1317c0}{
int {\bfseries pimstat\_\-register\_\-messages\_\-received\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a3fd23493b4e5fddae212ca63ab1317c0}

\item 
\hypertarget{classPimNode_a2a330fddb3ccfcc878b80c397a95b468}{
int {\bfseries pimstat\_\-register\_\-messages\_\-sent\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a2a330fddb3ccfcc878b80c397a95b468}

\item 
\hypertarget{classPimNode_a19fe81edb49e8879e9f2d3dbc8812241}{
int {\bfseries pimstat\_\-register\_\-messages\_\-rx\_\-errors\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a19fe81edb49e8879e9f2d3dbc8812241}

\item 
\hypertarget{classPimNode_ad6584aafdd102e978ee15b369958e609}{
int {\bfseries pimstat\_\-register\_\-stop\_\-messages\_\-received\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_ad6584aafdd102e978ee15b369958e609}

\item 
\hypertarget{classPimNode_a0059f352b73612472c29e3255ac96f35}{
int {\bfseries pimstat\_\-register\_\-stop\_\-messages\_\-sent\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a0059f352b73612472c29e3255ac96f35}

\item 
\hypertarget{classPimNode_ae784cbe73da98d6f602ad05fcbcf4e70}{
int {\bfseries pimstat\_\-register\_\-stop\_\-messages\_\-rx\_\-errors\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_ae784cbe73da98d6f602ad05fcbcf4e70}

\item 
\hypertarget{classPimNode_a2c16dce3f800b84e95220013cfeb6e7b}{
int {\bfseries pimstat\_\-join\_\-prune\_\-messages\_\-received\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a2c16dce3f800b84e95220013cfeb6e7b}

\item 
\hypertarget{classPimNode_ad5f2639cac523495cfb580de6c20539d}{
int {\bfseries pimstat\_\-join\_\-prune\_\-messages\_\-sent\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_ad5f2639cac523495cfb580de6c20539d}

\item 
\hypertarget{classPimNode_ad9a8a72070c62d678a3e1e75ba098b12}{
int {\bfseries pimstat\_\-join\_\-prune\_\-messages\_\-rx\_\-errors\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_ad9a8a72070c62d678a3e1e75ba098b12}

\item 
\hypertarget{classPimNode_a393ec5580ec8c276858788c5f25ad1e2}{
int {\bfseries pimstat\_\-bootstrap\_\-messages\_\-received\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a393ec5580ec8c276858788c5f25ad1e2}

\item 
\hypertarget{classPimNode_a1e0112c549d8ef5e657c2f4ed71c3f10}{
int {\bfseries pimstat\_\-bootstrap\_\-messages\_\-sent\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a1e0112c549d8ef5e657c2f4ed71c3f10}

\item 
\hypertarget{classPimNode_a0603a5fc6b56ce80c7740aba5b732116}{
int {\bfseries pimstat\_\-bootstrap\_\-messages\_\-rx\_\-errors\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a0603a5fc6b56ce80c7740aba5b732116}

\item 
\hypertarget{classPimNode_a5b1a48b61fcf23bb4b1b9345889b134b}{
int {\bfseries pimstat\_\-assert\_\-messages\_\-received\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a5b1a48b61fcf23bb4b1b9345889b134b}

\item 
\hypertarget{classPimNode_a56ed01c8fc593206fac78cc7b409098e}{
int {\bfseries pimstat\_\-assert\_\-messages\_\-sent\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a56ed01c8fc593206fac78cc7b409098e}

\item 
\hypertarget{classPimNode_aea2187650a02958bceee94c09877a6be}{
int {\bfseries pimstat\_\-assert\_\-messages\_\-rx\_\-errors\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_aea2187650a02958bceee94c09877a6be}

\item 
\hypertarget{classPimNode_aa0bdd23f0b75bfcd305427b314cd459c}{
int {\bfseries pimstat\_\-graft\_\-messages\_\-received\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_aa0bdd23f0b75bfcd305427b314cd459c}

\item 
\hypertarget{classPimNode_aac24585b2426a3c4c83fb60f787e6b8d}{
int {\bfseries pimstat\_\-graft\_\-messages\_\-sent\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_aac24585b2426a3c4c83fb60f787e6b8d}

\item 
\hypertarget{classPimNode_ae8cf8919102b329fff6de8cb8cd509bc}{
int {\bfseries pimstat\_\-graft\_\-messages\_\-rx\_\-errors\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_ae8cf8919102b329fff6de8cb8cd509bc}

\item 
\hypertarget{classPimNode_a8f4d2aadca4bae301611bbe05dc0238f}{
int {\bfseries pimstat\_\-graft\_\-ack\_\-messages\_\-received\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a8f4d2aadca4bae301611bbe05dc0238f}

\item 
\hypertarget{classPimNode_a0fb6519ae88fa1586f96d6331ae4f597}{
int {\bfseries pimstat\_\-graft\_\-ack\_\-messages\_\-sent\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a0fb6519ae88fa1586f96d6331ae4f597}

\item 
\hypertarget{classPimNode_a5eadd17d22c6e8781e1455c3144e9b2e}{
int {\bfseries pimstat\_\-graft\_\-ack\_\-messages\_\-rx\_\-errors\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a5eadd17d22c6e8781e1455c3144e9b2e}

\item 
\hypertarget{classPimNode_a89af33faae156cd28f234857d1e43a92}{
int {\bfseries pimstat\_\-candidate\_\-rp\_\-messages\_\-received\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a89af33faae156cd28f234857d1e43a92}

\item 
\hypertarget{classPimNode_ac0d6b981f72174f1ca4b6d877471daff}{
int {\bfseries pimstat\_\-candidate\_\-rp\_\-messages\_\-sent\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_ac0d6b981f72174f1ca4b6d877471daff}

\item 
\hypertarget{classPimNode_aeef1d4d5f020f9e1f2f82b7e81f56249}{
int {\bfseries pimstat\_\-candidate\_\-rp\_\-messages\_\-rx\_\-errors\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_aeef1d4d5f020f9e1f2f82b7e81f56249}

\item 
\hypertarget{classPimNode_aa3d3cf0f0d9d7cdd63156c932dccb39a}{
int {\bfseries pimstat\_\-unknown\_\-type\_\-messages\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_aa3d3cf0f0d9d7cdd63156c932dccb39a}

\item 
\hypertarget{classPimNode_a672d986b16b0531008e2a15ab369c5d8}{
int {\bfseries pimstat\_\-unknown\_\-version\_\-messages\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a672d986b16b0531008e2a15ab369c5d8}

\item 
\hypertarget{classPimNode_a35145baef949bb054ceaf849c95e87b0}{
int {\bfseries pimstat\_\-neighbor\_\-unknown\_\-messages\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a35145baef949bb054ceaf849c95e87b0}

\item 
\hypertarget{classPimNode_a006a00700ec7efbf2d5a6db79bcdb48c}{
int {\bfseries pimstat\_\-bad\_\-length\_\-messages\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a006a00700ec7efbf2d5a6db79bcdb48c}

\item 
\hypertarget{classPimNode_a447d952fc7fbb63641ca0c831486fbf2}{
int {\bfseries pimstat\_\-bad\_\-checksum\_\-messages\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a447d952fc7fbb63641ca0c831486fbf2}

\item 
\hypertarget{classPimNode_a673c63d3697a58796889e90819a42005}{
int {\bfseries pimstat\_\-bad\_\-receive\_\-interface\_\-messages\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a673c63d3697a58796889e90819a42005}

\item 
\hypertarget{classPimNode_abd070ef80cf6da9aa8d462f225406f1b}{
int {\bfseries pimstat\_\-rx\_\-interface\_\-disabled\_\-messages\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_abd070ef80cf6da9aa8d462f225406f1b}

\item 
\hypertarget{classPimNode_a6255c19ffb481dbd6d9cccd6482c47b6}{
int {\bfseries pimstat\_\-rx\_\-register\_\-not\_\-rp\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a6255c19ffb481dbd6d9cccd6482c47b6}

\item 
\hypertarget{classPimNode_a285d0091505630692570b6dfc62f0e9c}{
int {\bfseries pimstat\_\-rp\_\-filtered\_\-source\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a285d0091505630692570b6dfc62f0e9c}

\item 
\hypertarget{classPimNode_a9a876f3dd61d842c5e00fb6e6eb156ef}{
int {\bfseries pimstat\_\-unknown\_\-register\_\-stop\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a9a876f3dd61d842c5e00fb6e6eb156ef}

\item 
\hypertarget{classPimNode_a6765c05d1c06e1416af6f94b279748ce}{
int {\bfseries pimstat\_\-rx\_\-join\_\-prune\_\-no\_\-state\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a6765c05d1c06e1416af6f94b279748ce}

\item 
\hypertarget{classPimNode_a6bac730cfb65178ee482b23a6645c799}{
int {\bfseries pimstat\_\-rx\_\-graft\_\-graft\_\-ack\_\-no\_\-state\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a6bac730cfb65178ee482b23a6645c799}

\item 
\hypertarget{classPimNode_a36a639b4b18beb5cefab43caf4c75b91}{
int {\bfseries pimstat\_\-rx\_\-graft\_\-on\_\-upstream\_\-interface\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a36a639b4b18beb5cefab43caf4c75b91}

\item 
\hypertarget{classPimNode_ab0eda0803a0c81a5b1e79691629a3cf8}{
int {\bfseries pimstat\_\-rx\_\-candidate\_\-rp\_\-not\_\-bsr\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_ab0eda0803a0c81a5b1e79691629a3cf8}

\item 
\hypertarget{classPimNode_a071e1a2b434651a45fd80995bf5e540f}{
int {\bfseries pimstat\_\-rx\_\-bsr\_\-when\_\-bsr\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a071e1a2b434651a45fd80995bf5e540f}

\item 
\hypertarget{classPimNode_aaf49f2426882b01ca970de0dc4f0c00a}{
int {\bfseries pimstat\_\-rx\_\-bsr\_\-not\_\-rpf\_\-interface\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_aaf49f2426882b01ca970de0dc4f0c00a}

\item 
\hypertarget{classPimNode_a7bd0fc399de7fc1d157039c8a249e45f}{
int {\bfseries pimstat\_\-rx\_\-unknown\_\-hello\_\-option\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a7bd0fc399de7fc1d157039c8a249e45f}

\item 
\hypertarget{classPimNode_a210da916a2ce44a38a0e8875214c1d32}{
int {\bfseries pimstat\_\-rx\_\-data\_\-no\_\-state\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a210da916a2ce44a38a0e8875214c1d32}

\item 
\hypertarget{classPimNode_ab39a7658294c7a3db9c983fc5f28b944}{
int {\bfseries pimstat\_\-rx\_\-rp\_\-no\_\-state\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_ab39a7658294c7a3db9c983fc5f28b944}

\item 
\hypertarget{classPimNode_af0d4c8fb0d37e859cdc08aa013f08e9a}{
int {\bfseries pimstat\_\-rx\_\-aggregate\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_af0d4c8fb0d37e859cdc08aa013f08e9a}

\item 
\hypertarget{classPimNode_a9da52787f4e7b8272aa81084fb2f2862}{
int {\bfseries pimstat\_\-rx\_\-malformed\_\-packet\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a9da52787f4e7b8272aa81084fb2f2862}

\item 
\hypertarget{classPimNode_a1c50a989e715b81963671ee7f1a0a0fc}{
int {\bfseries pimstat\_\-no\_\-rp\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a1c50a989e715b81963671ee7f1a0a0fc}

\item 
\hypertarget{classPimNode_aad8eff00ec9b25758a31dc13a60c0b5d}{
int {\bfseries pimstat\_\-no\_\-route\_\-upstream\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_aad8eff00ec9b25758a31dc13a60c0b5d}

\item 
\hypertarget{classPimNode_aab4c879518501a4aaa4e013bdc56016e}{
int {\bfseries pimstat\_\-rp\_\-mismatch\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_aab4c879518501a4aaa4e013bdc56016e}

\item 
\hypertarget{classPimNode_a0608d1876dc3116b838e8dab9af6e4ca}{
int {\bfseries pimstat\_\-rpf\_\-neighbor\_\-unknown\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a0608d1876dc3116b838e8dab9af6e4ca}

\item 
\hypertarget{classPimNode_a69db75afcd949cf7bbfe4f29b71ecd45}{
int {\bfseries pimstat\_\-rx\_\-join\_\-rp\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a69db75afcd949cf7bbfe4f29b71ecd45}

\item 
\hypertarget{classPimNode_a004bd5e66b0ca737056eb576ff6fdfe3}{
int {\bfseries pimstat\_\-rx\_\-prune\_\-rp\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a004bd5e66b0ca737056eb576ff6fdfe3}

\item 
\hypertarget{classPimNode_a47169837d8666ee9771b5dcd0448c9a5}{
int {\bfseries pimstat\_\-rx\_\-join\_\-wc\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a47169837d8666ee9771b5dcd0448c9a5}

\item 
\hypertarget{classPimNode_aa9ce5ff7527d729577fceab8f8d2d3e2}{
int {\bfseries pimstat\_\-rx\_\-prune\_\-wc\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_aa9ce5ff7527d729577fceab8f8d2d3e2}

\item 
\hypertarget{classPimNode_afcf1b677593e1611b060cc06209a840d}{
int {\bfseries pimstat\_\-rx\_\-join\_\-sg\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_afcf1b677593e1611b060cc06209a840d}

\item 
\hypertarget{classPimNode_a04dca223c641171f5808747346f25deb}{
int {\bfseries pimstat\_\-rx\_\-prune\_\-sg\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a04dca223c641171f5808747346f25deb}

\item 
\hypertarget{classPimNode_acd255842350868810ffa4a41d433d512}{
int {\bfseries pimstat\_\-rx\_\-join\_\-sg\_\-rpt\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_acd255842350868810ffa4a41d433d512}

\item 
\hypertarget{classPimNode_a8e6cd4c5ee27ff37ae5bdb1cfc73a82b}{
int {\bfseries pimstat\_\-rx\_\-prune\_\-sg\_\-rpt\_\-per\_\-vif} (const string \&vif\_\-name, uint32\_\-t \&result, string \&error\_\-msg) const }
\label{classPimNode_a8e6cd4c5ee27ff37ae5bdb1cfc73a82b}

\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classPimNode_a2e5881bb93029b2a141b22f7f2ccdd12}{
void {\bfseries tree\_\-complete} ()}
\label{classPimNode_a2e5881bb93029b2a141b22f7f2ccdd12}

\item 
\hypertarget{classPimNode_afceaa7c9705902be07f37b44e5717347}{
void {\bfseries updates\_\-made} ()}
\label{classPimNode_afceaa7c9705902be07f37b44e5717347}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{classPimNode_aa4f4e68c59057aed33848d26d27210f3}{status\_\-change} (\hyperlink{classServiceBase}{ServiceBase} $\ast$service, ServiceStatus old\_\-status, ServiceStatus new\_\-status)
\begin{DoxyCompactList}\small\item\em A method invoked when \hyperlink{protocolthe-p}{the} status of a service changes. \item\end{DoxyCompactList}\item 
virtual const \hyperlink{classServiceBase}{ServiceBase} $\ast$ \hyperlink{classPimNode_ab42599ee2d43f4aa5e98163a7c7906a5}{ifmgr\_\-mirror\_\-service\_\-base} () const =0
\begin{DoxyCompactList}\small\item\em Get a reference to \hyperlink{protocolthe-p}{the} service base of \hyperlink{protocolthe-p}{the} interface manager. \item\end{DoxyCompactList}\item 
virtual const \hyperlink{classIfMgrIfTree}{IfMgrIfTree} \& \hyperlink{classPimNode_a116e815bc28f7d60581e82d2e64c96ca}{ifmgr\_\-iftree} () const =0
\begin{DoxyCompactList}\small\item\em Get a reference to \hyperlink{protocolthe-p}{the} interface manager tree. \item\end{DoxyCompactList}\item 
virtual void \hyperlink{classPimNode_a43a2c1bc188f14fce4548b0583c0b1d0}{fea\_\-register\_\-startup} ()=0
\begin{DoxyCompactList}\small\item\em Initiate registration with \hyperlink{protocolthe-p}{the} FEA. \item\end{DoxyCompactList}\item 
virtual void \hyperlink{classPimNode_afd8d685e7bf61b19b92ad85613bf4af8}{mfea\_\-register\_\-startup} ()=0
\begin{DoxyCompactList}\small\item\em Initiate registration with \hyperlink{protocolthe-p}{the} MFEA. \item\end{DoxyCompactList}\item 
virtual void \hyperlink{classPimNode_afe6b8a98defe4627acc5c630fec42acb}{rib\_\-register\_\-startup} ()=0
\begin{DoxyCompactList}\small\item\em Initiate registration with \hyperlink{protocolthe-p}{the} \hyperlink{classRIB}{RIB}. \item\end{DoxyCompactList}\item 
virtual void \hyperlink{classPimNode_a4a8625613f73593d807fe6d131625291}{fea\_\-register\_\-shutdown} ()=0
\begin{DoxyCompactList}\small\item\em Initiate de-\/registration with \hyperlink{protocolthe-p}{the} FEA. \item\end{DoxyCompactList}\item 
virtual void \hyperlink{classPimNode_a600cee5cf7f07de75c347ed3946530fc}{mfea\_\-register\_\-shutdown} ()=0
\begin{DoxyCompactList}\small\item\em Initiate de-\/registration with \hyperlink{protocolthe-p}{the} MFEA. \item\end{DoxyCompactList}\item 
virtual void \hyperlink{classPimNode_a5155a18e94bac9e77882d688aeeae5f9}{rib\_\-register\_\-shutdown} ()=0
\begin{DoxyCompactList}\small\item\em Initiate de-\/registration with \hyperlink{protocolthe-p}{the} \hyperlink{classRIB}{RIB}. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classPimNode_a9c367083e6a7094c54f95f967cd0a208}{
\hyperlink{classPimMrt}{PimMrt} {\bfseries \_\-pim\_\-mrt}}
\label{classPimNode_a9c367083e6a7094c54f95f967cd0a208}

\item 
\hypertarget{classPimNode_a9eee44576d4f6e9cf259838b6000052b}{
\hyperlink{classPimMribTable}{PimMribTable} {\bfseries \_\-pim\_\-mrib\_\-table}}
\label{classPimNode_a9eee44576d4f6e9cf259838b6000052b}

\item 
\hypertarget{classPimNode_aabbd95a3278457faaa754baf84c5140f}{
\hyperlink{classRpTable}{RpTable} {\bfseries \_\-rp\_\-table}}
\label{classPimNode_aabbd95a3278457faaa754baf84c5140f}

\item 
\hypertarget{classPimNode_a4e1fee4acdd3e37420cbd6e0c57452a1}{
\hyperlink{classPimScopeZoneTable}{PimScopeZoneTable} {\bfseries \_\-pim\_\-scope\_\-zone\_\-table}}
\label{classPimNode_a4e1fee4acdd3e37420cbd6e0c57452a1}

\item 
\hypertarget{classPimNode_a42ec9a341a2f3c30397a4ec3f9b6bba5}{
\hyperlink{classPimBsr}{PimBsr} {\bfseries \_\-pim\_\-bsr}}
\label{classPimNode_a42ec9a341a2f3c30397a4ec3f9b6bba5}

\item 
\hypertarget{classPimNode_aeb4233ec21df1b63dfaf67bbd5fe81a8}{
uint32\_\-t {\bfseries \_\-pim\_\-register\_\-vif\_\-index}}
\label{classPimNode_aeb4233ec21df1b63dfaf67bbd5fe81a8}

\item 
\hypertarget{classPimNode_a4e2a2b297d58a328ccab91a0f7557dc8}{
Mifset {\bfseries \_\-pim\_\-vifs\_\-dr}}
\label{classPimNode_a4e2a2b297d58a328ccab91a0f7557dc8}

\item 
\hypertarget{classPimNode_a56482631b63e940ec603bcd070f6d4c5}{
\hyperlink{structbuffer__}{buffer\_\-t} $\ast$ {\bfseries \_\-buffer\_\-recv}}
\label{classPimNode_a56482631b63e940ec603bcd070f6d4c5}

\item 
\hypertarget{classPimNode_aeff71a297abad491cf0e8c7f63332f3c}{
list$<$ \hyperlink{classPimNbr}{PimNbr} $\ast$ $>$ {\bfseries \_\-processing\_\-pim\_\-nbr\_\-list}}
\label{classPimNode_aeff71a297abad491cf0e8c7f63332f3c}

\item 
\hypertarget{classPimNode_ae01f1e9aa6d6ba62f4966047c2e63440}{
\hyperlink{classConfigParam}{ConfigParam}$<$ bool $>$ {\bfseries \_\-is\_\-switch\_\-to\_\-spt\_\-enabled}}
\label{classPimNode_ae01f1e9aa6d6ba62f4966047c2e63440}

\item 
\hypertarget{classPimNode_a857a42d9edd0fdf713ccd876f8e9c93c}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-switch\_\-to\_\-spt\_\-threshold\_\-interval\_\-sec}}
\label{classPimNode_a857a42d9edd0fdf713ccd876f8e9c93c}

\item 
\hypertarget{classPimNode_a253f057f106d5c87cb517101dfc032c1}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-switch\_\-to\_\-spt\_\-threshold\_\-bytes}}
\label{classPimNode_a253f057f106d5c87cb517101dfc032c1}

\item 
\hypertarget{classPimNode_a83442a1a45b4e4d01c983058540f1124}{
\hyperlink{classIfMgrIfTree}{IfMgrIfTree} {\bfseries \_\-iftree}}
\label{classPimNode_a83442a1a45b4e4d01c983058540f1124}

\item 
\hypertarget{classPimNode_a9147d429de56f4abdf6e575b3481cba4}{
bool {\bfseries \_\-is\_\-log\_\-trace}}
\label{classPimNode_a9147d429de56f4abdf6e575b3481cba4}

\item 
\hypertarget{classPimNode_a7a1792d00b31d274a2268eaf7bc95901}{
list$<$ \hyperlink{classPimJpHeader}{PimJpHeader} $>$ {\bfseries \_\-test\_\-jp\_\-headers\_\-list}}
\label{classPimNode_a7a1792d00b31d274a2268eaf7bc95901}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
The PIM node class. There should be one node per PIM instance. There should be one instance per address family. 

\subsection{Constructor \& Destructor Documentation}
\hypertarget{classPimNode_aab78eef06e4350e2f35886e14e41d407}{
\index{PimNode@{PimNode}!PimNode@{PimNode}}
\index{PimNode@{PimNode}!PimNode@{PimNode}}
\subsubsection[{PimNode}]{\setlength{\rightskip}{0pt plus 5cm}PimNode::PimNode (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{xorp\_\-module\_\-id}]{module\_\-id, }
\item[{{\bf EventLoop} \&}]{eventloop}
\end{DoxyParamCaption}
)}}
\label{classPimNode_aab78eef06e4350e2f35886e14e41d407}


Constructor for a given address family, module ID, and event loop. 

\hyperlink{classPimNode_aab78eef06e4350e2f35886e14e41d407}{PimNode::PimNode}: : The address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively).


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em module\_\-id} & \hyperlink{protocolthe-p}{the} module ID (xorp\_\-module\_\-id). Should be XORP\_\-MODULE\_\-PIMSM Note: if/after PIM-\/DM is implemented, XORP\_\-MODULE\_\-PIMDM would be allowed as well. \\
\hline
{\em eventloop} & \hyperlink{protocolthe-p}{the} event loop to use.\\
\hline
\end{DoxyParams}
: The module ID (must be either XORP\_\-MODULE\_\-PIMSM or XORP\_\-MODULE\_\-PIMDM). TODO: XXX: XORP\_\-MODULE\_\-PIMDM is not implemented yet. : The event loop.

PIM node constructor. \hypertarget{classPimNode_a0abbdfd79634ee3901732c38d228a9d0}{
\index{PimNode@{PimNode}!$\sim$PimNode@{$\sim$PimNode}}
\index{$\sim$PimNode@{$\sim$PimNode}!PimNode@{PimNode}}
\subsubsection[{$\sim$PimNode}]{\setlength{\rightskip}{0pt plus 5cm}PimNode::$\sim$PimNode (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classPimNode_a0abbdfd79634ee3901732c38d228a9d0}


Destructor. 

\hyperlink{classPimNode_a0abbdfd79634ee3901732c38d228a9d0}{PimNode::$\sim$PimNode}: @:

PIM node destructor. 

\subsection{Member Function Documentation}
\hypertarget{classPimNode_ae15d4b9ef2c793b9f9bdaeaf3779e26d}{
\index{PimNode@{PimNode}!add\_\-dataflow\_\-monitor@{add\_\-dataflow\_\-monitor}}
\index{add\_\-dataflow\_\-monitor@{add\_\-dataflow\_\-monitor}!PimNode@{PimNode}}
\subsubsection[{add\_\-dataflow\_\-monitor}]{\setlength{\rightskip}{0pt plus 5cm}virtual int PimNode::add\_\-dataflow\_\-monitor (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{source\_\-addr, }
\item[{const {\bf IPvX} \&}]{group\_\-addr, }
\item[{uint32\_\-t}]{threshold\_\-interval\_\-sec, }
\item[{uint32\_\-t}]{threshold\_\-interval\_\-usec, }
\item[{uint32\_\-t}]{threshold\_\-packets, }
\item[{uint32\_\-t}]{threshold\_\-bytes, }
\item[{bool}]{is\_\-threshold\_\-in\_\-packets, }
\item[{bool}]{is\_\-threshold\_\-in\_\-bytes, }
\item[{bool}]{is\_\-geq\_\-upcall, }
\item[{bool}]{is\_\-leq\_\-upcall}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classPimNode_ae15d4b9ef2c793b9f9bdaeaf3779e26d}


Add a dataflow monitor to \hyperlink{protocolthe-p}{the} MFEA. 

This is a pure virtual function, and it must be implemented by \hyperlink{protocolthe-p}{the} communication-\/wrapper class that inherits this base class.

Note: either is\_\-threshold\_\-in\_\-packets or is\_\-threshold\_\-in\_\-bytes (or both) must be true. Note: either is\_\-geq\_\-upcall or is\_\-leq\_\-upcall (but not both) must be true.


\begin{DoxyParams}{Parameters}
{\em source} & \hyperlink{protocolthe-p}{the} source address.\\
\hline
{\em group} & \hyperlink{protocolthe-p}{the} group address.\\
\hline
{\em threshold\_\-interval\_\-sec} & \hyperlink{protocolthe-p}{the} dataflow threshold interval (seconds).\\
\hline
{\em threshold\_\-interval\_\-usec} & \hyperlink{protocolthe-p}{the} dataflow threshold interval (microseconds).\\
\hline
{\em threshold\_\-packets} & \hyperlink{protocolthe-p}{the} threshold (in number of packets) to compare against.\\
\hline
{\em threshold\_\-bytes} & \hyperlink{protocolthe-p}{the} threshold (in number of bytes) to compare against.\\
\hline
{\em is\_\-threshold\_\-in\_\-packets} & if true, threshold\_\-packets is valid.\\
\hline
{\em is\_\-threshold\_\-in\_\-bytes} & if true, threshold\_\-bytes is valid.\\
\hline
{\em is\_\-geq\_\-upcall} & if true, \hyperlink{protocolthe-p}{the} operation for comparison is \char`\"{}$>$=\char`\"{}.\\
\hline
{\em is\_\-leq\_\-upcall} & if true, \hyperlink{protocolthe-p}{the} operation for comparison is \char`\"{}$<$=\char`\"{}.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implemented in \hyperlink{classXrlPimNode_ac3b7dc32f981cc51f25e484b6a274f7a}{XrlPimNode}.

\hypertarget{classPimNode_a7165562445dd638e9ee0c396a7a5effd}{
\index{PimNode@{PimNode}!add\_\-membership@{add\_\-membership}}
\index{add\_\-membership@{add\_\-membership}!PimNode@{PimNode}}
\subsubsection[{add\_\-membership}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::add\_\-membership (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{vif\_\-index, }
\item[{const {\bf IPvX} \&}]{source, }
\item[{const {\bf IPvX} \&}]{group}
\end{DoxyParamCaption}
)}}
\label{classPimNode_a7165562445dd638e9ee0c396a7a5effd}


Receive \char`\"{}add membership\char`\"{} from \hyperlink{protocolthe-p}{the} MLD/IGMP module. 

\hyperlink{classPimNode_a7165562445dd638e9ee0c396a7a5effd}{PimNode::add\_\-membership}: : The vif\_\-index of \hyperlink{protocolthe-p}{the} interface to add membership.


\begin{DoxyParams}{Parameters}
{\em vif\_\-index} & \hyperlink{protocolthe-p}{the} vif index of \hyperlink{protocolthe-p}{the} interface with membership change. \\
\hline
{\em source} & \hyperlink{protocolthe-p}{the} source address of \hyperlink{protocolthe-p}{the} (S,G) or ($\ast$,G) entry that has changed membership. In case of Any-\/Source Multicast, it is \hyperlink{classIPvX_aba7dce7144be6617538811e770c26cbd}{IPvX::ZERO()}. \\
\hline
{\em group} & \hyperlink{protocolthe-p}{the} group address. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
: The source address to add membership for (\hyperlink{classIPvX_aba7dce7144be6617538811e770c26cbd}{IPvX::ZERO()} for IGMPv1,2 and MLDv1). : The group address to add membership for.

Add multicast membership on vif with vif\_\-index of  for source address of  and group address of .

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimNode_abc56320ad85f953faa22db6202cf0769}{
\index{PimNode@{PimNode}!add\_\-mfc\_\-to\_\-kernel@{add\_\-mfc\_\-to\_\-kernel}}
\index{add\_\-mfc\_\-to\_\-kernel@{add\_\-mfc\_\-to\_\-kernel}!PimNode@{PimNode}}
\subsubsection[{add\_\-mfc\_\-to\_\-kernel}]{\setlength{\rightskip}{0pt plus 5cm}virtual int PimNode::add\_\-mfc\_\-to\_\-kernel (
\begin{DoxyParamCaption}
\item[{const {\bf PimMfc} \&}]{pim\_\-mfc}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classPimNode_abc56320ad85f953faa22db6202cf0769}


Add a Multicast Forwarding Cache to \hyperlink{protocolthe-p}{the} kernel. 

This is a pure virtual function, and it must be implemented by \hyperlink{protocolthe-p}{the} communication-\/wrapper class that inherits this base class.


\begin{DoxyParams}{Parameters}
{\em pim\_\-mfc} & \hyperlink{protocolthe-p}{the} \hyperlink{classPimMfc}{PimMfc} entry to add. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implemented in \hyperlink{classXrlPimNode_a78d9eac34aa57dddb8388909bacecf05}{XrlPimNode}.

\hypertarget{classPimNode_a0fc0636ebc875f540bec5f007d8779f5}{
\index{PimNode@{PimNode}!add\_\-protocol\_\-mld6igmp@{add\_\-protocol\_\-mld6igmp}}
\index{add\_\-protocol\_\-mld6igmp@{add\_\-protocol\_\-mld6igmp}!PimNode@{PimNode}}
\subsubsection[{add\_\-protocol\_\-mld6igmp}]{\setlength{\rightskip}{0pt plus 5cm}virtual int PimNode::add\_\-protocol\_\-mld6igmp (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{vif\_\-index}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classPimNode_a0fc0636ebc875f540bec5f007d8779f5}


Register this protocol with \hyperlink{protocolthe-p}{the} MLD/IGMP module. 

This is a pure virtual function, and it must be implemented by \hyperlink{protocolthe-p}{the} communication-\/wrapper class that inherits this base class.

By registering this protocol with \hyperlink{protocolthe-p}{the} MLD/IGMP module, it will be notified about multicast group membership events.


\begin{DoxyParams}{Parameters}
{\em vif\_\-index} & \hyperlink{protocolthe-p}{the} vif index of \hyperlink{protocolthe-p}{the} interface to register with \hyperlink{protocolthe-p}{the} MLD/IGMP module.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implemented in \hyperlink{classXrlPimNode_afb2b9c1bd68484fc6cd467d8e6e43b5c}{XrlPimNode}.

\hypertarget{classPimNode_aff5f868d66c37fd8d48ea2d3694b561e}{
\index{PimNode@{PimNode}!add\_\-vif@{add\_\-vif}}
\index{add\_\-vif@{add\_\-vif}!PimNode@{PimNode}}
\subsubsection[{add\_\-vif}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::add\_\-vif (
\begin{DoxyParamCaption}
\item[{const {\bf Vif} \&}]{vif, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPimNode_aff5f868d66c37fd8d48ea2d3694b561e}


Install a new PIM vif. 

\hyperlink{classPimNode_aff5f868d66c37fd8d48ea2d3694b561e}{PimNode::add\_\-vif}: : Information about \hyperlink{protocolthe-p}{the} new \hyperlink{classPimVif}{PimVif} to install.


\begin{DoxyParams}{Parameters}
{\em vif} & vif information about \hyperlink{protocolthe-p}{the} new \hyperlink{classPimVif}{PimVif} to install. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
: The error message (if error).

Install a new PIM vif.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimNode_aa19ecd50e4e1a2bfb441173474b6a8a7}{
\index{PimNode@{PimNode}!add\_\-vif@{add\_\-vif}}
\index{add\_\-vif@{add\_\-vif}!PimNode@{PimNode}}
\subsubsection[{add\_\-vif}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::add\_\-vif (
\begin{DoxyParamCaption}
\item[{const string \&}]{vif\_\-name, }
\item[{uint32\_\-t}]{vif\_\-index, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPimNode_aa19ecd50e4e1a2bfb441173474b6a8a7}


Install a new PIM vif. 

\hyperlink{classPimNode_aff5f868d66c37fd8d48ea2d3694b561e}{PimNode::add\_\-vif}: : The name of \hyperlink{protocolthe-p}{the} new vif.


\begin{DoxyParams}{Parameters}
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} new vif. \\
\hline
{\em vif\_\-index} & \hyperlink{protocolthe-p}{the} vif index of \hyperlink{protocolthe-p}{the} new vif. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
: The vif index of \hyperlink{protocolthe-p}{the} new vif. : The error message (if error).

Install a new PIM vif. If \hyperlink{protocolthe-p}{the} vif exists, nothing is installed.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimNode_a3be499c2fe99838eb1fe4960585071e8}{
\index{PimNode@{PimNode}!add\_\-vif\_\-addr@{add\_\-vif\_\-addr}}
\index{add\_\-vif\_\-addr@{add\_\-vif\_\-addr}!PimNode@{PimNode}}
\subsubsection[{add\_\-vif\_\-addr}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::add\_\-vif\_\-addr (
\begin{DoxyParamCaption}
\item[{const string \&}]{vif\_\-name, }
\item[{const {\bf IPvX} \&}]{addr, }
\item[{const {\bf IPvXNet} \&}]{subnet\_\-addr, }
\item[{const {\bf IPvX} \&}]{broadcast\_\-addr, }
\item[{const {\bf IPvX} \&}]{peer\_\-addr, }
\item[{bool \&}]{should\_\-send\_\-pim\_\-hello, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPimNode_a3be499c2fe99838eb1fe4960585071e8}


Add a new address to a vif, or update an existing address. 


\begin{DoxyParams}{Parameters}
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} vif. \\
\hline
{\em addr} & \hyperlink{protocolthe-p}{the} unicast address to add. \\
\hline
{\em subnet\_\-addr} & \hyperlink{protocolthe-p}{the} subnet address to add. \\
\hline
{\em broadcast\_\-addr} & \hyperlink{protocolthe-p}{the} broadcast address (when applicable). \\
\hline
{\em peer\_\-addr} & \hyperlink{protocolthe-p}{the} peer address (when applicable). \\
\hline
{\em should\_\-send\_\-pim\_\-hello} & a return-\/by-\/reference flag that is set to true if \hyperlink{protocolthe-p}{the} caller should send a PIM Hello message. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classPimNode_a2d40a762404fdde8d96e01594ea665ed}{
\index{PimNode@{PimNode}!apply\_\-bsr\_\-changes@{apply\_\-bsr\_\-changes}}
\index{apply\_\-bsr\_\-changes@{apply\_\-bsr\_\-changes}!PimNode@{PimNode}}
\subsubsection[{apply\_\-bsr\_\-changes}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::apply\_\-bsr\_\-changes (
\begin{DoxyParamCaption}
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPimNode_a2d40a762404fdde8d96e01594ea665ed}


Apply BSR configuration changes. 


\begin{DoxyParams}{Parameters}
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classPimNode_a423b3dfbc1989581a869ddde1a6e1de5}{
\index{PimNode@{PimNode}!delete\_\-all\_\-dataflow\_\-monitor@{delete\_\-all\_\-dataflow\_\-monitor}}
\index{delete\_\-all\_\-dataflow\_\-monitor@{delete\_\-all\_\-dataflow\_\-monitor}!PimNode@{PimNode}}
\subsubsection[{delete\_\-all\_\-dataflow\_\-monitor}]{\setlength{\rightskip}{0pt plus 5cm}virtual int PimNode::delete\_\-all\_\-dataflow\_\-monitor (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{source\_\-addr, }
\item[{const {\bf IPvX} \&}]{group\_\-addr}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classPimNode_a423b3dfbc1989581a869ddde1a6e1de5}


Delete all dataflow monitors for a given source and group address from \hyperlink{protocolthe-p}{the} MFEA. 

This is a pure virtual function, and it must be implemented by \hyperlink{protocolthe-p}{the} communication-\/wrapper class that inherits this base class.


\begin{DoxyParams}{Parameters}
{\em source\_\-addr} & \hyperlink{protocolthe-p}{the} source address. \\
\hline
{\em group\_\-addr} & \hyperlink{protocolthe-p}{the} group address. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implemented in \hyperlink{classXrlPimNode_aa725bd6e786022d213dbbd0d3dc50f04}{XrlPimNode}.

\hypertarget{classPimNode_a7459ba0a29daf21261442a3bc27cf6e6}{
\index{PimNode@{PimNode}!delete\_\-all\_\-vifs@{delete\_\-all\_\-vifs}}
\index{delete\_\-all\_\-vifs@{delete\_\-all\_\-vifs}!PimNode@{PimNode}}
\subsubsection[{delete\_\-all\_\-vifs}]{\setlength{\rightskip}{0pt plus 5cm}void PimNode::delete\_\-all\_\-vifs (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classPimNode_a7459ba0a29daf21261442a3bc27cf6e6}


Delete all PIM vifs. 

\hyperlink{classPimNode_a7459ba0a29daf21261442a3bc27cf6e6}{PimNode::delete\_\-all\_\-vifs}: @: \hypertarget{classPimNode_a37d5c4a37727ecac00d4e83e3c72a313}{
\index{PimNode@{PimNode}!delete\_\-dataflow\_\-monitor@{delete\_\-dataflow\_\-monitor}}
\index{delete\_\-dataflow\_\-monitor@{delete\_\-dataflow\_\-monitor}!PimNode@{PimNode}}
\subsubsection[{delete\_\-dataflow\_\-monitor}]{\setlength{\rightskip}{0pt plus 5cm}virtual int PimNode::delete\_\-dataflow\_\-monitor (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{source\_\-addr, }
\item[{const {\bf IPvX} \&}]{group\_\-addr, }
\item[{uint32\_\-t}]{threshold\_\-interval\_\-sec, }
\item[{uint32\_\-t}]{threshold\_\-interval\_\-usec, }
\item[{uint32\_\-t}]{threshold\_\-packets, }
\item[{uint32\_\-t}]{threshold\_\-bytes, }
\item[{bool}]{is\_\-threshold\_\-in\_\-packets, }
\item[{bool}]{is\_\-threshold\_\-in\_\-bytes, }
\item[{bool}]{is\_\-geq\_\-upcall, }
\item[{bool}]{is\_\-leq\_\-upcall}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classPimNode_a37d5c4a37727ecac00d4e83e3c72a313}


Delete a dataflow monitor from \hyperlink{protocolthe-p}{the} MFEA. 

This is a pure virtual function, and it must be implemented by \hyperlink{protocolthe-p}{the} communication-\/wrapper class that inherits this base class.

Note: either is\_\-threshold\_\-in\_\-packets or is\_\-threshold\_\-in\_\-bytes (or both) must be true. Note: either is\_\-geq\_\-upcall or is\_\-leq\_\-upcall (but not both) must be true.


\begin{DoxyParams}{Parameters}
{\em source} & \hyperlink{protocolthe-p}{the} source address.\\
\hline
{\em group} & \hyperlink{protocolthe-p}{the} group address.\\
\hline
{\em threshold\_\-interval\_\-sec} & \hyperlink{protocolthe-p}{the} dataflow threshold interval (seconds).\\
\hline
{\em threshold\_\-interval\_\-usec} & \hyperlink{protocolthe-p}{the} dataflow threshold interval (microseconds).\\
\hline
{\em threshold\_\-packets} & \hyperlink{protocolthe-p}{the} threshold (in number of packets) to compare against.\\
\hline
{\em threshold\_\-bytes} & \hyperlink{protocolthe-p}{the} threshold (in number of bytes) to compare against.\\
\hline
{\em is\_\-threshold\_\-in\_\-packets} & if true, threshold\_\-packets is valid.\\
\hline
{\em is\_\-threshold\_\-in\_\-bytes} & if true, threshold\_\-bytes is valid.\\
\hline
{\em is\_\-geq\_\-upcall} & if true, \hyperlink{protocolthe-p}{the} operation for comparison is \char`\"{}$>$=\char`\"{}.\\
\hline
{\em is\_\-leq\_\-upcall} & if true, \hyperlink{protocolthe-p}{the} operation for comparison is \char`\"{}$<$=\char`\"{}.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implemented in \hyperlink{classXrlPimNode_a89d5ac669e243c9155fdf2728ea9d81e}{XrlPimNode}.

\hypertarget{classPimNode_a43dd766d7d2e529ec1a048720fa3ba72}{
\index{PimNode@{PimNode}!delete\_\-membership@{delete\_\-membership}}
\index{delete\_\-membership@{delete\_\-membership}!PimNode@{PimNode}}
\subsubsection[{delete\_\-membership}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::delete\_\-membership (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{vif\_\-index, }
\item[{const {\bf IPvX} \&}]{source, }
\item[{const {\bf IPvX} \&}]{group}
\end{DoxyParamCaption}
)}}
\label{classPimNode_a43dd766d7d2e529ec1a048720fa3ba72}


Receive \char`\"{}delete membership\char`\"{} from \hyperlink{protocolthe-p}{the} MLD/IGMP module. 

\hyperlink{classPimNode_a43dd766d7d2e529ec1a048720fa3ba72}{PimNode::delete\_\-membership}: : The vif\_\-index of \hyperlink{protocolthe-p}{the} interface to delete membership.


\begin{DoxyParams}{Parameters}
{\em vif\_\-index} & \hyperlink{protocolthe-p}{the} vif index of \hyperlink{protocolthe-p}{the} interface with membership change. \\
\hline
{\em source} & \hyperlink{protocolthe-p}{the} source address of \hyperlink{protocolthe-p}{the} (S,G) or ($\ast$,G) entry that has changed membership. In case of Any-\/Source Multicast, it is \hyperlink{classIPvX_aba7dce7144be6617538811e770c26cbd}{IPvX::ZERO()}. \\
\hline
{\em group} & \hyperlink{protocolthe-p}{the} group address. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
: The source address to delete membership for (\hyperlink{classIPvX_aba7dce7144be6617538811e770c26cbd}{IPvX::ZERO()} for IGMPv1,2 and MLDv1). : The group address to delete membership for.

Delete multicast membership on vif with vif\_\-index of  for source address of  and group address of .

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimNode_acd4adf41efbff7dd4df2f921f29745ec}{
\index{PimNode@{PimNode}!delete\_\-mfc\_\-from\_\-kernel@{delete\_\-mfc\_\-from\_\-kernel}}
\index{delete\_\-mfc\_\-from\_\-kernel@{delete\_\-mfc\_\-from\_\-kernel}!PimNode@{PimNode}}
\subsubsection[{delete\_\-mfc\_\-from\_\-kernel}]{\setlength{\rightskip}{0pt plus 5cm}virtual int PimNode::delete\_\-mfc\_\-from\_\-kernel (
\begin{DoxyParamCaption}
\item[{const {\bf PimMfc} \&}]{pim\_\-mfc}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classPimNode_acd4adf41efbff7dd4df2f921f29745ec}


Delete a Multicast Forwarding Cache to \hyperlink{protocolthe-p}{the} kernel. 

This is a pure virtual function, and it must be implemented by \hyperlink{protocolthe-p}{the} communication-\/wrapper class that inherits this base class.


\begin{DoxyParams}{Parameters}
{\em pim\_\-mfc} & \hyperlink{protocolthe-p}{the} \hyperlink{classPimMfc}{PimMfc} entry to delete. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implemented in \hyperlink{classXrlPimNode_a3d5567a487b1d128fa108cfe1f2247e0}{XrlPimNode}.

\hypertarget{classPimNode_a890373e9b390876c2116b44e8b35a7bc}{
\index{PimNode@{PimNode}!delete\_\-protocol\_\-mld6igmp@{delete\_\-protocol\_\-mld6igmp}}
\index{delete\_\-protocol\_\-mld6igmp@{delete\_\-protocol\_\-mld6igmp}!PimNode@{PimNode}}
\subsubsection[{delete\_\-protocol\_\-mld6igmp}]{\setlength{\rightskip}{0pt plus 5cm}virtual int PimNode::delete\_\-protocol\_\-mld6igmp (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{vif\_\-index}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classPimNode_a890373e9b390876c2116b44e8b35a7bc}


Deregister this protocol with \hyperlink{protocolthe-p}{the} MLD/IGMP module. 

This is a pure virtual function, and it must be implemented by \hyperlink{protocolthe-p}{the} communication-\/wrapper class that inherits this base class.


\begin{DoxyParams}{Parameters}
{\em vif\_\-index} & \hyperlink{protocolthe-p}{the} vif index of \hyperlink{protocolthe-p}{the} interface to deregister with \hyperlink{protocolthe-p}{the} MLD/IGMP module.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implemented in \hyperlink{classXrlPimNode_a7e4c2d7e29ad30905ba37f01938a6448}{XrlPimNode}.

\hypertarget{classPimNode_ad36f081459344f18f4fb9bbe6ba8741d}{
\index{PimNode@{PimNode}!delete\_\-vif@{delete\_\-vif}}
\index{delete\_\-vif@{delete\_\-vif}!PimNode@{PimNode}}
\subsubsection[{delete\_\-vif}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::delete\_\-vif (
\begin{DoxyParamCaption}
\item[{const string \&}]{vif\_\-name, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPimNode_ad36f081459344f18f4fb9bbe6ba8741d}


Delete an existing PIM vif. 

\hyperlink{classPimNode_ad36f081459344f18f4fb9bbe6ba8741d}{PimNode::delete\_\-vif}: : The name of \hyperlink{protocolthe-p}{the} vif to delete.


\begin{DoxyParams}{Parameters}
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} vif to delete. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
: The error message (if error).

Delete an existing PIM vif.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimNode_a197a1a722ff3779a781ee1c7fdce2325}{
\index{PimNode@{PimNode}!delete\_\-vif\_\-addr@{delete\_\-vif\_\-addr}}
\index{delete\_\-vif\_\-addr@{delete\_\-vif\_\-addr}!PimNode@{PimNode}}
\subsubsection[{delete\_\-vif\_\-addr}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::delete\_\-vif\_\-addr (
\begin{DoxyParamCaption}
\item[{const string \&}]{vif\_\-name, }
\item[{const {\bf IPvX} \&}]{addr, }
\item[{bool \&}]{should\_\-send\_\-pim\_\-hello, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPimNode_a197a1a722ff3779a781ee1c7fdce2325}


Delete an address from a vif. 


\begin{DoxyParams}{Parameters}
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} vif. \\
\hline
{\em addr} & \hyperlink{protocolthe-p}{the} unicast address to delete. \\
\hline
{\em should\_\-send\_\-pim\_\-hello} & a return-\/by-\/reference flag that is set to true if \hyperlink{protocolthe-p}{the} caller should send a PIM Hello message. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classPimNode_ac5642f25b0777a619dbe596f0f71d8e0}{
\index{PimNode@{PimNode}!disable@{disable}}
\index{disable@{disable}!PimNode@{PimNode}}
\subsubsection[{disable}]{\setlength{\rightskip}{0pt plus 5cm}void PimNode::disable (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classPimNode_ac5642f25b0777a619dbe596f0f71d8e0}


Disable node operation. 

Disable \hyperlink{protocolthe-p}{the} node operation.

If an unit is disabled, it cannot be start or pending-\/start. If \hyperlink{protocolthe-p}{the} unit was runnning, it will be stop first. 

Reimplemented from \hyperlink{classProtoState_a42bbb9a9fa9588ec66f62d99644f3c48}{ProtoState}.

\hypertarget{classPimNode_a5823a0f5ff12c3f1b903ca69638aff09}{
\index{PimNode@{PimNode}!disable\_\-all\_\-vifs@{disable\_\-all\_\-vifs}}
\index{disable\_\-all\_\-vifs@{disable\_\-all\_\-vifs}!PimNode@{PimNode}}
\subsubsection[{disable\_\-all\_\-vifs}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::disable\_\-all\_\-vifs (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classPimNode_a5823a0f5ff12c3f1b903ca69638aff09}


Disable PIM on all interfaces. 

\hyperlink{classPimNode_a5823a0f5ff12c3f1b903ca69638aff09}{PimNode::disable\_\-all\_\-vifs}: @:

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
Disable PIM on all interfaces. All running interfaces are stopped first.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimNode_a83c91e79473d82ab03fde6b3782ee666}{
\index{PimNode@{PimNode}!disable\_\-vif@{disable\_\-vif}}
\index{disable\_\-vif@{disable\_\-vif}!PimNode@{PimNode}}
\subsubsection[{disable\_\-vif}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::disable\_\-vif (
\begin{DoxyParamCaption}
\item[{const string \&}]{vif\_\-name, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPimNode_a83c91e79473d82ab03fde6b3782ee666}


Disable an existing PIM vif. 

\hyperlink{classPimNode_a83c91e79473d82ab03fde6b3782ee666}{PimNode::disable\_\-vif}: : The name of \hyperlink{protocolthe-p}{the} vif to disable.


\begin{DoxyParams}{Parameters}
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} vif to disable. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
: The error message (if error).

Disable an existing PIM vif.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimNode_a1d8d864c70280d793d597ae14fd07136}{
\index{PimNode@{PimNode}!enable@{enable}}
\index{enable@{enable}!PimNode@{PimNode}}
\subsubsection[{enable}]{\setlength{\rightskip}{0pt plus 5cm}void PimNode::enable (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classPimNode_a1d8d864c70280d793d597ae14fd07136}


Enable node operation. 

Enable \hyperlink{protocolthe-p}{the} node operation.

If an unit is not enabled, it cannot be start, or pending-\/start. 

Reimplemented from \hyperlink{classProtoState_a9e91d1d442f873cf6bf914db996519e7}{ProtoState}.

\hypertarget{classPimNode_a030676d2355a812da166a238aa3ccb2a}{
\index{PimNode@{PimNode}!enable\_\-all\_\-vifs@{enable\_\-all\_\-vifs}}
\index{enable\_\-all\_\-vifs@{enable\_\-all\_\-vifs}!PimNode@{PimNode}}
\subsubsection[{enable\_\-all\_\-vifs}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::enable\_\-all\_\-vifs (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classPimNode_a030676d2355a812da166a238aa3ccb2a}


Enable PIM on all interfaces. 

\hyperlink{classPimNode_a030676d2355a812da166a238aa3ccb2a}{PimNode::enable\_\-all\_\-vifs}: @:

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
Enable PIM on all interfaces.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimNode_abac0b1699f8b3724cf23c6c0a9e686ea}{
\index{PimNode@{PimNode}!enable\_\-vif@{enable\_\-vif}}
\index{enable\_\-vif@{enable\_\-vif}!PimNode@{PimNode}}
\subsubsection[{enable\_\-vif}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::enable\_\-vif (
\begin{DoxyParamCaption}
\item[{const string \&}]{vif\_\-name, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPimNode_abac0b1699f8b3724cf23c6c0a9e686ea}


Enable an existing PIM vif. 

\hyperlink{classPimNode_abac0b1699f8b3724cf23c6c0a9e686ea}{PimNode::enable\_\-vif}: : The name of \hyperlink{protocolthe-p}{the} vif to enable.


\begin{DoxyParams}{Parameters}
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} vif to enable. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
: The error message (if error).

Enable an existing PIM vif.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimNode_a4a8625613f73593d807fe6d131625291}{
\index{PimNode@{PimNode}!fea\_\-register\_\-shutdown@{fea\_\-register\_\-shutdown}}
\index{fea\_\-register\_\-shutdown@{fea\_\-register\_\-shutdown}!PimNode@{PimNode}}
\subsubsection[{fea\_\-register\_\-shutdown}]{\setlength{\rightskip}{0pt plus 5cm}virtual void PimNode::fea\_\-register\_\-shutdown (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private, pure virtual\mbox{]}}}}
\label{classPimNode_a4a8625613f73593d807fe6d131625291}


Initiate de-\/registration with \hyperlink{protocolthe-p}{the} FEA. 

This is a pure virtual function, and it must be implemented by \hyperlink{protocolthe-p}{the} communication-\/wrapper class that inherits this base class. 

Implemented in \hyperlink{classXrlPimNode_a3ccf4c45457dd55557cadebb36699257}{XrlPimNode}.

\hypertarget{classPimNode_a43a2c1bc188f14fce4548b0583c0b1d0}{
\index{PimNode@{PimNode}!fea\_\-register\_\-startup@{fea\_\-register\_\-startup}}
\index{fea\_\-register\_\-startup@{fea\_\-register\_\-startup}!PimNode@{PimNode}}
\subsubsection[{fea\_\-register\_\-startup}]{\setlength{\rightskip}{0pt plus 5cm}virtual void PimNode::fea\_\-register\_\-startup (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private, pure virtual\mbox{]}}}}
\label{classPimNode_a43a2c1bc188f14fce4548b0583c0b1d0}


Initiate registration with \hyperlink{protocolthe-p}{the} FEA. 

This is a pure virtual function, and it must be implemented by \hyperlink{protocolthe-p}{the} communication-\/wrapper class that inherits this base class. 

Implemented in \hyperlink{classXrlPimNode_a2f041b19a0d33e668256149085472e11}{XrlPimNode}.

\hypertarget{classPimNode_a0183c5a412f0a7e79cb4e32aadd12e0d}{
\index{PimNode@{PimNode}!final\_\-start@{final\_\-start}}
\index{final\_\-start@{final\_\-start}!PimNode@{PimNode}}
\subsubsection[{final\_\-start}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::final\_\-start (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classPimNode_a0183c5a412f0a7e79cb4e32aadd12e0d}


Completely start \hyperlink{protocolthe-p}{the} node operation. 

\hyperlink{classPimNode_a0183c5a412f0a7e79cb4e32aadd12e0d}{PimNode::final\_\-start}: @:

This method should be called internally after \hyperlink{classPimNode_a44f8ed1e771b4aa6167cd25b887d8fdc}{PimNode::start()} to complete \hyperlink{protocolthe-p}{the} job.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
Complete \hyperlink{protocolthe-p}{the} start-\/up of \hyperlink{protocolthe-p}{the} PIM protocol.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimNode_ab49d94a8471376202edde99988ee1261}{
\index{PimNode@{PimNode}!final\_\-stop@{final\_\-stop}}
\index{final\_\-stop@{final\_\-stop}!PimNode@{PimNode}}
\subsubsection[{final\_\-stop}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::final\_\-stop (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classPimNode_ab49d94a8471376202edde99988ee1261}


Completely stop \hyperlink{protocolthe-p}{the} node operation. 

\hyperlink{classPimNode_ab49d94a8471376202edde99988ee1261}{PimNode::final\_\-stop}: @:

This method should be called internally after \hyperlink{classPimNode_a436d2c9d77ad3fcedc7a738d4ac678e0}{PimNode::stop()} to complete \hyperlink{protocolthe-p}{the} job.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
Completely stop \hyperlink{protocolthe-p}{the} PIM protocol.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimNode_a93f108a56e2acb8f31c18a78ab6e6009}{
\index{PimNode@{PimNode}!get\_\-vif\_\-proto\_\-version@{get\_\-vif\_\-proto\_\-version}}
\index{get\_\-vif\_\-proto\_\-version@{get\_\-vif\_\-proto\_\-version}!PimNode@{PimNode}}
\subsubsection[{get\_\-vif\_\-proto\_\-version}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::get\_\-vif\_\-proto\_\-version (
\begin{DoxyParamCaption}
\item[{const string \&}]{vif\_\-name, }
\item[{int \&}]{proto\_\-version, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPimNode_a93f108a56e2acb8f31c18a78ab6e6009}


Get \hyperlink{protocolthe-p}{the} protocol version on an interface. 


\begin{DoxyParams}{Parameters}
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} vif to get \hyperlink{protocolthe-p}{the} protocol version of. \\
\hline
{\em proto\_\-version} & \hyperlink{protocolthe-p}{the} return-\/by-\/reference protocol version. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classPimNode_a116e815bc28f7d60581e82d2e64c96ca}{
\index{PimNode@{PimNode}!ifmgr\_\-iftree@{ifmgr\_\-iftree}}
\index{ifmgr\_\-iftree@{ifmgr\_\-iftree}!PimNode@{PimNode}}
\subsubsection[{ifmgr\_\-iftree}]{\setlength{\rightskip}{0pt plus 5cm}virtual const {\bf IfMgrIfTree}\& PimNode::ifmgr\_\-iftree (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private, pure virtual\mbox{]}}}}
\label{classPimNode_a116e815bc28f7d60581e82d2e64c96ca}


Get a reference to \hyperlink{protocolthe-p}{the} interface manager tree. 

This is a pure virtual function, and it must be implemented by \hyperlink{protocolthe-p}{the} communication-\/wrapper class that inherits this base class.

\begin{DoxyReturn}{Returns}
a reference to \hyperlink{protocolthe-p}{the} interface manager tree. 
\end{DoxyReturn}


Implemented in \hyperlink{classXrlPimNode_aed2b9924496440c255a9dcf7d332bf35}{XrlPimNode}.

\hypertarget{classPimNode_ab42599ee2d43f4aa5e98163a7c7906a5}{
\index{PimNode@{PimNode}!ifmgr\_\-mirror\_\-service\_\-base@{ifmgr\_\-mirror\_\-service\_\-base}}
\index{ifmgr\_\-mirror\_\-service\_\-base@{ifmgr\_\-mirror\_\-service\_\-base}!PimNode@{PimNode}}
\subsubsection[{ifmgr\_\-mirror\_\-service\_\-base}]{\setlength{\rightskip}{0pt plus 5cm}virtual const {\bf ServiceBase}$\ast$ PimNode::ifmgr\_\-mirror\_\-service\_\-base (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private, pure virtual\mbox{]}}}}
\label{classPimNode_ab42599ee2d43f4aa5e98163a7c7906a5}


Get a reference to \hyperlink{protocolthe-p}{the} service base of \hyperlink{protocolthe-p}{the} interface manager. 

This is a pure virtual function, and it must be implemented by \hyperlink{protocolthe-p}{the} communication-\/wrapper class that inherits this base class.

\begin{DoxyReturn}{Returns}
a reference to \hyperlink{protocolthe-p}{the} service base of \hyperlink{protocolthe-p}{the} interface manager. 
\end{DoxyReturn}


Implemented in \hyperlink{classXrlPimNode_a00c2a62ea24990d051c84a926d680105}{XrlPimNode}.

\hypertarget{classPimNode_aa71e4bfa9c44b002f6738a4b9756dbd6}{
\index{PimNode@{PimNode}!ip\_\-protocol\_\-number@{ip\_\-protocol\_\-number}}
\index{ip\_\-protocol\_\-number@{ip\_\-protocol\_\-number}!PimNode@{PimNode}}
\subsubsection[{ip\_\-protocol\_\-number}]{\setlength{\rightskip}{0pt plus 5cm}uint8\_\-t PimNode::ip\_\-protocol\_\-number (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classPimNode_aa71e4bfa9c44b002f6738a4b9756dbd6}


Get \hyperlink{protocolthe-p}{the} IP protocol number. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} IP protocol number. 
\end{DoxyReturn}
\hypertarget{classPimNode_a751f62e8e1953ed62e35d2dcb6c8e207}{
\index{PimNode@{PimNode}!is\_\-directly\_\-connected@{is\_\-directly\_\-connected}}
\index{is\_\-directly\_\-connected@{is\_\-directly\_\-connected}!PimNode@{PimNode}}
\subsubsection[{is\_\-directly\_\-connected}]{\setlength{\rightskip}{0pt plus 5cm}bool PimNode::is\_\-directly\_\-connected (
\begin{DoxyParamCaption}
\item[{const {\bf PimVif} \&}]{pim\_\-vif, }
\item[{const {\bf IPvX} \&}]{ipaddr\_\-test}
\end{DoxyParamCaption}
) const}}
\label{classPimNode_a751f62e8e1953ed62e35d2dcb6c8e207}


Test if an address is directly connected to a specified virtual interface. 

\hyperlink{classPimNode_a751f62e8e1953ed62e35d2dcb6c8e207}{PimNode::is\_\-directly\_\-connected}: : The virtual interface to test against.

Note that \hyperlink{protocolthe-p}{the} virtual interface \hyperlink{protocolthe-p}{the} address is directly connected to must be UP.


\begin{DoxyParams}{Parameters}
{\em pim\_\-vif} & \hyperlink{protocolthe-p}{the} virtual interface to test against. \\
\hline
{\em ipaddr\_\-test} & \hyperlink{protocolthe-p}{the} address to test. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if ipaddr\_\-test is directly connected to vif, otherwise false.
\end{DoxyReturn}
: The address to test.

Note that \hyperlink{protocolthe-p}{the} virtual interface \hyperlink{protocolthe-p}{the} address is directly connected to must be UP.

Return value: True if  is directly connected to , otherwise false. \hypertarget{classPimNode_a582022816af9b2ed895cdae94b5dad38}{
\index{PimNode@{PimNode}!is\_\-log\_\-trace@{is\_\-log\_\-trace}}
\index{is\_\-log\_\-trace@{is\_\-log\_\-trace}!PimNode@{PimNode}}
\subsubsection[{is\_\-log\_\-trace}]{\setlength{\rightskip}{0pt plus 5cm}bool PimNode::is\_\-log\_\-trace (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPimNode_a582022816af9b2ed895cdae94b5dad38}


Test if trace log is enabled. 

This method is used to test whether to output trace log debug messges.

\begin{DoxyReturn}{Returns}
true if trace log is enabled, otherwise false. 
\end{DoxyReturn}
\hypertarget{classPimNode_a2d571b7f146e9cd262e4a4cd8bde94a9}{
\index{PimNode@{PimNode}!join\_\-multicast\_\-group@{join\_\-multicast\_\-group}}
\index{join\_\-multicast\_\-group@{join\_\-multicast\_\-group}!PimNode@{PimNode}}
\subsubsection[{join\_\-multicast\_\-group}]{\setlength{\rightskip}{0pt plus 5cm}virtual int PimNode::join\_\-multicast\_\-group (
\begin{DoxyParamCaption}
\item[{const string \&}]{if\_\-name, }
\item[{const string \&}]{vif\_\-name, }
\item[{uint8\_\-t}]{ip\_\-protocol, }
\item[{const {\bf IPvX} \&}]{group\_\-address}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classPimNode_a2d571b7f146e9cd262e4a4cd8bde94a9}


Join a multicast group on an interface. 

This is a pure virtual function, and it must be implemented by \hyperlink{protocolthe-p}{the} communication-\/wrapper class that inherits this base class.

TODO: add a source address as well!!


\begin{DoxyParams}{Parameters}
{\em if\_\-name} & \hyperlink{protocolthe-p}{the} interface name to join. \\
\hline
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} vif name to join. \\
\hline
{\em ip\_\-protocol} & \hyperlink{protocolthe-p}{the} IP protocol number that \hyperlink{protocolthe-p}{the} receiver is interested in. \\
\hline
{\em group\_\-address} & \hyperlink{protocolthe-p}{the} multicast group address to join. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implemented in \hyperlink{classXrlPimNode_ab8949707b9c2089aa8baa3261bb4042b}{XrlPimNode}.

\hypertarget{classPimNode_a32847bab9d2ab568947adf0373b95259}{
\index{PimNode@{PimNode}!leave\_\-multicast\_\-group@{leave\_\-multicast\_\-group}}
\index{leave\_\-multicast\_\-group@{leave\_\-multicast\_\-group}!PimNode@{PimNode}}
\subsubsection[{leave\_\-multicast\_\-group}]{\setlength{\rightskip}{0pt plus 5cm}virtual int PimNode::leave\_\-multicast\_\-group (
\begin{DoxyParamCaption}
\item[{const string \&}]{if\_\-name, }
\item[{const string \&}]{vif\_\-name, }
\item[{uint8\_\-t}]{ip\_\-protocol, }
\item[{const {\bf IPvX} \&}]{group\_\-address}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classPimNode_a32847bab9d2ab568947adf0373b95259}


Leave a multicast group on an interface. 

This is a pure virtual function, and it must be implemented by \hyperlink{protocolthe-p}{the} communication-\/wrapper class that inherits this base class.

TODO: add a source address as well!!


\begin{DoxyParams}{Parameters}
{\em if\_\-name} & \hyperlink{protocolthe-p}{the} interface name to leave. \\
\hline
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} vif name to leave. \\
\hline
{\em ip\_\-protocol} & \hyperlink{protocolthe-p}{the} IP protocol number that \hyperlink{protocolthe-p}{the} receiver is not interested in anymore. \\
\hline
{\em group\_\-address} & \hyperlink{protocolthe-p}{the} multicast group address to leave. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implemented in \hyperlink{classXrlPimNode_a3a7a644238487c1e6c9c6bda5e4981c1}{XrlPimNode}.

\hypertarget{classPimNode_a600cee5cf7f07de75c347ed3946530fc}{
\index{PimNode@{PimNode}!mfea\_\-register\_\-shutdown@{mfea\_\-register\_\-shutdown}}
\index{mfea\_\-register\_\-shutdown@{mfea\_\-register\_\-shutdown}!PimNode@{PimNode}}
\subsubsection[{mfea\_\-register\_\-shutdown}]{\setlength{\rightskip}{0pt plus 5cm}virtual void PimNode::mfea\_\-register\_\-shutdown (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private, pure virtual\mbox{]}}}}
\label{classPimNode_a600cee5cf7f07de75c347ed3946530fc}


Initiate de-\/registration with \hyperlink{protocolthe-p}{the} MFEA. 

This is a pure virtual function, and it must be implemented by \hyperlink{protocolthe-p}{the} communication-\/wrapper class that inherits this base class. 

Implemented in \hyperlink{classXrlPimNode_adc6bb14d8ac8b21f0106c1d69f655567}{XrlPimNode}.

\hypertarget{classPimNode_afd8d685e7bf61b19b92ad85613bf4af8}{
\index{PimNode@{PimNode}!mfea\_\-register\_\-startup@{mfea\_\-register\_\-startup}}
\index{mfea\_\-register\_\-startup@{mfea\_\-register\_\-startup}!PimNode@{PimNode}}
\subsubsection[{mfea\_\-register\_\-startup}]{\setlength{\rightskip}{0pt plus 5cm}virtual void PimNode::mfea\_\-register\_\-startup (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private, pure virtual\mbox{]}}}}
\label{classPimNode_afd8d685e7bf61b19b92ad85613bf4af8}


Initiate registration with \hyperlink{protocolthe-p}{the} MFEA. 

This is a pure virtual function, and it must be implemented by \hyperlink{protocolthe-p}{the} communication-\/wrapper class that inherits this base class. 

Implemented in \hyperlink{classXrlPimNode_a7b07792e448a1fc06081481f635a74dc}{XrlPimNode}.

\hypertarget{classPimNode_aecc54bf8dd77caeec772ff4f3fad3ab2}{
\index{PimNode@{PimNode}!pim\_\-bsr@{pim\_\-bsr}}
\index{pim\_\-bsr@{pim\_\-bsr}!PimNode@{PimNode}}
\subsubsection[{pim\_\-bsr}]{\setlength{\rightskip}{0pt plus 5cm}{\bf PimBsr}\& PimNode::pim\_\-bsr (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPimNode_aecc54bf8dd77caeec772ff4f3fad3ab2}


Get \hyperlink{protocolthe-p}{the} PIM Bootstrap entity. 

\begin{DoxyReturn}{Returns}
a reference to \hyperlink{protocolthe-p}{the} PIM Bootstrap entity (\hyperlink{classPimBsr}{PimBsr}). 
\end{DoxyReturn}
\hypertarget{classPimNode_a117f2060c96804fead5f545965d7ae8c}{
\index{PimNode@{PimNode}!pim\_\-mrib\_\-table@{pim\_\-mrib\_\-table}}
\index{pim\_\-mrib\_\-table@{pim\_\-mrib\_\-table}!PimNode@{PimNode}}
\subsubsection[{pim\_\-mrib\_\-table}]{\setlength{\rightskip}{0pt plus 5cm}{\bf PimMribTable}\& PimNode::pim\_\-mrib\_\-table (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPimNode_a117f2060c96804fead5f545965d7ae8c}


Get \hyperlink{protocolthe-p}{the} table with \hyperlink{protocolthe-p}{the} Multicast \hyperlink{classRouting}{Routing} Information Base used by PIM. 

\begin{DoxyReturn}{Returns}
a reference to \hyperlink{protocolthe-p}{the} table with \hyperlink{protocolthe-p}{the} Multicast \hyperlink{classRouting}{Routing} Information Base used by PIM (\hyperlink{classPimMribTable}{PimMribTable}). 
\end{DoxyReturn}
\hypertarget{classPimNode_add29fc00ce41af02417b26113fb481f7}{
\index{PimNode@{PimNode}!pim\_\-mrt@{pim\_\-mrt}}
\index{pim\_\-mrt@{pim\_\-mrt}!PimNode@{PimNode}}
\subsubsection[{pim\_\-mrt}]{\setlength{\rightskip}{0pt plus 5cm}{\bf PimMrt}\& PimNode::pim\_\-mrt (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPimNode_add29fc00ce41af02417b26113fb481f7}


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

\begin{DoxyReturn}{Returns}
a reference to \hyperlink{protocolthe-p}{the} PIM Multicast \hyperlink{classRouting}{Routing} Table (\hyperlink{classPimMrt}{PimMrt}). 
\end{DoxyReturn}
\hypertarget{classPimNode_af53f0a1ae2e1fce6ea5273e9b57f84cf}{
\index{PimNode@{PimNode}!pim\_\-nbr\_\-find\_\-global@{pim\_\-nbr\_\-find\_\-global}}
\index{pim\_\-nbr\_\-find\_\-global@{pim\_\-nbr\_\-find\_\-global}!PimNode@{PimNode}}
\subsubsection[{pim\_\-nbr\_\-find\_\-global}]{\setlength{\rightskip}{0pt plus 5cm}{\bf PimNbr} $\ast$ PimNode::pim\_\-nbr\_\-find\_\-global (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{nbr\_\-addr}
\end{DoxyParamCaption}
)}}
\label{classPimNode_af53f0a1ae2e1fce6ea5273e9b57f84cf}


Find a PIM neighbor by its address. 

\hyperlink{classPimNode_af53f0a1ae2e1fce6ea5273e9b57f84cf}{PimNode::pim\_\-nbr\_\-find\_\-global}: : The address of \hyperlink{protocolthe-p}{the} neighbor to search for.

Note: this method should be used in very limited cases, because in case of \hyperlink{classIPv6}{IPv6} a neighbor's IP address may be non-\/unique within \hyperlink{protocolthe-p}{the} PIM neighbor database due to scope issues.


\begin{DoxyParams}{Parameters}
{\em nbr\_\-addr} & \hyperlink{protocolthe-p}{the} address of \hyperlink{protocolthe-p}{the} PIM neighbor. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} PIM neighbor (\hyperlink{classPimNbr}{PimNbr}) if found, otherwise NULL.
\end{DoxyReturn}
Find a PIM neighbor by its address.

Note: this method should be used in very limited cases, because in case of \hyperlink{classIPv6}{IPv6} a neighbor's IP address may not be unique within \hyperlink{protocolthe-p}{the} PIM neighbor database due to scope issues.

Return value: The \hyperlink{classPimNbr}{PimNbr} entry for \hyperlink{protocolthe-p}{the} neighbor if found, otherwise NULL. \hypertarget{classPimNode_ab610cf3fb04b2713cbf21bf12e212f14}{
\index{PimNode@{PimNode}!pim\_\-nbr\_\-rpf\_\-find@{pim\_\-nbr\_\-rpf\_\-find}}
\index{pim\_\-nbr\_\-rpf\_\-find@{pim\_\-nbr\_\-rpf\_\-find}!PimNode@{PimNode}}
\subsubsection[{pim\_\-nbr\_\-rpf\_\-find}]{\setlength{\rightskip}{0pt plus 5cm}{\bf PimNbr} $\ast$ PimNode::pim\_\-nbr\_\-rpf\_\-find (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{dst\_\-addr}
\end{DoxyParamCaption}
)}}
\label{classPimNode_ab610cf3fb04b2713cbf21bf12e212f14}


Find \hyperlink{protocolthe-p}{the} RPF PIM neighbor for a given destination address. 

\hyperlink{classPimNode_ab610cf3fb04b2713cbf21bf12e212f14}{PimNode::pim\_\-nbr\_\-rpf\_\-find}: : The address of \hyperlink{protocolthe-p}{the} destination to search for.


\begin{DoxyParams}{Parameters}
{\em dst\_\-addr} & \hyperlink{protocolthe-p}{the} destination address to lookup. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} RPF PIM neighbor (\hyperlink{classPimNbr}{PimNbr}) toward dst\_\-addr if found, otherwise NULL.
\end{DoxyReturn}
Find \hyperlink{protocolthe-p}{the} RPF PIM neighbor for a destination address.

Return value: The \hyperlink{classPimNbr}{PimNbr} entry for \hyperlink{protocolthe-p}{the} RPF neighbor to  if found, otherwise NULL. \hypertarget{classPimNode_a0c24dd0d2646c9f6bec9c5108ccad3b1}{
\index{PimNode@{PimNode}!pim\_\-nbr\_\-rpf\_\-find@{pim\_\-nbr\_\-rpf\_\-find}}
\index{pim\_\-nbr\_\-rpf\_\-find@{pim\_\-nbr\_\-rpf\_\-find}!PimNode@{PimNode}}
\subsubsection[{pim\_\-nbr\_\-rpf\_\-find}]{\setlength{\rightskip}{0pt plus 5cm}{\bf PimNbr} $\ast$ PimNode::pim\_\-nbr\_\-rpf\_\-find (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{dst\_\-addr, }
\item[{const {\bf Mrib} $\ast$}]{mrib}
\end{DoxyParamCaption}
)}}
\label{classPimNode_a0c24dd0d2646c9f6bec9c5108ccad3b1}


Find \hyperlink{protocolthe-p}{the} RPF PIM neighbor for a given destination address, and already known \hyperlink{classMrib}{Mrib} entry. 

\hyperlink{classPimNode_ab610cf3fb04b2713cbf21bf12e212f14}{PimNode::pim\_\-nbr\_\-rpf\_\-find}: : The address of \hyperlink{protocolthe-p}{the} destination to search for.


\begin{DoxyParams}{Parameters}
{\em dst\_\-addr} & \hyperlink{protocolthe-p}{the} destination address to lookup. \\
\hline
{\em mrib} & \hyperlink{protocolthe-p}{the} already known \hyperlink{classMrib}{Mrib} entry. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} RPF PIM neighbor (\hyperlink{classPimNbr}{PimNbr}) toward dst\_\-addr if found, otherwise NULL.
\end{DoxyReturn}
: The MRIB information that was lookup already.

Find \hyperlink{protocolthe-p}{the} RPF PIM neighbor for a destination address by using \hyperlink{protocolthe-p}{the} information in a pre-\/lookup MRIB.

Return value: The \hyperlink{classPimNbr}{PimNbr} entry for \hyperlink{protocolthe-p}{the} RPF neighbor to  if found, otherwise NULL. \hypertarget{classPimNode_ab1c5330ab9566ac565c2b44751ed6631}{
\index{PimNode@{PimNode}!pim\_\-register\_\-vif\_\-index@{pim\_\-register\_\-vif\_\-index}}
\index{pim\_\-register\_\-vif\_\-index@{pim\_\-register\_\-vif\_\-index}!PimNode@{PimNode}}
\subsubsection[{pim\_\-register\_\-vif\_\-index}]{\setlength{\rightskip}{0pt plus 5cm}uint32\_\-t PimNode::pim\_\-register\_\-vif\_\-index (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPimNode_ab1c5330ab9566ac565c2b44751ed6631}


Get \hyperlink{protocolthe-p}{the} vif index of \hyperlink{protocolthe-p}{the} PIM-\/Register virtual interface. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} vif index of \hyperlink{protocolthe-p}{the} PIM-\/Register virtual interface if exists, otherwise Vif::VIF\_\-INDEX\_\-INVALID. 
\end{DoxyReturn}
\hypertarget{classPimNode_a06bb92ba33b4f3f156a1c2ebe1ce1901}{
\index{PimNode@{PimNode}!pim\_\-scope\_\-zone\_\-table@{pim\_\-scope\_\-zone\_\-table}}
\index{pim\_\-scope\_\-zone\_\-table@{pim\_\-scope\_\-zone\_\-table}!PimNode@{PimNode}}
\subsubsection[{pim\_\-scope\_\-zone\_\-table}]{\setlength{\rightskip}{0pt plus 5cm}{\bf PimScopeZoneTable}\& PimNode::pim\_\-scope\_\-zone\_\-table (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPimNode_a06bb92ba33b4f3f156a1c2ebe1ce1901}


Get \hyperlink{protocolthe-p}{the} PIM Scope-\/Zone table. 

\begin{DoxyReturn}{Returns}
a reference to \hyperlink{protocolthe-p}{the} PIM Scope-\/Zone table. 
\end{DoxyReturn}
\hypertarget{classPimNode_a4ea6f5138db961a4f9ccc4e8c052943c}{
\index{PimNode@{PimNode}!pim\_\-send@{pim\_\-send}}
\index{pim\_\-send@{pim\_\-send}!PimNode@{PimNode}}
\subsubsection[{pim\_\-send}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::pim\_\-send (
\begin{DoxyParamCaption}
\item[{const string \&}]{if\_\-name, }
\item[{const string \&}]{vif\_\-name, }
\item[{const {\bf IPvX} \&}]{src\_\-address, }
\item[{const {\bf IPvX} \&}]{dst\_\-address, }
\item[{uint8\_\-t}]{ip\_\-protocol, }
\item[{int32\_\-t}]{ip\_\-ttl, }
\item[{int32\_\-t}]{ip\_\-tos, }
\item[{bool}]{ip\_\-router\_\-alert, }
\item[{bool}]{ip\_\-internet\_\-control, }
\item[{{\bf buffer\_\-t} $\ast$}]{buffer, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPimNode_a4ea6f5138db961a4f9ccc4e8c052943c}


\hyperlink{structSend}{Send} a protocol packet. 


\begin{DoxyParams}{Parameters}
{\em if\_\-name} & \hyperlink{protocolthe-p}{the} interface to send \hyperlink{protocolthe-p}{the} packet on. It is essential for multicast. In \hyperlink{protocolthe-p}{the} unicast case this field may be empty. \\
\hline
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} vif to send \hyperlink{protocolthe-p}{the} packet on. It is essential for multicast. In \hyperlink{protocolthe-p}{the} unicast case this field may be empty. \\
\hline
{\em src\_\-address} & \hyperlink{protocolthe-p}{the} IP source address. \\
\hline
{\em dst\_\-address} & \hyperlink{protocolthe-p}{the} IP destination address. \\
\hline
{\em ip\_\-protocol} & \hyperlink{protocolthe-p}{the} IP protocol number. It must be between 1 and 255. \\
\hline
{\em ip\_\-ttl} & \hyperlink{protocolthe-p}{the} IP TTL (hop-\/limit). If it has a negative value, \hyperlink{protocolthe-p}{the} TTL will be set internally before transmission. \\
\hline
{\em ip\_\-tos} & \hyperlink{protocolthe-p}{the} Type Of Service (Diffserv/ECN bits for \hyperlink{classIPv4}{IPv4}). If it has a negative value, \hyperlink{protocolthe-p}{the} TOS will be set internally before transmission. \\
\hline
{\em ip\_\-router\_\-alert} & if true, then add \hyperlink{protocolthe-p}{the} IP Router Alert option to \hyperlink{protocolthe-p}{the} IP packet. \\
\hline
{\em ip\_\-internet\_\-control} & if true, then this is IP control traffic. \\
\hline
{\em buffer} & \hyperlink{protocolthe-p}{the} data buffer with \hyperlink{protocolthe-p}{the} packet to send. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classPimNode_aa28b4a5c4a1e12ea153e750b14b1b2a4}{
\index{PimNode@{PimNode}!pim\_\-vif\_\-rpf\_\-find@{pim\_\-vif\_\-rpf\_\-find}}
\index{pim\_\-vif\_\-rpf\_\-find@{pim\_\-vif\_\-rpf\_\-find}!PimNode@{PimNode}}
\subsubsection[{pim\_\-vif\_\-rpf\_\-find}]{\setlength{\rightskip}{0pt plus 5cm}{\bf PimVif} $\ast$ PimNode::pim\_\-vif\_\-rpf\_\-find (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{dst\_\-addr}
\end{DoxyParamCaption}
)}}
\label{classPimNode_aa28b4a5c4a1e12ea153e750b14b1b2a4}


Find \hyperlink{protocolthe-p}{the} RPF virtual interface for a given destination address. 

\hyperlink{classPimNode_aa28b4a5c4a1e12ea153e750b14b1b2a4}{PimNode::pim\_\-vif\_\-rpf\_\-find}: : The address of \hyperlink{protocolthe-p}{the} destination to search for.


\begin{DoxyParams}{Parameters}
{\em dst\_\-addr} & \hyperlink{protocolthe-p}{the} destination address to lookup. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} RPF virtual interface (\hyperlink{classPimVif}{PimVif}) toward dst\_\-addr if found, otherwise NULL.
\end{DoxyReturn}
Find \hyperlink{protocolthe-p}{the} RPF virtual interface for a destination address.

Return value: The \hyperlink{classPimVif}{PimVif} entry for \hyperlink{protocolthe-p}{the} RPF virtual interface to  if found, otherwise NULL. \hypertarget{classPimNode_a56fa2d39cbcc460a53e6d457a67371fe}{
\index{PimNode@{PimNode}!pim\_\-vifs\_\-dr@{pim\_\-vifs\_\-dr}}
\index{pim\_\-vifs\_\-dr@{pim\_\-vifs\_\-dr}!PimNode@{PimNode}}
\subsubsection[{pim\_\-vifs\_\-dr}]{\setlength{\rightskip}{0pt plus 5cm}Mifset\& PimNode::pim\_\-vifs\_\-dr (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPimNode_a56fa2d39cbcc460a53e6d457a67371fe}


Get \hyperlink{protocolthe-p}{the} set of vifs for which this PIM note is a Designated Router. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} Mifset indicating \hyperlink{protocolthe-p}{the} vifs for which this PIM node is a Designated Router. 
\end{DoxyReturn}
\hypertarget{classPimNode_a963d2e0cfbb60ff3edd39dbe4ab5f50c}{
\index{PimNode@{PimNode}!proto\_\-recv@{proto\_\-recv}}
\index{proto\_\-recv@{proto\_\-recv}!PimNode@{PimNode}}
\subsubsection[{proto\_\-recv}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::proto\_\-recv (
\begin{DoxyParamCaption}
\item[{const string \&}]{if\_\-name, }
\item[{const string \&}]{vif\_\-name, }
\item[{const {\bf IPvX} \&}]{src\_\-address, }
\item[{const {\bf IPvX} \&}]{dst\_\-address, }
\item[{uint8\_\-t}]{ip\_\-protocol, }
\item[{int32\_\-t}]{ip\_\-ttl, }
\item[{int32\_\-t}]{ip\_\-tos, }
\item[{bool}]{ip\_\-router\_\-alert, }
\item[{bool}]{ip\_\-internet\_\-control, }
\item[{const vector$<$ uint8\_\-t $>$ \&}]{payload, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classPimNode_a963d2e0cfbb60ff3edd39dbe4ab5f50c}


Receive a protocol packet. 


\begin{DoxyParams}{Parameters}
{\em if\_\-name} & \hyperlink{protocolthe-p}{the} interface name \hyperlink{protocolthe-p}{the} packet arrived on. \\
\hline
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} vif name \hyperlink{protocolthe-p}{the} packet arrived on. \\
\hline
{\em src\_\-address} & \hyperlink{protocolthe-p}{the} IP source address. \\
\hline
{\em dst\_\-address} & \hyperlink{protocolthe-p}{the} IP destination address. \\
\hline
{\em ip\_\-protocol} & \hyperlink{protocolthe-p}{the} IP protocol number. \\
\hline
{\em ip\_\-ttl} & \hyperlink{protocolthe-p}{the} IP TTL (hop-\/limit). If it has a negative value, then \hyperlink{protocolthe-p}{the} received value is unknown. \\
\hline
{\em ip\_\-tos} & \hyperlink{protocolthe-p}{the} Type of Service (Diffserv/ECN bits for \hyperlink{classIPv4}{IPv4}). If it has a negative value, then \hyperlink{protocolthe-p}{the} received value is unknown. \\
\hline
{\em ip\_\-router\_\-alert} & if true, \hyperlink{protocolthe-p}{the} IP Router Alert option was included in \hyperlink{protocolthe-p}{the} IP packet. \\
\hline
{\em ip\_\-internet\_\-control} & if true, then this is IP control traffic. \\
\hline
{\em payload} & \hyperlink{protocolthe-p}{the} payload, everything after \hyperlink{protocolthe-p}{the} IP header and options. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implements \hyperlink{classProtoNode_a4752a6a3ad1e4b79045d17681fb1a304}{ProtoNode$<$ PimVif $>$}.

\hypertarget{classPimNode_ae0873c04d4b1d3ebb8e6fec7e15f2baf}{
\index{PimNode@{PimNode}!register\_\-protocol@{register\_\-protocol}}
\index{register\_\-protocol@{register\_\-protocol}!PimNode@{PimNode}}
\subsubsection[{register\_\-protocol}]{\setlength{\rightskip}{0pt plus 5cm}virtual int PimNode::register\_\-protocol (
\begin{DoxyParamCaption}
\item[{const string \&}]{if\_\-name, }
\item[{const string \&}]{vif\_\-name, }
\item[{uint8\_\-t}]{ip\_\-protocol}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classPimNode_ae0873c04d4b1d3ebb8e6fec7e15f2baf}


Register a protocol on an interface in \hyperlink{protocolthe-p}{the} Multicast FEA. 


\begin{DoxyParams}{Parameters}
{\em if\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} interface to register for \hyperlink{protocolthe-p}{the} particular protocol. \\
\hline
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} vif to register for \hyperlink{protocolthe-p}{the} particular protocol. \\
\hline
{\em ip\_\-protocol} & \hyperlink{protocolthe-p}{the} IP protocol number. It must be between 1 and 255. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implemented in \hyperlink{classXrlPimNode_a0a492ae65a7ec06220364262dc1c4618}{XrlPimNode}.

\hypertarget{classPimNode_a3b8e1d1b54cf188a2157e3fc8290ab26}{
\index{PimNode@{PimNode}!register\_\-receiver@{register\_\-receiver}}
\index{register\_\-receiver@{register\_\-receiver}!PimNode@{PimNode}}
\subsubsection[{register\_\-receiver}]{\setlength{\rightskip}{0pt plus 5cm}virtual int PimNode::register\_\-receiver (
\begin{DoxyParamCaption}
\item[{const string \&}]{if\_\-name, }
\item[{const string \&}]{vif\_\-name, }
\item[{uint8\_\-t}]{ip\_\-protocol, }
\item[{bool}]{enable\_\-multicast\_\-loopback}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classPimNode_a3b8e1d1b54cf188a2157e3fc8290ab26}


Register as a receiver to receive packets. 

This is a pure virtual function, and it must be implemented by \hyperlink{protocolthe-p}{the} communication-\/wrapper class that inherits this base class.


\begin{DoxyParams}{Parameters}
{\em if\_\-name} & \hyperlink{protocolthe-p}{the} interface through which packets should be accepted. \\
\hline
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} vif through which packets should be accepted. \\
\hline
{\em ip\_\-protocol} & \hyperlink{protocolthe-p}{the} IP protocol number that \hyperlink{protocolthe-p}{the} receiver is interested in. It must be between 0 and 255. A protocol number of 0 is used to specify all protocols. \\
\hline
{\em enable\_\-multicast\_\-loopback} & if true then enable delivering of multicast datagrams back to this host (assuming \hyperlink{protocolthe-p}{the} host is a member of \hyperlink{protocolthe-p}{the} same multicast group). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implemented in \hyperlink{classXrlPimNode_a8dec86fbfe68b1299f850534575cc4e6}{XrlPimNode}.

\hypertarget{classPimNode_ac5418584a3265a85dc424f7c61ce4101}{
\index{PimNode@{PimNode}!reset\_\-vif\_\-proto\_\-version@{reset\_\-vif\_\-proto\_\-version}}
\index{reset\_\-vif\_\-proto\_\-version@{reset\_\-vif\_\-proto\_\-version}!PimNode@{PimNode}}
\subsubsection[{reset\_\-vif\_\-proto\_\-version}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::reset\_\-vif\_\-proto\_\-version (
\begin{DoxyParamCaption}
\item[{const string \&}]{vif\_\-name, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPimNode_ac5418584a3265a85dc424f7c61ce4101}


Reset \hyperlink{protocolthe-p}{the} protocol version on an interface to its default value. 


\begin{DoxyParams}{Parameters}
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} vif to reset \hyperlink{protocolthe-p}{the} protocol version of to its default value. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classPimNode_a5155a18e94bac9e77882d688aeeae5f9}{
\index{PimNode@{PimNode}!rib\_\-register\_\-shutdown@{rib\_\-register\_\-shutdown}}
\index{rib\_\-register\_\-shutdown@{rib\_\-register\_\-shutdown}!PimNode@{PimNode}}
\subsubsection[{rib\_\-register\_\-shutdown}]{\setlength{\rightskip}{0pt plus 5cm}virtual void PimNode::rib\_\-register\_\-shutdown (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private, pure virtual\mbox{]}}}}
\label{classPimNode_a5155a18e94bac9e77882d688aeeae5f9}


Initiate de-\/registration with \hyperlink{protocolthe-p}{the} \hyperlink{classRIB}{RIB}. 

This is a pure virtual function, and it must be implemented by \hyperlink{protocolthe-p}{the} communication-\/wrapper class that inherits this base class. 

Implemented in \hyperlink{classXrlPimNode_a4705062bd5927f76e3d067040d4ff880}{XrlPimNode}.

\hypertarget{classPimNode_afe6b8a98defe4627acc5c630fec42acb}{
\index{PimNode@{PimNode}!rib\_\-register\_\-startup@{rib\_\-register\_\-startup}}
\index{rib\_\-register\_\-startup@{rib\_\-register\_\-startup}!PimNode@{PimNode}}
\subsubsection[{rib\_\-register\_\-startup}]{\setlength{\rightskip}{0pt plus 5cm}virtual void PimNode::rib\_\-register\_\-startup (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private, pure virtual\mbox{]}}}}
\label{classPimNode_afe6b8a98defe4627acc5c630fec42acb}


Initiate registration with \hyperlink{protocolthe-p}{the} \hyperlink{classRIB}{RIB}. 

This is a pure virtual function, and it must be implemented by \hyperlink{protocolthe-p}{the} communication-\/wrapper class that inherits this base class. 

Implemented in \hyperlink{classXrlPimNode_ab61b1e3e90146116b58d4bf2494ed104}{XrlPimNode}.

\hypertarget{classPimNode_ab06a194ddf6cd0a0fb0930424d34b773}{
\index{PimNode@{PimNode}!rp\_\-table@{rp\_\-table}}
\index{rp\_\-table@{rp\_\-table}!PimNode@{PimNode}}
\subsubsection[{rp\_\-table}]{\setlength{\rightskip}{0pt plus 5cm}{\bf RpTable}\& PimNode::rp\_\-table (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPimNode_ab06a194ddf6cd0a0fb0930424d34b773}


Get \hyperlink{protocolthe-p}{the} PIM RP table. 

\begin{DoxyReturn}{Returns}
a reference to \hyperlink{protocolthe-p}{the} PIM RP table (\hyperlink{classRpTable}{RpTable}). 
\end{DoxyReturn}
\hypertarget{classPimNode_a8e5635236326d0f8885ab830c9181fc9}{
\index{PimNode@{PimNode}!set\_\-config\_\-all\_\-vifs\_\-done@{set\_\-config\_\-all\_\-vifs\_\-done}}
\index{set\_\-config\_\-all\_\-vifs\_\-done@{set\_\-config\_\-all\_\-vifs\_\-done}!PimNode@{PimNode}}
\subsubsection[{set\_\-config\_\-all\_\-vifs\_\-done}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::set\_\-config\_\-all\_\-vifs\_\-done (
\begin{DoxyParamCaption}
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPimNode_a8e5635236326d0f8885ab830c9181fc9}


Complete \hyperlink{protocolthe-p}{the} set of vif configuration changes. 


\begin{DoxyParams}{Parameters}
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classPimNode_a19bf117ce5086de009397538422aaa0d}{
\index{PimNode@{PimNode}!set\_\-log\_\-trace@{set\_\-log\_\-trace}}
\index{set\_\-log\_\-trace@{set\_\-log\_\-trace}!PimNode@{PimNode}}
\subsubsection[{set\_\-log\_\-trace}]{\setlength{\rightskip}{0pt plus 5cm}void PimNode::set\_\-log\_\-trace (
\begin{DoxyParamCaption}
\item[{bool}]{is\_\-enabled}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPimNode_a19bf117ce5086de009397538422aaa0d}


Enable/disable trace log. 

This method is used to enable/disable trace log debug messages output.


\begin{DoxyParams}{Parameters}
{\em is\_\-enabled} & if true, trace log is enabled, otherwise is disabled. \\
\hline
\end{DoxyParams}
\hypertarget{classPimNode_aa47e1fa45300dfe901d947b5164f5d4c}{
\index{PimNode@{PimNode}!set\_\-pim\_\-vifs\_\-dr@{set\_\-pim\_\-vifs\_\-dr}}
\index{set\_\-pim\_\-vifs\_\-dr@{set\_\-pim\_\-vifs\_\-dr}!PimNode@{PimNode}}
\subsubsection[{set\_\-pim\_\-vifs\_\-dr}]{\setlength{\rightskip}{0pt plus 5cm}void PimNode::set\_\-pim\_\-vifs\_\-dr (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{vif\_\-index, }
\item[{bool}]{v}
\end{DoxyParamCaption}
)}}
\label{classPimNode_aa47e1fa45300dfe901d947b5164f5d4c}


Set/reset a virtual interface as a Designated Router. 

\hyperlink{classPimNode_aa47e1fa45300dfe901d947b5164f5d4c}{PimNode::set\_\-pim\_\-vifs\_\-dr}: : The vif index to set/reset \hyperlink{protocolthe-p}{the} DR flag.


\begin{DoxyParams}{Parameters}
{\em vif\_\-index} & \hyperlink{protocolthe-p}{the} vif index of \hyperlink{protocolthe-p}{the} virtual interface to set/reset as a Designated Router. \\
\hline
{\em v} & if true, set \hyperlink{protocolthe-p}{the} virtual interface as a Designated Router, otherwise reset it.\\
\hline
\end{DoxyParams}
: true if set \hyperlink{protocolthe-p}{the} DR flag, otherwise false.

Set/reset \hyperlink{protocolthe-p}{the} DR flag for vif index . \hypertarget{classPimNode_a542d87980a856aacd064ad6e009e24c3}{
\index{PimNode@{PimNode}!set\_\-vif\_\-flags@{set\_\-vif\_\-flags}}
\index{set\_\-vif\_\-flags@{set\_\-vif\_\-flags}!PimNode@{PimNode}}
\subsubsection[{set\_\-vif\_\-flags}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::set\_\-vif\_\-flags (
\begin{DoxyParamCaption}
\item[{const string \&}]{vif\_\-name, }
\item[{bool}]{is\_\-pim\_\-register, }
\item[{bool}]{is\_\-p2p, }
\item[{bool}]{is\_\-loopback, }
\item[{bool}]{is\_\-multicast, }
\item[{bool}]{is\_\-broadcast, }
\item[{bool}]{is\_\-up, }
\item[{uint32\_\-t}]{mtu, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPimNode_a542d87980a856aacd064ad6e009e24c3}


Set flags to a vif. 


\begin{DoxyParams}{Parameters}
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} vif. \\
\hline
{\em is\_\-pim\_\-register} & true if this is a PIM Register vif. \\
\hline
{\em is\_\-p2p} & true if this is a point-\/to-\/point vif. \\
\hline
{\em is\_\-loopback} & true if this is a loopback interface. \\
\hline
{\em is\_\-multicast} & rue if \hyperlink{protocolthe-p}{the} vif is multicast-\/capable. \\
\hline
{\em is\_\-broadcast} & true if \hyperlink{protocolthe-p}{the} vif is broadcast-\/capable. \\
\hline
{\em is\_\-up} & true if \hyperlink{protocolthe-p}{the} vif is UP and running. \\
\hline
{\em mtu} & \hyperlink{protocolthe-p}{the} MTU of \hyperlink{protocolthe-p}{the} vif. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classPimNode_a1e2fb5e2ddc74dfc2d3a546f040b9d9b}{
\index{PimNode@{PimNode}!set\_\-vif\_\-proto\_\-version@{set\_\-vif\_\-proto\_\-version}}
\index{set\_\-vif\_\-proto\_\-version@{set\_\-vif\_\-proto\_\-version}!PimNode@{PimNode}}
\subsubsection[{set\_\-vif\_\-proto\_\-version}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::set\_\-vif\_\-proto\_\-version (
\begin{DoxyParamCaption}
\item[{const string \&}]{vif\_\-name, }
\item[{int}]{proto\_\-version, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPimNode_a1e2fb5e2ddc74dfc2d3a546f040b9d9b}


Set \hyperlink{protocolthe-p}{the} protocol version on an interface. 


\begin{DoxyParams}{Parameters}
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} vif to set \hyperlink{protocolthe-p}{the} protocol version of. \\
\hline
{\em proto\_\-version} & \hyperlink{protocolthe-p}{the} new protocol version. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classPimNode_aad54f16da6858aed74ed9980c6c9aadc}{
\index{PimNode@{PimNode}!signal\_\-message\_\-recv@{signal\_\-message\_\-recv}}
\index{signal\_\-message\_\-recv@{signal\_\-message\_\-recv}!PimNode@{PimNode}}
\subsubsection[{signal\_\-message\_\-recv}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::signal\_\-message\_\-recv (
\begin{DoxyParamCaption}
\item[{const string \&}]{src\_\-module\_\-instance\_\-name, }
\item[{int}]{message\_\-type, }
\item[{uint32\_\-t}]{vif\_\-index, }
\item[{const {\bf IPvX} \&}]{src, }
\item[{const {\bf IPvX} \&}]{dst, }
\item[{const uint8\_\-t $\ast$}]{rcvbuf, }
\item[{size\_\-t}]{rcvlen}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classPimNode_aad54f16da6858aed74ed9980c6c9aadc}


Receive a signal message from \hyperlink{protocolthe-p}{the} kernel. 

\hyperlink{classPimNode_aad54f16da6858aed74ed9980c6c9aadc}{PimNode::signal\_\-message\_\-recv}: : The module instance name of \hyperlink{protocolthe-p}{the} module-\/origin of \hyperlink{protocolthe-p}{the} message.


\begin{DoxyParams}{Parameters}
{\em src\_\-module\_\-instance\_\-name} & \hyperlink{protocolthe-p}{the} module instance name of \hyperlink{protocolthe-p}{the} module-\/origin of \hyperlink{protocolthe-p}{the} message.\\
\hline
{\em message\_\-type} & \hyperlink{protocolthe-p}{the} message type. Currently, \hyperlink{protocolthe-p}{the} type of messages received from \hyperlink{protocolthe-p}{the} kernel are:\\
\hline
\end{DoxyParams}

\begin{DoxyPre}
#define MFEA\_KERNEL\_MESSAGE\_NOCACHE        1
#define MFEA\_KERNEL\_MESSAGE\_WRONGVIF       2
#define MFEA\_KERNEL\_MESSAGE\_WHOLEPKT       3
\end{DoxyPre}



\begin{DoxyParams}{Parameters}
{\em vif\_\-index} & \hyperlink{protocolthe-p}{the} vif index of \hyperlink{protocolthe-p}{the} related interface (message-\/specific relation).\\
\hline
{\em src} & \hyperlink{protocolthe-p}{the} source address in \hyperlink{protocolthe-p}{the} message.\\
\hline
{\em dst} & \hyperlink{protocolthe-p}{the} destination address in \hyperlink{protocolthe-p}{the} message.\\
\hline
{\em rcvbuf} & \hyperlink{protocolthe-p}{the} data buffer with \hyperlink{protocolthe-p}{the} additional information in \hyperlink{protocolthe-p}{the} message. \\
\hline
{\em rcvlen} & \hyperlink{protocolthe-p}{the} data length in rcvbuf.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
: The message type of \hyperlink{protocolthe-p}{the} kernel signal. At this moment, one of \hyperlink{protocolthe-p}{the} following: MFEA\_\-KERNEL\_\-MESSAGE\_\-NOCACHE (if a cache-\/miss in \hyperlink{protocolthe-p}{the} kernel) MFEA\_\-KERNEL\_\-MESSAGE\_\-WRONGVIF (multicast packet received on wrong vif) MFEA\_\-KERNEL\_\-MESSAGE\_\-WHOLEPKT (typically, a packet that should be encapsulated as a PIM-\/Register). : The vif index of \hyperlink{protocolthe-p}{the} related interface (message-\/specific relation). : The source address in \hyperlink{protocolthe-p}{the} message. : The destination address in \hyperlink{protocolthe-p}{the} message. : The data buffer with \hyperlink{protocolthe-p}{the} additional information in \hyperlink{protocolthe-p}{the} message. : The data length in .

Receive a signal from \hyperlink{protocolthe-p}{the} kernel (e.g., NOCACHE, WRONGVIF, WHOLEPKT).

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. 

Implements \hyperlink{classProtoNode_a77df4775756fcc3b4ce487e38fcdea3c}{ProtoNode$<$ PimVif $>$}.

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


Start \hyperlink{protocolthe-p}{the} node operation. 

\hyperlink{classPimNode_a44f8ed1e771b4aa6167cd25b887d8fdc}{PimNode::start}: @:

Start \hyperlink{protocolthe-p}{the} PIM protocol. After \hyperlink{protocolthe-p}{the} startup operations are completed, \hyperlink{classPimNode_a0183c5a412f0a7e79cb4e32aadd12e0d}{PimNode::final\_\-start()} is called internally to complete \hyperlink{protocolthe-p}{the} job.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
Start \hyperlink{protocolthe-p}{the} PIM protocol. TODO: This function should not start \hyperlink{protocolthe-p}{the} protocol operation on \hyperlink{protocolthe-p}{the} interfaces. The interfaces must be activated separately. After \hyperlink{protocolthe-p}{the} startup operations are completed, \hyperlink{classPimNode_a0183c5a412f0a7e79cb4e32aadd12e0d}{PimNode::final\_\-start()} is called to complete \hyperlink{protocolthe-p}{the} job.

Return value: XORP\_\-OK on success, otherwize XORP\_\-ERROR. 

Reimplemented from \hyperlink{classProtoState_a5a0cf7fc68b9db681ce8b8fca9635e07}{ProtoState}.

\hypertarget{classPimNode_abc5f7dfea4720c5bbc115147dcd61ef6}{
\index{PimNode@{PimNode}!start\_\-all\_\-vifs@{start\_\-all\_\-vifs}}
\index{start\_\-all\_\-vifs@{start\_\-all\_\-vifs}!PimNode@{PimNode}}
\subsubsection[{start\_\-all\_\-vifs}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::start\_\-all\_\-vifs (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classPimNode_abc5f7dfea4720c5bbc115147dcd61ef6}


Start PIM on all enabled interfaces. 

\hyperlink{classPimNode_abc5f7dfea4720c5bbc115147dcd61ef6}{PimNode::start\_\-all\_\-vifs}: @:

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
Start PIM on all enabled interfaces.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimNode_a1983f3cc0f29d02779f3e5e386c086e4}{
\index{PimNode@{PimNode}!start\_\-bsr@{start\_\-bsr}}
\index{start\_\-bsr@{start\_\-bsr}!PimNode@{PimNode}}
\subsubsection[{start\_\-bsr}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::start\_\-bsr (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPimNode_a1983f3cc0f29d02779f3e5e386c086e4}


Start \hyperlink{protocolthe-p}{the} Bootstrap mechanism. 

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Reimplemented in \hyperlink{classXrlPimNode_a447cb705b68643e8c7740751d86ebc24}{XrlPimNode}.

\hypertarget{classPimNode_a3978f2ea09e2a3202facf11895905bd9}{
\index{PimNode@{PimNode}!start\_\-vif@{start\_\-vif}}
\index{start\_\-vif@{start\_\-vif}!PimNode@{PimNode}}
\subsubsection[{start\_\-vif}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::start\_\-vif (
\begin{DoxyParamCaption}
\item[{const string \&}]{vif\_\-name, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPimNode_a3978f2ea09e2a3202facf11895905bd9}


Start an existing PIM vif. 

\hyperlink{classPimNode_a3978f2ea09e2a3202facf11895905bd9}{PimNode::start\_\-vif}: : The name of \hyperlink{protocolthe-p}{the} vif to start.


\begin{DoxyParams}{Parameters}
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} vif to start. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
: The error message (if error).

Start an existing PIM vif.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimNode_aa4f4e68c59057aed33848d26d27210f3}{
\index{PimNode@{PimNode}!status\_\-change@{status\_\-change}}
\index{status\_\-change@{status\_\-change}!PimNode@{PimNode}}
\subsubsection[{status\_\-change}]{\setlength{\rightskip}{0pt plus 5cm}void PimNode::status\_\-change (
\begin{DoxyParamCaption}
\item[{{\bf ServiceBase} $\ast$}]{service, }
\item[{ServiceStatus}]{old\_\-status, }
\item[{ServiceStatus}]{new\_\-status}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private, virtual\mbox{]}}}}
\label{classPimNode_aa4f4e68c59057aed33848d26d27210f3}


A method invoked when \hyperlink{protocolthe-p}{the} status of a service changes. 


\begin{DoxyParams}{Parameters}
{\em service} & \hyperlink{protocolthe-p}{the} service whose status has changed. \\
\hline
{\em old\_\-status} & \hyperlink{protocolthe-p}{the} old status. \\
\hline
{\em new\_\-status} & \hyperlink{protocolthe-p}{the} new status. \\
\hline
\end{DoxyParams}


Implements \hyperlink{classServiceChangeObserverBase}{ServiceChangeObserverBase}.

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


Stop \hyperlink{protocolthe-p}{the} node operation. 

\hyperlink{classPimNode_a436d2c9d77ad3fcedc7a738d4ac678e0}{PimNode::stop}: @:

Gracefully stop \hyperlink{protocolthe-p}{the} PIM protocol. The graceful stop will attempt to send Join/Prune, Assert, etc. messages for all multicast routing entries to gracefully clean-\/up state with neighbors. After \hyperlink{protocolthe-p}{the} multicast routing entries cleanup is completed, \hyperlink{classPimNode_ab49d94a8471376202edde99988ee1261}{PimNode::final\_\-stop()} is called internally to complete \hyperlink{protocolthe-p}{the} job. This method, unlike \hyperlink{classPimNode_a44f8ed1e771b4aa6167cd25b887d8fdc}{start()}, will stop \hyperlink{protocolthe-p}{the} protocol operation on all interfaces.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
Gracefully stop \hyperlink{protocolthe-p}{the} PIM protocol. XXX: The graceful stop will attempt to send Join/Prune, Assert, etc. messages for all multicast routing entries to gracefully clean-\/up state with neighbors. XXX: After \hyperlink{protocolthe-p}{the} multicast routing entries cleanup is completed, \hyperlink{classPimNode_ab49d94a8471376202edde99988ee1261}{PimNode::final\_\-stop()} is called to complete \hyperlink{protocolthe-p}{the} job. XXX: This function, unlike \hyperlink{classPimNode_a44f8ed1e771b4aa6167cd25b887d8fdc}{start()}, will stop \hyperlink{protocolthe-p}{the} protocol operation on all interfaces.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. 

Reimplemented from \hyperlink{classProtoState_a00a8d35d02b0ce61a6b012326e81878c}{ProtoState}.

\hypertarget{classPimNode_ad3a11365087538082547ed3a45d9e0d0}{
\index{PimNode@{PimNode}!stop\_\-all\_\-vifs@{stop\_\-all\_\-vifs}}
\index{stop\_\-all\_\-vifs@{stop\_\-all\_\-vifs}!PimNode@{PimNode}}
\subsubsection[{stop\_\-all\_\-vifs}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::stop\_\-all\_\-vifs (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classPimNode_ad3a11365087538082547ed3a45d9e0d0}


Stop PIM on all interfaces it was running on. 

\hyperlink{classPimNode_ad3a11365087538082547ed3a45d9e0d0}{PimNode::stop\_\-all\_\-vifs}: @:

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
Stop PIM on all interfaces it was running on.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimNode_a0469e3cbf123f41d9d28a9dae7bd5a19}{
\index{PimNode@{PimNode}!stop\_\-bsr@{stop\_\-bsr}}
\index{stop\_\-bsr@{stop\_\-bsr}!PimNode@{PimNode}}
\subsubsection[{stop\_\-bsr}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::stop\_\-bsr (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPimNode_a0469e3cbf123f41d9d28a9dae7bd5a19}


Stop \hyperlink{protocolthe-p}{the} Bootstrap mechanism. 

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Reimplemented in \hyperlink{classXrlPimNode_aa1c25847bec3de5ab282a7c9f0e2b6e9}{XrlPimNode}.

\hypertarget{classPimNode_aed3b54e8a2051a75ea620e3ad08b31a1}{
\index{PimNode@{PimNode}!stop\_\-vif@{stop\_\-vif}}
\index{stop\_\-vif@{stop\_\-vif}!PimNode@{PimNode}}
\subsubsection[{stop\_\-vif}]{\setlength{\rightskip}{0pt plus 5cm}int PimNode::stop\_\-vif (
\begin{DoxyParamCaption}
\item[{const string \&}]{vif\_\-name, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPimNode_aed3b54e8a2051a75ea620e3ad08b31a1}


Stop an existing PIM vif. 

\hyperlink{classPimNode_aed3b54e8a2051a75ea620e3ad08b31a1}{PimNode::stop\_\-vif}: : The name of \hyperlink{protocolthe-p}{the} vif to stop.


\begin{DoxyParams}{Parameters}
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} vif to start. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
: The error message (if error).

Stop an existing PIM vif.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimNode_a353bb60dab3ea193fe80a4b11dd6d219}{
\index{PimNode@{PimNode}!unregister\_\-protocol@{unregister\_\-protocol}}
\index{unregister\_\-protocol@{unregister\_\-protocol}!PimNode@{PimNode}}
\subsubsection[{unregister\_\-protocol}]{\setlength{\rightskip}{0pt plus 5cm}virtual int PimNode::unregister\_\-protocol (
\begin{DoxyParamCaption}
\item[{const string \&}]{if\_\-name, }
\item[{const string \&}]{vif\_\-name}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classPimNode_a353bb60dab3ea193fe80a4b11dd6d219}


Unregister a protocol on an interface in \hyperlink{protocolthe-p}{the} Multicast FEA. 


\begin{DoxyParams}{Parameters}
{\em if\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} interface to unregister for \hyperlink{protocolthe-p}{the} particular protocol. \\
\hline
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} vif to unregister for \hyperlink{protocolthe-p}{the} particular protocol. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implemented in \hyperlink{classXrlPimNode_ae329725981b093222fa18f5c412e4bd7}{XrlPimNode}.

\hypertarget{classPimNode_a4a029cbf20ade79a2cbee9c4c0af2234}{
\index{PimNode@{PimNode}!unregister\_\-receiver@{unregister\_\-receiver}}
\index{unregister\_\-receiver@{unregister\_\-receiver}!PimNode@{PimNode}}
\subsubsection[{unregister\_\-receiver}]{\setlength{\rightskip}{0pt plus 5cm}virtual int PimNode::unregister\_\-receiver (
\begin{DoxyParamCaption}
\item[{const string \&}]{if\_\-name, }
\item[{const string \&}]{vif\_\-name, }
\item[{uint8\_\-t}]{ip\_\-protocol}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classPimNode_a4a029cbf20ade79a2cbee9c4c0af2234}


Unregister as a receiver to receive packets. 

This is a pure virtual function, and it must be implemented by \hyperlink{protocolthe-p}{the} communication-\/wrapper class that inherits this base class.


\begin{DoxyParams}{Parameters}
{\em if\_\-name} & \hyperlink{protocolthe-p}{the} interface through which packets should not be accepted. \\
\hline
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} vif through which packets should not be accepted. \\
\hline
{\em ip\_\-protocol} & \hyperlink{protocolthe-p}{the} IP \hyperlink{classProtocol}{Protocol} number that \hyperlink{protocolthe-p}{the} receiver is not interested in anymore. It must be between 0 and 255. A protocol number of 0 is used to specify all protocols. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implemented in \hyperlink{classXrlPimNode_ab651d7e27f7e37683a64bea576f4e809}{XrlPimNode}.

\hypertarget{classPimNode_ad936396479f18cc9017face169905ef6}{
\index{PimNode@{PimNode}!vif\_\-find\_\-pim\_\-register@{vif\_\-find\_\-pim\_\-register}}
\index{vif\_\-find\_\-pim\_\-register@{vif\_\-find\_\-pim\_\-register}!PimNode@{PimNode}}
\subsubsection[{vif\_\-find\_\-pim\_\-register}]{\setlength{\rightskip}{0pt plus 5cm}{\bf PimVif} $\ast$ PimNode::vif\_\-find\_\-pim\_\-register (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classPimNode_ad936396479f18cc9017face169905ef6}


Get \hyperlink{protocolthe-p}{the} PIM-\/Register virtual interface. 

\hyperlink{classPimNode_ad936396479f18cc9017face169905ef6}{PimNode::vif\_\-find\_\-pim\_\-register}: @:

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} PIM-\/Register virtual interface if exists, otherwise NULL.
\end{DoxyReturn}
Return \hyperlink{protocolthe-p}{the} PIM Register virtual interface.

Return value: The PIM Register virtual interface if exists, otherwise NULL. \hypertarget{classPimNode_a611c010ba468ab841dd2497b0bd5dfbd}{
\index{PimNode@{PimNode}!vif\_\-shutdown\_\-completed@{vif\_\-shutdown\_\-completed}}
\index{vif\_\-shutdown\_\-completed@{vif\_\-shutdown\_\-completed}!PimNode@{PimNode}}
\subsubsection[{vif\_\-shutdown\_\-completed}]{\setlength{\rightskip}{0pt plus 5cm}void PimNode::vif\_\-shutdown\_\-completed (
\begin{DoxyParamCaption}
\item[{const string \&}]{vif\_\-name}
\end{DoxyParamCaption}
)}}
\label{classPimNode_a611c010ba468ab841dd2497b0bd5dfbd}


A method called when a vif has completed its shutdown. 


\begin{DoxyParams}{Parameters}
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} vif that has completed its shutdown. \\
\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\_\-node.hh\item 
/home/greearb/git/xorp.ct.github/xorp/pim/pim\_\-config.cc\item 
/home/greearb/git/xorp.ct.github/xorp/pim/pim\_\-node.cc\end{DoxyCompactItemize}
