\hypertarget{classIO}{
\section{IO$<$ A $>$ Class Template Reference}
\label{classIO}\index{IO@{IO}}
}


Abstract interface to low level \hyperlink{classIO}{IO} operations.  




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

Inheritance diagram for IO$<$ A $>$:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=4.000000cm]{classIO}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structIO_1_1interface__vif}{interface\_\-vif}
\end{DoxyCompactItemize}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classIO_af642b3dadd4807bcc4e98744c646d9b9}{
typedef XorpCallback2$<$ void, const string \&, bool $>$::RefPtr \hyperlink{classIO_af642b3dadd4807bcc4e98744c646d9b9}{InterfaceStatusCb}}
\label{classIO_af642b3dadd4807bcc4e98744c646d9b9}

\begin{DoxyCompactList}\small\item\em Callback for interface status from \hyperlink{protocolthe-p}{the} FEA. \item\end{DoxyCompactList}\item 
\hypertarget{classIO_af8db33f9e5dd060cb48189eb434d53ec}{
typedef XorpCallback3$<$ void, const string \&, const string \&, bool $>$::RefPtr \hyperlink{classIO_af8db33f9e5dd060cb48189eb434d53ec}{VifStatusCb}}
\label{classIO_af8db33f9e5dd060cb48189eb434d53ec}

\begin{DoxyCompactList}\small\item\em Callback for vif status from \hyperlink{protocolthe-p}{the} FEA. \item\end{DoxyCompactList}\item 
\hypertarget{classIO_a4424a87e0adff9f83ee2ea72228f883e}{
typedef XorpCallback4$<$ void, const string \&, const string \&, \hyperlink{classIPv4}{IPv4}, bool $>$::RefPtr \hyperlink{classIO_a4424a87e0adff9f83ee2ea72228f883e}{AddressStatusCb}}
\label{classIO_a4424a87e0adff9f83ee2ea72228f883e}

\begin{DoxyCompactList}\small\item\em Callback for address status from \hyperlink{protocolthe-p}{the} FEA. \item\end{DoxyCompactList}\item 
\hypertarget{classIO_ab09639a3b1bada6a79880e921291f5cc}{
typedef XorpCallback8$<$ void, const string \&, const string \&, \hyperlink{classIPv4}{IPv4}, uint16\_\-t, \hyperlink{classIPv4}{IPv4}, uint16\_\-t, uint8\_\-t $\ast$, uint32\_\-t $>$::RefPtr \hyperlink{classIO_ab09639a3b1bada6a79880e921291f5cc}{ReceiveCallback}}
\label{classIO_ab09639a3b1bada6a79880e921291f5cc}

\begin{DoxyCompactList}\small\item\em Callback for packet reception from \hyperlink{protocolthe-p}{the} FEA. \item\end{DoxyCompactList}\item 
\hypertarget{classIO_a831b76bcd5fcfb478cfb3216f0731cc2}{
typedef XorpCallback6$<$ void, const string \&, const string \&, A, A, uint8\_\-t $\ast$, uint32\_\-t $>$::RefPtr {\bfseries ReceiveCallback}}
\label{classIO_a831b76bcd5fcfb478cfb3216f0731cc2}

\item 
\hypertarget{classIO_af642b3dadd4807bcc4e98744c646d9b9}{
typedef XorpCallback2$<$ void, const string \&, bool $>$::RefPtr {\bfseries InterfaceStatusCb}}
\label{classIO_af642b3dadd4807bcc4e98744c646d9b9}

\item 
\hypertarget{classIO_af8db33f9e5dd060cb48189eb434d53ec}{
typedef XorpCallback3$<$ void, const string \&, const string \&, bool $>$::RefPtr {\bfseries VifStatusCb}}
\label{classIO_af8db33f9e5dd060cb48189eb434d53ec}

\item 
\hypertarget{classIO_afdb47bb6de7eccec6f5e75c7c59a5afd}{
typedef XorpCallback4$<$ void, const string \&, const string \&, A, bool $>$::RefPtr {\bfseries AddressStatusCb}}
\label{classIO_afdb47bb6de7eccec6f5e75c7c59a5afd}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual bool \hyperlink{classIO_a5e0cbf1cdbb41cb9cf31169516537cec}{enable\_\-address} (const string \&interface, const string \&vif, const \hyperlink{classIPv4}{IPv4} \&address, const uint16\_\-t \&port, const \hyperlink{classIPv4}{IPv4} \&all\_\-nodes\_\-address)=0
\begin{DoxyCompactList}\small\item\em Enable an \hyperlink{classIPv4}{IPv4} address and port for OLSR datagram reception and transmission. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_ad5158f1f1ce060b101b240a76271237f}{disable\_\-address} (const string \&interface, const string \&vif, const \hyperlink{classIPv4}{IPv4} \&address, const uint16\_\-t \&port)=0
\begin{DoxyCompactList}\small\item\em Disable an \hyperlink{classIPv4}{IPv4} address and port for OLSR datagram reception. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_a9393ed6ba002d56eadec4f647560a7e0}{is\_\-interface\_\-enabled} (const string \&interface) const =0
\begin{DoxyCompactList}\small\item\em Test whether this interface is enabled. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_afd43c68902263580df80e90b1f562ce1}{is\_\-vif\_\-enabled} (const string \&interface, const string \&vif) const =0
\begin{DoxyCompactList}\small\item\em Test whether this interface/vif is enabled. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_a1dd603c9d938d7f024122afb9fe180a3}{is\_\-vif\_\-broadcast\_\-capable} (const string \&interface, const string \&vif)=0
\begin{DoxyCompactList}\small\item\em Test whether this interface/vif is broadcast capable. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_aa793e5c1a05931f434a2219944face9d}{is\_\-vif\_\-multicast\_\-capable} (const string \&interface, const string \&vif)=0
\begin{DoxyCompactList}\small\item\em Test whether this interface/vif is multicast capable. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_a56c0ffc5636d7f356471e4f5e26518d3}{is\_\-vif\_\-loopback} (const string \&interface, const string \&vif)=0
\begin{DoxyCompactList}\small\item\em Test whether this interface/vif is a loopback interface. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_a1774d38216b84776fd90734dd8eaa64c}{is\_\-address\_\-enabled} (const string \&interface, const string \&vif, const \hyperlink{classIPv4}{IPv4} \&address) const =0
\begin{DoxyCompactList}\small\item\em Test whether this interface/vif/address is enabled. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_a515d1691a7626a42cb84a522b4bc7bf9}{get\_\-addresses} (const string \&interface, const string \&vif, list$<$ \hyperlink{classIPv4}{IPv4} $>$ \&addresses) const =0
\begin{DoxyCompactList}\small\item\em Get all addresses associated with this interface/vif. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_a25bcf4c17b9af8397941ad7bb5246522}{get\_\-broadcast\_\-address} (const string \&interface, const string \&vif, const \hyperlink{classIPv4}{IPv4} \&address, \hyperlink{classIPv4}{IPv4} \&bcast\_\-address) const =0
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} broadcast address associated with this interface/vif/address. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_a2607d5352321e1761f66f4e7c53e5f5e}{get\_\-interface\_\-id} (const string \&interface, uint32\_\-t \&interface\_\-id)=0
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} interface, as seen by libfeaclient. \item\end{DoxyCompactList}\item 
virtual uint32\_\-t \hyperlink{classIO_a45d9e2e55284c6151a9ada76e97ff180}{get\_\-mtu} (const string \&interface)=0
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} MTU for an interface. \item\end{DoxyCompactList}\item 
void \hyperlink{classIO_ac8fd0063bdd9393e35aacbeae2a306bf}{register\_\-interface\_\-status} (\hyperlink{classIO_af642b3dadd4807bcc4e98744c646d9b9}{InterfaceStatusCb} cb)
\begin{DoxyCompactList}\small\item\em Add a callback for tracking \hyperlink{protocolthe-p}{the} interface status. \item\end{DoxyCompactList}\item 
void \hyperlink{classIO_a61a2fe7ad0f84834e25a55563297b021}{register\_\-vif\_\-status} (\hyperlink{classIO_af8db33f9e5dd060cb48189eb434d53ec}{VifStatusCb} cb)
\begin{DoxyCompactList}\small\item\em Add a callback for tracking \hyperlink{protocolthe-p}{the} interface/vif status. \item\end{DoxyCompactList}\item 
void \hyperlink{classIO_ae222575f1f2777305104ff11e63acf9b}{register\_\-address\_\-status} (\hyperlink{classIO_a4424a87e0adff9f83ee2ea72228f883e}{AddressStatusCb} cb)
\begin{DoxyCompactList}\small\item\em Add a callback for tracking \hyperlink{protocolthe-p}{the} interface/vif/address status. \item\end{DoxyCompactList}\item 
void \hyperlink{classIO_aeb652cf5ee15eea8022d3192b3f756cc}{register\_\-receive} (\hyperlink{classIO_ab09639a3b1bada6a79880e921291f5cc}{ReceiveCallback} cb)
\begin{DoxyCompactList}\small\item\em Register for receiving datagrams. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_afc45c02d5fceb77e7e1c886ace501257}{send} (const string \&interface, const string \&vif, const \hyperlink{classIPv4}{IPv4} \&src, const uint16\_\-t \&sport, const \hyperlink{classIPv4}{IPv4} \&dst, const uint16\_\-t \&dport, uint8\_\-t $\ast$data, const uint32\_\-t \&len)=0
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} a UDP datagram from src:sport to dst:dport, on \hyperlink{protocolthe-p}{the} given interface, if possible. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_a4902791813ea6d060fab15bc0282bc44}{add\_\-route} (\hyperlink{classIPNet}{IPv4Net} net, \hyperlink{classIPv4}{IPv4} nexthop, uint32\_\-t faceid, uint32\_\-t metric, const \hyperlink{classPolicyTags}{PolicyTags} \&policytags)=0
\begin{DoxyCompactList}\small\item\em Add route. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_a5618657839e884ee9a3c4f1cca348672}{replace\_\-route} (\hyperlink{classIPNet}{IPv4Net} net, \hyperlink{classIPv4}{IPv4} nexthop, uint32\_\-t faceid, uint32\_\-t metric, const \hyperlink{classPolicyTags}{PolicyTags} \&policytags)=0
\begin{DoxyCompactList}\small\item\em Replace route. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_a71dc7575dd53eae98ec72f0896e9e461}{delete\_\-route} (\hyperlink{classIPNet}{IPv4Net} net)=0
\begin{DoxyCompactList}\small\item\em Delete route. \item\end{DoxyCompactList}\item 
void \hyperlink{classIO_a35c561f12a8d12f185d8e8a6811e830e}{set\_\-interface\_\-mapping} (uint32\_\-t interface\_\-id, const string \&interface, const string \&vif)
\begin{DoxyCompactList}\small\item\em \hyperlink{classStore}{Store} a mapping of \hyperlink{protocolthe-p}{the} OLSR internal interface ID to interface/vif. \item\end{DoxyCompactList}\item 
bool \hyperlink{classIO_a3de4c0995e98099fcf522274e8cc7a59}{get\_\-interface\_\-vif\_\-by\_\-interface\_\-id} (uint32\_\-t interface\_\-id, string \&interface, string \&vif)
\begin{DoxyCompactList}\small\item\em Given an OLSR interface ID, return \hyperlink{protocolthe-p}{the} interface/vif. \item\end{DoxyCompactList}\item 
\hypertarget{classIO_ac1e516bb2780c2e7a524e0b64e6a2f94}{
uint16\_\-t \hyperlink{classIO_ac1e516bb2780c2e7a524e0b64e6a2f94}{get\_\-ip\_\-protocol\_\-number} () const }
\label{classIO_ac1e516bb2780c2e7a524e0b64e6a2f94}

\begin{DoxyCompactList}\small\item\em Get OSPF protocol number. \item\end{DoxyCompactList}\item 
\hypertarget{classIO_a67331659371a49525b176efda296e8c5}{
virtual bool \hyperlink{classIO_a67331659371a49525b176efda296e8c5}{send} (const string \&interface, const string \&vif, A dst, A src, int ttl, uint8\_\-t $\ast$data, uint32\_\-t len)=0}
\label{classIO_a67331659371a49525b176efda296e8c5}

\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} Raw frames. \item\end{DoxyCompactList}\item 
\hypertarget{classIO_a30b8f6bd20d9647c701eb0f36f66cd50}{
bool \hyperlink{classIO_a30b8f6bd20d9647c701eb0f36f66cd50}{set\_\-ip\_\-router\_\-alert} (bool alert)}
\label{classIO_a30b8f6bd20d9647c701eb0f36f66cd50}

\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} router alerts in IP packets? \item\end{DoxyCompactList}\item 
\hypertarget{classIO_a634fb1bccd89e4cbd7b919c2ee6a753d}{
bool \hyperlink{classIO_a634fb1bccd89e4cbd7b919c2ee6a753d}{get\_\-ip\_\-router\_\-alert} () const }
\label{classIO_a634fb1bccd89e4cbd7b919c2ee6a753d}

\begin{DoxyCompactList}\small\item\em Get router alert state. \item\end{DoxyCompactList}\item 
\hypertarget{classIO_aeb652cf5ee15eea8022d3192b3f756cc}{
void \hyperlink{classIO_aeb652cf5ee15eea8022d3192b3f756cc}{register\_\-receive} (\hyperlink{classIO_ab09639a3b1bada6a79880e921291f5cc}{ReceiveCallback} cb)}
\label{classIO_aeb652cf5ee15eea8022d3192b3f756cc}

\begin{DoxyCompactList}\small\item\em Register for receiving raw frames. \item\end{DoxyCompactList}\item 
\hypertarget{classIO_a4d3fe99464dffadef77bc6732df41f9d}{
virtual bool \hyperlink{classIO_a4d3fe99464dffadef77bc6732df41f9d}{enable\_\-interface\_\-vif} (const string \&interface, const string \&vif)=0}
\label{classIO_a4d3fe99464dffadef77bc6732df41f9d}

\begin{DoxyCompactList}\small\item\em Enable \hyperlink{protocolthe-p}{the} interface/vif to receive frames. \item\end{DoxyCompactList}\item 
\hypertarget{classIO_ae52c70be1e0373d9924d266a05b8cdaf}{
virtual bool \hyperlink{classIO_ae52c70be1e0373d9924d266a05b8cdaf}{disable\_\-interface\_\-vif} (const string \&interface, const string \&vif)=0}
\label{classIO_ae52c70be1e0373d9924d266a05b8cdaf}

\begin{DoxyCompactList}\small\item\em Disable this interface/vif from receiving frames. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_a9393ed6ba002d56eadec4f647560a7e0}{is\_\-interface\_\-enabled} (const string \&interface) const =0
\begin{DoxyCompactList}\small\item\em Test whether this interface is enabled. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_afd43c68902263580df80e90b1f562ce1}{is\_\-vif\_\-enabled} (const string \&interface, const string \&vif) const =0
\begin{DoxyCompactList}\small\item\em Test whether this interface/vif is enabled. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_a805c43ffdeca51d93cc7a8a859a3dd27}{is\_\-address\_\-enabled} (const string \&interface, const string \&vif, const A \&address) const =0
\begin{DoxyCompactList}\small\item\em Test whether this interface/vif/address is enabled. \item\end{DoxyCompactList}\item 
void \hyperlink{classIO_ac8fd0063bdd9393e35aacbeae2a306bf}{register\_\-interface\_\-status} (\hyperlink{classIO_af642b3dadd4807bcc4e98744c646d9b9}{InterfaceStatusCb} cb)
\begin{DoxyCompactList}\small\item\em Add a callback for tracking \hyperlink{protocolthe-p}{the} interface status. \item\end{DoxyCompactList}\item 
void \hyperlink{classIO_a61a2fe7ad0f84834e25a55563297b021}{register\_\-vif\_\-status} (\hyperlink{classIO_af8db33f9e5dd060cb48189eb434d53ec}{VifStatusCb} cb)
\begin{DoxyCompactList}\small\item\em Add a callback for tracking \hyperlink{protocolthe-p}{the} interface/vif status. \item\end{DoxyCompactList}\item 
void \hyperlink{classIO_ae222575f1f2777305104ff11e63acf9b}{register\_\-address\_\-status} (\hyperlink{classIO_a4424a87e0adff9f83ee2ea72228f883e}{AddressStatusCb} cb)
\begin{DoxyCompactList}\small\item\em Add a callback for tracking \hyperlink{protocolthe-p}{the} interface/vif/address status. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_af2374460136dc37e06c5a98124a0947d}{get\_\-addresses} (const string \&interface, const string \&vif, list$<$ A $>$ \&addresses) const =0
\begin{DoxyCompactList}\small\item\em Get all addresses associated with this interface/vif. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_aabd6f3bb79dc0cfb676ab2b495e5b88d}{get\_\-link\_\-local\_\-address} (const string \&interface, const string \&vif, A \&address)=0
\begin{DoxyCompactList}\small\item\em Get a link local address for this interface/vif if available. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_a2607d5352321e1761f66f4e7c53e5f5e}{get\_\-interface\_\-id} (const string \&interface, uint32\_\-t \&interface\_\-id)=0
\item 
virtual uint32\_\-t \hyperlink{classIO_a6a819f03fd33d1af16546c1144fab748}{get\_\-prefix\_\-length} (const string \&interface, const string \&vif, A address)=0
\item 
virtual uint32\_\-t \hyperlink{classIO_a45d9e2e55284c6151a9ada76e97ff180}{get\_\-mtu} (const string \&interface)=0
\item 
\hypertarget{classIO_a20d6b44fc5a66b0b9908bcb2abfd1a33}{
virtual bool \hyperlink{classIO_a20d6b44fc5a66b0b9908bcb2abfd1a33}{join\_\-multicast\_\-group} (const string \&interface, const string \&vif, A mcast)=0}
\label{classIO_a20d6b44fc5a66b0b9908bcb2abfd1a33}

\begin{DoxyCompactList}\small\item\em On \hyperlink{protocolthe-p}{the} interface/vif join this multicast group. \item\end{DoxyCompactList}\item 
\hypertarget{classIO_a7491aa44f9dd26955c2c3f6dea8e8834}{
virtual bool \hyperlink{classIO_a7491aa44f9dd26955c2c3f6dea8e8834}{leave\_\-multicast\_\-group} (const string \&interface, const string \&vif, A mcast)=0}
\label{classIO_a7491aa44f9dd26955c2c3f6dea8e8834}

\begin{DoxyCompactList}\small\item\em On \hyperlink{protocolthe-p}{the} interface/vif leave this multicast group. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_a45dd379bd802b800e21546023839a108}{add\_\-route} (\hyperlink{classIPNet}{IPNet}$<$ A $>$ net, A nexthop, uint32\_\-t nexthop\_\-id, uint32\_\-t metric, bool equal, bool discard, const \hyperlink{classPolicyTags}{PolicyTags} \&policytags)=0
\begin{DoxyCompactList}\small\item\em Add route. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIO_ae18ff03f11df616e2d31749369f39023}{replace\_\-route} (\hyperlink{classIPNet}{IPNet}$<$ A $>$ net, A nexthop, uint32\_\-t nexthop\_\-id, uint32\_\-t metric, bool equal, bool discard, const \hyperlink{classPolicyTags}{PolicyTags} \&policytags)=0
\begin{DoxyCompactList}\small\item\em Replace route. \item\end{DoxyCompactList}\item 
\hypertarget{classIO_aaa767531e241f1db1c8ae6ee5c6b3595}{
virtual bool \hyperlink{classIO_aaa767531e241f1db1c8ae6ee5c6b3595}{delete\_\-route} (\hyperlink{classIPNet}{IPNet}$<$ A $>$ net)=0}
\label{classIO_aaa767531e241f1db1c8ae6ee5c6b3595}

\begin{DoxyCompactList}\small\item\em Delete route. \item\end{DoxyCompactList}\item 
void \hyperlink{classIO_a35c561f12a8d12f185d8e8a6811e830e}{set\_\-interface\_\-mapping} (uint32\_\-t interface\_\-id, const string \&interface, const string \&vif)
\begin{DoxyCompactList}\small\item\em \hyperlink{classStore}{Store} a mapping of \hyperlink{protocolthe-p}{the} OSPF internal interface ID to interface/vif. \item\end{DoxyCompactList}\item 
\hypertarget{classIO_a3de4c0995e98099fcf522274e8cc7a59}{
bool \hyperlink{classIO_a3de4c0995e98099fcf522274e8cc7a59}{get\_\-interface\_\-vif\_\-by\_\-interface\_\-id} (uint32\_\-t interface\_\-id, string \&interface, string \&vif)}
\label{classIO_a3de4c0995e98099fcf522274e8cc7a59}

\begin{DoxyCompactList}\small\item\em Given an OSPF internal interface ID return \hyperlink{protocolthe-p}{the} interface/vif. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classIO_a157234d23d381525bd3190a74ab0b6d1}{
\hyperlink{classIO_ab09639a3b1bada6a79880e921291f5cc}{ReceiveCallback} {\bfseries \_\-receive\_\-cb}}
\label{classIO_a157234d23d381525bd3190a74ab0b6d1}

\item 
\hypertarget{classIO_a7d420f187cba876e833e28c1c3892697}{
\hyperlink{classIO_af642b3dadd4807bcc4e98744c646d9b9}{InterfaceStatusCb} {\bfseries \_\-interface\_\-status\_\-cb}}
\label{classIO_a7d420f187cba876e833e28c1c3892697}

\item 
\hypertarget{classIO_a5cfe068647eb46c5d3c221958ad65c4a}{
\hyperlink{classIO_af8db33f9e5dd060cb48189eb434d53ec}{VifStatusCb} {\bfseries \_\-vif\_\-status\_\-cb}}
\label{classIO_a5cfe068647eb46c5d3c221958ad65c4a}

\item 
\hypertarget{classIO_ad0c1c1edee0c6532cf0bf486415d12cd}{
\hyperlink{classIO_a4424a87e0adff9f83ee2ea72228f883e}{AddressStatusCb} {\bfseries \_\-address\_\-status\_\-cb}}
\label{classIO_ad0c1c1edee0c6532cf0bf486415d12cd}

\item 
\hypertarget{classIO_a41ac143b35282108245c4b27099bb6d2}{
map$<$ uint32\_\-t, \hyperlink{structIO_1_1interface__vif}{interface\_\-vif} $>$ {\bfseries \_\-interface\_\-vif}}
\label{classIO_a41ac143b35282108245c4b27099bb6d2}

\item 
\hypertarget{classIO_ae67c5319a258c716516d3c0f878c7ed7}{
bool {\bfseries \_\-ip\_\-router\_\-alert}}
\label{classIO_ae67c5319a258c716516d3c0f878c7ed7}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$typename A$>$ class IO$<$ A $>$}

Abstract interface to low level \hyperlink{classIO}{IO} operations. An abstract class that defines packet reception and transmission.

An abstract class that defines packet reception and transmission. The details of how packets are received or transmitted are therefore hidden from \hyperlink{protocolthe-p}{the} internals of \hyperlink{protocolthe-p}{the} OLSR code.

The details of how packets are received or transmitted are therefore hidden from \hyperlink{protocolthe-p}{the} internals of \hyperlink{protocolthe-p}{the} OSPF code. 

\subsection{Member Function Documentation}
\hypertarget{classIO_a4902791813ea6d060fab15bc0282bc44}{
\index{IO@{IO}!add\_\-route@{add\_\-route}}
\index{add\_\-route@{add\_\-route}!IO@{IO}}
\subsubsection[{add\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::add\_\-route (
\begin{DoxyParamCaption}
\item[{{\bf IPv4Net}}]{net, }
\item[{{\bf IPv4}}]{nexthop, }
\item[{uint32\_\-t}]{faceid, }
\item[{uint32\_\-t}]{metric, }
\item[{const {\bf PolicyTags} \&}]{policytags}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_a4902791813ea6d060fab15bc0282bc44}


Add route. 


\begin{DoxyParams}{Parameters}
{\em net} & network \\
\hline
{\em nexthop} & \\
\hline
{\em faceid} & interface ID towards \hyperlink{protocolthe-p}{the} nexthop \\
\hline
{\em metric} & to network \\
\hline
{\em policytags} & policy info to \hyperlink{protocolthe-p}{the} \hyperlink{classRIB}{RIB}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} route was added OK, otherwise false. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_a15c8648c2ab82faa010bff7b38a1b7b3}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_a97e67280b9409faee7ee95972e2dd205}{XrlIO$<$ A $>$}, and \hyperlink{classXrlIO_a97e67280b9409faee7ee95972e2dd205}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_a45dd379bd802b800e21546023839a108}{
\index{IO@{IO}!add\_\-route@{add\_\-route}}
\index{add\_\-route@{add\_\-route}!IO@{IO}}
\subsubsection[{add\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::add\_\-route (
\begin{DoxyParamCaption}
\item[{{\bf IPNet}$<$ A $>$}]{net, }
\item[{A}]{nexthop, }
\item[{uint32\_\-t}]{nexthop\_\-id, }
\item[{uint32\_\-t}]{metric, }
\item[{bool}]{equal, }
\item[{bool}]{discard, }
\item[{const {\bf PolicyTags} \&}]{policytags}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_a45dd379bd802b800e21546023839a108}


Add route. 


\begin{DoxyParams}{Parameters}
{\em net} & network \\
\hline
{\em nexthop} & \\
\hline
{\em nexthop\_\-id} & interface ID towards \hyperlink{protocolthe-p}{the} nexthop \\
\hline
{\em metric} & to network \\
\hline
{\em equal} & true if this in another route to \hyperlink{protocolthe-p}{the} same destination. \\
\hline
{\em discard} & true if this is a discard route. \\
\hline
{\em policytags} & policy info to \hyperlink{protocolthe-p}{the} \hyperlink{classRIB}{RIB}. \\
\hline
\end{DoxyParams}


Implemented in \hyperlink{classDebugIO_a345f3e1a24bbe96d28aa7ac575b8f39f}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_a04183fe2f2b55865a4136301ae04be86}{XrlIO$<$ A $>$}, and \hyperlink{classXrlIO_a04183fe2f2b55865a4136301ae04be86}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_a71dc7575dd53eae98ec72f0896e9e461}{
\index{IO@{IO}!delete\_\-route@{delete\_\-route}}
\index{delete\_\-route@{delete\_\-route}!IO@{IO}}
\subsubsection[{delete\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::delete\_\-route (
\begin{DoxyParamCaption}
\item[{{\bf IPv4Net}}]{net}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_a71dc7575dd53eae98ec72f0896e9e461}


Delete route. 


\begin{DoxyParams}{Parameters}
{\em net} & network \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} route was deleted OK, otherwise false. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_a15864e940a910750064ac36c963699c0}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_a5aacc0d58388c8a23e9e812b4ad7005b}{XrlIO$<$ A $>$}, \hyperlink{classXrlIO_a5aacc0d58388c8a23e9e812b4ad7005b}{XrlIO$<$ IPv4 $>$}, and \hyperlink{classXrlIO_a016189050192c0447b7f4e22699c8e3a}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_ad5158f1f1ce060b101b240a76271237f}{
\index{IO@{IO}!disable\_\-address@{disable\_\-address}}
\index{disable\_\-address@{disable\_\-address}!IO@{IO}}
\subsubsection[{disable\_\-address}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::disable\_\-address (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{const {\bf IPv4} \&}]{address, }
\item[{const uint16\_\-t \&}]{port}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_ad5158f1f1ce060b101b240a76271237f}


Disable an \hyperlink{classIPv4}{IPv4} address and port for OLSR datagram reception. 


\begin{DoxyParams}{Parameters}
{\em interface} & \hyperlink{protocolthe-p}{the} interface to disable. \\
\hline
{\em vif} & \hyperlink{protocolthe-p}{the} vif to disable. \\
\hline
{\em address} & \hyperlink{protocolthe-p}{the} address to disable. \\
\hline
{\em port} & \hyperlink{protocolthe-p}{the} port to disable. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} address was disabled, otherwise false. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_a2d4f697250d9e22d034340928070a65d}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_aac061324bd2c93931dd4be40249755bd}{XrlIO$<$ A $>$}, and \hyperlink{classXrlIO_aac061324bd2c93931dd4be40249755bd}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_a5e0cbf1cdbb41cb9cf31169516537cec}{
\index{IO@{IO}!enable\_\-address@{enable\_\-address}}
\index{enable\_\-address@{enable\_\-address}!IO@{IO}}
\subsubsection[{enable\_\-address}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::enable\_\-address (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{const {\bf IPv4} \&}]{address, }
\item[{const uint16\_\-t \&}]{port, }
\item[{const {\bf IPv4} \&}]{all\_\-nodes\_\-address}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_a5e0cbf1cdbb41cb9cf31169516537cec}


Enable an \hyperlink{classIPv4}{IPv4} address and port for OLSR datagram reception and transmission. 


\begin{DoxyParams}{Parameters}
{\em interface} & \hyperlink{protocolthe-p}{the} interface to enable. \\
\hline
{\em vif} & \hyperlink{protocolthe-p}{the} vif to enable. \\
\hline
{\em address} & \hyperlink{protocolthe-p}{the} address to enable. \\
\hline
{\em port} & \hyperlink{protocolthe-p}{the} port to enable. \\
\hline
{\em all\_\-nodes\_\-address} & \hyperlink{protocolthe-p}{the} all-\/nodes address to enable. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} address was enabled, otherwise false. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_a67b381e4278e3808d27c5e29b660b28c}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_a27d9410fbdc8be9fa79de8bb66135bdd}{XrlIO$<$ A $>$}, and \hyperlink{classXrlIO_a27d9410fbdc8be9fa79de8bb66135bdd}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_a515d1691a7626a42cb84a522b4bc7bf9}{
\index{IO@{IO}!get\_\-addresses@{get\_\-addresses}}
\index{get\_\-addresses@{get\_\-addresses}!IO@{IO}}
\subsubsection[{get\_\-addresses}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::get\_\-addresses (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{list$<$ {\bf IPv4} $>$ \&}]{addresses}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_a515d1691a7626a42cb84a522b4bc7bf9}


Get all addresses associated with this interface/vif. 


\begin{DoxyParams}{Parameters}
{\em interface} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} interface \\
\hline
{\em vif} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} vif \\
\hline
{\em addresses} & (out argument) list of associated addresses \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if there are no errors. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_abd97528f55915c2d11e273fb4e862882}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_a3cca6bd36e547866fff3c4e9eaa55b5f}{XrlIO$<$ A $>$}, \hyperlink{classXrlIO_a3cca6bd36e547866fff3c4e9eaa55b5f}{XrlIO$<$ IPv4 $>$}, and \hyperlink{classXrlIO_ab9bac51776b6ff26ede67628b6f57ec9}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_af2374460136dc37e06c5a98124a0947d}{
\index{IO@{IO}!get\_\-addresses@{get\_\-addresses}}
\index{get\_\-addresses@{get\_\-addresses}!IO@{IO}}
\subsubsection[{get\_\-addresses}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::get\_\-addresses (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{list$<$ A $>$ \&}]{addresses}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_af2374460136dc37e06c5a98124a0947d}


Get all addresses associated with this interface/vif. 


\begin{DoxyParams}{Parameters}
{\em interface} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} interface \\
\hline
{\em vif} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} vif \\
\hline
{\em addresses} & (out argument) list of associated addresses\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if there are no errors. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_aefcd3e115efa488559fecfbe7c5b49b3}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_ab9bac51776b6ff26ede67628b6f57ec9}{XrlIO$<$ A $>$}, \hyperlink{classXrlIO_a3cca6bd36e547866fff3c4e9eaa55b5f}{XrlIO$<$ IPv4 $>$}, and \hyperlink{classXrlIO_ab9bac51776b6ff26ede67628b6f57ec9}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_a25bcf4c17b9af8397941ad7bb5246522}{
\index{IO@{IO}!get\_\-broadcast\_\-address@{get\_\-broadcast\_\-address}}
\index{get\_\-broadcast\_\-address@{get\_\-broadcast\_\-address}!IO@{IO}}
\subsubsection[{get\_\-broadcast\_\-address}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::get\_\-broadcast\_\-address (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{const {\bf IPv4} \&}]{address, }
\item[{{\bf IPv4} \&}]{bcast\_\-address}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_a25bcf4c17b9af8397941ad7bb5246522}


Get \hyperlink{protocolthe-p}{the} broadcast address associated with this interface/vif/address. 


\begin{DoxyParams}{Parameters}
{\em interface} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} interface \\
\hline
{\em vif} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} vif \\
\hline
{\em address} & \hyperlink{classIPv4}{IPv4} binding address \\
\hline
{\em bcast\_\-address} & (out argument) primary broadcast address \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if there are no errors. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_a356f611a8d686ca1c32f12ea3d7b6712}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_af70b5f66dd0b85fcc3ecbc0613190c51}{XrlIO$<$ A $>$}, and \hyperlink{classXrlIO_af70b5f66dd0b85fcc3ecbc0613190c51}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_a2607d5352321e1761f66f4e7c53e5f5e}{
\index{IO@{IO}!get\_\-interface\_\-id@{get\_\-interface\_\-id}}
\index{get\_\-interface\_\-id@{get\_\-interface\_\-id}!IO@{IO}}
\subsubsection[{get\_\-interface\_\-id}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::get\_\-interface\_\-id (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{uint32\_\-t \&}]{interface\_\-id}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_a2607d5352321e1761f66f4e7c53e5f5e}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} interface id for this interface. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_a1090f7ed15e8bcb346de6076733d0118}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_ad2967c459860a7ead887b4b7734db18e}{XrlIO$<$ A $>$}, \hyperlink{classDebugIO_a1090f7ed15e8bcb346de6076733d0118}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_ad2967c459860a7ead887b4b7734db18e}{XrlIO$<$ A $>$}, \hyperlink{classXrlIO_ad2967c459860a7ead887b4b7734db18e}{XrlIO$<$ IPv4 $>$}, and \hyperlink{classXrlIO_ad2967c459860a7ead887b4b7734db18e}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_a2607d5352321e1761f66f4e7c53e5f5e}{
\index{IO@{IO}!get\_\-interface\_\-id@{get\_\-interface\_\-id}}
\index{get\_\-interface\_\-id@{get\_\-interface\_\-id}!IO@{IO}}
\subsubsection[{get\_\-interface\_\-id}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::get\_\-interface\_\-id (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{uint32\_\-t \&}]{interface\_\-id}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_a2607d5352321e1761f66f4e7c53e5f5e}


Get \hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} interface, as seen by libfeaclient. 


\begin{DoxyParams}{Parameters}
{\em interface} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} interface. \\
\hline
{\em interface\_\-id} & (out argument) interface ID. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} interface id for this interface. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_a1090f7ed15e8bcb346de6076733d0118}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_ad2967c459860a7ead887b4b7734db18e}{XrlIO$<$ A $>$}, \hyperlink{classDebugIO_a1090f7ed15e8bcb346de6076733d0118}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_ad2967c459860a7ead887b4b7734db18e}{XrlIO$<$ A $>$}, \hyperlink{classXrlIO_ad2967c459860a7ead887b4b7734db18e}{XrlIO$<$ IPv4 $>$}, and \hyperlink{classXrlIO_ad2967c459860a7ead887b4b7734db18e}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_a3de4c0995e98099fcf522274e8cc7a59}{
\index{IO@{IO}!get\_\-interface\_\-vif\_\-by\_\-interface\_\-id@{get\_\-interface\_\-vif\_\-by\_\-interface\_\-id}}
\index{get\_\-interface\_\-vif\_\-by\_\-interface\_\-id@{get\_\-interface\_\-vif\_\-by\_\-interface\_\-id}!IO@{IO}}
\subsubsection[{get\_\-interface\_\-vif\_\-by\_\-interface\_\-id}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf IO}$<$ A $>$::get\_\-interface\_\-vif\_\-by\_\-interface\_\-id (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{interface\_\-id, }
\item[{string \&}]{interface, }
\item[{string \&}]{vif}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIO_a3de4c0995e98099fcf522274e8cc7a59}


Given an OLSR interface ID, return \hyperlink{protocolthe-p}{the} interface/vif. 


\begin{DoxyParams}{Parameters}
{\em interface\_\-id} & \hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} interface, as seen by libfeaclient. \\
\hline
{\em interface} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} interface mapped to interface\_\-id. \\
\hline
{\em vif} & \hyperlink{protocolthe-p}{the} name of vif mapped to interface\_\-id. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if interface\_\-id was found, otherwise false. 
\end{DoxyReturn}
\hypertarget{classIO_aabd6f3bb79dc0cfb676ab2b495e5b88d}{
\index{IO@{IO}!get\_\-link\_\-local\_\-address@{get\_\-link\_\-local\_\-address}}
\index{get\_\-link\_\-local\_\-address@{get\_\-link\_\-local\_\-address}!IO@{IO}}
\subsubsection[{get\_\-link\_\-local\_\-address}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::get\_\-link\_\-local\_\-address (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{A \&}]{address}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_aabd6f3bb79dc0cfb676ab2b495e5b88d}


Get a link local address for this interface/vif if available. 


\begin{DoxyParams}{Parameters}
{\em interface} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} interface \\
\hline
{\em vif} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} vif \\
\hline
{\em address} & (out argument) set if address is found.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if a link local address is available. 
\end{DoxyReturn}


Implemented in \hyperlink{classXrlIO_aaaf90558e5d71a1556184f0396fc37a2}{XrlIO$<$ A $>$}, and \hyperlink{classXrlIO_aaaf90558e5d71a1556184f0396fc37a2}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_a45d9e2e55284c6151a9ada76e97ff180}{
\index{IO@{IO}!get\_\-mtu@{get\_\-mtu}}
\index{get\_\-mtu@{get\_\-mtu}!IO@{IO}}
\subsubsection[{get\_\-mtu}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual uint32\_\-t {\bf IO}$<$ A $>$::get\_\-mtu (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_a45d9e2e55284c6151a9ada76e97ff180}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} mtu for this interface. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_a8183e5fce407739176e25237365fae08}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_a330db8bbe4c8e7a11ffbe1089161ec9d}{XrlIO$<$ A $>$}, \hyperlink{classDebugIO_a8183e5fce407739176e25237365fae08}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_a330db8bbe4c8e7a11ffbe1089161ec9d}{XrlIO$<$ A $>$}, \hyperlink{classXrlIO_a330db8bbe4c8e7a11ffbe1089161ec9d}{XrlIO$<$ IPv4 $>$}, and \hyperlink{classXrlIO_a330db8bbe4c8e7a11ffbe1089161ec9d}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_a45d9e2e55284c6151a9ada76e97ff180}{
\index{IO@{IO}!get\_\-mtu@{get\_\-mtu}}
\index{get\_\-mtu@{get\_\-mtu}!IO@{IO}}
\subsubsection[{get\_\-mtu}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual uint32\_\-t {\bf IO}$<$ A $>$::get\_\-mtu (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_a45d9e2e55284c6151a9ada76e97ff180}


Get \hyperlink{protocolthe-p}{the} MTU for an interface. 


\begin{DoxyParams}{Parameters}
{\em interface} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} interface. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} mtu for this interface. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_a8183e5fce407739176e25237365fae08}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_a330db8bbe4c8e7a11ffbe1089161ec9d}{XrlIO$<$ A $>$}, \hyperlink{classDebugIO_a8183e5fce407739176e25237365fae08}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_a330db8bbe4c8e7a11ffbe1089161ec9d}{XrlIO$<$ A $>$}, \hyperlink{classXrlIO_a330db8bbe4c8e7a11ffbe1089161ec9d}{XrlIO$<$ IPv4 $>$}, and \hyperlink{classXrlIO_a330db8bbe4c8e7a11ffbe1089161ec9d}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_a6a819f03fd33d1af16546c1144fab748}{
\index{IO@{IO}!get\_\-prefix\_\-length@{get\_\-prefix\_\-length}}
\index{get\_\-prefix\_\-length@{get\_\-prefix\_\-length}!IO@{IO}}
\subsubsection[{get\_\-prefix\_\-length}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual uint32\_\-t {\bf IO}$<$ A $>$::get\_\-prefix\_\-length (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{A}]{address}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_a6a819f03fd33d1af16546c1144fab748}
\begin{DoxyReturn}{Returns}
prefix length for this address. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_a5f741a764b07c011bb98c3fca37aefeb}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_aa3f0362c1b8d952cf0e38ac3db4165c6}{XrlIO$<$ A $>$}, \hyperlink{classXrlIO_a6ed00ab8855edea3bb21e68000c96b4a}{XrlIO$<$ IPv4 $>$}, and \hyperlink{classXrlIO_aa3f0362c1b8d952cf0e38ac3db4165c6}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_a805c43ffdeca51d93cc7a8a859a3dd27}{
\index{IO@{IO}!is\_\-address\_\-enabled@{is\_\-address\_\-enabled}}
\index{is\_\-address\_\-enabled@{is\_\-address\_\-enabled}!IO@{IO}}
\subsubsection[{is\_\-address\_\-enabled}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::is\_\-address\_\-enabled (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{const A \&}]{address}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_a805c43ffdeca51d93cc7a8a859a3dd27}


Test whether this interface/vif/address is enabled. 

\begin{DoxyReturn}{Returns}
true if it exists and is enabled, otherwise false. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_ab86a58c9b1fb65557964ba46615d164d}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_ad5816c61b483488b7d082fba1cdd1300}{XrlIO$<$ A $>$}, \hyperlink{classXrlIO_ae8258320dfc692f07a2b43b45a89735d}{XrlIO$<$ IPv4 $>$}, and \hyperlink{classXrlIO_ad5816c61b483488b7d082fba1cdd1300}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_a1774d38216b84776fd90734dd8eaa64c}{
\index{IO@{IO}!is\_\-address\_\-enabled@{is\_\-address\_\-enabled}}
\index{is\_\-address\_\-enabled@{is\_\-address\_\-enabled}!IO@{IO}}
\subsubsection[{is\_\-address\_\-enabled}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::is\_\-address\_\-enabled (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{const {\bf IPv4} \&}]{address}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_a1774d38216b84776fd90734dd8eaa64c}


Test whether this interface/vif/address is enabled. 


\begin{DoxyParams}{Parameters}
{\em interface} & \hyperlink{protocolthe-p}{the} interface to test. \\
\hline
{\em vif} & \hyperlink{protocolthe-p}{the} vif to test. \\
\hline
{\em address} & \hyperlink{protocolthe-p}{the} address to test. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if it exists and is enabled, otherwise false. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_a9e0a35ebf21c63d395d13801759890b6}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_ae8258320dfc692f07a2b43b45a89735d}{XrlIO$<$ A $>$}, \hyperlink{classXrlIO_ae8258320dfc692f07a2b43b45a89735d}{XrlIO$<$ IPv4 $>$}, and \hyperlink{classXrlIO_ad5816c61b483488b7d082fba1cdd1300}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_a9393ed6ba002d56eadec4f647560a7e0}{
\index{IO@{IO}!is\_\-interface\_\-enabled@{is\_\-interface\_\-enabled}}
\index{is\_\-interface\_\-enabled@{is\_\-interface\_\-enabled}!IO@{IO}}
\subsubsection[{is\_\-interface\_\-enabled}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::is\_\-interface\_\-enabled (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_a9393ed6ba002d56eadec4f647560a7e0}


Test whether this interface is enabled. 


\begin{DoxyParams}{Parameters}
{\em interface} & \hyperlink{protocolthe-p}{the} interface to test. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if it exists and is enabled, otherwise false. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_a51152b5b411472456f93191eef39dd56}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_a50a486ce00b64726620f4ea5676760e8}{XrlIO$<$ A $>$}, \hyperlink{classDebugIO_a51152b5b411472456f93191eef39dd56}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_a50a486ce00b64726620f4ea5676760e8}{XrlIO$<$ A $>$}, \hyperlink{classXrlIO_a50a486ce00b64726620f4ea5676760e8}{XrlIO$<$ IPv4 $>$}, and \hyperlink{classXrlIO_a50a486ce00b64726620f4ea5676760e8}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_a9393ed6ba002d56eadec4f647560a7e0}{
\index{IO@{IO}!is\_\-interface\_\-enabled@{is\_\-interface\_\-enabled}}
\index{is\_\-interface\_\-enabled@{is\_\-interface\_\-enabled}!IO@{IO}}
\subsubsection[{is\_\-interface\_\-enabled}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::is\_\-interface\_\-enabled (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_a9393ed6ba002d56eadec4f647560a7e0}


Test whether this interface is enabled. 

\begin{DoxyReturn}{Returns}
true if it exists and is enabled, otherwise false. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_a51152b5b411472456f93191eef39dd56}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_a50a486ce00b64726620f4ea5676760e8}{XrlIO$<$ A $>$}, \hyperlink{classDebugIO_a51152b5b411472456f93191eef39dd56}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_a50a486ce00b64726620f4ea5676760e8}{XrlIO$<$ A $>$}, \hyperlink{classXrlIO_a50a486ce00b64726620f4ea5676760e8}{XrlIO$<$ IPv4 $>$}, and \hyperlink{classXrlIO_a50a486ce00b64726620f4ea5676760e8}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_a1dd603c9d938d7f024122afb9fe180a3}{
\index{IO@{IO}!is\_\-vif\_\-broadcast\_\-capable@{is\_\-vif\_\-broadcast\_\-capable}}
\index{is\_\-vif\_\-broadcast\_\-capable@{is\_\-vif\_\-broadcast\_\-capable}!IO@{IO}}
\subsubsection[{is\_\-vif\_\-broadcast\_\-capable}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::is\_\-vif\_\-broadcast\_\-capable (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_a1dd603c9d938d7f024122afb9fe180a3}


Test whether this interface/vif is broadcast capable. 


\begin{DoxyParams}{Parameters}
{\em interface} & \hyperlink{protocolthe-p}{the} interface to test. \\
\hline
{\em vif} & \hyperlink{protocolthe-p}{the} vif to test. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if it is broadcast capable, otherwise false. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_a9d73bbbdd719d2071e7fe562af95f275}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_af3b730d241f1e3ddebe1ba07d422452c}{XrlIO$<$ A $>$}, and \hyperlink{classXrlIO_af3b730d241f1e3ddebe1ba07d422452c}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_afd43c68902263580df80e90b1f562ce1}{
\index{IO@{IO}!is\_\-vif\_\-enabled@{is\_\-vif\_\-enabled}}
\index{is\_\-vif\_\-enabled@{is\_\-vif\_\-enabled}!IO@{IO}}
\subsubsection[{is\_\-vif\_\-enabled}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::is\_\-vif\_\-enabled (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_afd43c68902263580df80e90b1f562ce1}


Test whether this interface/vif is enabled. 


\begin{DoxyParams}{Parameters}
{\em interface} & \hyperlink{protocolthe-p}{the} interface to test. \\
\hline
{\em vif} & \hyperlink{protocolthe-p}{the} vif to test. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if it exists and is enabled, otherwise false. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_aa02d3eb98eb1604323364536941b7635}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_ab3bfe3aabc8711d58836b6b861fa4a37}{XrlIO$<$ A $>$}, \hyperlink{classDebugIO_aa02d3eb98eb1604323364536941b7635}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_ab3bfe3aabc8711d58836b6b861fa4a37}{XrlIO$<$ A $>$}, \hyperlink{classXrlIO_ab3bfe3aabc8711d58836b6b861fa4a37}{XrlIO$<$ IPv4 $>$}, and \hyperlink{classXrlIO_ab3bfe3aabc8711d58836b6b861fa4a37}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_afd43c68902263580df80e90b1f562ce1}{
\index{IO@{IO}!is\_\-vif\_\-enabled@{is\_\-vif\_\-enabled}}
\index{is\_\-vif\_\-enabled@{is\_\-vif\_\-enabled}!IO@{IO}}
\subsubsection[{is\_\-vif\_\-enabled}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::is\_\-vif\_\-enabled (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_afd43c68902263580df80e90b1f562ce1}


Test whether this interface/vif is enabled. 

\begin{DoxyReturn}{Returns}
true if it exists and is enabled, otherwise false. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_aa02d3eb98eb1604323364536941b7635}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_ab3bfe3aabc8711d58836b6b861fa4a37}{XrlIO$<$ A $>$}, \hyperlink{classDebugIO_aa02d3eb98eb1604323364536941b7635}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_ab3bfe3aabc8711d58836b6b861fa4a37}{XrlIO$<$ A $>$}, \hyperlink{classXrlIO_ab3bfe3aabc8711d58836b6b861fa4a37}{XrlIO$<$ IPv4 $>$}, and \hyperlink{classXrlIO_ab3bfe3aabc8711d58836b6b861fa4a37}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_a56c0ffc5636d7f356471e4f5e26518d3}{
\index{IO@{IO}!is\_\-vif\_\-loopback@{is\_\-vif\_\-loopback}}
\index{is\_\-vif\_\-loopback@{is\_\-vif\_\-loopback}!IO@{IO}}
\subsubsection[{is\_\-vif\_\-loopback}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::is\_\-vif\_\-loopback (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_a56c0ffc5636d7f356471e4f5e26518d3}


Test whether this interface/vif is a loopback interface. 


\begin{DoxyParams}{Parameters}
{\em interface} & \hyperlink{protocolthe-p}{the} interface to test. \\
\hline
{\em vif} & \hyperlink{protocolthe-p}{the} vif to test. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if it is a loopback interface, otherwise false. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_abd1ac4f624e0cca69d89813c0155b346}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_aa8ff6c73a8469c35a97893a2354ad970}{XrlIO$<$ A $>$}, and \hyperlink{classXrlIO_aa8ff6c73a8469c35a97893a2354ad970}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_aa793e5c1a05931f434a2219944face9d}{
\index{IO@{IO}!is\_\-vif\_\-multicast\_\-capable@{is\_\-vif\_\-multicast\_\-capable}}
\index{is\_\-vif\_\-multicast\_\-capable@{is\_\-vif\_\-multicast\_\-capable}!IO@{IO}}
\subsubsection[{is\_\-vif\_\-multicast\_\-capable}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::is\_\-vif\_\-multicast\_\-capable (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_aa793e5c1a05931f434a2219944face9d}


Test whether this interface/vif is multicast capable. 


\begin{DoxyParams}{Parameters}
{\em interface} & \hyperlink{protocolthe-p}{the} interface to test. \\
\hline
{\em vif} & \hyperlink{protocolthe-p}{the} vif to test. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if it is multicast capable, otherwise false. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_a0426c21f343f65cc13b39569e7e71fcc}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_add30a32817997389bdee969c9ddc6d04}{XrlIO$<$ A $>$}, and \hyperlink{classXrlIO_add30a32817997389bdee969c9ddc6d04}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_ae222575f1f2777305104ff11e63acf9b}{
\index{IO@{IO}!register\_\-address\_\-status@{register\_\-address\_\-status}}
\index{register\_\-address\_\-status@{register\_\-address\_\-status}!IO@{IO}}
\subsubsection[{register\_\-address\_\-status}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ void {\bf IO}$<$ A $>$::register\_\-address\_\-status (
\begin{DoxyParamCaption}
\item[{{\bf AddressStatusCb}}]{cb}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIO_ae222575f1f2777305104ff11e63acf9b}


Add a callback for tracking \hyperlink{protocolthe-p}{the} interface/vif/address status. 

The callback will be invoked whenever \hyperlink{protocolthe-p}{the} status of \hyperlink{protocolthe-p}{the} tuple (interface, vif, address) is changed from disabled to enabled or vice-\/versa.


\begin{DoxyParams}{Parameters}
{\em cb} & \hyperlink{protocolthe-p}{the} callback to register. \\
\hline
\end{DoxyParams}
\hypertarget{classIO_ae222575f1f2777305104ff11e63acf9b}{
\index{IO@{IO}!register\_\-address\_\-status@{register\_\-address\_\-status}}
\index{register\_\-address\_\-status@{register\_\-address\_\-status}!IO@{IO}}
\subsubsection[{register\_\-address\_\-status}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ void {\bf IO}$<$ A $>$::register\_\-address\_\-status (
\begin{DoxyParamCaption}
\item[{{\bf AddressStatusCb}}]{cb}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIO_ae222575f1f2777305104ff11e63acf9b}


Add a callback for tracking \hyperlink{protocolthe-p}{the} interface/vif/address status. 

The callback will be invoked whenever \hyperlink{protocolthe-p}{the} status of \hyperlink{protocolthe-p}{the} tuple (interface, vif, address) is changed from disabled to enabled or vice-\/versa.


\begin{DoxyParams}{Parameters}
{\em cb} & \hyperlink{protocolthe-p}{the} callback to register. \\
\hline
\end{DoxyParams}
\hypertarget{classIO_ac8fd0063bdd9393e35aacbeae2a306bf}{
\index{IO@{IO}!register\_\-interface\_\-status@{register\_\-interface\_\-status}}
\index{register\_\-interface\_\-status@{register\_\-interface\_\-status}!IO@{IO}}
\subsubsection[{register\_\-interface\_\-status}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ void {\bf IO}$<$ A $>$::register\_\-interface\_\-status (
\begin{DoxyParamCaption}
\item[{{\bf InterfaceStatusCb}}]{cb}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIO_ac8fd0063bdd9393e35aacbeae2a306bf}


Add a callback for tracking \hyperlink{protocolthe-p}{the} interface status. 

The callback will be invoked whenever \hyperlink{protocolthe-p}{the} status of \hyperlink{protocolthe-p}{the} interface is changed from disabled to enabled or vice-\/versa.


\begin{DoxyParams}{Parameters}
{\em cb} & \hyperlink{protocolthe-p}{the} callback to register. \\
\hline
\end{DoxyParams}
\hypertarget{classIO_ac8fd0063bdd9393e35aacbeae2a306bf}{
\index{IO@{IO}!register\_\-interface\_\-status@{register\_\-interface\_\-status}}
\index{register\_\-interface\_\-status@{register\_\-interface\_\-status}!IO@{IO}}
\subsubsection[{register\_\-interface\_\-status}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ void {\bf IO}$<$ A $>$::register\_\-interface\_\-status (
\begin{DoxyParamCaption}
\item[{{\bf InterfaceStatusCb}}]{cb}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIO_ac8fd0063bdd9393e35aacbeae2a306bf}


Add a callback for tracking \hyperlink{protocolthe-p}{the} interface status. 

The callback will be invoked whenever \hyperlink{protocolthe-p}{the} status of \hyperlink{protocolthe-p}{the} interface is changed from disabled to enabled or vice-\/versa.


\begin{DoxyParams}{Parameters}
{\em cb} & \hyperlink{protocolthe-p}{the} callback to register. \\
\hline
\end{DoxyParams}
\hypertarget{classIO_aeb652cf5ee15eea8022d3192b3f756cc}{
\index{IO@{IO}!register\_\-receive@{register\_\-receive}}
\index{register\_\-receive@{register\_\-receive}!IO@{IO}}
\subsubsection[{register\_\-receive}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ void {\bf IO}$<$ A $>$::register\_\-receive (
\begin{DoxyParamCaption}
\item[{{\bf ReceiveCallback}}]{cb}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIO_aeb652cf5ee15eea8022d3192b3f756cc}


Register for receiving datagrams. 


\begin{DoxyParams}{Parameters}
{\em cb} & \hyperlink{protocolthe-p}{the} callback to register. \\
\hline
\end{DoxyParams}
\hypertarget{classIO_a61a2fe7ad0f84834e25a55563297b021}{
\index{IO@{IO}!register\_\-vif\_\-status@{register\_\-vif\_\-status}}
\index{register\_\-vif\_\-status@{register\_\-vif\_\-status}!IO@{IO}}
\subsubsection[{register\_\-vif\_\-status}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ void {\bf IO}$<$ A $>$::register\_\-vif\_\-status (
\begin{DoxyParamCaption}
\item[{{\bf VifStatusCb}}]{cb}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIO_a61a2fe7ad0f84834e25a55563297b021}


Add a callback for tracking \hyperlink{protocolthe-p}{the} interface/vif status. 

The callback will be invoked whenever \hyperlink{protocolthe-p}{the} status of \hyperlink{protocolthe-p}{the} interface/vif is changed from disabled to enabled or vice-\/versa.


\begin{DoxyParams}{Parameters}
{\em cb} & \hyperlink{protocolthe-p}{the} callback to register. \\
\hline
\end{DoxyParams}
\hypertarget{classIO_a61a2fe7ad0f84834e25a55563297b021}{
\index{IO@{IO}!register\_\-vif\_\-status@{register\_\-vif\_\-status}}
\index{register\_\-vif\_\-status@{register\_\-vif\_\-status}!IO@{IO}}
\subsubsection[{register\_\-vif\_\-status}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ void {\bf IO}$<$ A $>$::register\_\-vif\_\-status (
\begin{DoxyParamCaption}
\item[{{\bf VifStatusCb}}]{cb}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIO_a61a2fe7ad0f84834e25a55563297b021}


Add a callback for tracking \hyperlink{protocolthe-p}{the} interface/vif status. 

The callback will be invoked whenever \hyperlink{protocolthe-p}{the} status of \hyperlink{protocolthe-p}{the} interface/vif is changed from disabled to enabled or vice-\/versa.


\begin{DoxyParams}{Parameters}
{\em cb} & \hyperlink{protocolthe-p}{the} callback to register. \\
\hline
\end{DoxyParams}
\hypertarget{classIO_ae18ff03f11df616e2d31749369f39023}{
\index{IO@{IO}!replace\_\-route@{replace\_\-route}}
\index{replace\_\-route@{replace\_\-route}!IO@{IO}}
\subsubsection[{replace\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::replace\_\-route (
\begin{DoxyParamCaption}
\item[{{\bf IPNet}$<$ A $>$}]{net, }
\item[{A}]{nexthop, }
\item[{uint32\_\-t}]{nexthop\_\-id, }
\item[{uint32\_\-t}]{metric, }
\item[{bool}]{equal, }
\item[{bool}]{discard, }
\item[{const {\bf PolicyTags} \&}]{policytags}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_ae18ff03f11df616e2d31749369f39023}


Replace route. 


\begin{DoxyParams}{Parameters}
{\em net} & network \\
\hline
{\em nexthop} & \\
\hline
{\em nexthop\_\-id} & interface ID towards \hyperlink{protocolthe-p}{the} nexthop \\
\hline
{\em metric} & to network \\
\hline
{\em equal} & true if this in another route to \hyperlink{protocolthe-p}{the} same destination. \\
\hline
{\em discard} & true if this is a discard route. \\
\hline
{\em policytags} & policy info to \hyperlink{protocolthe-p}{the} \hyperlink{classRIB}{RIB}. \\
\hline
\end{DoxyParams}


Implemented in \hyperlink{classDebugIO_a24829a2b455fb5a3750920c6d4373e8a}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_aba17f6754380bcf2b7702132d2dc75e6}{XrlIO$<$ A $>$}, and \hyperlink{classXrlIO_aba17f6754380bcf2b7702132d2dc75e6}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_a5618657839e884ee9a3c4f1cca348672}{
\index{IO@{IO}!replace\_\-route@{replace\_\-route}}
\index{replace\_\-route@{replace\_\-route}!IO@{IO}}
\subsubsection[{replace\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::replace\_\-route (
\begin{DoxyParamCaption}
\item[{{\bf IPv4Net}}]{net, }
\item[{{\bf IPv4}}]{nexthop, }
\item[{uint32\_\-t}]{faceid, }
\item[{uint32\_\-t}]{metric, }
\item[{const {\bf PolicyTags} \&}]{policytags}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_a5618657839e884ee9a3c4f1cca348672}


Replace route. 


\begin{DoxyParams}{Parameters}
{\em net} & network \\
\hline
{\em nexthop} & \\
\hline
{\em faceid} & interface ID towards \hyperlink{protocolthe-p}{the} nexthop \\
\hline
{\em metric} & to network \\
\hline
{\em policytags} & policy info to \hyperlink{protocolthe-p}{the} \hyperlink{classRIB}{RIB}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} route was replaced OK, otherwise false. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_a4aad07ffdd4c9eac1973d5d84e947019}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_a63b0100048d62f3a0a3c5cc95253c60a}{XrlIO$<$ A $>$}, and \hyperlink{classXrlIO_a63b0100048d62f3a0a3c5cc95253c60a}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_afc45c02d5fceb77e7e1c886ace501257}{
\index{IO@{IO}!send@{send}}
\index{send@{send}!IO@{IO}}
\subsubsection[{send}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ virtual bool {\bf IO}$<$ A $>$::send (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{const {\bf IPv4} \&}]{src, }
\item[{const uint16\_\-t \&}]{sport, }
\item[{const {\bf IPv4} \&}]{dst, }
\item[{const uint16\_\-t \&}]{dport, }
\item[{uint8\_\-t $\ast$}]{data, }
\item[{const uint32\_\-t \&}]{len}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIO_afc45c02d5fceb77e7e1c886ace501257}


\hyperlink{structSend}{Send} a UDP datagram from src:sport to dst:dport, on \hyperlink{protocolthe-p}{the} given interface, if possible. 


\begin{DoxyParams}{Parameters}
{\em interface} & \hyperlink{protocolthe-p}{the} interface to transmit from. \\
\hline
{\em vif} & \hyperlink{protocolthe-p}{the} vif to transmit from. \\
\hline
{\em src} & \hyperlink{protocolthe-p}{the} \hyperlink{classIPv4}{IPv4} source address to transmit from. \\
\hline
{\em sport} & \hyperlink{protocolthe-p}{the} UDP source port to transmit from. \\
\hline
{\em dst} & \hyperlink{protocolthe-p}{the} \hyperlink{classIPv4}{IPv4} destination address to send to. \\
\hline
{\em dport} & \hyperlink{protocolthe-p}{the} UDP destination port to send to. \\
\hline
{\em data} & \hyperlink{protocolthe-p}{the} datagram to transmit. \\
\hline
{\em len} & \hyperlink{protocolthe-p}{the} length of \hyperlink{protocolthe-p}{the} datagram to transmit. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} datagram was sent OK, otherwise false. 
\end{DoxyReturn}


Implemented in \hyperlink{classDebugIO_a56136daf59a5d5dfcd3f1cb58e0482fe}{DebugIO$<$ A $>$}, \hyperlink{classXrlIO_a29b1d0ad3dd36b1345db36e2923d8090}{XrlIO$<$ A $>$}, and \hyperlink{classXrlIO_a29b1d0ad3dd36b1345db36e2923d8090}{XrlIO$<$ IPv4 $>$}.

\hypertarget{classIO_a35c561f12a8d12f185d8e8a6811e830e}{
\index{IO@{IO}!set\_\-interface\_\-mapping@{set\_\-interface\_\-mapping}}
\index{set\_\-interface\_\-mapping@{set\_\-interface\_\-mapping}!IO@{IO}}
\subsubsection[{set\_\-interface\_\-mapping}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ void {\bf IO}$<$ A $>$::set\_\-interface\_\-mapping (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{interface\_\-id, }
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIO_a35c561f12a8d12f185d8e8a6811e830e}


\hyperlink{classStore}{Store} a mapping of \hyperlink{protocolthe-p}{the} OSPF internal interface ID to interface/vif. 

This will be required by when installing a route. \hypertarget{classIO_a35c561f12a8d12f185d8e8a6811e830e}{
\index{IO@{IO}!set\_\-interface\_\-mapping@{set\_\-interface\_\-mapping}}
\index{set\_\-interface\_\-mapping@{set\_\-interface\_\-mapping}!IO@{IO}}
\subsubsection[{set\_\-interface\_\-mapping}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ void {\bf IO}$<$ A $>$::set\_\-interface\_\-mapping (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{interface\_\-id, }
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIO_a35c561f12a8d12f185d8e8a6811e830e}


\hyperlink{classStore}{Store} a mapping of \hyperlink{protocolthe-p}{the} OLSR internal interface ID to interface/vif. 

This will be required by when installing a route.


\begin{DoxyParams}{Parameters}
{\em interface\_\-id} & \hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} interface, as seen by libfeaclient. \\
\hline
{\em interface} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} interface mapped to interface\_\-id. \\
\hline
{\em vif} & \hyperlink{protocolthe-p}{the} name of vif mapped to interface\_\-id. \\
\hline
\end{DoxyParams}


The documentation for this class was generated from the following files:\begin{DoxyCompactItemize}
\item 
/home/greearb/git/xorp.ct.github/xorp/contrib/olsr/io.hh\item 
/home/greearb/git/xorp.ct.github/xorp/ospf/io.hh\end{DoxyCompactItemize}
