\hypertarget{classResolvedIPRouteEntry}{
\section{ResolvedIPRouteEntry$<$ A $>$ Class Template Reference}
\label{classResolvedIPRouteEntry}\index{ResolvedIPRouteEntry@{ResolvedIPRouteEntry}}
}


Extended \hyperlink{classRouteEntry}{RouteEntry}, used by \hyperlink{classExtIntTable}{ExtIntTable}.  




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

Inheritance diagram for ResolvedIPRouteEntry$<$ A $>$:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=4.000000cm]{classResolvedIPRouteEntry}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classResolvedIPRouteEntry_a43db586284dc422fb9c8a2ec40edc177}{
typedef multimap$<$ const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$, \hyperlink{classResolvedIPRouteEntry}{ResolvedIPRouteEntry}$<$ A $>$ $\ast$ $>$ {\bfseries RouteBackLink}}
\label{classResolvedIPRouteEntry_a43db586284dc422fb9c8a2ec40edc177}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classResolvedIPRouteEntry_a696d1979f1800fad3aee21bdb6bba47b}{ResolvedIPRouteEntry} (const \hyperlink{classIPNet}{IPNet}$<$ A $>$ \&net, \hyperlink{classRibVif}{RibVif} $\ast$vif, \hyperlink{classNextHop}{NextHop} $\ast$nexthop, const \hyperlink{classProtocol}{Protocol} \&protocol, uint32\_\-t metric, const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$igp\_\-parent, const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$egp\_\-parent)
\begin{DoxyCompactList}\small\item\em Constructor for \hyperlink{classIPRouteEntry}{IPRouteEntry}. \item\end{DoxyCompactList}\item 
const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$ \hyperlink{classResolvedIPRouteEntry_a34181827e322ab81a41a4db9ad783a57}{igp\_\-parent} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} igp\_\-parent. \item\end{DoxyCompactList}\item 
const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$ \hyperlink{classResolvedIPRouteEntry_af016015cbfdc550a51f895c2700156f8}{egp\_\-parent} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} EGP parent. \item\end{DoxyCompactList}\item 
void \hyperlink{classResolvedIPRouteEntry_aa30f051746aab4da69aa8cf5dbd3b819}{set\_\-backlink} (typename RouteBackLink::iterator v)
\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} backlink. \item\end{DoxyCompactList}\item 
RouteBackLink::iterator \hyperlink{classResolvedIPRouteEntry_a3671693a27784d7798a5ee6bad7f03a0}{backlink} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} backlink. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classResolvedIPRouteEntry_a14edb43566770a85cf6e3bd3454fc5b1}{
const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$ {\bfseries \_\-igp\_\-parent}}
\label{classResolvedIPRouteEntry_a14edb43566770a85cf6e3bd3454fc5b1}

\item 
\hypertarget{classResolvedIPRouteEntry_a4818e5378cd96c06d134d7b326501b66}{
const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ $\ast$ {\bfseries \_\-egp\_\-parent}}
\label{classResolvedIPRouteEntry_a4818e5378cd96c06d134d7b326501b66}

\item 
\hypertarget{classResolvedIPRouteEntry_a351be0a404c076496d425687517a5240}{
RouteBackLink::iterator {\bfseries \_\-backlink}}
\label{classResolvedIPRouteEntry_a351be0a404c076496d425687517a5240}

\end{DoxyCompactItemize}


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

Extended \hyperlink{classRouteEntry}{RouteEntry}, used by \hyperlink{classExtIntTable}{ExtIntTable}. This class stored an extended routing table entry, for use in \hyperlink{classExtIntTable}{ExtIntTable}. When a route with a non-\/local nexthop arrives, \hyperlink{protocolthe-p}{the} \hyperlink{classExtIntTable}{ExtIntTable} attempts to discover a local nexthop by finding \hyperlink{protocolthe-p}{the} route that packets to \hyperlink{protocolthe-p}{the} non-\/local nexthop would use. This entry is used to store \hyperlink{protocolthe-p}{the} resulting route, with a local nexthop, and with links to \hyperlink{protocolthe-p}{the} parent routes that were used to provide \hyperlink{protocolthe-p}{the} information in this route entry.

This is a template class, where A is either a \hyperlink{protocolthe-p}{the} \hyperlink{classIPv4}{IPv4} class or \hyperlink{protocolthe-p}{the} \hyperlink{classIPv6}{IPv6} class. 

\subsection{Constructor \& Destructor Documentation}
\hypertarget{classResolvedIPRouteEntry_a696d1979f1800fad3aee21bdb6bba47b}{
\index{ResolvedIPRouteEntry@{ResolvedIPRouteEntry}!ResolvedIPRouteEntry@{ResolvedIPRouteEntry}}
\index{ResolvedIPRouteEntry@{ResolvedIPRouteEntry}!ResolvedIPRouteEntry@{ResolvedIPRouteEntry}}
\subsubsection[{ResolvedIPRouteEntry}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A$>$ {\bf ResolvedIPRouteEntry}$<$ A $>$::{\bf ResolvedIPRouteEntry} (
\begin{DoxyParamCaption}
\item[{const {\bf IPNet}$<$ A $>$ \&}]{net, }
\item[{{\bf RibVif} $\ast$}]{vif, }
\item[{{\bf NextHop} $\ast$}]{nexthop, }
\item[{const {\bf Protocol} \&}]{protocol, }
\item[{uint32\_\-t}]{metric, }
\item[{const {\bf IPRouteEntry}$<$ A $>$ $\ast$}]{igp\_\-parent, }
\item[{const {\bf IPRouteEntry}$<$ A $>$ $\ast$}]{egp\_\-parent}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classResolvedIPRouteEntry_a696d1979f1800fad3aee21bdb6bba47b}


Constructor for \hyperlink{classIPRouteEntry}{IPRouteEntry}. 


\begin{DoxyParams}{Parameters}
{\em net} & \hyperlink{protocolthe-p}{the} Subnet (address and mask) of \hyperlink{protocolthe-p}{the} routing table entry. \\
\hline
{\em vif} & \hyperlink{protocolthe-p}{the} Virtual Interface on which packets matching this routing table entry should be forwarded. \\
\hline
{\em nexthop} & \hyperlink{protocolthe-p}{the} \hyperlink{classNextHop}{NextHop} router to which packets matching this entry should be forwarded. This should be a local nexthop. \\
\hline
{\em protocol} & \hyperlink{protocolthe-p}{the} routing protocol that originated this route. \\
\hline
{\em metric} & \hyperlink{protocolthe-p}{the} routing protocol metric for this route. \\
\hline
{\em igp\_\-parent} & \hyperlink{protocolthe-p}{the} route entry used to resolve \hyperlink{protocolthe-p}{the} non-\/local nexthop in \hyperlink{protocolthe-p}{the} egp\_\-parent into a local nexthop. \\
\hline
{\em egp\_\-parent} & \hyperlink{protocolthe-p}{the} orginal route entry with a non-\/local nexthop. \\
\hline
\end{DoxyParams}


\subsection{Member Function Documentation}
\hypertarget{classResolvedIPRouteEntry_a3671693a27784d7798a5ee6bad7f03a0}{
\index{ResolvedIPRouteEntry@{ResolvedIPRouteEntry}!backlink@{backlink}}
\index{backlink@{backlink}!ResolvedIPRouteEntry@{ResolvedIPRouteEntry}}
\subsubsection[{backlink}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ {\bf ResolvedIPRouteEntry}$<$ A $>$::RouteBackLink::iterator {\bf ResolvedIPRouteEntry}$<$ A $>$::backlink (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classResolvedIPRouteEntry_a3671693a27784d7798a5ee6bad7f03a0}


Get \hyperlink{protocolthe-p}{the} backlink. 

\begin{DoxySeeAlso}{See also}
\hyperlink{classResolvedIPRouteEntry_aa30f051746aab4da69aa8cf5dbd3b819}{ResolvedIPRouteEntry$<$A$>$::set\_\-backlink}
\end{DoxySeeAlso}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} backlink iterator. 
\end{DoxyReturn}
\hypertarget{classResolvedIPRouteEntry_af016015cbfdc550a51f895c2700156f8}{
\index{ResolvedIPRouteEntry@{ResolvedIPRouteEntry}!egp\_\-parent@{egp\_\-parent}}
\index{egp\_\-parent@{egp\_\-parent}!ResolvedIPRouteEntry@{ResolvedIPRouteEntry}}
\subsubsection[{egp\_\-parent}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A$>$ const {\bf IPRouteEntry}$<$A$>$$\ast$ {\bf ResolvedIPRouteEntry}$<$ A $>$::egp\_\-parent (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classResolvedIPRouteEntry_af016015cbfdc550a51f895c2700156f8}


Get \hyperlink{protocolthe-p}{the} EGP parent. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} EGP parent, which is \hyperlink{protocolthe-p}{the} original route entry that had a non-\/local nexthop. 
\end{DoxyReturn}
\hypertarget{classResolvedIPRouteEntry_a34181827e322ab81a41a4db9ad783a57}{
\index{ResolvedIPRouteEntry@{ResolvedIPRouteEntry}!igp\_\-parent@{igp\_\-parent}}
\index{igp\_\-parent@{igp\_\-parent}!ResolvedIPRouteEntry@{ResolvedIPRouteEntry}}
\subsubsection[{igp\_\-parent}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A$>$ const {\bf IPRouteEntry}$<$A$>$$\ast$ {\bf ResolvedIPRouteEntry}$<$ A $>$::igp\_\-parent (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classResolvedIPRouteEntry_a34181827e322ab81a41a4db9ad783a57}


Get \hyperlink{protocolthe-p}{the} igp\_\-parent. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} IGP parent route entry that was used to resolve \hyperlink{protocolthe-p}{the} EGP parent route entry's non-\/local nexthop into a local nexthop. 
\end{DoxyReturn}
\hypertarget{classResolvedIPRouteEntry_aa30f051746aab4da69aa8cf5dbd3b819}{
\index{ResolvedIPRouteEntry@{ResolvedIPRouteEntry}!set\_\-backlink@{set\_\-backlink}}
\index{set\_\-backlink@{set\_\-backlink}!ResolvedIPRouteEntry@{ResolvedIPRouteEntry}}
\subsubsection[{set\_\-backlink}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf ResolvedIPRouteEntry}$<$ A $>$::set\_\-backlink (
\begin{DoxyParamCaption}
\item[{typename RouteBackLink::iterator}]{v}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classResolvedIPRouteEntry_aa30f051746aab4da69aa8cf5dbd3b819}


Set \hyperlink{protocolthe-p}{the} backlink. 

When a resolved route is created, \hyperlink{protocolthe-p}{the} \hyperlink{classExtIntTable}{ExtIntTable} will store a link to it in a multimap that is indexed by \hyperlink{protocolthe-p}{the} IGP parent. This will allow all \hyperlink{protocolthe-p}{the} routes affected by a change in \hyperlink{protocolthe-p}{the} IGP parent to be found easily. However, if \hyperlink{protocolthe-p}{the} EGP parent goes away, we need to remove \hyperlink{protocolthe-p}{the} links from this multimap, and \hyperlink{protocolthe-p}{the} backlink provides an iterator into \hyperlink{protocolthe-p}{the} multimap that makes this operation very efficient.


\begin{DoxyParams}{Parameters}
{\em backlink} & \hyperlink{protocolthe-p}{the} \hyperlink{classExtIntTable}{ExtIntTable} multimap iterator for this route. \\
\hline
\end{DoxyParams}


The documentation for this class was generated from the following file:\begin{DoxyCompactItemize}
\item 
/home/greearb/git/xorp.ct.github/xorp/rib/route.hh\end{DoxyCompactItemize}
