\hypertarget{classRouteDB}{
\section{RouteDB$<$ A $>$ Class Template Reference}
\label{classRouteDB}\index{RouteDB@{RouteDB}}
}


Class that manages routes.  




{\ttfamily \#include $<$route\_\-db.hh$>$}

Inheritance diagram for RouteDB$<$ A $>$:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classRouteDB}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classRouteDB_a3f0fad7cce04386d686defd45ec9bc2b}{
typedef A {\bfseries Addr}}
\label{classRouteDB_a3f0fad7cce04386d686defd45ec9bc2b}

\item 
\hypertarget{classRouteDB_a35477732efa2b5a5fadc0d0539b2b808}{
typedef \hyperlink{classIPNet}{IPNet}$<$ A $>$ {\bfseries Net}}
\label{classRouteDB_a35477732efa2b5a5fadc0d0539b2b808}

\item 
\hypertarget{classRouteDB_af77016bccc1ae53d155260cb1d2aa47b}{
typedef \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ {\bfseries Route}}
\label{classRouteDB_af77016bccc1ae53d155260cb1d2aa47b}

\item 
\hypertarget{classRouteDB_a84cf049c628a6cc8905e68058a31e962}{
typedef \hyperlink{classRouteEntryOrigin}{RouteEntryOrigin}$<$ A $>$ {\bfseries RouteOrigin}}
\label{classRouteDB_a84cf049c628a6cc8905e68058a31e962}

\item 
\hypertarget{classRouteDB_a7f36c7af0e0700a9db712b33a8fe47ea}{
typedef \hyperlink{classRouteEntryRef}{RouteEntryRef}$<$ A $>$ {\bfseries DBRouteEntry}}
\label{classRouteDB_a7f36c7af0e0700a9db712b33a8fe47ea}

\item 
\hypertarget{classRouteDB_adb71b98b6122d5f6feab86856c6e4a68}{
typedef \hyperlink{classRouteEntryRef}{RouteEntryRef}$<$ A $>$ {\bfseries ConstDBRouteEntry}}
\label{classRouteDB_adb71b98b6122d5f6feab86856c6e4a68}

\item 
\hypertarget{classRouteDB_a58ec95a889271e418819adb8728e0c09}{
typedef \hyperlink{classPacketRouteEntry}{PacketRouteEntry}$<$ A $>$ {\bfseries PacketizedRoute}}
\label{classRouteDB_a58ec95a889271e418819adb8728e0c09}

\item 
\hypertarget{classRouteDB_a12e40ea2ebb04b4f624faed16ffdf335}{
typedef map$<$ \hyperlink{classIPNet}{Net}, \hyperlink{classRouteEntryRef}{DBRouteEntry}, \hyperlink{structNetCmp}{NetCmp}$<$ A $>$ $>$ {\bfseries RouteContainer}}
\label{classRouteDB_a12e40ea2ebb04b4f624faed16ffdf335}

\item 
\hypertarget{classRouteDB_a8ef3213ad636fbd1f60c6a25bdc94c81}{
typedef map$<$ \hyperlink{classIPNet}{Net}, \hyperlink{classRouteEntry}{Route} $\ast$, \hyperlink{structNetCmp}{NetCmp}$<$ A $>$ $>$ {\bfseries RouteContainerNoRef}}
\label{classRouteDB_a8ef3213ad636fbd1f60c6a25bdc94c81}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classRouteDB_ae7f6dbf264dc84937fa8d11d5d335441}{
{\bfseries RouteDB} (\hyperlink{classEventLoop}{EventLoop} \&e, \hyperlink{classPolicyFilters}{PolicyFilters} \&pfs)}
\label{classRouteDB_ae7f6dbf264dc84937fa8d11d5d335441}

\item 
bool \hyperlink{classRouteDB_a87ca17a1086506c258cf8c4a9b53dce7}{insert\_\-peer} (\hyperlink{classPeer}{Peer}$<$ A $>$ $\ast$peer)
\begin{DoxyCompactList}\small\item\em Insert a peer to \hyperlink{protocolthe-p}{the} database. \item\end{DoxyCompactList}\item 
bool \hyperlink{classRouteDB_aa16badd6989d0ee16a14942f9edade91}{erase\_\-peer} (\hyperlink{classPeer}{Peer}$<$ A $>$ $\ast$peer)
\begin{DoxyCompactList}\small\item\em Erase a peer from \hyperlink{protocolthe-p}{the} database. \item\end{DoxyCompactList}\item 
bool \hyperlink{classRouteDB_aaa86f7931b091fb59cf132553fbcf9fd}{update\_\-route} (const \hyperlink{classIPNet}{Net} \&net, const Addr \&nexthop, const string \&ifname, const string \&vifname, uint32\_\-t cost, uint32\_\-t tag, \hyperlink{classRouteEntryOrigin}{RouteOrigin} $\ast$origin, const \hyperlink{classPolicyTags}{PolicyTags} \&policytags, bool is\_\-policy\_\-push)
\begin{DoxyCompactList}\small\item\em Update \hyperlink{classRoute}{Route} Entry in database for specified route. \item\end{DoxyCompactList}\item 
void \hyperlink{classRouteDB_a997264e11dc53785b2eeab2d8ce55921}{add\_\-rib\_\-route} (const \hyperlink{classIPNet}{Net} \&net, const Addr \&nexthop, const string \&ifname, const string \&vifname, uint32\_\-t cost, uint32\_\-t tag, \hyperlink{classRouteEntryOrigin}{RouteOrigin} $\ast$origin, const \hyperlink{classPolicyTags}{PolicyTags} \&policytags)
\begin{DoxyCompactList}\small\item\em A copy of \hyperlink{classRIB}{RIB} routes need to be kept, as they are not advertised periodically. \item\end{DoxyCompactList}\item 
void \hyperlink{classRouteDB_affe5ac6eb44550ab1f764507daaaab6c}{delete\_\-rib\_\-route} (const \hyperlink{classIPNet}{Net} \&net)
\begin{DoxyCompactList}\small\item\em Permanently delete a \hyperlink{classRIB}{RIB} route. \item\end{DoxyCompactList}\item 
void \hyperlink{classRouteDB_afbbc7e540a00542d0e9075c2f82a6392}{dump\_\-routes} (vector$<$ \hyperlink{classRouteEntryRef}{ConstDBRouteEntry} $>$ \&routes)
\begin{DoxyCompactList}\small\item\em Flatten route entry collection into a Vector. \item\end{DoxyCompactList}\item 
\hypertarget{classRouteDB_a04d38a7d4071e53dc180f4f2f9cfe057}{
void \hyperlink{classRouteDB_a04d38a7d4071e53dc180f4f2f9cfe057}{flush\_\-routes} ()}
\label{classRouteDB_a04d38a7d4071e53dc180f4f2f9cfe057}

\begin{DoxyCompactList}\small\item\em Flush routes. \item\end{DoxyCompactList}\item 
uint32\_\-t \hyperlink{classRouteDB_a53bbdf5046e006eb17616dafa44beee2}{route\_\-count} () const 
\item 
const \hyperlink{classRouteEntry}{Route} $\ast$ \hyperlink{classRouteDB_a95cfdbe1808e05282b810ec10735d220}{find\_\-route} (const \hyperlink{classIPNet}{Net} \&n) const 
\item 
\hyperlink{classUpdateQueue}{UpdateQueue}$<$ A $>$ \& \hyperlink{classRouteDB_ac7cdd49ef48b457114156149dd8b76ef}{update\_\-queue} ()
\begin{DoxyCompactList}\small\item\em Accessor. \item\end{DoxyCompactList}\item 
const \hyperlink{classUpdateQueue}{UpdateQueue}$<$ A $>$ \& \hyperlink{classRouteDB_aa2a09d987e8c3a61258cc838106252e6}{update\_\-queue} () const 
\begin{DoxyCompactList}\small\item\em Accessor. \item\end{DoxyCompactList}\item 
\hypertarget{classRouteDB_a018a8a0c6cea05116fef67a50b273cb7}{
\hyperlink{classEventLoop}{EventLoop} \& {\bfseries eventloop} ()}
\label{classRouteDB_a018a8a0c6cea05116fef67a50b273cb7}

\item 
\hypertarget{classRouteDB_acbf3b5023af0a9497bd8e14dad6010df}{
void \hyperlink{classRouteDB_acbf3b5023af0a9497bd8e14dad6010df}{push\_\-routes} ()}
\label{classRouteDB_acbf3b5023af0a9497bd8e14dad6010df}

\begin{DoxyCompactList}\small\item\em \hyperlink{classPush}{Push} routes through policy filters for re-\/filtering. \item\end{DoxyCompactList}\item 
bool \hyperlink{classRouteDB_a36e30296824c47c666e1779355d98f1f}{do\_\-filtering} (\hyperlink{classRouteEntry}{Route} $\ast$r)
\begin{DoxyCompactList}\small\item\em Do policy filtering. \item\end{DoxyCompactList}\item 
\hypertarget{classRouteDB_ad3b04cd4ef98491f62e44dbc2ca7c5c1}{
\hyperlink{structTrace}{Trace} \& {\bfseries trace} ()}
\label{classRouteDB_ad3b04cd4ef98491f62e44dbc2ca7c5c1}

\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classRouteDB_ab6a7c02fa9631ca2766783177f062940}{
void {\bfseries expire\_\-route} (\hyperlink{classRouteEntry}{Route} $\ast$r)}
\label{classRouteDB_ab6a7c02fa9631ca2766783177f062940}

\item 
\hypertarget{classRouteDB_a35e9fa0f014bfa4a5e2e1ba57fee1d41}{
void {\bfseries set\_\-expiry\_\-timer} (\hyperlink{classRouteEntry}{Route} $\ast$r)}
\label{classRouteDB_a35e9fa0f014bfa4a5e2e1ba57fee1d41}

\item 
\hypertarget{classRouteDB_a6c25aac8384cbac5aed9609bd9ca2434}{
void {\bfseries delete\_\-route} (\hyperlink{classRouteEntry}{Route} $\ast$r)}
\label{classRouteDB_a6c25aac8384cbac5aed9609bd9ca2434}

\item 
\hypertarget{classRouteDB_a6acb578eaaa8229e68d47eb2264f84d9}{
void {\bfseries set\_\-deletion\_\-timer} (\hyperlink{classRouteEntry}{Route} $\ast$r)}
\label{classRouteDB_a6acb578eaaa8229e68d47eb2264f84d9}

\item 
\hypertarget{classRouteDB_ac52755438a7853d5e8edc71b5fa0f4dd}{
RouteContainer \& {\bfseries routes} ()}
\label{classRouteDB_ac52755438a7853d5e8edc71b5fa0f4dd}

\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classRouteDB_ae9f166b6863930ca4806ce4424d4b17e}{
\hyperlink{classEventLoop}{EventLoop} \& {\bfseries \_\-eventloop}}
\label{classRouteDB_ae9f166b6863930ca4806ce4424d4b17e}

\item 
\hypertarget{classRouteDB_a4d48c1a9fc620ac56f79e01f30fe10f5}{
RouteContainer {\bfseries \_\-routes}}
\label{classRouteDB_a4d48c1a9fc620ac56f79e01f30fe10f5}

\item 
\hypertarget{classRouteDB_af110791f8e991cf78bc3c50096d1c103}{
\hyperlink{classUpdateQueue}{UpdateQueue}$<$ A $>$ $\ast$ {\bfseries \_\-uq}}
\label{classRouteDB_af110791f8e991cf78bc3c50096d1c103}

\item 
\hypertarget{classRouteDB_a10e34b0acadb46c78c772467e5d1d757}{
\hyperlink{classPolicyFilters}{PolicyFilters} \& {\bfseries \_\-policy\_\-filters}}
\label{classRouteDB_a10e34b0acadb46c78c772467e5d1d757}

\item 
\hypertarget{classRouteDB_a7d79cbf37ebe12ff47b495caf1251d33}{
set$<$ \hyperlink{classPeer}{Peer}$<$ A $>$ $\ast$ $>$ {\bfseries \_\-peers}}
\label{classRouteDB_a7d79cbf37ebe12ff47b495caf1251d33}

\item 
\hypertarget{classRouteDB_a805bcb95dbc6b95c688f2bfe42fcde3e}{
RouteContainerNoRef {\bfseries \_\-rib\_\-routes}}
\label{classRouteDB_a805bcb95dbc6b95c688f2bfe42fcde3e}

\item 
\hypertarget{classRouteDB_adc914fdb8ec95a988d038ad1a6fbba43}{
\hyperlink{classRouteEntryOrigin}{RouteOrigin} $\ast$ {\bfseries \_\-rib\_\-origin}}
\label{classRouteDB_adc914fdb8ec95a988d038ad1a6fbba43}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classRouteDB_a5d78747580e5d609cc44659980ed8596}{
\hyperlink{structTrace}{Trace} {\bfseries \_\-trace}}
\label{classRouteDB_a5d78747580e5d609cc44659980ed8596}

\end{DoxyCompactItemize}
\subsection*{Friends}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classRouteDB_a2de8eae0640f6f44cfab60427cfc3b93}{
class \hyperlink{classRouteDB_a2de8eae0640f6f44cfab60427cfc3b93}{RouteWalker$<$ A $>$}}
\label{classRouteDB_a2de8eae0640f6f44cfab60427cfc3b93}

\end{DoxyCompactItemize}


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

Class that manages routes. The \hyperlink{classRouteDB}{RouteDB} class holds routes and manages their updates. Successful updates are placed in \hyperlink{protocolthe-p}{the} update queue contained within \hyperlink{protocolthe-p}{the} \hyperlink{classRouteDB}{RouteDB} instance. The \hyperlink{classUpdateQueue}{UpdateQueue} is used for generating triggered update messages.

The \hyperlink{classRouteWalker}{RouteWalker} class provides a way to walk \hyperlink{protocolthe-p}{the} routes held. 

\subsection{Member Function Documentation}
\hypertarget{classRouteDB_a997264e11dc53785b2eeab2d8ce55921}{
\index{RouteDB@{RouteDB}!add\_\-rib\_\-route@{add\_\-rib\_\-route}}
\index{add\_\-rib\_\-route@{add\_\-rib\_\-route}!RouteDB@{RouteDB}}
\subsubsection[{add\_\-rib\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf RouteDB}$<$ A $>$::add\_\-rib\_\-route (
\begin{DoxyParamCaption}
\item[{const {\bf Net} \&}]{net, }
\item[{const Addr \&}]{nexthop, }
\item[{const string \&}]{ifname, }
\item[{const string \&}]{vifname, }
\item[{uint32\_\-t}]{cost, }
\item[{uint32\_\-t}]{tag, }
\item[{{\bf RouteOrigin} $\ast$}]{origin, }
\item[{const {\bf PolicyTags} \&}]{policytags}
\end{DoxyParamCaption}
)}}
\label{classRouteDB_a997264e11dc53785b2eeab2d8ce55921}


A copy of \hyperlink{classRIB}{RIB} routes need to be kept, as they are not advertised periodically. 

If a \hyperlink{classRIB}{RIB} route gets replaced with a better route from another peer, it will be lost. By storing \hyperlink{classRIB}{RIB} routes, it is possible to re-\/advertise \hyperlink{classRIB}{RIB} routes which have lost, but are now optimal.


\begin{DoxyParams}{Parameters}
{\em net} & network of \hyperlink{protocolthe-p}{the} route being added. \\
\hline
{\em nexthop} & \hyperlink{protocolthe-p}{the} corresponding nexthop address. \\
\hline
{\em ifname} & \hyperlink{protocolthe-p}{the} corresponding interface name toward \hyperlink{protocolthe-p}{the} destination. \\
\hline
{\em vifname} & \hyperlink{protocolthe-p}{the} corresponding vif name toward \hyperlink{protocolthe-p}{the} destination. \\
\hline
{\em cost} & \hyperlink{protocolthe-p}{the} corresponding metric value. \\
\hline
{\em \hyperlink{protocolthe-p}{the}} & corresponding route tag. \\
\hline
{\em origin} & \hyperlink{protocolthe-p}{the} route originator \mbox{[}\hyperlink{classRIB}{RIB} in this case\mbox{]}. \\
\hline
{\em policytags} & \hyperlink{protocolthe-p}{the} policytags of this route. \\
\hline
\end{DoxyParams}
\hypertarget{classRouteDB_affe5ac6eb44550ab1f764507daaaab6c}{
\index{RouteDB@{RouteDB}!delete\_\-rib\_\-route@{delete\_\-rib\_\-route}}
\index{delete\_\-rib\_\-route@{delete\_\-rib\_\-route}!RouteDB@{RouteDB}}
\subsubsection[{delete\_\-rib\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf RouteDB}$<$ A $>$::delete\_\-rib\_\-route (
\begin{DoxyParamCaption}
\item[{const {\bf Net} \&}]{net}
\end{DoxyParamCaption}
)}}
\label{classRouteDB_affe5ac6eb44550ab1f764507daaaab6c}


Permanently delete a \hyperlink{classRIB}{RIB} route. 

This occurs if redistribution of this route ceased.


\begin{DoxyParams}{Parameters}
{\em net} & network of \hyperlink{protocolthe-p}{the} route being deleted. \\
\hline
\end{DoxyParams}
\hypertarget{classRouteDB_a36e30296824c47c666e1779355d98f1f}{
\index{RouteDB@{RouteDB}!do\_\-filtering@{do\_\-filtering}}
\index{do\_\-filtering@{do\_\-filtering}!RouteDB@{RouteDB}}
\subsubsection[{do\_\-filtering}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf RouteDB}$<$ A $>$::do\_\-filtering (
\begin{DoxyParamCaption}
\item[{{\bf Route} $\ast$}]{r}
\end{DoxyParamCaption}
)}}
\label{classRouteDB_a36e30296824c47c666e1779355d98f1f}


Do policy filtering. 


\begin{DoxyParams}{Parameters}
{\em r} & route to filter. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if route was accepted, false otherwise. 
\end{DoxyReturn}
\hypertarget{classRouteDB_afbbc7e540a00542d0e9075c2f82a6392}{
\index{RouteDB@{RouteDB}!dump\_\-routes@{dump\_\-routes}}
\index{dump\_\-routes@{dump\_\-routes}!RouteDB@{RouteDB}}
\subsubsection[{dump\_\-routes}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf RouteDB}$<$ A $>$::dump\_\-routes (
\begin{DoxyParamCaption}
\item[{vector$<$ {\bf ConstDBRouteEntry} $>$ \&}]{routes}
\end{DoxyParamCaption}
)}}
\label{classRouteDB_afbbc7e540a00542d0e9075c2f82a6392}


Flatten route entry collection into a Vector. 


\begin{DoxyParams}{Parameters}
{\em routes} & vector where routes are to be appended. \\
\hline
\end{DoxyParams}
\hypertarget{classRouteDB_aa16badd6989d0ee16a14942f9edade91}{
\index{RouteDB@{RouteDB}!erase\_\-peer@{erase\_\-peer}}
\index{erase\_\-peer@{erase\_\-peer}!RouteDB@{RouteDB}}
\subsubsection[{erase\_\-peer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf RouteDB}$<$ A $>$::erase\_\-peer (
\begin{DoxyParamCaption}
\item[{{\bf Peer}$<$ A $>$ $\ast$}]{peer}
\end{DoxyParamCaption}
)}}
\label{classRouteDB_aa16badd6989d0ee16a14942f9edade91}


Erase a peer from \hyperlink{protocolthe-p}{the} database. 


\begin{DoxyParams}{Parameters}
{\em peer} & \hyperlink{protocolthe-p}{the} peer to erase. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if this is an existing peer that was erased, otherwise false. 
\end{DoxyReturn}
\hypertarget{classRouteDB_a95cfdbe1808e05282b810ec10735d220}{
\index{RouteDB@{RouteDB}!find\_\-route@{find\_\-route}}
\index{find\_\-route@{find\_\-route}!RouteDB@{RouteDB}}
\subsubsection[{find\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ const {\bf Route}$\ast$ {\bf RouteDB}$<$ A $>$::find\_\-route (
\begin{DoxyParamCaption}
\item[{const {\bf Net} \&}]{n}
\end{DoxyParamCaption}
) const}}
\label{classRouteDB_a95cfdbe1808e05282b810ec10735d220}
\begin{DoxyReturn}{Returns}
pointer to route entry if it exists, 0 otherwise. 
\end{DoxyReturn}
\hypertarget{classRouteDB_a87ca17a1086506c258cf8c4a9b53dce7}{
\index{RouteDB@{RouteDB}!insert\_\-peer@{insert\_\-peer}}
\index{insert\_\-peer@{insert\_\-peer}!RouteDB@{RouteDB}}
\subsubsection[{insert\_\-peer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf RouteDB}$<$ A $>$::insert\_\-peer (
\begin{DoxyParamCaption}
\item[{{\bf Peer}$<$ A $>$ $\ast$}]{peer}
\end{DoxyParamCaption}
)}}
\label{classRouteDB_a87ca17a1086506c258cf8c4a9b53dce7}


Insert a peer to \hyperlink{protocolthe-p}{the} database. 


\begin{DoxyParams}{Parameters}
{\em peer} & \hyperlink{protocolthe-p}{the} peer to insert. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if this is a new peer, otherwise false. 
\end{DoxyReturn}
\hypertarget{classRouteDB_a53bbdf5046e006eb17616dafa44beee2}{
\index{RouteDB@{RouteDB}!route\_\-count@{route\_\-count}}
\index{route\_\-count@{route\_\-count}!RouteDB@{RouteDB}}
\subsubsection[{route\_\-count}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ uint32\_\-t {\bf RouteDB}$<$ A $>$::route\_\-count (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classRouteDB_a53bbdf5046e006eb17616dafa44beee2}
\begin{DoxyReturn}{Returns}
count of routes in database. 
\end{DoxyReturn}
\hypertarget{classRouteDB_aa2a09d987e8c3a61258cc838106252e6}{
\index{RouteDB@{RouteDB}!update\_\-queue@{update\_\-queue}}
\index{update\_\-queue@{update\_\-queue}!RouteDB@{RouteDB}}
\subsubsection[{update\_\-queue}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ const {\bf UpdateQueue}$<$ A $>$ \& {\bf RouteDB}$<$ A $>$::update\_\-queue (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classRouteDB_aa2a09d987e8c3a61258cc838106252e6}


Accessor. 

\begin{DoxyReturn}{Returns}
const reference to \hyperlink{classUpdateQueue}{UpdateQueue}. 
\end{DoxyReturn}
\hypertarget{classRouteDB_ac7cdd49ef48b457114156149dd8b76ef}{
\index{RouteDB@{RouteDB}!update\_\-queue@{update\_\-queue}}
\index{update\_\-queue@{update\_\-queue}!RouteDB@{RouteDB}}
\subsubsection[{update\_\-queue}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ {\bf UpdateQueue}$<$ A $>$ \& {\bf RouteDB}$<$ A $>$::update\_\-queue (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classRouteDB_ac7cdd49ef48b457114156149dd8b76ef}


Accessor. 

\begin{DoxyReturn}{Returns}
reference to \hyperlink{classUpdateQueue}{UpdateQueue}. 
\end{DoxyReturn}
\hypertarget{classRouteDB_aaa86f7931b091fb59cf132553fbcf9fd}{
\index{RouteDB@{RouteDB}!update\_\-route@{update\_\-route}}
\index{update\_\-route@{update\_\-route}!RouteDB@{RouteDB}}
\subsubsection[{update\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf RouteDB}$<$ A $>$::update\_\-route (
\begin{DoxyParamCaption}
\item[{const {\bf Net} \&}]{net, }
\item[{const Addr \&}]{nexthop, }
\item[{const string \&}]{ifname, }
\item[{const string \&}]{vifname, }
\item[{uint32\_\-t}]{cost, }
\item[{uint32\_\-t}]{tag, }
\item[{{\bf RouteOrigin} $\ast$}]{origin, }
\item[{const {\bf PolicyTags} \&}]{policytags, }
\item[{bool}]{is\_\-policy\_\-push}
\end{DoxyParamCaption}
)}}
\label{classRouteDB_aaa86f7931b091fb59cf132553fbcf9fd}


Update \hyperlink{classRoute}{Route} Entry in database for specified route. 

If \hyperlink{protocolthe-p}{the} route does not exist or \hyperlink{protocolthe-p}{the} values provided differ from \hyperlink{protocolthe-p}{the} existing route, then an update is placed in \hyperlink{protocolthe-p}{the} update queue.


\begin{DoxyParams}{Parameters}
{\em net} & \hyperlink{protocolthe-p}{the} network route being updated. \\
\hline
{\em nexthop} & \hyperlink{protocolthe-p}{the} corresponding nexthop address. \\
\hline
{\em ifname} & \hyperlink{protocolthe-p}{the} corresponding interface name toward \hyperlink{protocolthe-p}{the} destination. \\
\hline
{\em vifname} & \hyperlink{protocolthe-p}{the} corresponding vif name toward \hyperlink{protocolthe-p}{the} destination. \\
\hline
{\em cost} & \hyperlink{protocolthe-p}{the} corresponding metric value as received from \hyperlink{protocolthe-p}{the} route originator. \\
\hline
{\em tag} & \hyperlink{protocolthe-p}{the} corresponding route tag. \\
\hline
{\em origin} & \hyperlink{protocolthe-p}{the} route originator proposing update. \\
\hline
{\em policytags} & \hyperlink{protocolthe-p}{the} policytags of this route. \\
\hline
{\em is\_\-policy\_\-push} & if true, this route update is triggered by policy reconfiguration. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if an update occurs, false otherwise. 
\end{DoxyReturn}


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