\hypertarget{classIoLink}{
\section{IoLink Class Reference}
\label{classIoLink}\index{IoLink@{IoLink}}
}


A base class for I/O link raw communication.  




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

Inheritance diagram for IoLink:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classIoLink}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classIoLink_a8f7ccfbef92df54500f26d43a1f0a147}{IoLink} (\hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} \&fea\_\-data\_\-plane\_\-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 link-\/level access for a given interface and vif. \item\end{DoxyCompactList}\item 
\hypertarget{classIoLink_a2c0615b07f52fa473f5d1a8f780a7752}{
virtual \hyperlink{classIoLink_a2c0615b07f52fa473f5d1a8f780a7752}{$\sim$IoLink} ()}
\label{classIoLink_a2c0615b07f52fa473f5d1a8f780a7752}

\begin{DoxyCompactList}\small\item\em Virtual destructor. \item\end{DoxyCompactList}\item 
\hyperlink{classIoLinkManager}{IoLinkManager} \& \hyperlink{classIoLink_a527bfb9489e299caf12b5d5d381ecb76}{io\_\-link\_\-manager} ()
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} \hyperlink{classIoLinkManager}{IoLinkManager} instance. \item\end{DoxyCompactList}\item 
\hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} \& \hyperlink{classIoLink_aec5d53a9e64cc8475ca879a86d30f64e}{fea\_\-data\_\-plane\_\-manager} ()
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} \hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} instance. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIoLink_ac480e3b1c085deb3d6c825ec4231b07c}{is\_\-running} () const 
\begin{DoxyCompactList}\small\item\em Test whether this instance is running. \item\end{DoxyCompactList}\item 
\hyperlink{classEventLoop}{EventLoop} \& \hyperlink{classIoLink_abff052f3d138e76c7e9ec196bed65744}{eventloop} ()
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} event loop. \item\end{DoxyCompactList}\item 
const \hyperlink{classIfTree}{IfTree} \& \hyperlink{classIoLink_a6efe6f83b0033e0a1d9aa24bb59f644f}{iftree} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} interface tree. \item\end{DoxyCompactList}\item 
virtual const string \& \hyperlink{classIoLink_aec8a1dc2cb3ed8732a8a1b73f6963d62}{if\_\-name} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} interface name. \item\end{DoxyCompactList}\item 
virtual const string \& \hyperlink{classIoLink_a11559bab3dc6823e29967525849a5302}{vif\_\-name} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} vif name. \item\end{DoxyCompactList}\item 
virtual uint16\_\-t \hyperlink{classIoLink_a223b0f2b1191b3504e923306b6c3d086}{ether\_\-type} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} EtherType protocol number. \item\end{DoxyCompactList}\item 
const string \& \hyperlink{classIoLink_af99ab8d92cfb2c305504860dd47232f0}{filter\_\-program} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} optional filter program. \item\end{DoxyCompactList}\item 
\hyperlink{classIoLinkReceiver}{IoLinkReceiver} $\ast$ \hyperlink{classIoLink_a7ac408a2479f298632741d0d745f6745}{io\_\-link\_\-receiver} ()
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} registered receiver. \item\end{DoxyCompactList}\item 
virtual void \hyperlink{classIoLink_ac684d5e7b482ccf4df7ea3a1381ec239}{register\_\-io\_\-link\_\-receiver} (\hyperlink{classIoLinkReceiver}{IoLinkReceiver} $\ast$io\_\-link\_\-receiver)
\begin{DoxyCompactList}\small\item\em Register \hyperlink{protocolthe-p}{the} I/O Link raw packets receiver. \item\end{DoxyCompactList}\item 
\hypertarget{classIoLink_ac43f91286487b8c8c633347e90cf2206}{
virtual void \hyperlink{classIoLink_ac43f91286487b8c8c633347e90cf2206}{unregister\_\-io\_\-link\_\-receiver} ()}
\label{classIoLink_ac43f91286487b8c8c633347e90cf2206}

\begin{DoxyCompactList}\small\item\em Unregister \hyperlink{protocolthe-p}{the} I/O Link raw packets receiver. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoLink_a08291a6eca72e4aba820b2afdaedf1d6}{start} (string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Start operation. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoLink_a1b02443c11bbd3ec25d9a82e2b862af4}{stop} (string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Stop operation. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoLink_aa168bbec4e173df4fac5ba558c5b2c98}{join\_\-multicast\_\-group} (const \hyperlink{classMac}{Mac} \&group, string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Join a multicast group on an interface. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoLink_a2a406d731b6767d1fdb4a57deee12aa7}{leave\_\-multicast\_\-group} (const \hyperlink{classMac}{Mac} \&group, string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Leave a multicast group on an interface. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoLink_a882c92570e6ead04be86f330e6e8ae75}{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)=0
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} a link-\/level packet. \item\end{DoxyCompactList}\item 
bool \hyperlink{classIoLink_a66e33bc2bcdaaa9238bda6994ea4f328}{is\_\-log\_\-trace} () const 
\begin{DoxyCompactList}\small\item\em Test if trace log is enabled. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoLink_ad2819c9ed876ac4d3123eaa64bd07140}{set\_\-log\_\-trace} (bool is\_\-enabled)
\begin{DoxyCompactList}\small\item\em Enable/disable trace log. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual void \hyperlink{classIoLink_af64edeeaeb39213371f89f51d4e0709d}{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 link-\/level packet. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoLink_a69e60a109da30ee053216d67ca3cdb8e}{recv\_\-ethernet\_\-packet} (const uint8\_\-t $\ast$packet, size\_\-t packet\_\-size)
\begin{DoxyCompactList}\small\item\em Receved an Ethernet packet. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoLink_acf43f05a6efba3fe5b0b8beb6817adbe}{prepare\_\-ethernet\_\-packet} (const \hyperlink{classMac}{Mac} \&src\_\-address, const \hyperlink{classMac}{Mac} \&dst\_\-address, uint16\_\-t ether\_\-type, const vector$<$ uint8\_\-t $>$ \&payload, vector$<$ uint8\_\-t $>$ \&packet, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Prepare an Ethernet packet for transmission. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classIoLink_a74825d4bebfdc0c60fdd1cdf4a3b9316}{
bool {\bfseries \_\-is\_\-running}}
\label{classIoLink_a74825d4bebfdc0c60fdd1cdf4a3b9316}

\end{DoxyCompactItemize}
\subsection*{Static Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classIoLink_a17af04fdaae30be49153a042f8f5bd61}{
static const uint32\_\-t {\bfseries L2\_\-MAX\_\-PACKET\_\-SIZE} = (64$\ast$1024)}
\label{classIoLink_a17af04fdaae30be49153a042f8f5bd61}

\item 
\hypertarget{classIoLink_acdec2957b870f6777a33fa69ae72d9d4}{
static const uint16\_\-t {\bfseries ETHERNET\_\-HEADER\_\-SIZE} = 14}
\label{classIoLink_acdec2957b870f6777a33fa69ae72d9d4}

\item 
\hypertarget{classIoLink_ade512a23ef4d2b5e2febba94b2f3a195}{
static const uint16\_\-t {\bfseries ETHERNET\_\-LENGTH\_\-TYPE\_\-THRESHOLD} = 1536}
\label{classIoLink_ade512a23ef4d2b5e2febba94b2f3a195}

\item 
\hypertarget{classIoLink_ac63e71e28a0428d24b7411c218f267c0}{
static const uint16\_\-t {\bfseries ETHERNET\_\-MIN\_\-FRAME\_\-SIZE} = 60}
\label{classIoLink_ac63e71e28a0428d24b7411c218f267c0}

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

\item 
\hypertarget{classIoLink_afed093bf457824042c8c3a4ab5db4b2d}{
\hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} \& {\bfseries \_\-fea\_\-data\_\-plane\_\-manager}}
\label{classIoLink_afed093bf457824042c8c3a4ab5db4b2d}

\item 
\hypertarget{classIoLink_ad54252cedb9686bd266a8159846f71d7}{
\hyperlink{classEventLoop}{EventLoop} \& {\bfseries \_\-eventloop}}
\label{classIoLink_ad54252cedb9686bd266a8159846f71d7}

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

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

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

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

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

\item 
\hypertarget{classIoLink_aedcd2fdf3844c200d6b7bcd4e1cacba0}{
\hyperlink{classIoLinkReceiver}{IoLinkReceiver} $\ast$ {\bfseries \_\-io\_\-link\_\-receiver}}
\label{classIoLink_aedcd2fdf3844c200d6b7bcd4e1cacba0}

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

\end{DoxyCompactItemize}


\subsection{Detailed Description}
A base class for I/O link raw communication. Each protocol 'registers' for I/O per interface and vif and gets assigned one object (per interface and vif) of this class. 

\subsection{Constructor \& Destructor Documentation}
\hypertarget{classIoLink_a8f7ccfbef92df54500f26d43a1f0a147}{
\index{IoLink@{IoLink}!IoLink@{IoLink}}
\index{IoLink@{IoLink}!IoLink@{IoLink}}
\subsubsection[{IoLink}]{\setlength{\rightskip}{0pt plus 5cm}IoLink::IoLink (
\begin{DoxyParamCaption}
\item[{{\bf FeaDataPlaneManager} \&}]{fea\_\-data\_\-plane\_\-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{classIoLink_a8f7ccfbef92df54500f26d43a1f0a147}


Constructor for link-\/level access for a given interface and vif. 


\begin{DoxyParams}{Parameters}
{\em fea\_\-data\_\-plane\_\-manager} & \hyperlink{protocolthe-p}{the} corresponding data plane manager (\hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager}). \\
\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. If it is 0 then it is unused. \\
\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{classIoLink_a223b0f2b1191b3504e923306b6c3d086}{
\index{IoLink@{IoLink}!ether\_\-type@{ether\_\-type}}
\index{ether\_\-type@{ether\_\-type}!IoLink@{IoLink}}
\subsubsection[{ether\_\-type}]{\setlength{\rightskip}{0pt plus 5cm}virtual uint16\_\-t IoLink::ether\_\-type (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline, virtual\mbox{]}}}}
\label{classIoLink_a223b0f2b1191b3504e923306b6c3d086}


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

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} EtherType protocol number. If it is 0 then it is unused. 
\end{DoxyReturn}
\hypertarget{classIoLink_abff052f3d138e76c7e9ec196bed65744}{
\index{IoLink@{IoLink}!eventloop@{eventloop}}
\index{eventloop@{eventloop}!IoLink@{IoLink}}
\subsubsection[{eventloop}]{\setlength{\rightskip}{0pt plus 5cm}{\bf EventLoop}\& IoLink::eventloop (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoLink_abff052f3d138e76c7e9ec196bed65744}


Get \hyperlink{protocolthe-p}{the} event loop. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} event loop. 
\end{DoxyReturn}
\hypertarget{classIoLink_aec5d53a9e64cc8475ca879a86d30f64e}{
\index{IoLink@{IoLink}!fea\_\-data\_\-plane\_\-manager@{fea\_\-data\_\-plane\_\-manager}}
\index{fea\_\-data\_\-plane\_\-manager@{fea\_\-data\_\-plane\_\-manager}!IoLink@{IoLink}}
\subsubsection[{fea\_\-data\_\-plane\_\-manager}]{\setlength{\rightskip}{0pt plus 5cm}{\bf FeaDataPlaneManager}\& IoLink::fea\_\-data\_\-plane\_\-manager (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoLink_aec5d53a9e64cc8475ca879a86d30f64e}


Get \hyperlink{protocolthe-p}{the} \hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} instance. 

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


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

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} optional filter program to be applied on \hyperlink{protocolthe-p}{the} received packets. 
\end{DoxyReturn}
\hypertarget{classIoLink_aec8a1dc2cb3ed8732a8a1b73f6963d62}{
\index{IoLink@{IoLink}!if\_\-name@{if\_\-name}}
\index{if\_\-name@{if\_\-name}!IoLink@{IoLink}}
\subsubsection[{if\_\-name}]{\setlength{\rightskip}{0pt plus 5cm}virtual const string\& IoLink::if\_\-name (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline, virtual\mbox{]}}}}
\label{classIoLink_aec8a1dc2cb3ed8732a8a1b73f6963d62}


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

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} interface name. 
\end{DoxyReturn}
\hypertarget{classIoLink_a6efe6f83b0033e0a1d9aa24bb59f644f}{
\index{IoLink@{IoLink}!iftree@{iftree}}
\index{iftree@{iftree}!IoLink@{IoLink}}
\subsubsection[{iftree}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf IfTree}\& IoLink::iftree (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoLink_a6efe6f83b0033e0a1d9aa24bb59f644f}


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

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} interface tree. 
\end{DoxyReturn}
\hypertarget{classIoLink_a527bfb9489e299caf12b5d5d381ecb76}{
\index{IoLink@{IoLink}!io\_\-link\_\-manager@{io\_\-link\_\-manager}}
\index{io\_\-link\_\-manager@{io\_\-link\_\-manager}!IoLink@{IoLink}}
\subsubsection[{io\_\-link\_\-manager}]{\setlength{\rightskip}{0pt plus 5cm}{\bf IoLinkManager}\& IoLink::io\_\-link\_\-manager (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoLink_a527bfb9489e299caf12b5d5d381ecb76}


Get \hyperlink{protocolthe-p}{the} \hyperlink{classIoLinkManager}{IoLinkManager} instance. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} \hyperlink{classIoLinkManager}{IoLinkManager} instance. 
\end{DoxyReturn}
\hypertarget{classIoLink_a7ac408a2479f298632741d0d745f6745}{
\index{IoLink@{IoLink}!io\_\-link\_\-receiver@{io\_\-link\_\-receiver}}
\index{io\_\-link\_\-receiver@{io\_\-link\_\-receiver}!IoLink@{IoLink}}
\subsubsection[{io\_\-link\_\-receiver}]{\setlength{\rightskip}{0pt plus 5cm}{\bf IoLinkReceiver}$\ast$ IoLink::io\_\-link\_\-receiver (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoLink_a7ac408a2479f298632741d0d745f6745}


Get \hyperlink{protocolthe-p}{the} registered receiver. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} registered receiver. 
\end{DoxyReturn}
\hypertarget{classIoLink_a66e33bc2bcdaaa9238bda6994ea4f328}{
\index{IoLink@{IoLink}!is\_\-log\_\-trace@{is\_\-log\_\-trace}}
\index{is\_\-log\_\-trace@{is\_\-log\_\-trace}!IoLink@{IoLink}}
\subsubsection[{is\_\-log\_\-trace}]{\setlength{\rightskip}{0pt plus 5cm}bool IoLink::is\_\-log\_\-trace (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoLink_a66e33bc2bcdaaa9238bda6994ea4f328}


Test if trace log is enabled. 

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

\begin{DoxyReturn}{Returns}
true if trace log is enabled, otherwise false. 
\end{DoxyReturn}
\hypertarget{classIoLink_ac480e3b1c085deb3d6c825ec4231b07c}{
\index{IoLink@{IoLink}!is\_\-running@{is\_\-running}}
\index{is\_\-running@{is\_\-running}!IoLink@{IoLink}}
\subsubsection[{is\_\-running}]{\setlength{\rightskip}{0pt plus 5cm}virtual bool IoLink::is\_\-running (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline, virtual\mbox{]}}}}
\label{classIoLink_ac480e3b1c085deb3d6c825ec4231b07c}


Test whether this instance is running. 

\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} instance is running, otherwise false. 
\end{DoxyReturn}
\hypertarget{classIoLink_aa168bbec4e173df4fac5ba558c5b2c98}{
\index{IoLink@{IoLink}!join\_\-multicast\_\-group@{join\_\-multicast\_\-group}}
\index{join\_\-multicast\_\-group@{join\_\-multicast\_\-group}!IoLink@{IoLink}}
\subsubsection[{join\_\-multicast\_\-group}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoLink::join\_\-multicast\_\-group (
\begin{DoxyParamCaption}
\item[{const {\bf Mac} \&}]{group, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoLink_aa168bbec4e173df4fac5ba558c5b2c98}


Join a multicast group on an interface. 


\begin{DoxyParams}{Parameters}
{\em group} & \hyperlink{protocolthe-p}{the} multicast group to join. \\
\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}


Implemented in \hyperlink{classIoLinkDummy_a007da6ce11131e20829c38d22ec475a7}{IoLinkDummy}, and \hyperlink{classIoLinkPcap_a9a4759c58b3359e5eb07d4df5fd89fa0}{IoLinkPcap}.

\hypertarget{classIoLink_a2a406d731b6767d1fdb4a57deee12aa7}{
\index{IoLink@{IoLink}!leave\_\-multicast\_\-group@{leave\_\-multicast\_\-group}}
\index{leave\_\-multicast\_\-group@{leave\_\-multicast\_\-group}!IoLink@{IoLink}}
\subsubsection[{leave\_\-multicast\_\-group}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoLink::leave\_\-multicast\_\-group (
\begin{DoxyParamCaption}
\item[{const {\bf Mac} \&}]{group, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoLink_a2a406d731b6767d1fdb4a57deee12aa7}


Leave a multicast group on an interface. 


\begin{DoxyParams}{Parameters}
{\em group} & \hyperlink{protocolthe-p}{the} multicast group to leave. \\
\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}


Implemented in \hyperlink{classIoLinkDummy_ad834fca8fd0a7577ecf113e95e73b9f9}{IoLinkDummy}, and \hyperlink{classIoLinkPcap_a647a07dba8ba92ac789e9ce16e9cfce5}{IoLinkPcap}.

\hypertarget{classIoLink_acf43f05a6efba3fe5b0b8beb6817adbe}{
\index{IoLink@{IoLink}!prepare\_\-ethernet\_\-packet@{prepare\_\-ethernet\_\-packet}}
\index{prepare\_\-ethernet\_\-packet@{prepare\_\-ethernet\_\-packet}!IoLink@{IoLink}}
\subsubsection[{prepare\_\-ethernet\_\-packet}]{\setlength{\rightskip}{0pt plus 5cm}int IoLink::prepare\_\-ethernet\_\-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[{vector$<$ uint8\_\-t $>$ \&}]{packet, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected\mbox{]}}}}
\label{classIoLink_acf43f05a6efba3fe5b0b8beb6817adbe}


Prepare an Ethernet packet for transmission. 


\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 packet} & \hyperlink{protocolthe-p}{the} return-\/by-\/reference packet prepared for transmission. \\
\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{classIoLink_a69e60a109da30ee053216d67ca3cdb8e}{
\index{IoLink@{IoLink}!recv\_\-ethernet\_\-packet@{recv\_\-ethernet\_\-packet}}
\index{recv\_\-ethernet\_\-packet@{recv\_\-ethernet\_\-packet}!IoLink@{IoLink}}
\subsubsection[{recv\_\-ethernet\_\-packet}]{\setlength{\rightskip}{0pt plus 5cm}void IoLink::recv\_\-ethernet\_\-packet (
\begin{DoxyParamCaption}
\item[{const uint8\_\-t $\ast$}]{packet, }
\item[{size\_\-t}]{packet\_\-size}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected\mbox{]}}}}
\label{classIoLink_a69e60a109da30ee053216d67ca3cdb8e}


Receved an Ethernet packet. 


\begin{DoxyParams}{Parameters}
{\em packet} & \hyperlink{protocolthe-p}{the} packet. \\
\hline
{\em packet\_\-size} & \hyperlink{protocolthe-p}{the} size of \hyperlink{protocolthe-p}{the} packet. \\
\hline
\end{DoxyParams}
\hypertarget{classIoLink_af64edeeaeb39213371f89f51d4e0709d}{
\index{IoLink@{IoLink}!recv\_\-packet@{recv\_\-packet}}
\index{recv\_\-packet@{recv\_\-packet}!IoLink@{IoLink}}
\subsubsection[{recv\_\-packet}]{\setlength{\rightskip}{0pt plus 5cm}void IoLink::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{[}protected, virtual\mbox{]}}}}
\label{classIoLink_af64edeeaeb39213371f89f51d4e0709d}


Received a 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}
\hypertarget{classIoLink_ac684d5e7b482ccf4df7ea3a1381ec239}{
\index{IoLink@{IoLink}!register\_\-io\_\-link\_\-receiver@{register\_\-io\_\-link\_\-receiver}}
\index{register\_\-io\_\-link\_\-receiver@{register\_\-io\_\-link\_\-receiver}!IoLink@{IoLink}}
\subsubsection[{register\_\-io\_\-link\_\-receiver}]{\setlength{\rightskip}{0pt plus 5cm}void IoLink::register\_\-io\_\-link\_\-receiver (
\begin{DoxyParamCaption}
\item[{{\bf IoLinkReceiver} $\ast$}]{io\_\-link\_\-receiver}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classIoLink_ac684d5e7b482ccf4df7ea3a1381ec239}


Register \hyperlink{protocolthe-p}{the} I/O Link raw packets receiver. 


\begin{DoxyParams}{Parameters}
{\em io\_\-link\_\-receiver} & \hyperlink{protocolthe-p}{the} receiver to register. \\
\hline
\end{DoxyParams}
\hypertarget{classIoLink_a882c92570e6ead04be86f330e6e8ae75}{
\index{IoLink@{IoLink}!send\_\-packet@{send\_\-packet}}
\index{send\_\-packet@{send\_\-packet}!IoLink@{IoLink}}
\subsubsection[{send\_\-packet}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoLink::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}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoLink_a882c92570e6ead04be86f330e6e8ae75}


\hyperlink{structSend}{Send} a 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}


Implemented in \hyperlink{classIoLinkDummy_ade97bb447f9ae8e0a8171682e2dd5d89}{IoLinkDummy}, and \hyperlink{classIoLinkPcap_a63fd2a41a6ae0262d54b844284a9ded3}{IoLinkPcap}.

\hypertarget{classIoLink_ad2819c9ed876ac4d3123eaa64bd07140}{
\index{IoLink@{IoLink}!set\_\-log\_\-trace@{set\_\-log\_\-trace}}
\index{set\_\-log\_\-trace@{set\_\-log\_\-trace}!IoLink@{IoLink}}
\subsubsection[{set\_\-log\_\-trace}]{\setlength{\rightskip}{0pt plus 5cm}void IoLink::set\_\-log\_\-trace (
\begin{DoxyParamCaption}
\item[{bool}]{is\_\-enabled}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoLink_ad2819c9ed876ac4d3123eaa64bd07140}


Enable/disable trace log. 

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


\begin{DoxyParams}{Parameters}
{\em is\_\-enabled} & if true, trace log is enabled, otherwise is disabled. \\
\hline
\end{DoxyParams}
\hypertarget{classIoLink_a08291a6eca72e4aba820b2afdaedf1d6}{
\index{IoLink@{IoLink}!start@{start}}
\index{start@{start}!IoLink@{IoLink}}
\subsubsection[{start}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoLink::start (
\begin{DoxyParamCaption}
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoLink_a08291a6eca72e4aba820b2afdaedf1d6}


Start operation. 


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


Implemented in \hyperlink{classIoLinkDummy_afa39a39cc8aa0a399938b2e99b9c2e07}{IoLinkDummy}, and \hyperlink{classIoLinkPcap_a8c72e12777c9cb1a6a01666a01b9d10f}{IoLinkPcap}.

\hypertarget{classIoLink_a1b02443c11bbd3ec25d9a82e2b862af4}{
\index{IoLink@{IoLink}!stop@{stop}}
\index{stop@{stop}!IoLink@{IoLink}}
\subsubsection[{stop}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoLink::stop (
\begin{DoxyParamCaption}
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoLink_a1b02443c11bbd3ec25d9a82e2b862af4}


Stop operation. 


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


Implemented in \hyperlink{classIoLinkDummy_a2ce27399e92581c83660dd8697c2a068}{IoLinkDummy}, and \hyperlink{classIoLinkPcap_a965f09afee86c0cc7eb63e926b841a2d}{IoLinkPcap}.

\hypertarget{classIoLink_a11559bab3dc6823e29967525849a5302}{
\index{IoLink@{IoLink}!vif\_\-name@{vif\_\-name}}
\index{vif\_\-name@{vif\_\-name}!IoLink@{IoLink}}
\subsubsection[{vif\_\-name}]{\setlength{\rightskip}{0pt plus 5cm}virtual const string\& IoLink::vif\_\-name (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline, virtual\mbox{]}}}}
\label{classIoLink_a11559bab3dc6823e29967525849a5302}


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.hh\item 
/home/greearb/git/xorp.ct.github/xorp/fea/io\_\-link.cc\end{DoxyCompactItemize}
