\hypertarget{classRoutingTable}{
\section{RoutingTable$<$ A $>$ Class Template Reference}
\label{classRoutingTable}\index{RoutingTable@{RoutingTable}}
}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classRoutingTable_a0039daba9f2ffa83287d31aafb1eab65}{
{\bfseries RoutingTable} (\hyperlink{classOspf}{Ospf}$<$ A $>$ \&ospf)}
\label{classRoutingTable_a0039daba9f2ffa83287d31aafb1eab65}

\item 
\hypertarget{classRoutingTable_a73f398948d26667dba27f69a35ce7cbd}{
void \hyperlink{classRoutingTable_a73f398948d26667dba27f69a35ce7cbd}{begin} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area)}
\label{classRoutingTable_a73f398948d26667dba27f69a35ce7cbd}

\begin{DoxyCompactList}\small\item\em Before \mbox{[}add$|$replace$|$delete\mbox{]}\_\-entry can be called, this method must be called to start \hyperlink{protocolthe-p}{the} transaction. \item\end{DoxyCompactList}\item 
\hypertarget{classRoutingTable_ad190caae67ee5228eecd82bdada6174f}{
bool {\bfseries add\_\-entry} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{classIPNet}{IPNet}$<$ A $>$ net, const \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&rt, const char $\ast$message)}
\label{classRoutingTable_ad190caae67ee5228eecd82bdada6174f}

\item 
\hypertarget{classRoutingTable_ae44df23535793241f764c501600ec1c7}{
bool {\bfseries replace\_\-entry} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{classIPNet}{IPNet}$<$ A $>$ net, const \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&rt)}
\label{classRoutingTable_ae44df23535793241f764c501600ec1c7}

\item 
\hypertarget{classRoutingTable_a30fd1a0150faa194b7d1678560183b5c}{
bool \hyperlink{classRoutingTable_a30fd1a0150faa194b7d1678560183b5c}{delete\_\-entry} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{classIPNet}{IPNet}$<$ A $>$ net)}
\label{classRoutingTable_a30fd1a0150faa194b7d1678560183b5c}

\begin{DoxyCompactList}\small\item\em Delete an entry from \hyperlink{protocolthe-p}{the} current table. \item\end{DoxyCompactList}\item 
\hypertarget{classRoutingTable_aa7c66e32cd6c0b375f86f2e713c6e127}{
void \hyperlink{classRoutingTable_aa7c66e32cd6c0b375f86f2e713c6e127}{end} ()}
\label{classRoutingTable_aa7c66e32cd6c0b375f86f2e713c6e127}

\begin{DoxyCompactList}\small\item\em For \hyperlink{protocolthe-p}{the} \mbox{[}add$|$replace$|$delete\mbox{]}\_\-entry calls to take effect this method must be called. \item\end{DoxyCompactList}\item 
bool \hyperlink{classRoutingTable_a2ae8d9fefd4a18a9ff9d9e78b7238f14}{lookup\_\-entry} (A router, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&rt)
\begin{DoxyCompactList}\small\item\em Lookup address A in \hyperlink{protocolthe-p}{the} routing table exact match. \item\end{DoxyCompactList}\item 
bool \hyperlink{classRoutingTable_a080a366b23223f5b1286768828797779}{lookup\_\-entry} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, A router, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&rt)
\begin{DoxyCompactList}\small\item\em Lookup address A in \hyperlink{protocolthe-p}{the} routing table exact match in specified area. \item\end{DoxyCompactList}\item 
bool \hyperlink{classRoutingTable_a7009dcf92d9ad18afebf45c57468a08f}{lookup\_\-entry} (\hyperlink{classIPNet}{IPNet}$<$ A $>$ net, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&rt)
\begin{DoxyCompactList}\small\item\em Lookup network in \hyperlink{protocolthe-p}{the} routing table exact match. \item\end{DoxyCompactList}\item 
bool \hyperlink{classRoutingTable_aab6f5e9f8b566fde53eb0ea25e077043}{lookup\_\-entry} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{classIPNet}{IPNet}$<$ A $>$ net, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&rt)
\begin{DoxyCompactList}\small\item\em Lookup network in \hyperlink{protocolthe-p}{the} routing table exact match. \item\end{DoxyCompactList}\item 
bool \hyperlink{classRoutingTable_acb0912785bfb043eb10748f3ac5a003b}{lookup\_\-entry\_\-by\_\-advertising\_\-router} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, uint32\_\-t adv, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&rt)
\begin{DoxyCompactList}\small\item\em Lookup advertising router in specific area. \item\end{DoxyCompactList}\item 
bool \hyperlink{classRoutingTable_aa05379cfd8cf79d5858f5a4f81126114}{longest\_\-match\_\-entry} (A router, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&rt)
\begin{DoxyCompactList}\small\item\em Lookup address A in \hyperlink{protocolthe-p}{the} routing table longest match. \item\end{DoxyCompactList}\item 
void \hyperlink{classRoutingTable_a967dc4cbea2fab4353b1fc5650ab9408}{remove\_\-area} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area)
\begin{DoxyCompactList}\small\item\em This call notifies \hyperlink{protocolthe-p}{the} routing table that this area no longer exists, therefore all routes that came from this area should be removed. \item\end{DoxyCompactList}\item 
\hypertarget{classRoutingTable_aeef93237c3eb4e02c47eeab9e56772cb}{
void \hyperlink{classRoutingTable_aeef93237c3eb4e02c47eeab9e56772cb}{push\_\-routes} ()}
\label{classRoutingTable_aeef93237c3eb4e02c47eeab9e56772cb}

\begin{DoxyCompactList}\small\item\em Re-\/run \hyperlink{protocolthe-p}{the} policy filters on all routes. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classRoutingTable_a13e575632af21015dfa6f068ce706444}{
bool {\bfseries add\_\-route} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{classIPNet}{IPNet}$<$ A $>$ net, A nexthop, uint32\_\-t metric, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&rt, bool summaries)}
\label{classRoutingTable_a13e575632af21015dfa6f068ce706444}

\item 
\hypertarget{classRoutingTable_a0654f6e9b06758b2f6b4e539e36fdabe}{
bool {\bfseries delete\_\-route} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{classIPNet}{IPNet}$<$ A $>$ net, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&rt, bool summaries)}
\label{classRoutingTable_a0654f6e9b06758b2f6b4e539e36fdabe}

\item 
\hypertarget{classRoutingTable_a83938e74dc4fae948e088e6c6baa683f}{
bool {\bfseries replace\_\-route} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{classIPNet}{IPNet}$<$ A $>$ net, A nexthop, uint32\_\-t metric, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&rt, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&previous\_\-rt, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} previous\_\-area)}
\label{classRoutingTable_a83938e74dc4fae948e088e6c6baa683f}

\item 
bool \hyperlink{classRoutingTable_afc26a4576c3f599d6d791c8cf991799f}{do\_\-filtering} (\hyperlink{classIPNet}{IPNet}$<$ A $>$ \&net, A \&nexthop, uint32\_\-t \&metric, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&rt, \hyperlink{classPolicyTags}{PolicyTags} \&policytags)
\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classRoutingTable_a0fff357b645c77dd399b011a69869077}{
\hyperlink{classOspf}{Ospf}$<$ A $>$ \& {\bfseries \_\-ospf}}
\label{classRoutingTable_a0fff357b645c77dd399b011a69869077}

\item 
\hypertarget{classRoutingTable_a2225196ce3a6af5d207ebe1ac6dcc6d2}{
bool {\bfseries \_\-in\_\-transaction}}
\label{classRoutingTable_a2225196ce3a6af5d207ebe1ac6dcc6d2}

\item 
\hypertarget{classRoutingTable_ac482f3b1aa1ba9fa8ea5f1be7ccaff89}{
\hyperlink{classAdv}{Adv}$<$ A $>$ {\bfseries \_\-adv}}
\label{classRoutingTable_ac482f3b1aa1ba9fa8ea5f1be7ccaff89}

\item 
\hypertarget{classRoutingTable_a24eda64818d88ae618f44b9caab3d799}{
\hyperlink{classTrie}{Trie}$<$ A, \hyperlink{classInternalRouteEntry}{InternalRouteEntry}$<$ A $>$ $>$ $\ast$ {\bfseries \_\-current}}
\label{classRoutingTable_a24eda64818d88ae618f44b9caab3d799}

\item 
\hypertarget{classRoutingTable_aadd3ced3892d426d6a6d63d8507e90c8}{
\hyperlink{classTrie}{Trie}$<$ A, \hyperlink{classInternalRouteEntry}{InternalRouteEntry}$<$ A $>$ $>$ $\ast$ {\bfseries \_\-previous}}
\label{classRoutingTable_aadd3ced3892d426d6a6d63d8507e90c8}

\end{DoxyCompactItemize}
\subsubsection*{template$<$typename A$>$ class RoutingTable$<$ A $>$}



\subsection{Member Function Documentation}
\hypertarget{classRoutingTable_afc26a4576c3f599d6d791c8cf991799f}{
\index{RoutingTable@{RoutingTable}!do\_\-filtering@{do\_\-filtering}}
\index{do\_\-filtering@{do\_\-filtering}!RoutingTable@{RoutingTable}}
\subsubsection[{do\_\-filtering}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf RoutingTable}$<$ A $>$::do\_\-filtering (
\begin{DoxyParamCaption}
\item[{{\bf IPNet}$<$ A $>$ \&}]{net, }
\item[{A \&}]{nexthop, }
\item[{uint32\_\-t \&}]{metric, }
\item[{{\bf RouteEntry}$<$ A $>$ \&}]{rt, }
\item[{{\bf PolicyTags} \&}]{policytags}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classRoutingTable_afc26a4576c3f599d6d791c8cf991799f}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} route should be accepted. 
\end{DoxyReturn}
\hypertarget{classRoutingTable_aa05379cfd8cf79d5858f5a4f81126114}{
\index{RoutingTable@{RoutingTable}!longest\_\-match\_\-entry@{longest\_\-match\_\-entry}}
\index{longest\_\-match\_\-entry@{longest\_\-match\_\-entry}!RoutingTable@{RoutingTable}}
\subsubsection[{longest\_\-match\_\-entry}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf RoutingTable}$<$ A $>$::longest\_\-match\_\-entry (
\begin{DoxyParamCaption}
\item[{A}]{router, }
\item[{{\bf RouteEntry}$<$ A $>$ \&}]{rt}
\end{DoxyParamCaption}
)}}
\label{classRoutingTable_aa05379cfd8cf79d5858f5a4f81126114}


Lookup address A in \hyperlink{protocolthe-p}{the} routing table longest match. 


\begin{DoxyParams}{Parameters}
{\em nexthop} & address to lookup. \\
\hline
{\em rt} & if a match is found fill this in.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if an entry is found. 
\end{DoxyReturn}
\hypertarget{classRoutingTable_a2ae8d9fefd4a18a9ff9d9e78b7238f14}{
\index{RoutingTable@{RoutingTable}!lookup\_\-entry@{lookup\_\-entry}}
\index{lookup\_\-entry@{lookup\_\-entry}!RoutingTable@{RoutingTable}}
\subsubsection[{lookup\_\-entry}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf RoutingTable}$<$ A $>$::lookup\_\-entry (
\begin{DoxyParamCaption}
\item[{A}]{router, }
\item[{{\bf RouteEntry}$<$ A $>$ \&}]{rt}
\end{DoxyParamCaption}
)}}
\label{classRoutingTable_a2ae8d9fefd4a18a9ff9d9e78b7238f14}


Lookup address A in \hyperlink{protocolthe-p}{the} routing table exact match. 


\begin{DoxyParams}{Parameters}
{\em router} & address being looked up. \\
\hline
{\em rt} & if a match is found fill this in.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if an entry is found. 
\end{DoxyReturn}
\hypertarget{classRoutingTable_aab6f5e9f8b566fde53eb0ea25e077043}{
\index{RoutingTable@{RoutingTable}!lookup\_\-entry@{lookup\_\-entry}}
\index{lookup\_\-entry@{lookup\_\-entry}!RoutingTable@{RoutingTable}}
\subsubsection[{lookup\_\-entry}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf RoutingTable}$<$ A $>$::lookup\_\-entry (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{{\bf IPNet}$<$ A $>$}]{net, }
\item[{{\bf RouteEntry}$<$ A $>$ \&}]{rt}
\end{DoxyParamCaption}
)}}
\label{classRoutingTable_aab6f5e9f8b566fde53eb0ea25e077043}


Lookup network in \hyperlink{protocolthe-p}{the} routing table exact match. 


\begin{DoxyParams}{Parameters}
{\em area} & area ID. \\
\hline
{\em network} & address being looked up. \\
\hline
{\em rt} & if a match is found fill this in.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if an entry is found. 
\end{DoxyReturn}
\hypertarget{classRoutingTable_a080a366b23223f5b1286768828797779}{
\index{RoutingTable@{RoutingTable}!lookup\_\-entry@{lookup\_\-entry}}
\index{lookup\_\-entry@{lookup\_\-entry}!RoutingTable@{RoutingTable}}
\subsubsection[{lookup\_\-entry}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf RoutingTable}$<$ A $>$::lookup\_\-entry (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{A}]{router, }
\item[{{\bf RouteEntry}$<$ A $>$ \&}]{rt}
\end{DoxyParamCaption}
)}}
\label{classRoutingTable_a080a366b23223f5b1286768828797779}


Lookup address A in \hyperlink{protocolthe-p}{the} routing table exact match in specified area. 


\begin{DoxyParams}{Parameters}
{\em area} & area ID. \\
\hline
{\em router} & address being looked up. \\
\hline
{\em rt} & if a match is found fill this in.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if an entry is found. 
\end{DoxyReturn}
\hypertarget{classRoutingTable_a7009dcf92d9ad18afebf45c57468a08f}{
\index{RoutingTable@{RoutingTable}!lookup\_\-entry@{lookup\_\-entry}}
\index{lookup\_\-entry@{lookup\_\-entry}!RoutingTable@{RoutingTable}}
\subsubsection[{lookup\_\-entry}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf RoutingTable}$<$ A $>$::lookup\_\-entry (
\begin{DoxyParamCaption}
\item[{{\bf IPNet}$<$ A $>$}]{net, }
\item[{{\bf RouteEntry}$<$ A $>$ \&}]{rt}
\end{DoxyParamCaption}
)}}
\label{classRoutingTable_a7009dcf92d9ad18afebf45c57468a08f}


Lookup network in \hyperlink{protocolthe-p}{the} routing table exact match. 


\begin{DoxyParams}{Parameters}
{\em network} & address being looked up. \\
\hline
{\em rt} & if a match is found fill this in.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if an entry is found. 
\end{DoxyReturn}
\hypertarget{classRoutingTable_acb0912785bfb043eb10748f3ac5a003b}{
\index{RoutingTable@{RoutingTable}!lookup\_\-entry\_\-by\_\-advertising\_\-router@{lookup\_\-entry\_\-by\_\-advertising\_\-router}}
\index{lookup\_\-entry\_\-by\_\-advertising\_\-router@{lookup\_\-entry\_\-by\_\-advertising\_\-router}!RoutingTable@{RoutingTable}}
\subsubsection[{lookup\_\-entry\_\-by\_\-advertising\_\-router}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf RoutingTable}$<$ A $>$::lookup\_\-entry\_\-by\_\-advertising\_\-router (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{uint32\_\-t}]{adv, }
\item[{{\bf RouteEntry}$<$ A $>$ \&}]{rt}
\end{DoxyParamCaption}
)}}
\label{classRoutingTable_acb0912785bfb043eb10748f3ac5a003b}


Lookup advertising router in specific area. 


\begin{DoxyParams}{Parameters}
{\em area} & area ID. \\
\hline
{\em adv} & advertsing router \\
\hline
{\em rt} & if a match is found fill this in.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if an entry is found. 
\end{DoxyReturn}
\hypertarget{classRoutingTable_a967dc4cbea2fab4353b1fc5650ab9408}{
\index{RoutingTable@{RoutingTable}!remove\_\-area@{remove\_\-area}}
\index{remove\_\-area@{remove\_\-area}!RoutingTable@{RoutingTable}}
\subsubsection[{remove\_\-area}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf RoutingTable}$<$ A $>$::remove\_\-area (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaID}}]{area}
\end{DoxyParamCaption}
)}}
\label{classRoutingTable_a967dc4cbea2fab4353b1fc5650ab9408}


This call notifies \hyperlink{protocolthe-p}{the} routing table that this area no longer exists, therefore all routes that came from this area should be removed. 

All other areas also need to be notified so that any summarisation information can be removed. 

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