\hypertarget{classDebugIO}{
\section{DebugIO$<$ A $>$ Class Template Reference}
\label{classDebugIO}\index{DebugIO@{DebugIO}}
}


The \hyperlink{classDebugIO}{DebugIO} class realizes \hyperlink{protocolthe-p}{the} interface \hyperlink{classIO}{IO}.  




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

Inheritance diagram for DebugIO$<$ A $>$:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=4.000000cm]{classDebugIO}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structDebugIO_1_1DebugRouteEntry}{DebugRouteEntry}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classDebugIO_a193902d8966c76914ba4ce4715119efd}{
{\bfseries DebugIO} (\hyperlink{classTestInfo}{TestInfo} \&info, \hyperlink{classEventLoop}{EventLoop} \&eventloop)}
\label{classDebugIO_a193902d8966c76914ba4ce4715119efd}

\item 
void \hyperlink{classDebugIO_a0a03320235c6a23ed86da7c82b43cfb0}{pp} (const string \&which, int level, const string \&interface, const string \&vif, \hyperlink{classIPv4}{IPv4} dst, uint16\_\-t dport, \hyperlink{classIPv4}{IPv4} src, uint16\_\-t sport, uint8\_\-t $\ast$data, uint32\_\-t len)
\begin{DoxyCompactList}\small\item\em Pretty print frames. \item\end{DoxyCompactList}\item 
int \hyperlink{classDebugIO_a26bb54549f66eff3e34db3e7feb0ddf3}{startup} ()
\begin{DoxyCompactList}\small\item\em Start service. \item\end{DoxyCompactList}\item 
int \hyperlink{classDebugIO_ac3333bd6ad967c11c9f400297b82767d}{shutdown} ()
\begin{DoxyCompactList}\small\item\em \hyperlink{classShutdown}{Shutdown} service. \item\end{DoxyCompactList}\item 
\hypertarget{classDebugIO_a67b381e4278e3808d27c5e29b660b28c}{
bool \hyperlink{classDebugIO_a67b381e4278e3808d27c5e29b660b28c}{enable\_\-address} (const string \&interface, const string \&vif, const \hyperlink{classIPv4}{IPv4} \&address, const uint16\_\-t \&port, const \hyperlink{classIPv4}{IPv4} \&all\_\-nodes\_\-address)}
\label{classDebugIO_a67b381e4278e3808d27c5e29b660b28c}

\begin{DoxyCompactList}\small\item\em Enable an \hyperlink{classIPv4}{IPv4} address and port for OLSR datagram reception. \item\end{DoxyCompactList}\item 
\hypertarget{classDebugIO_a2d4f697250d9e22d034340928070a65d}{
bool \hyperlink{classDebugIO_a2d4f697250d9e22d034340928070a65d}{disable\_\-address} (const string \&interface, const string \&vif, const \hyperlink{classIPv4}{IPv4} \&address, const uint16\_\-t \&port)}
\label{classDebugIO_a2d4f697250d9e22d034340928070a65d}

\begin{DoxyCompactList}\small\item\em Disable an \hyperlink{classIPv4}{IPv4} address and port for OLSR datagram reception. \item\end{DoxyCompactList}\item 
bool \hyperlink{classDebugIO_a51152b5b411472456f93191eef39dd56}{is\_\-interface\_\-enabled} (const string \&interface) const 
\begin{DoxyCompactList}\small\item\em Test whether this interface is enabled. \item\end{DoxyCompactList}\item 
bool \hyperlink{classDebugIO_aa02d3eb98eb1604323364536941b7635}{is\_\-vif\_\-enabled} (const string \&interface, const string \&vif) const 
\begin{DoxyCompactList}\small\item\em Test whether this interface/vif is enabled. \item\end{DoxyCompactList}\item 
\hypertarget{classDebugIO_a9d73bbbdd719d2071e7fe562af95f275}{
bool \hyperlink{classDebugIO_a9d73bbbdd719d2071e7fe562af95f275}{is\_\-vif\_\-broadcast\_\-capable} (const string \&interface, const string \&vif)}
\label{classDebugIO_a9d73bbbdd719d2071e7fe562af95f275}

\begin{DoxyCompactList}\small\item\em Return true if \hyperlink{protocolthe-p}{the} given vif is broadcast capable. \item\end{DoxyCompactList}\item 
\hypertarget{classDebugIO_a0426c21f343f65cc13b39569e7e71fcc}{
bool \hyperlink{classDebugIO_a0426c21f343f65cc13b39569e7e71fcc}{is\_\-vif\_\-multicast\_\-capable} (const string \&interface, const string \&vif)}
\label{classDebugIO_a0426c21f343f65cc13b39569e7e71fcc}

\begin{DoxyCompactList}\small\item\em Return true if \hyperlink{protocolthe-p}{the} given vif is multicast capable. \item\end{DoxyCompactList}\item 
\hypertarget{classDebugIO_abd1ac4f624e0cca69d89813c0155b346}{
bool \hyperlink{classDebugIO_abd1ac4f624e0cca69d89813c0155b346}{is\_\-vif\_\-loopback} (const string \&interface, const string \&vif)}
\label{classDebugIO_abd1ac4f624e0cca69d89813c0155b346}

\begin{DoxyCompactList}\small\item\em Return true if \hyperlink{protocolthe-p}{the} given vif is a loopback vif. \item\end{DoxyCompactList}\item 
bool \hyperlink{classDebugIO_a9e0a35ebf21c63d395d13801759890b6}{is\_\-address\_\-enabled} (const string \&interface, const string \&vif, const \hyperlink{classIPv4}{IPv4} \&address) const 
\begin{DoxyCompactList}\small\item\em Test whether this interface/vif/address is enabled. \item\end{DoxyCompactList}\item 
bool \hyperlink{classDebugIO_abd97528f55915c2d11e273fb4e862882}{get\_\-addresses} (const string \&interface, const string \&vif, list$<$ \hyperlink{classIPv4}{IPv4} $>$ \&addresses) const 
\begin{DoxyCompactList}\small\item\em Get all addresses associated with this interface/vif. \item\end{DoxyCompactList}\item 
bool \hyperlink{classDebugIO_a356f611a8d686ca1c32f12ea3d7b6712}{get\_\-broadcast\_\-address} (const string \&interface, const string \&vif, const \hyperlink{classIPv4}{IPv4} \&address, \hyperlink{classIPv4}{IPv4} \&bcast\_\-address) const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} broadcast address associated with this \hyperlink{classIPv4}{IPv4} address. \item\end{DoxyCompactList}\item 
bool \hyperlink{classDebugIO_a1090f7ed15e8bcb346de6076733d0118}{get\_\-interface\_\-id} (const string \&interface, uint32\_\-t \&interface\_\-id)
\item 
uint32\_\-t \hyperlink{classDebugIO_a8183e5fce407739176e25237365fae08}{get\_\-mtu} (const string \&interface)
\item 
int \hyperlink{classDebugIO_ad5517c7249761d63361aed89ca9527db}{packets} () const 
\item 
\hypertarget{classDebugIO_a56136daf59a5d5dfcd3f1cb58e0482fe}{
bool \hyperlink{classDebugIO_a56136daf59a5d5dfcd3f1cb58e0482fe}{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)}
\label{classDebugIO_a56136daf59a5d5dfcd3f1cb58e0482fe}

\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} a UDP datagram from src:sport to dst:dport, preferably on \hyperlink{protocolthe-p}{the} given link. \item\end{DoxyCompactList}\item 
void \hyperlink{classDebugIO_a81eb54b92da5ced700d21aee6776dce3}{receive} (const string \&interface, const string \&vif, const \hyperlink{classIPv4}{IPv4} \&dst, const uint16\_\-t \&dport, const \hyperlink{classIPv4}{IPv4} \&src, const uint16\_\-t \&sport, uint8\_\-t $\ast$data, const uint32\_\-t \&len)
\begin{DoxyCompactList}\small\item\em Receive frames. \item\end{DoxyCompactList}\item 
bool \hyperlink{classDebugIO_aad7d8a2a55543288123ad4d9a60617a4}{register\_\-forward} (const string \&interface, const string \&vif, \hyperlink{classIO_ab09639a3b1bada6a79880e921291f5cc}{IO::ReceiveCallback} cb)
\begin{DoxyCompactList}\small\item\em Register where datagrams should be forwarded. \item\end{DoxyCompactList}\item 
void \hyperlink{classDebugIO_ab358c3424736c51fdf835a3aad83298a}{unregister\_\-forward} (const string \&interface, const string \&vif)
\begin{DoxyCompactList}\small\item\em Unregister an existing callback registered with \hyperlink{classDebugIO_aad7d8a2a55543288123ad4d9a60617a4}{register\_\-forward()}. \item\end{DoxyCompactList}\item 
bool \hyperlink{classDebugIO_a15c8648c2ab82faa010bff7b38a1b7b3}{add\_\-route} (\hyperlink{classIPNet}{IPv4Net} net, \hyperlink{classIPv4}{IPv4} nexthop, uint32\_\-t nexthop\_\-id, uint32\_\-t metric, const \hyperlink{classPolicyTags}{PolicyTags} \&policytags)
\begin{DoxyCompactList}\small\item\em Add route. \item\end{DoxyCompactList}\item 
bool \hyperlink{classDebugIO_a4aad07ffdd4c9eac1973d5d84e947019}{replace\_\-route} (\hyperlink{classIPNet}{IPv4Net} net, \hyperlink{classIPv4}{IPv4} nexthop, uint32\_\-t nexthop\_\-id, uint32\_\-t metric, const \hyperlink{classPolicyTags}{PolicyTags} \&policytags)
\begin{DoxyCompactList}\small\item\em Replace route. \item\end{DoxyCompactList}\item 
bool \hyperlink{classDebugIO_a15864e940a910750064ac36c963699c0}{delete\_\-route} (\hyperlink{classIPNet}{IPv4Net} net)
\begin{DoxyCompactList}\small\item\em Delete route. \item\end{DoxyCompactList}\item 
\hypertarget{classDebugIO_a75e31bfe57ec0b4385cc40125861f791}{
void {\bfseries routing\_\-table\_\-empty} ()}
\label{classDebugIO_a75e31bfe57ec0b4385cc40125861f791}

\item 
\hypertarget{classDebugIO_ab9eaa164445f4e8ff4fb1bb994ac0d9b}{
uint32\_\-t {\bfseries routing\_\-table\_\-size} ()}
\label{classDebugIO_ab9eaa164445f4e8ff4fb1bb994ac0d9b}

\item 
\hypertarget{classDebugIO_a8c2157e0cd734fcdfd0e6af25a7ae4bf}{
bool \hyperlink{classDebugIO_a8c2157e0cd734fcdfd0e6af25a7ae4bf}{routing\_\-table\_\-verify} (\hyperlink{classIPNet}{IPv4Net} net, \hyperlink{classIPv4}{IPv4} nexthop, uint32\_\-t metric)}
\label{classDebugIO_a8c2157e0cd734fcdfd0e6af25a7ae4bf}

\begin{DoxyCompactList}\small\item\em Verify that this route is in \hyperlink{protocolthe-p}{the} routing table. \item\end{DoxyCompactList}\item 
\hypertarget{classDebugIO_acaea53907c4a79bed21fb82297f26060}{
void \hyperlink{classDebugIO_acaea53907c4a79bed21fb82297f26060}{routing\_\-table\_\-dump} (ostream \&o)}
\label{classDebugIO_acaea53907c4a79bed21fb82297f26060}

\begin{DoxyCompactList}\small\item\em Dump \hyperlink{protocolthe-p}{the} routing table contents to \hyperlink{protocolthe-p}{the} given ostream (not necessarily what's in \hyperlink{protocolthe-p}{the} \hyperlink{classTestInfo}{TestInfo}). \item\end{DoxyCompactList}\item 
\hypertarget{classDebugIO_ab4bd6de0f4d50f9f0608300febfc3228}{
{\bfseries DebugIO} (\hyperlink{classTestInfo}{TestInfo} \&info, \hyperlink{structOspfTypes_a60eb031df0c10af753789ae76b185ec2}{OspfTypes::Version} version, \hyperlink{classEventLoop}{EventLoop} \&eventloop)}
\label{classDebugIO_ab4bd6de0f4d50f9f0608300febfc3228}

\item 
void \hyperlink{classDebugIO_a19db384837a55057dfadcb9dd3818eb7}{pp} (const string \&which, int level, const string \&interface, const string \&vif, A dst, A src, uint8\_\-t $\ast$data, uint32\_\-t len)
\begin{DoxyCompactList}\small\item\em Pretty print frames. \item\end{DoxyCompactList}\item 
int \hyperlink{classDebugIO_a26bb54549f66eff3e34db3e7feb0ddf3}{startup} ()
\begin{DoxyCompactList}\small\item\em Start service. \item\end{DoxyCompactList}\item 
int \hyperlink{classDebugIO_ac3333bd6ad967c11c9f400297b82767d}{shutdown} ()
\begin{DoxyCompactList}\small\item\em \hyperlink{classShutdown}{Shutdown} service. \item\end{DoxyCompactList}\item 
\hypertarget{classDebugIO_ab42398e4da92f97bee7a4f4b0334ba10}{
bool \hyperlink{classDebugIO_ab42398e4da92f97bee7a4f4b0334ba10}{send} (const string \&interface, const string \&vif, A dst, A src, int ttl, uint8\_\-t $\ast$data, uint32\_\-t len)}
\label{classDebugIO_ab42398e4da92f97bee7a4f4b0334ba10}

\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} Raw frames. \item\end{DoxyCompactList}\item 
bool \hyperlink{classDebugIO_a2328cf79aaa45fbc76e8073e5595563f}{register\_\-forward} (typename \hyperlink{classIO}{IO}$<$ A $>$::\hyperlink{classIO_ab09639a3b1bada6a79880e921291f5cc}{ReceiveCallback} cb)
\begin{DoxyCompactList}\small\item\em Register where frames should be forwarded. \item\end{DoxyCompactList}\item 
void \hyperlink{classDebugIO_aee82c03a65bcf5a00ed60c3c31139fae}{receive} (const string \&interface, const string \&vif, A dst, A src, uint8\_\-t $\ast$data, uint32\_\-t len)
\begin{DoxyCompactList}\small\item\em Receive frames. \item\end{DoxyCompactList}\item 
\hypertarget{classDebugIO_a8b02b5f35e2cab5ecd57d14e246dc3a1}{
bool \hyperlink{classDebugIO_a8b02b5f35e2cab5ecd57d14e246dc3a1}{enable\_\-interface\_\-vif} (const string \&interface, const string \&vif)}
\label{classDebugIO_a8b02b5f35e2cab5ecd57d14e246dc3a1}

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

\begin{DoxyCompactList}\small\item\em Disable this interface/vif from receiving frames. \item\end{DoxyCompactList}\item 
bool \hyperlink{classDebugIO_a51152b5b411472456f93191eef39dd56}{is\_\-interface\_\-enabled} (const string \&interface) const 
\begin{DoxyCompactList}\small\item\em Test whether this interface is enabled. \item\end{DoxyCompactList}\item 
bool \hyperlink{classDebugIO_aa02d3eb98eb1604323364536941b7635}{is\_\-vif\_\-enabled} (const string \&interface, const string \&vif) const 
\begin{DoxyCompactList}\small\item\em Test whether this interface/vif is enabled. \item\end{DoxyCompactList}\item 
bool \hyperlink{classDebugIO_ab86a58c9b1fb65557964ba46615d164d}{is\_\-address\_\-enabled} (const string \&interface, const string \&vif, const A \&address) const 
\begin{DoxyCompactList}\small\item\em Test whether this interface/vif/address is enabled. \item\end{DoxyCompactList}\item 
bool \hyperlink{classDebugIO_aefcd3e115efa488559fecfbe7c5b49b3}{get\_\-addresses} (const string \&interface, const string \&vif, list$<$ A $>$ \&) const 
\begin{DoxyCompactList}\small\item\em Get all addresses associated with this interface/vif. \item\end{DoxyCompactList}\item 
\hypertarget{classDebugIO_a94cb5e6453315c66216f8e17b508b4b8}{
bool {\bfseries get\_\-link\_\-local\_\-address} (const string \&interface, const string \&vif, \hyperlink{classIPv4}{IPv4} \&address)}
\label{classDebugIO_a94cb5e6453315c66216f8e17b508b4b8}

\item 
\hypertarget{classDebugIO_a9a2f0306af9a70b3c01111ac74987e62}{
bool {\bfseries get\_\-link\_\-local\_\-address} (const string \&interface, const string \&vif, \hyperlink{classIPv6}{IPv6} \&address)}
\label{classDebugIO_a9a2f0306af9a70b3c01111ac74987e62}

\item 
bool \hyperlink{classDebugIO_a1090f7ed15e8bcb346de6076733d0118}{get\_\-interface\_\-id} (const string \&interface, uint32\_\-t \&interface\_\-id)
\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 
uint32\_\-t \hyperlink{classDebugIO_a5f741a764b07c011bb98c3fca37aefeb}{get\_\-prefix\_\-length} (const string \&interface, const string \&vif, A address)
\item 
uint32\_\-t \hyperlink{classDebugIO_a8183e5fce407739176e25237365fae08}{get\_\-mtu} (const string \&interface)
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} MTU for an interface. \item\end{DoxyCompactList}\item 
\hypertarget{classDebugIO_ab463872ce73707cdc6fa25153823e3bb}{
bool \hyperlink{classDebugIO_ab463872ce73707cdc6fa25153823e3bb}{join\_\-multicast\_\-group} (const string \&interface, const string \&vif, A mcast)}
\label{classDebugIO_ab463872ce73707cdc6fa25153823e3bb}

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

\begin{DoxyCompactList}\small\item\em On \hyperlink{protocolthe-p}{the} interface/vif leave this multicast group. \item\end{DoxyCompactList}\item 
\hypertarget{classDebugIO_a345f3e1a24bbe96d28aa7ac575b8f39f}{
bool \hyperlink{classDebugIO_a345f3e1a24bbe96d28aa7ac575b8f39f}{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)}
\label{classDebugIO_a345f3e1a24bbe96d28aa7ac575b8f39f}

\begin{DoxyCompactList}\small\item\em Add route to \hyperlink{classRIB}{RIB}. \item\end{DoxyCompactList}\item 
\hypertarget{classDebugIO_a24829a2b455fb5a3750920c6d4373e8a}{
bool \hyperlink{classDebugIO_a24829a2b455fb5a3750920c6d4373e8a}{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)}
\label{classDebugIO_a24829a2b455fb5a3750920c6d4373e8a}

\begin{DoxyCompactList}\small\item\em Replace route in \hyperlink{classRIB}{RIB}. \item\end{DoxyCompactList}\item 
\hypertarget{classDebugIO_a2547a2f3a5e1f98d5b83dc438306b976}{
bool \hyperlink{classDebugIO_a2547a2f3a5e1f98d5b83dc438306b976}{delete\_\-route} (\hyperlink{classIPNet}{IPNet}$<$ A $>$ net)}
\label{classDebugIO_a2547a2f3a5e1f98d5b83dc438306b976}

\begin{DoxyCompactList}\small\item\em Delete route from \hyperlink{classRIB}{RIB}. \item\end{DoxyCompactList}\item 
void \hyperlink{classDebugIO_a75e31bfe57ec0b4385cc40125861f791}{routing\_\-table\_\-empty} ()
\begin{DoxyCompactList}\small\item\em A debugging entry point. \item\end{DoxyCompactList}\item 
\hypertarget{classDebugIO_ab9eaa164445f4e8ff4fb1bb994ac0d9b}{
uint32\_\-t {\bfseries routing\_\-table\_\-size} ()}
\label{classDebugIO_ab9eaa164445f4e8ff4fb1bb994ac0d9b}

\item 
\hypertarget{classDebugIO_a0becd1541e7f1263821d595405b3d3f3}{
bool \hyperlink{classDebugIO_a0becd1541e7f1263821d595405b3d3f3}{routing\_\-table\_\-verify} (\hyperlink{classIPNet}{IPNet}$<$ A $>$ net, A nexthop, uint32\_\-t metric, bool equal, bool discard)}
\label{classDebugIO_a0becd1541e7f1263821d595405b3d3f3}

\begin{DoxyCompactList}\small\item\em Verify that this route is in \hyperlink{protocolthe-p}{the} routing table. \item\end{DoxyCompactList}\item 
\hypertarget{classDebugIO_a89a1761670ca8bac2b6f23f8a3b94b4d}{
int \hyperlink{classDebugIO_a89a1761670ca8bac2b6f23f8a3b94b4d}{packets} ()}
\label{classDebugIO_a89a1761670ca8bac2b6f23f8a3b94b4d}

\begin{DoxyCompactList}\small\item\em Return \hyperlink{protocolthe-p}{the} number of packets that have seen so far. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classDebugIO_abf37dd4ac3d30da437926abf06ebdb9f}{
\hyperlink{classTestInfo}{TestInfo} \& {\bfseries \_\-info}}
\label{classDebugIO_abf37dd4ac3d30da437926abf06ebdb9f}

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

\item 
\hypertarget{classDebugIO_add606346faee494f2e2d8249a37b7c2a}{
int {\bfseries \_\-packets}}
\label{classDebugIO_add606346faee494f2e2d8249a37b7c2a}

\item 
\hypertarget{classDebugIO_a5dc0098e5bb4ccdf9328816d3a204cb6}{
uint32\_\-t {\bfseries \_\-next\_\-interface\_\-id}}
\label{classDebugIO_a5dc0098e5bb4ccdf9328816d3a204cb6}

\item 
\hypertarget{classDebugIO_aad076342d00435d924978dba65b2ae2a}{
map$<$ string, uint32\_\-t $>$ {\bfseries \_\-interface\_\-ids}}
\label{classDebugIO_aad076342d00435d924978dba65b2ae2a}

\item 
\hypertarget{classDebugIO_abfd36d01d724d3d31c881392d963f558}{
\hyperlink{classMessageDecoder}{MessageDecoder} {\bfseries \_\-md}}
\label{classDebugIO_abfd36d01d724d3d31c881392d963f558}

\item 
\hypertarget{classDebugIO_ad0a86f47074b3be71918aa3af1bbbe7a}{
map$<$ pair$<$ string, string $>$, \hyperlink{classIO_ab09639a3b1bada6a79880e921291f5cc}{IO::ReceiveCallback} $>$ \hyperlink{classDebugIO_ad0a86f47074b3be71918aa3af1bbbe7a}{\_\-forward\_\-cbs}}
\label{classDebugIO_ad0a86f47074b3be71918aa3af1bbbe7a}

\begin{DoxyCompactList}\small\item\em Forwarding callback, one per emulated interface, so that interfaces may be bound to separate \hyperlink{classEmulateSubnet}{EmulateSubnet} instances. \item\end{DoxyCompactList}\item 
\hypertarget{classDebugIO_aced7ce89b3df00a23dc56ac939668bc3}{
map$<$ \hyperlink{classIPNet}{IPv4Net}, \hyperlink{structDebugIO_1_1DebugRouteEntry}{DebugRouteEntry} $>$ {\bfseries \_\-routing\_\-table}}
\label{classDebugIO_aced7ce89b3df00a23dc56ac939668bc3}

\item 
\hypertarget{classDebugIO_a862fcb5cc7e8fda43a2a31613de261fa}{
\hyperlink{classPacketDecoder}{PacketDecoder} {\bfseries \_\-dec}}
\label{classDebugIO_a862fcb5cc7e8fda43a2a31613de261fa}

\item 
\hypertarget{classDebugIO_a9f4c835e1be968dc48600a1af5f1c6c9}{
\hyperlink{classLsaDecoder}{LsaDecoder} {\bfseries \_\-lsa\_\-decoder}}
\label{classDebugIO_a9f4c835e1be968dc48600a1af5f1c6c9}

\item 
\hypertarget{classDebugIO_aadb85988372d7a06d2fc0a5277c652c8}{
\hyperlink{classIO}{IO}$<$ A $>$::\hyperlink{classIO_ab09639a3b1bada6a79880e921291f5cc}{ReceiveCallback} {\bfseries \_\-forward\_\-cb}}
\label{classDebugIO_aadb85988372d7a06d2fc0a5277c652c8}

\item 
\hypertarget{classDebugIO_aeca4b089d26cb7bbc062de427220ed29}{
map$<$ \hyperlink{classIPNet}{IPNet}$<$ A $>$, \hyperlink{structDebugIO_1_1DebugRouteEntry}{DebugRouteEntry} $>$ {\bfseries \_\-routing\_\-table}}
\label{classDebugIO_aeca4b089d26cb7bbc062de427220ed29}

\end{DoxyCompactItemize}


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

The \hyperlink{classDebugIO}{DebugIO} class realizes \hyperlink{protocolthe-p}{the} interface \hyperlink{classIO}{IO}. Debugging implementation of \hyperlink{classIO}{IO} for use by test programs.

It is used for OLSR regression tests. 

\subsection{Member Function Documentation}
\hypertarget{classDebugIO_a15c8648c2ab82faa010bff7b38a1b7b3}{
\index{DebugIO@{DebugIO}!add\_\-route@{add\_\-route}}
\index{add\_\-route@{add\_\-route}!DebugIO@{DebugIO}}
\subsubsection[{add\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf DebugIO}$<$ 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{[}virtual\mbox{]}}}}
\label{classDebugIO_a15c8648c2ab82faa010bff7b38a1b7b3}


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}


Implements \hyperlink{classIO_a4902791813ea6d060fab15bc0282bc44}{IO$<$ A $>$}.

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


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}


Implements \hyperlink{classIO_a71dc7575dd53eae98ec72f0896e9e461}{IO$<$ A $>$}.

\hypertarget{classDebugIO_aefcd3e115efa488559fecfbe7c5b49b3}{
\index{DebugIO@{DebugIO}!get\_\-addresses@{get\_\-addresses}}
\index{get\_\-addresses@{get\_\-addresses}!DebugIO@{DebugIO}}
\subsubsection[{get\_\-addresses}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf DebugIO}$<$ 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{[}inline, virtual\mbox{]}}}}
\label{classDebugIO_aefcd3e115efa488559fecfbe7c5b49b3}


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}


Implements \hyperlink{classIO_af2374460136dc37e06c5a98124a0947d}{IO$<$ A $>$}.

\hypertarget{classDebugIO_abd97528f55915c2d11e273fb4e862882}{
\index{DebugIO@{DebugIO}!get\_\-addresses@{get\_\-addresses}}
\index{get\_\-addresses@{get\_\-addresses}!DebugIO@{DebugIO}}
\subsubsection[{get\_\-addresses}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf DebugIO}$<$ 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{[}virtual\mbox{]}}}}
\label{classDebugIO_abd97528f55915c2d11e273fb4e862882}


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}


Implements \hyperlink{classIO_a515d1691a7626a42cb84a522b4bc7bf9}{IO$<$ A $>$}.

\hypertarget{classDebugIO_a356f611a8d686ca1c32f12ea3d7b6712}{
\index{DebugIO@{DebugIO}!get\_\-broadcast\_\-address@{get\_\-broadcast\_\-address}}
\index{get\_\-broadcast\_\-address@{get\_\-broadcast\_\-address}!DebugIO@{DebugIO}}
\subsubsection[{get\_\-broadcast\_\-address}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf DebugIO}$<$ 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{[}virtual\mbox{]}}}}
\label{classDebugIO_a356f611a8d686ca1c32f12ea3d7b6712}


Get \hyperlink{protocolthe-p}{the} broadcast address associated with this \hyperlink{classIPv4}{IPv4} 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{protocolthe-p}{the} \hyperlink{classIPv4}{IPv4} interface address \\
\hline
{\em bcast\_\-address} & (out argument) \hyperlink{protocolthe-p}{the} \hyperlink{classIPv4}{IPv4} broadcast address\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if there are no errors. 
\end{DoxyReturn}


Implements \hyperlink{classIO_a25bcf4c17b9af8397941ad7bb5246522}{IO$<$ A $>$}.

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


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}


Implements \hyperlink{classIO_a2607d5352321e1761f66f4e7c53e5f5e}{IO$<$ A $>$}.

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


Implements \hyperlink{classIO_a2607d5352321e1761f66f4e7c53e5f5e}{IO$<$ A $>$}.

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


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}


Implements \hyperlink{classIO_a45d9e2e55284c6151a9ada76e97ff180}{IO$<$ A $>$}.

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


Implements \hyperlink{classIO_a45d9e2e55284c6151a9ada76e97ff180}{IO$<$ A $>$}.

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


Implements \hyperlink{classIO_a6a819f03fd33d1af16546c1144fab748}{IO$<$ A $>$}.

\hypertarget{classDebugIO_ab86a58c9b1fb65557964ba46615d164d}{
\index{DebugIO@{DebugIO}!is\_\-address\_\-enabled@{is\_\-address\_\-enabled}}
\index{is\_\-address\_\-enabled@{is\_\-address\_\-enabled}!DebugIO@{DebugIO}}
\subsubsection[{is\_\-address\_\-enabled}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf DebugIO}$<$ 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{[}inline, virtual\mbox{]}}}}
\label{classDebugIO_ab86a58c9b1fb65557964ba46615d164d}


Test whether this interface/vif/address is enabled. 

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


Implements \hyperlink{classIO_a805c43ffdeca51d93cc7a8a859a3dd27}{IO$<$ A $>$}.

\hypertarget{classDebugIO_a9e0a35ebf21c63d395d13801759890b6}{
\index{DebugIO@{DebugIO}!is\_\-address\_\-enabled@{is\_\-address\_\-enabled}}
\index{is\_\-address\_\-enabled@{is\_\-address\_\-enabled}!DebugIO@{DebugIO}}
\subsubsection[{is\_\-address\_\-enabled}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf DebugIO}$<$ 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{[}virtual\mbox{]}}}}
\label{classDebugIO_a9e0a35ebf21c63d395d13801759890b6}


Test whether this interface/vif/address is enabled. 

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


Implements \hyperlink{classIO_a1774d38216b84776fd90734dd8eaa64c}{IO$<$ A $>$}.

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


Test whether this interface is enabled. 

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


Implements \hyperlink{classIO_a9393ed6ba002d56eadec4f647560a7e0}{IO$<$ A $>$}.

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


Test whether this interface is enabled. 

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


Implements \hyperlink{classIO_a9393ed6ba002d56eadec4f647560a7e0}{IO$<$ A $>$}.

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


Test whether this interface/vif is enabled. 

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


Implements \hyperlink{classIO_afd43c68902263580df80e90b1f562ce1}{IO$<$ A $>$}.

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


Test whether this interface/vif is enabled. 

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


Implements \hyperlink{classIO_afd43c68902263580df80e90b1f562ce1}{IO$<$ A $>$}.

\hypertarget{classDebugIO_ad5517c7249761d63361aed89ca9527db}{
\index{DebugIO@{DebugIO}!packets@{packets}}
\index{packets@{packets}!DebugIO@{DebugIO}}
\subsubsection[{packets}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ int {\bf DebugIO}$<$ A $>$::packets (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classDebugIO_ad5517c7249761d63361aed89ca9527db}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} number of packets which have transited this interface. 
\end{DoxyReturn}
\hypertarget{classDebugIO_a0a03320235c6a23ed86da7c82b43cfb0}{
\index{DebugIO@{DebugIO}!pp@{pp}}
\index{pp@{pp}!DebugIO@{DebugIO}}
\subsubsection[{pp}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf DebugIO}$<$ A $>$::pp (
\begin{DoxyParamCaption}
\item[{const string \&}]{which, }
\item[{int}]{level, }
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{{\bf IPv4}}]{dst, }
\item[{uint16\_\-t}]{dport, }
\item[{{\bf IPv4}}]{src, }
\item[{uint16\_\-t}]{sport, }
\item[{uint8\_\-t $\ast$}]{data, }
\item[{uint32\_\-t}]{len}
\end{DoxyParamCaption}
)}}
\label{classDebugIO_a0a03320235c6a23ed86da7c82b43cfb0}


Pretty print frames. 

Specific to DebugIo. \hypertarget{classDebugIO_a19db384837a55057dfadcb9dd3818eb7}{
\index{DebugIO@{DebugIO}!pp@{pp}}
\index{pp@{pp}!DebugIO@{DebugIO}}
\subsubsection[{pp}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf DebugIO}$<$ A $>$::pp (
\begin{DoxyParamCaption}
\item[{const string \&}]{which, }
\item[{int}]{level, }
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{A}]{dst, }
\item[{A}]{src, }
\item[{uint8\_\-t $\ast$}]{data, }
\item[{uint32\_\-t}]{len}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classDebugIO_a19db384837a55057dfadcb9dd3818eb7}


Pretty print frames. 

Specific to \hyperlink{classDebugIO}{DebugIO}. \hypertarget{classDebugIO_aee82c03a65bcf5a00ed60c3c31139fae}{
\index{DebugIO@{DebugIO}!receive@{receive}}
\index{receive@{receive}!DebugIO@{DebugIO}}
\subsubsection[{receive}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf DebugIO}$<$ A $>$::receive (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{A}]{dst, }
\item[{A}]{src, }
\item[{uint8\_\-t $\ast$}]{data, }
\item[{uint32\_\-t}]{len}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classDebugIO_aee82c03a65bcf5a00ed60c3c31139fae}


Receive frames. 

Specific to \hyperlink{classDebugIO}{DebugIO}. \hypertarget{classDebugIO_a81eb54b92da5ced700d21aee6776dce3}{
\index{DebugIO@{DebugIO}!receive@{receive}}
\index{receive@{receive}!DebugIO@{DebugIO}}
\subsubsection[{receive}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf DebugIO}$<$ A $>$::receive (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{const {\bf IPv4} \&}]{dst, }
\item[{const uint16\_\-t \&}]{dport, }
\item[{const {\bf IPv4} \&}]{src, }
\item[{const uint16\_\-t \&}]{sport, }
\item[{uint8\_\-t $\ast$}]{data, }
\item[{const uint32\_\-t \&}]{len}
\end{DoxyParamCaption}
)}}
\label{classDebugIO_a81eb54b92da5ced700d21aee6776dce3}


Receive frames. 

Specific to DebugIo. \hypertarget{classDebugIO_aad7d8a2a55543288123ad4d9a60617a4}{
\index{DebugIO@{DebugIO}!register\_\-forward@{register\_\-forward}}
\index{register\_\-forward@{register\_\-forward}!DebugIO@{DebugIO}}
\subsubsection[{register\_\-forward}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf DebugIO}$<$ A $>$::register\_\-forward (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{{\bf IO::ReceiveCallback}}]{cb}
\end{DoxyParamCaption}
)}}
\label{classDebugIO_aad7d8a2a55543288123ad4d9a60617a4}


Register where datagrams should be forwarded. 

Specific to DebugIo. \hypertarget{classDebugIO_a2328cf79aaa45fbc76e8073e5595563f}{
\index{DebugIO@{DebugIO}!register\_\-forward@{register\_\-forward}}
\index{register\_\-forward@{register\_\-forward}!DebugIO@{DebugIO}}
\subsubsection[{register\_\-forward}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf DebugIO}$<$ A $>$::register\_\-forward (
\begin{DoxyParamCaption}
\item[{typename {\bf IO}$<$ A $>$::{\bf ReceiveCallback}}]{cb}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classDebugIO_a2328cf79aaa45fbc76e8073e5595563f}


Register where frames should be forwarded. 

Specific to \hyperlink{classDebugIO}{DebugIO}. \hypertarget{classDebugIO_a4aad07ffdd4c9eac1973d5d84e947019}{
\index{DebugIO@{DebugIO}!replace\_\-route@{replace\_\-route}}
\index{replace\_\-route@{replace\_\-route}!DebugIO@{DebugIO}}
\subsubsection[{replace\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf DebugIO}$<$ 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{[}virtual\mbox{]}}}}
\label{classDebugIO_a4aad07ffdd4c9eac1973d5d84e947019}


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}


Implements \hyperlink{classIO_a5618657839e884ee9a3c4f1cca348672}{IO$<$ A $>$}.

\hypertarget{classDebugIO_a75e31bfe57ec0b4385cc40125861f791}{
\index{DebugIO@{DebugIO}!routing\_\-table\_\-empty@{routing\_\-table\_\-empty}}
\index{routing\_\-table\_\-empty@{routing\_\-table\_\-empty}!DebugIO@{DebugIO}}
\subsubsection[{routing\_\-table\_\-empty}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf DebugIO}$<$ A $>$::routing\_\-table\_\-empty (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classDebugIO_a75e31bfe57ec0b4385cc40125861f791}


A debugging entry point. 

Empty \hyperlink{protocolthe-p}{the} routing table. \hypertarget{classDebugIO_ac3333bd6ad967c11c9f400297b82767d}{
\index{DebugIO@{DebugIO}!shutdown@{shutdown}}
\index{shutdown@{shutdown}!DebugIO@{DebugIO}}
\subsubsection[{shutdown}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ int {\bf DebugIO}$<$ A $>$::shutdown (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline, virtual\mbox{]}}}}
\label{classDebugIO_ac3333bd6ad967c11c9f400297b82767d}


\hyperlink{classShutdown}{Shutdown} service. 

Service should transition from SERVICE\_\-RUNNING to SERVICE\_\-SHUTTING\_\-DOWN immediately and onto SERVICE\_\-SHUTDOWN or SERVICE\_\-FAILED in \hyperlink{protocolthe-p}{the} near future.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implements \hyperlink{classServiceBase_a6ad34506fd5a446d5667abcb2e1b593b}{ServiceBase}.

\hypertarget{classDebugIO_ac3333bd6ad967c11c9f400297b82767d}{
\index{DebugIO@{DebugIO}!shutdown@{shutdown}}
\index{shutdown@{shutdown}!DebugIO@{DebugIO}}
\subsubsection[{shutdown}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ int {\bf DebugIO}$<$ A $>$::shutdown (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classDebugIO_ac3333bd6ad967c11c9f400297b82767d}


\hyperlink{classShutdown}{Shutdown} service. 

Service should transition from SERVICE\_\-RUNNING to SERVICE\_\-SHUTTING\_\-DOWN immediately and onto SERVICE\_\-SHUTDOWN or SERVICE\_\-FAILED in \hyperlink{protocolthe-p}{the} near future.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implements \hyperlink{classServiceBase_a6ad34506fd5a446d5667abcb2e1b593b}{ServiceBase}.

\hypertarget{classDebugIO_a26bb54549f66eff3e34db3e7feb0ddf3}{
\index{DebugIO@{DebugIO}!startup@{startup}}
\index{startup@{startup}!DebugIO@{DebugIO}}
\subsubsection[{startup}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ int {\bf DebugIO}$<$ A $>$::startup (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline, virtual\mbox{]}}}}
\label{classDebugIO_a26bb54549f66eff3e34db3e7feb0ddf3}


Start service. 

Service should transition from SERVICE\_\-READY to SERVICE\_\-STARTING immediately and onto SERVICE\_\-RUNNING or SERVICE\_\-FAILED in \hyperlink{protocolthe-p}{the} near future.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implements \hyperlink{classServiceBase_a791755872b2056ddd82a2f00904c7d2b}{ServiceBase}.

\hypertarget{classDebugIO_a26bb54549f66eff3e34db3e7feb0ddf3}{
\index{DebugIO@{DebugIO}!startup@{startup}}
\index{startup@{startup}!DebugIO@{DebugIO}}
\subsubsection[{startup}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ int {\bf DebugIO}$<$ A $>$::startup (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classDebugIO_a26bb54549f66eff3e34db3e7feb0ddf3}


Start service. 

Service should transition from SERVICE\_\-READY to SERVICE\_\-STARTING immediately and onto SERVICE\_\-RUNNING or SERVICE\_\-FAILED in \hyperlink{protocolthe-p}{the} near future.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implements \hyperlink{classServiceBase_a791755872b2056ddd82a2f00904c7d2b}{ServiceBase}.

\hypertarget{classDebugIO_ab358c3424736c51fdf835a3aad83298a}{
\index{DebugIO@{DebugIO}!unregister\_\-forward@{unregister\_\-forward}}
\index{unregister\_\-forward@{unregister\_\-forward}!DebugIO@{DebugIO}}
\subsubsection[{unregister\_\-forward}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf DebugIO}$<$ A $>$::unregister\_\-forward (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif}
\end{DoxyParamCaption}
)}}
\label{classDebugIO_ab358c3424736c51fdf835a3aad83298a}


Unregister an existing callback registered with \hyperlink{classDebugIO_aad7d8a2a55543288123ad4d9a60617a4}{register\_\-forward()}. 

Specific to DebugIo. 

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