\hypertarget{classBGPPlumbingAF}{
\section{BGPPlumbingAF$<$ A $>$ Class Template Reference}
\label{classBGPPlumbingAF}\index{BGPPlumbingAF@{BGPPlumbingAF}}
}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classBGPPlumbingAF_ad3923afe0a2c506d4e313a5b9b68196f}{
{\bfseries BGPPlumbingAF} (const string \&ribname, \hyperlink{classBGPPlumbing}{BGPPlumbing} \&master, \hyperlink{classNextHopResolver}{NextHopResolver}$<$ A $>$ \&next\_\-hop\_\-resolver)}
\label{classBGPPlumbingAF_ad3923afe0a2c506d4e313a5b9b68196f}

\item 
\hypertarget{classBGPPlumbingAF_a07994d999f0239f35f7bf021cfe51ea9}{
int {\bfseries add\_\-peering} (\hyperlink{classPeerHandler}{PeerHandler} $\ast$peer\_\-handler)}
\label{classBGPPlumbingAF_a07994d999f0239f35f7bf021cfe51ea9}

\item 
\hypertarget{classBGPPlumbingAF_a29db9ba7c112cb85148c8956d5f03fc5}{
int {\bfseries stop\_\-peering} (\hyperlink{classPeerHandler}{PeerHandler} $\ast$peer\_\-handler)}
\label{classBGPPlumbingAF_a29db9ba7c112cb85148c8956d5f03fc5}

\item 
\hypertarget{classBGPPlumbingAF_aa970b435a3500e004df6bfa87ce1846f}{
int {\bfseries peering\_\-went\_\-down} (\hyperlink{classPeerHandler}{PeerHandler} $\ast$peer\_\-handler)}
\label{classBGPPlumbingAF_aa970b435a3500e004df6bfa87ce1846f}

\item 
\hypertarget{classBGPPlumbingAF_a9e61bccead6bd7924bc08caa530f0dc3}{
int {\bfseries peering\_\-came\_\-up} (\hyperlink{classPeerHandler}{PeerHandler} $\ast$peer\_\-handler)}
\label{classBGPPlumbingAF_a9e61bccead6bd7924bc08caa530f0dc3}

\item 
\hypertarget{classBGPPlumbingAF_a2d212638ba9004d16983fe0a3205343c}{
int {\bfseries delete\_\-peering} (\hyperlink{classPeerHandler}{PeerHandler} $\ast$peer\_\-handler)}
\label{classBGPPlumbingAF_a2d212638ba9004d16983fe0a3205343c}

\item 
\hypertarget{classBGPPlumbingAF_a089c3f67ac5042f8ff981943d26ba775}{
void {\bfseries flush} (\hyperlink{classPeerHandler}{PeerHandler} $\ast$peer\_\-handler)}
\label{classBGPPlumbingAF_a089c3f67ac5042f8ff981943d26ba775}

\item 
\hypertarget{classBGPPlumbingAF_a436bb6ee195ab78b768fe0642bc01541}{
int {\bfseries add\_\-route} (const \hyperlink{classIPNet}{IPNet}$<$ A $>$ \&net, FPAListRef \&pa\_\-list, const \hyperlink{classPolicyTags}{PolicyTags} \&policytags, \hyperlink{classPeerHandler}{PeerHandler} $\ast$peer\_\-handler)}
\label{classBGPPlumbingAF_a436bb6ee195ab78b768fe0642bc01541}

\item 
\hypertarget{classBGPPlumbingAF_a6b638bcd3a771924048e133491ad1fa9}{
int {\bfseries delete\_\-route} (\hyperlink{classInternalMessage}{InternalMessage}$<$ A $>$ \&rtmsg, \hyperlink{classPeerHandler}{PeerHandler} $\ast$peer\_\-handler)}
\label{classBGPPlumbingAF_a6b638bcd3a771924048e133491ad1fa9}

\item 
\hypertarget{classBGPPlumbingAF_a884a1bbee8a2b0ca5c8615b2e9f7600f}{
int {\bfseries delete\_\-route} (const \hyperlink{classIPNet}{IPNet}$<$ A $>$ \&net, \hyperlink{classPeerHandler}{PeerHandler} $\ast$peer\_\-handler)}
\label{classBGPPlumbingAF_a884a1bbee8a2b0ca5c8615b2e9f7600f}

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

\item 
\hypertarget{classBGPPlumbingAF_abfe65cf596dd8efb6fa2dcc97e047be4}{
void {\bfseries push} (\hyperlink{classPeerHandler}{PeerHandler} $\ast$peer\_\-handler)}
\label{classBGPPlumbingAF_abfe65cf596dd8efb6fa2dcc97e047be4}

\item 
\hypertarget{classBGPPlumbingAF_afcc3bdb1c8684194b410fbf82d311766}{
void {\bfseries output\_\-no\_\-longer\_\-busy} (\hyperlink{classPeerHandler}{PeerHandler} $\ast$peer\_\-handler)}
\label{classBGPPlumbingAF_afcc3bdb1c8684194b410fbf82d311766}

\item 
uint32\_\-t \hyperlink{classBGPPlumbingAF_ad20fc7bd22399165b22932452c913e95}{get\_\-prefix\_\-count} (\hyperlink{classPeerHandler}{PeerHandler} $\ast$peer\_\-handler) const 
\item 
\hypertarget{classBGPPlumbingAF_acc9a21350c87a574cc1d3b4064a4fb10}{
\hyperlink{classNextHopResolver}{NextHopResolver}$<$ A $>$ \& \hyperlink{classBGPPlumbingAF_acc9a21350c87a574cc1d3b4064a4fb10}{next\_\-hop\_\-resolver} ()}
\label{classBGPPlumbingAF_acc9a21350c87a574cc1d3b4064a4fb10}

\begin{DoxyCompactList}\small\item\em Hook to \hyperlink{protocolthe-p}{the} next hop resolver so that xrl calls from \hyperlink{protocolthe-p}{the} \hyperlink{classRIB}{RIB} can be passed through. \item\end{DoxyCompactList}\item 
\hypertarget{classBGPPlumbingAF_a8005184aa685de4cd724945a77e81177}{
uint32\_\-t {\bfseries create\_\-route\_\-table\_\-reader} (const \hyperlink{classIPNet}{IPNet}$<$ A $>$ \&prefix)}
\label{classBGPPlumbingAF_a8005184aa685de4cd724945a77e81177}

\item 
\hypertarget{classBGPPlumbingAF_a63802ffb840c7fbb08e1ed9e29184d3a}{
bool {\bfseries read\_\-next\_\-route} (uint32\_\-t token, const \hyperlink{classSubnetRoute}{SubnetRoute}$<$ A $>$ $\ast$\&route, \hyperlink{classIPv4}{IPv4} \&peer\_\-id)}
\label{classBGPPlumbingAF_a63802ffb840c7fbb08e1ed9e29184d3a}

\item 
bool \hyperlink{classBGPPlumbingAF_ae821cd7589782d6e835c6246617855f5}{status} (string \&reason) const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} status of \hyperlink{protocolthe-p}{the} Plumbing. \item\end{DoxyCompactList}\item 
\hypertarget{classBGPPlumbingAF_a74f1e0f7d8674d405ff618557ba63ae2}{
void \hyperlink{classBGPPlumbingAF_a74f1e0f7d8674d405ff618557ba63ae2}{push\_\-routes} ()}
\label{classBGPPlumbingAF_a74f1e0f7d8674d405ff618557ba63ae2}

\begin{DoxyCompactList}\small\item\em \hyperlink{classPush}{Push} routes through policy filters for re-\/filtering. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classBGPPlumbingAF_a8c653383cf71516035c1e1a7add82e9b}{
void \hyperlink{classBGPPlumbingAF_a8c653383cf71516035c1e1a7add82e9b}{dump\_\-entire\_\-table} (\hyperlink{classFilterTable}{FilterTable}$<$ A $>$ $\ast$filter\_\-out, string ribname)}
\label{classBGPPlumbingAF_a8c653383cf71516035c1e1a7add82e9b}

\begin{DoxyCompactList}\small\item\em A peering has just come up dump all \hyperlink{protocolthe-p}{the} routes to it. \item\end{DoxyCompactList}\item 
\hypertarget{classBGPPlumbingAF_a7bb87f6b69c1feb618824eca5c43dc88}{
void {\bfseries configure\_\-inbound\_\-filter} (\hyperlink{classPeerHandler}{PeerHandler} $\ast$peer\_\-handler, \hyperlink{classFilterTable}{FilterTable}$<$ A $>$ $\ast$filter\_\-in)}
\label{classBGPPlumbingAF_a7bb87f6b69c1feb618824eca5c43dc88}

\item 
\hypertarget{classBGPPlumbingAF_a0d6900461518239ae079a433b942b0ed}{
void {\bfseries configure\_\-outbound\_\-filter} (\hyperlink{classPeerHandler}{PeerHandler} $\ast$peer\_\-handler, \hyperlink{classFilterTable}{FilterTable}$<$ A $>$ $\ast$filter\_\-out)}
\label{classBGPPlumbingAF_a0d6900461518239ae079a433b942b0ed}

\item 
void \hyperlink{classBGPPlumbingAF_aea660fd226870cf577e9f315160550e8}{reconfigure\_\-filters} (\hyperlink{classPeerHandler}{PeerHandler} $\ast$peer\_\-handler)
\begin{DoxyCompactList}\small\item\em re-\/instantiate all \hyperlink{protocolthe-p}{the} static filters. \item\end{DoxyCompactList}\item 
\hypertarget{classBGPPlumbingAF_a8cccc104f207b8c7272b746672f4bf51}{
const A \& {\bfseries get\_\-local\_\-nexthop} (const \hyperlink{classPeerHandler}{PeerHandler} $\ast$peer\_\-handler) const }
\label{classBGPPlumbingAF_a8cccc104f207b8c7272b746672f4bf51}

\item 
\hypertarget{classBGPPlumbingAF_a57e35f0000db01de3fe96dd8bd80f6d7}{
bool \hyperlink{classBGPPlumbingAF_a57e35f0000db01de3fe96dd8bd80f6d7}{directly\_\-connected} (const \hyperlink{classPeerHandler}{PeerHandler} $\ast$peer\_\-handler, \hyperlink{classIPNet}{IPNet}$<$ A $>$ \&subnet, A \&peer) const }
\label{classBGPPlumbingAF_a57e35f0000db01de3fe96dd8bd80f6d7}

\begin{DoxyCompactList}\small\item\em Is \hyperlink{protocolthe-p}{the} peer directly connected and if it is return \hyperlink{protocolthe-p}{the} common subnet and \hyperlink{protocolthe-p}{the} peer address. \item\end{DoxyCompactList}\item 
\hypertarget{classBGPPlumbingAF_a6c8a5edaca847afccdd092fefef6167c}{
list$<$ \hyperlink{classRibInTable}{RibInTable}$<$ A $>$ $\ast$ $>$ {\bfseries ribin\_\-list} () const }
\label{classBGPPlumbingAF_a6c8a5edaca847afccdd092fefef6167c}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classBGPPlumbingAF_a435b9a657b8ebf35428b3d828f708e1d}{
map$<$ \hyperlink{classPeerHandler}{PeerHandler} $\ast$, \hyperlink{classRibInTable}{RibInTable}$<$ A $>$ $\ast$ $>$ {\bfseries \_\-in\_\-map}}
\label{classBGPPlumbingAF_a435b9a657b8ebf35428b3d828f708e1d}

\item 
\hypertarget{classBGPPlumbingAF_a5124b622cf58d0426b0db3326453cf87}{
map$<$ \hyperlink{classRibOutTable}{RibOutTable}$<$ A $>$ $\ast$, \hyperlink{classPeerHandler}{PeerHandler} $\ast$ $>$ {\bfseries \_\-reverse\_\-out\_\-map}}
\label{classBGPPlumbingAF_a5124b622cf58d0426b0db3326453cf87}

\item 
\hypertarget{classBGPPlumbingAF_acc957226feba58318490fc7b5c416935}{
map$<$ \hyperlink{classPeerHandler}{PeerHandler} $\ast$, \hyperlink{classRibOutTable}{RibOutTable}$<$ A $>$ $\ast$ $>$ {\bfseries \_\-out\_\-map}}
\label{classBGPPlumbingAF_acc957226feba58318490fc7b5c416935}

\item 
\hypertarget{classBGPPlumbingAF_ab8dd1ecb7dc4b9858f0cde45da684eae}{
\hyperlink{classDecisionTable}{DecisionTable}$<$ A $>$ $\ast$ {\bfseries \_\-decision\_\-table}}
\label{classBGPPlumbingAF_ab8dd1ecb7dc4b9858f0cde45da684eae}

\item 
\hypertarget{classBGPPlumbingAF_a7594b213f11335b30b1c699659bb2c3f}{
\hyperlink{classPolicyTableSourceMatch}{PolicyTableSourceMatch}$<$ A $>$ $\ast$ {\bfseries \_\-policy\_\-sourcematch\_\-table}}
\label{classBGPPlumbingAF_a7594b213f11335b30b1c699659bb2c3f}

\item 
\hypertarget{classBGPPlumbingAF_aa89812edb370435588e73fcdd019fd12}{
\hyperlink{classAggregationTable}{AggregationTable}$<$ A $>$ $\ast$ {\bfseries \_\-aggregation\_\-table}}
\label{classBGPPlumbingAF_aa89812edb370435588e73fcdd019fd12}

\item 
\hypertarget{classBGPPlumbingAF_a185734f776ee2c7d4cf5cdedef907e46}{
\hyperlink{classFanoutTable}{FanoutTable}$<$ A $>$ $\ast$ {\bfseries \_\-fanout\_\-table}}
\label{classBGPPlumbingAF_a185734f776ee2c7d4cf5cdedef907e46}

\item 
\hypertarget{classBGPPlumbingAF_a2ab62501885d1cd536ed3fbe6e6f76ea}{
\hyperlink{classRibInTable}{RibInTable}$<$ A $>$ $\ast$ {\bfseries \_\-ipc\_\-rib\_\-in\_\-table}}
\label{classBGPPlumbingAF_a2ab62501885d1cd536ed3fbe6e6f76ea}

\item 
\hypertarget{classBGPPlumbingAF_aeeaa32ec1c86cbd50a9d8f85bad95095}{
\hyperlink{classRibOutTable}{RibOutTable}$<$ A $>$ $\ast$ {\bfseries \_\-ipc\_\-rib\_\-out\_\-table}}
\label{classBGPPlumbingAF_aeeaa32ec1c86cbd50a9d8f85bad95095}

\item 
\hypertarget{classBGPPlumbingAF_a4c46d78d638022e7f8d02ac20d9d164f}{
set$<$ \hyperlink{classBGPRouteTable}{BGPRouteTable}$<$ A $>$ $\ast$ $>$ {\bfseries \_\-tables}}
\label{classBGPPlumbingAF_a4c46d78d638022e7f8d02ac20d9d164f}

\item 
\hypertarget{classBGPPlumbingAF_adb5bbee8387b3c3628e83bdd04cbabbd}{
uint32\_\-t {\bfseries \_\-max\_\-reader\_\-token}}
\label{classBGPPlumbingAF_adb5bbee8387b3c3628e83bdd04cbabbd}

\item 
\hypertarget{classBGPPlumbingAF_ac4d07036b91ad87f20e87de341750f6f}{
map$<$ uint32\_\-t, \hyperlink{classRouteTableReader}{RouteTableReader}$<$ A $>$ $\ast$ $>$ {\bfseries \_\-route\_\-table\_\-readers}}
\label{classBGPPlumbingAF_ac4d07036b91ad87f20e87de341750f6f}

\item 
\hypertarget{classBGPPlumbingAF_a5228e6bb0162caadb027ab52b706dec5}{
bool {\bfseries \_\-awaits\_\-push}}
\label{classBGPPlumbingAF_a5228e6bb0162caadb027ab52b706dec5}

\item 
\hypertarget{classBGPPlumbingAF_afba04af8409be90c755026f266a86524}{
string {\bfseries \_\-ribname}}
\label{classBGPPlumbingAF_afba04af8409be90c755026f266a86524}

\item 
\hypertarget{classBGPPlumbingAF_a08db1a7c652ffc73c23dbd676de4cbec}{
\hyperlink{classBGPPlumbing}{BGPPlumbing} \& {\bfseries \_\-master}}
\label{classBGPPlumbingAF_a08db1a7c652ffc73c23dbd676de4cbec}

\item 
\hypertarget{classBGPPlumbingAF_acf3f62a7206b5aad4d72d6f042d5e53b}{
\hyperlink{classNextHopResolver}{NextHopResolver}$<$ A $>$ \& {\bfseries \_\-next\_\-hop\_\-resolver}}
\label{classBGPPlumbingAF_acf3f62a7206b5aad4d72d6f042d5e53b}

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



\subsection{Member Function Documentation}
\hypertarget{classBGPPlumbingAF_ad20fc7bd22399165b22932452c913e95}{
\index{BGPPlumbingAF@{BGPPlumbingAF}!get\_\-prefix\_\-count@{get\_\-prefix\_\-count}}
\index{get\_\-prefix\_\-count@{get\_\-prefix\_\-count}!BGPPlumbingAF@{BGPPlumbingAF}}
\subsubsection[{get\_\-prefix\_\-count}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ uint32\_\-t {\bf BGPPlumbingAF}$<$ A $>$::get\_\-prefix\_\-count (
\begin{DoxyParamCaption}
\item[{{\bf PeerHandler} $\ast$}]{peer\_\-handler}
\end{DoxyParamCaption}
) const}}
\label{classBGPPlumbingAF_ad20fc7bd22399165b22932452c913e95}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} number of prefixes in \hyperlink{protocolthe-p}{the} RIB-\/IN. 
\end{DoxyReturn}
\hypertarget{classBGPPlumbingAF_aea660fd226870cf577e9f315160550e8}{
\index{BGPPlumbingAF@{BGPPlumbingAF}!reconfigure\_\-filters@{reconfigure\_\-filters}}
\index{reconfigure\_\-filters@{reconfigure\_\-filters}!BGPPlumbingAF@{BGPPlumbingAF}}
\subsubsection[{reconfigure\_\-filters}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ void {\bf BGPPlumbingAF}$<$ A $>$::reconfigure\_\-filters (
\begin{DoxyParamCaption}
\item[{{\bf PeerHandler} $\ast$}]{peer\_\-handler}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classBGPPlumbingAF_aea660fd226870cf577e9f315160550e8}


re-\/instantiate all \hyperlink{protocolthe-p}{the} static filters. 

Re-\/instantiate all \hyperlink{protocolthe-p}{the} static filters in case \hyperlink{protocolthe-p}{the} config has changed, and \hyperlink{protocolthe-p}{the} filter parameters are now different. The \hyperlink{classFilterTable}{FilterTable} will handle consistency issues this might otherwise raise. \hypertarget{classBGPPlumbingAF_ae821cd7589782d6e835c6246617855f5}{
\index{BGPPlumbingAF@{BGPPlumbingAF}!status@{status}}
\index{status@{status}!BGPPlumbingAF@{BGPPlumbingAF}}
\subsubsection[{status}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ bool {\bf BGPPlumbingAF}$<$ A $>$::status (
\begin{DoxyParamCaption}
\item[{string \&}]{reason}
\end{DoxyParamCaption}
) const}}
\label{classBGPPlumbingAF_ae821cd7589782d6e835c6246617855f5}


Get \hyperlink{protocolthe-p}{the} status of \hyperlink{protocolthe-p}{the} Plumbing. 


\begin{DoxyParams}{Parameters}
{\em reason} & \hyperlink{protocolthe-p}{the} human-\/readable reason for any failure\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
false if Plumbing has suffered a fatal error, true otherwise 
\end{DoxyReturn}


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