\hypertarget{classPimVif}{
\section{PimVif Class Reference}
\label{classPimVif}\index{PimVif@{PimVif}}
}


A class for PIM-\/specific virtual interface.  




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

Inheritance diagram for PimVif:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=5.000000cm]{classPimVif}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classPimVif_a64b5fb9ab97e8c2b16a79773a68f12b7}{PimVif} (\hyperlink{classPimNode}{PimNode} $\ast$pim\_\-node, const \hyperlink{classVif}{Vif} \&vif)
\begin{DoxyCompactList}\small\item\em Constructor for a given PIM node and a generic virtual interface. \item\end{DoxyCompactList}\item 
virtual \hyperlink{classPimVif_ad37ba7772323b4c9db01b95a535f7c38}{$\sim$PimVif} ()
\begin{DoxyCompactList}\small\item\em Destructor. \item\end{DoxyCompactList}\item 
void \hyperlink{classPimVif_a46d710a955b6951a908c75d20cc5aa9b}{set\_\-default\_\-config} ()
\begin{DoxyCompactList}\small\item\em Set configuration to default values. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimVif_a0880009de4536966ef9e1eff12371564}{set\_\-proto\_\-version} (int proto\_\-version)
\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} current protocol version. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimVif_a0d3268d664f6f6b71e88e44409b3ca33}{start} (string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Start PIM on a single virtual interface. \item\end{DoxyCompactList}\item 
void \hyperlink{classPimVif_a8be84171466915d4d1bfd900ee70795d}{notifyUpdated} ()
\begin{DoxyCompactList}\small\item\em Attempt deferred start. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimVif_a290ca7d6105bb6171110b71a89b1067e}{stop} (string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Gracefully stop PIM on a single virtual interface. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimVif_a23cc520327fff4d957f1c74855f5cb4a}{final\_\-stop} (string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Completely stop PIM on a single virtual interface. \item\end{DoxyCompactList}\item 
void \hyperlink{classPimVif_af49b5f9853a4fb6171f8dbb7f27d809a}{enable} ()
\begin{DoxyCompactList}\small\item\em Enable PIM on a single virtual interface. \item\end{DoxyCompactList}\item 
void \hyperlink{classPimVif_a2d6694db8bbc75c0ab75f4a19d362b2c}{disable} ()
\begin{DoxyCompactList}\small\item\em Disable PIM on a single virtual interface. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimVif_a6b4fbeac2ce266f4badd3853d75113cd}{pim\_\-recv} (const \hyperlink{classIPvX}{IPvX} \&src, const \hyperlink{classIPvX}{IPvX} \&dst, \hyperlink{structbuffer__}{buffer\_\-t} $\ast$buffer)
\begin{DoxyCompactList}\small\item\em Receive a protocol message. \item\end{DoxyCompactList}\item 
string \hyperlink{classPimVif_a188cca0e97d61467abc13e2ef4162b55}{flags\_\-string} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} string with \hyperlink{protocolthe-p}{the} flags about \hyperlink{protocolthe-p}{the} vif status. \item\end{DoxyCompactList}\item 
\hyperlink{classPimNode}{PimNode} $\ast$ \hyperlink{classPimVif_a848b4bf63ebed9876b6d1c281fc743c0}{pim\_\-node} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} PIM node (\hyperlink{classPimNode}{PimNode}). \item\end{DoxyCompactList}\item 
\hyperlink{classPimMrt}{PimMrt} \& \hyperlink{classPimVif_a43f82054b7be27ce8c646e0c86f3ad89}{pim\_\-mrt} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} PIM Multicast \hyperlink{classRouting}{Routing} Table (\hyperlink{classPimMrt}{PimMrt}). \item\end{DoxyCompactList}\item 
\hyperlink{classPimNbr}{PimNbr} \& \hyperlink{classPimVif_a6db583c52749a3445deba01079622993}{pim\_\-nbr\_\-me} ()
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} PIM neighbor information (\hyperlink{classPimNbr}{PimNbr}) about myself. \item\end{DoxyCompactList}\item 
\hypertarget{classPimVif_a6c24c391b66a3a6edac1ccb89558cfa9}{
void \hyperlink{classPimVif_a6c24c391b66a3a6edac1ccb89558cfa9}{pim\_\-hello\_\-start} ()}
\label{classPimVif_a6c24c391b66a3a6edac1ccb89558cfa9}

\begin{DoxyCompactList}\small\item\em Start \hyperlink{protocolthe-p}{the} PIM Hello operation. \item\end{DoxyCompactList}\item 
\hypertarget{classPimVif_a4f44013aa0e37863bd89f638759810ed}{
void \hyperlink{classPimVif_a4f44013aa0e37863bd89f638759810ed}{pim\_\-hello\_\-stop} ()}
\label{classPimVif_a4f44013aa0e37863bd89f638759810ed}

\begin{DoxyCompactList}\small\item\em Stop \hyperlink{protocolthe-p}{the} PIM Hello operation. \item\end{DoxyCompactList}\item 
\hypertarget{classPimVif_abe598a39e96171a1a54230c800d26a71}{
void \hyperlink{classPimVif_abe598a39e96171a1a54230c800d26a71}{pim\_\-dr\_\-elect} ()}
\label{classPimVif_abe598a39e96171a1a54230c800d26a71}

\begin{DoxyCompactList}\small\item\em Elect a Designated Router on this interface. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPimVif_aeb10ea88742f572a65831d391b94a0a6}{i\_\-may\_\-become\_\-dr} (const \hyperlink{classIPvX}{IPvX} \&exclude\_\-addr)
\begin{DoxyCompactList}\small\item\em Compute if I may become \hyperlink{protocolthe-p}{the} Designated Router on this interface if one of \hyperlink{protocolthe-p}{the} PIM neighbor addresses is not considered. \item\end{DoxyCompactList}\item 
const \hyperlink{classIPvX}{IPvX} \& \hyperlink{classPimVif_a05f80c2a3df5c60d0a60beaee6136b60}{primary\_\-addr} () const 
\begin{DoxyCompactList}\small\item\em Get my primary address on this interface. \item\end{DoxyCompactList}\item 
const \hyperlink{classIPvX}{IPvX} \& \hyperlink{classPimVif_a05ed56e9b07dbccbee32956bd6fb39f2}{domain\_\-wide\_\-addr} () const 
\begin{DoxyCompactList}\small\item\em Get my domain-\/wide reachable address on this interface. \item\end{DoxyCompactList}\item 
void \hyperlink{classPimVif_a776a56e45b7d3d95d7db35afde68a824}{set\_\-domain\_\-wide\_\-addr} (const \hyperlink{classIPvX}{IPvX} \&v)
\begin{DoxyCompactList}\small\item\em Set my domain-\/wide reachable address on this interface. \item\end{DoxyCompactList}\item 
int \hyperlink{classPimVif_abfd0ad513b7901d0c377f1ce92ac0cc4}{update\_\-primary\_\-and\_\-domain\_\-wide\_\-address} (string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Update \hyperlink{protocolthe-p}{the} primary and \hyperlink{protocolthe-p}{the} domain-\/wide reachable addresses. \item\end{DoxyCompactList}\item 
const \hyperlink{classIPvX}{IPvX} \& \hyperlink{classPimVif_a6ae745d93d513f0bb118f1c37dc4161d}{dr\_\-addr} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} address of \hyperlink{protocolthe-p}{the} Designated Router on this interface. \item\end{DoxyCompactList}\item 
\hypertarget{classPimVif_af9218656296b01182abc248d22c709b1}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint16\_\-t $>$ \& {\bfseries hello\_\-triggered\_\-delay} ()}
\label{classPimVif_af9218656296b01182abc248d22c709b1}

\item 
\hypertarget{classPimVif_ac2f5065b049b9afd0057ffd5a3ffec25}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint16\_\-t $>$ \& {\bfseries hello\_\-period} ()}
\label{classPimVif_ac2f5065b049b9afd0057ffd5a3ffec25}

\item 
\hypertarget{classPimVif_a6798c8975d8a09881c2e1d1add728eda}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint16\_\-t $>$ \& {\bfseries hello\_\-holdtime} ()}
\label{classPimVif_a6798c8975d8a09881c2e1d1add728eda}

\item 
\hypertarget{classPimVif_a1216f43577ab91d7888f6bf053378e6a}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ \& {\bfseries dr\_\-priority} ()}
\label{classPimVif_a1216f43577ab91d7888f6bf053378e6a}

\item 
\hypertarget{classPimVif_a873097ac5f2e1afca27673be3ec14ad4}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint16\_\-t $>$ \& {\bfseries propagation\_\-delay} ()}
\label{classPimVif_a873097ac5f2e1afca27673be3ec14ad4}

\item 
\hypertarget{classPimVif_abae33dd82ea5b6c1d085177e6d4561a3}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint16\_\-t $>$ \& {\bfseries override\_\-interval} ()}
\label{classPimVif_abae33dd82ea5b6c1d085177e6d4561a3}

\item 
\hypertarget{classPimVif_afcb9fb90e88cda69d037541e62628db2}{
\hyperlink{classConfigParam}{ConfigParam}$<$ bool $>$ \& {\bfseries is\_\-tracking\_\-support\_\-disabled} ()}
\label{classPimVif_afcb9fb90e88cda69d037541e62628db2}

\item 
\hypertarget{classPimVif_aec2fdb372933cd7047358117fc24b46f}{
\hyperlink{classConfigParam}{ConfigParam}$<$ bool $>$ \& {\bfseries accept\_\-nohello\_\-neighbors} ()}
\label{classPimVif_aec2fdb372933cd7047358117fc24b46f}

\item 
\hypertarget{classPimVif_a5eeaf463705ca038d9cd42763d465d96}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ \& {\bfseries genid} ()}
\label{classPimVif_a5eeaf463705ca038d9cd42763d465d96}

\item 
\hypertarget{classPimVif_afba3c320b3eb6b1af4afa5927cadca4b}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint16\_\-t $>$ \& {\bfseries join\_\-prune\_\-period} ()}
\label{classPimVif_afba3c320b3eb6b1af4afa5927cadca4b}

\item 
\hypertarget{classPimVif_aa4b08ccdf42aff33503a418374686fa3}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint16\_\-t $>$ \& {\bfseries join\_\-prune\_\-holdtime} ()}
\label{classPimVif_aa4b08ccdf42aff33503a418374686fa3}

\item 
\hypertarget{classPimVif_af38faff1c21ada63ef0d1f00a1443da5}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ \& {\bfseries assert\_\-time} ()}
\label{classPimVif_af38faff1c21ada63ef0d1f00a1443da5}

\item 
\hypertarget{classPimVif_a5900112cad0946d474cc80595c23085b}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ \& {\bfseries assert\_\-override\_\-interval} ()}
\label{classPimVif_a5900112cad0946d474cc80595c23085b}

\item 
int \hyperlink{classPimVif_afcc7c0fd729d029351a112508e53d9ba}{pim\_\-send} (const \hyperlink{classIPvX}{IPvX} \&src, const \hyperlink{classIPvX}{IPvX} \&dst, uint8\_\-t message\_\-type, \hyperlink{structbuffer__}{buffer\_\-t} $\ast$buffer, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em \hyperlink{classPimVif_afcc7c0fd729d029351a112508e53d9ba}{PimVif::pim\_\-send}: : The message source address. \item\end{DoxyCompactList}\item 
\hypertarget{classPimVif_a2ed5fe084af4b42688f362f363e79808}{
int {\bfseries pim\_\-hello\_\-send} (string \&error\_\-msg)}
\label{classPimVif_a2ed5fe084af4b42688f362f363e79808}

\item 
\hypertarget{classPimVif_ac48cb9fa7b534fde985be4c562215237}{
int {\bfseries pim\_\-hello\_\-first\_\-send} ()}
\label{classPimVif_ac48cb9fa7b534fde985be4c562215237}

\item 
\hypertarget{classPimVif_a0c11ee36722520fdc2b4428eeff433f7}{
int {\bfseries pim\_\-join\_\-prune\_\-send} (\hyperlink{classPimNbr}{PimNbr} $\ast$pim\_\-nbr, \hyperlink{classPimJpHeader}{PimJpHeader} $\ast$jp\_\-header, string \&error\_\-msg)}
\label{classPimVif_a0c11ee36722520fdc2b4428eeff433f7}

\item 
\hypertarget{classPimVif_acb4ab6e09570e155100378e96333e436}{
int {\bfseries pim\_\-assert\_\-mre\_\-send} (\hyperlink{classPimMre}{PimMre} $\ast$pim\_\-mre, const \hyperlink{classIPvX}{IPvX} \&assert\_\-source\_\-addr, string \&error\_\-msg)}
\label{classPimVif_acb4ab6e09570e155100378e96333e436}

\item 
\hypertarget{classPimVif_a7f376aaf12f93cfc5d63413bddc44684}{
int {\bfseries pim\_\-assert\_\-cancel\_\-send} (\hyperlink{classPimMre}{PimMre} $\ast$pim\_\-mre, string \&error\_\-msg)}
\label{classPimVif_a7f376aaf12f93cfc5d63413bddc44684}

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

\item 
\hypertarget{classPimVif_ae916747e8d4ca44ba62d25f24f3838d9}{
int {\bfseries pim\_\-register\_\-send} (const \hyperlink{classIPvX}{IPvX} \&rp\_\-addr, const \hyperlink{classIPvX}{IPvX} \&source\_\-addr, const \hyperlink{classIPvX}{IPvX} \&group\_\-addr, const uint8\_\-t $\ast$rcvbuf, size\_\-t rcvlen, string \&error\_\-msg)}
\label{classPimVif_ae916747e8d4ca44ba62d25f24f3838d9}

\item 
\hypertarget{classPimVif_a1b628fc3952f63b5a3aadace84fb860d}{
int {\bfseries pim\_\-register\_\-null\_\-send} (const \hyperlink{classIPvX}{IPvX} \&rp\_\-addr, const \hyperlink{classIPvX}{IPvX} \&source\_\-addr, const \hyperlink{classIPvX}{IPvX} \&group\_\-addr, string \&error\_\-msg)}
\label{classPimVif_a1b628fc3952f63b5a3aadace84fb860d}

\item 
\hypertarget{classPimVif_a85c20ad48f43484513675dd24bb3bc1a}{
int {\bfseries pim\_\-register\_\-stop\_\-send} (const \hyperlink{classIPvX}{IPvX} \&dr\_\-addr, const \hyperlink{classIPvX}{IPvX} \&source\_\-addr, const \hyperlink{classIPvX}{IPvX} \&group\_\-addr, string \&error\_\-msg)}
\label{classPimVif_a85c20ad48f43484513675dd24bb3bc1a}

\item 
\hypertarget{classPimVif_a58056a74622690d9036598560276a1e6}{
int {\bfseries pim\_\-bootstrap\_\-send} (const \hyperlink{classIPvX}{IPvX} \&dst\_\-addr, const \hyperlink{classBsrZone}{BsrZone} \&bsr\_\-zone, string \&error\_\-msg)}
\label{classPimVif_a58056a74622690d9036598560276a1e6}

\item 
\hypertarget{classPimVif_abf7b687dc0759eeb7a32f5ce7deff857}{
\hyperlink{structbuffer__}{buffer\_\-t} $\ast$ {\bfseries pim\_\-bootstrap\_\-send\_\-prepare} (const \hyperlink{classIPvX}{IPvX} \&src\_\-addr, const \hyperlink{classIPvX}{IPvX} \&dst\_\-addr, const \hyperlink{classBsrZone}{BsrZone} \&bsr\_\-zone, bool is\_\-first\_\-fragment)}
\label{classPimVif_abf7b687dc0759eeb7a32f5ce7deff857}

\item 
\hypertarget{classPimVif_a0947df00224857613c540cf66eaf4e58}{
int {\bfseries pim\_\-cand\_\-rp\_\-adv\_\-send} (const \hyperlink{classIPvX}{IPvX} \&bsr\_\-addr, const \hyperlink{classBsrZone}{BsrZone} \&bsr\_\-zone)}
\label{classPimVif_a0947df00224857613c540cf66eaf4e58}

\item 
\hypertarget{classPimVif_aa3db66dedadc3b579f594957ee9a4f3c}{
void {\bfseries hello\_\-timer\_\-start} (uint32\_\-t sec, uint32\_\-t usec)}
\label{classPimVif_aa3db66dedadc3b579f594957ee9a4f3c}

\item 
\hypertarget{classPimVif_a2d0bbbb79f87c2985decf53ae717bee6}{
void {\bfseries hello\_\-timer\_\-start\_\-random} (uint32\_\-t sec, uint32\_\-t usec)}
\label{classPimVif_a2d0bbbb79f87c2985decf53ae717bee6}

\item 
\hypertarget{classPimVif_a2450ca891dfefc46e98442667c9e9cbe}{
bool {\bfseries is\_\-lan\_\-delay\_\-enabled} () const }
\label{classPimVif_a2450ca891dfefc46e98442667c9e9cbe}

\item 
\hypertarget{classPimVif_ae6dd2e8da2e009111901fa4674d1d2f2}{
const \hyperlink{classTimeVal}{TimeVal} \& {\bfseries effective\_\-propagation\_\-delay} () const }
\label{classPimVif_ae6dd2e8da2e009111901fa4674d1d2f2}

\item 
\hypertarget{classPimVif_a804e5c92e6a47018adb0204d897e8f30}{
const \hyperlink{classTimeVal}{TimeVal} \& {\bfseries effective\_\-override\_\-interval} () const }
\label{classPimVif_a804e5c92e6a47018adb0204d897e8f30}

\item 
\hypertarget{classPimVif_a7c67dd6188bd7174b6ebd15b0ca9ecdc}{
bool {\bfseries is\_\-lan\_\-suppression\_\-state\_\-enabled} () const }
\label{classPimVif_a7c67dd6188bd7174b6ebd15b0ca9ecdc}

\item 
\hypertarget{classPimVif_addbb1ca80720a53bd63675d7f0de3ac7}{
const \hyperlink{classTimeVal}{TimeVal} \& {\bfseries upstream\_\-join\_\-timer\_\-t\_\-suppressed} () const }
\label{classPimVif_addbb1ca80720a53bd63675d7f0de3ac7}

\item 
\hypertarget{classPimVif_aa74594c240454718a70fdfe2062f3f84}{
const \hyperlink{classTimeVal}{TimeVal} \& {\bfseries upstream\_\-join\_\-timer\_\-t\_\-override} () const }
\label{classPimVif_aa74594c240454718a70fdfe2062f3f84}

\item 
\hypertarget{classPimVif_a891d3fe1fff7970fa321f61384ee3f8c}{
const \hyperlink{classTimeVal}{TimeVal} \& {\bfseries jp\_\-override\_\-interval} () const }
\label{classPimVif_a891d3fe1fff7970fa321f61384ee3f8c}

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

\item 
\hypertarget{classPimVif_aad79de08fb231755c6dc98fdd17a600b}{
size\_\-t {\bfseries pim\_\-nbrs\_\-number} () const }
\label{classPimVif_aad79de08fb231755c6dc98fdd17a600b}

\item 
bool \hyperlink{classPimVif_ac9cc63910bd6a94cc2750238d05a51d3}{i\_\-am\_\-dr} () const 
\begin{DoxyCompactList}\small\item\em \hyperlink{classPimVif_ac9cc63910bd6a94cc2750238d05a51d3}{PimVif::i\_\-am\_\-dr}: @: \item\end{DoxyCompactList}\item 
void \hyperlink{classPimVif_af5241e9f2f4e6975ac271e7ac82a9619}{set\_\-i\_\-am\_\-dr} (bool v)
\begin{DoxyCompactList}\small\item\em \hyperlink{classPimVif_af5241e9f2f4e6975ac271e7ac82a9619}{PimVif::set\_\-i\_\-am\_\-dr}: : If true, set \hyperlink{protocolthe-p}{the} PIM\_\-VIF\_\-DR flag, otherwise reset it. \item\end{DoxyCompactList}\item 
\hyperlink{classPimNbr}{PimNbr} $\ast$ \hyperlink{classPimVif_a20861cfde396ecd668ced04a1d4f4751}{pim\_\-nbr\_\-find} (const \hyperlink{classIPvX}{IPvX} \&nbr\_\-addr)
\begin{DoxyCompactList}\small\item\em \hyperlink{classPimVif_a20861cfde396ecd668ced04a1d4f4751}{PimVif::pim\_\-nbr\_\-find}: : The address of \hyperlink{protocolthe-p}{the} neighbor to search for. \item\end{DoxyCompactList}\item 
\hypertarget{classPimVif_a9a04c5fdb7e356373369e88889edeafe}{
void {\bfseries add\_\-pim\_\-nbr} (\hyperlink{classPimNbr}{PimNbr} $\ast$pim\_\-nbr)}
\label{classPimVif_a9a04c5fdb7e356373369e88889edeafe}

\item 
\hypertarget{classPimVif_a5395a6f9b20511e5cef33cfc2ddf3a38}{
int {\bfseries delete\_\-pim\_\-nbr} (\hyperlink{classPimNbr}{PimNbr} $\ast$pim\_\-nbr)}
\label{classPimVif_a5395a6f9b20511e5cef33cfc2ddf3a38}

\item 
\hypertarget{classPimVif_afd927582aec3d9cbbaed2bab03d8eb06}{
void {\bfseries delete\_\-pim\_\-nbr\_\-from\_\-nbr\_\-list} (\hyperlink{classPimNbr}{PimNbr} $\ast$pim\_\-nbr)}
\label{classPimVif_afd927582aec3d9cbbaed2bab03d8eb06}

\item 
\hypertarget{classPimVif_aa30648a6caf103684c6d55b216688e78}{
const list$<$ \hyperlink{classIPvXNet}{IPvXNet} $>$ \& {\bfseries alternative\_\-subnet\_\-list} () const }
\label{classPimVif_aa30648a6caf103684c6d55b216688e78}

\item 
\hypertarget{classPimVif_abef52deaa82be05eec36d92a6aa999f1}{
void {\bfseries add\_\-alternative\_\-subnet} (const \hyperlink{classIPvXNet}{IPvXNet} \&subnet)}
\label{classPimVif_abef52deaa82be05eec36d92a6aa999f1}

\item 
\hypertarget{classPimVif_aa1f774327e2f9be40b4ac41c5eb6ae5b}{
void {\bfseries delete\_\-alternative\_\-subnet} (const \hyperlink{classIPvXNet}{IPvXNet} \&subnet)}
\label{classPimVif_aa1f774327e2f9be40b4ac41c5eb6ae5b}

\item 
\hypertarget{classPimVif_a7d01cfc813e7317fa1a9abfc507cd914}{
void {\bfseries remove\_\-all\_\-alternative\_\-subnets} ()}
\label{classPimVif_a7d01cfc813e7317fa1a9abfc507cd914}

\item 
\hypertarget{classPimVif_ad873441dc200f9c794d59c2e5fbc09b8}{
size\_\-t {\bfseries usage\_\-by\_\-pim\_\-mre\_\-task} () const }
\label{classPimVif_ad873441dc200f9c794d59c2e5fbc09b8}

\item 
\hypertarget{classPimVif_a8d1b5b76aa918649c157c1f0912cc785}{
void {\bfseries incr\_\-usage\_\-by\_\-pim\_\-mre\_\-task} ()}
\label{classPimVif_a8d1b5b76aa918649c157c1f0912cc785}

\item 
\hypertarget{classPimVif_a4c7fadc589365270220cce4167fd6161}{
void {\bfseries decr\_\-usage\_\-by\_\-pim\_\-mre\_\-task} ()}
\label{classPimVif_a4c7fadc589365270220cce4167fd6161}

\item 
uint16\_\-t \hyperlink{classPimVif_a285e85eaaaf9e704550293f1b14f5acf}{calculate\_\-ipv6\_\-pseudo\_\-header\_\-checksum} (const \hyperlink{classIPvX}{IPvX} \&src, const \hyperlink{classIPvX}{IPvX} \&dst, size\_\-t len, uint8\_\-t protocol)
\begin{DoxyCompactList}\small\item\em Calculate \hyperlink{protocolthe-p}{the} checksum of an \hyperlink{classIPv6}{IPv6} \char`\"{}pseudo-\/header\char`\"{} as described in RFC 2460. \item\end{DoxyCompactList}\item 
\hyperlink{structbuffer__}{buffer\_\-t} $\ast$ \hyperlink{classPimVif_a0d97519cd7fd7e11c5cf0b9fef7fc48a}{buffer\_\-send\_\-prepare} ()
\begin{DoxyCompactList}\small\item\em \hyperlink{classPimVif_a0d97519cd7fd7e11c5cf0b9fef7fc48a}{PimVif::buffer\_\-send\_\-prepare}: @: \item\end{DoxyCompactList}\item 
\hyperlink{structbuffer__}{buffer\_\-t} $\ast$ \hyperlink{classPimVif_ab24bcfa28eafc12c8141d3246314bf40}{buffer\_\-send\_\-prepare} (\hyperlink{structbuffer__}{buffer\_\-t} $\ast$buffer)
\begin{DoxyCompactList}\small\item\em \hyperlink{classPimVif_a0d97519cd7fd7e11c5cf0b9fef7fc48a}{PimVif::buffer\_\-send\_\-prepare}: : The buffer to prepare. \item\end{DoxyCompactList}\item 
\hypertarget{classPimVif_a7ad87ba13129337ff4566f7f5fc4f545}{
void {\bfseries clear\_\-pim\_\-statistics} ()}
\label{classPimVif_a7ad87ba13129337ff4566f7f5fc4f545}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

\end{DoxyCompactItemize}
\subsection*{Private Types}
\begin{DoxyCompactItemize}
\item 
enum \{ {\bfseries PIM\_\-VIF\_\-DR} =  1 $<$$<$ 0
 \}
\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classPimVif_aa7e3a5ab45230c6c41ceab9bcab54abc}{
void {\bfseries hello\_\-timer\_\-timeout} ()}
\label{classPimVif_aa7e3a5ab45230c6c41ceab9bcab54abc}

\item 
\hypertarget{classPimVif_a7f2925208848cc706bfcc20e57476234}{
void {\bfseries hello\_\-once\_\-timer\_\-timeout} ()}
\label{classPimVif_a7f2925208848cc706bfcc20e57476234}

\item 
\hypertarget{classPimVif_ad5c3a79de8e68bc4a56f361b4e59b469}{
void {\bfseries set\_\-hello\_\-period\_\-callback} (uint16\_\-t v)}
\label{classPimVif_ad5c3a79de8e68bc4a56f361b4e59b469}

\item 
\hypertarget{classPimVif_a7e3df1320a1667e19742c56c7a7e2ea2}{
void {\bfseries set\_\-hello\_\-holdtime\_\-callback} (uint16\_\-t v)}
\label{classPimVif_a7e3df1320a1667e19742c56c7a7e2ea2}

\item 
\hypertarget{classPimVif_a39ae423bd94967586cbbcdc50e32f282}{
void {\bfseries set\_\-dr\_\-priority\_\-callback} (uint32\_\-t v)}
\label{classPimVif_a39ae423bd94967586cbbcdc50e32f282}

\item 
\hypertarget{classPimVif_a8d7a0b939154e2ae3db824af6fe02b53}{
void {\bfseries set\_\-propagation\_\-delay\_\-callback} (uint16\_\-t v)}
\label{classPimVif_a8d7a0b939154e2ae3db824af6fe02b53}

\item 
\hypertarget{classPimVif_a9af47e913d1cf1512dcee62951d9f037}{
void {\bfseries set\_\-override\_\-interval\_\-callback} (uint16\_\-t v)}
\label{classPimVif_a9af47e913d1cf1512dcee62951d9f037}

\item 
\hypertarget{classPimVif_a49533c78b625c247c67a1c80846c06eb}{
void {\bfseries set\_\-is\_\-tracking\_\-support\_\-disabled\_\-callback} (bool v)}
\label{classPimVif_a49533c78b625c247c67a1c80846c06eb}

\item 
\hypertarget{classPimVif_ae44e33863b7feedae9df7a60876f7f04}{
void {\bfseries set\_\-genid\_\-callback} (uint32\_\-t v)}
\label{classPimVif_ae44e33863b7feedae9df7a60876f7f04}

\item 
\hypertarget{classPimVif_a5ca94bef6b857f86346d7c680f7b950b}{
void {\bfseries set\_\-join\_\-prune\_\-period\_\-callback} (uint16\_\-t v)}
\label{classPimVif_a5ca94bef6b857f86346d7c680f7b950b}

\item 
\hypertarget{classPimVif_aeb395cf14a5ef72597e60f4f37ead2df}{
int {\bfseries jp\_\-entry\_\-add} (const \hyperlink{classIPvX}{IPvX} \&source\_\-addr, const \hyperlink{classIPvX}{IPvX} \&group\_\-addr, mrt\_\-entry\_\-type\_\-t mrt\_\-entry\_\-type, action\_\-jp\_\-t action\_\-jp, uint16\_\-t holdtime)}
\label{classPimVif_aeb395cf14a5ef72597e60f4f37ead2df}

\item 
\hypertarget{classPimVif_a34c21e7e5a2255edac9ad13adc905e41}{
int {\bfseries jp\_\-entry\_\-flush} ()}
\label{classPimVif_a34c21e7e5a2255edac9ad13adc905e41}

\item 
\hypertarget{classPimVif_afd58732363ab64cfaa065d38c0afb779}{
bool {\bfseries is\_\-send\_\-unicast\_\-bootstrap} () const }
\label{classPimVif_afd58732363ab64cfaa065d38c0afb779}

\item 
\hypertarget{classPimVif_a6f2212695e864599efad706d70b858f1}{
void {\bfseries add\_\-send\_\-unicast\_\-bootstrap\_\-nbr} (const \hyperlink{classIPvX}{IPvX} \&nbr\_\-addr)}
\label{classPimVif_a6f2212695e864599efad706d70b858f1}

\item 
\hypertarget{classPimVif_a7ac9bd52b080636c468353a4b07dc825}{
const list$<$ \hyperlink{classIPvX}{IPvX} $>$ \& {\bfseries send\_\-unicast\_\-bootstrap\_\-nbr\_\-list} () const }
\label{classPimVif_a7ac9bd52b080636c468353a4b07dc825}

\item 
\hypertarget{classPimVif_a3875867fa2a420caedd56a4ccc13254d}{
void {\bfseries delete\_\-send\_\-unicast\_\-bootstrap\_\-nbr\_\-list} ()}
\label{classPimVif_a3875867fa2a420caedd56a4ccc13254d}

\item 
\hypertarget{classPimVif_a39544abec5091f2044e9ade46138ed07}{
bool {\bfseries should\_\-send\_\-pim\_\-hello} () const }
\label{classPimVif_a39544abec5091f2044e9ade46138ed07}

\item 
\hypertarget{classPimVif_aabee03541f9abb4906bb995a81da9b15}{
void {\bfseries set\_\-should\_\-send\_\-pim\_\-hello} (bool v)}
\label{classPimVif_aabee03541f9abb4906bb995a81da9b15}

\item 
int \hyperlink{classPimVif_a15ff71c2cc38d9c90b238012a6e6df69}{pim\_\-hello\_\-recv} (\hyperlink{classPimNbr}{PimNbr} $\ast$pim\_\-nbr, const \hyperlink{classIPvX}{IPvX} \&src, const \hyperlink{classIPvX}{IPvX} \&dst, \hyperlink{structbuffer__}{buffer\_\-t} $\ast$buffer, int nbr\_\-proto\_\-version)
\begin{DoxyCompactList}\small\item\em \hyperlink{classPimVif_a15ff71c2cc38d9c90b238012a6e6df69}{PimVif::pim\_\-hello\_\-recv}: : The PIM neighbor message originator (or NULL if not a neighbor). \item\end{DoxyCompactList}\item 
int \hyperlink{classPimVif_afc76dcd9ac1716c7bf1c645b3e7353f7}{pim\_\-register\_\-recv} (\hyperlink{classPimNbr}{PimNbr} $\ast$pim\_\-nbr, const \hyperlink{classIPvX}{IPvX} \&src, const \hyperlink{classIPvX}{IPvX} \&dst, \hyperlink{structbuffer__}{buffer\_\-t} $\ast$buffer)
\begin{DoxyCompactList}\small\item\em \hyperlink{classPimVif_afc76dcd9ac1716c7bf1c645b3e7353f7}{PimVif::pim\_\-register\_\-recv}: : The PIM neighbor message originator (or NULL if not a neighbor). \item\end{DoxyCompactList}\item 
int \hyperlink{classPimVif_adc0080c8153e184d200ea9b4af35d7bf}{pim\_\-register\_\-stop\_\-recv} (\hyperlink{classPimNbr}{PimNbr} $\ast$pim\_\-nbr, const \hyperlink{classIPvX}{IPvX} \&src, const \hyperlink{classIPvX}{IPvX} \&dst, \hyperlink{structbuffer__}{buffer\_\-t} $\ast$buffer)
\begin{DoxyCompactList}\small\item\em \hyperlink{classPimVif_adc0080c8153e184d200ea9b4af35d7bf}{PimVif::pim\_\-register\_\-stop\_\-recv}: : The PIM neighbor message originator (or NULL if not a neighbor). \item\end{DoxyCompactList}\item 
int \hyperlink{classPimVif_ac8b0879083839411052a447b23345997}{pim\_\-join\_\-prune\_\-recv} (\hyperlink{classPimNbr}{PimNbr} $\ast$pim\_\-nbr, const \hyperlink{classIPvX}{IPvX} \&src, const \hyperlink{classIPvX}{IPvX} \&dst, \hyperlink{structbuffer__}{buffer\_\-t} $\ast$buffer, uint8\_\-t message\_\-type)
\begin{DoxyCompactList}\small\item\em \hyperlink{classPimVif_ac8b0879083839411052a447b23345997}{PimVif::pim\_\-join\_\-prune\_\-recv}: : The PIM neighbor message originator (or NULL if not a neighbor). \item\end{DoxyCompactList}\item 
int \hyperlink{classPimVif_a8a1f9134b4e4c5e97aefeba4d7e7fd82}{pim\_\-bootstrap\_\-recv} (\hyperlink{classPimNbr}{PimNbr} $\ast$pim\_\-nbr, const \hyperlink{classIPvX}{IPvX} \&src, const \hyperlink{classIPvX}{IPvX} \&dst, \hyperlink{structbuffer__}{buffer\_\-t} $\ast$buffer)
\begin{DoxyCompactList}\small\item\em \hyperlink{classPimVif_a8a1f9134b4e4c5e97aefeba4d7e7fd82}{PimVif::pim\_\-bootstrap\_\-recv}: : The PIM neighbor message originator (or NULL if not a neighbor). \item\end{DoxyCompactList}\item 
int \hyperlink{classPimVif_a46462a59bc958087b1691b7d55809b0f}{pim\_\-assert\_\-recv} (\hyperlink{classPimNbr}{PimNbr} $\ast$pim\_\-nbr, const \hyperlink{classIPvX}{IPvX} \&src, const \hyperlink{classIPvX}{IPvX} \&dst, \hyperlink{structbuffer__}{buffer\_\-t} $\ast$buffer)
\begin{DoxyCompactList}\small\item\em \hyperlink{classPimVif_a46462a59bc958087b1691b7d55809b0f}{PimVif::pim\_\-assert\_\-recv}: : The PIM neighbor message originator (or NULL if not a neighbor). \item\end{DoxyCompactList}\item 
int \hyperlink{classPimVif_a0551d6a77a0eeb9fdc7b24c2200df94f}{pim\_\-graft\_\-recv} (\hyperlink{classPimNbr}{PimNbr} $\ast$pim\_\-nbr, const \hyperlink{classIPvX}{IPvX} \&src, const \hyperlink{classIPvX}{IPvX} \&dst, \hyperlink{structbuffer__}{buffer\_\-t} $\ast$buffer)
\begin{DoxyCompactList}\small\item\em \hyperlink{classPimVif_a0551d6a77a0eeb9fdc7b24c2200df94f}{PimVif::pim\_\-graft\_\-recv}: : The PIM neighbor message originator (or NULL if not a neighbor). \item\end{DoxyCompactList}\item 
int \hyperlink{classPimVif_ae365135abeb8882ee5984ce1793b8a69}{pim\_\-graft\_\-ack\_\-recv} (\hyperlink{classPimNbr}{PimNbr} $\ast$pim\_\-nbr, const \hyperlink{classIPvX}{IPvX} \&src, const \hyperlink{classIPvX}{IPvX} \&dst, \hyperlink{structbuffer__}{buffer\_\-t} $\ast$buffer)
\begin{DoxyCompactList}\small\item\em \hyperlink{classPimVif_ae365135abeb8882ee5984ce1793b8a69}{PimVif::pim\_\-graft\_\-ack\_\-recv}: : The PIM neighbor message originator (or NULL if not a neighbor). \item\end{DoxyCompactList}\item 
int \hyperlink{classPimVif_a4e0c263fef21c3d0085205fc4fd540a4}{pim\_\-cand\_\-rp\_\-adv\_\-recv} (\hyperlink{classPimNbr}{PimNbr} $\ast$pim\_\-nbr, const \hyperlink{classIPvX}{IPvX} \&src, const \hyperlink{classIPvX}{IPvX} \&dst, \hyperlink{structbuffer__}{buffer\_\-t} $\ast$buffer)
\begin{DoxyCompactList}\small\item\em \hyperlink{classPimVif_a4e0c263fef21c3d0085205fc4fd540a4}{PimVif::pim\_\-cand\_\-rp\_\-adv\_\-recv}: : The PIM neighbor message originator (or NULL if not a neighbor). \item\end{DoxyCompactList}\item 
int \hyperlink{classPimVif_a0be134873d0091e97b8d731e6b48c531}{pim\_\-process} (const \hyperlink{classIPvX}{IPvX} \&src, const \hyperlink{classIPvX}{IPvX} \&dst, \hyperlink{structbuffer__}{buffer\_\-t} $\ast$buffer)
\begin{DoxyCompactList}\small\item\em \hyperlink{classPimVif_a0be134873d0091e97b8d731e6b48c531}{PimVif::pim\_\-process}: : The message source address. \item\end{DoxyCompactList}\item 
\hypertarget{classPimVif_a6528e434fd5e593bb16c3cf0c8cf4f97}{
int {\bfseries pim\_\-assert\_\-process} (\hyperlink{classPimNbr}{PimNbr} $\ast$pim\_\-nbr, const \hyperlink{classIPvX}{IPvX} \&src, const \hyperlink{classIPvX}{IPvX} \&dst, const \hyperlink{classIPvX}{IPvX} \&assert\_\-source\_\-addr, const \hyperlink{classIPvX}{IPvX} \&assert\_\-group\_\-addr, uint8\_\-t assert\_\-group\_\-mask\_\-len, \hyperlink{classAssertMetric}{AssertMetric} $\ast$assert\_\-metric)}
\label{classPimVif_a6528e434fd5e593bb16c3cf0c8cf4f97}

\item 
\hypertarget{classPimVif_ae121f52859b9823f9445f2b9884fd725}{
int {\bfseries pim\_\-register\_\-stop\_\-process} (const \hyperlink{classIPvX}{IPvX} \&rp\_\-addr, const \hyperlink{classIPvX}{IPvX} \&source\_\-addr, const \hyperlink{classIPvX}{IPvX} \&group\_\-addr, uint8\_\-t group\_\-mask\_\-len)}
\label{classPimVif_ae121f52859b9823f9445f2b9884fd725}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classPimVif_a758dd1a9946dff84ef4193239817fdc7}{
\hyperlink{classPimNode}{PimNode} $\ast$ {\bfseries \_\-pim\_\-node}}
\label{classPimVif_a758dd1a9946dff84ef4193239817fdc7}

\item 
\hypertarget{classPimVif_a0870cbce36a5048126d127355889d10e}{
\hyperlink{structbuffer__}{buffer\_\-t} $\ast$ {\bfseries \_\-buffer\_\-send}}
\label{classPimVif_a0870cbce36a5048126d127355889d10e}

\item 
\hypertarget{classPimVif_a04f103376c4cdbb40d38c5b9ac3463d1}{
\hyperlink{structbuffer__}{buffer\_\-t} $\ast$ {\bfseries \_\-buffer\_\-send\_\-hello}}
\label{classPimVif_a04f103376c4cdbb40d38c5b9ac3463d1}

\item 
\hypertarget{classPimVif_a43c09e7becff2e393859e93c33e2365c}{
\hyperlink{structbuffer__}{buffer\_\-t} $\ast$ {\bfseries \_\-buffer\_\-send\_\-bootstrap}}
\label{classPimVif_a43c09e7becff2e393859e93c33e2365c}

\item 
\hypertarget{classPimVif_a02654e20b23ad5ab25cb0386d0770d46}{
uint32\_\-t {\bfseries \_\-proto\_\-flags}}
\label{classPimVif_a02654e20b23ad5ab25cb0386d0770d46}

\item 
\hypertarget{classPimVif_ae0be56778fd34b42370ab7bd79641700}{
\hyperlink{classIPvX}{IPvX} {\bfseries \_\-dr\_\-addr}}
\label{classPimVif_ae0be56778fd34b42370ab7bd79641700}

\item 
\hypertarget{classPimVif_af3b434e96ad3d9f2f12edfcc6e8d857b}{
\hyperlink{classXorpTimer}{XorpTimer} {\bfseries \_\-hello\_\-timer}}
\label{classPimVif_af3b434e96ad3d9f2f12edfcc6e8d857b}

\item 
\hypertarget{classPimVif_a4b785e2353e488a258e57d7c96397dea}{
\hyperlink{classXorpTimer}{XorpTimer} {\bfseries \_\-hello\_\-once\_\-timer}}
\label{classPimVif_a4b785e2353e488a258e57d7c96397dea}

\item 
\hypertarget{classPimVif_acc33013c35092f9b65bd75bab99bbd6f}{
list$<$ \hyperlink{classPimNbr}{PimNbr} $\ast$ $>$ {\bfseries \_\-pim\_\-nbrs}}
\label{classPimVif_acc33013c35092f9b65bd75bab99bbd6f}

\item 
\hypertarget{classPimVif_ad8b65e6a4f646dd56655f3cb9fb509d0}{
\hyperlink{classPimNbr}{PimNbr} {\bfseries \_\-pim\_\-nbr\_\-me}}
\label{classPimVif_ad8b65e6a4f646dd56655f3cb9fb509d0}

\item 
\hypertarget{classPimVif_a4baed2e293df6518dde833c8412d8cff}{
\hyperlink{classIPvX}{IPvX} {\bfseries \_\-domain\_\-wide\_\-addr}}
\label{classPimVif_a4baed2e293df6518dde833c8412d8cff}

\item 
\hypertarget{classPimVif_a3082ce064ca115933c79dd5fb880513f}{
list$<$ \hyperlink{classIPvX}{IPvX} $>$ {\bfseries \_\-send\_\-unicast\_\-bootstrap\_\-nbr\_\-list}}
\label{classPimVif_a3082ce064ca115933c79dd5fb880513f}

\item 
\hypertarget{classPimVif_a295d565f0dc89c1d6e3cd667541becd6}{
list$<$ \hyperlink{classIPvXNet}{IPvXNet} $>$ {\bfseries \_\-alternative\_\-subnet\_\-list}}
\label{classPimVif_a295d565f0dc89c1d6e3cd667541becd6}

\item 
\hypertarget{classPimVif_af398fcd8b1f5bb434d3cce632fd28b22}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint16\_\-t $>$ {\bfseries \_\-hello\_\-triggered\_\-delay}}
\label{classPimVif_af398fcd8b1f5bb434d3cce632fd28b22}

\item 
\hypertarget{classPimVif_a69e4f43cc0118de1b1c55d13e65bd9db}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint16\_\-t $>$ {\bfseries \_\-hello\_\-period}}
\label{classPimVif_a69e4f43cc0118de1b1c55d13e65bd9db}

\item 
\hypertarget{classPimVif_a4c94a27aa9add7e2dfe175b7f1fb7bce}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint16\_\-t $>$ {\bfseries \_\-hello\_\-holdtime}}
\label{classPimVif_a4c94a27aa9add7e2dfe175b7f1fb7bce}

\item 
\hypertarget{classPimVif_a00b183eb41f76b2d9cbab8a57684d931}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-dr\_\-priority}}
\label{classPimVif_a00b183eb41f76b2d9cbab8a57684d931}

\item 
\hypertarget{classPimVif_aa394c4df7922c188195786dc19f2337b}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint16\_\-t $>$ {\bfseries \_\-propagation\_\-delay}}
\label{classPimVif_aa394c4df7922c188195786dc19f2337b}

\item 
\hypertarget{classPimVif_ab7dab34ffe1b88bf96eb86d40a1fc231}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint16\_\-t $>$ {\bfseries \_\-override\_\-interval}}
\label{classPimVif_ab7dab34ffe1b88bf96eb86d40a1fc231}

\item 
\hypertarget{classPimVif_a56fc31b03fa0367770df83e35a1616a1}{
\hyperlink{classConfigParam}{ConfigParam}$<$ bool $>$ {\bfseries \_\-is\_\-tracking\_\-support\_\-disabled}}
\label{classPimVif_a56fc31b03fa0367770df83e35a1616a1}

\item 
\hypertarget{classPimVif_ab41da40f25e6b8f4f4f5dbb8b5e7ded2}{
\hyperlink{classConfigParam}{ConfigParam}$<$ bool $>$ {\bfseries \_\-accept\_\-nohello\_\-neighbors}}
\label{classPimVif_ab41da40f25e6b8f4f4f5dbb8b5e7ded2}

\item 
\hypertarget{classPimVif_a5d765878b1a46a424104274f47ca67fb}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-genid}}
\label{classPimVif_a5d765878b1a46a424104274f47ca67fb}

\item 
\hypertarget{classPimVif_ab3a2f3a8c97b574913ba2720c9d1b0c1}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint16\_\-t $>$ {\bfseries \_\-join\_\-prune\_\-period}}
\label{classPimVif_ab3a2f3a8c97b574913ba2720c9d1b0c1}

\item 
\hypertarget{classPimVif_a5451f2695abe540ea1985871cec1ebc8}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint16\_\-t $>$ {\bfseries \_\-join\_\-prune\_\-holdtime}}
\label{classPimVif_a5451f2695abe540ea1985871cec1ebc8}

\item 
\hypertarget{classPimVif_ab165b107f89bf901df9c9ac445b4b937}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-assert\_\-time}}
\label{classPimVif_ab165b107f89bf901df9c9ac445b4b937}

\item 
\hypertarget{classPimVif_aa0e6ac4875cde0eb54a6b9c099b8bc06}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-assert\_\-override\_\-interval}}
\label{classPimVif_aa0e6ac4875cde0eb54a6b9c099b8bc06}

\item 
\hypertarget{classPimVif_ad7a87e03c703f20eebc8a588f7c4a14e}{
bool {\bfseries \_\-should\_\-send\_\-pim\_\-hello}}
\label{classPimVif_ad7a87e03c703f20eebc8a588f7c4a14e}

\item 
\hypertarget{classPimVif_a90c7ddd5041890c25c84ebd8f06e4edd}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-hello\_\-messages\_\-received}}
\label{classPimVif_a90c7ddd5041890c25c84ebd8f06e4edd}

\item 
\hypertarget{classPimVif_aac1a5c951ff97e472454f01bf0482b68}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-hello\_\-messages\_\-sent}}
\label{classPimVif_aac1a5c951ff97e472454f01bf0482b68}

\item 
\hypertarget{classPimVif_a61894bcfa0c3b3e38b09dae779c99126}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-hello\_\-messages\_\-rx\_\-errors}}
\label{classPimVif_a61894bcfa0c3b3e38b09dae779c99126}

\item 
\hypertarget{classPimVif_a6fb7f7dc03a03445225d45e485731cb6}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-register\_\-messages\_\-received}}
\label{classPimVif_a6fb7f7dc03a03445225d45e485731cb6}

\item 
\hypertarget{classPimVif_a15a5286347342e333b38ee9e9a9c8ae7}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-register\_\-messages\_\-sent}}
\label{classPimVif_a15a5286347342e333b38ee9e9a9c8ae7}

\item 
\hypertarget{classPimVif_a8d0865511cf1b3455ca1218194428a7e}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-register\_\-messages\_\-rx\_\-errors}}
\label{classPimVif_a8d0865511cf1b3455ca1218194428a7e}

\item 
\hypertarget{classPimVif_a3f91687dc9735c0e02404e36f2939730}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-register\_\-stop\_\-messages\_\-received}}
\label{classPimVif_a3f91687dc9735c0e02404e36f2939730}

\item 
\hypertarget{classPimVif_ae18968d0b9e32fbff3b431cf6629904c}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-register\_\-stop\_\-messages\_\-sent}}
\label{classPimVif_ae18968d0b9e32fbff3b431cf6629904c}

\item 
\hypertarget{classPimVif_a727d4b8ed12a5f2c71efc3972c969f51}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-register\_\-stop\_\-messages\_\-rx\_\-errors}}
\label{classPimVif_a727d4b8ed12a5f2c71efc3972c969f51}

\item 
\hypertarget{classPimVif_aaf86c3fdec37fd59fbea30cdd9daf8e9}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-join\_\-prune\_\-messages\_\-received}}
\label{classPimVif_aaf86c3fdec37fd59fbea30cdd9daf8e9}

\item 
\hypertarget{classPimVif_a0aea62fe0aa404686a316482b035a779}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-join\_\-prune\_\-messages\_\-sent}}
\label{classPimVif_a0aea62fe0aa404686a316482b035a779}

\item 
\hypertarget{classPimVif_a72cefd0e412eeb5dc81ebdffccb580e1}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-join\_\-prune\_\-messages\_\-rx\_\-errors}}
\label{classPimVif_a72cefd0e412eeb5dc81ebdffccb580e1}

\item 
\hypertarget{classPimVif_adfa58425569790b3348f040936b7937f}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-bootstrap\_\-messages\_\-received}}
\label{classPimVif_adfa58425569790b3348f040936b7937f}

\item 
\hypertarget{classPimVif_a1a41935b445e8aa272b046f7fa281a8c}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-bootstrap\_\-messages\_\-sent}}
\label{classPimVif_a1a41935b445e8aa272b046f7fa281a8c}

\item 
\hypertarget{classPimVif_a84615535860410638461bed6eb788df0}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-bootstrap\_\-messages\_\-rx\_\-errors}}
\label{classPimVif_a84615535860410638461bed6eb788df0}

\item 
\hypertarget{classPimVif_a22abced8e336001fd9a77a29bb43a3e2}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-assert\_\-messages\_\-received}}
\label{classPimVif_a22abced8e336001fd9a77a29bb43a3e2}

\item 
\hypertarget{classPimVif_afe644573df613fdae9e296f940f02568}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-assert\_\-messages\_\-sent}}
\label{classPimVif_afe644573df613fdae9e296f940f02568}

\item 
\hypertarget{classPimVif_a923b8714eeae077e61d5b0ed2784561c}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-assert\_\-messages\_\-rx\_\-errors}}
\label{classPimVif_a923b8714eeae077e61d5b0ed2784561c}

\item 
\hypertarget{classPimVif_ace37b75957aea1fec35c1347f9acd67a}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-graft\_\-messages\_\-received}}
\label{classPimVif_ace37b75957aea1fec35c1347f9acd67a}

\item 
\hypertarget{classPimVif_a8a21d4fbc56b6c8ea51da448d44cc483}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-graft\_\-messages\_\-sent}}
\label{classPimVif_a8a21d4fbc56b6c8ea51da448d44cc483}

\item 
\hypertarget{classPimVif_a4c22f45a4e8eaa5990d2b3efbf2c14f8}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-graft\_\-messages\_\-rx\_\-errors}}
\label{classPimVif_a4c22f45a4e8eaa5990d2b3efbf2c14f8}

\item 
\hypertarget{classPimVif_a9147f95e43c577fee0b5147104a4eec9}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-graft\_\-ack\_\-messages\_\-received}}
\label{classPimVif_a9147f95e43c577fee0b5147104a4eec9}

\item 
\hypertarget{classPimVif_a3c6f006a00803ce8d4f9ebd81180b781}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-graft\_\-ack\_\-messages\_\-sent}}
\label{classPimVif_a3c6f006a00803ce8d4f9ebd81180b781}

\item 
\hypertarget{classPimVif_a248d57060f9629f89a2b19dc36a95359}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-graft\_\-ack\_\-messages\_\-rx\_\-errors}}
\label{classPimVif_a248d57060f9629f89a2b19dc36a95359}

\item 
\hypertarget{classPimVif_a321260c911024b5eacaf1d4ff27a7623}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-candidate\_\-rp\_\-messages\_\-received}}
\label{classPimVif_a321260c911024b5eacaf1d4ff27a7623}

\item 
\hypertarget{classPimVif_abda948861524d2e27d619096df4261b3}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-candidate\_\-rp\_\-messages\_\-sent}}
\label{classPimVif_abda948861524d2e27d619096df4261b3}

\item 
\hypertarget{classPimVif_aadc7b611440752ac2140433bb44dbac3}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-candidate\_\-rp\_\-messages\_\-rx\_\-errors}}
\label{classPimVif_aadc7b611440752ac2140433bb44dbac3}

\item 
\hypertarget{classPimVif_a194c0e03cf43bca2161de8cb149862c3}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-unknown\_\-type\_\-messages}}
\label{classPimVif_a194c0e03cf43bca2161de8cb149862c3}

\item 
\hypertarget{classPimVif_a6be6edebf5e05c3a8d60755296697fcc}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-unknown\_\-version\_\-messages}}
\label{classPimVif_a6be6edebf5e05c3a8d60755296697fcc}

\item 
\hypertarget{classPimVif_a32c860342c8a0268c2b4d91be513f256}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-neighbor\_\-unknown\_\-messages}}
\label{classPimVif_a32c860342c8a0268c2b4d91be513f256}

\item 
\hypertarget{classPimVif_a5a8c127c12987824bcd31ed537c4dc15}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-bad\_\-length\_\-messages}}
\label{classPimVif_a5a8c127c12987824bcd31ed537c4dc15}

\item 
\hypertarget{classPimVif_a8b99316a75c55361daf27882775cc0ac}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-bad\_\-checksum\_\-messages}}
\label{classPimVif_a8b99316a75c55361daf27882775cc0ac}

\item 
\hypertarget{classPimVif_aaa4893c9cd7faa7ee912389e3e39e477}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-bad\_\-receive\_\-interface\_\-messages}}
\label{classPimVif_aaa4893c9cd7faa7ee912389e3e39e477}

\item 
\hypertarget{classPimVif_a9eb0f6a50eacc8483591ad08d6a00988}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-interface\_\-disabled\_\-messages}}
\label{classPimVif_a9eb0f6a50eacc8483591ad08d6a00988}

\item 
\hypertarget{classPimVif_af0ea465f151c396a1f9f35ddc6e37504}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-register\_\-not\_\-rp}}
\label{classPimVif_af0ea465f151c396a1f9f35ddc6e37504}

\item 
\hypertarget{classPimVif_a35d2270cbc24f198cc254382bc0a477f}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rp\_\-filtered\_\-source}}
\label{classPimVif_a35d2270cbc24f198cc254382bc0a477f}

\item 
\hypertarget{classPimVif_a9fe0c3ff851e68ca3f13cbb52ed3a27a}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-unknown\_\-register\_\-stop}}
\label{classPimVif_a9fe0c3ff851e68ca3f13cbb52ed3a27a}

\item 
\hypertarget{classPimVif_aaed4c688cdd8c3c0847ecf224363b159}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-join\_\-prune\_\-no\_\-state}}
\label{classPimVif_aaed4c688cdd8c3c0847ecf224363b159}

\item 
\hypertarget{classPimVif_a698c7458ce6e79534017d9ac16e4c337}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-graft\_\-graft\_\-ack\_\-no\_\-state}}
\label{classPimVif_a698c7458ce6e79534017d9ac16e4c337}

\item 
\hypertarget{classPimVif_a1a6ee3141d1025f8b52ce390ca9a9c2f}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-graft\_\-on\_\-upstream\_\-interface}}
\label{classPimVif_a1a6ee3141d1025f8b52ce390ca9a9c2f}

\item 
\hypertarget{classPimVif_a3428d1d629ac31450f87737651483f28}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-candidate\_\-rp\_\-not\_\-bsr}}
\label{classPimVif_a3428d1d629ac31450f87737651483f28}

\item 
\hypertarget{classPimVif_ac654ffff93572da78b1c39624a4dc749}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-bsr\_\-when\_\-bsr}}
\label{classPimVif_ac654ffff93572da78b1c39624a4dc749}

\item 
\hypertarget{classPimVif_acbaeafb8d75de950efe993406d2941b0}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-bsr\_\-not\_\-rpf\_\-interface}}
\label{classPimVif_acbaeafb8d75de950efe993406d2941b0}

\item 
\hypertarget{classPimVif_ad200f17f5389c0381ce8204b96a750a8}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-unknown\_\-hello\_\-option}}
\label{classPimVif_ad200f17f5389c0381ce8204b96a750a8}

\item 
\hypertarget{classPimVif_a0b0d9c26d2492fa75c26dd5e48a7499c}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-data\_\-no\_\-state}}
\label{classPimVif_a0b0d9c26d2492fa75c26dd5e48a7499c}

\item 
\hypertarget{classPimVif_a58b41e1f3eb4877d4d420a0734c30b96}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-rp\_\-no\_\-state}}
\label{classPimVif_a58b41e1f3eb4877d4d420a0734c30b96}

\item 
\hypertarget{classPimVif_acacac0a507985facffdce8b9353a1fee}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-aggregate}}
\label{classPimVif_acacac0a507985facffdce8b9353a1fee}

\item 
\hypertarget{classPimVif_a0d485660d6825a15afd6f17390f11c90}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-malformed\_\-packet}}
\label{classPimVif_a0d485660d6825a15afd6f17390f11c90}

\item 
\hypertarget{classPimVif_a3feb499f0891eb9d211ab47e6b6a8987}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-no\_\-rp}}
\label{classPimVif_a3feb499f0891eb9d211ab47e6b6a8987}

\item 
\hypertarget{classPimVif_ad49b85acc775be761238683dd532162a}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-no\_\-route\_\-upstream}}
\label{classPimVif_ad49b85acc775be761238683dd532162a}

\item 
\hypertarget{classPimVif_aee865516d98036a58d85ce825355127d}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rp\_\-mismatch}}
\label{classPimVif_aee865516d98036a58d85ce825355127d}

\item 
\hypertarget{classPimVif_a58b214ecac882fb4c7a24c5d83516c77}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rpf\_\-neighbor\_\-unknown}}
\label{classPimVif_a58b214ecac882fb4c7a24c5d83516c77}

\item 
\hypertarget{classPimVif_abc2131d3a2cdd10f52f764677ef134b4}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-join\_\-rp}}
\label{classPimVif_abc2131d3a2cdd10f52f764677ef134b4}

\item 
\hypertarget{classPimVif_a5f80a43b495cf4a9a147330dc4f89328}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-prune\_\-rp}}
\label{classPimVif_a5f80a43b495cf4a9a147330dc4f89328}

\item 
\hypertarget{classPimVif_a51c44abe515793d7e80d40805aeab5b4}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-join\_\-wc}}
\label{classPimVif_a51c44abe515793d7e80d40805aeab5b4}

\item 
\hypertarget{classPimVif_a5f95a1faf7317a7412e7141dd8b6fca0}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-prune\_\-wc}}
\label{classPimVif_a5f95a1faf7317a7412e7141dd8b6fca0}

\item 
\hypertarget{classPimVif_ae524fdc62d88a3786dde9accb15b486b}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-join\_\-sg}}
\label{classPimVif_ae524fdc62d88a3786dde9accb15b486b}

\item 
\hypertarget{classPimVif_a1b471226ab09c9c712f4cc0b7e9673f0}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-prune\_\-sg}}
\label{classPimVif_a1b471226ab09c9c712f4cc0b7e9673f0}

\item 
\hypertarget{classPimVif_aee5be7c16d60bead638f82b61e8096d5}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-join\_\-sg\_\-rpt}}
\label{classPimVif_aee5be7c16d60bead638f82b61e8096d5}

\item 
\hypertarget{classPimVif_a6cb73bdb9b8f1afb1807a002563bea81}{
\hyperlink{classConfigParam}{ConfigParam}$<$ uint32\_\-t $>$ {\bfseries \_\-pimstat\_\-rx\_\-prune\_\-sg\_\-rpt}}
\label{classPimVif_a6cb73bdb9b8f1afb1807a002563bea81}

\item 
\hypertarget{classPimVif_a971ca76dd251510500002ded7be50ccb}{
size\_\-t {\bfseries \_\-usage\_\-by\_\-pim\_\-mre\_\-task}}
\label{classPimVif_a971ca76dd251510500002ded7be50ccb}

\item 
\hypertarget{classPimVif_a16aa206f3e7553ddb2fab0a405b93576}{
bool {\bfseries wants\_\-to\_\-be\_\-started}}
\label{classPimVif_a16aa206f3e7553ddb2fab0a405b93576}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
A class for PIM-\/specific virtual interface. 

\subsection{Constructor \& Destructor Documentation}
\hypertarget{classPimVif_a64b5fb9ab97e8c2b16a79773a68f12b7}{
\index{PimVif@{PimVif}!PimVif@{PimVif}}
\index{PimVif@{PimVif}!PimVif@{PimVif}}
\subsubsection[{PimVif}]{\setlength{\rightskip}{0pt plus 5cm}PimVif::PimVif (
\begin{DoxyParamCaption}
\item[{{\bf PimNode} $\ast$}]{pim\_\-node, }
\item[{const {\bf Vif} \&}]{vif}
\end{DoxyParamCaption}
)}}
\label{classPimVif_a64b5fb9ab97e8c2b16a79773a68f12b7}


Constructor for a given PIM node and a generic virtual interface. 

\hyperlink{classPimVif_a64b5fb9ab97e8c2b16a79773a68f12b7}{PimVif::PimVif}: : The PIM node this interface belongs to.


\begin{DoxyParams}{Parameters}
{\em pim\_\-node} & \hyperlink{protocolthe-p}{the} \hyperlink{classPimNode}{PimNode} this interface belongs to. \\
\hline
{\em vif} & \hyperlink{protocolthe-p}{the} generic \hyperlink{classVif}{Vif} interface that contains various information.\\
\hline
\end{DoxyParams}
: The generic \hyperlink{classVif}{Vif} interface that contains various information.

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


Destructor. 

\hyperlink{classPimVif_ad37ba7772323b4c9db01b95a535f7c38}{PimVif::$\sim$PimVif}: @:

PIM protocol vif destructor. 

\subsection{Member Function Documentation}
\hypertarget{classPimVif_a0d97519cd7fd7e11c5cf0b9fef7fc48a}{
\index{PimVif@{PimVif}!buffer\_\-send\_\-prepare@{buffer\_\-send\_\-prepare}}
\index{buffer\_\-send\_\-prepare@{buffer\_\-send\_\-prepare}!PimVif@{PimVif}}
\subsubsection[{buffer\_\-send\_\-prepare}]{\setlength{\rightskip}{0pt plus 5cm}{\bf buffer\_\-t} $\ast$ PimVif::buffer\_\-send\_\-prepare (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classPimVif_a0d97519cd7fd7e11c5cf0b9fef7fc48a}


\hyperlink{classPimVif_a0d97519cd7fd7e11c5cf0b9fef7fc48a}{PimVif::buffer\_\-send\_\-prepare}: @: 

Reset and prepare \hyperlink{protocolthe-p}{the} default buffer for sending data.

Return value: The prepared buffer. \hypertarget{classPimVif_ab24bcfa28eafc12c8141d3246314bf40}{
\index{PimVif@{PimVif}!buffer\_\-send\_\-prepare@{buffer\_\-send\_\-prepare}}
\index{buffer\_\-send\_\-prepare@{buffer\_\-send\_\-prepare}!PimVif@{PimVif}}
\subsubsection[{buffer\_\-send\_\-prepare}]{\setlength{\rightskip}{0pt plus 5cm}{\bf buffer\_\-t} $\ast$ PimVif::buffer\_\-send\_\-prepare (
\begin{DoxyParamCaption}
\item[{{\bf buffer\_\-t} $\ast$}]{buffer}
\end{DoxyParamCaption}
)}}
\label{classPimVif_ab24bcfa28eafc12c8141d3246314bf40}


\hyperlink{classPimVif_a0d97519cd7fd7e11c5cf0b9fef7fc48a}{PimVif::buffer\_\-send\_\-prepare}: : The buffer to prepare. 

Reset and prepare buffer  for sendign data.

Return value: The prepared buffer. \hypertarget{classPimVif_a285e85eaaaf9e704550293f1b14f5acf}{
\index{PimVif@{PimVif}!calculate\_\-ipv6\_\-pseudo\_\-header\_\-checksum@{calculate\_\-ipv6\_\-pseudo\_\-header\_\-checksum}}
\index{calculate\_\-ipv6\_\-pseudo\_\-header\_\-checksum@{calculate\_\-ipv6\_\-pseudo\_\-header\_\-checksum}!PimVif@{PimVif}}
\subsubsection[{calculate\_\-ipv6\_\-pseudo\_\-header\_\-checksum}]{\setlength{\rightskip}{0pt plus 5cm}uint16\_\-t PimVif::calculate\_\-ipv6\_\-pseudo\_\-header\_\-checksum (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{src, }
\item[{const {\bf IPvX} \&}]{dst, }
\item[{size\_\-t}]{len, }
\item[{uint8\_\-t}]{protocol}
\end{DoxyParamCaption}
)}}
\label{classPimVif_a285e85eaaaf9e704550293f1b14f5acf}


Calculate \hyperlink{protocolthe-p}{the} checksum of an \hyperlink{classIPv6}{IPv6} \char`\"{}pseudo-\/header\char`\"{} as described in RFC 2460. 


\begin{DoxyParams}{Parameters}
{\em src} & \hyperlink{protocolthe-p}{the} source address of \hyperlink{protocolthe-p}{the} pseudo-\/header. \\
\hline
{\em dst} & \hyperlink{protocolthe-p}{the} destination address of \hyperlink{protocolthe-p}{the} pseudo-\/header. \\
\hline
{\em len} & \hyperlink{protocolthe-p}{the} upper-\/layer packet length of \hyperlink{protocolthe-p}{the} pseudo-\/header (in host-\/order). \\
\hline
{\em protocol} & \hyperlink{protocolthe-p}{the} upper-\/layer protocol number. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} checksum of \hyperlink{protocolthe-p}{the} \hyperlink{classIPv6}{IPv6} \char`\"{}pseudo-\/header\char`\"{}. 
\end{DoxyReturn}
\hypertarget{classPimVif_a2d6694db8bbc75c0ab75f4a19d362b2c}{
\index{PimVif@{PimVif}!disable@{disable}}
\index{disable@{disable}!PimVif@{PimVif}}
\subsubsection[{disable}]{\setlength{\rightskip}{0pt plus 5cm}void PimVif::disable (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classPimVif_a2d6694db8bbc75c0ab75f4a19d362b2c}


Disable PIM on a single virtual interface. 

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{classPimVif_a05ed56e9b07dbccbee32956bd6fb39f2}{
\index{PimVif@{PimVif}!domain\_\-wide\_\-addr@{domain\_\-wide\_\-addr}}
\index{domain\_\-wide\_\-addr@{domain\_\-wide\_\-addr}!PimVif@{PimVif}}
\subsubsection[{domain\_\-wide\_\-addr}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf IPvX}\& PimVif::domain\_\-wide\_\-addr (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPimVif_a05ed56e9b07dbccbee32956bd6fb39f2}


Get my domain-\/wide reachable address on this interface. 

\begin{DoxyReturn}{Returns}
my domain-\/wide reachable address on this interface. 
\end{DoxyReturn}
\hypertarget{classPimVif_a6ae745d93d513f0bb118f1c37dc4161d}{
\index{PimVif@{PimVif}!dr\_\-addr@{dr\_\-addr}}
\index{dr\_\-addr@{dr\_\-addr}!PimVif@{PimVif}}
\subsubsection[{dr\_\-addr}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf IPvX}\& PimVif::dr\_\-addr (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPimVif_a6ae745d93d513f0bb118f1c37dc4161d}


Get \hyperlink{protocolthe-p}{the} address of \hyperlink{protocolthe-p}{the} Designated Router on this interface. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} address of \hyperlink{protocolthe-p}{the} Designated Router on this interface. 
\end{DoxyReturn}
\hypertarget{classPimVif_af49b5f9853a4fb6171f8dbb7f27d809a}{
\index{PimVif@{PimVif}!enable@{enable}}
\index{enable@{enable}!PimVif@{PimVif}}
\subsubsection[{enable}]{\setlength{\rightskip}{0pt plus 5cm}void PimVif::enable (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classPimVif_af49b5f9853a4fb6171f8dbb7f27d809a}


Enable PIM on a single virtual interface. 

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

Reimplemented from \hyperlink{classProtoState_a9e91d1d442f873cf6bf914db996519e7}{ProtoState}.

\hypertarget{classPimVif_a23cc520327fff4d957f1c74855f5cb4a}{
\index{PimVif@{PimVif}!final\_\-stop@{final\_\-stop}}
\index{final\_\-stop@{final\_\-stop}!PimVif@{PimVif}}
\subsubsection[{final\_\-stop}]{\setlength{\rightskip}{0pt plus 5cm}int PimVif::final\_\-stop (
\begin{DoxyParamCaption}
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPimVif_a23cc520327fff4d957f1c74855f5cb4a}


Completely stop PIM on a single virtual interface. 

\hyperlink{classPimVif_a23cc520327fff4d957f1c74855f5cb4a}{PimVif::final\_\-stop}: : The error message (if error).

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


\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}
Completely stop PIM on a single virtual interface.

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


Get \hyperlink{protocolthe-p}{the} string with \hyperlink{protocolthe-p}{the} flags about \hyperlink{protocolthe-p}{the} vif status. 

TODO: temporary here. Should go to \hyperlink{protocolthe-p}{the} \hyperlink{classVif}{Vif} class after \hyperlink{protocolthe-p}{the} \hyperlink{classVif}{Vif} class starts using \hyperlink{protocolthe-p}{the} Proto class.

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} C++ style string with \hyperlink{protocolthe-p}{the} flags about \hyperlink{protocolthe-p}{the} vif status (e.g., UP/DOWN/DISABLED, etc). 
\end{DoxyReturn}
\hypertarget{classPimVif_ac9cc63910bd6a94cc2750238d05a51d3}{
\index{PimVif@{PimVif}!i\_\-am\_\-dr@{i\_\-am\_\-dr}}
\index{i\_\-am\_\-dr@{i\_\-am\_\-dr}!PimVif@{PimVif}}
\subsubsection[{i\_\-am\_\-dr}]{\setlength{\rightskip}{0pt plus 5cm}bool PimVif::i\_\-am\_\-dr (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classPimVif_ac9cc63910bd6a94cc2750238d05a51d3}


\hyperlink{classPimVif_ac9cc63910bd6a94cc2750238d05a51d3}{PimVif::i\_\-am\_\-dr}: @: 

Test if \hyperlink{protocolthe-p}{the} protocol instance is a DR (Designated Router) on a virtual interface.

Return value: True if \hyperlink{protocolthe-p}{the} protocol instance is DR on a virtual interface, otherwise false. \hypertarget{classPimVif_aeb10ea88742f572a65831d391b94a0a6}{
\index{PimVif@{PimVif}!i\_\-may\_\-become\_\-dr@{i\_\-may\_\-become\_\-dr}}
\index{i\_\-may\_\-become\_\-dr@{i\_\-may\_\-become\_\-dr}!PimVif@{PimVif}}
\subsubsection[{i\_\-may\_\-become\_\-dr}]{\setlength{\rightskip}{0pt plus 5cm}bool PimVif::i\_\-may\_\-become\_\-dr (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{exclude\_\-addr}
\end{DoxyParamCaption}
)}}
\label{classPimVif_aeb10ea88742f572a65831d391b94a0a6}


Compute if I may become \hyperlink{protocolthe-p}{the} Designated Router on this interface if one of \hyperlink{protocolthe-p}{the} PIM neighbor addresses is not considered. 

\hyperlink{classPimVif_aeb10ea88742f572a65831d391b94a0a6}{PimVif::i\_\-may\_\-become\_\-dr}: : The address to exclude in \hyperlink{protocolthe-p}{the} computation.

Compute if I may become \hyperlink{protocolthe-p}{the} DR on this interface if exclude\_\-addr is excluded.


\begin{DoxyParams}{Parameters}
{\em exclude\_\-addr} & \hyperlink{protocolthe-p}{the} address to exclude in \hyperlink{protocolthe-p}{the} computation. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if I may become \hyperlink{protocolthe-p}{the} DR on this interface, otherwise false.
\end{DoxyReturn}
Compute if I may become \hyperlink{protocolthe-p}{the} DR on this interface if  is excluded.

Return value: True if I may become \hyperlink{protocolthe-p}{the} DR on this interface, otherwise false. \hypertarget{classPimVif_a8be84171466915d4d1bfd900ee70795d}{
\index{PimVif@{PimVif}!notifyUpdated@{notifyUpdated}}
\index{notifyUpdated@{notifyUpdated}!PimVif@{PimVif}}
\subsubsection[{notifyUpdated}]{\setlength{\rightskip}{0pt plus 5cm}void PimVif::notifyUpdated (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classPimVif_a8be84171466915d4d1bfd900ee70795d}


Attempt deferred start. 

\hyperlink{classSystem}{System} detected some change.\hypertarget{classPimVif_a46462a59bc958087b1691b7d55809b0f}{
\index{PimVif@{PimVif}!pim\_\-assert\_\-recv@{pim\_\-assert\_\-recv}}
\index{pim\_\-assert\_\-recv@{pim\_\-assert\_\-recv}!PimVif@{PimVif}}
\subsubsection[{pim\_\-assert\_\-recv}]{\setlength{\rightskip}{0pt plus 5cm}int PimVif::pim\_\-assert\_\-recv (
\begin{DoxyParamCaption}
\item[{{\bf PimNbr} $\ast$}]{pim\_\-nbr, }
\item[{const {\bf IPvX} \&}]{src, }
\item[{const {\bf IPvX} \&}]{dst, }
\item[{{\bf buffer\_\-t} $\ast$}]{buffer}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPimVif_a46462a59bc958087b1691b7d55809b0f}


\hyperlink{classPimVif_a46462a59bc958087b1691b7d55809b0f}{PimVif::pim\_\-assert\_\-recv}: : The PIM neighbor message originator (or NULL if not a neighbor). 

: The message source address. : The message destination address. : The buffer with \hyperlink{protocolthe-p}{the} message.

Receive PIM\_\-ASSERT message.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimVif_a8a1f9134b4e4c5e97aefeba4d7e7fd82}{
\index{PimVif@{PimVif}!pim\_\-bootstrap\_\-recv@{pim\_\-bootstrap\_\-recv}}
\index{pim\_\-bootstrap\_\-recv@{pim\_\-bootstrap\_\-recv}!PimVif@{PimVif}}
\subsubsection[{pim\_\-bootstrap\_\-recv}]{\setlength{\rightskip}{0pt plus 5cm}int PimVif::pim\_\-bootstrap\_\-recv (
\begin{DoxyParamCaption}
\item[{{\bf PimNbr} $\ast$}]{pim\_\-nbr, }
\item[{const {\bf IPvX} \&}]{src, }
\item[{const {\bf IPvX} \&}]{dst, }
\item[{{\bf buffer\_\-t} $\ast$}]{buffer}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPimVif_a8a1f9134b4e4c5e97aefeba4d7e7fd82}


\hyperlink{classPimVif_a8a1f9134b4e4c5e97aefeba4d7e7fd82}{PimVif::pim\_\-bootstrap\_\-recv}: : The PIM neighbor message originator (or NULL if not a neighbor). 

: The message source address. : The message destination address. : The buffer with \hyperlink{protocolthe-p}{the} message.

Receive PIM\_\-BOOTSTRAP message.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimVif_a4e0c263fef21c3d0085205fc4fd540a4}{
\index{PimVif@{PimVif}!pim\_\-cand\_\-rp\_\-adv\_\-recv@{pim\_\-cand\_\-rp\_\-adv\_\-recv}}
\index{pim\_\-cand\_\-rp\_\-adv\_\-recv@{pim\_\-cand\_\-rp\_\-adv\_\-recv}!PimVif@{PimVif}}
\subsubsection[{pim\_\-cand\_\-rp\_\-adv\_\-recv}]{\setlength{\rightskip}{0pt plus 5cm}int PimVif::pim\_\-cand\_\-rp\_\-adv\_\-recv (
\begin{DoxyParamCaption}
\item[{{\bf PimNbr} $\ast$}]{pim\_\-nbr, }
\item[{const {\bf IPvX} \&}]{src, }
\item[{const {\bf IPvX} \&}]{dst, }
\item[{{\bf buffer\_\-t} $\ast$}]{buffer}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPimVif_a4e0c263fef21c3d0085205fc4fd540a4}


\hyperlink{classPimVif_a4e0c263fef21c3d0085205fc4fd540a4}{PimVif::pim\_\-cand\_\-rp\_\-adv\_\-recv}: : The PIM neighbor message originator (or NULL if not a neighbor). 

: The message source address. : The message destination address. : The buffer with \hyperlink{protocolthe-p}{the} message.

Receive PIM\_\-CAND\_\-RP\_\-ADV message.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimVif_ae365135abeb8882ee5984ce1793b8a69}{
\index{PimVif@{PimVif}!pim\_\-graft\_\-ack\_\-recv@{pim\_\-graft\_\-ack\_\-recv}}
\index{pim\_\-graft\_\-ack\_\-recv@{pim\_\-graft\_\-ack\_\-recv}!PimVif@{PimVif}}
\subsubsection[{pim\_\-graft\_\-ack\_\-recv}]{\setlength{\rightskip}{0pt plus 5cm}int PimVif::pim\_\-graft\_\-ack\_\-recv (
\begin{DoxyParamCaption}
\item[{{\bf PimNbr} $\ast$}]{pim\_\-nbr, }
\item[{const {\bf IPvX} \&}]{src, }
\item[{const {\bf IPvX} \&}]{dst, }
\item[{{\bf buffer\_\-t} $\ast$}]{buffer}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPimVif_ae365135abeb8882ee5984ce1793b8a69}


\hyperlink{classPimVif_ae365135abeb8882ee5984ce1793b8a69}{PimVif::pim\_\-graft\_\-ack\_\-recv}: : The PIM neighbor message originator (or NULL if not a neighbor). 

: The message source address. : The message destination address. : The buffer with \hyperlink{protocolthe-p}{the} message.

Receive PIM\_\-GRAFT\_\-ACK message.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimVif_a0551d6a77a0eeb9fdc7b24c2200df94f}{
\index{PimVif@{PimVif}!pim\_\-graft\_\-recv@{pim\_\-graft\_\-recv}}
\index{pim\_\-graft\_\-recv@{pim\_\-graft\_\-recv}!PimVif@{PimVif}}
\subsubsection[{pim\_\-graft\_\-recv}]{\setlength{\rightskip}{0pt plus 5cm}int PimVif::pim\_\-graft\_\-recv (
\begin{DoxyParamCaption}
\item[{{\bf PimNbr} $\ast$}]{pim\_\-nbr, }
\item[{const {\bf IPvX} \&}]{src, }
\item[{const {\bf IPvX} \&}]{dst, }
\item[{{\bf buffer\_\-t} $\ast$}]{buffer}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPimVif_a0551d6a77a0eeb9fdc7b24c2200df94f}


\hyperlink{classPimVif_a0551d6a77a0eeb9fdc7b24c2200df94f}{PimVif::pim\_\-graft\_\-recv}: : The PIM neighbor message originator (or NULL if not a neighbor). 

: The message source address. : The message destination address. : The buffer with \hyperlink{protocolthe-p}{the} message.

Receive PIM\_\-GRAFT message.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimVif_a15ff71c2cc38d9c90b238012a6e6df69}{
\index{PimVif@{PimVif}!pim\_\-hello\_\-recv@{pim\_\-hello\_\-recv}}
\index{pim\_\-hello\_\-recv@{pim\_\-hello\_\-recv}!PimVif@{PimVif}}
\subsubsection[{pim\_\-hello\_\-recv}]{\setlength{\rightskip}{0pt plus 5cm}int PimVif::pim\_\-hello\_\-recv (
\begin{DoxyParamCaption}
\item[{{\bf PimNbr} $\ast$}]{pim\_\-nbr, }
\item[{const {\bf IPvX} \&}]{src, }
\item[{const {\bf IPvX} \&}]{dst, }
\item[{{\bf buffer\_\-t} $\ast$}]{buffer, }
\item[{int}]{nbr\_\-proto\_\-version}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPimVif_a15ff71c2cc38d9c90b238012a6e6df69}


\hyperlink{classPimVif_a15ff71c2cc38d9c90b238012a6e6df69}{PimVif::pim\_\-hello\_\-recv}: : The PIM neighbor message originator (or NULL if not a neighbor). 

: The message source address. : The message destination address. : The buffer with \hyperlink{protocolthe-p}{the} message. : The protocol version from this heighbor.

Receive PIM\_\-HELLO message.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimVif_ac8b0879083839411052a447b23345997}{
\index{PimVif@{PimVif}!pim\_\-join\_\-prune\_\-recv@{pim\_\-join\_\-prune\_\-recv}}
\index{pim\_\-join\_\-prune\_\-recv@{pim\_\-join\_\-prune\_\-recv}!PimVif@{PimVif}}
\subsubsection[{pim\_\-join\_\-prune\_\-recv}]{\setlength{\rightskip}{0pt plus 5cm}int PimVif::pim\_\-join\_\-prune\_\-recv (
\begin{DoxyParamCaption}
\item[{{\bf PimNbr} $\ast$}]{pim\_\-nbr, }
\item[{const {\bf IPvX} \&}]{src, }
\item[{const {\bf IPvX} \&}]{dst, }
\item[{{\bf buffer\_\-t} $\ast$}]{buffer, }
\item[{uint8\_\-t}]{message\_\-type}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPimVif_ac8b0879083839411052a447b23345997}


\hyperlink{classPimVif_ac8b0879083839411052a447b23345997}{PimVif::pim\_\-join\_\-prune\_\-recv}: : The PIM neighbor message originator (or NULL if not a neighbor). 

: The message source address. : The message destination address. : The buffer with \hyperlink{protocolthe-p}{the} message. : The message type (should be either PIM\_\-JOIN\_\-PRUNE or PIM\_\-GRAFT.

Receive PIM\_\-JOIN\_\-PRUNE message. XXX: PIM\_\-GRAFT message has \hyperlink{protocolthe-p}{the} same format as \hyperlink{protocolthe-p}{the} PIM\_\-JOIN\_\-PRUNE message, hence we use \hyperlink{protocolthe-p}{the} PIM\_\-JOIN\_\-PRUNE processing function to process PIM\_\-GRAFT as well. TODO: for now ignore PIM\_\-GRAFT messages logic; will need to come back to it later.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimVif_a43f82054b7be27ce8c646e0c86f3ad89}{
\index{PimVif@{PimVif}!pim\_\-mrt@{pim\_\-mrt}}
\index{pim\_\-mrt@{pim\_\-mrt}!PimVif@{PimVif}}
\subsubsection[{pim\_\-mrt}]{\setlength{\rightskip}{0pt plus 5cm}{\bf PimMrt} \& PimVif::pim\_\-mrt (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classPimVif_a43f82054b7be27ce8c646e0c86f3ad89}


Get \hyperlink{protocolthe-p}{the} PIM Multicast \hyperlink{classRouting}{Routing} Table (\hyperlink{classPimMrt}{PimMrt}). 

\hyperlink{classPimVif_a43f82054b7be27ce8c646e0c86f3ad89}{PimVif::pim\_\-mrt}: @:

\begin{DoxyReturn}{Returns}
a reference to \hyperlink{protocolthe-p}{the} PIM Multicast \hyperlink{classRouting}{Routing} Table (\hyperlink{classPimMrt}{PimMrt}).
\end{DoxyReturn}
Get \hyperlink{protocolthe-p}{the} PIM Multicast \hyperlink{classRouting}{Routing} Table.

Return value: A reference to \hyperlink{protocolthe-p}{the} PIM Multicast \hyperlink{classRouting}{Routing} Table. \hypertarget{classPimVif_a20861cfde396ecd668ced04a1d4f4751}{
\index{PimVif@{PimVif}!pim\_\-nbr\_\-find@{pim\_\-nbr\_\-find}}
\index{pim\_\-nbr\_\-find@{pim\_\-nbr\_\-find}!PimVif@{PimVif}}
\subsubsection[{pim\_\-nbr\_\-find}]{\setlength{\rightskip}{0pt plus 5cm}{\bf PimNbr} $\ast$ PimVif::pim\_\-nbr\_\-find (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{nbr\_\-addr}
\end{DoxyParamCaption}
)}}
\label{classPimVif_a20861cfde396ecd668ced04a1d4f4751}


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

Find a PIM neighbor by its address.

Return value: The \hyperlink{classPimNbr}{PimNbr} entry for \hyperlink{protocolthe-p}{the} neighbor if found, otherwise NULL. \hypertarget{classPimVif_a6db583c52749a3445deba01079622993}{
\index{PimVif@{PimVif}!pim\_\-nbr\_\-me@{pim\_\-nbr\_\-me}}
\index{pim\_\-nbr\_\-me@{pim\_\-nbr\_\-me}!PimVif@{PimVif}}
\subsubsection[{pim\_\-nbr\_\-me}]{\setlength{\rightskip}{0pt plus 5cm}{\bf PimNbr}\& PimVif::pim\_\-nbr\_\-me (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPimVif_a6db583c52749a3445deba01079622993}


Get \hyperlink{protocolthe-p}{the} PIM neighbor information (\hyperlink{classPimNbr}{PimNbr}) about myself. 

\begin{DoxyReturn}{Returns}
a reference to \hyperlink{protocolthe-p}{the} PIM neighbor information (\hyperlink{classPimNbr}{PimNbr}) about myself. 
\end{DoxyReturn}
\hypertarget{classPimVif_a848b4bf63ebed9876b6d1c281fc743c0}{
\index{PimVif@{PimVif}!pim\_\-node@{pim\_\-node}}
\index{pim\_\-node@{pim\_\-node}!PimVif@{PimVif}}
\subsubsection[{pim\_\-node}]{\setlength{\rightskip}{0pt plus 5cm}{\bf PimNode}$\ast$ PimVif::pim\_\-node (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPimVif_a848b4bf63ebed9876b6d1c281fc743c0}


Get \hyperlink{protocolthe-p}{the} PIM node (\hyperlink{classPimNode}{PimNode}). 

\begin{DoxyReturn}{Returns}
a reference to \hyperlink{protocolthe-p}{the} PIM node (\hyperlink{classPimNode}{PimNode}). 
\end{DoxyReturn}
\hypertarget{classPimVif_a0be134873d0091e97b8d731e6b48c531}{
\index{PimVif@{PimVif}!pim\_\-process@{pim\_\-process}}
\index{pim\_\-process@{pim\_\-process}!PimVif@{PimVif}}
\subsubsection[{pim\_\-process}]{\setlength{\rightskip}{0pt plus 5cm}int PimVif::pim\_\-process (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{src, }
\item[{const {\bf IPvX} \&}]{dst, }
\item[{{\bf buffer\_\-t} $\ast$}]{buffer}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPimVif_a0be134873d0091e97b8d731e6b48c531}


\hyperlink{classPimVif_a0be134873d0091e97b8d731e6b48c531}{PimVif::pim\_\-process}: : The message source address. 

: The message destination address. : The buffer with \hyperlink{protocolthe-p}{the} message.

Process PIM message and pass \hyperlink{protocolthe-p}{the} control to \hyperlink{protocolthe-p}{the} type-\/specific functions.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimVif_a6b4fbeac2ce266f4badd3853d75113cd}{
\index{PimVif@{PimVif}!pim\_\-recv@{pim\_\-recv}}
\index{pim\_\-recv@{pim\_\-recv}!PimVif@{PimVif}}
\subsubsection[{pim\_\-recv}]{\setlength{\rightskip}{0pt plus 5cm}int PimVif::pim\_\-recv (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{src, }
\item[{const {\bf IPvX} \&}]{dst, }
\item[{{\bf buffer\_\-t} $\ast$}]{buffer}
\end{DoxyParamCaption}
)}}
\label{classPimVif_a6b4fbeac2ce266f4badd3853d75113cd}


Receive a protocol message. 

\hyperlink{classPimVif_a6b4fbeac2ce266f4badd3853d75113cd}{PimVif::pim\_\-recv}: : The message source address.


\begin{DoxyParams}{Parameters}
{\em src} & \hyperlink{protocolthe-p}{the} source address of \hyperlink{protocolthe-p}{the} message. \\
\hline
{\em dst} & \hyperlink{protocolthe-p}{the} destination address of \hyperlink{protocolthe-p}{the} message. \\
\hline
{\em buffer} & \hyperlink{protocolthe-p}{the} data buffer with \hyperlink{protocolthe-p}{the} received message. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
: The message destination address. : The buffer with \hyperlink{protocolthe-p}{the} received message.

Receive PIM message and pass it for processing.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimVif_afc76dcd9ac1716c7bf1c645b3e7353f7}{
\index{PimVif@{PimVif}!pim\_\-register\_\-recv@{pim\_\-register\_\-recv}}
\index{pim\_\-register\_\-recv@{pim\_\-register\_\-recv}!PimVif@{PimVif}}
\subsubsection[{pim\_\-register\_\-recv}]{\setlength{\rightskip}{0pt plus 5cm}int PimVif::pim\_\-register\_\-recv (
\begin{DoxyParamCaption}
\item[{{\bf PimNbr} $\ast$}]{pim\_\-nbr, }
\item[{const {\bf IPvX} \&}]{src, }
\item[{const {\bf IPvX} \&}]{dst, }
\item[{{\bf buffer\_\-t} $\ast$}]{buffer}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPimVif_afc76dcd9ac1716c7bf1c645b3e7353f7}


\hyperlink{classPimVif_afc76dcd9ac1716c7bf1c645b3e7353f7}{PimVif::pim\_\-register\_\-recv}: : The PIM neighbor message originator (or NULL if not a neighbor). 

: The message source address. : The message destination address. : The buffer with \hyperlink{protocolthe-p}{the} message.

Receive PIM\_\-REGISTER message.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimVif_adc0080c8153e184d200ea9b4af35d7bf}{
\index{PimVif@{PimVif}!pim\_\-register\_\-stop\_\-recv@{pim\_\-register\_\-stop\_\-recv}}
\index{pim\_\-register\_\-stop\_\-recv@{pim\_\-register\_\-stop\_\-recv}!PimVif@{PimVif}}
\subsubsection[{pim\_\-register\_\-stop\_\-recv}]{\setlength{\rightskip}{0pt plus 5cm}int PimVif::pim\_\-register\_\-stop\_\-recv (
\begin{DoxyParamCaption}
\item[{{\bf PimNbr} $\ast$}]{pim\_\-nbr, }
\item[{const {\bf IPvX} \&}]{src, }
\item[{const {\bf IPvX} \&}]{dst, }
\item[{{\bf buffer\_\-t} $\ast$}]{buffer}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPimVif_adc0080c8153e184d200ea9b4af35d7bf}


\hyperlink{classPimVif_adc0080c8153e184d200ea9b4af35d7bf}{PimVif::pim\_\-register\_\-stop\_\-recv}: : The PIM neighbor message originator (or NULL if not a neighbor). 

: The message source address. : The message destination address. : The buffer with \hyperlink{protocolthe-p}{the} message.

Receive PIM\_\-REGISTER\_\-STOP message.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimVif_afcc7c0fd729d029351a112508e53d9ba}{
\index{PimVif@{PimVif}!pim\_\-send@{pim\_\-send}}
\index{pim\_\-send@{pim\_\-send}!PimVif@{PimVif}}
\subsubsection[{pim\_\-send}]{\setlength{\rightskip}{0pt plus 5cm}int PimVif::pim\_\-send (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{src, }
\item[{const {\bf IPvX} \&}]{dst, }
\item[{uint8\_\-t}]{message\_\-type, }
\item[{{\bf buffer\_\-t} $\ast$}]{buffer, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPimVif_afcc7c0fd729d029351a112508e53d9ba}


\hyperlink{classPimVif_afcc7c0fd729d029351a112508e53d9ba}{PimVif::pim\_\-send}: : The message source address. 

: The message destination address. : The PIM type of \hyperlink{protocolthe-p}{the} message. : The buffer with \hyperlink{protocolthe-p}{the} rest of \hyperlink{protocolthe-p}{the} message. : The error message (if error).

\hyperlink{structSend}{Send} PIM message. XXX: The beginning of \hyperlink{protocolthe-p}{the}  must have been reserved for \hyperlink{protocolthe-p}{the} PIM header.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimVif_a05f80c2a3df5c60d0a60beaee6136b60}{
\index{PimVif@{PimVif}!primary\_\-addr@{primary\_\-addr}}
\index{primary\_\-addr@{primary\_\-addr}!PimVif@{PimVif}}
\subsubsection[{primary\_\-addr}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf IPvX}\& PimVif::primary\_\-addr (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPimVif_a05f80c2a3df5c60d0a60beaee6136b60}


Get my primary address on this interface. 

\begin{DoxyReturn}{Returns}
my primary address on this interface. 
\end{DoxyReturn}
\hypertarget{classPimVif_a46d710a955b6951a908c75d20cc5aa9b}{
\index{PimVif@{PimVif}!set\_\-default\_\-config@{set\_\-default\_\-config}}
\index{set\_\-default\_\-config@{set\_\-default\_\-config}!PimVif@{PimVif}}
\subsubsection[{set\_\-default\_\-config}]{\setlength{\rightskip}{0pt plus 5cm}void PimVif::set\_\-default\_\-config (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classPimVif_a46d710a955b6951a908c75d20cc5aa9b}


Set configuration to default values. 

\hyperlink{classPimVif_a46d710a955b6951a908c75d20cc5aa9b}{PimVif::set\_\-default\_\-config}: @: \hypertarget{classPimVif_a776a56e45b7d3d95d7db35afde68a824}{
\index{PimVif@{PimVif}!set\_\-domain\_\-wide\_\-addr@{set\_\-domain\_\-wide\_\-addr}}
\index{set\_\-domain\_\-wide\_\-addr@{set\_\-domain\_\-wide\_\-addr}!PimVif@{PimVif}}
\subsubsection[{set\_\-domain\_\-wide\_\-addr}]{\setlength{\rightskip}{0pt plus 5cm}void PimVif::set\_\-domain\_\-wide\_\-addr (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{v}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPimVif_a776a56e45b7d3d95d7db35afde68a824}


Set my domain-\/wide reachable address on this interface. 


\begin{DoxyParams}{Parameters}
{\em v} & \hyperlink{protocolthe-p}{the} value of \hyperlink{protocolthe-p}{the} domain-\/wide reachable address. \\
\hline
\end{DoxyParams}
\hypertarget{classPimVif_af5241e9f2f4e6975ac271e7ac82a9619}{
\index{PimVif@{PimVif}!set\_\-i\_\-am\_\-dr@{set\_\-i\_\-am\_\-dr}}
\index{set\_\-i\_\-am\_\-dr@{set\_\-i\_\-am\_\-dr}!PimVif@{PimVif}}
\subsubsection[{set\_\-i\_\-am\_\-dr}]{\setlength{\rightskip}{0pt plus 5cm}void PimVif::set\_\-i\_\-am\_\-dr (
\begin{DoxyParamCaption}
\item[{bool}]{v}
\end{DoxyParamCaption}
)}}
\label{classPimVif_af5241e9f2f4e6975ac271e7ac82a9619}


\hyperlink{classPimVif_af5241e9f2f4e6975ac271e7ac82a9619}{PimVif::set\_\-i\_\-am\_\-dr}: : If true, set \hyperlink{protocolthe-p}{the} PIM\_\-VIF\_\-DR flag, otherwise reset it. 

Set/reset \hyperlink{protocolthe-p}{the} PIM\_\-VIF\_\-DR (Designated Router) flag on a virtual interface. \hypertarget{classPimVif_a0880009de4536966ef9e1eff12371564}{
\index{PimVif@{PimVif}!set\_\-proto\_\-version@{set\_\-proto\_\-version}}
\index{set\_\-proto\_\-version@{set\_\-proto\_\-version}!PimVif@{PimVif}}
\subsubsection[{set\_\-proto\_\-version}]{\setlength{\rightskip}{0pt plus 5cm}int PimVif::set\_\-proto\_\-version (
\begin{DoxyParamCaption}
\item[{int}]{proto\_\-version}
\end{DoxyParamCaption}
)}}
\label{classPimVif_a0880009de4536966ef9e1eff12371564}


Set \hyperlink{protocolthe-p}{the} current protocol version. 

\hyperlink{classPimVif_a0880009de4536966ef9e1eff12371564}{PimVif::set\_\-proto\_\-version}: : The protocol version to set.

The protocol version must be in \hyperlink{protocolthe-p}{the} interval \mbox{[}PIM\_\-VERSION\_\-MIN, PIM\_\-VERSION\_\-MAX\mbox{]}.


\begin{DoxyParams}{Parameters}
{\em proto\_\-version} & \hyperlink{protocolthe-p}{the} protocol version to set. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
Set protocol version.

Return value: XORP\_\-OK is  is valid, otherwise XORP\_\-ERROR. 

Reimplemented from \hyperlink{classProtoUnit_a166291900c1e79e8af1121a178082693}{ProtoUnit}.

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


Start PIM on a single virtual interface. 

\hyperlink{classPimVif_a0d3268d664f6f6b71e88e44409b3ca33}{PimVif::start}: : The error message (if error).


\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}
Start PIM on a single virtual interface.

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


Gracefully stop PIM on a single virtual interface. 

\hyperlink{classPimVif_a290ca7d6105bb6171110b71a89b1067e}{PimVif::stop}: : The error message (if error).

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{classPimVif_a23cc520327fff4d957f1c74855f5cb4a}{PimVif::final\_\-stop()} is called to complete \hyperlink{protocolthe-p}{the} job.


\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}
Gracefully stop PIM on a single virtual interface. 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{classPimVif_a23cc520327fff4d957f1c74855f5cb4a}{PimVif::final\_\-stop()} is called to complete \hyperlink{protocolthe-p}{the} job.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classPimVif_abfd0ad513b7901d0c377f1ce92ac0cc4}{
\index{PimVif@{PimVif}!update\_\-primary\_\-and\_\-domain\_\-wide\_\-address@{update\_\-primary\_\-and\_\-domain\_\-wide\_\-address}}
\index{update\_\-primary\_\-and\_\-domain\_\-wide\_\-address@{update\_\-primary\_\-and\_\-domain\_\-wide\_\-address}!PimVif@{PimVif}}
\subsubsection[{update\_\-primary\_\-and\_\-domain\_\-wide\_\-address}]{\setlength{\rightskip}{0pt plus 5cm}int PimVif::update\_\-primary\_\-and\_\-domain\_\-wide\_\-address (
\begin{DoxyParamCaption}
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPimVif_abfd0ad513b7901d0c377f1ce92ac0cc4}


Update \hyperlink{protocolthe-p}{the} primary and \hyperlink{protocolthe-p}{the} domain-\/wide reachable addresses. 

\hyperlink{classPimVif_abfd0ad513b7901d0c377f1ce92ac0cc4}{PimVif::update\_\-primary\_\-and\_\-domain\_\-wide\_\-address}: : The error message (if error).

The primary address should be a link-\/local unicast address, and is used for transmitting \hyperlink{protocolthe-p}{the} multicast control packets on \hyperlink{protocolthe-p}{the} LAN. The domain-\/wide reachable address is \hyperlink{protocolthe-p}{the} address that should be reachable by all PIM-\/SM routers in \hyperlink{protocolthe-p}{the} domain (e.g., \hyperlink{protocolthe-p}{the} Cand-\/BSR, or \hyperlink{protocolthe-p}{the} Cand-\/RP address).


\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}
Update \hyperlink{protocolthe-p}{the} primary and \hyperlink{protocolthe-p}{the} domain-\/wide reachable addresses.

The primary address should be a link-\/local unicast address, and is used for transmitting \hyperlink{protocolthe-p}{the} multicast control packets on \hyperlink{protocolthe-p}{the} LAN. The domain-\/wide reachable address is \hyperlink{protocolthe-p}{the} address that should be reachable by all PIM-\/SM routers in \hyperlink{protocolthe-p}{the} domain (e.g., \hyperlink{protocolthe-p}{the} Cand-\/BSR, or \hyperlink{protocolthe-p}{the} Cand-\/RP address).

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

The documentation for this class was generated from the following files:\begin{DoxyCompactItemize}
\item 
/home/greearb/git/xorp.ct.github/xorp/pim/pim\_\-vif.hh\item 
/home/greearb/git/xorp.ct.github/xorp/pim/pim\_\-proto\_\-assert.cc\item 
/home/greearb/git/xorp.ct.github/xorp/pim/pim\_\-proto\_\-bootstrap.cc\item 
/home/greearb/git/xorp.ct.github/xorp/pim/pim\_\-proto\_\-cand\_\-rp\_\-adv.cc\item 
/home/greearb/git/xorp.ct.github/xorp/pim/pim\_\-proto\_\-graft.cc\item 
/home/greearb/git/xorp.ct.github/xorp/pim/pim\_\-proto\_\-graft\_\-ack.cc\item 
/home/greearb/git/xorp.ct.github/xorp/pim/pim\_\-proto\_\-hello.cc\item 
/home/greearb/git/xorp.ct.github/xorp/pim/pim\_\-proto\_\-join\_\-prune.cc\item 
/home/greearb/git/xorp.ct.github/xorp/pim/pim\_\-proto\_\-register.cc\item 
/home/greearb/git/xorp.ct.github/xorp/pim/pim\_\-proto\_\-register\_\-stop.cc\item 
/home/greearb/git/xorp.ct.github/xorp/pim/pim\_\-vif.cc\end{DoxyCompactItemize}
