\hypertarget{classMfeaDfe}{
\section{MfeaDfe Class Reference}
\label{classMfeaDfe}\index{MfeaDfe@{MfeaDfe}}
}


Multicast dataflow entry class.  




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

\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classMfeaDfe_a571b4799d4eb5e5a07904ddff6dda8cc}{MfeaDfe} (\hyperlink{classMfeaDfeLookup}{MfeaDfeLookup} \&mfea\_\-dfe\_\-lookup, 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)
\begin{DoxyCompactList}\small\item\em Constructor with information with \hyperlink{protocolthe-p}{the} dataflow condition to satisfy. \item\end{DoxyCompactList}\item 
\hypertarget{classMfeaDfe_a139363792b84a148569380fa094734ca}{
\hyperlink{classMfeaDfe_a139363792b84a148569380fa094734ca}{$\sim$MfeaDfe} ()}
\label{classMfeaDfe_a139363792b84a148569380fa094734ca}

\begin{DoxyCompactList}\small\item\em Destructor. \item\end{DoxyCompactList}\item 
\hyperlink{classMfeaDfeLookup}{MfeaDfeLookup} \& \hyperlink{classMfeaDfe_ac3a6093987b5753349cf60145ade0273}{mfea\_\-dfe\_\-lookup} () const 
\begin{DoxyCompactList}\small\item\em Get a reference to \hyperlink{protocolthe-p}{the} \hyperlink{classMfeaDfeLookup}{MfeaDfeLookup} entry this entry belongs to. \item\end{DoxyCompactList}\item 
\hyperlink{classMfeaDft}{MfeaDft} \& \hyperlink{classMfeaDfe_a4b918f046d826562b27d220b2d60ae18}{mfea\_\-dft} () const 
\begin{DoxyCompactList}\small\item\em Get a reference to \hyperlink{protocolthe-p}{the} \hyperlink{classMfeaDft}{MfeaDft} dataflow table this entry belongs to. \item\end{DoxyCompactList}\item 
\hyperlink{classEventLoop}{EventLoop} \& \hyperlink{classMfeaDfe_ad3288da4408ec60573e02d6c93626b74}{eventloop} () const 
\begin{DoxyCompactList}\small\item\em Get a reference to \hyperlink{protocolthe-p}{the} \hyperlink{classEventLoop}{EventLoop}. \item\end{DoxyCompactList}\item 
int \hyperlink{classMfeaDfe_a22c9fb46c221de608e3f1b05ecc7caa7}{family} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} address family. \item\end{DoxyCompactList}\item 
const \hyperlink{classIPvX}{IPvX} \& \hyperlink{classMfeaDfe_a66ebb4d0ce2f0ba5c3687fca719fce62}{source\_\-addr} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} source address. \item\end{DoxyCompactList}\item 
const \hyperlink{classIPvX}{IPvX} \& \hyperlink{classMfeaDfe_ab74a62e2bac7d4d5f2fcc8363c661f2a}{group\_\-addr} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} group address. \item\end{DoxyCompactList}\item 
bool \hyperlink{classMfeaDfe_a3a8065929c6dbf40901353a11e226359}{is\_\-valid} () const 
\begin{DoxyCompactList}\small\item\em Test if this entry is valid. \item\end{DoxyCompactList}\item 
bool \hyperlink{classMfeaDfe_a8b5e5e1bfff6ed833da5d72f6254e631}{is\_\-same} (const \hyperlink{classTimeVal}{TimeVal} \&threshold\_\-interval\_\-test, uint32\_\-t threshold\_\-packets\_\-test, uint32\_\-t threshold\_\-bytes\_\-test, bool is\_\-threshold\_\-in\_\-packets\_\-test, bool is\_\-threshold\_\-in\_\-bytes\_\-test, bool is\_\-geq\_\-upcall\_\-test, bool is\_\-leq\_\-upcall\_\-test) const 
\begin{DoxyCompactList}\small\item\em Compare whether \hyperlink{protocolthe-p}{the} information contained within this \hyperlink{classMfeaDfe}{MfeaDfe} entry is same as \hyperlink{protocolthe-p}{the} specified information. \item\end{DoxyCompactList}\item 
void \hyperlink{classMfeaDfe_a84dd794419dd8f3870b9de4290877bd2}{init\_\-sg\_\-count} ()
\begin{DoxyCompactList}\small\item\em Initialize this entry with \hyperlink{protocolthe-p}{the} current multicast forwarding information. \item\end{DoxyCompactList}\item 
bool \hyperlink{classMfeaDfe_a46c9dcf48ed7d0435451ae8c8f80b358}{test\_\-sg\_\-count} ()
\begin{DoxyCompactList}\small\item\em Test if \hyperlink{protocolthe-p}{the} dataflow bandwidth satisfies \hyperlink{protocolthe-p}{the} pre-\/defined condition. \item\end{DoxyCompactList}\item 
\hypertarget{classMfeaDfe_a966b400e8881fe62f96b35c3d97c64fd}{
void \hyperlink{classMfeaDfe_a966b400e8881fe62f96b35c3d97c64fd}{start\_\-measurement} ()}
\label{classMfeaDfe_a966b400e8881fe62f96b35c3d97c64fd}

\begin{DoxyCompactList}\small\item\em Start bandwidth measurement. \item\end{DoxyCompactList}\item 
\hypertarget{classMfeaDfe_aea6a1ca500f16e9acb26d3778f3edf7e}{
void \hyperlink{classMfeaDfe_aea6a1ca500f16e9acb26d3778f3edf7e}{dataflow\_\-signal\_\-send} ()}
\label{classMfeaDfe_aea6a1ca500f16e9acb26d3778f3edf7e}

\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} a dataflow signal that \hyperlink{protocolthe-p}{the} pre-\/defined condition is true. \item\end{DoxyCompactList}\item 
const \hyperlink{classTimeVal}{TimeVal} \& \hyperlink{classMfeaDfe_a913e5f2316e0ce5cd04b23322f2ee2ef}{threshold\_\-interval} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} threshold interval. \item\end{DoxyCompactList}\item 
uint32\_\-t \hyperlink{classMfeaDfe_a8173852c5524641a027a6ca7728a62a4}{threshold\_\-packets} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} threshold packets. \item\end{DoxyCompactList}\item 
uint32\_\-t \hyperlink{classMfeaDfe_aa5ec46098b83115153f2aa85bf8ba6d4}{threshold\_\-bytes} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} threshold bytes. \item\end{DoxyCompactList}\item 
bool \hyperlink{classMfeaDfe_a5637adcbde3b33fda16461863072194a}{is\_\-threshold\_\-in\_\-packets} () const 
\begin{DoxyCompactList}\small\item\em Test if \hyperlink{protocolthe-p}{the} threshold is in number of packets. \item\end{DoxyCompactList}\item 
bool \hyperlink{classMfeaDfe_a542d7a90bbe9ecfc0a410b5a32802ebd}{is\_\-threshold\_\-in\_\-bytes} () const 
\begin{DoxyCompactList}\small\item\em Test if \hyperlink{protocolthe-p}{the} threshold is in number of bytes. \item\end{DoxyCompactList}\item 
bool \hyperlink{classMfeaDfe_a125cb5657a38e42584b6ac1efc4461d5}{is\_\-geq\_\-upcall} () const 
\begin{DoxyCompactList}\small\item\em Test if \hyperlink{protocolthe-p}{the} threshold type is \char`\"{}greater-\/or-\/equal\char`\"{} (i.e., \char`\"{}$>$=\char`\"{}). \item\end{DoxyCompactList}\item 
bool \hyperlink{classMfeaDfe_ac95bff3dbed12857a25ec3c2a6a26f0d}{is\_\-leq\_\-upcall} () const 
\begin{DoxyCompactList}\small\item\em Test if \hyperlink{protocolthe-p}{the} threshold type is \char`\"{}less-\/or-\/equal\char`\"{} (i.e., \char`\"{}$<$=\char`\"{}). \item\end{DoxyCompactList}\item 
const \hyperlink{classTimeVal}{TimeVal} \& \hyperlink{classMfeaDfe_a7523fd6a86d4fea2ed61700b4697c2e6}{start\_\-time} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} start time for \hyperlink{protocolthe-p}{the} most recent measurement interval window. \item\end{DoxyCompactList}\item 
uint32\_\-t \hyperlink{classMfeaDfe_a00bd36cf2fadb851adc6761b88473185}{measured\_\-packets} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} number of packets measured in \hyperlink{protocolthe-p}{the} most recent interval window. \item\end{DoxyCompactList}\item 
uint32\_\-t \hyperlink{classMfeaDfe_a32cbde0283bd49b9e1f6a7370c570b97}{measured\_\-bytes} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} number of bytes measured in \hyperlink{protocolthe-p}{the} most recent interval window. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classMfeaDfe_ae95d74d5be60832daf4267a483059938}{
void {\bfseries measurement\_\-timer\_\-timeout} ()}
\label{classMfeaDfe_ae95d74d5be60832daf4267a483059938}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classMfeaDfe_aa69e6109e79110058bc66610ac80f0e0}{
\hyperlink{classMfeaDfeLookup}{MfeaDfeLookup} \& {\bfseries \_\-mfea\_\-dfe\_\-lookup}}
\label{classMfeaDfe_aa69e6109e79110058bc66610ac80f0e0}

\item 
\hypertarget{classMfeaDfe_a9d1cf5e0160a46b81f9b84645f7c2cc9}{
\hyperlink{classTimeVal}{TimeVal} {\bfseries \_\-threshold\_\-interval}}
\label{classMfeaDfe_a9d1cf5e0160a46b81f9b84645f7c2cc9}

\item 
\hypertarget{classMfeaDfe_a590f375fc8130c814c4837550dc3d2a4}{
uint32\_\-t {\bfseries \_\-threshold\_\-packets}}
\label{classMfeaDfe_a590f375fc8130c814c4837550dc3d2a4}

\item 
\hypertarget{classMfeaDfe_acf14c8bca00de04dc0abb7b8b1f1bbcf}{
uint32\_\-t {\bfseries \_\-threshold\_\-bytes}}
\label{classMfeaDfe_acf14c8bca00de04dc0abb7b8b1f1bbcf}

\item 
\hypertarget{classMfeaDfe_aae17fddf09c42cc2a05382bf854f552e}{
bool {\bfseries \_\-is\_\-threshold\_\-in\_\-packets}}
\label{classMfeaDfe_aae17fddf09c42cc2a05382bf854f552e}

\item 
\hypertarget{classMfeaDfe_a6b1a5c0b9922f55c7422f800caf9af6e}{
bool {\bfseries \_\-is\_\-threshold\_\-in\_\-bytes}}
\label{classMfeaDfe_a6b1a5c0b9922f55c7422f800caf9af6e}

\item 
\hypertarget{classMfeaDfe_a4a230e5959c39f6be59fc096c1e1bde4}{
bool {\bfseries \_\-is\_\-geq\_\-upcall}}
\label{classMfeaDfe_a4a230e5959c39f6be59fc096c1e1bde4}

\item 
\hypertarget{classMfeaDfe_a3730b6ace57fe2a212576c6e4c87b4d3}{
bool {\bfseries \_\-is\_\-leq\_\-upcall}}
\label{classMfeaDfe_a3730b6ace57fe2a212576c6e4c87b4d3}

\item 
\hypertarget{classMfeaDfe_a109d20a78bbf60e54229ea77ac892746}{
\hyperlink{classSgCount}{SgCount} {\bfseries \_\-last\_\-sg\_\-count}}
\label{classMfeaDfe_a109d20a78bbf60e54229ea77ac892746}

\item 
\hypertarget{classMfeaDfe_ac565425d4eea5f7ce3bd7e68271db4fc}{
\hyperlink{classSgCount}{SgCount} {\bfseries \_\-measured\_\-sg\_\-count}}
\label{classMfeaDfe_ac565425d4eea5f7ce3bd7e68271db4fc}

\item 
\hypertarget{classMfeaDfe_ad8a26ac699273b08812337030fcf88c6}{
\hyperlink{classSgCount}{SgCount} {\bfseries \_\-delta\_\-sg\_\-count} \mbox{[}MFEA\_\-DATAFLOW\_\-TEST\_\-FREQUENCY\mbox{]}}
\label{classMfeaDfe_ad8a26ac699273b08812337030fcf88c6}

\item 
\hypertarget{classMfeaDfe_a5fcdcead72b0297099d5114f20edcc9a}{
size\_\-t {\bfseries \_\-delta\_\-sg\_\-count\_\-index}}
\label{classMfeaDfe_a5fcdcead72b0297099d5114f20edcc9a}

\item 
\hypertarget{classMfeaDfe_a68c949e660f1a4c6f2c3557d4472c1d3}{
bool {\bfseries \_\-is\_\-bootstrap\_\-completed}}
\label{classMfeaDfe_a68c949e660f1a4c6f2c3557d4472c1d3}

\item 
\hypertarget{classMfeaDfe_a1ad869a7d2d9fc6a1682da2b39cc0da6}{
\hyperlink{classTimeVal}{TimeVal} {\bfseries \_\-measurement\_\-interval}}
\label{classMfeaDfe_a1ad869a7d2d9fc6a1682da2b39cc0da6}

\item 
\hypertarget{classMfeaDfe_a20a9b500197c6a6dc288977705189b50}{
\hyperlink{classXorpTimer}{XorpTimer} {\bfseries \_\-measurement\_\-timer}}
\label{classMfeaDfe_a20a9b500197c6a6dc288977705189b50}

\item 
\hypertarget{classMfeaDfe_a612395b5b592546630ec156436dfa0da}{
\hyperlink{classTimeVal}{TimeVal} {\bfseries \_\-start\_\-time} \mbox{[}MFEA\_\-DATAFLOW\_\-TEST\_\-FREQUENCY\mbox{]}}
\label{classMfeaDfe_a612395b5b592546630ec156436dfa0da}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
Multicast dataflow entry class. This entry contains all \hyperlink{protocolthe-p}{the} information about \hyperlink{protocolthe-p}{the} condition a dataflow must satisfy to deliver a signal. It is (S,G)-\/specific, but there could be more than one \hyperlink{classMfeaDfe}{MfeaDfe} entries per (S,G). 

\subsection{Constructor \& Destructor Documentation}
\hypertarget{classMfeaDfe_a571b4799d4eb5e5a07904ddff6dda8cc}{
\index{MfeaDfe@{MfeaDfe}!MfeaDfe@{MfeaDfe}}
\index{MfeaDfe@{MfeaDfe}!MfeaDfe@{MfeaDfe}}
\subsubsection[{MfeaDfe}]{\setlength{\rightskip}{0pt plus 5cm}MfeaDfe::MfeaDfe (
\begin{DoxyParamCaption}
\item[{{\bf MfeaDfeLookup} \&}]{mfea\_\-dfe\_\-lookup, }
\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}
\end{DoxyParamCaption}
)}}
\label{classMfeaDfe_a571b4799d4eb5e5a07904ddff6dda8cc}


Constructor with information with \hyperlink{protocolthe-p}{the} dataflow condition to satisfy. 

Note: either \hyperlink{classMfeaDfe_a5637adcbde3b33fda16461863072194a}{is\_\-threshold\_\-in\_\-packets} or \hyperlink{classMfeaDfe_a542d7a90bbe9ecfc0a410b5a32802ebd}{is\_\-threshold\_\-in\_\-bytes} (or both) must be true. Note: either \hyperlink{classMfeaDfe_a125cb5657a38e42584b6ac1efc4461d5}{is\_\-geq\_\-upcall} or \hyperlink{classMfeaDfe_ac95bff3dbed12857a25ec3c2a6a26f0d}{is\_\-leq\_\-upcall} (but not both) must be true.


\begin{DoxyParams}{Parameters}
{\em mfea\_\-dfe\_\-lookup} & \hyperlink{protocolthe-p}{the} \hyperlink{classMfeaDfeLookup}{MfeaDfeLookup} entry this entry belongs to. \\
\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, \hyperlink{classMfeaDfe_a8173852c5524641a027a6ca7728a62a4}{threshold\_\-packets} is valid. \\
\hline
{\em is\_\-threshold\_\-in\_\-bytes} & if true, \hyperlink{classMfeaDfe_aa5ec46098b83115153f2aa85bf8ba6d4}{threshold\_\-bytes} is valid. \\
\hline
{\em is\_\-geq\_\-upcall} & if true, \hyperlink{protocolthe-p}{the} operation for comparison is \char`\"{}$>$=\char`\"{}. \\
\hline
{\em is\_\-leq\_\-upcall} & if true, \hyperlink{protocolthe-p}{the} operation for comparison is \char`\"{}$<$=\char`\"{}. \\
\hline
\end{DoxyParams}


\subsection{Member Function Documentation}
\hypertarget{classMfeaDfe_ad3288da4408ec60573e02d6c93626b74}{
\index{MfeaDfe@{MfeaDfe}!eventloop@{eventloop}}
\index{eventloop@{eventloop}!MfeaDfe@{MfeaDfe}}
\subsubsection[{eventloop}]{\setlength{\rightskip}{0pt plus 5cm}{\bf EventLoop} \& MfeaDfe::eventloop (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classMfeaDfe_ad3288da4408ec60573e02d6c93626b74}


Get a reference to \hyperlink{protocolthe-p}{the} \hyperlink{classEventLoop}{EventLoop}. 

\begin{DoxyReturn}{Returns}
a reference to \hyperlink{protocolthe-p}{the} \hyperlink{classEventLoop}{EventLoop}. 
\end{DoxyReturn}
\hypertarget{classMfeaDfe_a22c9fb46c221de608e3f1b05ecc7caa7}{
\index{MfeaDfe@{MfeaDfe}!family@{family}}
\index{family@{family}!MfeaDfe@{MfeaDfe}}
\subsubsection[{family}]{\setlength{\rightskip}{0pt plus 5cm}int MfeaDfe::family (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classMfeaDfe_a22c9fb46c221de608e3f1b05ecc7caa7}


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

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} address family (e.g., AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). 
\end{DoxyReturn}
\hypertarget{classMfeaDfe_ab74a62e2bac7d4d5f2fcc8363c661f2a}{
\index{MfeaDfe@{MfeaDfe}!group\_\-addr@{group\_\-addr}}
\index{group\_\-addr@{group\_\-addr}!MfeaDfe@{MfeaDfe}}
\subsubsection[{group\_\-addr}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf IPvX}\& MfeaDfe::group\_\-addr (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classMfeaDfe_ab74a62e2bac7d4d5f2fcc8363c661f2a}


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

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} group address. 
\end{DoxyReturn}
\hypertarget{classMfeaDfe_a84dd794419dd8f3870b9de4290877bd2}{
\index{MfeaDfe@{MfeaDfe}!init\_\-sg\_\-count@{init\_\-sg\_\-count}}
\index{init\_\-sg\_\-count@{init\_\-sg\_\-count}!MfeaDfe@{MfeaDfe}}
\subsubsection[{init\_\-sg\_\-count}]{\setlength{\rightskip}{0pt plus 5cm}void MfeaDfe::init\_\-sg\_\-count (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classMfeaDfe_a84dd794419dd8f3870b9de4290877bd2}


Initialize this entry with \hyperlink{protocolthe-p}{the} current multicast forwarding information. 

The current multicast forwarding bandwidth information is read from \hyperlink{protocolthe-p}{the} kernel. \hypertarget{classMfeaDfe_a125cb5657a38e42584b6ac1efc4461d5}{
\index{MfeaDfe@{MfeaDfe}!is\_\-geq\_\-upcall@{is\_\-geq\_\-upcall}}
\index{is\_\-geq\_\-upcall@{is\_\-geq\_\-upcall}!MfeaDfe@{MfeaDfe}}
\subsubsection[{is\_\-geq\_\-upcall}]{\setlength{\rightskip}{0pt plus 5cm}bool MfeaDfe::is\_\-geq\_\-upcall (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classMfeaDfe_a125cb5657a38e42584b6ac1efc4461d5}


Test if \hyperlink{protocolthe-p}{the} threshold type is \char`\"{}greater-\/or-\/equal\char`\"{} (i.e., \char`\"{}$>$=\char`\"{}). 

\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} threshold type is \char`\"{}greater-\/or-\/equal\char`\"{} (i.e., \char`\"{}$>$=\char`\"{}). 
\end{DoxyReturn}
\hypertarget{classMfeaDfe_ac95bff3dbed12857a25ec3c2a6a26f0d}{
\index{MfeaDfe@{MfeaDfe}!is\_\-leq\_\-upcall@{is\_\-leq\_\-upcall}}
\index{is\_\-leq\_\-upcall@{is\_\-leq\_\-upcall}!MfeaDfe@{MfeaDfe}}
\subsubsection[{is\_\-leq\_\-upcall}]{\setlength{\rightskip}{0pt plus 5cm}bool MfeaDfe::is\_\-leq\_\-upcall (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classMfeaDfe_ac95bff3dbed12857a25ec3c2a6a26f0d}


Test if \hyperlink{protocolthe-p}{the} threshold type is \char`\"{}less-\/or-\/equal\char`\"{} (i.e., \char`\"{}$<$=\char`\"{}). 

\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} threshold type is \char`\"{}less-\/or-\/equal\char`\"{} (i.e., \char`\"{}$<$=\char`\"{}). 
\end{DoxyReturn}
\hypertarget{classMfeaDfe_a8b5e5e1bfff6ed833da5d72f6254e631}{
\index{MfeaDfe@{MfeaDfe}!is\_\-same@{is\_\-same}}
\index{is\_\-same@{is\_\-same}!MfeaDfe@{MfeaDfe}}
\subsubsection[{is\_\-same}]{\setlength{\rightskip}{0pt plus 5cm}bool MfeaDfe::is\_\-same (
\begin{DoxyParamCaption}
\item[{const {\bf TimeVal} \&}]{threshold\_\-interval\_\-test, }
\item[{uint32\_\-t}]{threshold\_\-packets\_\-test, }
\item[{uint32\_\-t}]{threshold\_\-bytes\_\-test, }
\item[{bool}]{is\_\-threshold\_\-in\_\-packets\_\-test, }
\item[{bool}]{is\_\-threshold\_\-in\_\-bytes\_\-test, }
\item[{bool}]{is\_\-geq\_\-upcall\_\-test, }
\item[{bool}]{is\_\-leq\_\-upcall\_\-test}
\end{DoxyParamCaption}
) const}}
\label{classMfeaDfe_a8b5e5e1bfff6ed833da5d72f6254e631}


Compare whether \hyperlink{protocolthe-p}{the} information contained within this \hyperlink{classMfeaDfe}{MfeaDfe} entry is same as \hyperlink{protocolthe-p}{the} specified information. 


\begin{DoxyParams}{Parameters}
{\em threshold\_\-interval\_\-test} & \hyperlink{protocolthe-p}{the} dataflow threshold interval. \\
\hline
{\em threshold\_\-packets\_\-test} & \hyperlink{protocolthe-p}{the} threshold (in number of packets) to compare against. \\
\hline
{\em threshold\_\-bytes\_\-test} & \hyperlink{protocolthe-p}{the} threshold (in number of bytes) to compare against. \\
\hline
{\em is\_\-threshold\_\-in\_\-packets\_\-test} & if true, \hyperlink{classMfeaDfe_a8173852c5524641a027a6ca7728a62a4}{threshold\_\-packets} is valid. \\
\hline
{\em is\_\-threshold\_\-in\_\-bytes\_\-test} & if true, \hyperlink{classMfeaDfe_aa5ec46098b83115153f2aa85bf8ba6d4}{threshold\_\-bytes} is valid. \\
\hline
{\em is\_\-geq\_\-upcall\_\-test} & if true, \hyperlink{protocolthe-p}{the} operation for comparison is \char`\"{}$>$=\char`\"{}. \\
\hline
{\em is\_\-leq\_\-upcall\_\-test} & if true, \hyperlink{protocolthe-p}{the} operation for comparison is \char`\"{}$<$=\char`\"{}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} information contained within this \hyperlink{classMfeaDfe}{MfeaDfe} entry is same as \hyperlink{protocolthe-p}{the} specified information, otherwise false. 
\end{DoxyReturn}
\hypertarget{classMfeaDfe_a542d7a90bbe9ecfc0a410b5a32802ebd}{
\index{MfeaDfe@{MfeaDfe}!is\_\-threshold\_\-in\_\-bytes@{is\_\-threshold\_\-in\_\-bytes}}
\index{is\_\-threshold\_\-in\_\-bytes@{is\_\-threshold\_\-in\_\-bytes}!MfeaDfe@{MfeaDfe}}
\subsubsection[{is\_\-threshold\_\-in\_\-bytes}]{\setlength{\rightskip}{0pt plus 5cm}bool MfeaDfe::is\_\-threshold\_\-in\_\-bytes (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classMfeaDfe_a542d7a90bbe9ecfc0a410b5a32802ebd}


Test if \hyperlink{protocolthe-p}{the} threshold is in number of bytes. 

\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} threshold is in number of bytes. 
\end{DoxyReturn}
\hypertarget{classMfeaDfe_a5637adcbde3b33fda16461863072194a}{
\index{MfeaDfe@{MfeaDfe}!is\_\-threshold\_\-in\_\-packets@{is\_\-threshold\_\-in\_\-packets}}
\index{is\_\-threshold\_\-in\_\-packets@{is\_\-threshold\_\-in\_\-packets}!MfeaDfe@{MfeaDfe}}
\subsubsection[{is\_\-threshold\_\-in\_\-packets}]{\setlength{\rightskip}{0pt plus 5cm}bool MfeaDfe::is\_\-threshold\_\-in\_\-packets (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classMfeaDfe_a5637adcbde3b33fda16461863072194a}


Test if \hyperlink{protocolthe-p}{the} threshold is in number of packets. 

\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} threshold is in number of packets. 
\end{DoxyReturn}
\hypertarget{classMfeaDfe_a3a8065929c6dbf40901353a11e226359}{
\index{MfeaDfe@{MfeaDfe}!is\_\-valid@{is\_\-valid}}
\index{is\_\-valid@{is\_\-valid}!MfeaDfe@{MfeaDfe}}
\subsubsection[{is\_\-valid}]{\setlength{\rightskip}{0pt plus 5cm}bool MfeaDfe::is\_\-valid (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classMfeaDfe_a3a8065929c6dbf40901353a11e226359}


Test if this entry is valid. 

An entry is valid if, for example: (a) either \hyperlink{classMfeaDfe_a5637adcbde3b33fda16461863072194a}{is\_\-threshold\_\-in\_\-packets} or \hyperlink{classMfeaDfe_a542d7a90bbe9ecfc0a410b5a32802ebd}{is\_\-threshold\_\-in\_\-bytes} (or both) must be true. (b) either \hyperlink{classMfeaDfe_a125cb5657a38e42584b6ac1efc4461d5}{is\_\-geq\_\-upcall} or \hyperlink{classMfeaDfe_ac95bff3dbed12857a25ec3c2a6a26f0d}{is\_\-leq\_\-upcall} (but not both) must be true. (c) \hyperlink{protocolthe-p}{the} threshold interval is not too small. (d) \hyperlink{protocolthe-p}{the} bandwidth-\/related statistics do not contain invalid values.

\begin{DoxyReturn}{Returns}
true if this entry is valid, otherwise false. 
\end{DoxyReturn}
\hypertarget{classMfeaDfe_a32cbde0283bd49b9e1f6a7370c570b97}{
\index{MfeaDfe@{MfeaDfe}!measured\_\-bytes@{measured\_\-bytes}}
\index{measured\_\-bytes@{measured\_\-bytes}!MfeaDfe@{MfeaDfe}}
\subsubsection[{measured\_\-bytes}]{\setlength{\rightskip}{0pt plus 5cm}uint32\_\-t MfeaDfe::measured\_\-bytes (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classMfeaDfe_a32cbde0283bd49b9e1f6a7370c570b97}


Get \hyperlink{protocolthe-p}{the} number of bytes measured in \hyperlink{protocolthe-p}{the} most recent interval window. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} number of bytes measured in \hyperlink{protocolthe-p}{the} most recent interval window. 
\end{DoxyReturn}
\hypertarget{classMfeaDfe_a00bd36cf2fadb851adc6761b88473185}{
\index{MfeaDfe@{MfeaDfe}!measured\_\-packets@{measured\_\-packets}}
\index{measured\_\-packets@{measured\_\-packets}!MfeaDfe@{MfeaDfe}}
\subsubsection[{measured\_\-packets}]{\setlength{\rightskip}{0pt plus 5cm}uint32\_\-t MfeaDfe::measured\_\-packets (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classMfeaDfe_a00bd36cf2fadb851adc6761b88473185}


Get \hyperlink{protocolthe-p}{the} number of packets measured in \hyperlink{protocolthe-p}{the} most recent interval window. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} number of packets measured in \hyperlink{protocolthe-p}{the} most recent interval window. 
\end{DoxyReturn}
\hypertarget{classMfeaDfe_ac3a6093987b5753349cf60145ade0273}{
\index{MfeaDfe@{MfeaDfe}!mfea\_\-dfe\_\-lookup@{mfea\_\-dfe\_\-lookup}}
\index{mfea\_\-dfe\_\-lookup@{mfea\_\-dfe\_\-lookup}!MfeaDfe@{MfeaDfe}}
\subsubsection[{mfea\_\-dfe\_\-lookup}]{\setlength{\rightskip}{0pt plus 5cm}{\bf MfeaDfeLookup}\& MfeaDfe::mfea\_\-dfe\_\-lookup (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classMfeaDfe_ac3a6093987b5753349cf60145ade0273}


Get a reference to \hyperlink{protocolthe-p}{the} \hyperlink{classMfeaDfeLookup}{MfeaDfeLookup} entry this entry belongs to. 

\begin{DoxyReturn}{Returns}
a reference to \hyperlink{protocolthe-p}{the} \hyperlink{classMfeaDfeLookup}{MfeaDfeLookup} entry this entry belongs to. 
\end{DoxyReturn}
\hypertarget{classMfeaDfe_a4b918f046d826562b27d220b2d60ae18}{
\index{MfeaDfe@{MfeaDfe}!mfea\_\-dft@{mfea\_\-dft}}
\index{mfea\_\-dft@{mfea\_\-dft}!MfeaDfe@{MfeaDfe}}
\subsubsection[{mfea\_\-dft}]{\setlength{\rightskip}{0pt plus 5cm}{\bf MfeaDft} \& MfeaDfe::mfea\_\-dft (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classMfeaDfe_a4b918f046d826562b27d220b2d60ae18}


Get a reference to \hyperlink{protocolthe-p}{the} \hyperlink{classMfeaDft}{MfeaDft} dataflow table this entry belongs to. 

\begin{DoxyReturn}{Returns}
a reference to \hyperlink{protocolthe-p}{the} \hyperlink{classMfeaDft}{MfeaDft} dataflow table this entry belongs to. 
\end{DoxyReturn}
\hypertarget{classMfeaDfe_a66ebb4d0ce2f0ba5c3687fca719fce62}{
\index{MfeaDfe@{MfeaDfe}!source\_\-addr@{source\_\-addr}}
\index{source\_\-addr@{source\_\-addr}!MfeaDfe@{MfeaDfe}}
\subsubsection[{source\_\-addr}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf IPvX}\& MfeaDfe::source\_\-addr (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classMfeaDfe_a66ebb4d0ce2f0ba5c3687fca719fce62}


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

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} source address. 
\end{DoxyReturn}
\hypertarget{classMfeaDfe_a7523fd6a86d4fea2ed61700b4697c2e6}{
\index{MfeaDfe@{MfeaDfe}!start\_\-time@{start\_\-time}}
\index{start\_\-time@{start\_\-time}!MfeaDfe@{MfeaDfe}}
\subsubsection[{start\_\-time}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf TimeVal} \& MfeaDfe::start\_\-time (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classMfeaDfe_a7523fd6a86d4fea2ed61700b4697c2e6}


Get \hyperlink{protocolthe-p}{the} start time for \hyperlink{protocolthe-p}{the} most recent measurement interval window. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} start time for \hyperlink{protocolthe-p}{the} most recent measurement interval window. 
\end{DoxyReturn}
\hypertarget{classMfeaDfe_a46c9dcf48ed7d0435451ae8c8f80b358}{
\index{MfeaDfe@{MfeaDfe}!test\_\-sg\_\-count@{test\_\-sg\_\-count}}
\index{test\_\-sg\_\-count@{test\_\-sg\_\-count}!MfeaDfe@{MfeaDfe}}
\subsubsection[{test\_\-sg\_\-count}]{\setlength{\rightskip}{0pt plus 5cm}bool MfeaDfe::test\_\-sg\_\-count (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classMfeaDfe_a46c9dcf48ed7d0435451ae8c8f80b358}


Test if \hyperlink{protocolthe-p}{the} dataflow bandwidth satisfies \hyperlink{protocolthe-p}{the} pre-\/defined condition. 

The multicast forwarding bandwidth information is read from \hyperlink{protocolthe-p}{the} kernel, and then is tested whether is above/below \hyperlink{protocolthe-p}{the} pre-\/defined threshold.

\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} dataflow bandwidth satisifes \hyperlink{protocolthe-p}{the} pre-\/defined condition, otherwise false. Note: if both \char`\"{}is\_\-threshold\_\-in\_\-packets\char`\"{} and \char`\"{}is\_\-threshold\_\-in\_\-bytes\char`\"{} are true, then return true if \hyperlink{protocolthe-p}{the} test is positive for either unit (i.e., packets or bytes). 
\end{DoxyReturn}
\hypertarget{classMfeaDfe_aa5ec46098b83115153f2aa85bf8ba6d4}{
\index{MfeaDfe@{MfeaDfe}!threshold\_\-bytes@{threshold\_\-bytes}}
\index{threshold\_\-bytes@{threshold\_\-bytes}!MfeaDfe@{MfeaDfe}}
\subsubsection[{threshold\_\-bytes}]{\setlength{\rightskip}{0pt plus 5cm}uint32\_\-t MfeaDfe::threshold\_\-bytes (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classMfeaDfe_aa5ec46098b83115153f2aa85bf8ba6d4}


Get \hyperlink{protocolthe-p}{the} threshold bytes. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} threshold bytes for this dataflow entry. 
\end{DoxyReturn}
\hypertarget{classMfeaDfe_a913e5f2316e0ce5cd04b23322f2ee2ef}{
\index{MfeaDfe@{MfeaDfe}!threshold\_\-interval@{threshold\_\-interval}}
\index{threshold\_\-interval@{threshold\_\-interval}!MfeaDfe@{MfeaDfe}}
\subsubsection[{threshold\_\-interval}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf TimeVal}\& MfeaDfe::threshold\_\-interval (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classMfeaDfe_a913e5f2316e0ce5cd04b23322f2ee2ef}


Get \hyperlink{protocolthe-p}{the} threshold interval. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} threshold interval for this dataflow entry. 
\end{DoxyReturn}
\hypertarget{classMfeaDfe_a8173852c5524641a027a6ca7728a62a4}{
\index{MfeaDfe@{MfeaDfe}!threshold\_\-packets@{threshold\_\-packets}}
\index{threshold\_\-packets@{threshold\_\-packets}!MfeaDfe@{MfeaDfe}}
\subsubsection[{threshold\_\-packets}]{\setlength{\rightskip}{0pt plus 5cm}uint32\_\-t MfeaDfe::threshold\_\-packets (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classMfeaDfe_a8173852c5524641a027a6ca7728a62a4}


Get \hyperlink{protocolthe-p}{the} threshold packets. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} threshold packets for this dataflow entry. 
\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\_\-dataflow.hh\item 
/home/greearb/git/xorp.ct.github/xorp/fea/mfea\_\-dataflow.cc\end{DoxyCompactItemize}
