\hypertarget{classPolicyRedistTable}{
\section{PolicyRedistTable$<$ A $>$ Class Template Reference}
\label{classPolicyRedistTable}\index{PolicyRedistTable@{PolicyRedistTable}}
}


This table redistributes routes to protocols according to policytags.  




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

Inheritance diagram for PolicyRedistTable$<$ A $>$:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classPolicyRedistTable}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classPolicyRedistTable_aacc91120e3157966db3876f3b118aea9}{
{\bfseries PolicyRedistTable} (\hyperlink{classRouteTable}{RouteTable}$<$ A $>$ $\ast$parent, \hyperlink{classXrlRouter}{XrlRouter} \&rtr, \hyperlink{classPolicyRedistMap}{PolicyRedistMap} \&, bool multicast)}
\label{classPolicyRedistTable_aacc91120e3157966db3876f3b118aea9}

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

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

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

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

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

\item 
\hypertarget{classPolicyRedistTable_afeff29f7f3a318cbe0187379add20bef}{
TableType {\bfseries type} () const }
\label{classPolicyRedistTable_afeff29f7f3a318cbe0187379add20bef}

\item 
\hypertarget{classPolicyRedistTable_a0f03db99e7501b7fa9636f912063c0d0}{
\hyperlink{classRouteTable}{RouteTable}$<$ A $>$ $\ast$ {\bfseries parent} ()}
\label{classPolicyRedistTable_a0f03db99e7501b7fa9636f912063c0d0}

\item 
\hypertarget{classPolicyRedistTable_afd09df5c19187fb3ac6671860a217d3d}{
void {\bfseries replumb} (\hyperlink{classRouteTable}{RouteTable}$<$ A $>$ $\ast$old\_\-parent, \hyperlink{classRouteTable}{RouteTable}$<$ A $>$ $\ast$new\_\-parent)}
\label{classPolicyRedistTable_afd09df5c19187fb3ac6671860a217d3d}

\item 
\hypertarget{classPolicyRedistTable_a01eef63316ca2102cecda876cbbaf2ea}{
string {\bfseries str} () const }
\label{classPolicyRedistTable_a01eef63316ca2102cecda876cbbaf2ea}

\item 
\hypertarget{classPolicyRedistTable_a4fa5224deba365bf7d60438d209ea8a7}{
void {\bfseries xrl\_\-cb} (const \hyperlink{classXrlError}{XrlError} \&, string)}
\label{classPolicyRedistTable_a4fa5224deba365bf7d60438d209ea8a7}

\item 
void \hyperlink{classPolicyRedistTable_a4796301c962425316215d41937eecba9}{replace\_\-policytags} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ \&route, const \hyperlink{classPolicyTags}{PolicyTags} \&prevtags, \hyperlink{classRouteTable}{RouteTable}$<$ A $>$ $\ast$caller)
\begin{DoxyCompactList}\small\item\em If policy-\/tags of a route changed, this table will need to figure out which protocol should stop advertising a route, and which protocol should continue or start. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Static Public Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classPolicyRedistTable_a68337d093f79e294845b1db74911760e}{
static const string {\bfseries table\_\-name} = \char`\"{}policy-\/redist-\/table\char`\"{}}
\label{classPolicyRedistTable_a68337d093f79e294845b1db74911760e}

\end{DoxyCompactItemize}
\subsection*{Private Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classPolicyRedistTable_af50323379d37a3f1292626bdd7133ba2}{
typedef set$<$ string $>$ {\bfseries Set}}
\label{classPolicyRedistTable_af50323379d37a3f1292626bdd7133ba2}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{classPolicyRedistTable_aa9e59cc3dab81686f8013ec7187dd7a6}{add\_\-redist} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ \&route, const Set \&protos)
\begin{DoxyCompactList}\small\item\em Start a redistribution of a route. \item\end{DoxyCompactList}\item 
void \hyperlink{classPolicyRedistTable_a9f26e92706698645dcefd45479fcecb6}{del\_\-redist} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ \&route, const Set \&protos)
\begin{DoxyCompactList}\small\item\em End a route redistribution. \item\end{DoxyCompactList}\item 
void \hyperlink{classPolicyRedistTable_abbee3abb0da7d4db0e61cc9d18e1ae8a}{add\_\-redist} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ \&route, const string \&proto)
\begin{DoxyCompactList}\small\item\em Start a route redistribution. \item\end{DoxyCompactList}\item 
void \hyperlink{classPolicyRedistTable_a6c06182edc6546e9607edb0a6f7c65ff}{del\_\-redist} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ A $>$ \&route, const string \&proto)
\begin{DoxyCompactList}\small\item\em End a route redistribution. \item\end{DoxyCompactList}\item 
\hypertarget{classPolicyRedistTable_a6c97e9edc6458904b74a7a38630a9da4}{
{\footnotesize template$<$$>$ }\\void {\bfseries add\_\-redist} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ \hyperlink{classIPv6}{IPv6} $>$ \&route, const string \&proto)}
\label{classPolicyRedistTable_a6c97e9edc6458904b74a7a38630a9da4}

\item 
\hypertarget{classPolicyRedistTable_accc3263196ac2552f0e9d0f31bd78870}{
{\footnotesize template$<$$>$ }\\void {\bfseries del\_\-redist} (const \hyperlink{classIPRouteEntry}{IPRouteEntry}$<$ \hyperlink{classIPv6}{IPv6} $>$ \&route, const string \&proto)}
\label{classPolicyRedistTable_accc3263196ac2552f0e9d0f31bd78870}

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

\item 
\hypertarget{classPolicyRedistTable_a0e02afb1817171893e5f3eff5c56f8cd}{
\hyperlink{classXrlRouter}{XrlRouter} \& {\bfseries \_\-xrl\_\-router}}
\label{classPolicyRedistTable_a0e02afb1817171893e5f3eff5c56f8cd}

\item 
\hypertarget{classPolicyRedistTable_a48a9c0f62b0d3cdd7576e3a2ed343999}{
\hyperlink{classEventLoop}{EventLoop} \& {\bfseries \_\-eventloop}}
\label{classPolicyRedistTable_a48a9c0f62b0d3cdd7576e3a2ed343999}

\item 
\hypertarget{classPolicyRedistTable_a80964524e53d8306643eea944a9f855b}{
\hyperlink{classPolicyRedistMap}{PolicyRedistMap} \& {\bfseries \_\-redist\_\-map}}
\label{classPolicyRedistTable_a80964524e53d8306643eea944a9f855b}

\item 
\hypertarget{classPolicyRedistTable_a21d0b7b98e29f21184026768c57f8c6b}{
\hyperlink{classXrlPolicyRedist4V0p1Client}{XrlPolicyRedist4V0p1Client} {\bfseries \_\-redist4\_\-client}}
\label{classPolicyRedistTable_a21d0b7b98e29f21184026768c57f8c6b}

\item 
\hypertarget{classPolicyRedistTable_a553603d39e4b5349cae9ad73c9e0a8af}{
\hyperlink{classXrlPolicyRedist6V0p1Client}{XrlPolicyRedist6V0p1Client} {\bfseries \_\-redist6\_\-client}}
\label{classPolicyRedistTable_a553603d39e4b5349cae9ad73c9e0a8af}

\item 
\hypertarget{classPolicyRedistTable_a9dc6ceb0e1b79c0040c5106ee0e5a6ae}{
bool {\bfseries \_\-multicast}}
\label{classPolicyRedistTable_a9dc6ceb0e1b79c0040c5106ee0e5a6ae}

\end{DoxyCompactItemize}


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

This table redistributes routes to protocols according to policytags. Based on \hyperlink{protocolthe-p}{the} policy-\/tags in a route, this table will request a protocol to start or end a redistribution of a route, depending whether \hyperlink{protocolthe-p}{the} route is being added or deleted. 

\subsection{Member Function Documentation}
\hypertarget{classPolicyRedistTable_aa9e59cc3dab81686f8013ec7187dd7a6}{
\index{PolicyRedistTable@{PolicyRedistTable}!add\_\-redist@{add\_\-redist}}
\index{add\_\-redist@{add\_\-redist}!PolicyRedistTable@{PolicyRedistTable}}
\subsubsection[{add\_\-redist}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A$>$ void {\bf PolicyRedistTable}$<$ A $>$::add\_\-redist (
\begin{DoxyParamCaption}
\item[{const {\bf IPRouteEntry}$<$ A $>$ \&}]{route, }
\item[{const Set \&}]{protos}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPolicyRedistTable_aa9e59cc3dab81686f8013ec7187dd7a6}


Start a redistribution of a route. 


\begin{DoxyParams}{Parameters}
{\em route} & route to redistribute. \\
\hline
{\em protos} & \hyperlink{protocolthe-p}{the} set of protocols which should do \hyperlink{protocolthe-p}{the} redistribution. \\
\hline
\end{DoxyParams}
\hypertarget{classPolicyRedistTable_abbee3abb0da7d4db0e61cc9d18e1ae8a}{
\index{PolicyRedistTable@{PolicyRedistTable}!add\_\-redist@{add\_\-redist}}
\index{add\_\-redist@{add\_\-redist}!PolicyRedistTable@{PolicyRedistTable}}
\subsubsection[{add\_\-redist}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A$>$ void {\bf PolicyRedistTable}$<$ A $>$::add\_\-redist (
\begin{DoxyParamCaption}
\item[{const {\bf IPRouteEntry}$<$ A $>$ \&}]{route, }
\item[{const string \&}]{proto}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPolicyRedistTable_abbee3abb0da7d4db0e61cc9d18e1ae8a}


Start a route redistribution. 


\begin{DoxyParams}{Parameters}
{\em route} & route to be redistributed. \\
\hline
{\em proto} & protocol which should advertise route. \\
\hline
\end{DoxyParams}
\hypertarget{classPolicyRedistTable_a9f26e92706698645dcefd45479fcecb6}{
\index{PolicyRedistTable@{PolicyRedistTable}!del\_\-redist@{del\_\-redist}}
\index{del\_\-redist@{del\_\-redist}!PolicyRedistTable@{PolicyRedistTable}}
\subsubsection[{del\_\-redist}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A$>$ void {\bf PolicyRedistTable}$<$ A $>$::del\_\-redist (
\begin{DoxyParamCaption}
\item[{const {\bf IPRouteEntry}$<$ A $>$ \&}]{route, }
\item[{const Set \&}]{protos}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPolicyRedistTable_a9f26e92706698645dcefd45479fcecb6}


End a route redistribution. 


\begin{DoxyParams}{Parameters}
{\em route} & \hyperlink{protocolthe-p}{the} route which should no longer be redistributed. \\
\hline
{\em protos} & \hyperlink{protocolthe-p}{the} protocols which should stop advertising \hyperlink{protocolthe-p}{the} route. \\
\hline
\end{DoxyParams}
\hypertarget{classPolicyRedistTable_a6c06182edc6546e9607edb0a6f7c65ff}{
\index{PolicyRedistTable@{PolicyRedistTable}!del\_\-redist@{del\_\-redist}}
\index{del\_\-redist@{del\_\-redist}!PolicyRedistTable@{PolicyRedistTable}}
\subsubsection[{del\_\-redist}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A$>$ void {\bf PolicyRedistTable}$<$ A $>$::del\_\-redist (
\begin{DoxyParamCaption}
\item[{const {\bf IPRouteEntry}$<$ A $>$ \&}]{route, }
\item[{const string \&}]{proto}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPolicyRedistTable_a6c06182edc6546e9607edb0a6f7c65ff}


End a route redistribution. 


\begin{DoxyParams}{Parameters}
{\em route} & route which should no longer be redistributed. \\
\hline
{\em proto} & protocol which should stop advertising \hyperlink{protocolthe-p}{the} route. \\
\hline
\end{DoxyParams}
\hypertarget{classPolicyRedistTable_a4796301c962425316215d41937eecba9}{
\index{PolicyRedistTable@{PolicyRedistTable}!replace\_\-policytags@{replace\_\-policytags}}
\index{replace\_\-policytags@{replace\_\-policytags}!PolicyRedistTable@{PolicyRedistTable}}
\subsubsection[{replace\_\-policytags}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A$>$ void {\bf PolicyRedistTable}$<$ A $>$::replace\_\-policytags (
\begin{DoxyParamCaption}
\item[{const {\bf IPRouteEntry}$<$ A $>$ \&}]{route, }
\item[{const {\bf PolicyTags} \&}]{prevtags, }
\item[{{\bf RouteTable}$<$ A $>$ $\ast$}]{caller}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classPolicyRedistTable_a4796301c962425316215d41937eecba9}


If policy-\/tags of a route changed, this table will need to figure out which protocol should stop advertising a route, and which protocol should continue or start. 


\begin{DoxyParams}{Parameters}
{\em route} & \hyperlink{protocolthe-p}{the} route with its new policy tags. \\
\hline
{\em prevtags} & \hyperlink{protocolthe-p}{the} previous policytags of \hyperlink{protocolthe-p}{the} route. \\
\hline
{\em caller} & \hyperlink{protocolthe-p}{the} table which invoked this method. \\
\hline
\end{DoxyParams}


Reimplemented from \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\_\-pol\_\-redist.hh\item 
/home/greearb/git/xorp.ct.github/xorp/rib/rt\_\-tab\_\-pol\_\-redist.cc\end{DoxyCompactItemize}
