\hypertarget{classIoLinkComm}{
\section{IoLinkComm Class Reference}
\label{classIoLinkComm}\index{IoLinkComm@{IoLinkComm}}
}


A class that handles raw link I/O communication for a specific protocol.  




{\ttfamily \#include $<$io\_\-link\_\-manager.hh$>$}

Inheritance diagram for IoLinkComm:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classIoLinkComm}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class \hyperlink{classIoLinkComm_1_1InputFilter}{InputFilter}
\begin{DoxyCompactList}\small\item\em Filter class. \item\end{DoxyCompactList}\item 
class \hyperlink{classIoLinkComm_1_1JoinedMulticastGroup}{JoinedMulticastGroup}
\begin{DoxyCompactList}\small\item\em Joined multicast group class. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classIoLinkComm_a17677f314d94b650778299d7325d829b}{IoLinkComm} (\hyperlink{classIoLinkManager}{IoLinkManager} \&io\_\-link\_\-manager, const \hyperlink{classIfTree}{IfTree} \&iftree, const string \&if\_\-name, const string \&vif\_\-name, uint16\_\-t ether\_\-type, const string \&filter\_\-program)
\begin{DoxyCompactList}\small\item\em Constructor for \hyperlink{classIoLinkComm}{IoLinkComm}. \item\end{DoxyCompactList}\item 
\hypertarget{classIoLinkComm_a18124226b7e3269454fe8971c2546339}{
virtual \hyperlink{classIoLinkComm_a18124226b7e3269454fe8971c2546339}{$\sim$IoLinkComm} ()}
\label{classIoLinkComm_a18124226b7e3269454fe8971c2546339}

\begin{DoxyCompactList}\small\item\em Virtual destructor. \item\end{DoxyCompactList}\item 
\hypertarget{classIoLinkComm_a4118cd263e54e8583807b92458e5138a}{
void \hyperlink{classIoLinkComm_a4118cd263e54e8583807b92458e5138a}{allocate\_\-io\_\-link\_\-plugins} ()}
\label{classIoLinkComm_a4118cd263e54e8583807b92458e5138a}

\begin{DoxyCompactList}\small\item\em Allocate \hyperlink{protocolthe-p}{the} I/O Link plugins (one per data plane manager). \item\end{DoxyCompactList}\item 
\hypertarget{classIoLinkComm_a5127eb6cbb71913af53cb4d859932627}{
void \hyperlink{classIoLinkComm_a5127eb6cbb71913af53cb4d859932627}{deallocate\_\-io\_\-link\_\-plugins} ()}
\label{classIoLinkComm_a5127eb6cbb71913af53cb4d859932627}

\begin{DoxyCompactList}\small\item\em Deallocate \hyperlink{protocolthe-p}{the} I/O Link plugins (one per data plane manager). \item\end{DoxyCompactList}\item 
void \hyperlink{classIoLinkComm_a91c4eeca29c32c6fe9b20ab7e063653f}{allocate\_\-io\_\-link\_\-plugin} (\hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} $\ast$fea\_\-data\_\-plane\_\-manager)
\begin{DoxyCompactList}\small\item\em Allocate an I/O Link plugin for a given data plane manager. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoLinkComm_a6eba82136287790f4e27b3e73f2884c1}{deallocate\_\-io\_\-link\_\-plugin} (\hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} $\ast$fea\_\-data\_\-plane\_\-manager)
\begin{DoxyCompactList}\small\item\em Deallocate \hyperlink{protocolthe-p}{the} I/O Link plugin for a given data plane manager. \item\end{DoxyCompactList}\item 
\hypertarget{classIoLinkComm_a3438087ac0c6bd99d89dd0cf36e6be6b}{
void \hyperlink{classIoLinkComm_a3438087ac0c6bd99d89dd0cf36e6be6b}{start\_\-io\_\-link\_\-plugins} ()}
\label{classIoLinkComm_a3438087ac0c6bd99d89dd0cf36e6be6b}

\begin{DoxyCompactList}\small\item\em Start all I/O Link plugins. \item\end{DoxyCompactList}\item 
\hypertarget{classIoLinkComm_a4a744ae144526de56d773f8f92c866a4}{
void \hyperlink{classIoLinkComm_a4a744ae144526de56d773f8f92c866a4}{stop\_\-io\_\-link\_\-plugins} ()}
\label{classIoLinkComm_a4a744ae144526de56d773f8f92c866a4}

\begin{DoxyCompactList}\small\item\em Stop all I/O Link plugins. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoLinkComm_a1d08c396f4fa7f52043fb8e773e523be}{add\_\-filter} (\hyperlink{classIoLinkComm_1_1InputFilter}{InputFilter} $\ast$filter)
\begin{DoxyCompactList}\small\item\em Add a filter to list of input filters. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoLinkComm_a4590856ea6d9711bb9a4433c5b366185}{remove\_\-filter} (\hyperlink{classIoLinkComm_1_1InputFilter}{InputFilter} $\ast$filter)
\begin{DoxyCompactList}\small\item\em Remove filter from list of input filters. \item\end{DoxyCompactList}\item 
bool \hyperlink{classIoLinkComm_a77abd652aaf4ca37c8633e70495ba86b}{no\_\-input\_\-filters} () const 
\item 
int \hyperlink{classIoLinkComm_acddf7f843c4b2833dcd7a977754c433f}{send\_\-packet} (const \hyperlink{classMac}{Mac} \&src\_\-address, const \hyperlink{classMac}{Mac} \&dst\_\-address, uint16\_\-t ether\_\-type, const vector$<$ uint8\_\-t $>$ \&payload, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} a raw link-\/level packet. \item\end{DoxyCompactList}\item 
virtual void \hyperlink{classIoLinkComm_af1d445806a5e18d651accc8a08bd269d}{recv\_\-packet} (const \hyperlink{classMac}{Mac} \&src\_\-address, const \hyperlink{classMac}{Mac} \&dst\_\-address, uint16\_\-t ether\_\-type, const vector$<$ uint8\_\-t $>$ \&payload)
\begin{DoxyCompactList}\small\item\em Received a raw link-\/level packet. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoLinkComm_a7eb4763103c02339fd0f95748084255b}{join\_\-multicast\_\-group} (const \hyperlink{classMac}{Mac} \&group\_\-address, const string \&receiver\_\-name, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Join a MAC multicast group. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoLinkComm_a3c5ba596373ea4fbea681c850707fadf}{leave\_\-multicast\_\-group} (const \hyperlink{classMac}{Mac} \&group\_\-address, const string \&receiver\_\-name, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Leave a MAC multicast group. \item\end{DoxyCompactList}\item 
const string \& \hyperlink{classIoLinkComm_a76ea637abebe27a98c1a81811ff6c22b}{if\_\-name} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} interface name. \item\end{DoxyCompactList}\item 
const string \& \hyperlink{classIoLinkComm_a5aaebf79c0c542dfb785675074f5d2cf}{vif\_\-name} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} vif name. \item\end{DoxyCompactList}\item 
uint16\_\-t \hyperlink{classIoLinkComm_a90c87b86924bfb5be237ce67c7ca3a71}{ether\_\-type} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} EtherType protocol number. \item\end{DoxyCompactList}\item 
const string \& \hyperlink{classIoLinkComm_ad63473c9ec80c024b6ff9c0303df0ccb}{filter\_\-program} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} filter program. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classIoLinkComm_a62d02ea5af5630f1bc53c11bddac2667}{
typedef list$<$ pair$<$ \hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} $\ast$, \hyperlink{classIoLink}{IoLink} $\ast$ $>$ $>$ {\bfseries IoLinkPlugins}}
\label{classIoLinkComm_a62d02ea5af5630f1bc53c11bddac2667}

\item 
\hypertarget{classIoLinkComm_a879b5541b0fef8b2c8a75c4b2555f58e}{
typedef map$<$ \hyperlink{classIoLinkComm_1_1JoinedMulticastGroup}{JoinedMulticastGroup}, \hyperlink{classIoLinkComm_1_1JoinedMulticastGroup}{JoinedMulticastGroup} $>$ {\bfseries JoinedGroupsTable}}
\label{classIoLinkComm_a879b5541b0fef8b2c8a75c4b2555f58e}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classIoLinkComm_aeb4ec7d10e360659c2ceb9e144bef4ad}{
{\bfseries IoLinkComm} (const \hyperlink{classIoLinkComm}{IoLinkComm} \&)}
\label{classIoLinkComm_aeb4ec7d10e360659c2ceb9e144bef4ad}

\item 
\hypertarget{classIoLinkComm_a7f344aca3af1e48c6047b602b55d9f2b}{
\hyperlink{classIoLinkComm}{IoLinkComm} \& {\bfseries operator=} (const \hyperlink{classIoLinkComm}{IoLinkComm} \&)}
\label{classIoLinkComm_a7f344aca3af1e48c6047b602b55d9f2b}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classIoLinkComm_a14a81d62a2f5a486c644819af5621154}{
\hyperlink{classIoLinkManager}{IoLinkManager} \& {\bfseries \_\-io\_\-link\_\-manager}}
\label{classIoLinkComm_a14a81d62a2f5a486c644819af5621154}

\item 
\hypertarget{classIoLinkComm_aef502022736aa1c80ab2dbb0e224b038}{
const \hyperlink{classIfTree}{IfTree} \& {\bfseries \_\-iftree}}
\label{classIoLinkComm_aef502022736aa1c80ab2dbb0e224b038}

\item 
\hypertarget{classIoLinkComm_ae215b248bb75d472e4837212176dcd49}{
const string {\bfseries \_\-if\_\-name}}
\label{classIoLinkComm_ae215b248bb75d472e4837212176dcd49}

\item 
\hypertarget{classIoLinkComm_a24a03e693a92b90bdc1cf2a02555064f}{
const string {\bfseries \_\-vif\_\-name}}
\label{classIoLinkComm_a24a03e693a92b90bdc1cf2a02555064f}

\item 
\hypertarget{classIoLinkComm_a7ee7045bba8aca7eae0f8ba7a10929b3}{
const uint16\_\-t {\bfseries \_\-ether\_\-type}}
\label{classIoLinkComm_a7ee7045bba8aca7eae0f8ba7a10929b3}

\item 
\hypertarget{classIoLinkComm_a5e7dbb8bca748ae8d1b88daf5e44dd1e}{
const string {\bfseries \_\-filter\_\-program}}
\label{classIoLinkComm_a5e7dbb8bca748ae8d1b88daf5e44dd1e}

\item 
\hypertarget{classIoLinkComm_a64e281e9c582666b4d0f815464e71106}{
IoLinkPlugins {\bfseries \_\-io\_\-link\_\-plugins}}
\label{classIoLinkComm_a64e281e9c582666b4d0f815464e71106}

\item 
\hypertarget{classIoLinkComm_a0279165723e89d338ec5e49adb417646}{
list$<$ \hyperlink{classIoLinkComm_1_1InputFilter}{InputFilter} $\ast$ $>$ {\bfseries \_\-input\_\-filters}}
\label{classIoLinkComm_a0279165723e89d338ec5e49adb417646}

\item 
\hypertarget{classIoLinkComm_a82c15eabb910fc187fad6cde92d547e2}{
JoinedGroupsTable {\bfseries \_\-joined\_\-groups\_\-table}}
\label{classIoLinkComm_a82c15eabb910fc187fad6cde92d547e2}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
A class that handles raw link I/O communication for a specific protocol. It also allows arbitrary filters to receive \hyperlink{protocolthe-p}{the} raw link-\/level data for that protocol. 

\subsection{Constructor \& Destructor Documentation}
\hypertarget{classIoLinkComm_a17677f314d94b650778299d7325d829b}{
\index{IoLinkComm@{IoLinkComm}!IoLinkComm@{IoLinkComm}}
\index{IoLinkComm@{IoLinkComm}!IoLinkComm@{IoLinkComm}}
\subsubsection[{IoLinkComm}]{\setlength{\rightskip}{0pt plus 5cm}IoLinkComm::IoLinkComm (
\begin{DoxyParamCaption}
\item[{{\bf IoLinkManager} \&}]{io\_\-link\_\-manager, }
\item[{const {\bf IfTree} \&}]{iftree, }
\item[{const string \&}]{if\_\-name, }
\item[{const string \&}]{vif\_\-name, }
\item[{uint16\_\-t}]{ether\_\-type, }
\item[{const string \&}]{filter\_\-program}
\end{DoxyParamCaption}
)}}
\label{classIoLinkComm_a17677f314d94b650778299d7325d829b}


Constructor for \hyperlink{classIoLinkComm}{IoLinkComm}. 


\begin{DoxyParams}{Parameters}
{\em io\_\-link\_\-manager} & \hyperlink{protocolthe-p}{the} corresponding I/O Link manager (\hyperlink{classIoLinkManager}{IoLinkManager}). \\
\hline
{\em iftree} & \hyperlink{protocolthe-p}{the} interface tree to use. \\
\hline
{\em if\_\-name} & \hyperlink{protocolthe-p}{the} interface name. \\
\hline
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} vif name. \\
\hline
{\em ether\_\-type} & \hyperlink{protocolthe-p}{the} EtherType protocol number. \\
\hline
{\em filter\_\-program} & \hyperlink{protocolthe-p}{the} optional filter program to be applied on \hyperlink{protocolthe-p}{the} received packets. \\
\hline
\end{DoxyParams}


\subsection{Member Function Documentation}
\hypertarget{classIoLinkComm_a1d08c396f4fa7f52043fb8e773e523be}{
\index{IoLinkComm@{IoLinkComm}!add\_\-filter@{add\_\-filter}}
\index{add\_\-filter@{add\_\-filter}!IoLinkComm@{IoLinkComm}}
\subsubsection[{add\_\-filter}]{\setlength{\rightskip}{0pt plus 5cm}int IoLinkComm::add\_\-filter (
\begin{DoxyParamCaption}
\item[{{\bf InputFilter} $\ast$}]{filter}
\end{DoxyParamCaption}
)}}
\label{classIoLinkComm_a1d08c396f4fa7f52043fb8e773e523be}


Add a filter to list of input filters. 

The \hyperlink{classIoLinkComm}{IoLinkComm} class assumes that \hyperlink{protocolthe-p}{the} callee will be responsible for managing \hyperlink{protocolthe-p}{the} memory associated with \hyperlink{protocolthe-p}{the} filter and will call \hyperlink{classIoLinkComm_a4590856ea6d9711bb9a4433c5b366185}{remove\_\-filter()} if \hyperlink{protocolthe-p}{the} filter is deleted or goes out of scope.


\begin{DoxyParams}{Parameters}
{\em filter} & \hyperlink{protocolthe-p}{the} filter to add. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoLinkComm_a91c4eeca29c32c6fe9b20ab7e063653f}{
\index{IoLinkComm@{IoLinkComm}!allocate\_\-io\_\-link\_\-plugin@{allocate\_\-io\_\-link\_\-plugin}}
\index{allocate\_\-io\_\-link\_\-plugin@{allocate\_\-io\_\-link\_\-plugin}!IoLinkComm@{IoLinkComm}}
\subsubsection[{allocate\_\-io\_\-link\_\-plugin}]{\setlength{\rightskip}{0pt plus 5cm}void IoLinkComm::allocate\_\-io\_\-link\_\-plugin (
\begin{DoxyParamCaption}
\item[{{\bf FeaDataPlaneManager} $\ast$}]{fea\_\-data\_\-plane\_\-manager}
\end{DoxyParamCaption}
)}}
\label{classIoLinkComm_a91c4eeca29c32c6fe9b20ab7e063653f}


Allocate an I/O Link plugin for a given data plane manager. 


\begin{DoxyParams}{Parameters}
{\em fea\_\-data\_\-plane\_\-manager} & \hyperlink{protocolthe-p}{the} data plane manager. \\
\hline
\end{DoxyParams}
\hypertarget{classIoLinkComm_a6eba82136287790f4e27b3e73f2884c1}{
\index{IoLinkComm@{IoLinkComm}!deallocate\_\-io\_\-link\_\-plugin@{deallocate\_\-io\_\-link\_\-plugin}}
\index{deallocate\_\-io\_\-link\_\-plugin@{deallocate\_\-io\_\-link\_\-plugin}!IoLinkComm@{IoLinkComm}}
\subsubsection[{deallocate\_\-io\_\-link\_\-plugin}]{\setlength{\rightskip}{0pt plus 5cm}void IoLinkComm::deallocate\_\-io\_\-link\_\-plugin (
\begin{DoxyParamCaption}
\item[{{\bf FeaDataPlaneManager} $\ast$}]{fea\_\-data\_\-plane\_\-manager}
\end{DoxyParamCaption}
)}}
\label{classIoLinkComm_a6eba82136287790f4e27b3e73f2884c1}


Deallocate \hyperlink{protocolthe-p}{the} I/O Link plugin for a given data plane manager. 


\begin{DoxyParams}{Parameters}
{\em fea\_\-data\_\-plane\_\-manager} & \hyperlink{protocolthe-p}{the} data plane manager. \\
\hline
\end{DoxyParams}
\hypertarget{classIoLinkComm_a90c87b86924bfb5be237ce67c7ca3a71}{
\index{IoLinkComm@{IoLinkComm}!ether\_\-type@{ether\_\-type}}
\index{ether\_\-type@{ether\_\-type}!IoLinkComm@{IoLinkComm}}
\subsubsection[{ether\_\-type}]{\setlength{\rightskip}{0pt plus 5cm}uint16\_\-t IoLinkComm::ether\_\-type (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoLinkComm_a90c87b86924bfb5be237ce67c7ca3a71}


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

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} EtherType protocol number. 
\end{DoxyReturn}
\hypertarget{classIoLinkComm_ad63473c9ec80c024b6ff9c0303df0ccb}{
\index{IoLinkComm@{IoLinkComm}!filter\_\-program@{filter\_\-program}}
\index{filter\_\-program@{filter\_\-program}!IoLinkComm@{IoLinkComm}}
\subsubsection[{filter\_\-program}]{\setlength{\rightskip}{0pt plus 5cm}const string\& IoLinkComm::filter\_\-program (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoLinkComm_ad63473c9ec80c024b6ff9c0303df0ccb}


Get \hyperlink{protocolthe-p}{the} filter program. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} filter program. 
\end{DoxyReturn}
\hypertarget{classIoLinkComm_a76ea637abebe27a98c1a81811ff6c22b}{
\index{IoLinkComm@{IoLinkComm}!if\_\-name@{if\_\-name}}
\index{if\_\-name@{if\_\-name}!IoLinkComm@{IoLinkComm}}
\subsubsection[{if\_\-name}]{\setlength{\rightskip}{0pt plus 5cm}const string\& IoLinkComm::if\_\-name (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoLinkComm_a76ea637abebe27a98c1a81811ff6c22b}


Get \hyperlink{protocolthe-p}{the} interface name. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} interface name. 
\end{DoxyReturn}
\hypertarget{classIoLinkComm_a7eb4763103c02339fd0f95748084255b}{
\index{IoLinkComm@{IoLinkComm}!join\_\-multicast\_\-group@{join\_\-multicast\_\-group}}
\index{join\_\-multicast\_\-group@{join\_\-multicast\_\-group}!IoLinkComm@{IoLinkComm}}
\subsubsection[{join\_\-multicast\_\-group}]{\setlength{\rightskip}{0pt plus 5cm}int IoLinkComm::join\_\-multicast\_\-group (
\begin{DoxyParamCaption}
\item[{const {\bf Mac} \&}]{group\_\-address, }
\item[{const string \&}]{receiver\_\-name, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoLinkComm_a7eb4763103c02339fd0f95748084255b}


Join a MAC multicast group. 


\begin{DoxyParams}{Parameters}
{\em group\_\-address} & \hyperlink{protocolthe-p}{the} multicast group address to join. \\
\hline
{\em receiver\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} receiver. \\
\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{classIoLinkComm_a3c5ba596373ea4fbea681c850707fadf}{
\index{IoLinkComm@{IoLinkComm}!leave\_\-multicast\_\-group@{leave\_\-multicast\_\-group}}
\index{leave\_\-multicast\_\-group@{leave\_\-multicast\_\-group}!IoLinkComm@{IoLinkComm}}
\subsubsection[{leave\_\-multicast\_\-group}]{\setlength{\rightskip}{0pt plus 5cm}int IoLinkComm::leave\_\-multicast\_\-group (
\begin{DoxyParamCaption}
\item[{const {\bf Mac} \&}]{group\_\-address, }
\item[{const string \&}]{receiver\_\-name, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoLinkComm_a3c5ba596373ea4fbea681c850707fadf}


Leave a MAC multicast group. 


\begin{DoxyParams}{Parameters}
{\em group\_\-address} & \hyperlink{protocolthe-p}{the} multicast group address to leave. \\
\hline
{\em receiver\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} receiver. \\
\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{classIoLinkComm_a77abd652aaf4ca37c8633e70495ba86b}{
\index{IoLinkComm@{IoLinkComm}!no\_\-input\_\-filters@{no\_\-input\_\-filters}}
\index{no\_\-input\_\-filters@{no\_\-input\_\-filters}!IoLinkComm@{IoLinkComm}}
\subsubsection[{no\_\-input\_\-filters}]{\setlength{\rightskip}{0pt plus 5cm}bool IoLinkComm::no\_\-input\_\-filters (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoLinkComm_a77abd652aaf4ca37c8633e70495ba86b}
\begin{DoxyReturn}{Returns}
true if there are no filters associated with this instance. 
\end{DoxyReturn}
\hypertarget{classIoLinkComm_af1d445806a5e18d651accc8a08bd269d}{
\index{IoLinkComm@{IoLinkComm}!recv\_\-packet@{recv\_\-packet}}
\index{recv\_\-packet@{recv\_\-packet}!IoLinkComm@{IoLinkComm}}
\subsubsection[{recv\_\-packet}]{\setlength{\rightskip}{0pt plus 5cm}void IoLinkComm::recv\_\-packet (
\begin{DoxyParamCaption}
\item[{const {\bf Mac} \&}]{src\_\-address, }
\item[{const {\bf Mac} \&}]{dst\_\-address, }
\item[{uint16\_\-t}]{ether\_\-type, }
\item[{const vector$<$ uint8\_\-t $>$ \&}]{payload}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classIoLinkComm_af1d445806a5e18d651accc8a08bd269d}


Received a raw link-\/level packet. 


\begin{DoxyParams}{Parameters}
{\em src\_\-address} & \hyperlink{protocolthe-p}{the} MAC source address. \\
\hline
{\em dst\_\-address} & \hyperlink{protocolthe-p}{the} MAC destination address. \\
\hline
{\em ether\_\-type} & \hyperlink{protocolthe-p}{the} EtherType protocol number. \\
\hline
{\em packet} & \hyperlink{protocolthe-p}{the} payload, everything after \hyperlink{protocolthe-p}{the} MAC header. \\
\hline
\end{DoxyParams}


Implements \hyperlink{classIoLinkReceiver_a09726325e033ebbce466008048406744}{IoLinkReceiver}.

\hypertarget{classIoLinkComm_a4590856ea6d9711bb9a4433c5b366185}{
\index{IoLinkComm@{IoLinkComm}!remove\_\-filter@{remove\_\-filter}}
\index{remove\_\-filter@{remove\_\-filter}!IoLinkComm@{IoLinkComm}}
\subsubsection[{remove\_\-filter}]{\setlength{\rightskip}{0pt plus 5cm}int IoLinkComm::remove\_\-filter (
\begin{DoxyParamCaption}
\item[{{\bf InputFilter} $\ast$}]{filter}
\end{DoxyParamCaption}
)}}
\label{classIoLinkComm_a4590856ea6d9711bb9a4433c5b366185}


Remove filter from list of input filters. 


\begin{DoxyParams}{Parameters}
{\em filter} & \hyperlink{protocolthe-p}{the} filter to remove. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoLinkComm_acddf7f843c4b2833dcd7a977754c433f}{
\index{IoLinkComm@{IoLinkComm}!send\_\-packet@{send\_\-packet}}
\index{send\_\-packet@{send\_\-packet}!IoLinkComm@{IoLinkComm}}
\subsubsection[{send\_\-packet}]{\setlength{\rightskip}{0pt plus 5cm}int IoLinkComm::send\_\-packet (
\begin{DoxyParamCaption}
\item[{const {\bf Mac} \&}]{src\_\-address, }
\item[{const {\bf Mac} \&}]{dst\_\-address, }
\item[{uint16\_\-t}]{ether\_\-type, }
\item[{const vector$<$ uint8\_\-t $>$ \&}]{payload, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoLinkComm_acddf7f843c4b2833dcd7a977754c433f}


\hyperlink{structSend}{Send} a raw link-\/level packet. 


\begin{DoxyParams}{Parameters}
{\em src\_\-address} & \hyperlink{protocolthe-p}{the} MAC source address. \\
\hline
{\em dst\_\-address} & \hyperlink{protocolthe-p}{the} MAC destination address. \\
\hline
{\em ether\_\-type} & \hyperlink{protocolthe-p}{the} EtherType protocol number. \\
\hline
{\em payload} & \hyperlink{protocolthe-p}{the} payload, everything after \hyperlink{protocolthe-p}{the} MAC header. \\
\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{classIoLinkComm_a5aaebf79c0c542dfb785675074f5d2cf}{
\index{IoLinkComm@{IoLinkComm}!vif\_\-name@{vif\_\-name}}
\index{vif\_\-name@{vif\_\-name}!IoLinkComm@{IoLinkComm}}
\subsubsection[{vif\_\-name}]{\setlength{\rightskip}{0pt plus 5cm}const string\& IoLinkComm::vif\_\-name (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoLinkComm_a5aaebf79c0c542dfb785675074f5d2cf}


Get \hyperlink{protocolthe-p}{the} vif name. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} vif name. 
\end{DoxyReturn}


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