\hypertarget{classIoLinkManager}{
\section{IoLinkManager Class Reference}
\label{classIoLinkManager}\index{IoLinkManager@{IoLinkManager}}
}


A class that manages raw link-\/level I/O.  




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

Inheritance diagram for IoLinkManager:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classIoLinkManager}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class \hyperlink{classIoLinkManager_1_1CommTableKey}{CommTableKey}
\end{DoxyCompactItemize}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classIoLinkManager_a32bd751695ec63a41cc11ab0ba63a168}{
typedef XorpCallback2$<$ int, const uint8\_\-t $\ast$, size\_\-t $>$::RefPtr {\bfseries UpcallReceiverCb}}
\label{classIoLinkManager_a32bd751695ec63a41cc11ab0ba63a168}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classIoLinkManager_a956afc18160a7cc22b31d9288c561214}{
\hyperlink{classIoLinkManager_a956afc18160a7cc22b31d9288c561214}{IoLinkManager} (\hyperlink{classFeaNode}{FeaNode} \&fea\_\-node, const \hyperlink{classIfTree}{IfTree} \&iftree)}
\label{classIoLinkManager_a956afc18160a7cc22b31d9288c561214}

\begin{DoxyCompactList}\small\item\em Constructor for \hyperlink{classIoLinkManager}{IoLinkManager}. \item\end{DoxyCompactList}\item 
\hypertarget{classIoLinkManager_aec8afbe814dafa03399332925de66589}{
virtual \hyperlink{classIoLinkManager_aec8afbe814dafa03399332925de66589}{$\sim$IoLinkManager} ()}
\label{classIoLinkManager_aec8afbe814dafa03399332925de66589}

\begin{DoxyCompactList}\small\item\em Virtual destructor. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoLinkManager_a6a77adf5a1c39b9cbaa159944b9ae912}{send} (const string \&if\_\-name, const string \&vif\_\-name, 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 on an interface. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoLinkManager_a776b3e156e6d5cbb55053da2e3ec472f}{register\_\-receiver} (const string \&receiver\_\-name, const string \&if\_\-name, const string \&vif\_\-name, uint16\_\-t ether\_\-type, const string \&filter\_\-program, bool enable\_\-multicast\_\-loopback, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Register to receive raw link-\/level packets. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoLinkManager_aba62e540599ab6690fb8432000ef9db8}{unregister\_\-receiver} (const string \&receiver\_\-name, const string \&if\_\-name, const string \&vif\_\-name, uint16\_\-t ether\_\-type, const string \&filter\_\-program, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Unregister to receive raw link-\/level packets. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoLinkManager_a18693869329fec5b0ca129a8f5bddd06}{join\_\-multicast\_\-group} (const string \&receiver\_\-name, const string \&if\_\-name, const string \&vif\_\-name, uint16\_\-t ether\_\-type, const string \&filter\_\-program, const \hyperlink{classMac}{Mac} \&group\_\-address, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Join a MAC multicast group. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoLinkManager_a98d154164bd154c29ba145205c889beb}{leave\_\-multicast\_\-group} (const string \&receiver\_\-name, const string \&if\_\-name, const string \&vif\_\-name, uint16\_\-t ether\_\-type, const string \&filter\_\-program, const \hyperlink{classMac}{Mac} \&group\_\-address, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Leave a MAC multicast group. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoLinkManager_a2a0935c6d8672467a72bf399d3d0766c}{recv\_\-event} (const string \&receiver\_\-name, const struct \hyperlink{structMacHeaderInfo}{MacHeaderInfo} \&header, const vector$<$ uint8\_\-t $>$ \&payload)
\begin{DoxyCompactList}\small\item\em Data received event. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoLinkManager_a8ea93b5d867a14964f7322e2b126a520}{instance\_\-birth} (const string \&instance\_\-name)
\begin{DoxyCompactList}\small\item\em Inform \hyperlink{protocolthe-p}{the} watcher that a component instance is alive. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoLinkManager_ae0c1ee8a31e1972b19ee39cc442912eb}{instance\_\-death} (const string \&instance\_\-name)
\begin{DoxyCompactList}\small\item\em Inform \hyperlink{protocolthe-p}{the} watcher that a component instance is dead. \item\end{DoxyCompactList}\item 
\hypertarget{classIoLinkManager_afe1fa4391fd1c5e6031b0e194b4720fc}{
void \hyperlink{classIoLinkManager_afe1fa4391fd1c5e6031b0e194b4720fc}{set\_\-io\_\-link\_\-manager\_\-receiver} (\hyperlink{classIoLinkManagerReceiver}{IoLinkManagerReceiver} $\ast$v)}
\label{classIoLinkManager_afe1fa4391fd1c5e6031b0e194b4720fc}

\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} instance that is responsible for sending raw link-\/level packets to a receiver. \item\end{DoxyCompactList}\item 
const \hyperlink{classIfTree}{IfTree} \& \hyperlink{classIoLinkManager_a3a294ed1b8304b5c2f231756d7f1dc2f}{iftree} () const 
\begin{DoxyCompactList}\small\item\em Get a reference to \hyperlink{protocolthe-p}{the} interface tree. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoLinkManager_a10d79666d1597cab20866437846e2e63}{register\_\-data\_\-plane\_\-manager} (\hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} $\ast$fea\_\-data\_\-plane\_\-manager, bool is\_\-exclusive)
\begin{DoxyCompactList}\small\item\em Register \hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} data plane manager. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoLinkManager_ada91bc17cfa34bd584187a5a9b9fea66}{unregister\_\-data\_\-plane\_\-manager} (\hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} $\ast$fea\_\-data\_\-plane\_\-manager)
\begin{DoxyCompactList}\small\item\em Unregister \hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} data plane manager. \item\end{DoxyCompactList}\item 
list$<$ \hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} $\ast$ $>$ \& \hyperlink{classIoLinkManager_a5a58669e4b9a2b12c938456f13bf6237}{fea\_\-data\_\-plane\_\-managers} ()
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} list of registered data plane managers. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoLinkManager_a189d01c476b91597bd51a04a052efacb}{add\_\-multicast\_\-mac} (const string \&if\_\-name, const \hyperlink{classMac}{Mac} \&mac, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Add a multicast MAC address to an interface. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoLinkManager_ade923f61017adc40e32eb07054bfe8b5}{remove\_\-multicast\_\-mac} (const string \&if\_\-name, const \hyperlink{classMac}{Mac} \&mac, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Remove a multicast MAC address from an interface. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classIoLinkManager_af87e4e15447edca01f0144d57f96653e}{
typedef map$<$ \hyperlink{classIoLinkManager_1_1CommTableKey}{CommTableKey}, \hyperlink{classIoLinkComm}{IoLinkComm} $\ast$ $>$ {\bfseries CommTable}}
\label{classIoLinkManager_af87e4e15447edca01f0144d57f96653e}

\item 
\hypertarget{classIoLinkManager_ac248997b0454f633074b3ef638970ea2}{
typedef multimap$<$ string, \hyperlink{classIoLinkComm_1_1InputFilter}{IoLinkComm::InputFilter} $\ast$ $>$ {\bfseries FilterBag}}
\label{classIoLinkManager_ac248997b0454f633074b3ef638970ea2}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{classIoLinkManager_a11c45b336064d6c3a722474aeabb0252}{erase\_\-filters\_\-by\_\-receiver\_\-name} (const string \&receiver\_\-name)
\begin{DoxyCompactList}\small\item\em Erase filters for a given receiver name. \item\end{DoxyCompactList}\item 
bool \hyperlink{classIoLinkManager_aad2d8e8823c0a70c18417ebef18a948e}{has\_\-filter\_\-by\_\-receiver\_\-name} (const string \&receiver\_\-name) const 
\begin{DoxyCompactList}\small\item\em Test whether there is a filter for a given receiver name. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoLinkManager_afe22cbf57d7127c175ef9ec60031272c}{erase\_\-filters} (CommTable \&comm\_\-table, FilterBag \&filters, const FilterBag::iterator \&begin, const FilterBag::iterator \&end)
\begin{DoxyCompactList}\small\item\em Erase filters for a given CommTable and FilterBag. \item\end{DoxyCompactList}\item 
\hyperlink{classIoLinkComm}{IoLinkComm} \& \hyperlink{classIoLinkManager_a00bce2738c4e74e93ea1446591d5c67b}{add\_\-iolink\_\-comm\_\-txonly} (const string \&if\_\-name, const string \&vif\_\-name, uint16\_\-t ether\_\-type)
\begin{DoxyCompactList}\small\item\em Add a communication handler that can be used for raw link-\/level transmission only. \item\end{DoxyCompactList}\item 
\hyperlink{classIoLinkComm}{IoLinkComm} \& \hyperlink{classIoLinkManager_a92c69b1508113640c1a1876aa7d394a3}{find\_\-iolink\_\-comm} (const string \&if\_\-name, const string \&vif\_\-name, uint16\_\-t ether\_\-type)
\begin{DoxyCompactList}\small\item\em Find \hyperlink{protocolthe-p}{the} communication handler for a given interface/vif name and EtherType. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoLinkManager_afece0cbbaff8f5b9b991afcd2529ac4b}{add\_\-remove\_\-multicast\_\-mac} (bool add, const string \&if\_\-name, const \hyperlink{classMac}{Mac} \&mac, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Add/remove a multicast MAC address on an interface. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classIoLinkManager_a3f972e25ec073b7456e0ebb7262d8f47}{
\hyperlink{classFeaNode}{FeaNode} \& {\bfseries \_\-fea\_\-node}}
\label{classIoLinkManager_a3f972e25ec073b7456e0ebb7262d8f47}

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

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

\item 
\hypertarget{classIoLinkManager_a551651af95e24cbf15703f55ad0d5d42}{
CommTable {\bfseries \_\-comm\_\-table}}
\label{classIoLinkManager_a551651af95e24cbf15703f55ad0d5d42}

\item 
\hypertarget{classIoLinkManager_a989f31062d82255029dd7a6c6e5b5ae0}{
FilterBag {\bfseries \_\-filters}}
\label{classIoLinkManager_a989f31062d82255029dd7a6c6e5b5ae0}

\item 
\hypertarget{classIoLinkManager_a70318efb8c933c1e10545e155c294bd4}{
\hyperlink{classIoLinkManagerReceiver}{IoLinkManagerReceiver} $\ast$ {\bfseries \_\-io\_\-link\_\-manager\_\-receiver}}
\label{classIoLinkManager_a70318efb8c933c1e10545e155c294bd4}

\item 
\hypertarget{classIoLinkManager_a5c609962b78347af19a1850adda6855e}{
list$<$ \hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} $\ast$ $>$ {\bfseries \_\-fea\_\-data\_\-plane\_\-managers}}
\label{classIoLinkManager_a5c609962b78347af19a1850adda6855e}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
A class that manages raw link-\/level I/O. The \hyperlink{classIoLinkManager}{IoLinkManager} has two containers: a container for link-\/level handlers (\hyperlink{classIoLinkComm}{IoLinkComm}) indexed by \hyperlink{protocolthe-p}{the} protocol associated with \hyperlink{protocolthe-p}{the} handler, and a container for \hyperlink{protocolthe-p}{the} filters associated with each receiver\_\-name. When a receiver registers for interest in a particular type of raw packet a handler (\hyperlink{classIoLinkComm}{IoLinkComm}) is created if necessary, then \hyperlink{protocolthe-p}{the} relevent filter is created and associated with \hyperlink{protocolthe-p}{the} \hyperlink{classIoLinkComm}{IoLinkComm}. 

\subsection{Member Function Documentation}
\hypertarget{classIoLinkManager_a00bce2738c4e74e93ea1446591d5c67b}{
\index{IoLinkManager@{IoLinkManager}!add\_\-iolink\_\-comm\_\-txonly@{add\_\-iolink\_\-comm\_\-txonly}}
\index{add\_\-iolink\_\-comm\_\-txonly@{add\_\-iolink\_\-comm\_\-txonly}!IoLinkManager@{IoLinkManager}}
\subsubsection[{add\_\-iolink\_\-comm\_\-txonly}]{\setlength{\rightskip}{0pt plus 5cm}{\bf IoLinkComm} \& IoLinkManager::add\_\-iolink\_\-comm\_\-txonly (
\begin{DoxyParamCaption}
\item[{const string \&}]{if\_\-name, }
\item[{const string \&}]{vif\_\-name, }
\item[{uint16\_\-t}]{ether\_\-type}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classIoLinkManager_a00bce2738c4e74e93ea1446591d5c67b}


Add a communication handler that can be used for raw link-\/level transmission only. 


\begin{DoxyParams}{Parameters}
{\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
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a reference to \hyperlink{protocolthe-p}{the} transmission only communication handler. 
\end{DoxyReturn}
\hypertarget{classIoLinkManager_a189d01c476b91597bd51a04a052efacb}{
\index{IoLinkManager@{IoLinkManager}!add\_\-multicast\_\-mac@{add\_\-multicast\_\-mac}}
\index{add\_\-multicast\_\-mac@{add\_\-multicast\_\-mac}!IoLinkManager@{IoLinkManager}}
\subsubsection[{add\_\-multicast\_\-mac}]{\setlength{\rightskip}{0pt plus 5cm}int IoLinkManager::add\_\-multicast\_\-mac (
\begin{DoxyParamCaption}
\item[{const string \&}]{if\_\-name, }
\item[{const {\bf Mac} \&}]{mac, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoLinkManager_a189d01c476b91597bd51a04a052efacb}


Add a multicast MAC address to an interface. 


\begin{DoxyParams}{Parameters}
{\em if\_\-name} & \hyperlink{protocolthe-p}{the} interface name. \\
\hline
{\em mac} & \hyperlink{protocolthe-p}{the} MAC address to add. \\
\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{classIoLinkManager_afece0cbbaff8f5b9b991afcd2529ac4b}{
\index{IoLinkManager@{IoLinkManager}!add\_\-remove\_\-multicast\_\-mac@{add\_\-remove\_\-multicast\_\-mac}}
\index{add\_\-remove\_\-multicast\_\-mac@{add\_\-remove\_\-multicast\_\-mac}!IoLinkManager@{IoLinkManager}}
\subsubsection[{add\_\-remove\_\-multicast\_\-mac}]{\setlength{\rightskip}{0pt plus 5cm}int IoLinkManager::add\_\-remove\_\-multicast\_\-mac (
\begin{DoxyParamCaption}
\item[{bool}]{add, }
\item[{const string \&}]{if\_\-name, }
\item[{const {\bf Mac} \&}]{mac, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classIoLinkManager_afece0cbbaff8f5b9b991afcd2529ac4b}


Add/remove a multicast MAC address on an interface. 


\begin{DoxyParams}{Parameters}
{\em add} & if true, then add \hyperlink{protocolthe-p}{the} address, otherwise remove it. \\
\hline
{\em if\_\-name} & \hyperlink{protocolthe-p}{the} interface name. \\
\hline
{\em mac} & \hyperlink{protocolthe-p}{the} MAC address to add/remove. \\
\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{classIoLinkManager_afe22cbf57d7127c175ef9ec60031272c}{
\index{IoLinkManager@{IoLinkManager}!erase\_\-filters@{erase\_\-filters}}
\index{erase\_\-filters@{erase\_\-filters}!IoLinkManager@{IoLinkManager}}
\subsubsection[{erase\_\-filters}]{\setlength{\rightskip}{0pt plus 5cm}void IoLinkManager::erase\_\-filters (
\begin{DoxyParamCaption}
\item[{CommTable \&}]{comm\_\-table, }
\item[{FilterBag \&}]{filters, }
\item[{const FilterBag::iterator \&}]{begin, }
\item[{const FilterBag::iterator \&}]{end}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classIoLinkManager_afe22cbf57d7127c175ef9ec60031272c}


Erase filters for a given CommTable and FilterBag. 


\begin{DoxyParams}{Parameters}
{\em comm\_\-table} & \hyperlink{protocolthe-p}{the} associated CommTable. \\
\hline
{\em filters} & \hyperlink{protocolthe-p}{the} associated FilterBag. \\
\hline
{\em begin} & \hyperlink{protocolthe-p}{the} begin iterator to \hyperlink{protocolthe-p}{the} FilterBag for \hyperlink{protocolthe-p}{the} set of filters to erase. \\
\hline
{\em end} & \hyperlink{protocolthe-p}{the} end iterator to \hyperlink{protocolthe-p}{the} FilterBag for \hyperlink{protocolthe-p}{the} set of filters to erase. \\
\hline
\end{DoxyParams}
\hypertarget{classIoLinkManager_a11c45b336064d6c3a722474aeabb0252}{
\index{IoLinkManager@{IoLinkManager}!erase\_\-filters\_\-by\_\-receiver\_\-name@{erase\_\-filters\_\-by\_\-receiver\_\-name}}
\index{erase\_\-filters\_\-by\_\-receiver\_\-name@{erase\_\-filters\_\-by\_\-receiver\_\-name}!IoLinkManager@{IoLinkManager}}
\subsubsection[{erase\_\-filters\_\-by\_\-receiver\_\-name}]{\setlength{\rightskip}{0pt plus 5cm}void IoLinkManager::erase\_\-filters\_\-by\_\-receiver\_\-name (
\begin{DoxyParamCaption}
\item[{const string \&}]{receiver\_\-name}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classIoLinkManager_a11c45b336064d6c3a722474aeabb0252}


Erase filters for a given receiver name. 


\begin{DoxyParams}{Parameters}
{\em receiver\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} receiver. \\
\hline
\end{DoxyParams}
\hypertarget{classIoLinkManager_a5a58669e4b9a2b12c938456f13bf6237}{
\index{IoLinkManager@{IoLinkManager}!fea\_\-data\_\-plane\_\-managers@{fea\_\-data\_\-plane\_\-managers}}
\index{fea\_\-data\_\-plane\_\-managers@{fea\_\-data\_\-plane\_\-managers}!IoLinkManager@{IoLinkManager}}
\subsubsection[{fea\_\-data\_\-plane\_\-managers}]{\setlength{\rightskip}{0pt plus 5cm}list$<${\bf FeaDataPlaneManager}$\ast$$>$\& IoLinkManager::fea\_\-data\_\-plane\_\-managers (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoLinkManager_a5a58669e4b9a2b12c938456f13bf6237}


Get \hyperlink{protocolthe-p}{the} list of registered data plane managers. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} list of registered data plane managers. 
\end{DoxyReturn}
\hypertarget{classIoLinkManager_a92c69b1508113640c1a1876aa7d394a3}{
\index{IoLinkManager@{IoLinkManager}!find\_\-iolink\_\-comm@{find\_\-iolink\_\-comm}}
\index{find\_\-iolink\_\-comm@{find\_\-iolink\_\-comm}!IoLinkManager@{IoLinkManager}}
\subsubsection[{find\_\-iolink\_\-comm}]{\setlength{\rightskip}{0pt plus 5cm}{\bf IoLinkComm} \& IoLinkManager::find\_\-iolink\_\-comm (
\begin{DoxyParamCaption}
\item[{const string \&}]{if\_\-name, }
\item[{const string \&}]{vif\_\-name, }
\item[{uint16\_\-t}]{ether\_\-type}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classIoLinkManager_a92c69b1508113640c1a1876aa7d394a3}


Find \hyperlink{protocolthe-p}{the} communication handler for a given interface/vif name and EtherType. 

Note that if \hyperlink{protocolthe-p}{the} handler is not found, a new one is created and returned.


\begin{DoxyParams}{Parameters}
{\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
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a reference to \hyperlink{protocolthe-p}{the} communication handler. 
\end{DoxyReturn}
\hypertarget{classIoLinkManager_aad2d8e8823c0a70c18417ebef18a948e}{
\index{IoLinkManager@{IoLinkManager}!has\_\-filter\_\-by\_\-receiver\_\-name@{has\_\-filter\_\-by\_\-receiver\_\-name}}
\index{has\_\-filter\_\-by\_\-receiver\_\-name@{has\_\-filter\_\-by\_\-receiver\_\-name}!IoLinkManager@{IoLinkManager}}
\subsubsection[{has\_\-filter\_\-by\_\-receiver\_\-name}]{\setlength{\rightskip}{0pt plus 5cm}bool IoLinkManager::has\_\-filter\_\-by\_\-receiver\_\-name (
\begin{DoxyParamCaption}
\item[{const string \&}]{receiver\_\-name}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classIoLinkManager_aad2d8e8823c0a70c18417ebef18a948e}


Test whether there is a filter for a given receiver name. 


\begin{DoxyParams}{Parameters}
{\em receiver\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} receiver. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if there is a filter for \hyperlink{protocolthe-p}{the} given receiver name, otherwise false. 
\end{DoxyReturn}
\hypertarget{classIoLinkManager_a3a294ed1b8304b5c2f231756d7f1dc2f}{
\index{IoLinkManager@{IoLinkManager}!iftree@{iftree}}
\index{iftree@{iftree}!IoLinkManager@{IoLinkManager}}
\subsubsection[{iftree}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf IfTree}\& IoLinkManager::iftree (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoLinkManager_a3a294ed1b8304b5c2f231756d7f1dc2f}


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

\begin{DoxyReturn}{Returns}
a reference to \hyperlink{protocolthe-p}{the} interface tree (\hyperlink{classIfTree}{IfTree}). 
\end{DoxyReturn}
\hypertarget{classIoLinkManager_a8ea93b5d867a14964f7322e2b126a520}{
\index{IoLinkManager@{IoLinkManager}!instance\_\-birth@{instance\_\-birth}}
\index{instance\_\-birth@{instance\_\-birth}!IoLinkManager@{IoLinkManager}}
\subsubsection[{instance\_\-birth}]{\setlength{\rightskip}{0pt plus 5cm}void IoLinkManager::instance\_\-birth (
\begin{DoxyParamCaption}
\item[{const string \&}]{instance\_\-name}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classIoLinkManager_a8ea93b5d867a14964f7322e2b126a520}


Inform \hyperlink{protocolthe-p}{the} watcher that a component instance is alive. 


\begin{DoxyParams}{Parameters}
{\em instance\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} instance that is alive. \\
\hline
\end{DoxyParams}


Implements \hyperlink{classInstanceWatcher_a3b06e7ebf696bd290eaead8c03a67852}{InstanceWatcher}.

\hypertarget{classIoLinkManager_ae0c1ee8a31e1972b19ee39cc442912eb}{
\index{IoLinkManager@{IoLinkManager}!instance\_\-death@{instance\_\-death}}
\index{instance\_\-death@{instance\_\-death}!IoLinkManager@{IoLinkManager}}
\subsubsection[{instance\_\-death}]{\setlength{\rightskip}{0pt plus 5cm}void IoLinkManager::instance\_\-death (
\begin{DoxyParamCaption}
\item[{const string \&}]{instance\_\-name}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classIoLinkManager_ae0c1ee8a31e1972b19ee39cc442912eb}


Inform \hyperlink{protocolthe-p}{the} watcher that a component instance is dead. 


\begin{DoxyParams}{Parameters}
{\em instance\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} instance that is dead. \\
\hline
\end{DoxyParams}


Implements \hyperlink{classInstanceWatcher_a0c7e95931514afd961ee2123ced8dea1}{InstanceWatcher}.

\hypertarget{classIoLinkManager_a18693869329fec5b0ca129a8f5bddd06}{
\index{IoLinkManager@{IoLinkManager}!join\_\-multicast\_\-group@{join\_\-multicast\_\-group}}
\index{join\_\-multicast\_\-group@{join\_\-multicast\_\-group}!IoLinkManager@{IoLinkManager}}
\subsubsection[{join\_\-multicast\_\-group}]{\setlength{\rightskip}{0pt plus 5cm}int IoLinkManager::join\_\-multicast\_\-group (
\begin{DoxyParamCaption}
\item[{const string \&}]{receiver\_\-name, }
\item[{const string \&}]{if\_\-name, }
\item[{const string \&}]{vif\_\-name, }
\item[{uint16\_\-t}]{ether\_\-type, }
\item[{const string \&}]{filter\_\-program, }
\item[{const {\bf Mac} \&}]{group\_\-address, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoLinkManager_a18693869329fec5b0ca129a8f5bddd06}


Join a MAC multicast group. 


\begin{DoxyParams}{Parameters}
{\em receiver\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} receiver. \\
\hline
{\em if\_\-name} & \hyperlink{protocolthe-p}{the} interface through which packets should be accepted. \\
\hline
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} vif through which packets should be accepted. \\
\hline
{\em ether\_\-type} & \hyperlink{protocolthe-p}{the} EtherType protocol number or \hyperlink{protocolthe-p}{the} Destination SAP that \hyperlink{protocolthe-p}{the} receiver is interested in. It must be between 1536 and 65535 to specify \hyperlink{protocolthe-p}{the} EtherType, or between 1 and 255 to specify \hyperlink{protocolthe-p}{the} Destination SAP for IEEE 802.2 LLC frames. A protocol number of 0 is used to specify all protocols. \\
\hline
{\em filter\_\-program} & \hyperlink{protocolthe-p}{the} optional filter program to be applied on \hyperlink{protocolthe-p}{the} received packets. The program uses tcpdump(1) style expression. \\
\hline
{\em group\_\-address} & \hyperlink{protocolthe-p}{the} multicast group address 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}
\hypertarget{classIoLinkManager_a98d154164bd154c29ba145205c889beb}{
\index{IoLinkManager@{IoLinkManager}!leave\_\-multicast\_\-group@{leave\_\-multicast\_\-group}}
\index{leave\_\-multicast\_\-group@{leave\_\-multicast\_\-group}!IoLinkManager@{IoLinkManager}}
\subsubsection[{leave\_\-multicast\_\-group}]{\setlength{\rightskip}{0pt plus 5cm}int IoLinkManager::leave\_\-multicast\_\-group (
\begin{DoxyParamCaption}
\item[{const string \&}]{receiver\_\-name, }
\item[{const string \&}]{if\_\-name, }
\item[{const string \&}]{vif\_\-name, }
\item[{uint16\_\-t}]{ether\_\-type, }
\item[{const string \&}]{filter\_\-program, }
\item[{const {\bf Mac} \&}]{group\_\-address, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoLinkManager_a98d154164bd154c29ba145205c889beb}


Leave a MAC multicast group. 


\begin{DoxyParams}{Parameters}
{\em receiver\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} receiver. \\
\hline
{\em if\_\-name} & \hyperlink{protocolthe-p}{the} interface through which packets should not be accepted. \\
\hline
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} vif through which packets should not be accepted. \\
\hline
{\em ether\_\-type} & \hyperlink{protocolthe-p}{the} EtherType protocol number or \hyperlink{protocolthe-p}{the} Destination SAP that \hyperlink{protocolthe-p}{the} receiver is not interested in anymore. It must be between 1536 and 65535 to specify \hyperlink{protocolthe-p}{the} EtherType, or between 1 and 255 to specify \hyperlink{protocolthe-p}{the} Destination SAP for IEEE 802.2 LLC frames. A protocol number of 0 is used to specify all protocols. \\
\hline
{\em filter\_\-program} & \hyperlink{protocolthe-p}{the} filter program that was applied on \hyperlink{protocolthe-p}{the} received packets. The program uses tcpdump(1) style expression. \\
\hline
{\em group\_\-address} & \hyperlink{protocolthe-p}{the} multicast group address 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}
\hypertarget{classIoLinkManager_a2a0935c6d8672467a72bf399d3d0766c}{
\index{IoLinkManager@{IoLinkManager}!recv\_\-event@{recv\_\-event}}
\index{recv\_\-event@{recv\_\-event}!IoLinkManager@{IoLinkManager}}
\subsubsection[{recv\_\-event}]{\setlength{\rightskip}{0pt plus 5cm}void IoLinkManager::recv\_\-event (
\begin{DoxyParamCaption}
\item[{const string \&}]{receiver\_\-name, }
\item[{const struct {\bf MacHeaderInfo} \&}]{header, }
\item[{const vector$<$ uint8\_\-t $>$ \&}]{payload}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classIoLinkManager_a2a0935c6d8672467a72bf399d3d0766c}


Data received event. 


\begin{DoxyParams}{Parameters}
{\em receiver\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} receiver to send \hyperlink{protocolthe-p}{the} raw link-\/level packet to. \\
\hline
{\em header} & \hyperlink{protocolthe-p}{the} MAC header information. \\
\hline
{\em payload} & \hyperlink{protocolthe-p}{the} payload, everything after \hyperlink{protocolthe-p}{the} MAC header. \\
\hline
\end{DoxyParams}


Implements \hyperlink{classIoLinkManagerReceiver_a0381943a1773c4227847f980a41e0402}{IoLinkManagerReceiver}.

\hypertarget{classIoLinkManager_a10d79666d1597cab20866437846e2e63}{
\index{IoLinkManager@{IoLinkManager}!register\_\-data\_\-plane\_\-manager@{register\_\-data\_\-plane\_\-manager}}
\index{register\_\-data\_\-plane\_\-manager@{register\_\-data\_\-plane\_\-manager}!IoLinkManager@{IoLinkManager}}
\subsubsection[{register\_\-data\_\-plane\_\-manager}]{\setlength{\rightskip}{0pt plus 5cm}int IoLinkManager::register\_\-data\_\-plane\_\-manager (
\begin{DoxyParamCaption}
\item[{{\bf FeaDataPlaneManager} $\ast$}]{fea\_\-data\_\-plane\_\-manager, }
\item[{bool}]{is\_\-exclusive}
\end{DoxyParamCaption}
)}}
\label{classIoLinkManager_a10d79666d1597cab20866437846e2e63}


Register \hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} data plane manager. 


\begin{DoxyParams}{Parameters}
{\em fea\_\-data\_\-plane\_\-manager} & \hyperlink{protocolthe-p}{the} data plane manager to register. \\
\hline
{\em is\_\-exclusive} & if true, \hyperlink{protocolthe-p}{the} manager is registered as \hyperlink{protocolthe-p}{the} exclusive manager, otherwise is added to \hyperlink{protocolthe-p}{the} list of managers. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoLinkManager_a776b3e156e6d5cbb55053da2e3ec472f}{
\index{IoLinkManager@{IoLinkManager}!register\_\-receiver@{register\_\-receiver}}
\index{register\_\-receiver@{register\_\-receiver}!IoLinkManager@{IoLinkManager}}
\subsubsection[{register\_\-receiver}]{\setlength{\rightskip}{0pt plus 5cm}int IoLinkManager::register\_\-receiver (
\begin{DoxyParamCaption}
\item[{const string \&}]{receiver\_\-name, }
\item[{const string \&}]{if\_\-name, }
\item[{const string \&}]{vif\_\-name, }
\item[{uint16\_\-t}]{ether\_\-type, }
\item[{const string \&}]{filter\_\-program, }
\item[{bool}]{enable\_\-multicast\_\-loopback, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoLinkManager_a776b3e156e6d5cbb55053da2e3ec472f}


Register to receive raw link-\/level packets. 


\begin{DoxyParams}{Parameters}
{\em receiver\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} receiver. \\
\hline
{\em if\_\-name} & \hyperlink{protocolthe-p}{the} interface through which packets should be accepted. \\
\hline
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} vif through which packets should be accepted. \\
\hline
{\em ether\_\-type} & \hyperlink{protocolthe-p}{the} EtherType protocol number or \hyperlink{protocolthe-p}{the} Destination SAP that \hyperlink{protocolthe-p}{the} receiver is interested in. It must be between 1536 and 65535 to specify \hyperlink{protocolthe-p}{the} EtherType, or between 1 and 255 to specify \hyperlink{protocolthe-p}{the} Destination SAP for IEEE 802.2 LLC frames. A protocol number of 0 is used to specify all protocols. \\
\hline
{\em filter\_\-program} & \hyperlink{protocolthe-p}{the} optional filter program to be applied on \hyperlink{protocolthe-p}{the} received packets. The program uses tcpdump(1) style expression. \\
\hline
{\em enable\_\-multicast\_\-loopback} & if true then enable delivering of multicast datagrams back to this host (assuming \hyperlink{protocolthe-p}{the} host is a member of \hyperlink{protocolthe-p}{the} same multicast group. \\
\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{classIoLinkManager_ade923f61017adc40e32eb07054bfe8b5}{
\index{IoLinkManager@{IoLinkManager}!remove\_\-multicast\_\-mac@{remove\_\-multicast\_\-mac}}
\index{remove\_\-multicast\_\-mac@{remove\_\-multicast\_\-mac}!IoLinkManager@{IoLinkManager}}
\subsubsection[{remove\_\-multicast\_\-mac}]{\setlength{\rightskip}{0pt plus 5cm}int IoLinkManager::remove\_\-multicast\_\-mac (
\begin{DoxyParamCaption}
\item[{const string \&}]{if\_\-name, }
\item[{const {\bf Mac} \&}]{mac, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoLinkManager_ade923f61017adc40e32eb07054bfe8b5}


Remove a multicast MAC address from an interface. 


\begin{DoxyParams}{Parameters}
{\em if\_\-name} & \hyperlink{protocolthe-p}{the} interface name. \\
\hline
{\em mac} & \hyperlink{protocolthe-p}{the} MAC address to remove. \\
\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{classIoLinkManager_a6a77adf5a1c39b9cbaa159944b9ae912}{
\index{IoLinkManager@{IoLinkManager}!send@{send}}
\index{send@{send}!IoLinkManager@{IoLinkManager}}
\subsubsection[{send}]{\setlength{\rightskip}{0pt plus 5cm}int IoLinkManager::send (
\begin{DoxyParamCaption}
\item[{const string \&}]{if\_\-name, }
\item[{const string \&}]{vif\_\-name, }
\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{classIoLinkManager_a6a77adf5a1c39b9cbaa159944b9ae912}


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


\begin{DoxyParams}{Parameters}
{\em if\_\-name} & \hyperlink{protocolthe-p}{the} interface to send \hyperlink{protocolthe-p}{the} packet on. \\
\hline
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} vif to send \hyperlink{protocolthe-p}{the} packet on. \\
\hline
{\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 type or \hyperlink{protocolthe-p}{the} Destination SAP. It must be between 1536 and 65535 to specify \hyperlink{protocolthe-p}{the} EtherType, or between 1 and 255 to specify \hyperlink{protocolthe-p}{the} Destination SAP IEEE 802.2 LLC frames. \\
\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{classIoLinkManager_ada91bc17cfa34bd584187a5a9b9fea66}{
\index{IoLinkManager@{IoLinkManager}!unregister\_\-data\_\-plane\_\-manager@{unregister\_\-data\_\-plane\_\-manager}}
\index{unregister\_\-data\_\-plane\_\-manager@{unregister\_\-data\_\-plane\_\-manager}!IoLinkManager@{IoLinkManager}}
\subsubsection[{unregister\_\-data\_\-plane\_\-manager}]{\setlength{\rightskip}{0pt plus 5cm}int IoLinkManager::unregister\_\-data\_\-plane\_\-manager (
\begin{DoxyParamCaption}
\item[{{\bf FeaDataPlaneManager} $\ast$}]{fea\_\-data\_\-plane\_\-manager}
\end{DoxyParamCaption}
)}}
\label{classIoLinkManager_ada91bc17cfa34bd584187a5a9b9fea66}


Unregister \hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} data plane manager. 


\begin{DoxyParams}{Parameters}
{\em fea\_\-data\_\-plane\_\-manager} & \hyperlink{protocolthe-p}{the} data plane manager to unregister. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoLinkManager_aba62e540599ab6690fb8432000ef9db8}{
\index{IoLinkManager@{IoLinkManager}!unregister\_\-receiver@{unregister\_\-receiver}}
\index{unregister\_\-receiver@{unregister\_\-receiver}!IoLinkManager@{IoLinkManager}}
\subsubsection[{unregister\_\-receiver}]{\setlength{\rightskip}{0pt plus 5cm}int IoLinkManager::unregister\_\-receiver (
\begin{DoxyParamCaption}
\item[{const string \&}]{receiver\_\-name, }
\item[{const string \&}]{if\_\-name, }
\item[{const string \&}]{vif\_\-name, }
\item[{uint16\_\-t}]{ether\_\-type, }
\item[{const string \&}]{filter\_\-program, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoLinkManager_aba62e540599ab6690fb8432000ef9db8}


Unregister to receive raw link-\/level packets. 


\begin{DoxyParams}{Parameters}
{\em receiver\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} receiver. \\
\hline
{\em if\_\-name} & \hyperlink{protocolthe-p}{the} interface through which packets should not be accepted. \\
\hline
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} vif through which packets should not be accepted. \\
\hline
{\em ether\_\-type} & \hyperlink{protocolthe-p}{the} EtherType protocol number or \hyperlink{protocolthe-p}{the} Destination SAP that \hyperlink{protocolthe-p}{the} receiver is not interested in anymore. It must be between 1536 and 65535 to specify \hyperlink{protocolthe-p}{the} EtherType, or between 1 and 255 to specify \hyperlink{protocolthe-p}{the} Destination SAP for IEEE 802.2 LLC frames. A protocol number of 0 is used to specify all protocols. \\
\hline
{\em filter\_\-program} & \hyperlink{protocolthe-p}{the} filter program that was applied on \hyperlink{protocolthe-p}{the} received packets. The program uses tcpdump(1) style expression. \\
\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 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}
