\hypertarget{classMPUNReachNLRIAttribute}{
\section{MPUNReachNLRIAttribute$<$ A $>$ Class Template Reference}
\label{classMPUNReachNLRIAttribute}\index{MPUNReachNLRIAttribute@{MPUNReachNLRIAttribute}}
}
Inheritance diagram for MPUNReachNLRIAttribute$<$ A $>$:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.000000cm]{classMPUNReachNLRIAttribute}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classMPUNReachNLRIAttribute_aeda72fa73fafba99a6fa03ef5f81ae19}{
typedef list$<$ \hyperlink{classIPNet}{IPNet}$<$ A $>$ $>$::const\_\-iterator {\bfseries const\_\-iterator}}
\label{classMPUNReachNLRIAttribute_aeda72fa73fafba99a6fa03ef5f81ae19}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classMPUNReachNLRIAttribute_aca3043e8a1b7abb9107c921f0f590b0f}{
\hyperlink{classMPUNReachNLRIAttribute_aca3043e8a1b7abb9107c921f0f590b0f}{MPUNReachNLRIAttribute} (Safi safi)}
\label{classMPUNReachNLRIAttribute_aca3043e8a1b7abb9107c921f0f590b0f}

\begin{DoxyCompactList}\small\item\em Specialise these constructors for each AFI. \item\end{DoxyCompactList}\item 
\hypertarget{classMPUNReachNLRIAttribute_ad9958cfd348382038030ad0952bbf064}{
{\bfseries MPUNReachNLRIAttribute} (const uint8\_\-t $\ast$d)  throw (CorruptMessage)}
\label{classMPUNReachNLRIAttribute_ad9958cfd348382038030ad0952bbf064}

\item 
\hyperlink{classPathAttribute}{PathAttribute} $\ast$ \hyperlink{classMPUNReachNLRIAttribute_a6f8a694559f25534d5428350a87f8c1c}{clone} () const 
\begin{DoxyCompactList}\small\item\em Make a copy of \hyperlink{protocolthe-p}{the} current attribute. \item\end{DoxyCompactList}\item 
string \hyperlink{classMPUNReachNLRIAttribute_ad5db0cfb79fcde8aa5db3ae3ba323072}{str} () const 
\begin{DoxyCompactList}\small\item\em We need to encode an attribute to send to a peer. \item\end{DoxyCompactList}\item 
\hypertarget{classMPUNReachNLRIAttribute_ac7627daa5714ae0fa43017c161537b14}{
void {\bfseries add\_\-withdrawn} (const \hyperlink{classIPNet}{IPNet}$<$ A $>$ \&nlri)}
\label{classMPUNReachNLRIAttribute_ac7627daa5714ae0fa43017c161537b14}

\item 
\hypertarget{classMPUNReachNLRIAttribute_a94420db9dc6229271cd65f990f7ccb53}{
const list$<$ \hyperlink{classIPNet}{IPNet}$<$ A $>$ $>$ \& {\bfseries wr\_\-list} () const }
\label{classMPUNReachNLRIAttribute_a94420db9dc6229271cd65f990f7ccb53}

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

\item 
bool \hyperlink{classMPUNReachNLRIAttribute_afebddd55968e8b160c4b12ee1776d1bf}{encode} (uint8\_\-t $\ast$buf, size\_\-t \&wire\_\-size, const \hyperlink{classBGPPeerData}{BGPPeerData} $\ast$peerdata) const 
\begin{DoxyCompactList}\small\item\em encode a path attribute. \item\end{DoxyCompactList}\item 
{\footnotesize template$<$$>$ }\\bool \hyperlink{classMPUNReachNLRIAttribute_a504d2a2e9fc4b2244880d3ad28682bb5}{encode} (uint8\_\-t $\ast$buf, size\_\-t \&wire\_\-size, const \hyperlink{classBGPPeerData}{BGPPeerData} $\ast$peerdata) const
\begin{DoxyCompactList}\small\item\em encode a path attribute. \item\end{DoxyCompactList}\item 
{\footnotesize template$<$$>$ }\\bool \hyperlink{classMPUNReachNLRIAttribute_aaf9292ab2d6e71894bc51acc6ee11f63}{encode} (uint8\_\-t $\ast$buf, size\_\-t \&wire\_\-size, const \hyperlink{classBGPPeerData}{BGPPeerData} $\ast$peerdata) const
\begin{DoxyCompactList}\small\item\em encode a path attribute. \item\end{DoxyCompactList}\item 
\hypertarget{classMPUNReachNLRIAttribute_afa251867f6f8a7e1ae1aeafdd49b9055}{
{\footnotesize template$<$$>$ }\\{\bfseries MPUNReachNLRIAttribute} (Safi safi)}
\label{classMPUNReachNLRIAttribute_afa251867f6f8a7e1ae1aeafdd49b9055}

\item 
\hypertarget{classMPUNReachNLRIAttribute_afb255e76c87648f43ccc18c55f986a33}{
{\footnotesize template$<$$>$ }\\{\bfseries MPUNReachNLRIAttribute} (Safi safi)}
\label{classMPUNReachNLRIAttribute_afb255e76c87648f43ccc18c55f986a33}

\item 
\hypertarget{classMPUNReachNLRIAttribute_ab55825f8f7f7a96c53162ac471d8c264}{
{\footnotesize template$<$$>$ }\\{\bfseries MPUNReachNLRIAttribute} (const uint8\_\-t $\ast$d) throw(CorruptMessage)}
\label{classMPUNReachNLRIAttribute_ab55825f8f7f7a96c53162ac471d8c264}

\item 
\hypertarget{classMPUNReachNLRIAttribute_a9f0107ffc5d73f567da0173953702ee0}{
{\footnotesize template$<$$>$ }\\{\bfseries MPUNReachNLRIAttribute} (const uint8\_\-t $\ast$d) throw(CorruptMessage)}
\label{classMPUNReachNLRIAttribute_a9f0107ffc5d73f567da0173953702ee0}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classMPUNReachNLRIAttribute_adc7a4b76212466bee06512c4a6a85a5e}{
Afi {\bfseries \_\-afi}}
\label{classMPUNReachNLRIAttribute_adc7a4b76212466bee06512c4a6a85a5e}

\item 
\hypertarget{classMPUNReachNLRIAttribute_a696edcaade05318739bbfbcf3515e635}{
Safi {\bfseries \_\-safi}}
\label{classMPUNReachNLRIAttribute_a696edcaade05318739bbfbcf3515e635}

\item 
\hypertarget{classMPUNReachNLRIAttribute_a136860826f4e31cadc18fceb3eb78b97}{
list$<$ \hyperlink{classIPNet}{IPNet}$<$ A $>$ $>$ {\bfseries \_\-withdrawn}}
\label{classMPUNReachNLRIAttribute_a136860826f4e31cadc18fceb3eb78b97}

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



\subsection{Member Function Documentation}
\hypertarget{classMPUNReachNLRIAttribute_a6f8a694559f25534d5428350a87f8c1c}{
\index{MPUNReachNLRIAttribute@{MPUNReachNLRIAttribute}!clone@{clone}}
\index{clone@{clone}!MPUNReachNLRIAttribute@{MPUNReachNLRIAttribute}}
\subsubsection[{clone}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ {\bf PathAttribute} $\ast$ {\bf MPUNReachNLRIAttribute}$<$ A $>$::clone (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classMPUNReachNLRIAttribute_a6f8a694559f25534d5428350a87f8c1c}


Make a copy of \hyperlink{protocolthe-p}{the} current attribute. 

The derived class should use new to generate a copy of itself. The wire format representation will not be used by \hyperlink{protocolthe-p}{the} caller. 

Implements \hyperlink{classPathAttribute_a17f0c215d2873317797a899b7ac58ef6}{PathAttribute}.

\hypertarget{classMPUNReachNLRIAttribute_a504d2a2e9fc4b2244880d3ad28682bb5}{
\index{MPUNReachNLRIAttribute@{MPUNReachNLRIAttribute}!encode@{encode}}
\index{encode@{encode}!MPUNReachNLRIAttribute@{MPUNReachNLRIAttribute}}
\subsubsection[{encode}]{\setlength{\rightskip}{0pt plus 5cm}template$<$$>$ bool {\bf MPUNReachNLRIAttribute}$<$ {\bf IPv6} $>$::encode (
\begin{DoxyParamCaption}
\item[{uint8\_\-t $\ast$}]{buf, }
\item[{size\_\-t \&}]{wire\_\-size, }
\item[{const {\bf BGPPeerData} $\ast$}]{peerdata}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classMPUNReachNLRIAttribute_a504d2a2e9fc4b2244880d3ad28682bb5}


encode a path attribute. 

In a sane world, we'd use a virtual function for this. But we store so many path attributes that we can't afford \hyperlink{protocolthe-p}{the} overhead of a virtual function table for them, so we have to do this \hyperlink{protocolthe-p}{the} hard way

XXX THE ABOVE IS NO LONGER THE CASE. WE SHOULD REWRITE THIS TO USE VIRTUAL FUNCTIONS 

Implements \hyperlink{classPathAttribute_a5570039d9cd5e255bb187fd245861e09}{PathAttribute}.

\hypertarget{classMPUNReachNLRIAttribute_aaf9292ab2d6e71894bc51acc6ee11f63}{
\index{MPUNReachNLRIAttribute@{MPUNReachNLRIAttribute}!encode@{encode}}
\index{encode@{encode}!MPUNReachNLRIAttribute@{MPUNReachNLRIAttribute}}
\subsubsection[{encode}]{\setlength{\rightskip}{0pt plus 5cm}template$<$$>$ bool {\bf MPUNReachNLRIAttribute}$<$ {\bf IPv4} $>$::encode (
\begin{DoxyParamCaption}
\item[{uint8\_\-t $\ast$}]{buf, }
\item[{size\_\-t \&}]{wire\_\-size, }
\item[{const {\bf BGPPeerData} $\ast$}]{peerdata}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classMPUNReachNLRIAttribute_aaf9292ab2d6e71894bc51acc6ee11f63}


encode a path attribute. 

In a sane world, we'd use a virtual function for this. But we store so many path attributes that we can't afford \hyperlink{protocolthe-p}{the} overhead of a virtual function table for them, so we have to do this \hyperlink{protocolthe-p}{the} hard way

XXX THE ABOVE IS NO LONGER THE CASE. WE SHOULD REWRITE THIS TO USE VIRTUAL FUNCTIONS 

Implements \hyperlink{classPathAttribute_a5570039d9cd5e255bb187fd245861e09}{PathAttribute}.

\hypertarget{classMPUNReachNLRIAttribute_afebddd55968e8b160c4b12ee1776d1bf}{
\index{MPUNReachNLRIAttribute@{MPUNReachNLRIAttribute}!encode@{encode}}
\index{encode@{encode}!MPUNReachNLRIAttribute@{MPUNReachNLRIAttribute}}
\subsubsection[{encode}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A$>$ bool {\bf MPUNReachNLRIAttribute}$<$ A $>$::encode (
\begin{DoxyParamCaption}
\item[{uint8\_\-t $\ast$}]{buf, }
\item[{size\_\-t \&}]{wire\_\-size, }
\item[{const {\bf BGPPeerData} $\ast$}]{peerdata}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classMPUNReachNLRIAttribute_afebddd55968e8b160c4b12ee1776d1bf}


encode a path attribute. 

In a sane world, we'd use a virtual function for this. But we store so many path attributes that we can't afford \hyperlink{protocolthe-p}{the} overhead of a virtual function table for them, so we have to do this \hyperlink{protocolthe-p}{the} hard way

XXX THE ABOVE IS NO LONGER THE CASE. WE SHOULD REWRITE THIS TO USE VIRTUAL FUNCTIONS 

Implements \hyperlink{classPathAttribute_a5570039d9cd5e255bb187fd245861e09}{PathAttribute}.

\hypertarget{classMPUNReachNLRIAttribute_ad5db0cfb79fcde8aa5db3ae3ba323072}{
\index{MPUNReachNLRIAttribute@{MPUNReachNLRIAttribute}!str@{str}}
\index{str@{str}!MPUNReachNLRIAttribute@{MPUNReachNLRIAttribute}}
\subsubsection[{str}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ string {\bf MPUNReachNLRIAttribute}$<$ A $>$::str (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classMPUNReachNLRIAttribute_ad5db0cfb79fcde8aa5db3ae3ba323072}


We need to encode an attribute to send to a peer. 

However we only have \hyperlink{protocolthe-p}{the} canonically encoded byte stream data for it. Sometimes that is fine, and we should just send that; sometimes we need to decode and re-\/encode for this specific peer. 

Reimplemented from \hyperlink{classPathAttribute_aae2900e4b96589e10291f96d3f584b6e}{PathAttribute}.



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