\hypertarget{classRouteTable}{
\section{RouteTable$<$ A $>$ Class Template Reference}
\label{classRouteTable}\index{RouteTable@{RouteTable}}
}


Base class for a routing table.  




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

Inheritance diagram for RouteTable$<$ A $>$:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=11.000000cm]{classRouteTable}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classRouteTable_ae6013b96850f0e1bab5b386acbbaab77}{
{\bfseries RouteTable} (const string \&name)}
\label{classRouteTable_ae6013b96850f0e1bab5b386acbbaab77}

\item 
\hypertarget{classRouteTable_a2a892a4164e4606a2b564ac1fb8e3c8c}{
virtual int {\bfseries add\_\-route} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ \&route, \hyperlink{classRouteTable}{RouteTable} $\ast$caller)=0}
\label{classRouteTable_a2a892a4164e4606a2b564ac1fb8e3c8c}

\item 
\hypertarget{classRouteTable_a281ed52d6a600539cf2f2b3718143061}{
virtual int {\bfseries delete\_\-route} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$route, \hyperlink{classRouteTable}{RouteTable} $\ast$caller)=0}
\label{classRouteTable_a281ed52d6a600539cf2f2b3718143061}

\item 
\hypertarget{classRouteTable_a8efba0b87ee02bbe99f58d0adb7f3858}{
virtual const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$ {\bfseries lookup\_\-route} (const \hyperlink{classIPNet}{IPNet}$<$ A $>$ \&net) const =0}
\label{classRouteTable_a8efba0b87ee02bbe99f58d0adb7f3858}

\item 
\hypertarget{classRouteTable_a63e77b719c24f9291d7d4afb8e7f7dda}{
virtual const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$ {\bfseries lookup\_\-route} (const A \&addr) const =0}
\label{classRouteTable_a63e77b719c24f9291d7d4afb8e7f7dda}

\item 
\hypertarget{classRouteTable_acc459431519f67c07f726917432fd727}{
virtual \hyperlink{classRouteRange}{RouteRange}$<$ A $>$ $\ast$ {\bfseries lookup\_\-route\_\-range} (const A \&addr) const =0}
\label{classRouteTable_acc459431519f67c07f726917432fd727}

\item 
\hypertarget{classRouteTable_af742aac240d66c6c60daec2d91190a70}{
virtual void {\bfseries set\_\-next\_\-table} (\hyperlink{classRouteTable}{RouteTable} $\ast$next\_\-table)}
\label{classRouteTable_af742aac240d66c6c60daec2d91190a70}

\item 
\hypertarget{classRouteTable_a19533fa14a70c2a9c38c3f99e356682c}{
virtual \hyperlink{classRouteTable}{RouteTable} $\ast$ {\bfseries parent} ()}
\label{classRouteTable_a19533fa14a70c2a9c38c3f99e356682c}

\item 
\hypertarget{classRouteTable_a7fb68603d5f38903b8f4149c17a391fe}{
virtual TableType {\bfseries type} () const =0}
\label{classRouteTable_a7fb68603d5f38903b8f4149c17a391fe}

\item 
\hypertarget{classRouteTable_a7397b080fbb4823ba51d3edd63726ace}{
virtual void {\bfseries replumb} (\hyperlink{classRouteTable}{RouteTable} $\ast$old\_\-parent, \hyperlink{classRouteTable}{RouteTable} $\ast$new\_\-parent)=0}
\label{classRouteTable_a7397b080fbb4823ba51d3edd63726ace}

\item 
\hypertarget{classRouteTable_a3147c0c129e93f6a6112f5cbcac1dd17}{
virtual string {\bfseries str} () const =0}
\label{classRouteTable_a3147c0c129e93f6a6112f5cbcac1dd17}

\item 
\hypertarget{classRouteTable_a2e77d3bb63a6ad3af876d356122aca98}{
virtual void {\bfseries flush} ()}
\label{classRouteTable_a2e77d3bb63a6ad3af876d356122aca98}

\item 
\hypertarget{classRouteTable_a1f749cc86606b808ce110f2db386d27c}{
const string \& {\bfseries tablename} () const }
\label{classRouteTable_a1f749cc86606b808ce110f2db386d27c}

\item 
\hypertarget{classRouteTable_a0531568d5561c786cd2e61cf08673fa5}{
\hyperlink{classRouteTable}{RouteTable} $\ast$ {\bfseries next\_\-table} ()}
\label{classRouteTable_a0531568d5561c786cd2e61cf08673fa5}

\item 
\hypertarget{classRouteTable_a6bd93f2cce757d1cc4fbd64efe77937e}{
const \hyperlink{classRouteTable}{RouteTable} $\ast$ {\bfseries next\_\-table} () const }
\label{classRouteTable_a6bd93f2cce757d1cc4fbd64efe77937e}

\item 
\hypertarget{classRouteTable_a44f9d8b201afeec184cc61ca162ffc54}{
virtual void {\bfseries replace\_\-policytags} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ \&route, const \hyperlink{classPolicyTags}{PolicyTags} \&prevtags, \hyperlink{classRouteTable}{RouteTable} $\ast$caller)}
\label{classRouteTable_a44f9d8b201afeec184cc61ca162ffc54}

\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classRouteTable_a34775e8d1fea28ab6f88329acecbfb75}{
void {\bfseries set\_\-tablename} (const string \&s)}
\label{classRouteTable_a34775e8d1fea28ab6f88329acecbfb75}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classRouteTable_a522bb9bdf242d98f3b72c8ac037c3c46}{
string {\bfseries \_\-tablename}}
\label{classRouteTable_a522bb9bdf242d98f3b72c8ac037c3c46}

\item 
\hypertarget{classRouteTable_a8141bd9316fa4a3c225ec0ab792693cc}{
\hyperlink{classRouteTable}{RouteTable} $\ast$ {\bfseries \_\-next\_\-table}}
\label{classRouteTable_a8141bd9316fa4a3c225ec0ab792693cc}

\end{DoxyCompactItemize}


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

Base class for a routing table. This is \hyperlink{protocolthe-p}{the} base class for a routing table. A \hyperlink{classRIB}{RIB} consists of a tree of RouteTables that take routes from routing protocols and merge them together so that routes that emerge from \hyperlink{protocolthe-p}{the} last table are \hyperlink{protocolthe-p}{the} best routes available, and have nexthop information that is for an immediate neighbor of this router. See \hyperlink{protocolthe-p}{the} \hyperlink{classRIB}{RIB} design document for an overview of how \hyperlink{classRouteTable}{RouteTable} are plumbed together to form a \hyperlink{classRIB}{RIB}.

All RouteTables that form \hyperlink{protocolthe-p}{the} \hyperlink{classRIB}{RIB} are derived from this base class.

RouteTables take routing changes in from one or more parents, and pass on those changes to \hyperlink{protocolthe-p}{the} \_\-next\_\-table if \hyperlink{protocolthe-p}{the} change is for \hyperlink{protocolthe-p}{the} best of \hyperlink{protocolthe-p}{the} alternative routes.

RouteTables take route lookup requests from their \_\-next\_\-table, and pass on those requests to their parents. If more than one parent has a response, only \hyperlink{protocolthe-p}{the} best is returned as \hyperlink{protocolthe-p}{the} answer.

Note: A = \hyperlink{structAddress}{Address} Type, e.g., \hyperlink{classIPv4}{IPv4} or \hyperlink{classIPv6}{IPv6}. 

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