\hypertarget{classExtIntTable}{
\section{ExtIntTable$<$ A $>$ Class Template Reference}
\label{classExtIntTable}\index{ExtIntTable@{ExtIntTable}}
}


Make two route RouteTables behave like one, while resolving nexthops that are not immediate neighbors.  




{\ttfamily \#include $<$rt\_\-tab\_\-extint.hh$>$}

Inheritance diagram for ExtIntTable$<$ A $>$:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classExtIntTable}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classExtIntTable_ad19ea9e496e523b132730cfad8a4f241}{ExtIntTable} (\hyperlink{classRouteTable}{RouteTable}$<$ A $>$ $\ast$ext\_\-table, \hyperlink{classRouteTable}{RouteTable}$<$ A $>$ $\ast$int\_\-table)
\begin{DoxyCompactList}\small\item\em \hyperlink{classExtIntTable}{ExtIntTable} Constructor. \item\end{DoxyCompactList}\item 
int \hyperlink{classExtIntTable_a30f12b051b9882adf7f4a86d7b01912a}{add\_\-route} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ \&route, \hyperlink{classRouteTable}{RouteTable}$<$ A $>$ $\ast$caller)
\begin{DoxyCompactList}\small\item\em An add\_\-route request from a parent table causes a lookup on \hyperlink{protocolthe-p}{the} other parent table. \item\end{DoxyCompactList}\item 
int \hyperlink{classExtIntTable_a7ef15580dd291c8d7765631f2c51850c}{delete\_\-route} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$route, \hyperlink{classRouteTable}{RouteTable}$<$ A $>$ $\ast$caller)
\begin{DoxyCompactList}\small\item\em An delete\_\-route request from a parent table also causes a lookup on \hyperlink{protocolthe-p}{the} other parent table. \item\end{DoxyCompactList}\item 
const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$ \hyperlink{classExtIntTable_a78600bbeb4be631d105ac4ba0b484e9e}{lookup\_\-route} (const \hyperlink{classIPNet}{IPNet}$<$ A $>$ \&net) const 
\begin{DoxyCompactList}\small\item\em Lookup a specific subnet. \item\end{DoxyCompactList}\item 
const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$ \hyperlink{classExtIntTable_a58b0d280daee5b7ae213237140c10df8}{lookup\_\-route} (const A \&addr) const 
\begin{DoxyCompactList}\small\item\em Lookup an IP address to get \hyperlink{protocolthe-p}{the} most specific (longest prefix length) route that matches this address. \item\end{DoxyCompactList}\item 
\hyperlink{classRouteRange}{RouteRange}$<$ A $>$ $\ast$ \hyperlink{classExtIntTable_ab086dbe1e14fbb3ac58dcdde467e24a1}{lookup\_\-route\_\-range} (const A \&addr) const 
\begin{DoxyCompactList}\small\item\em Lookup an IP address to get \hyperlink{protocolthe-p}{the} most specific (longest prefix length) route that matches this address, along with \hyperlink{protocolthe-p}{the} \hyperlink{classRouteRange}{RouteRange} information for this address and route. \item\end{DoxyCompactList}\item 
TableType \hyperlink{classExtIntTable_a3259a778f0e3ef0ba9aeaf932c85a008}{type} () const 
\item 
void \hyperlink{classExtIntTable_a086ae2d90c1a635c3e09dfb24f345b17}{replumb} (\hyperlink{classRouteTable}{RouteTable}$<$ A $>$ $\ast$old\_\-parent, \hyperlink{classRouteTable}{RouteTable}$<$ A $>$ $\ast$new\_\-parent)
\begin{DoxyCompactList}\small\item\em replumb \hyperlink{protocolthe-p}{the} parent tables, so that new\_\-parent replaces old\_\-parent \item\end{DoxyCompactList}\item 
\hypertarget{classExtIntTable_aa9b980e4c1707a5ec95c7f5c6719a788}{
string \hyperlink{classExtIntTable_aa9b980e4c1707a5ec95c7f5c6719a788}{str} () const }
\label{classExtIntTable_aa9b980e4c1707a5ec95c7f5c6719a788}

\begin{DoxyCompactList}\small\item\em Render this \hyperlink{classExtIntTable}{ExtIntTable} as a string for debugging purposes. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classExtIntTable_a115ab1ec8d94c40f5859be63f7feddfc}{
typedef \hyperlink{classResolvedIPRouteEntry}{ResolvedIPRouteEntry}$<$ A $>$::RouteBackLink {\bfseries ResolvedRouteBackLink}}
\label{classExtIntTable_a115ab1ec8d94c40f5859be63f7feddfc}

\item 
\hypertarget{classExtIntTable_a454deca038b6c4b705179186e27042a8}{
typedef \hyperlink{classUnresolvedIPRouteEntry}{UnresolvedIPRouteEntry}$<$ A $>$::RouteBackLink {\bfseries UnresolvedRouteBackLink}}
\label{classExtIntTable_a454deca038b6c4b705179186e27042a8}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classExtIntTable_a37cb5c238aa17c464699ef58dcab3be3}{
int {\bfseries delete\_\-ext\_\-route} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$route, bool \&is\_\-delete\_\-propagated)}
\label{classExtIntTable_a37cb5c238aa17c464699ef58dcab3be3}

\item 
\hypertarget{classExtIntTable_afa99b91f4dc94e5d7eff7591b6564abb}{
const \hyperlink{classResolvedIPRouteEntry}{ResolvedIPRouteEntry}$<$ A $>$ $\ast$ {\bfseries lookup\_\-in\_\-resolved\_\-table} (const \hyperlink{classIPNet}{IPNet}$<$ A $>$ \&ipv4net)}
\label{classExtIntTable_afa99b91f4dc94e5d7eff7591b6564abb}

\item 
\hypertarget{classExtIntTable_ae9d2098801fcc463098671c00ffd7ad7}{
void {\bfseries resolve\_\-unresolved\_\-nexthops} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ \&route)}
\label{classExtIntTable_ae9d2098801fcc463098671c00ffd7ad7}

\item 
\hypertarget{classExtIntTable_a9a340e7af88425b71fd7bb69efec1f0c}{
const \hyperlink{classResolvedIPRouteEntry}{ResolvedIPRouteEntry}$<$ A $>$ $\ast$ {\bfseries resolve\_\-and\_\-store\_\-route} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ \&route, const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$nexthop\_\-route)}
\label{classExtIntTable_a9a340e7af88425b71fd7bb69efec1f0c}

\item 
\hypertarget{classExtIntTable_a08b71a2b34edfd1890bc4e5f0e590dfd}{
bool {\bfseries delete\_\-unresolved\_\-nexthop} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$route)}
\label{classExtIntTable_a08b71a2b34edfd1890bc4e5f0e590dfd}

\item 
\hypertarget{classExtIntTable_a1d35d98300e6ffc66acc96fb5a78bd9f}{
void {\bfseries recalculate\_\-nexthops} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ \&route)}
\label{classExtIntTable_a1d35d98300e6ffc66acc96fb5a78bd9f}

\item 
\hypertarget{classExtIntTable_ab9172e17338c87bee8746246f6532f4b}{
const \hyperlink{classResolvedIPRouteEntry}{ResolvedIPRouteEntry}$<$ A $>$ $\ast$ {\bfseries lookup\_\-by\_\-igp\_\-parent} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$route)}
\label{classExtIntTable_ab9172e17338c87bee8746246f6532f4b}

\item 
\hypertarget{classExtIntTable_a3c37096f845f7d62405edd2fb01e21ad}{
const \hyperlink{classResolvedIPRouteEntry}{ResolvedIPRouteEntry}$<$ A $>$ $\ast$ {\bfseries lookup\_\-next\_\-by\_\-igp\_\-parent} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$route, const \hyperlink{classResolvedIPRouteEntry}{ResolvedIPRouteEntry}$<$ A $>$ $\ast$previous)}
\label{classExtIntTable_a3c37096f845f7d62405edd2fb01e21ad}

\item 
\hypertarget{classExtIntTable_aaf4514b20b96c3f34bba97be995082f0}{
const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$ {\bfseries lookup\_\-route\_\-in\_\-igp\_\-parent} (const \hyperlink{classIPNet}{IPNet}$<$ A $>$ \&subnet) const }
\label{classExtIntTable_aaf4514b20b96c3f34bba97be995082f0}

\item 
\hypertarget{classExtIntTable_a098f1946b1cf46353b98c170b1ffe2c8}{
const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$ {\bfseries lookup\_\-route\_\-in\_\-igp\_\-parent} (const A \&addr) const }
\label{classExtIntTable_a098f1946b1cf46353b98c170b1ffe2c8}

\item 
\hypertarget{classExtIntTable_a10da9ff665c1ae42199659d834650349}{
const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$ {\bfseries lookup\_\-route\_\-in\_\-egp\_\-parent} (const \hyperlink{classIPNet}{IPNet}$<$ A $>$ \&subnet) const }
\label{classExtIntTable_a10da9ff665c1ae42199659d834650349}

\item 
\hypertarget{classExtIntTable_a85d30c1a42173c6a609c4f9dd6a09373}{
const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$ {\bfseries lookup\_\-route\_\-in\_\-egp\_\-parent} (const A \&addr) const }
\label{classExtIntTable_a85d30c1a42173c6a609c4f9dd6a09373}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classExtIntTable_abfbee682330dfc22f393fa642b301529}{
\hyperlink{classRouteTable}{RouteTable}$<$ A $>$ $\ast$ {\bfseries \_\-ext\_\-table}}
\label{classExtIntTable_abfbee682330dfc22f393fa642b301529}

\item 
\hypertarget{classExtIntTable_a7183a421324098673a1d02c02de1ee7f}{
\hyperlink{classRouteTable}{RouteTable}$<$ A $>$ $\ast$ {\bfseries \_\-int\_\-table}}
\label{classExtIntTable_a7183a421324098673a1d02c02de1ee7f}

\item 
\hypertarget{classExtIntTable_a715019a4285a4533a616af6d4dd12800}{
\hyperlink{classTrie}{Trie}$<$ A, const \hyperlink{classResolvedIPRouteEntry}{ResolvedIPRouteEntry}$<$ A $>$ $\ast$ $>$ {\bfseries \_\-ip\_\-route\_\-table}}
\label{classExtIntTable_a715019a4285a4533a616af6d4dd12800}

\item 
\hypertarget{classExtIntTable_a2d59ba357ab266eb11b69ff1966ead69}{
multimap$<$ A, \hyperlink{classUnresolvedIPRouteEntry}{UnresolvedIPRouteEntry}$<$ A $>$ $\ast$ $>$ {\bfseries \_\-ip\_\-unresolved\_\-nexthops}}
\label{classExtIntTable_a2d59ba357ab266eb11b69ff1966ead69}

\item 
\hypertarget{classExtIntTable_aaf9f88007c49d2a4124d82e54f377118}{
map$<$ \hyperlink{classIPNet}{IPNet}$<$ A $>$, \hyperlink{classUnresolvedIPRouteEntry}{UnresolvedIPRouteEntry}$<$ A $>$ $\ast$ $>$ {\bfseries \_\-ip\_\-unresolved\_\-table}}
\label{classExtIntTable_aaf9f88007c49d2a4124d82e54f377118}

\item 
\hypertarget{classExtIntTable_a471f184c691857d2e8168bf1535da682}{
multimap$<$ const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$, \hyperlink{classResolvedIPRouteEntry}{ResolvedIPRouteEntry}$<$ A $>$ $\ast$ $>$ {\bfseries \_\-ip\_\-igp\_\-parents}}
\label{classExtIntTable_a471f184c691857d2e8168bf1535da682}

\item 
\hypertarget{classExtIntTable_a2d4bb4bd8ab87fc4bc0caa756cf4ef10}{
\hyperlink{classTrie}{Trie}$<$ A, const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$ $>$ {\bfseries \_\-resolving\_\-routes}}
\label{classExtIntTable_a2d4bb4bd8ab87fc4bc0caa756cf4ef10}

\end{DoxyCompactItemize}


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

Make two route RouteTables behave like one, while resolving nexthops that are not immediate neighbors. \hyperlink{classExtIntTable}{ExtIntTable} takes two routing tables and combines them together to form a single table, where routes for \hyperlink{protocolthe-p}{the} same subnet with a lower admin distance override those with a higher admin distance. The two parent tables are different: \hyperlink{protocolthe-p}{the} Internal table takes routes only from IGP protocols, and so \hyperlink{protocolthe-p}{the} nexthops of routes it provides are always immediate neighbors. The \hyperlink{classExternal}{External} table takes routes from EGP protocols, and so \hyperlink{protocolthe-p}{the} nexthops of routes it provides may not be immediate neighbors. The \hyperlink{classExtIntTable}{ExtIntTable} resolves \hyperlink{protocolthe-p}{the} nexthops of all routes it propagates downstream. If a nexthop cannot be resolved, it is not propagated downstream, but is stored pending \hyperlink{protocolthe-p}{the} arrival of a route that would permit \hyperlink{protocolthe-p}{the} nexthop to be resolved.

An add\_\-route request from a parent tables causes a lookup on \hyperlink{protocolthe-p}{the} other parent table. If \hyperlink{protocolthe-p}{the} route is better than \hyperlink{protocolthe-p}{the} one from \hyperlink{protocolthe-p}{the} other table, or no route exists in \hyperlink{protocolthe-p}{the} other table, then \hyperlink{protocolthe-p}{the} new route is passed downstream.

An delete\_\-route request from a parent table also causes a lookup on \hyperlink{protocolthe-p}{the} other parent table. The delete\_\-route is propagated downstream. If an alternative route is found, then that is then propagated downsteam as an add\_\-route to replace \hyperlink{protocolthe-p}{the} deleted route.

Lookups from downsteam cause lookups on both parent tables. The better response is given.

A \hyperlink{classRIB}{RIB} normally only has one \hyperlink{classExtIntTable}{ExtIntTable}. 

\subsection{Constructor \& Destructor Documentation}
\hypertarget{classExtIntTable_ad19ea9e496e523b132730cfad8a4f241}{
\index{ExtIntTable@{ExtIntTable}!ExtIntTable@{ExtIntTable}}
\index{ExtIntTable@{ExtIntTable}!ExtIntTable@{ExtIntTable}}
\subsubsection[{ExtIntTable}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ {\bf ExtIntTable}$<$ A $>$::{\bf ExtIntTable} (
\begin{DoxyParamCaption}
\item[{{\bf RouteTable}$<$ A $>$ $\ast$}]{ext\_\-table, }
\item[{{\bf RouteTable}$<$ A $>$ $\ast$}]{int\_\-table}
\end{DoxyParamCaption}
)}}
\label{classExtIntTable_ad19ea9e496e523b132730cfad8a4f241}


\hyperlink{classExtIntTable}{ExtIntTable} Constructor. 


\begin{DoxyParams}{Parameters}
{\em ext\_\-table} & parent RouteTables supplying EGP routes. \\
\hline
{\em int\_\-table} & parent RouteTables supplying IGP routes. \\
\hline
\end{DoxyParams}


\subsection{Member Function Documentation}
\hypertarget{classExtIntTable_a30f12b051b9882adf7f4a86d7b01912a}{
\index{ExtIntTable@{ExtIntTable}!add\_\-route@{add\_\-route}}
\index{add\_\-route@{add\_\-route}!ExtIntTable@{ExtIntTable}}
\subsubsection[{add\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ int {\bf ExtIntTable}$<$ A $>$::add\_\-route (
\begin{DoxyParamCaption}
\item[{const {\bf IPRouteEntry}$<$ A $>$ \&}]{route, }
\item[{{\bf RouteTable}$<$ A $>$ $\ast$}]{caller}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classExtIntTable_a30f12b051b9882adf7f4a86d7b01912a}


An add\_\-route request from a parent table causes a lookup on \hyperlink{protocolthe-p}{the} other parent table. 

If \hyperlink{protocolthe-p}{the} route is better than \hyperlink{protocolthe-p}{the} one from \hyperlink{protocolthe-p}{the} other table, or no route exists in \hyperlink{protocolthe-p}{the} other table then it is passed downstream if nexthop resolution is successful.


\begin{DoxyParams}{Parameters}
{\em route} & \hyperlink{protocolthe-p}{the} new route. \\
\hline
{\em caller} & \hyperlink{protocolthe-p}{the} parent table sending \hyperlink{protocolthe-p}{the} new route. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implements \hyperlink{classRouteTable}{RouteTable$<$ A $>$}.

\hypertarget{classExtIntTable_a7ef15580dd291c8d7765631f2c51850c}{
\index{ExtIntTable@{ExtIntTable}!delete\_\-route@{delete\_\-route}}
\index{delete\_\-route@{delete\_\-route}!ExtIntTable@{ExtIntTable}}
\subsubsection[{delete\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ int {\bf ExtIntTable}$<$ A $>$::delete\_\-route (
\begin{DoxyParamCaption}
\item[{const {\bf IPRouteEntry}$<$ A $>$ $\ast$}]{route, }
\item[{{\bf RouteTable}$<$ A $>$ $\ast$}]{caller}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classExtIntTable_a7ef15580dd291c8d7765631f2c51850c}


An delete\_\-route request from a parent table also causes a lookup on \hyperlink{protocolthe-p}{the} other parent table. 

The delete\_\-route is propagated downstream. If an alternative route is found and nexthop resolution on it is successful, then it is then propagated downsteam as an add\_\-route to replace \hyperlink{protocolthe-p}{the} deleted route.


\begin{DoxyParams}{Parameters}
{\em route} & \hyperlink{protocolthe-p}{the} route to be deleted. \\
\hline
{\em caller} & \hyperlink{protocolthe-p}{the} parent table sending \hyperlink{protocolthe-p}{the} delete\_\-route. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implements \hyperlink{classRouteTable}{RouteTable$<$ A $>$}.

\hypertarget{classExtIntTable_a58b0d280daee5b7ae213237140c10df8}{
\index{ExtIntTable@{ExtIntTable}!lookup\_\-route@{lookup\_\-route}}
\index{lookup\_\-route@{lookup\_\-route}!ExtIntTable@{ExtIntTable}}
\subsubsection[{lookup\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ const {\bf IPRouteEntry}$<$ A $>$ $\ast$ {\bf ExtIntTable}$<$ A $>$::lookup\_\-route (
\begin{DoxyParamCaption}
\item[{const A \&}]{addr}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classExtIntTable_a58b0d280daee5b7ae213237140c10df8}


Lookup an IP address to get \hyperlink{protocolthe-p}{the} most specific (longest prefix length) route that matches this address. 

The lookup will be sent to both parent tables and \hyperlink{protocolthe-p}{the} ExtIntTable's internal table of resolved\_\-routes. The most specific answer is returned, so long as \hyperlink{protocolthe-p}{the} nexthop resolves. If more than one route has \hyperlink{protocolthe-p}{the} same prefix length, then \hyperlink{protocolthe-p}{the} route with \hyperlink{protocolthe-p}{the} better admin\_\-distance is returned.


\begin{DoxyParams}{Parameters}
{\em addr} & \hyperlink{protocolthe-p}{the} IP address to look up.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a pointer to \hyperlink{protocolthe-p}{the} best most specific route entry if any entry matches and its nexthop resolves, NULL otherwise. 
\end{DoxyReturn}


Implements \hyperlink{classRouteTable}{RouteTable$<$ A $>$}.

\hypertarget{classExtIntTable_a78600bbeb4be631d105ac4ba0b484e9e}{
\index{ExtIntTable@{ExtIntTable}!lookup\_\-route@{lookup\_\-route}}
\index{lookup\_\-route@{lookup\_\-route}!ExtIntTable@{ExtIntTable}}
\subsubsection[{lookup\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ const {\bf IPRouteEntry}$<$ A $>$ $\ast$ {\bf ExtIntTable}$<$ A $>$::lookup\_\-route (
\begin{DoxyParamCaption}
\item[{const {\bf IPNet}$<$ A $>$ \&}]{net}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classExtIntTable_a78600bbeb4be631d105ac4ba0b484e9e}


Lookup a specific subnet. 

The lookup will first look in \hyperlink{protocolthe-p}{the} \hyperlink{classExtIntTable}{ExtIntTable} 's table of resolved routes -\/ if there is a route here, then this is returned. Otherwise \hyperlink{protocolthe-p}{the} lookup will be sent to both parent tables. If both give an answer, then \hyperlink{protocolthe-p}{the} route with \hyperlink{protocolthe-p}{the} better admin\_\-distance is returned, so long as it gives a nexthop that is resolvable.


\begin{DoxyParams}{Parameters}
{\em net} & \hyperlink{protocolthe-p}{the} subnet to look up. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a pointer to \hyperlink{protocolthe-p}{the} route entry if it exists, NULL otherwise. 
\end{DoxyReturn}


Implements \hyperlink{classRouteTable}{RouteTable$<$ A $>$}.

\hypertarget{classExtIntTable_ab086dbe1e14fbb3ac58dcdde467e24a1}{
\index{ExtIntTable@{ExtIntTable}!lookup\_\-route\_\-range@{lookup\_\-route\_\-range}}
\index{lookup\_\-route\_\-range@{lookup\_\-route\_\-range}!ExtIntTable@{ExtIntTable}}
\subsubsection[{lookup\_\-route\_\-range}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ {\bf RouteRange}$<$ A $>$ $\ast$ {\bf ExtIntTable}$<$ A $>$::lookup\_\-route\_\-range (
\begin{DoxyParamCaption}
\item[{const A \&}]{addr}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classExtIntTable_ab086dbe1e14fbb3ac58dcdde467e24a1}


Lookup an IP address to get \hyperlink{protocolthe-p}{the} most specific (longest prefix length) route that matches this address, along with \hyperlink{protocolthe-p}{the} \hyperlink{classRouteRange}{RouteRange} information for this address and route. 

As with lookup\_\-route, this involves querying ExtIntTable's resolved\_\-routes table and possibly both parent tables. The best, most specific route is returned if \hyperlink{protocolthe-p}{the} nexthop is resolvable, and \hyperlink{protocolthe-p}{the} tightest bounds on \hyperlink{protocolthe-p}{the} answer are returned.

\begin{DoxySeeAlso}{See also}
\hyperlink{classRouteRange}{RouteRange} 
\end{DoxySeeAlso}

\begin{DoxyParams}{Parameters}
{\em addr} & \hyperlink{protocolthe-p}{the} IP address to look up. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a pointer to a \hyperlink{classRouteRange}{RouteRange} class instance containing \hyperlink{protocolthe-p}{the} relevant answer. It is up to \hyperlink{protocolthe-p}{the} recipient of this pointer to free \hyperlink{protocolthe-p}{the} associated memory. 
\end{DoxyReturn}


Implements \hyperlink{classRouteTable}{RouteTable$<$ A $>$}.

\hypertarget{classExtIntTable_a086ae2d90c1a635c3e09dfb24f345b17}{
\index{ExtIntTable@{ExtIntTable}!replumb@{replumb}}
\index{replumb@{replumb}!ExtIntTable@{ExtIntTable}}
\subsubsection[{replumb}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ void {\bf ExtIntTable}$<$ A $>$::replumb (
\begin{DoxyParamCaption}
\item[{{\bf RouteTable}$<$ A $>$ $\ast$}]{old\_\-parent, }
\item[{{\bf RouteTable}$<$ A $>$ $\ast$}]{new\_\-parent}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classExtIntTable_a086ae2d90c1a635c3e09dfb24f345b17}


replumb \hyperlink{protocolthe-p}{the} parent tables, so that new\_\-parent replaces old\_\-parent 


\begin{DoxyParams}{Parameters}
{\em old\_\-parent} & \hyperlink{protocolthe-p}{the} old parent table. \\
\hline
{\em new\_\-parent} & \hyperlink{protocolthe-p}{the} new parent table. \\
\hline
\end{DoxyParams}


Implements \hyperlink{classRouteTable}{RouteTable$<$ A $>$}.

\hypertarget{classExtIntTable_a3259a778f0e3ef0ba9aeaf932c85a008}{
\index{ExtIntTable@{ExtIntTable}!type@{type}}
\index{type@{type}!ExtIntTable@{ExtIntTable}}
\subsubsection[{type}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ TableType {\bf ExtIntTable}$<$ A $>$::type (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline, virtual\mbox{]}}}}
\label{classExtIntTable_a3259a778f0e3ef0ba9aeaf932c85a008}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} table type (TableType). 
\end{DoxyReturn}


Implements \hyperlink{classRouteTable}{RouteTable$<$ A $>$}.



The documentation for this class was generated from the following files:\begin{DoxyCompactItemize}
\item 
/home/greearb/git/xorp.ct.github/xorp/rib/rt\_\-tab\_\-extint.hh\item 
/home/greearb/git/xorp.ct.github/xorp/rib/rt\_\-tab\_\-extint.cc\end{DoxyCompactItemize}
