\hypertarget{classBGPVarRW}{
\section{BGPVarRW$<$ A $>$ Class Template Reference}
\label{classBGPVarRW}\index{BGPVarRW@{BGPVarRW}}
}


Allows reading an modifying a BGP route.  




{\ttfamily \#include $<$bgp\_\-varrw.hh$>$}

Inheritance diagram for BGPVarRW$<$ A $>$:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=4.000000cm]{classBGPVarRW}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
enum \{ \par
{\bfseries VAR\_\-NETWORK4} =  VAR\_\-PROTOCOL, 
{\bfseries VAR\_\-NEXTHOP4}, 
{\bfseries VAR\_\-NETWORK6}, 
{\bfseries VAR\_\-NEXTHOP6}, 
\par
{\bfseries VAR\_\-ASPATH}, 
{\bfseries VAR\_\-ORIGIN}, 
{\bfseries VAR\_\-NEIGHBOR}, 
{\bfseries VAR\_\-LOCALPREF}, 
\par
{\bfseries VAR\_\-COMMUNITY}, 
{\bfseries VAR\_\-MED}, 
{\bfseries VAR\_\-MED\_\-REMOVE}, 
{\bfseries VAR\_\-AGGREGATE\_\-PREFIX\_\-LEN}, 
\par
{\bfseries VAR\_\-AGGREGATE\_\-BRIEF\_\-MODE}, 
{\bfseries VAR\_\-WAS\_\-AGGREGATED}, 
{\bfseries VAR\_\-BGPMAX}
 \}
\item 
\hypertarget{classBGPVarRW_ae843dc1bc26db8807be7fe4bef6d01cc}{
typedef \hyperlink{classElement}{Element} $\ast$(BGPVarRW::$\ast$ {\bfseries ReadCallback} )()}
\label{classBGPVarRW_ae843dc1bc26db8807be7fe4bef6d01cc}

\item 
\hypertarget{classBGPVarRW_a2d8e30298e4e91d3040ae8f264734a30}{
typedef void(BGPVarRW::$\ast$ {\bfseries WriteCallback} )(const \hyperlink{classElement}{Element} \&e)}
\label{classBGPVarRW_a2d8e30298e4e91d3040ae8f264734a30}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classBGPVarRW_a92848be2c2afcf1a7506b51ee7ec6e80}{BGPVarRW} (const string \&name)
\begin{DoxyCompactList}\small\item\em This varrw allows for routes to remain untouched even though they are filtered. \item\end{DoxyCompactList}\item 
\hypertarget{classBGPVarRW_aa9cbdb2c5ec59d3fbd861d911f6ad0e3}{
void {\bfseries set\_\-peer} (const A \&peer)}
\label{classBGPVarRW_aa9cbdb2c5ec59d3fbd861d911f6ad0e3}

\item 
\hypertarget{classBGPVarRW_a26ac855d036e7c2d61b8bc0c95d3562d}{
void {\bfseries set\_\-self} (const A \&self)}
\label{classBGPVarRW_a26ac855d036e7c2d61b8bc0c95d3562d}

\item 
void \hyperlink{classBGPVarRW_aabb0f72bfc2b9b8d92bb43ade9a84481}{attach\_\-route} (\hyperlink{classInternalMessage}{InternalMessage}$<$ A $>$ \&rtmsg, bool no\_\-modify)
\begin{DoxyCompactList}\small\item\em Attach a route to \hyperlink{protocolthe-p}{the} varrw. \item\end{DoxyCompactList}\item 
\hypertarget{classBGPVarRW_aac461d5301f9c705985c2166e1ccf108}{
void {\bfseries detach\_\-route} (\hyperlink{classInternalMessage}{InternalMessage}$<$ A $>$ \&rtmsg)}
\label{classBGPVarRW_aac461d5301f9c705985c2166e1ccf108}

\item 
\hyperlink{classInternalMessage}{InternalMessage}$<$ A $>$ $\ast$ \hyperlink{classBGPVarRW_a7df4f3229c9dca95dff455d032923ce9}{filtered\_\-message} ()
\begin{DoxyCompactList}\small\item\em Caller owns \hyperlink{protocolthe-p}{the} message \mbox{[}responsible for delete\mbox{]}. \item\end{DoxyCompactList}\item 
\hyperlink{classElement}{Element} $\ast$ \hyperlink{classBGPVarRW_aa64291a056e691381e7a9ff35c804a08}{single\_\-read} (const Id \&id)
\begin{DoxyCompactList}\small\item\em Read of a variable. \item\end{DoxyCompactList}\item 
void \hyperlink{classBGPVarRW_a9214997e92d06673c63b1a1f13908859}{single\_\-write} (const Id \&id, const \hyperlink{classElement}{Element} \&e)
\begin{DoxyCompactList}\small\item\em Write of a variable. \item\end{DoxyCompactList}\item 
\hypertarget{classBGPVarRW_a3916a57b608c13c2abbdfb6ac5baa989}{
void \hyperlink{classBGPVarRW_a3916a57b608c13c2abbdfb6ac5baa989}{end\_\-write} ()}
\label{classBGPVarRW_a3916a57b608c13c2abbdfb6ac5baa989}

\begin{DoxyCompactList}\small\item\em Marks \hyperlink{protocolthe-p}{the} end of writes in case there were any modified fields. \item\end{DoxyCompactList}\item 
bool \hyperlink{classBGPVarRW_a5d5f9d038f65338f695090bf13a5ab41}{modified} ()
\begin{DoxyCompactList}\small\item\em If a route is modified, \hyperlink{protocolthe-p}{the} caller may obtain it via \hyperlink{protocolthe-p}{the} filtered\_\-message call. \item\end{DoxyCompactList}\item 
virtual string \hyperlink{classBGPVarRW_a71e23403bffb96b011a1e49890e3dbda}{more\_\-tracelog} ()
\begin{DoxyCompactList}\small\item\em \hyperlink{classOutput}{Output} basic BGP specific information. \item\end{DoxyCompactList}\item 
virtual \hyperlink{classElement}{Element} $\ast$ \hyperlink{classBGPVarRW_ae3b9f6b2b988994652f5eec887dadcce}{read\_\-neighbor} ()
\begin{DoxyCompactList}\small\item\em Reads \hyperlink{protocolthe-p}{the} neighbor variable. \item\end{DoxyCompactList}\item 
\hyperlink{classElement}{Element} $\ast$ \hyperlink{classBGPVarRW_ad1bc46bb6a1d046aac749b343b6f5ba8}{read\_\-neighbor\_\-base\_\-cb} ()
\begin{DoxyCompactList}\small\item\em Callback wrapper used to call \hyperlink{protocolthe-p}{the} virtual \hyperlink{classBGPVarRW_ae3b9f6b2b988994652f5eec887dadcce}{read\_\-neighbor()} method. \item\end{DoxyCompactList}\item 
\hypertarget{classBGPVarRW_a7ab75b9db8887f0b3c64f82c598bcaa2}{
\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-policytags} ()}
\label{classBGPVarRW_a7ab75b9db8887f0b3c64f82c598bcaa2}

\item 
\hypertarget{classBGPVarRW_a09dd6209e8d9a705d21015c40617c3c2}{
\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-filter\_\-im} ()}
\label{classBGPVarRW_a09dd6209e8d9a705d21015c40617c3c2}

\item 
\hypertarget{classBGPVarRW_a9b9ca133a9a42d966324a1a69f7b4bc7}{
\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-filter\_\-sm} ()}
\label{classBGPVarRW_a9b9ca133a9a42d966324a1a69f7b4bc7}

\item 
\hypertarget{classBGPVarRW_ab7ed8530c543354f54c76565534355cd}{
\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-filter\_\-ex} ()}
\label{classBGPVarRW_ab7ed8530c543354f54c76565534355cd}

\item 
\hypertarget{classBGPVarRW_a2b129ed68d96fa94fa5cb1ce6a658134}{
\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-network4} ()}
\label{classBGPVarRW_a2b129ed68d96fa94fa5cb1ce6a658134}

\item 
\hypertarget{classBGPVarRW_a153efeb436aad5ffadff367aeacaac1a}{
\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-network6} ()}
\label{classBGPVarRW_a153efeb436aad5ffadff367aeacaac1a}

\item 
\hypertarget{classBGPVarRW_a996d3d0aa1540f5add6adcc168f42df8}{
\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-nexthop4} ()}
\label{classBGPVarRW_a996d3d0aa1540f5add6adcc168f42df8}

\item 
\hypertarget{classBGPVarRW_ab11012d4b979c2b71de80798569b3b2e}{
\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-nexthop6} ()}
\label{classBGPVarRW_ab11012d4b979c2b71de80798569b3b2e}

\item 
\hypertarget{classBGPVarRW_a6dd6386b661c8dfdf43ac98602674d87}{
\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-aspath} ()}
\label{classBGPVarRW_a6dd6386b661c8dfdf43ac98602674d87}

\item 
\hypertarget{classBGPVarRW_a2a71ba9a924ccef0be0e7a4a2c449825}{
\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-origin} ()}
\label{classBGPVarRW_a2a71ba9a924ccef0be0e7a4a2c449825}

\item 
\hypertarget{classBGPVarRW_a38df1fe0980c3ce848b124d18b4257f1}{
\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-localpref} ()}
\label{classBGPVarRW_a38df1fe0980c3ce848b124d18b4257f1}

\item 
\hypertarget{classBGPVarRW_a7275c39785022514f534efb06875ef8b}{
\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-community} ()}
\label{classBGPVarRW_a7275c39785022514f534efb06875ef8b}

\item 
\hypertarget{classBGPVarRW_ae3221f9cb22f6b50e61a380818095745}{
\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-med} ()}
\label{classBGPVarRW_ae3221f9cb22f6b50e61a380818095745}

\item 
\hypertarget{classBGPVarRW_a1d872ce185cca474c33115c8adf576df}{
\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-med\_\-remove} ()}
\label{classBGPVarRW_a1d872ce185cca474c33115c8adf576df}

\item 
\hypertarget{classBGPVarRW_ae466e3bc46525777a27aeaf2003d2f99}{
\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-aggregate\_\-prefix\_\-len} ()}
\label{classBGPVarRW_ae466e3bc46525777a27aeaf2003d2f99}

\item 
\hypertarget{classBGPVarRW_aece4ca4855ecb16349cc9da49a813a5d}{
\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-aggregate\_\-brief\_\-mode} ()}
\label{classBGPVarRW_aece4ca4855ecb16349cc9da49a813a5d}

\item 
\hypertarget{classBGPVarRW_a1144927b7162677f7aa20b0916010301}{
\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-was\_\-aggregated} ()}
\label{classBGPVarRW_a1144927b7162677f7aa20b0916010301}

\item 
\hypertarget{classBGPVarRW_a65caa6dbb18b537d8dbe487adf3ab579}{
\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-tag} ()}
\label{classBGPVarRW_a65caa6dbb18b537d8dbe487adf3ab579}

\item 
\hypertarget{classBGPVarRW_a6eb2b376f66ca5062b9d8b13cde67ca0}{
void {\bfseries write\_\-filter\_\-im} (const \hyperlink{classElement}{Element} \&e)}
\label{classBGPVarRW_a6eb2b376f66ca5062b9d8b13cde67ca0}

\item 
\hypertarget{classBGPVarRW_a9da881d74e5912dbe9ff0883d238456c}{
void {\bfseries write\_\-filter\_\-sm} (const \hyperlink{classElement}{Element} \&e)}
\label{classBGPVarRW_a9da881d74e5912dbe9ff0883d238456c}

\item 
\hypertarget{classBGPVarRW_ae53f1f55ade6ad9540215592357b7942}{
void {\bfseries write\_\-filter\_\-ex} (const \hyperlink{classElement}{Element} \&e)}
\label{classBGPVarRW_ae53f1f55ade6ad9540215592357b7942}

\item 
\hypertarget{classBGPVarRW_a16ea2ae50f0c4e1f5f55e6ac03fd3719}{
void {\bfseries write\_\-policytags} (const \hyperlink{classElement}{Element} \&e)}
\label{classBGPVarRW_a16ea2ae50f0c4e1f5f55e6ac03fd3719}

\item 
\hypertarget{classBGPVarRW_a11547012a7cc7482034246f99fc0a747}{
void {\bfseries write\_\-nexthop4} (const \hyperlink{classElement}{Element} \&e)}
\label{classBGPVarRW_a11547012a7cc7482034246f99fc0a747}

\item 
\hypertarget{classBGPVarRW_a64118bcc5c6d53db353979c27a5626e9}{
void {\bfseries write\_\-nexthop6} (const \hyperlink{classElement}{Element} \&e)}
\label{classBGPVarRW_a64118bcc5c6d53db353979c27a5626e9}

\item 
\hypertarget{classBGPVarRW_a9f4a59545f47daa6251fc317cd576227}{
void {\bfseries write\_\-aspath} (const \hyperlink{classElement}{Element} \&e)}
\label{classBGPVarRW_a9f4a59545f47daa6251fc317cd576227}

\item 
\hypertarget{classBGPVarRW_a15f25421cf92e10564b541de41f774b8}{
void {\bfseries write\_\-origin} (const \hyperlink{classElement}{Element} \&e)}
\label{classBGPVarRW_a15f25421cf92e10564b541de41f774b8}

\item 
\hypertarget{classBGPVarRW_afea270c61983a9c645823753beffc83b}{
void {\bfseries write\_\-aggregate\_\-prefix\_\-len} (const \hyperlink{classElement}{Element} \&e)}
\label{classBGPVarRW_afea270c61983a9c645823753beffc83b}

\item 
\hypertarget{classBGPVarRW_ae87cb127e9213d93c20d22a4820cb2f8}{
void {\bfseries write\_\-aggregate\_\-brief\_\-mode} (const \hyperlink{classElement}{Element} \&e)}
\label{classBGPVarRW_ae87cb127e9213d93c20d22a4820cb2f8}

\item 
\hypertarget{classBGPVarRW_a69ffd62275f64f91fb1c792f8c0ef652}{
void {\bfseries write\_\-was\_\-aggregated} (const \hyperlink{classElement}{Element} \&e)}
\label{classBGPVarRW_a69ffd62275f64f91fb1c792f8c0ef652}

\item 
\hypertarget{classBGPVarRW_abb19024ef348e345e8a06635557b910a}{
void {\bfseries write\_\-localpref} (const \hyperlink{classElement}{Element} \&e)}
\label{classBGPVarRW_abb19024ef348e345e8a06635557b910a}

\item 
\hypertarget{classBGPVarRW_ada96ac4bb7aaf0413ec5c51fcf939952}{
void {\bfseries write\_\-community} (const \hyperlink{classElement}{Element} \&e)}
\label{classBGPVarRW_ada96ac4bb7aaf0413ec5c51fcf939952}

\item 
\hypertarget{classBGPVarRW_a025a2f56911ed051e86bfb9e1caa7aca}{
void {\bfseries write\_\-med} (const \hyperlink{classElement}{Element} \&e)}
\label{classBGPVarRW_a025a2f56911ed051e86bfb9e1caa7aca}

\item 
\hypertarget{classBGPVarRW_a8cf48754b339c4b270878d399f053e66}{
void {\bfseries write\_\-med\_\-remove} (const \hyperlink{classElement}{Element} \&e)}
\label{classBGPVarRW_a8cf48754b339c4b270878d399f053e66}

\item 
\hypertarget{classBGPVarRW_a6a1c4258a416cb062ab2865a9fc2e0bf}{
void {\bfseries write\_\-tag} (const \hyperlink{classElement}{Element} \&e)}
\label{classBGPVarRW_a6a1c4258a416cb062ab2865a9fc2e0bf}

\item 
\hypertarget{classBGPVarRW_ac4b4379eb3bc61c39220f5bec7b7cec9}{
{\footnotesize template$<$$>$ }\\\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-network4} ()}
\label{classBGPVarRW_ac4b4379eb3bc61c39220f5bec7b7cec9}

\item 
\hypertarget{classBGPVarRW_a1adb89d599a3da49131dc25c989acb1d}{
{\footnotesize template$<$$>$ }\\\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-network6} ()}
\label{classBGPVarRW_a1adb89d599a3da49131dc25c989acb1d}

\item 
\hypertarget{classBGPVarRW_af627172a8151b0883cdd1798de1347c2}{
{\footnotesize template$<$$>$ }\\\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-nexthop6} ()}
\label{classBGPVarRW_af627172a8151b0883cdd1798de1347c2}

\item 
\hypertarget{classBGPVarRW_a054d8437bc331454715bad9e73912ae8}{
{\footnotesize template$<$$>$ }\\\hyperlink{classElement}{Element} $\ast$ {\bfseries read\_\-nexthop4} ()}
\label{classBGPVarRW_a054d8437bc331454715bad9e73912ae8}

\item 
\hypertarget{classBGPVarRW_a7046d01a275fcab9c210e9a7aa47820f}{
{\footnotesize template$<$$>$ }\\void {\bfseries write\_\-nexthop4} (const \hyperlink{classElement}{Element} \&)}
\label{classBGPVarRW_a7046d01a275fcab9c210e9a7aa47820f}

\item 
\hypertarget{classBGPVarRW_a5392dca79201831ffe27a90efc0900e4}{
{\footnotesize template$<$$>$ }\\void {\bfseries write\_\-nexthop6} (const \hyperlink{classElement}{Element} \&e)}
\label{classBGPVarRW_a5392dca79201831ffe27a90efc0900e4}

\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classBGPVarRW_a246d252e810b50c8205adf11e592d136}{
\hyperlink{classElementFactory}{ElementFactory} {\bfseries \_\-ef}}
\label{classBGPVarRW_a246d252e810b50c8205adf11e592d136}

\item 
\hypertarget{classBGPVarRW_a481f1c7f380f7c69eb23c3578e418b4d}{
string {\bfseries \_\-name}}
\label{classBGPVarRW_a481f1c7f380f7c69eb23c3578e418b4d}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classBGPVarRW_aa9b0ced0da4096e47ffc9b8dfac8e9fc}{
void {\bfseries cleanup} ()}
\label{classBGPVarRW_aa9b0ced0da4096e47ffc9b8dfac8e9fc}

\item 
\hypertarget{classBGPVarRW_a1b45d9ccf682e95fad4cd51d344271f3}{
void {\bfseries write\_\-nexthop} (const \hyperlink{classElement}{Element} \&e)}
\label{classBGPVarRW_a1b45d9ccf682e95fad4cd51d344271f3}

\item 
\hypertarget{classBGPVarRW_ade753a067fb3f8475e86afd5103be020}{
{\bfseries BGPVarRW} (const \hyperlink{classBGPVarRW}{BGPVarRW} \&)}
\label{classBGPVarRW_ade753a067fb3f8475e86afd5103be020}

\item 
\hypertarget{classBGPVarRW_ac36538a613764ecdd1233742c8d3db23}{
\hyperlink{classBGPVarRW}{BGPVarRW} \& {\bfseries operator=} (const \hyperlink{classBGPVarRW}{BGPVarRW} \&)}
\label{classBGPVarRW_ac36538a613764ecdd1233742c8d3db23}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classBGPVarRW_a2842900066f7acef294d5f1dd9a4ee10}{
\hyperlink{classInternalMessage}{InternalMessage}$<$ A $>$ $\ast$ {\bfseries \_\-rtmsg}}
\label{classBGPVarRW_a2842900066f7acef294d5f1dd9a4ee10}

\item 
\hypertarget{classBGPVarRW_a91ca621bbeefd7de26888c53593d4e18}{
bool {\bfseries \_\-got\_\-fmsg}}
\label{classBGPVarRW_a91ca621bbeefd7de26888c53593d4e18}

\item 
\hypertarget{classBGPVarRW_a86278aabd2d46bbe939f1a689d861b52}{
\hyperlink{classPolicyTags}{PolicyTags} $\ast$ {\bfseries \_\-ptags}}
\label{classBGPVarRW_a86278aabd2d46bbe939f1a689d861b52}

\item 
\hypertarget{classBGPVarRW_a16a4f6f45690c5bdbbca6a6c746aacb8}{
bool {\bfseries \_\-wrote\_\-ptags}}
\label{classBGPVarRW_a16a4f6f45690c5bdbbca6a6c746aacb8}

\item 
\hypertarget{classBGPVarRW_a42e36386e24aeddab3c5a19732b66102}{
FPAListRef {\bfseries \_\-palist}}
\label{classBGPVarRW_a42e36386e24aeddab3c5a19732b66102}

\item 
\hypertarget{classBGPVarRW_a792b485b67dc18d5558c3dac431d9633}{
bool {\bfseries \_\-no\_\-modify}}
\label{classBGPVarRW_a792b485b67dc18d5558c3dac431d9633}

\item 
\hypertarget{classBGPVarRW_a5be122249559eae0a7469a9eb20972cb}{
bool {\bfseries \_\-modified}}
\label{classBGPVarRW_a5be122249559eae0a7469a9eb20972cb}

\item 
\hypertarget{classBGPVarRW_a43055b2413dfd1d4974946ec52bae9c4}{
\hyperlink{classref__ptr}{RefPf} {\bfseries \_\-pfilter} \mbox{[}3\mbox{]}}
\label{classBGPVarRW_a43055b2413dfd1d4974946ec52bae9c4}

\item 
\hypertarget{classBGPVarRW_a67e3e8354b8571a8c13f44b271e40490}{
bool {\bfseries \_\-wrote\_\-pfilter} \mbox{[}3\mbox{]}}
\label{classBGPVarRW_a67e3e8354b8571a8c13f44b271e40490}

\item 
\hypertarget{classBGPVarRW_a12ef414441f801f98e144111c6139367}{
bool {\bfseries \_\-route\_\-modify}}
\label{classBGPVarRW_a12ef414441f801f98e144111c6139367}

\item 
\hypertarget{classBGPVarRW_a1322b9f264c8c779db9a8e80962c7b86}{
A {\bfseries \_\-self}}
\label{classBGPVarRW_a1322b9f264c8c779db9a8e80962c7b86}

\item 
\hypertarget{classBGPVarRW_a58936c2cf550d6ad7ee9a8fb6981e779}{
A {\bfseries \_\-peer}}
\label{classBGPVarRW_a58936c2cf550d6ad7ee9a8fb6981e779}

\item 
\hypertarget{classBGPVarRW_aa2fc9c848ad5ebaa3e9fff8a78fc4c01}{
uint32\_\-t {\bfseries \_\-aggr\_\-prefix\_\-len}}
\label{classBGPVarRW_aa2fc9c848ad5ebaa3e9fff8a78fc4c01}

\item 
\hypertarget{classBGPVarRW_abbbd812b35b8f2070b28420f0081ff5f}{
bool {\bfseries \_\-aggr\_\-brief\_\-mode}}
\label{classBGPVarRW_abbbd812b35b8f2070b28420f0081ff5f}

\end{DoxyCompactItemize}
\subsection*{Static Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classBGPVarRW_a14f94997004852386ec11d7827a04575}{
static \hyperlink{classBGPVarRWCallbacks}{BGPVarRWCallbacks}$<$ A $>$ {\bfseries \_\-callbacks}}
\label{classBGPVarRW_a14f94997004852386ec11d7827a04575}

\end{DoxyCompactItemize}


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

Allows reading an modifying a BGP route. If \hyperlink{protocolthe-p}{the} route is modified, \hyperlink{protocolthe-p}{the} user is responsible for retrieving \hyperlink{protocolthe-p}{the} filtered message and deleting it.

Non-\/copyable due to inheritance from \hyperlink{classVarRW}{VarRW}. 

\subsection{Constructor \& Destructor Documentation}
\hypertarget{classBGPVarRW_a92848be2c2afcf1a7506b51ee7ec6e80}{
\index{BGPVarRW@{BGPVarRW}!BGPVarRW@{BGPVarRW}}
\index{BGPVarRW@{BGPVarRW}!BGPVarRW@{BGPVarRW}}
\subsubsection[{BGPVarRW}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ {\bf BGPVarRW}$<$ A $>$::{\bf BGPVarRW} (
\begin{DoxyParamCaption}
\item[{const string \&}]{name}
\end{DoxyParamCaption}
)}}
\label{classBGPVarRW_a92848be2c2afcf1a7506b51ee7ec6e80}


This varrw allows for routes to remain untouched even though they are filtered. 

This is useful in order to check if a route will be accepted or rejected, without caring about its modifications.


\begin{DoxyParams}{Parameters}
{\em name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} filter to print in case of tracing. \\
\hline
\end{DoxyParams}


\subsection{Member Function Documentation}
\hypertarget{classBGPVarRW_aabb0f72bfc2b9b8d92bb43ade9a84481}{
\index{BGPVarRW@{BGPVarRW}!attach\_\-route@{attach\_\-route}}
\index{attach\_\-route@{attach\_\-route}!BGPVarRW@{BGPVarRW}}
\subsubsection[{attach\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A$>$ void {\bf BGPVarRW}$<$ A $>$::attach\_\-route (
\begin{DoxyParamCaption}
\item[{{\bf InternalMessage}$<$ A $>$ \&}]{rtmsg, }
\item[{bool}]{no\_\-modify}
\end{DoxyParamCaption}
)}}
\label{classBGPVarRW_aabb0f72bfc2b9b8d92bb43ade9a84481}


Attach a route to \hyperlink{protocolthe-p}{the} varrw. 


\begin{DoxyParams}{Parameters}
{\em rtmsg} & \hyperlink{protocolthe-p}{the} message to filter and possibly modify. \\
\hline
{\em no\_\-modify} & if true, \hyperlink{protocolthe-p}{the} route will not be modified. \\
\hline
\end{DoxyParams}
\hypertarget{classBGPVarRW_a7df4f3229c9dca95dff455d032923ce9}{
\index{BGPVarRW@{BGPVarRW}!filtered\_\-message@{filtered\_\-message}}
\index{filtered\_\-message@{filtered\_\-message}!BGPVarRW@{BGPVarRW}}
\subsubsection[{filtered\_\-message}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ {\bf InternalMessage}$<$ A $>$ $\ast$ {\bf BGPVarRW}$<$ A $>$::filtered\_\-message (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classBGPVarRW_a7df4f3229c9dca95dff455d032923ce9}


Caller owns \hyperlink{protocolthe-p}{the} message \mbox{[}responsible for delete\mbox{]}. 

Calling multiple times will always return \hyperlink{protocolthe-p}{the} same message, not a copy.

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} modified message. Null if no changes were made. 
\end{DoxyReturn}
\hypertarget{classBGPVarRW_a5d5f9d038f65338f695090bf13a5ab41}{
\index{BGPVarRW@{BGPVarRW}!modified@{modified}}
\index{modified@{modified}!BGPVarRW@{BGPVarRW}}
\subsubsection[{modified}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ bool {\bf BGPVarRW}$<$ A $>$::modified (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classBGPVarRW_a5d5f9d038f65338f695090bf13a5ab41}


If a route is modified, \hyperlink{protocolthe-p}{the} caller may obtain it via \hyperlink{protocolthe-p}{the} filtered\_\-message call. 

\begin{DoxyReturn}{Returns}
true if route was modified. False otherwise. 
\end{DoxyReturn}
\hypertarget{classBGPVarRW_a71e23403bffb96b011a1e49890e3dbda}{
\index{BGPVarRW@{BGPVarRW}!more\_\-tracelog@{more\_\-tracelog}}
\index{more\_\-tracelog@{more\_\-tracelog}!BGPVarRW@{BGPVarRW}}
\subsubsection[{more\_\-tracelog}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ string {\bf BGPVarRW}$<$ A $>$::more\_\-tracelog (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classBGPVarRW_a71e23403bffb96b011a1e49890e3dbda}


\hyperlink{classOutput}{Output} basic BGP specific information. 

\begin{DoxyReturn}{Returns}
BGP trace based on verbosity level returned from \hyperlink{classVarRW_a8f03ed97ac2c405c4ac912cc3d07f64e}{trace()}. 
\end{DoxyReturn}


Reimplemented from \hyperlink{classVarRW_ad65516d63a33e2cd09fd1dedb562ca2d}{VarRW}.

\hypertarget{classBGPVarRW_ae3b9f6b2b988994652f5eec887dadcce}{
\index{BGPVarRW@{BGPVarRW}!read\_\-neighbor@{read\_\-neighbor}}
\index{read\_\-neighbor@{read\_\-neighbor}!BGPVarRW@{BGPVarRW}}
\subsubsection[{read\_\-neighbor}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ {\bf Element} $\ast$ {\bf BGPVarRW}$<$ A $>$::read\_\-neighbor (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classBGPVarRW_ae3b9f6b2b988994652f5eec887dadcce}


Reads \hyperlink{protocolthe-p}{the} neighbor variable. 

This is different on input/output branch.

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} neighbor variable. 
\end{DoxyReturn}


Reimplemented in \hyperlink{classBGPVarRWExport_abdd3c95c21f0e1496d3893ca6d60334d}{BGPVarRWExport$<$ A $>$}.

\hypertarget{classBGPVarRW_ad1bc46bb6a1d046aac749b343b6f5ba8}{
\index{BGPVarRW@{BGPVarRW}!read\_\-neighbor\_\-base\_\-cb@{read\_\-neighbor\_\-base\_\-cb}}
\index{read\_\-neighbor\_\-base\_\-cb@{read\_\-neighbor\_\-base\_\-cb}!BGPVarRW@{BGPVarRW}}
\subsubsection[{read\_\-neighbor\_\-base\_\-cb}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A$>$ {\bf Element}$\ast$ {\bf BGPVarRW}$<$ A $>$::read\_\-neighbor\_\-base\_\-cb (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classBGPVarRW_ad1bc46bb6a1d046aac749b343b6f5ba8}


Callback wrapper used to call \hyperlink{protocolthe-p}{the} virtual \hyperlink{classBGPVarRW_ae3b9f6b2b988994652f5eec887dadcce}{read\_\-neighbor()} method. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} neighbor variable. 
\end{DoxyReturn}
\hypertarget{classBGPVarRW_aa64291a056e691381e7a9ff35c804a08}{
\index{BGPVarRW@{BGPVarRW}!single\_\-read@{single\_\-read}}
\index{single\_\-read@{single\_\-read}!BGPVarRW@{BGPVarRW}}
\subsubsection[{single\_\-read}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ {\bf Element} $\ast$ {\bf BGPVarRW}$<$ A $>$::single\_\-read (
\begin{DoxyParamCaption}
\item[{const Id \&}]{id}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classBGPVarRW_aa64291a056e691381e7a9ff35c804a08}


Read of a variable. 

The \hyperlink{classVarRW}{VarRW} needs to read a particular element. This may return NULL indicating ElemNull-\/-\/-\/i.e. variable not present in THIS route.

\begin{DoxyReturn}{Returns}
variable requested. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em id} & \hyperlink{protocolthe-p}{the} id of \hyperlink{protocolthe-p}{the} variable. \\
\hline
\end{DoxyParams}


Implements \hyperlink{classSingleVarRW_a54ef877baad0937b181563e8b5eef44a}{SingleVarRW}.

\hypertarget{classBGPVarRW_a9214997e92d06673c63b1a1f13908859}{
\index{BGPVarRW@{BGPVarRW}!single\_\-write@{single\_\-write}}
\index{single\_\-write@{single\_\-write}!BGPVarRW@{BGPVarRW}}
\subsubsection[{single\_\-write}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ void {\bf BGPVarRW}$<$ A $>$::single\_\-write (
\begin{DoxyParamCaption}
\item[{const Id \&}]{id, }
\item[{const {\bf Element} \&}]{e}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classBGPVarRW_a9214997e92d06673c63b1a1f13908859}


Write of a variable. 

The write MUST be performed now, as \hyperlink{protocolthe-p}{the} element pointer may become invalid after this call. Also, a single write will be called for each modified element.


\begin{DoxyParams}{Parameters}
{\em id} & identifier of variable to be written to. \\
\hline
{\em e} & value of variable. \\
\hline
\end{DoxyParams}


Implements \hyperlink{classSingleVarRW_a24cde180db3bac1e4554cafa1809ba7a}{SingleVarRW}.



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