\hypertarget{classBGPRouteTable}{
\section{BGPRouteTable$<$ A $>$ Class Template Reference}
\label{classBGPRouteTable}\index{BGPRouteTable@{BGPRouteTable}}
}


Base class for a stage in BGP's internal plumbing.  




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

Inheritance diagram for BGPRouteTable$<$ A $>$:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=12.000000cm]{classBGPRouteTable}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classBGPRouteTable_a2df155adcc8498b6f33c89510cd10191}{
{\bfseries BGPRouteTable} (string tablename, Safi safi)}
\label{classBGPRouteTable_a2df155adcc8498b6f33c89510cd10191}

\item 
\hypertarget{classBGPRouteTable_a37bfa20932a6814e6acd882569d00511}{
virtual int {\bfseries add\_\-route} (\hyperlink{classInternalMessage}{InternalMessage}$<$ A $>$ \&rtmsg, \hyperlink{classBGPRouteTable}{BGPRouteTable}$<$ A $>$ $\ast$caller)=0}
\label{classBGPRouteTable_a37bfa20932a6814e6acd882569d00511}

\item 
\hypertarget{classBGPRouteTable_a589c0a0fadb57414ea0709ef7bb6effb}{
virtual int {\bfseries replace\_\-route} (\hyperlink{classInternalMessage}{InternalMessage}$<$ A $>$ \&old\_\-rtmsg, \hyperlink{classInternalMessage}{InternalMessage}$<$ A $>$ \&new\_\-rtmsg, \hyperlink{classBGPRouteTable}{BGPRouteTable}$<$ A $>$ $\ast$caller)=0}
\label{classBGPRouteTable_a589c0a0fadb57414ea0709ef7bb6effb}

\item 
\hypertarget{classBGPRouteTable_ae547714ceb555385a2cac7562fe9a153}{
virtual int {\bfseries delete\_\-route} (\hyperlink{classInternalMessage}{InternalMessage}$<$ A $>$ \&rtmsg, \hyperlink{classBGPRouteTable}{BGPRouteTable}$<$ A $>$ $\ast$caller)=0}
\label{classBGPRouteTable_ae547714ceb555385a2cac7562fe9a153}

\item 
\hypertarget{classBGPRouteTable_ac255e8a19c5ad0c041bf6e767afb49ef}{
virtual int {\bfseries route\_\-dump} (\hyperlink{classInternalMessage}{InternalMessage}$<$ A $>$ \&rtmsg, \hyperlink{classBGPRouteTable}{BGPRouteTable}$<$ A $>$ $\ast$caller, const \hyperlink{classPeerHandler}{PeerHandler} $\ast$dump\_\-peer)}
\label{classBGPRouteTable_ac255e8a19c5ad0c041bf6e767afb49ef}

\item 
\hypertarget{classBGPRouteTable_a101b4ed0f88ed588608d67ad91da3cda}{
virtual int {\bfseries push} (\hyperlink{classBGPRouteTable}{BGPRouteTable}$<$ A $>$ $\ast$caller)=0}
\label{classBGPRouteTable_a101b4ed0f88ed588608d67ad91da3cda}

\item 
\hypertarget{classBGPRouteTable_a7a1f07c8fa506ad0a5b73fcbf7248dd3}{
virtual const \hyperlink{classSubnetRoute}{SubnetRoute}$<$ A $>$ $\ast$ {\bfseries lookup\_\-route} (const \hyperlink{classIPNet}{IPNet}$<$ A $>$ \&net, uint32\_\-t \&genid, FPAListRef \&pa\_\-list) const =0}
\label{classBGPRouteTable_a7a1f07c8fa506ad0a5b73fcbf7248dd3}

\item 
\hypertarget{classBGPRouteTable_a04776b9874a79508d53b77a3890b231c}{
virtual void {\bfseries route\_\-used} (const \hyperlink{classSubnetRoute}{SubnetRoute}$<$ A $>$ $\ast$, bool)}
\label{classBGPRouteTable_a04776b9874a79508d53b77a3890b231c}

\item 
\hypertarget{classBGPRouteTable_aa1552b8249eec744dc0b6200a6af5357}{
void {\bfseries set\_\-next\_\-table} (\hyperlink{classBGPRouteTable}{BGPRouteTable}$<$ A $>$ $\ast$table)}
\label{classBGPRouteTable_aa1552b8249eec744dc0b6200a6af5357}

\item 
\hypertarget{classBGPRouteTable_af9cfcefe369229acca05e7b36781769f}{
\hyperlink{classBGPRouteTable}{BGPRouteTable}$<$ A $>$ $\ast$ {\bfseries next\_\-table} ()}
\label{classBGPRouteTable_af9cfcefe369229acca05e7b36781769f}

\item 
\hypertarget{classBGPRouteTable_a43401478b2ef953ee3a7665d83bfb3b3}{
virtual \hyperlink{classBGPRouteTable}{BGPRouteTable}$<$ A $>$ $\ast$ {\bfseries parent} ()}
\label{classBGPRouteTable_a43401478b2ef953ee3a7665d83bfb3b3}

\item 
\hypertarget{classBGPRouteTable_a2b5eaca2fbd09bd86f76be93e5bf0d8f}{
virtual void {\bfseries set\_\-parent} (\hyperlink{classBGPRouteTable}{BGPRouteTable}$<$ A $>$ $\ast$parent)}
\label{classBGPRouteTable_a2b5eaca2fbd09bd86f76be93e5bf0d8f}

\item 
\hypertarget{classBGPRouteTable_ad8497b94160c22881cff07df3c399ced}{
virtual RouteTableType {\bfseries type} () const =0}
\label{classBGPRouteTable_ad8497b94160c22881cff07df3c399ced}

\item 
\hypertarget{classBGPRouteTable_a996ae2a0c62f1f6d9bfb2625aa052727}{
const string \& {\bfseries tablename} () const }
\label{classBGPRouteTable_a996ae2a0c62f1f6d9bfb2625aa052727}

\item 
\hypertarget{classBGPRouteTable_a57ad6d765cb54f565e3978e116bed0d6}{
virtual string {\bfseries str} () const =0}
\label{classBGPRouteTable_a57ad6d765cb54f565e3978e116bed0d6}

\item 
\hypertarget{classBGPRouteTable_a5c62e3f39ae9b6990e405f1fe196e18c}{
virtual void {\bfseries wakeup} ()}
\label{classBGPRouteTable_a5c62e3f39ae9b6990e405f1fe196e18c}

\item 
\hypertarget{classBGPRouteTable_a7e619258eefc31875b1ec58ad8b4e832}{
virtual bool {\bfseries get\_\-next\_\-message} (\hyperlink{classBGPRouteTable}{BGPRouteTable} $\ast$)}
\label{classBGPRouteTable_a7e619258eefc31875b1ec58ad8b4e832}

\item 
\hypertarget{classBGPRouteTable_a5c837bde8a66543a1ac50722618a35f4}{
virtual bool {\bfseries dump\_\-next\_\-route} (\hyperlink{classDumpIterator}{DumpIterator}$<$ A $>$ \&dump\_\-iter)}
\label{classBGPRouteTable_a5c837bde8a66543a1ac50722618a35f4}

\item 
virtual void \hyperlink{classBGPRouteTable_a2126e0a6eb87e2e8d5b8b79afa05359d}{igp\_\-nexthop\_\-changed} (const A \&bgp\_\-nexthop)
\begin{DoxyCompactList}\small\item\em Notification that \hyperlink{protocolthe-p}{the} status of this next hop has changed. \item\end{DoxyCompactList}\item 
\hypertarget{classBGPRouteTable_a57f778f7bdedf94f15942bb4cb46b99e}{
virtual void {\bfseries peering\_\-went\_\-down} (const \hyperlink{classPeerHandler}{PeerHandler} $\ast$peer, uint32\_\-t genid, \hyperlink{classBGPRouteTable}{BGPRouteTable}$<$ A $>$ $\ast$caller)}
\label{classBGPRouteTable_a57f778f7bdedf94f15942bb4cb46b99e}

\item 
\hypertarget{classBGPRouteTable_a54e2f40b41f3af8fcd77d217f7cc7884}{
virtual void {\bfseries peering\_\-down\_\-complete} (const \hyperlink{classPeerHandler}{PeerHandler} $\ast$peer, uint32\_\-t genid, \hyperlink{classBGPRouteTable}{BGPRouteTable}$<$ A $>$ $\ast$caller)}
\label{classBGPRouteTable_a54e2f40b41f3af8fcd77d217f7cc7884}

\item 
\hypertarget{classBGPRouteTable_ab1c5a03f18c9c7cfdacbe4642fa2d810}{
virtual void {\bfseries peering\_\-came\_\-up} (const \hyperlink{classPeerHandler}{PeerHandler} $\ast$peer, uint32\_\-t genid, \hyperlink{classBGPRouteTable}{BGPRouteTable}$<$ A $>$ $\ast$caller)}
\label{classBGPRouteTable_ab1c5a03f18c9c7cfdacbe4642fa2d810}

\item 
\hypertarget{classBGPRouteTable_a639159cd12f0b12305848d6df304f625}{
Safi {\bfseries safi} () const }
\label{classBGPRouteTable_a639159cd12f0b12305848d6df304f625}

\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classBGPRouteTable_a396d05e11380519eb40027b2495b0df5}{
\hyperlink{classBGPRouteTable}{BGPRouteTable}$<$ A $>$ $\ast$ {\bfseries \_\-next\_\-table}}
\label{classBGPRouteTable_a396d05e11380519eb40027b2495b0df5}

\item 
\hypertarget{classBGPRouteTable_a18daf8571e80aee6df8b5e79582124bb}{
\hyperlink{classBGPRouteTable}{BGPRouteTable}$<$ A $>$ $\ast$ {\bfseries \_\-parent}}
\label{classBGPRouteTable_a18daf8571e80aee6df8b5e79582124bb}

\item 
\hypertarget{classBGPRouteTable_a888399fdb279a14ebf98e4737e607c82}{
string {\bfseries \_\-tablename}}
\label{classBGPRouteTable_a888399fdb279a14ebf98e4737e607c82}

\item 
\hypertarget{classBGPRouteTable_a89a03831a7f7bd4fe8ed076f61e0e633}{
const Safi {\bfseries \_\-safi}}
\label{classBGPRouteTable_a89a03831a7f7bd4fe8ed076f61e0e633}

\end{DoxyCompactItemize}


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

Base class for a stage in BGP's internal plumbing. The XORP BGP is internally implemented as a set of pipelines. Each pipeline receives routes from a BGP peer, stores them, and applies filters to them to modify \hyperlink{protocolthe-p}{the} routes. Then \hyperlink{protocolthe-p}{the} pipelines converge on a single decision process, which decides which route wins amongst possible alternative routes. After decision, \hyperlink{protocolthe-p}{the} winning routes fanout again along a set of pipelines, again being filtered, before being transmitted to peers.

Each stage in these pipelines is a \hyperlink{classBGPRouteTable}{BGPRouteTable}. \hyperlink{classBGPRouteTable}{BGPRouteTable} is a virtual base class, so all \hyperlink{protocolthe-p}{the} stages consist of specialized \hyperlink{classRouteTable}{RouteTable} class instances. 

\subsection{Member Function Documentation}
\hypertarget{classBGPRouteTable_a2126e0a6eb87e2e8d5b8b79afa05359d}{
\index{BGPRouteTable@{BGPRouteTable}!igp\_\-nexthop\_\-changed@{igp\_\-nexthop\_\-changed}}
\index{igp\_\-nexthop\_\-changed@{igp\_\-nexthop\_\-changed}!BGPRouteTable@{BGPRouteTable}}
\subsubsection[{igp\_\-nexthop\_\-changed}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A$>$ void {\bf BGPRouteTable}$<$ A $>$::igp\_\-nexthop\_\-changed (
\begin{DoxyParamCaption}
\item[{const A \&}]{bgp\_\-nexthop}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classBGPRouteTable_a2126e0a6eb87e2e8d5b8b79afa05359d}


Notification that \hyperlink{protocolthe-p}{the} status of this next hop has changed. 


\begin{DoxyParams}{Parameters}
{\em bgp\_\-nexthop} & The next hop that has changed. \\
\hline
\end{DoxyParams}


Reimplemented in \hyperlink{classDecisionTable_a8dc88a14f6847514a65f326968de6986}{DecisionTable$<$ A $>$}, \hyperlink{classRibInTable_a8341a03515a26275070b82d1ab08a62f}{RibInTable$<$ A $>$}, \hyperlink{classDummyDecisionTable_a5ed3e0214430c6d92975484d213ef53a}{DummyDecisionTable$<$ A $>$}, \hyperlink{classDecisionTable_a8dc88a14f6847514a65f326968de6986}{DecisionTable$<$ IPv4 $>$}, and \hyperlink{classRibInTable_a8341a03515a26275070b82d1ab08a62f}{RibInTable$<$ IPv4 $>$}.



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