\hypertarget{classMfeaMrouter}{
\section{MfeaMrouter Class Reference}
\label{classMfeaMrouter}\index{MfeaMrouter@{MfeaMrouter}}
}


A class for multicast routing related I/O communication.  




{\ttfamily \#include $<$mfea\_\-mrouter.hh$>$}

Inheritance diagram for MfeaMrouter:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=5.000000cm]{classMfeaMrouter}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classMfeaMrouter_a958e097a09adb3193b25308d741b3413}{MfeaMrouter} (\hyperlink{classMfeaNode}{MfeaNode} \&mfea\_\-node, const \hyperlink{classFibConfig}{FibConfig} \&fibconfig)
\begin{DoxyCompactList}\small\item\em Constructor for given MFEA node. \item\end{DoxyCompactList}\item 
\hypertarget{classMfeaMrouter_a2ed39aed5248eb8272794d1a52238e9e}{
virtual \hyperlink{classMfeaMrouter_a2ed39aed5248eb8272794d1a52238e9e}{$\sim$MfeaMrouter} ()}
\label{classMfeaMrouter_a2ed39aed5248eb8272794d1a52238e9e}

\begin{DoxyCompactList}\small\item\em Destructor. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_abf0cc8276571ef73771999a1d388d63a}{start} ()
\begin{DoxyCompactList}\small\item\em Start \hyperlink{protocolthe-p}{the} \hyperlink{classMfeaMrouter}{MfeaMrouter}. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_a8b0f20c631af4f23db8d9046bbfc1fcd}{stop} ()
\begin{DoxyCompactList}\small\item\em Stop \hyperlink{protocolthe-p}{the} \hyperlink{classMfeaMrouter}{MfeaMrouter}. \item\end{DoxyCompactList}\item 
bool \hyperlink{classMfeaMrouter_af0dc161a12338557f7eb471af68caf81}{have\_\-multicast\_\-routing4} () const 
\begin{DoxyCompactList}\small\item\em Test if \hyperlink{protocolthe-p}{the} underlying system supports \hyperlink{classIPv4}{IPv4} multicast routing. \item\end{DoxyCompactList}\item 
bool \hyperlink{classMfeaMrouter_a02aee4a0b50ef863f48c840180d87cea}{have\_\-multicast\_\-routing6} () const 
\begin{DoxyCompactList}\small\item\em Test if \hyperlink{protocolthe-p}{the} underlying system supports \hyperlink{classIPv6}{IPv6} multicast routing. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_a784c0a69b5d03d05e0cccaaf0de4b971}{multicast\_\-forwarding\_\-enabled4} (bool \&ret\_\-value, string \&error\_\-msg) const 
\begin{DoxyCompactList}\small\item\em Test whether \hyperlink{protocolthe-p}{the} \hyperlink{classIPv4}{IPv4} multicast forwarding engine is enabled or disabled to forward packets. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_a92210e1b80f8949768eebd7ac68f6739}{multicast\_\-forwarding\_\-enabled6} (bool \&ret\_\-value, string \&error\_\-msg) const 
\begin{DoxyCompactList}\small\item\em Test whether \hyperlink{protocolthe-p}{the} \hyperlink{classIPv6}{IPv6} multicast forwarding engine is enabled or disabled to forward packets. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_a26e92bbb25bb3cebbd44f523194aaf29}{set\_\-multicast\_\-forwarding\_\-enabled4} (bool v, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} \hyperlink{classIPv4}{IPv4} multicast forwarding engine to enable or disable forwarding of packets. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_a2c002529460c20b656da91bec8ab8b7e}{set\_\-multicast\_\-forwarding\_\-enabled6} (bool v, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} \hyperlink{classIPv6}{IPv6} multicast forwarding engine to enable or disable forwarding of packets. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_ad57a5f98932c27395e5fb2ec5c69a940}{kernel\_\-mrouter\_\-ip\_\-protocol} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} protocol that would be used in case of mrouter socket. \item\end{DoxyCompactList}\item 
\hyperlink{classXorpFd}{XorpFd} \hyperlink{classMfeaMrouter_a0f092c12f1c60207811b8249f33ac22f}{mrouter\_\-socket} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} mrouter socket. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_a5c4a82e5b0a49dadd0f4c9285e37d3a0}{start\_\-mrt} ()
\begin{DoxyCompactList}\small\item\em Start/enable \hyperlink{protocolthe-p}{the} multicast routing in \hyperlink{protocolthe-p}{the} kernel. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_a3bd66557fab1135d02649815901c6031}{stop\_\-mrt} ()
\begin{DoxyCompactList}\small\item\em Stop/disable \hyperlink{protocolthe-p}{the} multicast routing in \hyperlink{protocolthe-p}{the} kernel. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_a2286211aeb502a107c82dd76ae8b89bf}{start\_\-pim} (string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Start/enable PIM processing in \hyperlink{protocolthe-p}{the} kernel. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_aae69f858b5aea35388957cdffce53881}{stop\_\-pim} (string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Stop/disable PIM processing in \hyperlink{protocolthe-p}{the} kernel. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_a0e58d97ba9164e019980c660ebede213}{add\_\-multicast\_\-vif} (uint32\_\-t vif\_\-index)
\begin{DoxyCompactList}\small\item\em Add a virtual multicast interface to \hyperlink{protocolthe-p}{the} kernel. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_a0a75822c430383f2fa6592fd94f859fa}{delete\_\-multicast\_\-vif} (uint32\_\-t vif\_\-index)
\begin{DoxyCompactList}\small\item\em Delete a virtual multicast interface from \hyperlink{protocolthe-p}{the} kernel. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_ae203d1933052bc8f778b83d7cf5ef93d}{add\_\-mfc} (const \hyperlink{classIPvX}{IPvX} \&source, const \hyperlink{classIPvX}{IPvX} \&group, uint32\_\-t iif\_\-vif\_\-index, uint8\_\-t $\ast$oifs\_\-ttl, uint8\_\-t $\ast$oifs\_\-flags, const \hyperlink{classIPvX}{IPvX} \&rp\_\-addr)
\begin{DoxyCompactList}\small\item\em Install/modify a Multicast Forwarding Cache (MFC) entry in \hyperlink{protocolthe-p}{the} kernel. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_ac846174564492bee5832f75c39640109}{delete\_\-mfc} (const \hyperlink{classIPvX}{IPvX} \&source, const \hyperlink{classIPvX}{IPvX} \&group)
\begin{DoxyCompactList}\small\item\em Delete a Multicast Forwarding Cache (MFC) entry in \hyperlink{protocolthe-p}{the} kernel. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_a4d11b49c03b7f35a87e9666f27b092a4}{add\_\-bw\_\-upcall} (const \hyperlink{classIPvX}{IPvX} \&source, const \hyperlink{classIPvX}{IPvX} \&group, const \hyperlink{classTimeVal}{TimeVal} \&threshold\_\-interval, uint32\_\-t threshold\_\-packets, uint32\_\-t threshold\_\-bytes, bool is\_\-threshold\_\-in\_\-packets, bool is\_\-threshold\_\-in\_\-bytes, bool is\_\-geq\_\-upcall, bool is\_\-leq\_\-upcall, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Add a dataflow monitor entry in \hyperlink{protocolthe-p}{the} kernel. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_ac4e568d2a156d9490ea72ba06d04f581}{delete\_\-bw\_\-upcall} (const \hyperlink{classIPvX}{IPvX} \&source, const \hyperlink{classIPvX}{IPvX} \&group, const \hyperlink{classTimeVal}{TimeVal} \&threshold\_\-interval, uint32\_\-t threshold\_\-packets, uint32\_\-t threshold\_\-bytes, bool is\_\-threshold\_\-in\_\-packets, bool is\_\-threshold\_\-in\_\-bytes, bool is\_\-geq\_\-upcall, bool is\_\-leq\_\-upcall, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Delete a dataflow monitor entry from \hyperlink{protocolthe-p}{the} kernel. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_a5a446851dda8697bb11572da73984fd0}{delete\_\-all\_\-bw\_\-upcall} (const \hyperlink{classIPvX}{IPvX} \&source, const \hyperlink{classIPvX}{IPvX} \&group, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Delete all dataflow monitor entries from \hyperlink{protocolthe-p}{the} kernel for a given source and group address. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_ae9611e19260b14482a2662e6e5b0f50c}{get\_\-sg\_\-count} (const \hyperlink{classIPvX}{IPvX} \&source, const \hyperlink{classIPvX}{IPvX} \&group, \hyperlink{classSgCount}{SgCount} \&sg\_\-count)
\begin{DoxyCompactList}\small\item\em Get various counters per (S,G) entry. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_a2bafd14e87412843110d9fdc58906b46}{get\_\-vif\_\-count} (uint32\_\-t vif\_\-index, \hyperlink{classVifCount}{VifCount} \&vif\_\-count)
\begin{DoxyCompactList}\small\item\em Get various counters per virtual interface. \item\end{DoxyCompactList}\item 
bool \hyperlink{classMfeaMrouter_a55ac76cc614ddf86be03d9c2b6ea6536}{mrt\_\-api\_\-mrt\_\-mfc\_\-flags\_\-disable\_\-wrongvif} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} flag that indicates whether \hyperlink{protocolthe-p}{the} kernel supports disabling of WRONGVIF signal per (S,G) per interface. \item\end{DoxyCompactList}\item 
bool \hyperlink{classMfeaMrouter_abe89225f9ae640454e513838abf6e1d0}{mrt\_\-api\_\-mrt\_\-mfc\_\-flags\_\-border\_\-vif} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} flag that indicates whether \hyperlink{protocolthe-p}{the} kernel supports setting of \hyperlink{protocolthe-p}{the} Border bit flag per (S,G) per interface. \item\end{DoxyCompactList}\item 
bool \hyperlink{classMfeaMrouter_af9c67b802aeb0e705cf1642ddf1cbed5}{mrt\_\-api\_\-mrt\_\-mfc\_\-rp} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} flag that indicates whether \hyperlink{protocolthe-p}{the} kernel supports adding \hyperlink{protocolthe-p}{the} RP address to \hyperlink{protocolthe-p}{the} kernel. \item\end{DoxyCompactList}\item 
bool \hyperlink{classMfeaMrouter_a425f8381917db956c5bd80f2dc6e1bf1}{mrt\_\-api\_\-mrt\_\-mfc\_\-bw\_\-upcall} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} flag that indicates whether \hyperlink{protocolthe-p}{the} kernel supports \hyperlink{protocolthe-p}{the} bandwidth upcall mechanism. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaMrouter_a15aa84b8ad114688bdc7a2175311ca77}{kernel\_\-call\_\-process} (const uint8\_\-t $\ast$databuf, size\_\-t datalen)
\begin{DoxyCompactList}\small\item\em Process a call from \hyperlink{protocolthe-p}{the} kernel (e.g., \char`\"{}nocache\char`\"{}, \char`\"{}wrongiif\char`\"{}, \char`\"{}wholepkt\char`\"{}) XXX: It is OK for im\_\-src/im6\_\-src to be 0 (for 'nocache' or 'wrongiif'), just in case \hyperlink{protocolthe-p}{the} kernel supports ($\ast$,G) MFC. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classMfeaMrouter_a959cb5d6b068b11fc57f407eabcfdc8d}{
\hyperlink{classMfeaNode}{MfeaNode} \& {\bfseries mfea\_\-node} () const }
\label{classMfeaMrouter_a959cb5d6b068b11fc57f407eabcfdc8d}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classMfeaMrouter_a63c4d7319d4378f07258d689ac098955}{
\hyperlink{classMfeaNode}{MfeaNode} \& {\bfseries \_\-mfea\_\-node}}
\label{classMfeaMrouter_a63c4d7319d4378f07258d689ac098955}

\item 
\hypertarget{classMfeaMrouter_ae6e65b57adbe2bbbd998790b80d15b80}{
\hyperlink{classXorpFd}{XorpFd} {\bfseries \_\-mrouter\_\-socket}}
\label{classMfeaMrouter_ae6e65b57adbe2bbbd998790b80d15b80}

\item 
\hypertarget{classMfeaMrouter_a322161f3bd3621946ac708c542bbe9b0}{
bool {\bfseries \_\-mrt\_\-api\_\-mrt\_\-mfc\_\-flags\_\-disable\_\-wrongvif}}
\label{classMfeaMrouter_a322161f3bd3621946ac708c542bbe9b0}

\item 
\hypertarget{classMfeaMrouter_a10413885a89e67cefe795016cb211063}{
bool {\bfseries \_\-mrt\_\-api\_\-mrt\_\-mfc\_\-flags\_\-border\_\-vif}}
\label{classMfeaMrouter_a10413885a89e67cefe795016cb211063}

\item 
\hypertarget{classMfeaMrouter_aff6c962531d43fd745f185b35b33a131}{
bool {\bfseries \_\-mrt\_\-api\_\-mrt\_\-mfc\_\-rp}}
\label{classMfeaMrouter_aff6c962531d43fd745f185b35b33a131}

\item 
\hypertarget{classMfeaMrouter_a4b7ea028f949292b8ba790771c065442}{
bool {\bfseries \_\-mrt\_\-api\_\-mrt\_\-mfc\_\-bw\_\-upcall}}
\label{classMfeaMrouter_a4b7ea028f949292b8ba790771c065442}

\item 
\hypertarget{classMfeaMrouter_ac28036a5a447a8c411796349e2947703}{
bool {\bfseries \_\-multicast\_\-forwarding\_\-enabled}}
\label{classMfeaMrouter_ac28036a5a447a8c411796349e2947703}

\item 
\hypertarget{classMfeaMrouter_a7bed251d6c36269e197fffc30f029c5d}{
const \hyperlink{classFibConfig}{FibConfig} \& {\bfseries \_\-fibconfig}}
\label{classMfeaMrouter_a7bed251d6c36269e197fffc30f029c5d}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
A class for multicast routing related I/O communication. In case of UNIX kernels, we cannot have more than one \hyperlink{classMfeaMrouter}{MfeaMrouter} per address family (i.e., one per \hyperlink{classIPv4}{IPv4}, and one per \hyperlink{classIPv6}{IPv6}). 

\subsection{Constructor \& Destructor Documentation}
\hypertarget{classMfeaMrouter_a958e097a09adb3193b25308d741b3413}{
\index{MfeaMrouter@{MfeaMrouter}!MfeaMrouter@{MfeaMrouter}}
\index{MfeaMrouter@{MfeaMrouter}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{MfeaMrouter}]{\setlength{\rightskip}{0pt plus 5cm}MfeaMrouter::MfeaMrouter (
\begin{DoxyParamCaption}
\item[{{\bf MfeaNode} \&}]{mfea\_\-node, }
\item[{const {\bf FibConfig} \&}]{fibconfig}
\end{DoxyParamCaption}
)}}
\label{classMfeaMrouter_a958e097a09adb3193b25308d741b3413}


Constructor for given MFEA node. 

\hyperlink{classMfeaMrouter_a958e097a09adb3193b25308d741b3413}{MfeaMrouter::MfeaMrouter}: : The \hyperlink{classMfeaNode}{MfeaNode} I belong to.


\begin{DoxyParams}{Parameters}
{\em mfea\_\-node} & \hyperlink{protocolthe-p}{the} MFEA node (\hyperlink{classMfeaNode}{MfeaNode}) this entry belongs to. \\
\hline
\end{DoxyParams}


\subsection{Member Function Documentation}
\hypertarget{classMfeaMrouter_a4d11b49c03b7f35a87e9666f27b092a4}{
\index{MfeaMrouter@{MfeaMrouter}!add\_\-bw\_\-upcall@{add\_\-bw\_\-upcall}}
\index{add\_\-bw\_\-upcall@{add\_\-bw\_\-upcall}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{add\_\-bw\_\-upcall}]{\setlength{\rightskip}{0pt plus 5cm}int MfeaMrouter::add\_\-bw\_\-upcall (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{source, }
\item[{const {\bf IPvX} \&}]{group, }
\item[{const {\bf TimeVal} \&}]{threshold\_\-interval, }
\item[{uint32\_\-t}]{threshold\_\-packets, }
\item[{uint32\_\-t}]{threshold\_\-bytes, }
\item[{bool}]{is\_\-threshold\_\-in\_\-packets, }
\item[{bool}]{is\_\-threshold\_\-in\_\-bytes, }
\item[{bool}]{is\_\-geq\_\-upcall, }
\item[{bool}]{is\_\-leq\_\-upcall, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classMfeaMrouter_a4d11b49c03b7f35a87e9666f27b092a4}


Add a dataflow monitor entry in \hyperlink{protocolthe-p}{the} kernel. 

\hyperlink{classMfeaMrouter_a4d11b49c03b7f35a87e9666f27b092a4}{MfeaMrouter::add\_\-bw\_\-upcall}: : The source address.

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


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

Add a dataflow monitor entry in \hyperlink{protocolthe-p}{the} kernel. Note: either  or  (or both) must be true. Note: either  or  (but not both) must be true.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classMfeaMrouter_ae203d1933052bc8f778b83d7cf5ef93d}{
\index{MfeaMrouter@{MfeaMrouter}!add\_\-mfc@{add\_\-mfc}}
\index{add\_\-mfc@{add\_\-mfc}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{add\_\-mfc}]{\setlength{\rightskip}{0pt plus 5cm}int MfeaMrouter::add\_\-mfc (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{source, }
\item[{const {\bf IPvX} \&}]{group, }
\item[{uint32\_\-t}]{iif\_\-vif\_\-index, }
\item[{uint8\_\-t $\ast$}]{oifs\_\-ttl, }
\item[{uint8\_\-t $\ast$}]{oifs\_\-flags, }
\item[{const {\bf IPvX} \&}]{rp\_\-addr}
\end{DoxyParamCaption}
)}}
\label{classMfeaMrouter_ae203d1933052bc8f778b83d7cf5ef93d}


Install/modify a Multicast Forwarding Cache (MFC) entry in \hyperlink{protocolthe-p}{the} kernel. 

\hyperlink{classMfeaMrouter_ae203d1933052bc8f778b83d7cf5ef93d}{MfeaMrouter::add\_\-mfc}: : The MFC source address.

If \hyperlink{protocolthe-p}{the} MFC entry specified by (source, group) pair was not installed before, a new MFC entry will be created in \hyperlink{protocolthe-p}{the} kernel; otherwise, \hyperlink{protocolthe-p}{the} existing entry's fields will be modified.


\begin{DoxyParams}{Parameters}
{\em source} & \hyperlink{protocolthe-p}{the} MFC source address. \\
\hline
{\em group} & \hyperlink{protocolthe-p}{the} MFC group address. \\
\hline
{\em iif\_\-vif\_\-index} & \hyperlink{protocolthe-p}{the} MFC incoming interface index. \\
\hline
{\em oifs\_\-ttl} & an array with \hyperlink{protocolthe-p}{the} min. TTL a packet should have to be forwarded. \\
\hline
{\em oifs\_\-flags} & an array with misc. flags for \hyperlink{protocolthe-p}{the} MFC to install. Note that those flags are supported only by \hyperlink{protocolthe-p}{the} advanced multicast API. \\
\hline
{\em rp\_\-addr} & \hyperlink{protocolthe-p}{the} RP address. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
: The MFC group address. : The MFC incoming interface index. : An array with \hyperlink{protocolthe-p}{the} min. TTL a packet should have to be forwarded. : An array with misc. flags for \hyperlink{protocolthe-p}{the} MFC to install. Note that those flags are supported only by \hyperlink{protocolthe-p}{the} advanced multicast API. : The RP address.

Install/modify a Multicast Forwarding Cache (MFC) entry in \hyperlink{protocolthe-p}{the} kernel. If \hyperlink{protocolthe-p}{the} MFC entry specified by (source, group) pair was not installed before, a new MFC entry will be created in \hyperlink{protocolthe-p}{the} kernel; otherwise, \hyperlink{protocolthe-p}{the} existing entry's fields will be modified.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classMfeaMrouter_a0e58d97ba9164e019980c660ebede213}{
\index{MfeaMrouter@{MfeaMrouter}!add\_\-multicast\_\-vif@{add\_\-multicast\_\-vif}}
\index{add\_\-multicast\_\-vif@{add\_\-multicast\_\-vif}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{add\_\-multicast\_\-vif}]{\setlength{\rightskip}{0pt plus 5cm}int MfeaMrouter::add\_\-multicast\_\-vif (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{vif\_\-index}
\end{DoxyParamCaption}
)}}
\label{classMfeaMrouter_a0e58d97ba9164e019980c660ebede213}


Add a virtual multicast interface to \hyperlink{protocolthe-p}{the} kernel. 

\hyperlink{classMfeaMrouter_a0e58d97ba9164e019980c660ebede213}{MfeaMrouter::add\_\-multicast\_\-vif}: : The vif index of \hyperlink{protocolthe-p}{the} virtual interface to add.


\begin{DoxyParams}{Parameters}
{\em vif\_\-index} & \hyperlink{protocolthe-p}{the} vif index of \hyperlink{protocolthe-p}{the} virtual interface to add. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
Add a virtual multicast interface to \hyperlink{protocolthe-p}{the} kernel.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classMfeaMrouter_a5a446851dda8697bb11572da73984fd0}{
\index{MfeaMrouter@{MfeaMrouter}!delete\_\-all\_\-bw\_\-upcall@{delete\_\-all\_\-bw\_\-upcall}}
\index{delete\_\-all\_\-bw\_\-upcall@{delete\_\-all\_\-bw\_\-upcall}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{delete\_\-all\_\-bw\_\-upcall}]{\setlength{\rightskip}{0pt plus 5cm}int MfeaMrouter::delete\_\-all\_\-bw\_\-upcall (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{source, }
\item[{const {\bf IPvX} \&}]{group, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classMfeaMrouter_a5a446851dda8697bb11572da73984fd0}


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

\hyperlink{classMfeaMrouter_a5a446851dda8697bb11572da73984fd0}{MfeaMrouter::delete\_\-all\_\-bw\_\-upcall}: : The source address.


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

Delete all dataflow monitor entries from \hyperlink{protocolthe-p}{the} kernel for a given  and  address.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classMfeaMrouter_ac4e568d2a156d9490ea72ba06d04f581}{
\index{MfeaMrouter@{MfeaMrouter}!delete\_\-bw\_\-upcall@{delete\_\-bw\_\-upcall}}
\index{delete\_\-bw\_\-upcall@{delete\_\-bw\_\-upcall}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{delete\_\-bw\_\-upcall}]{\setlength{\rightskip}{0pt plus 5cm}int MfeaMrouter::delete\_\-bw\_\-upcall (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{source, }
\item[{const {\bf IPvX} \&}]{group, }
\item[{const {\bf TimeVal} \&}]{threshold\_\-interval, }
\item[{uint32\_\-t}]{threshold\_\-packets, }
\item[{uint32\_\-t}]{threshold\_\-bytes, }
\item[{bool}]{is\_\-threshold\_\-in\_\-packets, }
\item[{bool}]{is\_\-threshold\_\-in\_\-bytes, }
\item[{bool}]{is\_\-geq\_\-upcall, }
\item[{bool}]{is\_\-leq\_\-upcall, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classMfeaMrouter_ac4e568d2a156d9490ea72ba06d04f581}


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

\hyperlink{classMfeaMrouter_ac4e568d2a156d9490ea72ba06d04f581}{MfeaMrouter::delete\_\-bw\_\-upcall}: : The source address.

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


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

Delete a dataflow monitor entry from \hyperlink{protocolthe-p}{the} kernel. Note: either  or  (or both) must be true. Note: either  or  (but not both) must be true.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classMfeaMrouter_ac846174564492bee5832f75c39640109}{
\index{MfeaMrouter@{MfeaMrouter}!delete\_\-mfc@{delete\_\-mfc}}
\index{delete\_\-mfc@{delete\_\-mfc}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{delete\_\-mfc}]{\setlength{\rightskip}{0pt plus 5cm}int MfeaMrouter::delete\_\-mfc (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{source, }
\item[{const {\bf IPvX} \&}]{group}
\end{DoxyParamCaption}
)}}
\label{classMfeaMrouter_ac846174564492bee5832f75c39640109}


Delete a Multicast Forwarding Cache (MFC) entry in \hyperlink{protocolthe-p}{the} kernel. 

\hyperlink{classMfeaMrouter_ac846174564492bee5832f75c39640109}{MfeaMrouter::delete\_\-mfc}: : The MFC source address.


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

Delete a Multicast Forwarding Cache (MFC) entry in \hyperlink{protocolthe-p}{the} kernel.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classMfeaMrouter_a0a75822c430383f2fa6592fd94f859fa}{
\index{MfeaMrouter@{MfeaMrouter}!delete\_\-multicast\_\-vif@{delete\_\-multicast\_\-vif}}
\index{delete\_\-multicast\_\-vif@{delete\_\-multicast\_\-vif}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{delete\_\-multicast\_\-vif}]{\setlength{\rightskip}{0pt plus 5cm}int MfeaMrouter::delete\_\-multicast\_\-vif (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{vif\_\-index}
\end{DoxyParamCaption}
)}}
\label{classMfeaMrouter_a0a75822c430383f2fa6592fd94f859fa}


Delete a virtual multicast interface from \hyperlink{protocolthe-p}{the} kernel. 

\hyperlink{classMfeaMrouter_a0a75822c430383f2fa6592fd94f859fa}{MfeaMrouter::delete\_\-multicast\_\-vif}: : The vif index of \hyperlink{protocolthe-p}{the} interface to delete.


\begin{DoxyParams}{Parameters}
{\em vif\_\-index} & \hyperlink{protocolthe-p}{the} vif index of \hyperlink{protocolthe-p}{the} interface to delete. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
Delete a virtual multicast interface from \hyperlink{protocolthe-p}{the} kernel.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classMfeaMrouter_ae9611e19260b14482a2662e6e5b0f50c}{
\index{MfeaMrouter@{MfeaMrouter}!get\_\-sg\_\-count@{get\_\-sg\_\-count}}
\index{get\_\-sg\_\-count@{get\_\-sg\_\-count}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{get\_\-sg\_\-count}]{\setlength{\rightskip}{0pt plus 5cm}int MfeaMrouter::get\_\-sg\_\-count (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{source, }
\item[{const {\bf IPvX} \&}]{group, }
\item[{{\bf SgCount} \&}]{sg\_\-count}
\end{DoxyParamCaption}
)}}
\label{classMfeaMrouter_ae9611e19260b14482a2662e6e5b0f50c}


Get various counters per (S,G) entry. 

\hyperlink{classMfeaMrouter_ae9611e19260b14482a2662e6e5b0f50c}{MfeaMrouter::get\_\-sg\_\-count}: : The MFC source address.

Get \hyperlink{protocolthe-p}{the} number of packets and bytes forwarded by a particular Multicast Forwarding Cache (MFC) entry in \hyperlink{protocolthe-p}{the} kernel, and \hyperlink{protocolthe-p}{the} number of packets arrived on wrong interface for that entry.


\begin{DoxyParams}{Parameters}
{\em source} & \hyperlink{protocolthe-p}{the} MFC source address. \\
\hline
{\em group} & \hyperlink{protocolthe-p}{the} MFC group address. \\
\hline
{\em sg\_\-count} & a reference to a \hyperlink{classSgCount}{SgCount} class to place \hyperlink{protocolthe-p}{the} result. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
: The MFC group address. : A reference to a \hyperlink{classSgCount}{SgCount} class to place \hyperlink{protocolthe-p}{the} result.

Get various counters per (S,G) entry. Get \hyperlink{protocolthe-p}{the} number of packets and bytes forwarded by a particular Multicast Forwarding Cache (MFC) entry in \hyperlink{protocolthe-p}{the} kernel, and \hyperlink{protocolthe-p}{the} number of packets arrived on wrong interface for that entry.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classMfeaMrouter_a2bafd14e87412843110d9fdc58906b46}{
\index{MfeaMrouter@{MfeaMrouter}!get\_\-vif\_\-count@{get\_\-vif\_\-count}}
\index{get\_\-vif\_\-count@{get\_\-vif\_\-count}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{get\_\-vif\_\-count}]{\setlength{\rightskip}{0pt plus 5cm}int MfeaMrouter::get\_\-vif\_\-count (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{vif\_\-index, }
\item[{{\bf VifCount} \&}]{vif\_\-count}
\end{DoxyParamCaption}
)}}
\label{classMfeaMrouter_a2bafd14e87412843110d9fdc58906b46}


Get various counters per virtual interface. 

\hyperlink{classMfeaMrouter_a2bafd14e87412843110d9fdc58906b46}{MfeaMrouter::get\_\-vif\_\-count}: : The vif index of \hyperlink{protocolthe-p}{the} virtual multicast interface whose statistics we need.

Get \hyperlink{protocolthe-p}{the} number of packets and bytes received on, or forwarded on a particular multicast interface.


\begin{DoxyParams}{Parameters}
{\em vif\_\-index} & \hyperlink{protocolthe-p}{the} vif index of \hyperlink{protocolthe-p}{the} virtual multicast interface whose statistics we need. \\
\hline
{\em vif\_\-count} & a reference to a \hyperlink{classVifCount}{VifCount} class to store \hyperlink{protocolthe-p}{the} result. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
: A reference to a \hyperlink{classVifCount}{VifCount} class to store \hyperlink{protocolthe-p}{the} result.

Get various counters per virtual interface. Get \hyperlink{protocolthe-p}{the} number of packets and bytes received on, or forwarded on a particular multicast interface.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classMfeaMrouter_af0dc161a12338557f7eb471af68caf81}{
\index{MfeaMrouter@{MfeaMrouter}!have\_\-multicast\_\-routing4@{have\_\-multicast\_\-routing4}}
\index{have\_\-multicast\_\-routing4@{have\_\-multicast\_\-routing4}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{have\_\-multicast\_\-routing4}]{\setlength{\rightskip}{0pt plus 5cm}bool MfeaMrouter::have\_\-multicast\_\-routing4 (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classMfeaMrouter_af0dc161a12338557f7eb471af68caf81}


Test if \hyperlink{protocolthe-p}{the} underlying system supports \hyperlink{classIPv4}{IPv4} multicast routing. 

\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} underlying system supports \hyperlink{classIPv4}{IPv4} multicast routing, otherwise false. 
\end{DoxyReturn}
\hypertarget{classMfeaMrouter_a02aee4a0b50ef863f48c840180d87cea}{
\index{MfeaMrouter@{MfeaMrouter}!have\_\-multicast\_\-routing6@{have\_\-multicast\_\-routing6}}
\index{have\_\-multicast\_\-routing6@{have\_\-multicast\_\-routing6}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{have\_\-multicast\_\-routing6}]{\setlength{\rightskip}{0pt plus 5cm}bool MfeaMrouter::have\_\-multicast\_\-routing6 (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classMfeaMrouter_a02aee4a0b50ef863f48c840180d87cea}


Test if \hyperlink{protocolthe-p}{the} underlying system supports \hyperlink{classIPv6}{IPv6} multicast routing. 

\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} underlying system supports \hyperlink{classIPv6}{IPv6} multicast routing, otherwise false. 
\end{DoxyReturn}
\hypertarget{classMfeaMrouter_a15aa84b8ad114688bdc7a2175311ca77}{
\index{MfeaMrouter@{MfeaMrouter}!kernel\_\-call\_\-process@{kernel\_\-call\_\-process}}
\index{kernel\_\-call\_\-process@{kernel\_\-call\_\-process}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{kernel\_\-call\_\-process}]{\setlength{\rightskip}{0pt plus 5cm}int MfeaMrouter::kernel\_\-call\_\-process (
\begin{DoxyParamCaption}
\item[{const uint8\_\-t $\ast$}]{databuf, }
\item[{size\_\-t}]{datalen}
\end{DoxyParamCaption}
)}}
\label{classMfeaMrouter_a15aa84b8ad114688bdc7a2175311ca77}


Process a call from \hyperlink{protocolthe-p}{the} kernel (e.g., \char`\"{}nocache\char`\"{}, \char`\"{}wrongiif\char`\"{}, \char`\"{}wholepkt\char`\"{}) XXX: It is OK for im\_\-src/im6\_\-src to be 0 (for 'nocache' or 'wrongiif'), just in case \hyperlink{protocolthe-p}{the} kernel supports ($\ast$,G) MFC. 

kernel\_\-call\_\-process: : The data buffer.


\begin{DoxyParams}{Parameters}
{\em databuf} & \hyperlink{protocolthe-p}{the} data buffer. \\
\hline
{\em datalen} & \hyperlink{protocolthe-p}{the} length of \hyperlink{protocolthe-p}{the} data in databuf. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
: The length of \hyperlink{protocolthe-p}{the} data in 'databuf'.

Process a call from \hyperlink{protocolthe-p}{the} kernel (e.g., \char`\"{}nocache\char`\"{}, \char`\"{}wrongiif\char`\"{}, \char`\"{}wholepkt\char`\"{}) XXX: It is OK for im\_\-src/im6\_\-src to be 0 (for 'nocache' or 'wrongiif'), just in case \hyperlink{protocolthe-p}{the} kernel supports ($\ast$,G) MFC.

Return value: XORP\_\-OK on success, otherwise XORP\_\-ERROR. \hypertarget{classMfeaMrouter_ad57a5f98932c27395e5fb2ec5c69a940}{
\index{MfeaMrouter@{MfeaMrouter}!kernel\_\-mrouter\_\-ip\_\-protocol@{kernel\_\-mrouter\_\-ip\_\-protocol}}
\index{kernel\_\-mrouter\_\-ip\_\-protocol@{kernel\_\-mrouter\_\-ip\_\-protocol}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{kernel\_\-mrouter\_\-ip\_\-protocol}]{\setlength{\rightskip}{0pt plus 5cm}int MfeaMrouter::kernel\_\-mrouter\_\-ip\_\-protocol (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classMfeaMrouter_ad57a5f98932c27395e5fb2ec5c69a940}


Get \hyperlink{protocolthe-p}{the} protocol that would be used in case of mrouter socket. 

\hyperlink{classMfeaMrouter_ad57a5f98932c27395e5fb2ec5c69a940}{MfeaMrouter::kernel\_\-mrouter\_\-ip\_\-protocol}: @:

Return value: \hyperlink{protocolthe-p}{the} protocol number on success, otherwise -\/1.

Get \hyperlink{protocolthe-p}{the} protocol that would be used in case of mrouter socket.

Return value: \hyperlink{protocolthe-p}{the} protocol number on success, otherwise -\/1. \hypertarget{classMfeaMrouter_a0f092c12f1c60207811b8249f33ac22f}{
\index{MfeaMrouter@{MfeaMrouter}!mrouter\_\-socket@{mrouter\_\-socket}}
\index{mrouter\_\-socket@{mrouter\_\-socket}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{mrouter\_\-socket}]{\setlength{\rightskip}{0pt plus 5cm}{\bf XorpFd} MfeaMrouter::mrouter\_\-socket (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classMfeaMrouter_a0f092c12f1c60207811b8249f33ac22f}


Get \hyperlink{protocolthe-p}{the} mrouter socket. 

The mrouter socket is used for various multicast-\/related access.

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} socket value. 
\end{DoxyReturn}
\hypertarget{classMfeaMrouter_a425f8381917db956c5bd80f2dc6e1bf1}{
\index{MfeaMrouter@{MfeaMrouter}!mrt\_\-api\_\-mrt\_\-mfc\_\-bw\_\-upcall@{mrt\_\-api\_\-mrt\_\-mfc\_\-bw\_\-upcall}}
\index{mrt\_\-api\_\-mrt\_\-mfc\_\-bw\_\-upcall@{mrt\_\-api\_\-mrt\_\-mfc\_\-bw\_\-upcall}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{mrt\_\-api\_\-mrt\_\-mfc\_\-bw\_\-upcall}]{\setlength{\rightskip}{0pt plus 5cm}bool MfeaMrouter::mrt\_\-api\_\-mrt\_\-mfc\_\-bw\_\-upcall (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classMfeaMrouter_a425f8381917db956c5bd80f2dc6e1bf1}


Get \hyperlink{protocolthe-p}{the} flag that indicates whether \hyperlink{protocolthe-p}{the} kernel supports \hyperlink{protocolthe-p}{the} bandwidth upcall mechanism. 

\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} kernel supports \hyperlink{protocolthe-p}{the} bandwidth upcall mechanism. 
\end{DoxyReturn}
\hypertarget{classMfeaMrouter_abe89225f9ae640454e513838abf6e1d0}{
\index{MfeaMrouter@{MfeaMrouter}!mrt\_\-api\_\-mrt\_\-mfc\_\-flags\_\-border\_\-vif@{mrt\_\-api\_\-mrt\_\-mfc\_\-flags\_\-border\_\-vif}}
\index{mrt\_\-api\_\-mrt\_\-mfc\_\-flags\_\-border\_\-vif@{mrt\_\-api\_\-mrt\_\-mfc\_\-flags\_\-border\_\-vif}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{mrt\_\-api\_\-mrt\_\-mfc\_\-flags\_\-border\_\-vif}]{\setlength{\rightskip}{0pt plus 5cm}bool MfeaMrouter::mrt\_\-api\_\-mrt\_\-mfc\_\-flags\_\-border\_\-vif (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classMfeaMrouter_abe89225f9ae640454e513838abf6e1d0}


Get \hyperlink{protocolthe-p}{the} flag that indicates whether \hyperlink{protocolthe-p}{the} kernel supports setting of \hyperlink{protocolthe-p}{the} Border bit flag per (S,G) per interface. 

The Border bit flag is used for PIM-\/SM Register encapsulation in \hyperlink{protocolthe-p}{the} kernel.

\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} kernel supports setting of \hyperlink{protocolthe-p}{the} Border bit flag per (S,G) per interface, otherwise false. 
\end{DoxyReturn}
\hypertarget{classMfeaMrouter_a55ac76cc614ddf86be03d9c2b6ea6536}{
\index{MfeaMrouter@{MfeaMrouter}!mrt\_\-api\_\-mrt\_\-mfc\_\-flags\_\-disable\_\-wrongvif@{mrt\_\-api\_\-mrt\_\-mfc\_\-flags\_\-disable\_\-wrongvif}}
\index{mrt\_\-api\_\-mrt\_\-mfc\_\-flags\_\-disable\_\-wrongvif@{mrt\_\-api\_\-mrt\_\-mfc\_\-flags\_\-disable\_\-wrongvif}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{mrt\_\-api\_\-mrt\_\-mfc\_\-flags\_\-disable\_\-wrongvif}]{\setlength{\rightskip}{0pt plus 5cm}bool MfeaMrouter::mrt\_\-api\_\-mrt\_\-mfc\_\-flags\_\-disable\_\-wrongvif (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classMfeaMrouter_a55ac76cc614ddf86be03d9c2b6ea6536}


Get \hyperlink{protocolthe-p}{the} flag that indicates whether \hyperlink{protocolthe-p}{the} kernel supports disabling of WRONGVIF signal per (S,G) per interface. 

\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} kernel supports disabling of WRONGVIF signal per (S,G) per interface, otherwise false. 
\end{DoxyReturn}
\hypertarget{classMfeaMrouter_af9c67b802aeb0e705cf1642ddf1cbed5}{
\index{MfeaMrouter@{MfeaMrouter}!mrt\_\-api\_\-mrt\_\-mfc\_\-rp@{mrt\_\-api\_\-mrt\_\-mfc\_\-rp}}
\index{mrt\_\-api\_\-mrt\_\-mfc\_\-rp@{mrt\_\-api\_\-mrt\_\-mfc\_\-rp}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{mrt\_\-api\_\-mrt\_\-mfc\_\-rp}]{\setlength{\rightskip}{0pt plus 5cm}bool MfeaMrouter::mrt\_\-api\_\-mrt\_\-mfc\_\-rp (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classMfeaMrouter_af9c67b802aeb0e705cf1642ddf1cbed5}


Get \hyperlink{protocolthe-p}{the} flag that indicates whether \hyperlink{protocolthe-p}{the} kernel supports adding \hyperlink{protocolthe-p}{the} RP address to \hyperlink{protocolthe-p}{the} kernel. 

The RP address is used for PIM-\/SM Register encapsulation in \hyperlink{protocolthe-p}{the} kernel.

\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} kernel supports adding \hyperlink{protocolthe-p}{the} RP address to \hyperlink{protocolthe-p}{the} kernel, otherwise false. 
\end{DoxyReturn}
\hypertarget{classMfeaMrouter_a784c0a69b5d03d05e0cccaaf0de4b971}{
\index{MfeaMrouter@{MfeaMrouter}!multicast\_\-forwarding\_\-enabled4@{multicast\_\-forwarding\_\-enabled4}}
\index{multicast\_\-forwarding\_\-enabled4@{multicast\_\-forwarding\_\-enabled4}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{multicast\_\-forwarding\_\-enabled4}]{\setlength{\rightskip}{0pt plus 5cm}int MfeaMrouter::multicast\_\-forwarding\_\-enabled4 (
\begin{DoxyParamCaption}
\item[{bool \&}]{ret\_\-value, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
) const}}
\label{classMfeaMrouter_a784c0a69b5d03d05e0cccaaf0de4b971}


Test whether \hyperlink{protocolthe-p}{the} \hyperlink{classIPv4}{IPv4} multicast forwarding engine is enabled or disabled to forward packets. 


\begin{DoxyParams}{Parameters}
{\em ret\_\-value} & if true on return, then \hyperlink{protocolthe-p}{the} \hyperlink{classIPv4}{IPv4} multicast forwarding is enabled, otherwise is disabled. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classMfeaMrouter_a92210e1b80f8949768eebd7ac68f6739}{
\index{MfeaMrouter@{MfeaMrouter}!multicast\_\-forwarding\_\-enabled6@{multicast\_\-forwarding\_\-enabled6}}
\index{multicast\_\-forwarding\_\-enabled6@{multicast\_\-forwarding\_\-enabled6}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{multicast\_\-forwarding\_\-enabled6}]{\setlength{\rightskip}{0pt plus 5cm}int MfeaMrouter::multicast\_\-forwarding\_\-enabled6 (
\begin{DoxyParamCaption}
\item[{bool \&}]{ret\_\-value, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
) const}}
\label{classMfeaMrouter_a92210e1b80f8949768eebd7ac68f6739}


Test whether \hyperlink{protocolthe-p}{the} \hyperlink{classIPv6}{IPv6} multicast forwarding engine is enabled or disabled to forward packets. 


\begin{DoxyParams}{Parameters}
{\em ret\_\-value} & if true on return, then \hyperlink{protocolthe-p}{the} \hyperlink{classIPv6}{IPv6} multicast forwarding is enabled, otherwise is disabled. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classMfeaMrouter_a26e92bbb25bb3cebbd44f523194aaf29}{
\index{MfeaMrouter@{MfeaMrouter}!set\_\-multicast\_\-forwarding\_\-enabled4@{set\_\-multicast\_\-forwarding\_\-enabled4}}
\index{set\_\-multicast\_\-forwarding\_\-enabled4@{set\_\-multicast\_\-forwarding\_\-enabled4}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{set\_\-multicast\_\-forwarding\_\-enabled4}]{\setlength{\rightskip}{0pt plus 5cm}int MfeaMrouter::set\_\-multicast\_\-forwarding\_\-enabled4 (
\begin{DoxyParamCaption}
\item[{bool}]{v, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classMfeaMrouter_a26e92bbb25bb3cebbd44f523194aaf29}


Set \hyperlink{protocolthe-p}{the} \hyperlink{classIPv4}{IPv4} multicast forwarding engine to enable or disable forwarding of packets. 


\begin{DoxyParams}{Parameters}
{\em v} & if true, then enable \hyperlink{classIPv4}{IPv4} multicast forwarding, otherwise disable it. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classMfeaMrouter_a2c002529460c20b656da91bec8ab8b7e}{
\index{MfeaMrouter@{MfeaMrouter}!set\_\-multicast\_\-forwarding\_\-enabled6@{set\_\-multicast\_\-forwarding\_\-enabled6}}
\index{set\_\-multicast\_\-forwarding\_\-enabled6@{set\_\-multicast\_\-forwarding\_\-enabled6}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{set\_\-multicast\_\-forwarding\_\-enabled6}]{\setlength{\rightskip}{0pt plus 5cm}int MfeaMrouter::set\_\-multicast\_\-forwarding\_\-enabled6 (
\begin{DoxyParamCaption}
\item[{bool}]{v, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classMfeaMrouter_a2c002529460c20b656da91bec8ab8b7e}


Set \hyperlink{protocolthe-p}{the} \hyperlink{classIPv6}{IPv6} multicast forwarding engine to enable or disable forwarding of packets. 


\begin{DoxyParams}{Parameters}
{\em v} & if true, then enable \hyperlink{classIPv6}{IPv6} multicast forwarding, otherwise disable it. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classMfeaMrouter_abf0cc8276571ef73771999a1d388d63a}{
\index{MfeaMrouter@{MfeaMrouter}!start@{start}}
\index{start@{start}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{start}]{\setlength{\rightskip}{0pt plus 5cm}int MfeaMrouter::start (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classMfeaMrouter_abf0cc8276571ef73771999a1d388d63a}


Start \hyperlink{protocolthe-p}{the} \hyperlink{classMfeaMrouter}{MfeaMrouter}. 

\hyperlink{classMfeaMrouter_abf0cc8276571ef73771999a1d388d63a}{MfeaMrouter::start}: @:

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
Start \hyperlink{protocolthe-p}{the} \hyperlink{classMfeaMrouter}{MfeaMrouter}.

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

Reimplemented from \hyperlink{classProtoState_a5a0cf7fc68b9db681ce8b8fca9635e07}{ProtoState}.

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


Start/enable \hyperlink{protocolthe-p}{the} multicast routing in \hyperlink{protocolthe-p}{the} kernel. 

\hyperlink{classMfeaMrouter_a5c4a82e5b0a49dadd0f4c9285e37d3a0}{MfeaMrouter::start\_\-mrt}: @:

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
Start/enable \hyperlink{protocolthe-p}{the} multicast routing in \hyperlink{protocolthe-p}{the} kernel.

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


Start/enable PIM processing in \hyperlink{protocolthe-p}{the} kernel. 


\begin{DoxyParams}{Parameters}
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classMfeaMrouter_a8b0f20c631af4f23db8d9046bbfc1fcd}{
\index{MfeaMrouter@{MfeaMrouter}!stop@{stop}}
\index{stop@{stop}!MfeaMrouter@{MfeaMrouter}}
\subsubsection[{stop}]{\setlength{\rightskip}{0pt plus 5cm}int MfeaMrouter::stop (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classMfeaMrouter_a8b0f20c631af4f23db8d9046bbfc1fcd}


Stop \hyperlink{protocolthe-p}{the} \hyperlink{classMfeaMrouter}{MfeaMrouter}. 

\hyperlink{classMfeaMrouter_a8b0f20c631af4f23db8d9046bbfc1fcd}{MfeaMrouter::stop}: @:

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
Stop \hyperlink{protocolthe-p}{the} \hyperlink{classMfeaMrouter}{MfeaMrouter}.

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

Reimplemented from \hyperlink{classProtoState_a00a8d35d02b0ce61a6b012326e81878c}{ProtoState}.

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


Stop/disable \hyperlink{protocolthe-p}{the} multicast routing in \hyperlink{protocolthe-p}{the} kernel. 

\hyperlink{classMfeaMrouter_a3bd66557fab1135d02649815901c6031}{MfeaMrouter::stop\_\-mrt}: @:

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR.
\end{DoxyReturn}
Stop/disable \hyperlink{protocolthe-p}{the} multicast routing in \hyperlink{protocolthe-p}{the} kernel.

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


Stop/disable PIM processing in \hyperlink{protocolthe-p}{the} kernel. 


\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}


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