\hypertarget{classFastPathAttributeList}{
\section{FastPathAttributeList$<$ A $>$ Class Template Reference}
\label{classFastPathAttributeList}\index{FastPathAttributeList@{FastPathAttributeList}}
}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classFastPathAttributeList_a4c8c4afb53bb3e107e041825869954be}{
{\bfseries FastPathAttributeList} (\hyperlink{classPAListRef}{PAListRef}$<$ A $>$ \&palist)}
\label{classFastPathAttributeList_a4c8c4afb53bb3e107e041825869954be}

\item 
\hypertarget{classFastPathAttributeList_adbb9e575d484e241e71d522e29a0ed52}{
{\bfseries FastPathAttributeList} (\hyperlink{classFastPathAttributeList}{FastPathAttributeList}$<$ A $>$ \&fpalist)}
\label{classFastPathAttributeList_adbb9e575d484e241e71d522e29a0ed52}

\item 
\hypertarget{classFastPathAttributeList_a8f525498823d42d24a5e5b6c9fba1382}{
{\bfseries FastPathAttributeList} (const \hyperlink{classNextHopAttribute}{NextHopAttribute}$<$ A $>$ \&nexthop, const \hyperlink{classASPathAttribute}{ASPathAttribute} \&aspath, const \hyperlink{classOriginAttribute}{OriginAttribute} \&origin)}
\label{classFastPathAttributeList_a8f525498823d42d24a5e5b6c9fba1382}

\item 
void \hyperlink{classFastPathAttributeList_ac81f9d816c6bc258f5f898a9f0579f44}{load\_\-raw\_\-data} (const uint8\_\-t $\ast$data, size\_\-t size, const \hyperlink{classBGPPeerData}{BGPPeerData} $\ast$peer, bool have\_\-nlri, \hyperlink{classBGPMain}{BGPMain} $\ast$mainprocess, bool do\_\-checks)
\begin{DoxyCompactList}\small\item\em \hyperlink{classLoad}{Load} \hyperlink{protocolthe-p}{the} raw path attribute data from an update message. \item\end{DoxyCompactList}\item 
\hypertarget{classFastPathAttributeList_a23c927c07474a84ab5dce19687c3408a}{
void {\bfseries lock} () const }
\label{classFastPathAttributeList_a23c927c07474a84ab5dce19687c3408a}

\item 
\hypertarget{classFastPathAttributeList_a41775ada657eb43d68c083c40dbbdc48}{
void {\bfseries unlock} () const }
\label{classFastPathAttributeList_a41775ada657eb43d68c083c40dbbdc48}

\item 
\hypertarget{classFastPathAttributeList_ab959e3344ce0ab946a9c73ed4f4accca}{
bool {\bfseries is\_\-locked} () const }
\label{classFastPathAttributeList_ab959e3344ce0ab946a9c73ed4f4accca}

\item 
\hypertarget{classFastPathAttributeList_a8aa0adf9febe638c2bd1b8424d807c9e}{
\hyperlink{classNextHopAttribute}{NextHopAttribute}$<$ A $>$ $\ast$ {\bfseries nexthop\_\-att} ()}
\label{classFastPathAttributeList_a8aa0adf9febe638c2bd1b8424d807c9e}

\item 
\hypertarget{classFastPathAttributeList_a44c67a0452cae4c7c0ced38a2efd04b9}{
\hyperlink{classASPathAttribute}{ASPathAttribute} $\ast$ {\bfseries aspath\_\-att} ()}
\label{classFastPathAttributeList_a44c67a0452cae4c7c0ced38a2efd04b9}

\item 
\hypertarget{classFastPathAttributeList_a33424ef11b3a698fdcd253c6cba60031}{
\hyperlink{classAS4PathAttribute}{AS4PathAttribute} $\ast$ {\bfseries as4path\_\-att} ()}
\label{classFastPathAttributeList_a33424ef11b3a698fdcd253c6cba60031}

\item 
\hypertarget{classFastPathAttributeList_aa6aea62d918002d44fda685397e35e70}{
\hyperlink{classOriginAttribute}{OriginAttribute} $\ast$ {\bfseries origin\_\-att} ()}
\label{classFastPathAttributeList_aa6aea62d918002d44fda685397e35e70}

\item 
\hypertarget{classFastPathAttributeList_aaa4381430b02a7bd58d41a303339cbd7}{
\hyperlink{classMEDAttribute}{MEDAttribute} $\ast$ {\bfseries med\_\-att} ()}
\label{classFastPathAttributeList_aaa4381430b02a7bd58d41a303339cbd7}

\item 
\hypertarget{classFastPathAttributeList_a4e785baf6477a90d79ab593f4669cef9}{
\hyperlink{classLocalPrefAttribute}{LocalPrefAttribute} $\ast$ {\bfseries local\_\-pref\_\-att} ()}
\label{classFastPathAttributeList_a4e785baf6477a90d79ab593f4669cef9}

\item 
\hypertarget{classFastPathAttributeList_a043084cae6cf4dc55bf0f516d6ea7428}{
\hyperlink{classAtomicAggAttribute}{AtomicAggAttribute} $\ast$ {\bfseries atomic\_\-aggregate\_\-att} ()}
\label{classFastPathAttributeList_a043084cae6cf4dc55bf0f516d6ea7428}

\item 
\hypertarget{classFastPathAttributeList_a09055b5cf563b36771fe37adeea83a68}{
\hyperlink{classAggregatorAttribute}{AggregatorAttribute} $\ast$ {\bfseries aggregator\_\-att} ()}
\label{classFastPathAttributeList_a09055b5cf563b36771fe37adeea83a68}

\item 
\hypertarget{classFastPathAttributeList_a66ae86caa6add4ec6865a2c36315ca0b}{
\hyperlink{classCommunityAttribute}{CommunityAttribute} $\ast$ {\bfseries community\_\-att} ()}
\label{classFastPathAttributeList_a66ae86caa6add4ec6865a2c36315ca0b}

\item 
\hypertarget{classFastPathAttributeList_a0312016eef70f483d95f215a6db5d780}{
\hyperlink{classOriginatorIDAttribute}{OriginatorIDAttribute} $\ast$ {\bfseries originator\_\-id} ()}
\label{classFastPathAttributeList_a0312016eef70f483d95f215a6db5d780}

\item 
\hypertarget{classFastPathAttributeList_a31b991a4ed74109c02c9552f5bf5ea03}{
\hyperlink{classClusterListAttribute}{ClusterListAttribute} $\ast$ {\bfseries cluster\_\-list} ()}
\label{classFastPathAttributeList_a31b991a4ed74109c02c9552f5bf5ea03}

\item 
\hypertarget{classFastPathAttributeList_a6f049c1858d1b291ba50ac667fc3a527}{
{\footnotesize template$<$typename A2 $>$ }\\\hyperlink{classMPReachNLRIAttribute}{MPReachNLRIAttribute}$<$ A2 $>$ $\ast$ {\bfseries mpreach} (Safi)}
\label{classFastPathAttributeList_a6f049c1858d1b291ba50ac667fc3a527}

\item 
\hypertarget{classFastPathAttributeList_aa648378a9c71618ca6bb557e3ba7729a}{
{\footnotesize template$<$typename A2 $>$ }\\\hyperlink{classMPUNReachNLRIAttribute}{MPUNReachNLRIAttribute}$<$ A2 $>$ $\ast$ {\bfseries mpunreach} (Safi)}
\label{classFastPathAttributeList_aa648378a9c71618ca6bb557e3ba7729a}

\item 
\hypertarget{classFastPathAttributeList_af881cc9cc962f501041ce8112562337a}{
A \& {\bfseries nexthop} ()}
\label{classFastPathAttributeList_af881cc9cc962f501041ce8112562337a}

\item 
\hypertarget{classFastPathAttributeList_a15c6cbc0148d2a23031411a79d13d074}{
\hyperlink{classASPath}{ASPath} \& {\bfseries aspath} ()}
\label{classFastPathAttributeList_a15c6cbc0148d2a23031411a79d13d074}

\item 
\hypertarget{classFastPathAttributeList_ab9bda7a93413c1044eef18a55c9822b3}{
OriginType {\bfseries origin} ()}
\label{classFastPathAttributeList_ab9bda7a93413c1044eef18a55c9822b3}

\item 
\hypertarget{classFastPathAttributeList_a637a87c85b1e131dcf4b1c0dd87fbae1}{
virtual bool {\bfseries complete} () const }
\label{classFastPathAttributeList_a637a87c85b1e131dcf4b1c0dd87fbae1}

\item 
\hypertarget{classFastPathAttributeList_a3d066360fd93e085bf35fb760f4bc219}{
void \hyperlink{classFastPathAttributeList_a3d066360fd93e085bf35fb760f4bc219}{add\_\-path\_\-attribute} (const \hyperlink{classPathAttribute}{PathAttribute} \&att)}
\label{classFastPathAttributeList_a3d066360fd93e085bf35fb760f4bc219}

\begin{DoxyCompactList}\small\item\em Add this path attribute to \hyperlink{protocolthe-p}{the} list after making a local copy. \item\end{DoxyCompactList}\item 
\hypertarget{classFastPathAttributeList_a62558a420f517d83e9327686f7beb039}{
void \hyperlink{classFastPathAttributeList_a62558a420f517d83e9327686f7beb039}{add\_\-path\_\-attribute} (\hyperlink{classPathAttribute}{PathAttribute} $\ast$att)}
\label{classFastPathAttributeList_a62558a420f517d83e9327686f7beb039}

\begin{DoxyCompactList}\small\item\em Add this path attribute to \hyperlink{protocolthe-p}{the} list don't make a local copy. \item\end{DoxyCompactList}\item 
\hypertarget{classFastPathAttributeList_ae35407862dd239f8075e8bebb68763df}{
\hyperlink{classPathAttribute}{PathAttribute} $\ast$ \hyperlink{classFastPathAttributeList_ae35407862dd239f8075e8bebb68763df}{find\_\-attribute\_\-by\_\-type} (PathAttType type)}
\label{classFastPathAttributeList_ae35407862dd239f8075e8bebb68763df}

\begin{DoxyCompactList}\small\item\em return \hyperlink{protocolthe-p}{the} relevant path attribute, given \hyperlink{protocolthe-p}{the} PA type. \item\end{DoxyCompactList}\item 
\hypertarget{classFastPathAttributeList_ae2197ac87a323e1713d861633c94d6be}{
int \hyperlink{classFastPathAttributeList_ae2197ac87a323e1713d861633c94d6be}{max\_\-att} () const }
\label{classFastPathAttributeList_ae2197ac87a323e1713d861633c94d6be}

\begin{DoxyCompactList}\small\item\em return \hyperlink{protocolthe-p}{the} highest attribute type. \item\end{DoxyCompactList}\item 
void \hyperlink{classFastPathAttributeList_a4104b435faaab50418854aa6386910f9}{process\_\-unknown\_\-attributes} ()
\begin{DoxyCompactList}\small\item\em For unknown attributes: 1) If transitive set \hyperlink{protocolthe-p}{the} partial bit. \item\end{DoxyCompactList}\item 
\hypertarget{classFastPathAttributeList_a120f926598f144096bc7194802c40cdd}{
void {\bfseries replace\_\-nexthop} (const A \&nexthop)}
\label{classFastPathAttributeList_a120f926598f144096bc7194802c40cdd}

\item 
\hypertarget{classFastPathAttributeList_ab8cdfae1cb15a12c81137f64971571cc}{
void {\bfseries replace\_\-AS\_\-path} (const \hyperlink{classASPath}{ASPath} \&as\_\-path)}
\label{classFastPathAttributeList_ab8cdfae1cb15a12c81137f64971571cc}

\item 
\hypertarget{classFastPathAttributeList_a794998a16d53576e27e21aa1c9596886}{
void {\bfseries replace\_\-origin} (const OriginType \&origin)}
\label{classFastPathAttributeList_a794998a16d53576e27e21aa1c9596886}

\item 
\hypertarget{classFastPathAttributeList_a72135d94c632893dff45d3d782b8a042}{
void {\bfseries remove\_\-attribute\_\-by\_\-type} (PathAttType type)}
\label{classFastPathAttributeList_a72135d94c632893dff45d3d782b8a042}

\item 
\hypertarget{classFastPathAttributeList_a1ea0212b8cdc542892832632b142b1bc}{
void {\bfseries remove\_\-attribute\_\-by\_\-pointer} (\hyperlink{classPathAttribute}{PathAttribute} $\ast$)}
\label{classFastPathAttributeList_a1ea0212b8cdc542892832632b142b1bc}

\item 
bool \hyperlink{classFastPathAttributeList_a9b8f3d6813ea80faf363fc8f072b4948}{encode} (uint8\_\-t $\ast$buf, size\_\-t \&wire\_\-size, const \hyperlink{classBGPPeerData}{BGPPeerData} $\ast$peerdata) const 
\begin{DoxyCompactList}\small\item\em Encode \hyperlink{protocolthe-p}{the} PA List for transmission to \hyperlink{protocolthe-p}{the} specified peer. \item\end{DoxyCompactList}\item 
\hypertarget{classFastPathAttributeList_af32331167e6bbc3c4eac2fd3cb5bff3f}{
string {\bfseries str} () const }
\label{classFastPathAttributeList_af32331167e6bbc3c4eac2fd3cb5bff3f}

\item 
\hypertarget{classFastPathAttributeList_a3b32529c10cebe1ce6a1b447dcfec843}{
void {\bfseries canonicalize} () const }
\label{classFastPathAttributeList_a3b32529c10cebe1ce6a1b447dcfec843}

\item 
\hypertarget{classFastPathAttributeList_a7aa5621309fbff2f49dd6530ad666baf}{
const uint8\_\-t $\ast$ {\bfseries canonical\_\-data} () const }
\label{classFastPathAttributeList_a7aa5621309fbff2f49dd6530ad666baf}

\item 
\hypertarget{classFastPathAttributeList_a2b722ae61fc10696559feae78ebc3b46}{
size\_\-t {\bfseries canonical\_\-length} () const }
\label{classFastPathAttributeList_a2b722ae61fc10696559feae78ebc3b46}

\item 
\hypertarget{classFastPathAttributeList_a75df8f8837a8bb1d294e06c65fe0fd8b}{
bool {\bfseries canonicalized} () const }
\label{classFastPathAttributeList_a75df8f8837a8bb1d294e06c65fe0fd8b}

\item 
\hypertarget{classFastPathAttributeList_ab9bcf47c877e885d039034d3b1e228dd}{
bool {\bfseries operator==} (const \hyperlink{classFastPathAttributeList}{FastPathAttributeList}$<$ A $>$ \&him) const }
\label{classFastPathAttributeList_ab9bcf47c877e885d039034d3b1e228dd}

\item 
\hypertarget{classFastPathAttributeList_aab28686b6b4bb0bb0b799fb6adf89f87}{
bool {\bfseries is\_\-empty} () const }
\label{classFastPathAttributeList_aab28686b6b4bb0bb0b799fb6adf89f87}

\item 
\hypertarget{classFastPathAttributeList_abde1c70541e89738805480f9505ae4e0}{
int {\bfseries attribute\_\-count} () const }
\label{classFastPathAttributeList_abde1c70541e89738805480f9505ae4e0}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classFastPathAttributeList_aacdeb5726da701c79b6fd074d0e16073}{
void {\bfseries quick\_\-decode} (const uint8\_\-t $\ast$canonical\_\-data, uint16\_\-t canonical\_\-length)}
\label{classFastPathAttributeList_aacdeb5726da701c79b6fd074d0e16073}

\item 
\hypertarget{classFastPathAttributeList_ab99493bea6193c1e589b79bb69ea46db}{
void {\bfseries replace\_\-attribute} (\hyperlink{classPathAttribute}{PathAttribute} $\ast$att)}
\label{classFastPathAttributeList_ab99493bea6193c1e589b79bb69ea46db}

\item 
\hypertarget{classFastPathAttributeList_ac0ee53cf02833e107fe23d57b820ec4c}{
uint32\_\-t {\bfseries att\_\-order} (uint32\_\-t index) const }
\label{classFastPathAttributeList_ac0ee53cf02833e107fe23d57b820ec4c}

\item 
\hypertarget{classFastPathAttributeList_a279d0fdc4caa204a7584875829043035}{
void {\bfseries count\_\-attributes} ()}
\label{classFastPathAttributeList_a279d0fdc4caa204a7584875829043035}

\item 
bool \hyperlink{classFastPathAttributeList_a73a667a942d144e33efde2df7fd4ed41}{encode\_\-and\_\-decode\_\-attribute} (const uint8\_\-t $\ast$att\_\-data, const size\_\-t \&att\_\-len, uint8\_\-t $\ast$buf, size\_\-t \&wire\_\-size, const \hyperlink{classBGPPeerData}{BGPPeerData} $\ast$peerdata) const 
\begin{DoxyCompactList}\small\item\em We need to encode an attribute to send to a peer. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classFastPathAttributeList_a101f3f072fa183311116b0d4a69f73d0}{
const \hyperlink{classPAListRef}{PAListRef}$<$ A $>$ {\bfseries \_\-slave\_\-pa\_\-list}}
\label{classFastPathAttributeList_a101f3f072fa183311116b0d4a69f73d0}

\item 
\hypertarget{classFastPathAttributeList_a856f5361eaa49afb745edb81c88ec69c}{
const uint8\_\-t $\ast$ {\bfseries \_\-att\_\-bytes} \mbox{[}MAX\_\-ATTRIBUTE+1\mbox{]}}
\label{classFastPathAttributeList_a856f5361eaa49afb745edb81c88ec69c}

\item 
\hypertarget{classFastPathAttributeList_ae390f3ddedfea151295edc2551acc2b8}{
size\_\-t {\bfseries \_\-att\_\-lengths} \mbox{[}MAX\_\-ATTRIBUTE+1\mbox{]}}
\label{classFastPathAttributeList_ae390f3ddedfea151295edc2551acc2b8}

\item 
\hypertarget{classFastPathAttributeList_a534fdf8327b373c9efb261cbf730e70c}{
vector$<$ \hyperlink{classPathAttribute}{PathAttribute} $\ast$ $>$ {\bfseries \_\-att}}
\label{classFastPathAttributeList_a534fdf8327b373c9efb261cbf730e70c}

\item 
\hypertarget{classFastPathAttributeList_a25291118f32f9b60431a118fc1f8691e}{
int \hyperlink{classFastPathAttributeList_a25291118f32f9b60431a118fc1f8691e}{\_\-attribute\_\-count}}
\label{classFastPathAttributeList_a25291118f32f9b60431a118fc1f8691e}

\begin{DoxyCompactList}\small\item\em A count of \hyperlink{protocolthe-p}{the} number of attributes in this attribute list. \item\end{DoxyCompactList}\item 
bool \hyperlink{classFastPathAttributeList_a1b3f23151676da2aa50294ad60483068}{\_\-locked}
\begin{DoxyCompactList}\small\item\em We pass around ref\_\-ptrs to FastPathAttributeLists for efficiency reasons, and this greatly simplifies memory management. \item\end{DoxyCompactList}\item 
\hypertarget{classFastPathAttributeList_a08668e2482005696fca3a3218b256583}{
uint8\_\-t $\ast$ {\bfseries \_\-canonical\_\-data}}
\label{classFastPathAttributeList_a08668e2482005696fca3a3218b256583}

\item 
\hypertarget{classFastPathAttributeList_a00eebef8ad2ae73896591bf980d26579}{
uint16\_\-t {\bfseries \_\-canonical\_\-length}}
\label{classFastPathAttributeList_a00eebef8ad2ae73896591bf980d26579}

\item 
\hypertarget{classFastPathAttributeList_a502b2017638803982ae8a6a8afae04c8}{
bool {\bfseries \_\-canonicalized}}
\label{classFastPathAttributeList_a502b2017638803982ae8a6a8afae04c8}

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



\subsection{Member Function Documentation}
\hypertarget{classFastPathAttributeList_a9b8f3d6813ea80faf363fc8f072b4948}{
\index{FastPathAttributeList@{FastPathAttributeList}!encode@{encode}}
\index{encode@{encode}!FastPathAttributeList@{FastPathAttributeList}}
\subsubsection[{encode}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ bool {\bf FastPathAttributeList}$<$ A $>$::encode (
\begin{DoxyParamCaption}
\item[{uint8\_\-t $\ast$}]{buf, }
\item[{size\_\-t \&}]{wire\_\-size, }
\item[{const {\bf BGPPeerData} $\ast$}]{peerdata}
\end{DoxyParamCaption}
) const}}
\label{classFastPathAttributeList_a9b8f3d6813ea80faf363fc8f072b4948}


Encode \hyperlink{protocolthe-p}{the} PA List for transmission to \hyperlink{protocolthe-p}{the} specified peer. 

Note that as Some peers speak 4-\/byte AS numbers and some don't, \hyperlink{protocolthe-p}{the} encoding is peer-\/specific.

\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} data was successfully encoded; false if there wasn't enough space in \hyperlink{protocolthe-p}{the} buffer for \hyperlink{protocolthe-p}{the} data.
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em buf} & is \hyperlink{protocolthe-p}{the} buffer to encode into.\\
\hline
{\em wire\_\-size} & is given \hyperlink{protocolthe-p}{the} size of \hyperlink{protocolthe-p}{the} buffer to encode into, and returns \hyperlink{protocolthe-p}{the} amount of data placed in \hyperlink{protocolthe-p}{the} buffer.\\
\hline
{\em peer} & is \hyperlink{protocolthe-p}{the} peer to encode this for. Some peers want 4-\/byte AS numbers and some don't. \\
\hline
\end{DoxyParams}
\hypertarget{classFastPathAttributeList_a73a667a942d144e33efde2df7fd4ed41}{
\index{FastPathAttributeList@{FastPathAttributeList}!encode\_\-and\_\-decode\_\-attribute@{encode\_\-and\_\-decode\_\-attribute}}
\index{encode\_\-and\_\-decode\_\-attribute@{encode\_\-and\_\-decode\_\-attribute}!FastPathAttributeList@{FastPathAttributeList}}
\subsubsection[{encode\_\-and\_\-decode\_\-attribute}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ bool {\bf FastPathAttributeList}$<$ A $>$::encode\_\-and\_\-decode\_\-attribute (
\begin{DoxyParamCaption}
\item[{const uint8\_\-t $\ast$}]{att\_\-data, }
\item[{const size\_\-t \&}]{att\_\-len, }
\item[{uint8\_\-t $\ast$}]{buf, }
\item[{size\_\-t \&}]{wire\_\-size, }
\item[{const {\bf BGPPeerData} $\ast$}]{peerdata}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classFastPathAttributeList_a73a667a942d144e33efde2df7fd4ed41}


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. \hypertarget{classFastPathAttributeList_ac81f9d816c6bc258f5f898a9f0579f44}{
\index{FastPathAttributeList@{FastPathAttributeList}!load\_\-raw\_\-data@{load\_\-raw\_\-data}}
\index{load\_\-raw\_\-data@{load\_\-raw\_\-data}!FastPathAttributeList@{FastPathAttributeList}}
\subsubsection[{load\_\-raw\_\-data}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ void {\bf FastPathAttributeList}$<$ A $>$::load\_\-raw\_\-data (
\begin{DoxyParamCaption}
\item[{const uint8\_\-t $\ast$}]{data, }
\item[{size\_\-t}]{size, }
\item[{const {\bf BGPPeerData} $\ast$}]{peer, }
\item[{bool}]{have\_\-nlri, }
\item[{{\bf BGPMain} $\ast$}]{mainprocess, }
\item[{bool}]{do\_\-checks}
\end{DoxyParamCaption}
)}}
\label{classFastPathAttributeList_ac81f9d816c6bc258f5f898a9f0579f44}


\hyperlink{classLoad}{Load} \hyperlink{protocolthe-p}{the} raw path attribute data from an update message. 

This data will not yet be in canonical form. Call canonicalize() to put \hyperlink{protocolthe-p}{the} data in canonical form. \hypertarget{classFastPathAttributeList_a4104b435faaab50418854aa6386910f9}{
\index{FastPathAttributeList@{FastPathAttributeList}!process\_\-unknown\_\-attributes@{process\_\-unknown\_\-attributes}}
\index{process\_\-unknown\_\-attributes@{process\_\-unknown\_\-attributes}!FastPathAttributeList@{FastPathAttributeList}}
\subsubsection[{process\_\-unknown\_\-attributes}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A $>$ void {\bf FastPathAttributeList}$<$ A $>$::process\_\-unknown\_\-attributes (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classFastPathAttributeList_a4104b435faaab50418854aa6386910f9}


For unknown attributes: 1) If transitive set \hyperlink{protocolthe-p}{the} partial bit. 

2) If not transitive remove. 

\subsection{Member Data Documentation}
\hypertarget{classFastPathAttributeList_a1b3f23151676da2aa50294ad60483068}{
\index{FastPathAttributeList@{FastPathAttributeList}!\_\-locked@{\_\-locked}}
\index{\_\-locked@{\_\-locked}!FastPathAttributeList@{FastPathAttributeList}}
\subsubsection[{\_\-locked}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class A$>$ bool {\bf FastPathAttributeList}$<$ A $>$::{\bf \_\-locked}\hspace{0.3cm}{\ttfamily  \mbox{[}mutable, private\mbox{]}}}}
\label{classFastPathAttributeList_a1b3f23151676da2aa50294ad60483068}


We pass around ref\_\-ptrs to FastPathAttributeLists for efficiency reasons, and this greatly simplifies memory management. 

However, it makes it easy to store one temporarily in one place and \hyperlink{protocolthe-p}{the} while it's stored, modify it via a reference somewhere else. This would be a bug, but it's hard to catch. We add \hyperlink{protocolthe-p}{the} ability to lock \hyperlink{protocolthe-p}{the} contents to detect such a condition and aid debugging. 

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}
