\hypertarget{classAreaRouter}{
\section{AreaRouter$<$ A $>$ Class Template Reference}
\label{classAreaRouter}\index{AreaRouter@{AreaRouter}}
}


Area Router.  




{\ttfamily \#include $<$area\_\-router.hh$>$}

Inheritance diagram for AreaRouter$<$ A $>$:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.000000cm]{classAreaRouter}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structAreaRouter_1_1PeerState}{PeerState}
\begin{DoxyCompactList}\small\item\em Internal state that is required about each peer. \item\end{DoxyCompactList}\item 
struct \hyperlink{structAreaRouter_1_1Range}{Range}
\begin{DoxyCompactList}\small\item\em \hyperlink{structAreaRouter_1_1Range}{Range} to be summarised or suppressed from other areas. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
enum \hyperlink{classAreaRouter_af233c0554605c7b4f6d7b3f06a054568}{LsaSearch} \{ {\bfseries NOMATCH}, 
{\bfseries EQUIVALENT}, 
{\bfseries NEWER}, 
{\bfseries OLDER}
 \}
\begin{DoxyCompactList}\small\item\em Returned by compare\_\-lsa. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classAreaRouter_acd64d37e39363cd2e885af8a900e160e}{
{\bfseries AreaRouter} (\hyperlink{classOspf}{Ospf}$<$ A $>$ \&ospf, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{structOspfTypes_acbef6a08bc1aea6981897f45d61dae9e}{OspfTypes::AreaType} area\_\-type)}
\label{classAreaRouter_acd64d37e39363cd2e885af8a900e160e}

\item 
int \hyperlink{classAreaRouter_aa002ddc87b036cea1c5721a3ef716b43}{startup} ()
\begin{DoxyCompactList}\small\item\em Required by \hyperlink{protocolthe-p}{the} class Subsystem. \item\end{DoxyCompactList}\item 
int \hyperlink{classAreaRouter_ab736a45a2a61d70cc08523e8236d3e44}{shutdown} ()
\begin{DoxyCompactList}\small\item\em Required by \hyperlink{protocolthe-p}{the} class Subsystem. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a863777d752b0c18225a34600cf970b7d}{
void \hyperlink{classAreaRouter_a863777d752b0c18225a34600cf970b7d}{add\_\-peer} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peer)}
\label{classAreaRouter_a863777d752b0c18225a34600cf970b7d}

\begin{DoxyCompactList}\small\item\em Add peer. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a502262ae4f9a702c5d325f72ffd49c6f}{
void \hyperlink{classAreaRouter_a502262ae4f9a702c5d325f72ffd49c6f}{delete\_\-peer} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peer)}
\label{classAreaRouter_a502262ae4f9a702c5d325f72ffd49c6f}

\begin{DoxyCompactList}\small\item\em Delete peer. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a8af4247e20e0b082f35130506d777806}{
bool \hyperlink{classAreaRouter_a8af4247e20e0b082f35130506d777806}{peer\_\-up} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peer)}
\label{classAreaRouter_a8af4247e20e0b082f35130506d777806}

\begin{DoxyCompactList}\small\item\em \hyperlink{classPeer}{Peer} came up. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a9226cf040702b28fa6f348251195fb6f}{
bool \hyperlink{classAreaRouter_a9226cf040702b28fa6f348251195fb6f}{peer\_\-down} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peer)}
\label{classAreaRouter_a9226cf040702b28fa6f348251195fb6f}

\begin{DoxyCompactList}\small\item\em \hyperlink{classPeer}{Peer} went down. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_aaa344cc59ae0e8cc08b40471ef045aa9}{area\_\-border\_\-router\_\-transition} (bool up)
\begin{DoxyCompactList}\small\item\em Track border router transitions. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a7d4344e31008b5b3e9915046f1fbae8b}{
void \hyperlink{classAreaRouter_a7d4344e31008b5b3e9915046f1fbae8b}{change\_\-area\_\-router\_\-type} (\hyperlink{structOspfTypes_acbef6a08bc1aea6981897f45d61dae9e}{OspfTypes::AreaType} area\_\-type)}
\label{classAreaRouter_a7d4344e31008b5b3e9915046f1fbae8b}

\begin{DoxyCompactList}\small\item\em Change \hyperlink{protocolthe-p}{the} type of this area. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_a1afc608a07ea7bbda68f6d502ce947f0}{find\_\-global\_\-address} (uint32\_\-t adv, uint16\_\-t type, \hyperlink{classLsaTempStore}{LsaTempStore} \&lsa\_\-temp\_\-store, A \&global\_\-address) const 
\begin{DoxyCompactList}\small\item\em Given an advertising router and type find a global address if present in its associated Intra-\/Area-\/Prefix-\/LSA if present, OSPFv3 only. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_acb23fdd6f6fcf49a93740bc5ac46266a}{configured\_\-virtual\_\-link} () const 
\item 
\hypertarget{classAreaRouter_a93bc8dce48377912b1e3d5c365bf94ba}{
bool \hyperlink{classAreaRouter_a93bc8dce48377912b1e3d5c365bf94ba}{add\_\-virtual\_\-link} (\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid)}
\label{classAreaRouter_a93bc8dce48377912b1e3d5c365bf94ba}

\begin{DoxyCompactList}\small\item\em Add a virtual link endpoint. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a9e2a046f870b4a0d0724464325a22515}{
bool \hyperlink{classAreaRouter_a9e2a046f870b4a0d0724464325a22515}{remove\_\-virtual\_\-link} (\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid)}
\label{classAreaRouter_a9e2a046f870b4a0d0724464325a22515}

\begin{DoxyCompactList}\small\item\em Remove a virtual link endpoint. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a654aaff2c6a631b586d15ecfd1e1e118}{
void \hyperlink{classAreaRouter_a654aaff2c6a631b586d15ecfd1e1e118}{start\_\-virtual\_\-link} ()}
\label{classAreaRouter_a654aaff2c6a631b586d15ecfd1e1e118}

\begin{DoxyCompactList}\small\item\em Start looking through \hyperlink{protocolthe-p}{the} list of routers for a virtual link endpoint. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_a31ced4fb4fc5fb45d850e4b1900f6505}{check\_\-for\_\-virtual\_\-linkV2} (const \hyperlink{classRouteCmd}{RouteCmd}$<$ \hyperlink{classVertex}{Vertex} $>$ \&rc, \hyperlink{classref__ptr}{Lsa::LsaRef} lsar)
\begin{DoxyCompactList}\small\item\em Check this node to see if its a virtual link endpoint. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_ab124a102bdc5dab52b3c5b4924267277}{check\_\-for\_\-virtual\_\-linkV3} (const \hyperlink{classRouteCmd}{RouteCmd}$<$ \hyperlink{classVertex}{Vertex} $>$ \&rc, \hyperlink{classref__ptr}{Lsa::LsaRef} lsar, \hyperlink{classLsaTempStore}{LsaTempStore} \&lsa\_\-temp\_\-store)
\begin{DoxyCompactList}\small\item\em Check this node to see if its a virtual link endpoint. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_afd91f6446b557c7e841acc0c69dd7b0d}{
void \hyperlink{classAreaRouter_afd91f6446b557c7e841acc0c69dd7b0d}{end\_\-virtual\_\-link} ()}
\label{classAreaRouter_afd91f6446b557c7e841acc0c69dd7b0d}

\begin{DoxyCompactList}\small\item\em End looking through \hyperlink{protocolthe-p}{the} list of routers for a virtual link endpoint. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_a058996cb5ef9c09b52629549aba3869c}{find\_\-interface\_\-address} (\hyperlink{classref__ptr}{Lsa::LsaRef} src, \hyperlink{classref__ptr}{Lsa::LsaRef} dst, A \&interface) const 
\begin{DoxyCompactList}\small\item\em Given two LSAs find \hyperlink{protocolthe-p}{the} interface address of \hyperlink{protocolthe-p}{the} destination LSA. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_ac46041b906b2b71bcb2961d8fbe782c7}{find\_\-interface\_\-address} (\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid, uint32\_\-t interface\_\-id, A \&interface)
\begin{DoxyCompactList}\small\item\em OSPFv3 only. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_abd8244069580117562faba643b687146}{
bool \hyperlink{classAreaRouter_abd8244069580117562faba643b687146}{area\_\-range\_\-add} (\hyperlink{classIPNet}{IPNet}$<$ A $>$ net, bool advertise)}
\label{classAreaRouter_abd8244069580117562faba643b687146}

\begin{DoxyCompactList}\small\item\em Add area range. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a76317303a3a08ac331568e28df9456b6}{
bool \hyperlink{classAreaRouter_a76317303a3a08ac331568e28df9456b6}{area\_\-range\_\-delete} (\hyperlink{classIPNet}{IPNet}$<$ A $>$ net)}
\label{classAreaRouter_a76317303a3a08ac331568e28df9456b6}

\begin{DoxyCompactList}\small\item\em Delete area range. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a0abfa1460d4b8bd8786b1f595deee2f1}{
bool \hyperlink{classAreaRouter_a0abfa1460d4b8bd8786b1f595deee2f1}{area\_\-range\_\-change\_\-state} (\hyperlink{classIPNet}{IPNet}$<$ A $>$ net, bool advertise)}
\label{classAreaRouter_a0abfa1460d4b8bd8786b1f595deee2f1}

\begin{DoxyCompactList}\small\item\em Change \hyperlink{protocolthe-p}{the} advertised state of this area. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a9eed5940f4dc57eb772f17620f9f6253}{
bool \hyperlink{classAreaRouter_a9eed5940f4dc57eb772f17620f9f6253}{area\_\-range\_\-covered} (\hyperlink{classIPNet}{IPNet}$<$ A $>$ net, bool \&advertise)}
\label{classAreaRouter_a9eed5940f4dc57eb772f17620f9f6253}

\begin{DoxyCompactList}\small\item\em Is network covered by an area range and if it is should it be advertised. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_ac91716ee9e7827718adb41153b5cacd3}{
bool \hyperlink{classAreaRouter_ac91716ee9e7827718adb41153b5cacd3}{area\_\-range\_\-covering} (\hyperlink{classIPNet}{IPNet}$<$ A $>$ net, \hyperlink{classIPNet}{IPNet}$<$ A $>$ \&sumnet)}
\label{classAreaRouter_ac91716ee9e7827718adb41153b5cacd3}

\begin{DoxyCompactList}\small\item\em This network falls in a covered area range, return \hyperlink{protocolthe-p}{the} covering range. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a7f6e6b86a6afd9ee3bba4f9a4df66fbd}{
bool \hyperlink{classAreaRouter_a7f6e6b86a6afd9ee3bba4f9a4df66fbd}{area\_\-range\_\-configured} ()}
\label{classAreaRouter_a7f6e6b86a6afd9ee3bba4f9a4df66fbd}

\begin{DoxyCompactList}\small\item\em Does this area have any area ranges configured. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a4b849f8af5140d32e50a3c16f131d476}{
bool \hyperlink{classAreaRouter_a4b849f8af5140d32e50a3c16f131d476}{originate\_\-default\_\-route} (bool enable)}
\label{classAreaRouter_a4b849f8af5140d32e50a3c16f131d476}

\begin{DoxyCompactList}\small\item\em If this is a \char`\"{}stub\char`\"{} or \char`\"{}nssa\char`\"{} area toggle \hyperlink{protocolthe-p}{the} sending of a default route. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_adf8e61217f1f8c4c88ef1fa3b26985d5}{
bool \hyperlink{classAreaRouter_adf8e61217f1f8c4c88ef1fa3b26985d5}{stub\_\-default\_\-cost} (uint32\_\-t cost)}
\label{classAreaRouter_adf8e61217f1f8c4c88ef1fa3b26985d5}

\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} StubDefaultCost, \hyperlink{protocolthe-p}{the} default cost sent in a default route in a \char`\"{}stub\char`\"{} or \char`\"{}nssa\char`\"{} area. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a6889dd97238cdc23cad845d3903147ca}{
bool \hyperlink{classAreaRouter_a6889dd97238cdc23cad845d3903147ca}{summaries} (bool enable)}
\label{classAreaRouter_a6889dd97238cdc23cad845d3903147ca}

\begin{DoxyCompactList}\small\item\em Toggle \hyperlink{protocolthe-p}{the} sending of summaries into \char`\"{}stub\char`\"{} or \char`\"{}nssa\char`\"{} areas. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a58ae5a2b920487fdbb97d7fd73e5a5b5}{
bool \hyperlink{classAreaRouter_a58ae5a2b920487fdbb97d7fd73e5a5b5}{get\_\-lsa} (const uint32\_\-t index, bool \&valid, bool \&toohigh, bool \&self, vector$<$ uint8\_\-t $>$ \&lsa)}
\label{classAreaRouter_a58ae5a2b920487fdbb97d7fd73e5a5b5}

\begin{DoxyCompactList}\small\item\em get lsa at index if it exists. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a62f6d8d83c14e64597375c565e32c4ee}{
bool \hyperlink{classAreaRouter_a62f6d8d83c14e64597375c565e32c4ee}{new\_\-router\_\-links} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peer, const list$<$ \hyperlink{classRouterLink}{RouterLink} $>$ \&router\_\-link)}
\label{classAreaRouter_a62f6d8d83c14e64597375c565e32c4ee}

\begin{DoxyCompactList}\small\item\em A new set of router links. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_a8b234551d86758c252b93e663c4bca45}{refresh\_\-router\_\-lsa} (bool timer=false)
\begin{DoxyCompactList}\small\item\em Refresh Router-\/LSA. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a18a85e22290a5413644d9a8990d4dde1}{
void \hyperlink{classAreaRouter_a18a85e22290a5413644d9a8990d4dde1}{stub\_\-networksV3} (bool timer)}
\label{classAreaRouter_a18a85e22290a5413644d9a8990d4dde1}

\begin{DoxyCompactList}\small\item\em For OSPFv3 only there are no router links describing stub networks, Intra-\/Area-\/Prefix-\/LSAs that reference \hyperlink{protocolthe-p}{the} Router-\/LSA have to be generated. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_afbde2072db4b87f092ae7c8c6b2dfa3f}{summary\_\-announce} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{classIPNet}{IPNet}$<$ A $>$ net, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&rt, bool push)
\begin{DoxyCompactList}\small\item\em A new route has been added to \hyperlink{protocolthe-p}{the} routing table it is being presented to this area for possible Summary-\/LSA generation. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_a7c3735d8fe5672b09b4fd198c1fb011a}{summary\_\-withdraw} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{classIPNet}{IPNet}$<$ A $>$ net, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&rt)
\begin{DoxyCompactList}\small\item\em A route has been deleted from \hyperlink{protocolthe-p}{the} routing table. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_ab67ef41def4b4d9d77d2178b4959d637}{summary\_\-replace} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{classIPNet}{IPNet}$<$ A $>$ net, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&rt, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&previous\_\-rt, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} previous\_\-area)
\begin{DoxyCompactList}\small\item\em A route has been replaced in \hyperlink{protocolthe-p}{the} routing table. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_ae5d790f42d674c86b93665ea57d2e036}{external\_\-area\_\-type} () const 
\item 
void \hyperlink{classAreaRouter_a0a74b4fc2b5e1f901d74f2f4ad0f1af6}{external\_\-copy\_\-net\_\-nexthop} (A, \hyperlink{classASExternalLsa}{ASExternalLsa} $\ast$dst, \hyperlink{classASExternalLsa}{ASExternalLsa} $\ast$src)
\begin{DoxyCompactList}\small\item\em Copy \hyperlink{protocolthe-p}{the} net and nexthop information from one AS-\/External-\/LSA to another. \item\end{DoxyCompactList}\item 
\hyperlink{classref__ptr}{Lsa::LsaRef} \hyperlink{classAreaRouter_accb70bc635dbffc7cf3fd05a682e302c}{external\_\-generate\_\-type7} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar, bool \&indb)
\begin{DoxyCompactList}\small\item\em Given an AS-\/External-\/LSA generate a Type-\/7 LSA. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a4f994758241baf23e26d1fb3942b889e}{
\hyperlink{classref__ptr}{Lsa::LsaRef} \hyperlink{classAreaRouter_a4f994758241baf23e26d1fb3942b889e}{external\_\-generate\_\-external} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar)}
\label{classAreaRouter_a4f994758241baf23e26d1fb3942b889e}

\begin{DoxyCompactList}\small\item\em Given a Type-\/7 LSA generate an AS-\/External-\/LSA. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_afa87dd9ebcd053426942b86985503911}{external\_\-announce} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar, bool push, bool redist)
\begin{DoxyCompactList}\small\item\em An AS-\/External-\/LSA being announced either from another area or from \hyperlink{protocolthe-p}{the} \hyperlink{classRIB}{RIB} as a redist. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a8819214674425421097cee8ef50ccdf4}{
void \hyperlink{classAreaRouter_a8819214674425421097cee8ef50ccdf4}{external\_\-announce\_\-complete} ()}
\label{classAreaRouter_a8819214674425421097cee8ef50ccdf4}

\begin{DoxyCompactList}\small\item\em Called to complete a series of calls to \hyperlink{classAreaRouter_afa87dd9ebcd053426942b86985503911}{external\_\-announce()}. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_a0411ad37b138dad320872c27f97bc845}{external\_\-refresh} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar)
\begin{DoxyCompactList}\small\item\em Refresh this LSA either because a timer has expired or because a newer LSA has arrived from another area. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_a941a2416e69ed8f8c906e24698a083b8}{external\_\-withdraw} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar)
\begin{DoxyCompactList}\small\item\em An AS-\/External-\/LSA being withdrawn either from another area or from \hyperlink{protocolthe-p}{the} \hyperlink{classRIB}{RIB} as a redist. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a832e8b0619cbc1c14bb99a65836a47b1}{
bool \hyperlink{classAreaRouter_a832e8b0619cbc1c14bb99a65836a47b1}{add\_\-link\_\-lsa} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{classref__ptr}{Lsa::LsaRef} lsar)}
\label{classAreaRouter_a832e8b0619cbc1c14bb99a65836a47b1}

\begin{DoxyCompactList}\small\item\em Add a Link-\/LSA for this peer. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a9d47523422cfaa2b133c6993b108e241}{
bool \hyperlink{classAreaRouter_a9d47523422cfaa2b133c6993b108e241}{update\_\-link\_\-lsa} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{classref__ptr}{Lsa::LsaRef} lsar)}
\label{classAreaRouter_a9d47523422cfaa2b133c6993b108e241}

\begin{DoxyCompactList}\small\item\em Update \hyperlink{protocolthe-p}{the} Link-\/LSA for this peer. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_ad2ff44ced063c35dbc00be882e073262}{
bool \hyperlink{classAreaRouter_ad2ff44ced063c35dbc00be882e073262}{withdraw\_\-link\_\-lsa} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{classref__ptr}{Lsa::LsaRef} lsar)}
\label{classAreaRouter_ad2ff44ced063c35dbc00be882e073262}

\begin{DoxyCompactList}\small\item\em Withdraw \hyperlink{protocolthe-p}{the} Link-\/LSA for this peer. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_ac427c14b4b3be45b08d0b4f398bebf83}{
void \hyperlink{classAreaRouter_ac427c14b4b3be45b08d0b4f398bebf83}{refresh\_\-link\_\-lsa} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{classref__ptr}{Lsa::LsaRef} lsar)}
\label{classAreaRouter_ac427c14b4b3be45b08d0b4f398bebf83}

\begin{DoxyCompactList}\small\item\em Refresh \hyperlink{protocolthe-p}{the} Link-\/LSA for this peer. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a4812186838e853f7e4f07c2de732bc46}{
bool \hyperlink{classAreaRouter_a4812186838e853f7e4f07c2de732bc46}{generate\_\-network\_\-lsa} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peer, \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} link\_\-state\_\-id, list$<$ \hyperlink{structRouterInfo}{RouterInfo} $>$ \&attached\_\-routers, uint32\_\-t network\_\-mask)}
\label{classAreaRouter_a4812186838e853f7e4f07c2de732bc46}

\begin{DoxyCompactList}\small\item\em Generate a Network-\/LSA for this peer. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a61f21bdb54a209cc6661ca0fb0a02d4d}{
bool \hyperlink{classAreaRouter_a61f21bdb54a209cc6661ca0fb0a02d4d}{update\_\-network\_\-lsa} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peer, \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} link\_\-state\_\-id, list$<$ \hyperlink{structRouterInfo}{RouterInfo} $>$ \&attached\_\-routers, uint32\_\-t network\_\-mask)}
\label{classAreaRouter_a61f21bdb54a209cc6661ca0fb0a02d4d}

\begin{DoxyCompactList}\small\item\em Update \hyperlink{protocolthe-p}{the} Network-\/LSA for this peer. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a67dcb402473cf366b3ef8fcb976811fd}{
bool \hyperlink{classAreaRouter_a67dcb402473cf366b3ef8fcb976811fd}{withdraw\_\-network\_\-lsa} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peer, \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} link\_\-state\_\-id)}
\label{classAreaRouter_a67dcb402473cf366b3ef8fcb976811fd}

\begin{DoxyCompactList}\small\item\em Withdraw \hyperlink{protocolthe-p}{the} Network-\/LSA for this peer by prematurely aging. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_ab6efdd417b0c032b8976d3dfda7f9e02}{refresh\_\-network\_\-lsa} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{classref__ptr}{Lsa::LsaRef} lsar, bool timer=false)
\begin{DoxyCompactList}\small\item\em Refresh \hyperlink{protocolthe-p}{the} Network-\/LSAs. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_aca3b8d45dd86fb877cecc2f9d2aa3779}{check\_\-link\_\-lsa} (\hyperlink{classLinkLsa}{LinkLsa} $\ast$nllsa, \hyperlink{classLinkLsa}{LinkLsa} $\ast$ollsa)
\begin{DoxyCompactList}\small\item\em OSPFv3 only. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_a1294826aeee3b6869a0c976972e3597e}{update\_\-intra\_\-area\_\-prefix\_\-lsa} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid)
\begin{DoxyCompactList}\small\item\em OSPFv3 only. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_a1c8a7ea934dc5e7f96bee8bd0e9fdc07}{generate\_\-intra\_\-area\_\-prefix\_\-lsa} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{classref__ptr}{Lsa::LsaRef} lsar, uint32\_\-t interface\_\-id)
\begin{DoxyCompactList}\small\item\em Generate a Intra-\/Area-\/Prefix-\/LSA for this peer OSPFv3 only and add it to \hyperlink{protocolthe-p}{the} database. \item\end{DoxyCompactList}\item 
uint32\_\-t \hyperlink{classAreaRouter_a2e920314afa81c5ea89e0f3e584d93a6}{populate\_\-prefix} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peeridid, uint32\_\-t interface\_\-id, \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} router\_\-id, list$<$ \hyperlink{classIPv6Prefix}{IPv6Prefix} $>$ \&prefixes)
\begin{DoxyCompactList}\small\item\em OSPFv3 only. \item\end{DoxyCompactList}\item 
uint32\_\-t \hyperlink{classAreaRouter_aa74a77fa25490968d1deb7b61bf99ffb}{update\_\-intra\_\-area\_\-prefix\_\-lsa} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peer, uint16\_\-t referenced\_\-ls\_\-type, \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} interface\_\-id, const list$<$ \hyperlink{structRouterInfo}{RouterInfo} $>$ \&attached\_\-routers)
\begin{DoxyCompactList}\small\item\em Update \hyperlink{protocolthe-p}{the} Intra-\/Area-\/Prefix-\/LSA for this peer OSPFv3 only. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_aecfafb4c214947a19f05106f68268748}{withdraw\_\-intra\_\-area\_\-prefix\_\-lsa} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peer, uint16\_\-t referenced\_\-ls\_\-type, uint32\_\-t interface\_\-id)
\begin{DoxyCompactList}\small\item\em Withdraw \hyperlink{protocolthe-p}{the} Intra-\/Area-\/Prefix-\/LSA for this peer by prematurely aging OSPFv3 only. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_a807b6bcdb4105ecd6c085c29fd242802}{refresh\_\-intra\_\-area\_\-prefix\_\-lsa} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, uint16\_\-t referenced\_\-ls\_\-type, uint32\_\-t interface\_\-id)
\begin{DoxyCompactList}\small\item\em Refresh \hyperlink{protocolthe-p}{the} Intra-\/Area-\/Prefix-\/LSA OSPFv3 only. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a0a6ee026ea4583705f5fe6007ee3470b}{
void \hyperlink{classAreaRouter_a0a6ee026ea4583705f5fe6007ee3470b}{generate\_\-default\_\-route} ()}
\label{classAreaRouter_a0a6ee026ea4583705f5fe6007ee3470b}

\begin{DoxyCompactList}\small\item\em Create an LSA that will be used to announce \hyperlink{protocolthe-p}{the} default route into \char`\"{}stub\char`\"{} and \char`\"{}nssa\char`\"{} areas. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a3f4dbcb510a1de3315d80f6fc77e295f}{
bool \hyperlink{classAreaRouter_a3f4dbcb510a1de3315d80f6fc77e295f}{find\_\-default\_\-route} (size\_\-t \&index)}
\label{classAreaRouter_a3f4dbcb510a1de3315d80f6fc77e295f}

\begin{DoxyCompactList}\small\item\em Find \hyperlink{protocolthe-p}{the} default route LSA in \hyperlink{protocolthe-p}{the} database if it exists. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_a73e2eedfb778a90a82ae4f08e38ae44c}{save\_\-default\_\-route} ()
\begin{DoxyCompactList}\small\item\em If \hyperlink{protocolthe-p}{the} default route LSA is in \hyperlink{protocolthe-p}{the} database remove it. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_a52344d111914603a7ba878b826ef0228}{restore\_\-default\_\-route} ()
\begin{DoxyCompactList}\small\item\em If \hyperlink{protocolthe-p}{the} default route LSA should be in \hyperlink{protocolthe-p}{the} database put it back. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_acdb4a009f4f2c720f207889a3e8bf925}{withdraw\_\-default\_\-route} ()
\begin{DoxyCompactList}\small\item\em Withdraw \hyperlink{protocolthe-p}{the} default route LSA if it exists. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_a6deb0783e0b2ea7bc55f398ba90331f4}{refresh\_\-default\_\-route} ()
\begin{DoxyCompactList}\small\item\em Refresh \hyperlink{protocolthe-p}{the} default route LSA. \item\end{DoxyCompactList}\item 
\hyperlink{structOspfTypes_acbef6a08bc1aea6981897f45d61dae9e}{OspfTypes::AreaType} \hyperlink{classAreaRouter_a70e8c17269bec2253db8146a0618b161}{get\_\-area\_\-type} () const 
\begin{DoxyCompactList}\small\item\em Add a network to be announced. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_addd99e091c803ceb071912cb3de8551a}{
uint32\_\-t \hyperlink{classAreaRouter_addd99e091c803ceb071912cb3de8551a}{get\_\-options} ()}
\label{classAreaRouter_addd99e091c803ceb071912cb3de8551a}

\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} options that are sent in hello packets, data description packets, LSA headers (OSPFv2), Router-\/LSAs (OSPFv3) and Network-\/LSAs (OSPFv3). \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_a0aa1eda39144426baea7f542173cff84}{receive\_\-lsas} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} nid, list$<$ \hyperlink{classref__ptr}{Lsa::LsaRef} $>$ \&lsas, list$<$ \hyperlink{classLsa__header}{Lsa\_\-header} $>$ \&direct\_\-ack, list$<$ \hyperlink{classLsa__header}{Lsa\_\-header} $>$ \&delayed\_\-ack, bool is\_\-router\_\-dr, bool is\_\-router\_\-bdr, bool is\_\-neighbour\_\-dr)
\begin{DoxyCompactList}\small\item\em Receive LSAs. \item\end{DoxyCompactList}\item 
\hyperlink{classAreaRouter_af233c0554605c7b4f6d7b3f06a054568}{LsaSearch} \hyperlink{classAreaRouter_abc497fa1d0abbd5022300993987443ef}{compare\_\-lsa} (const \hyperlink{classLsa__header}{Lsa\_\-header} \&candidate, const \hyperlink{classLsa__header}{Lsa\_\-header} \&current) const 
\begin{DoxyCompactList}\small\item\em Compare two LSAs. \item\end{DoxyCompactList}\item 
\hyperlink{classAreaRouter_af233c0554605c7b4f6d7b3f06a054568}{LsaSearch} \hyperlink{classAreaRouter_a34d1995e96f79e08c169845ac8f1a249}{compare\_\-lsa} (const \hyperlink{classLsa__header}{Lsa\_\-header} \&) const 
\begin{DoxyCompactList}\small\item\em Compare this LSA to. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_aacacca988e7b226f0c4f25957f8ad406}{newer\_\-lsa} (const \hyperlink{classLsa__header}{Lsa\_\-header} \&) const 
\item 
bool \hyperlink{classAreaRouter_a84ec981da579a439340b1017e1642d25}{get\_\-lsas} (const list$<$ \hyperlink{classLs__request}{Ls\_\-request} $>$ \&requests, list$<$ \hyperlink{classref__ptr}{Lsa::LsaRef} $>$ \&lsas)
\begin{DoxyCompactList}\small\item\em Fetch a list of lsas given a list of requests. \item\end{DoxyCompactList}\item 
\hyperlink{classDataBaseHandle}{DataBaseHandle} \hyperlink{classAreaRouter_afce01e8b262b847709120cdb09db5c2d}{open\_\-database} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, bool \&empty)
\begin{DoxyCompactList}\small\item\em Open database. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_a5fb008454bed54c1146c8c56c678c5a7}{valid\_\-entry\_\-database} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, size\_\-t index)
\begin{DoxyCompactList}\small\item\em Is this a valid entry to be returned by \hyperlink{protocolthe-p}{the} database. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_ac6f82681278366bbfaae55a0edd2c41e}{subsequent} (\hyperlink{classDataBaseHandle}{DataBaseHandle} \&dbh)
\begin{DoxyCompactList}\small\item\em Is there another database entry following this one. \item\end{DoxyCompactList}\item 
\hyperlink{classref__ptr}{Lsa::LsaRef} \hyperlink{classAreaRouter_a5e0e2d4b954cfca208a22443966538d7}{get\_\-entry\_\-database} (\hyperlink{classDataBaseHandle}{DataBaseHandle} \&dbh, bool \&last)
\begin{DoxyCompactList}\small\item\em \hyperlink{classNext}{Next} database entry. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_aa7a9b899bf9ba18dc1779ee50a4aef74}{close\_\-database} (\hyperlink{classDataBaseHandle}{DataBaseHandle} \&dbh)
\begin{DoxyCompactList}\small\item\em Close \hyperlink{protocolthe-p}{the} database. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_a8c907451a4ef9f1daaac79a4ee5ba280}{clear\_\-database} (bool preserve\_\-link\_\-lsas=false)
\begin{DoxyCompactList}\small\item\em Clear \hyperlink{protocolthe-p}{the} database. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_af46566f86703cda81f96fa9d1bf98707}{
void \hyperlink{classAreaRouter_af46566f86703cda81f96fa9d1bf98707}{maxage\_\-type\_\-database} (uint16\_\-t type)}
\label{classAreaRouter_af46566f86703cda81f96fa9d1bf98707}

\begin{DoxyCompactList}\small\item\em All self originated LSAs of this type MaxAge them. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a76f9117c65f6e224f5993d76be845645}{
bool \hyperlink{classAreaRouter_a76f9117c65f6e224f5993d76be845645}{backbone} () const }
\label{classAreaRouter_a76f9117c65f6e224f5993d76be845645}

\begin{DoxyCompactList}\small\item\em Is this \hyperlink{protocolthe-p}{the} backbone area? \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a2ce143da8f26db708b191d7e5358c921}{
bool {\bfseries backbone} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area) const }
\label{classAreaRouter_a2ce143da8f26db708b191d7e5358c921}

\item 
\hypertarget{classAreaRouter_ae192bc6e15c6690a279ba25c140d17f5}{
bool {\bfseries get\_\-transit\_\-capability} () const }
\label{classAreaRouter_ae192bc6e15c6690a279ba25c140d17f5}

\item 
\hypertarget{classAreaRouter_aa53414997f54fa2e6bac5fbb94fa71dd}{
void \hyperlink{classAreaRouter_aa53414997f54fa2e6bac5fbb94fa71dd}{routing\_\-total\_\-recompute} ()}
\label{classAreaRouter_aa53414997f54fa2e6bac5fbb94fa71dd}

\begin{DoxyCompactList}\small\item\em Totally recompute \hyperlink{protocolthe-p}{the} routing table from \hyperlink{protocolthe-p}{the} LSA database. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_aabe38411a638afe24c6d2dd88ea429ec}{
void \hyperlink{classAreaRouter_aabe38411a638afe24c6d2dd88ea429ec}{testing\_\-routing\_\-total\_\-recompute} ()}
\label{classAreaRouter_aabe38411a638afe24c6d2dd88ea429ec}

\begin{DoxyCompactList}\small\item\em Testing entry point to force a total routing computation. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a3b5f59b28706893af4c5b804ccf58ab1}{
void \hyperlink{classAreaRouter_a3b5f59b28706893af4c5b804ccf58ab1}{testing\_\-print\_\-link\_\-state\_\-database} () const }
\label{classAreaRouter_a3b5f59b28706893af4c5b804ccf58ab1}

\begin{DoxyCompactList}\small\item\em Print link state database. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_ad8ed1b245dab19415ba1510dd228eb96}{
bool \hyperlink{classAreaRouter_ad8ed1b245dab19415ba1510dd228eb96}{testing\_\-replace\_\-router\_\-lsa} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar)}
\label{classAreaRouter_ad8ed1b245dab19415ba1510dd228eb96}

\begin{DoxyCompactList}\small\item\em Testing entry point to add this router Router-\/LSA to \hyperlink{protocolthe-p}{the} database replacing \hyperlink{protocolthe-p}{the} one that is already there. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_af0c379f27d47525954b2de6bf199e10f}{
bool \hyperlink{classAreaRouter_af0c379f27d47525954b2de6bf199e10f}{testing\_\-add\_\-lsa} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar)}
\label{classAreaRouter_af0c379f27d47525954b2de6bf199e10f}

\begin{DoxyCompactList}\small\item\em Testing entry point to add an LSA to \hyperlink{protocolthe-p}{the} database. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_adb72ee3c9f2cc33b0e8170c240d2c25f}{
bool \hyperlink{classAreaRouter_adb72ee3c9f2cc33b0e8170c240d2c25f}{testing\_\-delete\_\-lsa} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar)}
\label{classAreaRouter_adb72ee3c9f2cc33b0e8170c240d2c25f}

\begin{DoxyCompactList}\small\item\em Testing entry point to delete an LSA from \hyperlink{protocolthe-p}{the} database. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_ac57b6790f4bd965c79c5847b82541ee3}{
string {\bfseries str} ()}
\label{classAreaRouter_ac57b6790f4bd965c79c5847b82541ee3}

\item 
\hypertarget{classAreaRouter_acecaee00c3227e20ec8ef7cee0a36745}{
{\footnotesize template$<$$>$ }\\bool {\bfseries find\_\-global\_\-address} (uint32\_\-t, uint16\_\-t, \hyperlink{classLsaTempStore}{LsaTempStore} \&, \hyperlink{classIPv4}{IPv4} \&) const}
\label{classAreaRouter_acecaee00c3227e20ec8ef7cee0a36745}

\item 
\hypertarget{classAreaRouter_a95c55a4d6751e2b830678f18b85f0091}{
{\footnotesize template$<$$>$ }\\bool {\bfseries find\_\-global\_\-address} (uint32\_\-t adv, uint16\_\-t type, \hyperlink{classLsaTempStore}{LsaTempStore} \&lsa\_\-temp\_\-store, \hyperlink{classIPv6}{IPv6} \&global\_\-address) const}
\label{classAreaRouter_a95c55a4d6751e2b830678f18b85f0091}

\item 
\hypertarget{classAreaRouter_a6736f3a78a544ad0adff869b6df37a23}{
{\footnotesize template$<$$>$ }\\void {\bfseries check\_\-for\_\-virtual\_\-linkV3} (const \hyperlink{classRouteCmd}{RouteCmd}$<$ \hyperlink{classVertex}{Vertex} $>$ \&, \hyperlink{classref__ptr}{Lsa::LsaRef}, \hyperlink{classLsaTempStore}{LsaTempStore} \&)}
\label{classAreaRouter_a6736f3a78a544ad0adff869b6df37a23}

\item 
\hypertarget{classAreaRouter_a70449207d7b7a0a54fed3d4d51730a8d}{
{\footnotesize template$<$$>$ }\\void {\bfseries check\_\-for\_\-virtual\_\-linkV3} (const \hyperlink{classRouteCmd}{RouteCmd}$<$ \hyperlink{classVertex}{Vertex} $>$ \&rc, \hyperlink{classref__ptr}{Lsa::LsaRef} r, \hyperlink{classLsaTempStore}{LsaTempStore} \&lsa\_\-temp\_\-store)}
\label{classAreaRouter_a70449207d7b7a0a54fed3d4d51730a8d}

\item 
\hypertarget{classAreaRouter_aff7e245b42745e53d92deb49e53bf7fe}{
{\footnotesize template$<$$>$ }\\bool {\bfseries find\_\-interface\_\-address} (\hyperlink{classref__ptr}{Lsa::LsaRef} src, \hyperlink{classref__ptr}{Lsa::LsaRef} dst, \hyperlink{classIPv4}{IPv4} \&interface) const}
\label{classAreaRouter_aff7e245b42745e53d92deb49e53bf7fe}

\item 
\hypertarget{classAreaRouter_a59d3f857fe81c7c244c4031b9c8c5c12}{
{\footnotesize template$<$$>$ }\\bool {\bfseries find\_\-interface\_\-address} (\hyperlink{classref__ptr}{Lsa::LsaRef}, \hyperlink{classref__ptr}{Lsa::LsaRef}, \hyperlink{classIPv6}{IPv6} \&) const}
\label{classAreaRouter_a59d3f857fe81c7c244c4031b9c8c5c12}

\item 
\hypertarget{classAreaRouter_a496ebc1d5b756864c79e1cecb5f32c24}{
{\footnotesize template$<$$>$ }\\bool {\bfseries find\_\-interface\_\-address} (\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID}, uint32\_\-t, \hyperlink{classIPv4}{IPv4} \&)}
\label{classAreaRouter_a496ebc1d5b756864c79e1cecb5f32c24}

\item 
\hypertarget{classAreaRouter_a0cd4f5b064a7fac692ec43dfb45c78c1}{
{\footnotesize template$<$$>$ }\\bool {\bfseries find\_\-interface\_\-address} (\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid, uint32\_\-t interface\_\-id, \hyperlink{classIPv6}{IPv6} \&interface)}
\label{classAreaRouter_a0cd4f5b064a7fac692ec43dfb45c78c1}

\end{DoxyCompactItemize}
\subsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classAreaRouter_a0c4ed5c8c8bde5d8bdf46ab0f5c90f16}{
\hyperlink{classref__ptr}{Lsa::LsaRef} {\bfseries \_\-saved\_\-default\_\-route}}
\label{classAreaRouter_a0c4ed5c8c8bde5d8bdf46ab0f5c90f16}

\end{DoxyCompactItemize}
\subsection*{Private Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classAreaRouter_adc375f557d357fd23839c3ff4c230e05}{
typedef \hyperlink{classref__ptr}{ref\_\-ptr}$<$ \hyperlink{structAreaRouter_1_1PeerState}{PeerState} $>$ {\bfseries PeerStateRef}}
\label{classAreaRouter_adc375f557d357fd23839c3ff4c230e05}

\item 
\hypertarget{classAreaRouter_a7d7e3ec48ad06f7f2d5acad4c0194cd7}{
typedef map$<$ \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID}, \hyperlink{classref__ptr}{PeerStateRef} $>$ {\bfseries PeerMap}}
\label{classAreaRouter_a7d7e3ec48ad06f7f2d5acad4c0194cd7}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classAreaRouter_a3d462fc6abbdb634b8f6f1db1dc8b850}{
void {\bfseries set\_\-transit\_\-capability} (bool t)}
\label{classAreaRouter_a3d462fc6abbdb634b8f6f1db1dc8b850}

\item 
void \hyperlink{classAreaRouter_a9826ee38e6d5f29910782d014f71b35d}{unique\_\-link\_\-state\_\-id} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar)
\begin{DoxyCompactList}\small\item\em Networks with same network number but different prefix lengths can generate \hyperlink{protocolthe-p}{the} same link state ID. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_a63bf8ec9b4681c29e38acf5397977156}{unique\_\-find\_\-lsa} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar, const \hyperlink{classIPNet}{IPNet}$<$ A $>$ \&net, size\_\-t \&index)
\begin{DoxyCompactList}\small\item\em Networks with same network number but different prefix lengths can generate \hyperlink{protocolthe-p}{the} same link state ID. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a44687187f7fa1897283b87c014a363de}{
void \hyperlink{classAreaRouter_a44687187f7fa1897283b87c014a363de}{summary\_\-network\_\-lsa\_\-set\_\-net\_\-lsid} (\hyperlink{classSummaryNetworkLsa}{SummaryNetworkLsa} $\ast$snlsa, \hyperlink{classIPNet}{IPNet}$<$ A $>$ net)}
\label{classAreaRouter_a44687187f7fa1897283b87c014a363de}

\begin{DoxyCompactList}\small\item\em Set network and link state ID in a Summary-\/LSA/Inter-\/Area-\/Prefix-\/LSA. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a0ae8161ec91dfb5badc3ef8574a25c3b}{
\hyperlink{classref__ptr}{Lsa::LsaRef} {\bfseries summary\_\-network\_\-lsa} (\hyperlink{classIPNet}{IPNet}$<$ A $>$ net, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&rt)}
\label{classAreaRouter_a0ae8161ec91dfb5badc3ef8574a25c3b}

\item 
\hyperlink{classref__ptr}{Lsa::LsaRef} \hyperlink{classAreaRouter_a9fc49db9a13119bcf47010d3d96c178b}{summary\_\-network\_\-lsa\_\-intra\_\-area} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{classIPNet}{IPNet}$<$ A $>$ net, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&rt, bool \&announce)
\begin{DoxyCompactList}\small\item\em Generate a Summary-\/LSA for an intra area path taking into account area ranges. \item\end{DoxyCompactList}\item 
\hyperlink{classref__ptr}{Lsa::LsaRef} \hyperlink{classAreaRouter_a2365c9d4f2e0ee60fe0a8b44c7894ac4}{summary\_\-build} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{classIPNet}{IPNet}$<$ A $>$ net, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&rt, bool \&announce)
\begin{DoxyCompactList}\small\item\em Construct a summary LSA if appropriate. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a652a6266cb7fa1e2a4d974d45bea82d4}{
void \hyperlink{classAreaRouter_a652a6266cb7fa1e2a4d974d45bea82d4}{refresh\_\-summary\_\-lsa} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar)}
\label{classAreaRouter_a652a6266cb7fa1e2a4d974d45bea82d4}

\begin{DoxyCompactList}\small\item\em Announce this Summary-\/LSA to all neighbours and refresh it as appropriate. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_a6a5ac46d2e880ab40f7c4b0390014de0}{age\_\-lsa} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar)
\begin{DoxyCompactList}\small\item\em Start aging LSA. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_a42c04b264824ea2191b38e94308c39cf}{maxage\_\-reached} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar, size\_\-t index)
\begin{DoxyCompactList}\small\item\em This LSA has reached MAXAGE so flood it to all \hyperlink{protocolthe-p}{the} peers of this area. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_af957228e6295c3bd3e8acef0f84e84ef}{
void \hyperlink{classAreaRouter_af957228e6295c3bd3e8acef0f84e84ef}{premature\_\-aging} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar, size\_\-t index)}
\label{classAreaRouter_af957228e6295c3bd3e8acef0f84e84ef}

\begin{DoxyCompactList}\small\item\em Prematurely age self originated LSAs, remove them from \hyperlink{protocolthe-p}{the} database flood with age set to MAXAGE. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_aebe6300d4b8858240ab9d20dbb505212}{
void \hyperlink{classAreaRouter_aebe6300d4b8858240ab9d20dbb505212}{increment\_\-sequence\_\-number} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar)}
\label{classAreaRouter_aebe6300d4b8858240ab9d20dbb505212}

\begin{DoxyCompactList}\small\item\em Increment \hyperlink{protocolthe-p}{the} sequence number of of this LSA, most importantly handle \hyperlink{protocolthe-p}{the} sequence number reaching MaxSequenceNumber. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_ac9a4292550aa6ed22e1ae2bcd5fade68}{
void \hyperlink{classAreaRouter_ac9a4292550aa6ed22e1ae2bcd5fade68}{update\_\-age\_\-and\_\-seqno} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar, const \hyperlink{classTimeVal}{TimeVal} \&now)}
\label{classAreaRouter_ac9a4292550aa6ed22e1ae2bcd5fade68}

\begin{DoxyCompactList}\small\item\em Update \hyperlink{protocolthe-p}{the} age and increment \hyperlink{protocolthe-p}{the} sequence number of of this LSA, most importantly handle \hyperlink{protocolthe-p}{the} sequence number reaching MaxSequenceNumber. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a723d8f0c9e3ec0631ac1be8ec103f4d6}{
void \hyperlink{classAreaRouter_a723d8f0c9e3ec0631ac1be8ec103f4d6}{max\_\-sequence\_\-number\_\-reached} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar)}
\label{classAreaRouter_a723d8f0c9e3ec0631ac1be8ec103f4d6}

\begin{DoxyCompactList}\small\item\em Process an LSA where \hyperlink{protocolthe-p}{the} sequence number has reached MaxSequenceNumber. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_a5d9b4a059aba9cb3a11ce3c772e7fe29}{reincarnate} ()
\begin{DoxyCompactList}\small\item\em Reincarnate LSAs that have gone through \hyperlink{protocolthe-p}{the} MaxSequenceNumber transition. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_a6c5bd8088acb007e4f708c6127dfa6db}{add\_\-lsa} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar)
\begin{DoxyCompactList}\small\item\em Add this LSA to \hyperlink{protocolthe-p}{the} database. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_a7d41561d8fb0d2af9e676e47d8c3a1c9}{delete\_\-lsa} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar, size\_\-t index, bool invalidate)
\begin{DoxyCompactList}\small\item\em Delete this LSA from \hyperlink{protocolthe-p}{the} database. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_af98c78c2c47171a186da02afbb1d04b8}{update\_\-lsa} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar, size\_\-t index)
\begin{DoxyCompactList}\small\item\em Update this LSA in \hyperlink{protocolthe-p}{the} database. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_af4be83e6a055674d8141fb101f4886f2}{find\_\-lsa} (const \hyperlink{classLs__request}{Ls\_\-request} \&lsr, size\_\-t \&index) const 
\begin{DoxyCompactList}\small\item\em Find LSA matching this request. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_aa2afda58a93a484582625b00cc91a09b}{find\_\-lsa} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar, size\_\-t \&index) const 
\begin{DoxyCompactList}\small\item\em Find LSA matching this request. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_a331c82d75c3f4c271c7e25839258f858}{find\_\-network\_\-lsa} (uint32\_\-t link\_\-state\_\-id, size\_\-t \&index) const 
\begin{DoxyCompactList}\small\item\em Find Network-\/LSA. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_af56f9a6eec55893ecfe95f61c06c4f8d}{find\_\-router\_\-lsa} (uint32\_\-t advertising\_\-router, size\_\-t \&index) const 
\begin{DoxyCompactList}\small\item\em Find Router-\/LSA. \item\end{DoxyCompactList}\item 
\hyperlink{classAreaRouter_af233c0554605c7b4f6d7b3f06a054568}{LsaSearch} \hyperlink{classAreaRouter_aef8c4defb7063c30f972b0571bd876eb}{compare\_\-lsa} (const \hyperlink{classLsa__header}{Lsa\_\-header} \&, size\_\-t \&index) const 
\begin{DoxyCompactList}\small\item\em Compare this LSA to. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_af620714a5d1178f0d9950d8705ef23cd}{update\_\-router\_\-links} ()
\begin{DoxyCompactList}\small\item\em Update router links. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a82bffcf4b73853621fbf2001d7f6f154}{
void {\bfseries publish} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, const \hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} nid, \hyperlink{classref__ptr}{Lsa::LsaRef} lsar, bool \&multicast\_\-on\_\-peer) const }
\label{classAreaRouter_a82bffcf4b73853621fbf2001d7f6f154}

\item 
\hypertarget{classAreaRouter_a01ff7652ef5736c9df965a8713e0b6f3}{
void {\bfseries publish\_\-all} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar)}
\label{classAreaRouter_a01ff7652ef5736c9df965a8713e0b6f3}

\item 
\hypertarget{classAreaRouter_a94b8bfa27795dccfaea1e8189915a835}{
void \hyperlink{classAreaRouter_a94b8bfa27795dccfaea1e8189915a835}{push\_\-lsas} (const char $\ast$msg)}
\label{classAreaRouter_a94b8bfa27795dccfaea1e8189915a835}

\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} (push) any queued LSAs. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a8f46cadfe13ed1c9be9e691ce1d4e85d}{
bool \hyperlink{classAreaRouter_a8f46cadfe13ed1c9be9e691ce1d4e85d}{external\_\-propagate\_\-bit} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar) const }
\label{classAreaRouter_a8f46cadfe13ed1c9be9e691ce1d4e85d}

\begin{DoxyCompactList}\small\item\em Return \hyperlink{protocolthe-p}{the} setting of \hyperlink{protocolthe-p}{the} propagate bit in a Type-\/7-\/LSA. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a09bbde994c5d132d3f5f43b1dca1f378}{
void \hyperlink{classAreaRouter_a09bbde994c5d132d3f5f43b1dca1f378}{external\_\-type7\_\-translate} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar)}
\label{classAreaRouter_a09bbde994c5d132d3f5f43b1dca1f378}

\begin{DoxyCompactList}\small\item\em Take a Type-\/7-\/LSA that has arrived on \hyperlink{protocolthe-p}{the} wire and translate if required. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_af73a15288ef2177cb8acd53b1516f65d}{external\_\-flood\_\-all\_\-areas} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} this LSA to all area's. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a3a47e8708fc555556f4584dfa779702f}{
void \hyperlink{classAreaRouter_a3a47e8708fc555556f4584dfa779702f}{external\_\-push\_\-all\_\-areas} ()}
\label{classAreaRouter_a3a47e8708fc555556f4584dfa779702f}

\begin{DoxyCompactList}\small\item\em Notify all areas this is \hyperlink{protocolthe-p}{the} last of \hyperlink{protocolthe-p}{the} AS-\/External-\/LSAs. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_a3f65adf595ba29eb0a1bd32d975b4f0d}{neighbours\_\-exchange\_\-or\_\-loading} () const 
\item 
bool \hyperlink{classAreaRouter_ac674bdbae42c925439eeaae58bea7b43}{neighbour\_\-at\_\-least\_\-two\_\-way} (\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid) const 
\item 
bool \hyperlink{classAreaRouter_a11dae51efe3562affb03fce2c5323602}{get\_\-neighbour\_\-address} (\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid, uint32\_\-t interface\_\-id, A \&neighbour\_\-address) const 
\begin{DoxyCompactList}\small\item\em OSPFv3 Only Neighbour's source address. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_add0a539d91e8afe0dea4d3b9a7296ebc}{on\_\-link\_\-state\_\-request\_\-list} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, const \hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} nid, \hyperlink{classref__ptr}{Lsa::LsaRef} lsar) const 
\begin{DoxyCompactList}\small\item\em Is this LSA on this neighbours link state request list. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_a1ff8766df9548f3a69ceaf0590d0d604}{event\_\-bad\_\-link\_\-state\_\-request} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, const \hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} nid) const 
\begin{DoxyCompactList}\small\item\em Generate a BadLSReq event. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_a78f6d93914e6de0e9c5983fce59a0aba}{send\_\-lsa} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, const \hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} nid, \hyperlink{classref__ptr}{Lsa::LsaRef} lsar) const 
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} this LSA directly to \hyperlink{protocolthe-p}{the} neighbour. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_a267eb2ed72d9d140deeaaad7b3c6c54e}{self\_\-originated\_\-by\_\-interface} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar, A=A::ZERO()) const 
\begin{DoxyCompactList}\small\item\em Check this LSA to see if its link state id matched any of \hyperlink{protocolthe-p}{the} routers interfaces. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_a8ed8d739a26a640b7136ca4ba414d7fc}{self\_\-originated} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar, bool match, size\_\-t index)
\begin{DoxyCompactList}\small\item\em If this is a self-\/originated LSA do \hyperlink{protocolthe-p}{the} appropriate processing. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a6193aeb95a2a0127250020a9fd8d4ca1}{
void \hyperlink{classAreaRouter_a6193aeb95a2a0127250020a9fd8d4ca1}{RouterVertex} (\hyperlink{classVertex}{Vertex} \&v)}
\label{classAreaRouter_a6193aeb95a2a0127250020a9fd8d4ca1}

\begin{DoxyCompactList}\small\item\em Create a vertex for this router. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a4142de75010132deb5d2d19f93751436}{
void \hyperlink{classAreaRouter_a4142de75010132deb5d2d19f93751436}{routing\_\-begin} ()}
\label{classAreaRouter_a4142de75010132deb5d2d19f93751436}

\begin{DoxyCompactList}\small\item\em Prepare for routing changes. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_a3f26610752decc56a11d2018c4cd4fc7}{routing\_\-add} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar, bool known)
\begin{DoxyCompactList}\small\item\em Add this LSA to \hyperlink{protocolthe-p}{the} routing computation. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_a1e309bf128318b73ab3367a6f7f49da5}{routing\_\-delete} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar)
\begin{DoxyCompactList}\small\item\em Remove this LSA from \hyperlink{protocolthe-p}{the} routing computation. \item\end{DoxyCompactList}\item 
void \hyperlink{classAreaRouter_a0db615e96f78deadad6ba7cc0ebfd588}{routing\_\-end} ()
\begin{DoxyCompactList}\small\item\em \hyperlink{classRouting}{Routing} changes are completed. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_aceea0908a939b956e9dc2c8f34fff937}{
void \hyperlink{classAreaRouter_aceea0908a939b956e9dc2c8f34fff937}{routing\_\-schedule\_\-total\_\-recompute} ()}
\label{classAreaRouter_aceea0908a939b956e9dc2c8f34fff937}

\begin{DoxyCompactList}\small\item\em Schedule recomputing \hyperlink{protocolthe-p}{the} whole table. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a30ec3f4e7a8ca80c576d528ce06b61d3}{
void \hyperlink{classAreaRouter_a30ec3f4e7a8ca80c576d528ce06b61d3}{routing\_\-timer} ()}
\label{classAreaRouter_a30ec3f4e7a8ca80c576d528ce06b61d3}

\begin{DoxyCompactList}\small\item\em Callback routine that causes route recomputation. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_af26a69ba18fd90c9fb70ff67bcd143a7}{
void \hyperlink{classAreaRouter_af26a69ba18fd90c9fb70ff67bcd143a7}{routing\_\-total\_\-recomputeV2} ()}
\label{classAreaRouter_af26a69ba18fd90c9fb70ff67bcd143a7}

\begin{DoxyCompactList}\small\item\em Totally recompute \hyperlink{protocolthe-p}{the} routing table from \hyperlink{protocolthe-p}{the} LSA database. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_aaa50d06bd9deadd21287b296e0bf81b6}{
void {\bfseries routing\_\-total\_\-recomputeV3} ()}
\label{classAreaRouter_aaa50d06bd9deadd21287b296e0bf81b6}

\item 
\hypertarget{classAreaRouter_a07570ea2fc97c1f5b4054fbe1f273da4}{
void \hyperlink{classAreaRouter_a07570ea2fc97c1f5b4054fbe1f273da4}{routing\_\-table\_\-add\_\-entry} (\hyperlink{classRoutingTable}{RoutingTable}$<$ A $>$ \&routing\_\-table, \hyperlink{classIPNet}{IPNet}$<$ A $>$ net, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&route\_\-entry, const char $\ast$msg)}
\label{classAreaRouter_a07570ea2fc97c1f5b4054fbe1f273da4}

\begin{DoxyCompactList}\small\item\em Add an entry to \hyperlink{protocolthe-p}{the} routing table making sure that an entry doesn't already exist. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a6e55af2a44ca37b5635b19fa11c1276c}{
void \hyperlink{classAreaRouter_a6e55af2a44ca37b5635b19fa11c1276c}{routing\_\-area\_\-ranges} (list$<$ \hyperlink{classRouteCmd}{RouteCmd}$<$ \hyperlink{classVertex}{Vertex} $>$ $>$ \&r)}
\label{classAreaRouter_a6e55af2a44ca37b5635b19fa11c1276c}

\begin{DoxyCompactList}\small\item\em Compute \hyperlink{protocolthe-p}{the} discard routes related to area ranges. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a655d897c062d761830ad430a6ee63937}{
void {\bfseries routing\_\-area\_\-rangesV2} (const list$<$ \hyperlink{classRouteCmd}{RouteCmd}$<$ \hyperlink{classVertex}{Vertex} $>$ $>$ \&r)}
\label{classAreaRouter_a655d897c062d761830ad430a6ee63937}

\item 
\hypertarget{classAreaRouter_af5bf08c7de1ee3c2bee28c62b4b92aed}{
void {\bfseries routing\_\-area\_\-rangesV3} (const list$<$ \hyperlink{classRouteCmd}{RouteCmd}$<$ \hyperlink{classVertex}{Vertex} $>$ $>$ \&r, \hyperlink{classLsaTempStore}{LsaTempStore} \&lsa\_\-temp\_\-store)}
\label{classAreaRouter_af5bf08c7de1ee3c2bee28c62b4b92aed}

\item 
\hypertarget{classAreaRouter_ad8658a519f1ada232919730b1f642bde}{
void \hyperlink{classAreaRouter_ad8658a519f1ada232919730b1f642bde}{routing\_\-inter\_\-area} ()}
\label{classAreaRouter_ad8658a519f1ada232919730b1f642bde}

\begin{DoxyCompactList}\small\item\em Compute \hyperlink{protocolthe-p}{the} inter-\/area routes. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a4deef21ab0658c872f9d5fccee93418f}{
void {\bfseries routing\_\-inter\_\-areaV2} ()}
\label{classAreaRouter_a4deef21ab0658c872f9d5fccee93418f}

\item 
\hypertarget{classAreaRouter_a80490c268d18641f1da78e37d01bec5c}{
void {\bfseries routing\_\-inter\_\-areaV3} ()}
\label{classAreaRouter_a80490c268d18641f1da78e37d01bec5c}

\item 
\hypertarget{classAreaRouter_aad1aaa510d5e13640cdc7b00c5fa4d8b}{
void \hyperlink{classAreaRouter_aad1aaa510d5e13640cdc7b00c5fa4d8b}{routing\_\-transit\_\-area} ()}
\label{classAreaRouter_aad1aaa510d5e13640cdc7b00c5fa4d8b}

\begin{DoxyCompactList}\small\item\em Compute \hyperlink{protocolthe-p}{the} transit area routes. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a54d444b2b0d4bfaf5866f506ee1a6009}{
void {\bfseries routing\_\-transit\_\-areaV2} ()}
\label{classAreaRouter_a54d444b2b0d4bfaf5866f506ee1a6009}

\item 
\hypertarget{classAreaRouter_abc060eb0eabf6cc45d16c43f91fe7028}{
void {\bfseries routing\_\-transit\_\-areaV3} ()}
\label{classAreaRouter_abc060eb0eabf6cc45d16c43f91fe7028}

\item 
\hypertarget{classAreaRouter_acee03d48994f73ca0fb48d8e7f68831b}{
void \hyperlink{classAreaRouter_acee03d48994f73ca0fb48d8e7f68831b}{routing\_\-as\_\-external} ()}
\label{classAreaRouter_acee03d48994f73ca0fb48d8e7f68831b}

\begin{DoxyCompactList}\small\item\em Compute \hyperlink{protocolthe-p}{the} AS external routes. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_aed92b62fff4cebed9576ad501b1fd94a}{
void {\bfseries routing\_\-as\_\-externalV2} ()}
\label{classAreaRouter_aed92b62fff4cebed9576ad501b1fd94a}

\item 
\hypertarget{classAreaRouter_a96b9b39fb2c32957d03f4eb42f5cd84e}{
void {\bfseries routing\_\-as\_\-externalV3} ()}
\label{classAreaRouter_a96b9b39fb2c32957d03f4eb42f5cd84e}

\item 
bool \hyperlink{classAreaRouter_aa50f2f197ea008c9cedad1bc8d3d69a1}{associated\_\-prefixesV3} (uint16\_\-t ls\_\-type, uint32\_\-t referenced\_\-link\_\-state\_\-id, const list$<$ \hyperlink{classIntraAreaPrefixLsa}{IntraAreaPrefixLsa} $\ast$ $>$ \&lsai, list$<$ \hyperlink{classIPv6Prefix}{IPv6Prefix} $>$ \&prefixes) const 
\begin{DoxyCompactList}\small\item\em Given a LS type and a referenced link state ID and \hyperlink{protocolthe-p}{the} list of Intra-\/Area-\/Prefix-\/LSAs generated by \hyperlink{protocolthe-p}{the} same router, return \hyperlink{protocolthe-p}{the} list of prefixes that are associated with \hyperlink{protocolthe-p}{the} LSA. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_a0e94329abeb277da173a2a589bb01b50}{routing\_\-compare\_\-externals} (\hyperlink{classref__ptr}{Lsa::LsaRef} current, \hyperlink{classref__ptr}{Lsa::LsaRef} candidate) const 
\begin{DoxyCompactList}\small\item\em RFC 3101 Section 2.5. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_ac4849f9833e1221bf1226e7c8a82843a}{bidirectionalV2} (RouterLink::Type rl\_\-type, const uint32\_\-t link\_\-state\_\-id, const \hyperlink{classRouterLink}{RouterLink} \&rl, \hyperlink{classRouterLsa}{RouterLsa} $\ast$rlsa, uint16\_\-t \&metric, uint32\_\-t \&interface\_\-address)
\begin{DoxyCompactList}\small\item\em Does this Router-\/LSA point back to \hyperlink{protocolthe-p}{the} router link that points at it. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_a4e840ba8619ffc9852558ccf79a81e1b}{bidirectional} (const uint32\_\-t link\_\-state\_\-id\_\-or\_\-adv, const \hyperlink{classRouterLink}{RouterLink} \&rl, \hyperlink{classNetworkLsa}{NetworkLsa} $\ast$nlsa) const 
\begin{DoxyCompactList}\small\item\em Does this Network-\/LSA point back to \hyperlink{protocolthe-p}{the} router link that points at it. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_a2dd2383eecdef910b0d0dd0afeae1b96}{bidirectionalV2} (\hyperlink{classRouterLsa}{RouterLsa} $\ast$rlsa, \hyperlink{classNetworkLsa}{NetworkLsa} $\ast$nlsa, uint32\_\-t \&interface\_\-address)
\begin{DoxyCompactList}\small\item\em Does \hyperlink{protocolthe-p}{the} Router-\/LSA point at \hyperlink{protocolthe-p}{the} Network-\/LSA that points at it. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_afb2e3fb0f90f2f08e171d439585fc6b1}{bidirectionalV3} (\hyperlink{classRouterLsa}{RouterLsa} $\ast$rlsa, \hyperlink{classNetworkLsa}{NetworkLsa} $\ast$nlsa, uint32\_\-t \&interface\_\-id)
\begin{DoxyCompactList}\small\item\em Does \hyperlink{protocolthe-p}{the} Router-\/LSA point at \hyperlink{protocolthe-p}{the} Network-\/LSA that points at it, OSPFv3. \item\end{DoxyCompactList}\item 
bool \hyperlink{classAreaRouter_a407947a260f63c6c69a50383064e81d9}{bidirectionalV3} (RouterLink::Type rl\_\-type, uint32\_\-t advertising\_\-router, \hyperlink{classRouterLsa}{RouterLsa} $\ast$rlsa, uint16\_\-t \&metric)
\begin{DoxyCompactList}\small\item\em Does this Router-\/LSA point back to \hyperlink{protocolthe-p}{the} router link that points at it, OSPFv3. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_ab3843103c8051c519393381470c0bb7a}{
void \hyperlink{classAreaRouter_ab3843103c8051c519393381470c0bb7a}{routing\_\-router\_\-lsaV2} (\hyperlink{classSpt}{Spt}$<$ \hyperlink{classVertex}{Vertex} $>$ \&spt, const \hyperlink{classVertex}{Vertex} \&src, \hyperlink{classRouterLsa}{RouterLsa} $\ast$rlsa)}
\label{classAreaRouter_ab3843103c8051c519393381470c0bb7a}

\begin{DoxyCompactList}\small\item\em Add this newly arrived or changed Router-\/LSA to \hyperlink{protocolthe-p}{the} SPT. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_a3d7eba84784204b235f6a8b47347e220}{
void {\bfseries routing\_\-router\_\-link\_\-p2p\_\-vlinkV2} (\hyperlink{classSpt}{Spt}$<$ \hyperlink{classVertex}{Vertex} $>$ \&spt, const \hyperlink{classVertex}{Vertex} \&src, \hyperlink{classRouterLsa}{RouterLsa} $\ast$rlsa, \hyperlink{classRouterLink}{RouterLink} rl)}
\label{classAreaRouter_a3d7eba84784204b235f6a8b47347e220}

\item 
\hypertarget{classAreaRouter_ae86e3e41a1550b9b4de5a72279a82733}{
void {\bfseries routing\_\-router\_\-link\_\-transitV2} (\hyperlink{classSpt}{Spt}$<$ \hyperlink{classVertex}{Vertex} $>$ \&spt, const \hyperlink{classVertex}{Vertex} \&src, \hyperlink{classRouterLsa}{RouterLsa} $\ast$rlsa, \hyperlink{classRouterLink}{RouterLink} rl)}
\label{classAreaRouter_ae86e3e41a1550b9b4de5a72279a82733}

\item 
\hypertarget{classAreaRouter_a65a0876d77cc84ad50e5bb2f2ab17381}{
void {\bfseries routing\_\-router\_\-link\_\-stubV2} (\hyperlink{classSpt}{Spt}$<$ \hyperlink{classVertex}{Vertex} $>$ \&spt, const \hyperlink{classVertex}{Vertex} \&src, \hyperlink{classRouterLsa}{RouterLsa} $\ast$rlsa, \hyperlink{classRouterLink}{RouterLink} rl)}
\label{classAreaRouter_a65a0876d77cc84ad50e5bb2f2ab17381}

\item 
\hypertarget{classAreaRouter_adbbf58c07c5cb625adbd20bb67bded0c}{
void \hyperlink{classAreaRouter_adbbf58c07c5cb625adbd20bb67bded0c}{routing\_\-router\_\-lsaV3} (\hyperlink{classSpt}{Spt}$<$ \hyperlink{classVertex}{Vertex} $>$ \&spt, const \hyperlink{classVertex}{Vertex} \&src, \hyperlink{classRouterLsa}{RouterLsa} $\ast$rlsa)}
\label{classAreaRouter_adbbf58c07c5cb625adbd20bb67bded0c}

\begin{DoxyCompactList}\small\item\em Add this newly arrived or changed Router-\/LSA to \hyperlink{protocolthe-p}{the} SPT. \item\end{DoxyCompactList}\item 
\hypertarget{classAreaRouter_acd4331c0038e08e1147e4fc08dc6f18e}{
void {\bfseries routing\_\-router\_\-link\_\-p2p\_\-vlinkV3} (\hyperlink{classSpt}{Spt}$<$ \hyperlink{classVertex}{Vertex} $>$ \&spt, const \hyperlink{classVertex}{Vertex} \&src, \hyperlink{classRouterLsa}{RouterLsa} $\ast$rlsa, \hyperlink{classRouterLink}{RouterLink} rl)}
\label{classAreaRouter_acd4331c0038e08e1147e4fc08dc6f18e}

\item 
\hypertarget{classAreaRouter_af5acd51230b859db23c16032c0d297bd}{
void {\bfseries routing\_\-router\_\-link\_\-transitV3} (\hyperlink{classSpt}{Spt}$<$ \hyperlink{classVertex}{Vertex} $>$ \&spt, const \hyperlink{classVertex}{Vertex} \&src, \hyperlink{classRouterLsa}{RouterLsa} $\ast$rlsa, \hyperlink{classRouterLink}{RouterLink} rl)}
\label{classAreaRouter_af5acd51230b859db23c16032c0d297bd}

\item 
\hypertarget{classAreaRouter_ad8e1a1d42ac68665a9c1e3aa512f3ed6}{
{\footnotesize template$<$$>$ }\\void {\bfseries unique\_\-link\_\-state\_\-id} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar)}
\label{classAreaRouter_ad8e1a1d42ac68665a9c1e3aa512f3ed6}

\item 
\hypertarget{classAreaRouter_af4ebbcbf11ad980b2bcc8e42e2930a13}{
{\footnotesize template$<$$>$ }\\void {\bfseries unique\_\-link\_\-state\_\-id} (\hyperlink{classref__ptr}{Lsa::LsaRef})}
\label{classAreaRouter_af4ebbcbf11ad980b2bcc8e42e2930a13}

\item 
\hypertarget{classAreaRouter_a84d70e27f30e993bae3547dd45ae7e4b}{
{\footnotesize template$<$$>$ }\\bool {\bfseries unique\_\-find\_\-lsa} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar, const \hyperlink{classIPNet}{IPNet}$<$ \hyperlink{classIPv4}{IPv4} $>$ \&net, size\_\-t \&index)}
\label{classAreaRouter_a84d70e27f30e993bae3547dd45ae7e4b}

\item 
\hypertarget{classAreaRouter_a235342016b8407b036d65e8c800fc01e}{
{\footnotesize template$<$$>$ }\\bool {\bfseries unique\_\-find\_\-lsa} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar, const \hyperlink{classIPNet}{IPNet}$<$ \hyperlink{classIPv6}{IPv6} $>$ \&, size\_\-t \&index)}
\label{classAreaRouter_a235342016b8407b036d65e8c800fc01e}

\item 
\hypertarget{classAreaRouter_a1b59b56987103fd4f2876213abad82af}{
{\footnotesize template$<$$>$ }\\void {\bfseries summary\_\-network\_\-lsa\_\-set\_\-net\_\-lsid} (\hyperlink{classSummaryNetworkLsa}{SummaryNetworkLsa} $\ast$snlsa, \hyperlink{classIPNet}{IPNet}$<$ \hyperlink{classIPv4}{IPv4} $>$ net)}
\label{classAreaRouter_a1b59b56987103fd4f2876213abad82af}

\item 
\hypertarget{classAreaRouter_adcb915f5ba1c1a51d8917cb282ee6ef4}{
{\footnotesize template$<$$>$ }\\void {\bfseries summary\_\-network\_\-lsa\_\-set\_\-net\_\-lsid} (\hyperlink{classSummaryNetworkLsa}{SummaryNetworkLsa} $\ast$snlsa, \hyperlink{classIPNet}{IPNet}$<$ \hyperlink{classIPv6}{IPv6} $>$ net)}
\label{classAreaRouter_adcb915f5ba1c1a51d8917cb282ee6ef4}

\item 
\hypertarget{classAreaRouter_abae916560a3517be1dea7677e7459708}{
{\footnotesize template$<$$>$ }\\bool {\bfseries self\_\-originated\_\-by\_\-interface} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar, \hyperlink{classIPv4}{IPv4}) const}
\label{classAreaRouter_abae916560a3517be1dea7677e7459708}

\item 
\hypertarget{classAreaRouter_ae6bb490f343017cea1bffbe14906d666}{
{\footnotesize template$<$$>$ }\\bool {\bfseries self\_\-originated\_\-by\_\-interface} (\hyperlink{classref__ptr}{Lsa::LsaRef}, \hyperlink{classIPv6}{IPv6}) const}
\label{classAreaRouter_ae6bb490f343017cea1bffbe14906d666}

\item 
\hypertarget{classAreaRouter_af19da92b36463cacd5941c0365aeefbd}{
{\footnotesize template$<$$>$ }\\void {\bfseries routing\_\-area\_\-rangesV2} (const list$<$ \hyperlink{classRouteCmd}{RouteCmd}$<$ \hyperlink{classVertex}{Vertex} $>$ $>$ \&r)}
\label{classAreaRouter_af19da92b36463cacd5941c0365aeefbd}

\item 
\hypertarget{classAreaRouter_a82b00a47e2f3de4277e5a796545814f1}{
{\footnotesize template$<$$>$ }\\void {\bfseries routing\_\-inter\_\-areaV2} ()}
\label{classAreaRouter_a82b00a47e2f3de4277e5a796545814f1}

\item 
\hypertarget{classAreaRouter_a5a71aef814e903c59d87e5c7efa77be4}{
{\footnotesize template$<$$>$ }\\void {\bfseries routing\_\-transit\_\-areaV2} ()}
\label{classAreaRouter_a5a71aef814e903c59d87e5c7efa77be4}

\item 
\hypertarget{classAreaRouter_a72e046f6207cbe2056bd267b8c2ab1c2}{
{\footnotesize template$<$$>$ }\\void {\bfseries routing\_\-as\_\-externalV2} ()}
\label{classAreaRouter_a72e046f6207cbe2056bd267b8c2ab1c2}

\item 
\hypertarget{classAreaRouter_a721164a086f1def478f14035b3bff436}{
{\footnotesize template$<$$>$ }\\void {\bfseries routing\_\-area\_\-rangesV3} (const list$<$ \hyperlink{classRouteCmd}{RouteCmd}$<$ \hyperlink{classVertex}{Vertex} $>$ $>$ \&r, \hyperlink{classLsaTempStore}{LsaTempStore} \&lsa\_\-temp\_\-store)}
\label{classAreaRouter_a721164a086f1def478f14035b3bff436}

\item 
\hypertarget{classAreaRouter_ae449bd9659ee142273fe784c54c3ac71}{
{\footnotesize template$<$$>$ }\\void {\bfseries routing\_\-inter\_\-areaV3} ()}
\label{classAreaRouter_ae449bd9659ee142273fe784c54c3ac71}

\item 
\hypertarget{classAreaRouter_aaa88655ed14e9b33f1d0210e589aac9f}{
{\footnotesize template$<$$>$ }\\void {\bfseries routing\_\-transit\_\-areaV3} ()}
\label{classAreaRouter_aaa88655ed14e9b33f1d0210e589aac9f}

\item 
\hypertarget{classAreaRouter_a4f74f2b1905c80048aaa75bc436b6da5}{
{\footnotesize template$<$$>$ }\\void {\bfseries routing\_\-as\_\-externalV3} ()}
\label{classAreaRouter_a4f74f2b1905c80048aaa75bc436b6da5}

\item 
\hypertarget{classAreaRouter_ae4532255abf8dda636041aee2f494088}{
{\footnotesize template$<$$>$ }\\void {\bfseries routing\_\-total\_\-recomputeV2} ()}
\label{classAreaRouter_ae4532255abf8dda636041aee2f494088}

\item 
\hypertarget{classAreaRouter_ada7611f3be0ecee3d29c777d371d6180}{
{\footnotesize template$<$$>$ }\\void {\bfseries routing\_\-total\_\-recomputeV2} ()}
\label{classAreaRouter_ada7611f3be0ecee3d29c777d371d6180}

\item 
\hypertarget{classAreaRouter_accb1b7e823ca283fc02992f05e2e9266}{
{\footnotesize template$<$$>$ }\\void {\bfseries routing\_\-total\_\-recomputeV3} ()}
\label{classAreaRouter_accb1b7e823ca283fc02992f05e2e9266}

\item 
\hypertarget{classAreaRouter_afd17b0358ba7c646a065b51aacf41c57}{
{\footnotesize template$<$$>$ }\\void {\bfseries routing\_\-total\_\-recomputeV3} ()}
\label{classAreaRouter_afd17b0358ba7c646a065b51aacf41c57}

\item 
\hypertarget{classAreaRouter_af19da92b36463cacd5941c0365aeefbd}{
{\footnotesize template$<$$>$ }\\void {\bfseries routing\_\-area\_\-rangesV2} (const list$<$ \hyperlink{classRouteCmd}{RouteCmd}$<$ \hyperlink{classVertex}{Vertex} $>$ $>$ \&r)}
\label{classAreaRouter_af19da92b36463cacd5941c0365aeefbd}

\item 
\hypertarget{classAreaRouter_a721164a086f1def478f14035b3bff436}{
{\footnotesize template$<$$>$ }\\void {\bfseries routing\_\-area\_\-rangesV3} (const list$<$ \hyperlink{classRouteCmd}{RouteCmd}$<$ \hyperlink{classVertex}{Vertex} $>$ $>$ \&r, \hyperlink{classLsaTempStore}{LsaTempStore} \&lsa\_\-temp\_\-store)}
\label{classAreaRouter_a721164a086f1def478f14035b3bff436}

\item 
\hypertarget{classAreaRouter_a82b00a47e2f3de4277e5a796545814f1}{
{\footnotesize template$<$$>$ }\\void {\bfseries routing\_\-inter\_\-areaV2} ()}
\label{classAreaRouter_a82b00a47e2f3de4277e5a796545814f1}

\item 
\hypertarget{classAreaRouter_ae449bd9659ee142273fe784c54c3ac71}{
{\footnotesize template$<$$>$ }\\void {\bfseries routing\_\-inter\_\-areaV3} ()}
\label{classAreaRouter_ae449bd9659ee142273fe784c54c3ac71}

\item 
\hypertarget{classAreaRouter_a5a71aef814e903c59d87e5c7efa77be4}{
{\footnotesize template$<$$>$ }\\void {\bfseries routing\_\-transit\_\-areaV2} ()}
\label{classAreaRouter_a5a71aef814e903c59d87e5c7efa77be4}

\item 
\hypertarget{classAreaRouter_aaa88655ed14e9b33f1d0210e589aac9f}{
{\footnotesize template$<$$>$ }\\void {\bfseries routing\_\-transit\_\-areaV3} ()}
\label{classAreaRouter_aaa88655ed14e9b33f1d0210e589aac9f}

\item 
\hypertarget{classAreaRouter_a72e046f6207cbe2056bd267b8c2ab1c2}{
{\footnotesize template$<$$>$ }\\void {\bfseries routing\_\-as\_\-externalV2} ()}
\label{classAreaRouter_a72e046f6207cbe2056bd267b8c2ab1c2}

\item 
\hypertarget{classAreaRouter_a4f74f2b1905c80048aaa75bc436b6da5}{
{\footnotesize template$<$$>$ }\\void {\bfseries routing\_\-as\_\-externalV3} ()}
\label{classAreaRouter_a4f74f2b1905c80048aaa75bc436b6da5}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classAreaRouter_a96668e629260fe5c04f69aaaaf1ea12e}{
\hyperlink{classOspf}{Ospf}$<$ A $>$ \& {\bfseries \_\-ospf}}
\label{classAreaRouter_a96668e629260fe5c04f69aaaaf1ea12e}

\item 
\hypertarget{classAreaRouter_a66173724144f05c3783d9cb2afabeb97}{
\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} {\bfseries \_\-area}}
\label{classAreaRouter_a66173724144f05c3783d9cb2afabeb97}

\item 
\hypertarget{classAreaRouter_a38c920705ff261bbd23166f3f97c1951}{
\hyperlink{structOspfTypes_acbef6a08bc1aea6981897f45d61dae9e}{OspfTypes::AreaType} {\bfseries \_\-area\_\-type}}
\label{classAreaRouter_a38c920705ff261bbd23166f3f97c1951}

\item 
\hypertarget{classAreaRouter_a30b4b22f04416d75108354799ce91da9}{
map$<$ \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID}, bool $>$ {\bfseries \_\-vlinks}}
\label{classAreaRouter_a30b4b22f04416d75108354799ce91da9}

\item 
\hypertarget{classAreaRouter_a84316308f8c7d336a4aa8fee67ce9664}{
set$<$ \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} $>$ {\bfseries \_\-tmp}}
\label{classAreaRouter_a84316308f8c7d336a4aa8fee67ce9664}

\item 
\hypertarget{classAreaRouter_a6e4b0c2440dc2ba5b77408bedd3d3529}{
bool {\bfseries \_\-summaries}}
\label{classAreaRouter_a6e4b0c2440dc2ba5b77408bedd3d3529}

\item 
\hypertarget{classAreaRouter_a4b42c0eb9473174b06a984db6d06033f}{
bool {\bfseries \_\-stub\_\-default\_\-announce}}
\label{classAreaRouter_a4b42c0eb9473174b06a984db6d06033f}

\item 
\hypertarget{classAreaRouter_a4c04ff79af2566a1d646898f6edfef82}{
uint32\_\-t {\bfseries \_\-stub\_\-default\_\-cost}}
\label{classAreaRouter_a4c04ff79af2566a1d646898f6edfef82}

\item 
\hypertarget{classAreaRouter_a87cb289572430d6b2052e203570ef2dc}{
bool {\bfseries \_\-external\_\-flooding}}
\label{classAreaRouter_a87cb289572430d6b2052e203570ef2dc}

\item 
\hypertarget{classAreaRouter_a9d2803995597a858d7906b0d97571be4}{
\hyperlink{classref__ptr}{Lsa::LsaRef} {\bfseries \_\-invalid\_\-lsa}}
\label{classAreaRouter_a9d2803995597a858d7906b0d97571be4}

\item 
\hypertarget{classAreaRouter_af2515a3d0fa06b9f47b98b690447c407}{
\hyperlink{classref__ptr}{Lsa::LsaRef} {\bfseries \_\-router\_\-lsa}}
\label{classAreaRouter_af2515a3d0fa06b9f47b98b690447c407}

\item 
\hypertarget{classAreaRouter_a51a93a03ce12c50b8de9228d51a0bad6}{
vector$<$ \hyperlink{classref__ptr}{Lsa::LsaRef} $>$ {\bfseries \_\-db}}
\label{classAreaRouter_a51a93a03ce12c50b8de9228d51a0bad6}

\item 
\hypertarget{classAreaRouter_a3ee68cbb8abbedf577a7d10c03f3cfef}{
deque$<$ size\_\-t $>$ {\bfseries \_\-empty\_\-slots}}
\label{classAreaRouter_a3ee68cbb8abbedf577a7d10c03f3cfef}

\item 
\hypertarget{classAreaRouter_a90e2639ddf5bb549c39a19895fb9ee78}{
uint32\_\-t {\bfseries \_\-last\_\-entry}}
\label{classAreaRouter_a90e2639ddf5bb549c39a19895fb9ee78}

\item 
\hypertarget{classAreaRouter_ae3015d2e0c9b1a919c6eeb7a8761cae0}{
uint32\_\-t {\bfseries \_\-allocated\_\-entries}}
\label{classAreaRouter_ae3015d2e0c9b1a919c6eeb7a8761cae0}

\item 
\hypertarget{classAreaRouter_abf58d170cf7cd740c9b04872636eb539}{
uint32\_\-t {\bfseries \_\-readers}}
\label{classAreaRouter_abf58d170cf7cd740c9b04872636eb539}

\item 
\hypertarget{classAreaRouter_a465c7b7cd6c774d28792aa299ecfa1fc}{
\hyperlink{classDelayQueue}{DelayQueue}$<$ \hyperlink{classref__ptr}{Lsa::LsaRef} $>$ {\bfseries \_\-queue}}
\label{classAreaRouter_a465c7b7cd6c774d28792aa299ecfa1fc}

\item 
\hypertarget{classAreaRouter_abf6277e3041e947b6e3b28dca4280dca}{
\hyperlink{classXorpTimer}{XorpTimer} {\bfseries \_\-reincarnate\_\-timer}}
\label{classAreaRouter_abf6277e3041e947b6e3b28dca4280dca}

\item 
\hypertarget{classAreaRouter_a5cc15a7b2882011f814b273ab822025a}{
list$<$ \hyperlink{classref__ptr}{Lsa::LsaRef} $>$ {\bfseries \_\-reincarnate}}
\label{classAreaRouter_a5cc15a7b2882011f814b273ab822025a}

\item 
\hypertarget{classAreaRouter_a660bcd4d779f3e693bee49bf3ab4ad5d}{
uint32\_\-t {\bfseries \_\-lsid}}
\label{classAreaRouter_a660bcd4d779f3e693bee49bf3ab4ad5d}

\item 
\hypertarget{classAreaRouter_a9a3ec47727344298e18a186570facaeb}{
map$<$ \hyperlink{classIPNet}{IPNet}$<$ \hyperlink{classIPv6}{IPv6} $>$, uint32\_\-t $>$ {\bfseries \_\-lsmap}}
\label{classAreaRouter_a9a3ec47727344298e18a186570facaeb}

\item 
\hypertarget{classAreaRouter_a1517d1dcf5fd9f3731086d8236c5949d}{
bool {\bfseries \_\-TransitCapability}}
\label{classAreaRouter_a1517d1dcf5fd9f3731086d8236c5949d}

\item 
\hypertarget{classAreaRouter_ae4ff14da4c3a6bb989530f38157c1cc2}{
PeerMap {\bfseries \_\-peers}}
\label{classAreaRouter_ae4ff14da4c3a6bb989530f38157c1cc2}

\item 
\hypertarget{classAreaRouter_a03ffc81fc007eed7f91a9f319a121254}{
uint32\_\-t {\bfseries \_\-routing\_\-recompute\_\-delay}}
\label{classAreaRouter_a03ffc81fc007eed7f91a9f319a121254}

\item 
\hypertarget{classAreaRouter_a139c43e7ca2a2b7caff9796a3486d5a4}{
\hyperlink{classXorpTimer}{XorpTimer} {\bfseries \_\-routing\_\-recompute\_\-timer}}
\label{classAreaRouter_a139c43e7ca2a2b7caff9796a3486d5a4}

\item 
\hypertarget{classAreaRouter_adf102fc008a678c3a4b37002e218f1ae}{
\hyperlink{structOspfTypes_ad792211096f3ab02bc3cb0c8f27b30e9}{OspfTypes::NSSATranslatorRole} {\bfseries \_\-translator\_\-role}}
\label{classAreaRouter_adf102fc008a678c3a4b37002e218f1ae}

\item 
\hypertarget{classAreaRouter_a0ea622c404182b6d078f78502dc25f18}{
\hyperlink{structOspfTypes_a15174585b9f22bf3facbf5ba7ea2524b}{OspfTypes::NSSATranslatorState} {\bfseries \_\-translator\_\-state}}
\label{classAreaRouter_a0ea622c404182b6d078f78502dc25f18}

\item 
\hypertarget{classAreaRouter_ae549c85b57e9540be4ec0af7a1489a3b}{
bool {\bfseries \_\-type7\_\-propagate}}
\label{classAreaRouter_ae549c85b57e9540be4ec0af7a1489a3b}

\item 
\hypertarget{classAreaRouter_a5f4921e6a2d15cb16b3609b9ceac5872}{
\hyperlink{classTrie}{Trie}$<$ A, \hyperlink{structAreaRouter_1_1Range}{Range} $>$ {\bfseries \_\-area\_\-range}}
\label{classAreaRouter_a5f4921e6a2d15cb16b3609b9ceac5872}

\end{DoxyCompactItemize}


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

Area Router. 

\subsection{Member Function Documentation}
\hypertarget{classAreaRouter_a6c5bd8088acb007e4f708c6127dfa6db}{
\index{AreaRouter@{AreaRouter}!add\_\-lsa@{add\_\-lsa}}
\index{add\_\-lsa@{add\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{add\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::add\_\-lsa (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{lsar}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a6c5bd8088acb007e4f708c6127dfa6db}


Add this LSA to \hyperlink{protocolthe-p}{the} database. 

The LSA must have an updated age field.


\begin{DoxyParams}{Parameters}
{\em lsar} & LSA to add. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a6a5ac46d2e880ab40f7c4b0390014de0}{
\index{AreaRouter@{AreaRouter}!age\_\-lsa@{age\_\-lsa}}
\index{age\_\-lsa@{age\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{age\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::age\_\-lsa (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{lsar}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a6a5ac46d2e880ab40f7c4b0390014de0}


Start aging LSA. 

All non self originated LSAs must be aged and when they reach MAXAGE flooded and flushed. \hypertarget{classAreaRouter_aaa344cc59ae0e8cc08b40471ef045aa9}{
\index{AreaRouter@{AreaRouter}!area\_\-border\_\-router\_\-transition@{area\_\-border\_\-router\_\-transition}}
\index{area\_\-border\_\-router\_\-transition@{area\_\-border\_\-router\_\-transition}!AreaRouter@{AreaRouter}}
\subsubsection[{area\_\-border\_\-router\_\-transition}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::area\_\-border\_\-router\_\-transition (
\begin{DoxyParamCaption}
\item[{bool}]{up}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_aaa344cc59ae0e8cc08b40471ef045aa9}


Track border router transitions. 


\begin{DoxyParams}{Parameters}
{\em up} & true of \hyperlink{protocolthe-p}{the} router just became an area border router, false if \hyperlink{protocolthe-p}{the} router was an area border router and is no longer. \\
\hline
\end{DoxyParams}
\hypertarget{classAreaRouter_aa50f2f197ea008c9cedad1bc8d3d69a1}{
\index{AreaRouter@{AreaRouter}!associated\_\-prefixesV3@{associated\_\-prefixesV3}}
\index{associated\_\-prefixesV3@{associated\_\-prefixesV3}!AreaRouter@{AreaRouter}}
\subsubsection[{associated\_\-prefixesV3}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::associated\_\-prefixesV3 (
\begin{DoxyParamCaption}
\item[{uint16\_\-t}]{ls\_\-type, }
\item[{uint32\_\-t}]{referenced\_\-link\_\-state\_\-id, }
\item[{const list$<$ {\bf IntraAreaPrefixLsa} $\ast$ $>$ \&}]{lsai, }
\item[{list$<$ {\bf IPv6Prefix} $>$ \&}]{prefixes}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_aa50f2f197ea008c9cedad1bc8d3d69a1}


Given a LS type and a referenced link state ID and \hyperlink{protocolthe-p}{the} list of Intra-\/Area-\/Prefix-\/LSAs generated by \hyperlink{protocolthe-p}{the} same router, return \hyperlink{protocolthe-p}{the} list of prefixes that are associated with \hyperlink{protocolthe-p}{the} LSA. 


\begin{DoxyParams}{Parameters}
{\em ls\_\-type} & From Router-\/LSA or Network-\/LSA \\
\hline
{\em referenced\_\-link\_\-state\_\-id} & zero for a Router-\/LSA and \hyperlink{protocolthe-p}{the} link state ID from a Network-\/LSA (in fact its interface ID). \\
\hline
{\em iapl} & List of Intra-\/Area-\/Prefix-\/LSAs same router as \hyperlink{protocolthe-p}{the} Router-\/LSA \\
\hline
{\em prefixes} & (out argument) List if prefixes associated with LSA \\
\hline
\end{DoxyParams}
\hypertarget{classAreaRouter_a4e840ba8619ffc9852558ccf79a81e1b}{
\index{AreaRouter@{AreaRouter}!bidirectional@{bidirectional}}
\index{bidirectional@{bidirectional}!AreaRouter@{AreaRouter}}
\subsubsection[{bidirectional}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::bidirectional (
\begin{DoxyParamCaption}
\item[{const uint32\_\-t}]{link\_\-state\_\-id\_\-or\_\-adv, }
\item[{const {\bf RouterLink} \&}]{rl, }
\item[{{\bf NetworkLsa} $\ast$}]{nlsa}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a4e840ba8619ffc9852558ccf79a81e1b}


Does this Network-\/LSA point back to \hyperlink{protocolthe-p}{the} router link that points at it. 


\begin{DoxyParams}{Parameters}
{\em link\_\-state\_\-id\_\-or\_\-adv} & OSPFv2 Link State ID, OSPFv3 Advertising Router. \\
\hline
\end{DoxyParams}
\hypertarget{classAreaRouter_ac4849f9833e1221bf1226e7c8a82843a}{
\index{AreaRouter@{AreaRouter}!bidirectionalV2@{bidirectionalV2}}
\index{bidirectionalV2@{bidirectionalV2}!AreaRouter@{AreaRouter}}
\subsubsection[{bidirectionalV2}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::bidirectionalV2 (
\begin{DoxyParamCaption}
\item[{RouterLink::Type}]{rl\_\-type, }
\item[{const uint32\_\-t}]{link\_\-state\_\-id, }
\item[{const {\bf RouterLink} \&}]{rl, }
\item[{{\bf RouterLsa} $\ast$}]{rlsa, }
\item[{uint16\_\-t \&}]{metric, }
\item[{uint32\_\-t \&}]{interface\_\-address}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_ac4849f9833e1221bf1226e7c8a82843a}


Does this Router-\/LSA point back to \hyperlink{protocolthe-p}{the} router link that points at it. 


\begin{DoxyParams}{Parameters}
{\em rl\_\-type} & type of link p2p or vlink \\
\hline
{\em link\_\-state\_\-id} & from RouterLSA that points at rlsa. \\
\hline
{\em rl} & link from RouterLSA that points at rlsa. \\
\hline
{\em rlsa} & that is pointed at by previous two arguments. \\
\hline
{\em metric} & (out argument) from rlsa back to link\_\-state\_\-id if \hyperlink{protocolthe-p}{the} back pointer exists. \\
\hline
{\em interface\_\-address} & (out argument) if \hyperlink{protocolthe-p}{the} back pointer exists.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} back pointer exists also fill in \hyperlink{protocolthe-p}{the} metric and interface address. value. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a2dd2383eecdef910b0d0dd0afeae1b96}{
\index{AreaRouter@{AreaRouter}!bidirectionalV2@{bidirectionalV2}}
\index{bidirectionalV2@{bidirectionalV2}!AreaRouter@{AreaRouter}}
\subsubsection[{bidirectionalV2}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::bidirectionalV2 (
\begin{DoxyParamCaption}
\item[{{\bf RouterLsa} $\ast$}]{rlsa, }
\item[{{\bf NetworkLsa} $\ast$}]{nlsa, }
\item[{uint32\_\-t \&}]{interface\_\-address}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a2dd2383eecdef910b0d0dd0afeae1b96}


Does \hyperlink{protocolthe-p}{the} Router-\/LSA point at \hyperlink{protocolthe-p}{the} Network-\/LSA that points at it. 


\begin{DoxyParams}{Parameters}
{\em interface\_\-address} & (out argument) if \hyperlink{protocolthe-p}{the} back pointer exists.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if Router-\/LSA points at \hyperlink{protocolthe-p}{the} Network-\/LSA. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_afb2e3fb0f90f2f08e171d439585fc6b1}{
\index{AreaRouter@{AreaRouter}!bidirectionalV3@{bidirectionalV3}}
\index{bidirectionalV3@{bidirectionalV3}!AreaRouter@{AreaRouter}}
\subsubsection[{bidirectionalV3}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::bidirectionalV3 (
\begin{DoxyParamCaption}
\item[{{\bf RouterLsa} $\ast$}]{rlsa, }
\item[{{\bf NetworkLsa} $\ast$}]{nlsa, }
\item[{uint32\_\-t \&}]{interface\_\-id}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_afb2e3fb0f90f2f08e171d439585fc6b1}


Does \hyperlink{protocolthe-p}{the} Router-\/LSA point at \hyperlink{protocolthe-p}{the} Network-\/LSA that points at it, OSPFv3. 


\begin{DoxyParams}{Parameters}
{\em interface\_\-id} & (out argument) interface ID if \hyperlink{protocolthe-p}{the} Router-\/LSA points at \hyperlink{protocolthe-p}{the} Network-\/LSA.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if Router-\/LSA points at \hyperlink{protocolthe-p}{the} Network-\/LSA. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a407947a260f63c6c69a50383064e81d9}{
\index{AreaRouter@{AreaRouter}!bidirectionalV3@{bidirectionalV3}}
\index{bidirectionalV3@{bidirectionalV3}!AreaRouter@{AreaRouter}}
\subsubsection[{bidirectionalV3}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::bidirectionalV3 (
\begin{DoxyParamCaption}
\item[{RouterLink::Type}]{rl\_\-type, }
\item[{uint32\_\-t}]{advertising\_\-router, }
\item[{{\bf RouterLsa} $\ast$}]{rlsa, }
\item[{uint16\_\-t \&}]{metric}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a407947a260f63c6c69a50383064e81d9}


Does this Router-\/LSA point back to \hyperlink{protocolthe-p}{the} router link that points at it, OSPFv3. 


\begin{DoxyParams}{Parameters}
{\em rl\_\-type} & type of link p2p or vlink \\
\hline
{\em advertising\_\-router} & \\
\hline
{\em rlsa} & that is searched for a router link pointing at \hyperlink{protocolthe-p}{the} advertising router. \\
\hline
{\em metric} & (out argument) from rlsa back to advertising router if \hyperlink{protocolthe-p}{the} back pointer exists.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} Router-\/LSA points to \hyperlink{protocolthe-p}{the} advertising router. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a31ced4fb4fc5fb45d850e4b1900f6505}{
\index{AreaRouter@{AreaRouter}!check\_\-for\_\-virtual\_\-linkV2@{check\_\-for\_\-virtual\_\-linkV2}}
\index{check\_\-for\_\-virtual\_\-linkV2@{check\_\-for\_\-virtual\_\-linkV2}!AreaRouter@{AreaRouter}}
\subsubsection[{check\_\-for\_\-virtual\_\-linkV2}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::check\_\-for\_\-virtual\_\-linkV2 (
\begin{DoxyParamCaption}
\item[{const {\bf RouteCmd}$<$ {\bf Vertex} $>$ \&}]{rc, }
\item[{{\bf Lsa::LsaRef}}]{lsar}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_a31ced4fb4fc5fb45d850e4b1900f6505}


Check this node to see if its a virtual link endpoint. 


\begin{DoxyParams}{Parameters}
{\em rc} & node under consideration. \\
\hline
{\em router} & this router's Router-\/LSA. \\
\hline
\end{DoxyParams}
\hypertarget{classAreaRouter_ab124a102bdc5dab52b3c5b4924267277}{
\index{AreaRouter@{AreaRouter}!check\_\-for\_\-virtual\_\-linkV3@{check\_\-for\_\-virtual\_\-linkV3}}
\index{check\_\-for\_\-virtual\_\-linkV3@{check\_\-for\_\-virtual\_\-linkV3}!AreaRouter@{AreaRouter}}
\subsubsection[{check\_\-for\_\-virtual\_\-linkV3}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ void {\bf AreaRouter}$<$ A $>$::check\_\-for\_\-virtual\_\-linkV3 (
\begin{DoxyParamCaption}
\item[{const {\bf RouteCmd}$<$ {\bf Vertex} $>$ \&}]{rc, }
\item[{{\bf Lsa::LsaRef}}]{lsar, }
\item[{{\bf LsaTempStore} \&}]{lsa\_\-temp\_\-store}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_ab124a102bdc5dab52b3c5b4924267277}


Check this node to see if its a virtual link endpoint. 


\begin{DoxyParams}{Parameters}
{\em rc} & node under consideration. \\
\hline
{\em lsar} & RouterLSA belonging to \hyperlink{protocolthe-p}{the} router under consideration. \\
\hline
{\em lsa\_\-temp\_\-store} & store of all possible Router-\/LSAs. \\
\hline
\end{DoxyParams}
\hypertarget{classAreaRouter_aca3b8d45dd86fb877cecc2f9d2aa3779}{
\index{AreaRouter@{AreaRouter}!check\_\-link\_\-lsa@{check\_\-link\_\-lsa}}
\index{check\_\-link\_\-lsa@{check\_\-link\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{check\_\-link\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::check\_\-link\_\-lsa (
\begin{DoxyParamCaption}
\item[{{\bf LinkLsa} $\ast$}]{nllsa, }
\item[{{\bf LinkLsa} $\ast$}]{ollsa}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_aca3b8d45dd86fb877cecc2f9d2aa3779}


OSPFv3 only. 

A new Link-\/LSA has arrived if this router is \hyperlink{protocolthe-p}{the} designated router then it may be necessary to generate a new Intra-\/Area-\/Prefix-\/LSA.

\begin{DoxyReturn}{Returns}
true if a new Intra-\/Area-\/Prefix-\/LSA needs to be generated. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a8c907451a4ef9f1daaac79a4ee5ba280}{
\index{AreaRouter@{AreaRouter}!clear\_\-database@{clear\_\-database}}
\index{clear\_\-database@{clear\_\-database}!AreaRouter@{AreaRouter}}
\subsubsection[{clear\_\-database}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::clear\_\-database (
\begin{DoxyParamCaption}
\item[{bool}]{preserve\_\-link\_\-lsas = {\ttfamily false}}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_a8c907451a4ef9f1daaac79a4ee5ba280}


Clear \hyperlink{protocolthe-p}{the} database. 


\begin{DoxyParams}{Parameters}
{\em preserve\_\-link\_\-lsas} & if true when clearing \hyperlink{protocolthe-p}{the} database don't remove Link-\/LSAs that were generated by this router. Relevant to OSPFv3 only. \\
\hline
\end{DoxyParams}
\hypertarget{classAreaRouter_aa7a9b899bf9ba18dc1779ee50a4aef74}{
\index{AreaRouter@{AreaRouter}!close\_\-database@{close\_\-database}}
\index{close\_\-database@{close\_\-database}!AreaRouter@{AreaRouter}}
\subsubsection[{close\_\-database}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::close\_\-database (
\begin{DoxyParamCaption}
\item[{{\bf DataBaseHandle} \&}]{dbh}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_aa7a9b899bf9ba18dc1779ee50a4aef74}


Close \hyperlink{protocolthe-p}{the} database. 


\begin{DoxyParams}{Parameters}
{\em dbd} & Database descriptor \\
\hline
\end{DoxyParams}
\hypertarget{classAreaRouter_abc497fa1d0abbd5022300993987443ef}{
\index{AreaRouter@{AreaRouter}!compare\_\-lsa@{compare\_\-lsa}}
\index{compare\_\-lsa@{compare\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{compare\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ {\bf AreaRouter}$<$ A $>$::{\bf LsaSearch} {\bf AreaRouter}$<$ A $>$::compare\_\-lsa (
\begin{DoxyParamCaption}
\item[{const {\bf Lsa\_\-header} \&}]{candidate, }
\item[{const {\bf Lsa\_\-header} \&}]{current}
\end{DoxyParamCaption}
) const}}
\label{classAreaRouter_abc497fa1d0abbd5022300993987443ef}


Compare two LSAs. 

RFC 2328 Section 13.1 Determining which LSA is newer.


\begin{DoxyParams}{Parameters}
{\em candidate} & offered LSA \\
\hline
{\em current} & equivalent to \hyperlink{protocolthe-p}{the} database copy.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
LsaSearch that describes \hyperlink{protocolthe-p}{the} type of match. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a34d1995e96f79e08c169845ac8f1a249}{
\index{AreaRouter@{AreaRouter}!compare\_\-lsa@{compare\_\-lsa}}
\index{compare\_\-lsa@{compare\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{compare\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ {\bf AreaRouter}$<$ A $>$::{\bf LsaSearch} {\bf AreaRouter}$<$ A $>$::compare\_\-lsa (
\begin{DoxyParamCaption}
\item[{const {\bf Lsa\_\-header} \&}]{lsah}
\end{DoxyParamCaption}
) const}}
\label{classAreaRouter_a34d1995e96f79e08c169845ac8f1a249}


Compare this LSA to. 


\begin{DoxyParams}{Parameters}
{\em \hyperlink{classLsa__header}{Lsa\_\-header}} & that is being sought.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
LsaSearch that describes \hyperlink{protocolthe-p}{the} type of match. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_aef8c4defb7063c30f972b0571bd876eb}{
\index{AreaRouter@{AreaRouter}!compare\_\-lsa@{compare\_\-lsa}}
\index{compare\_\-lsa@{compare\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{compare\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ {\bf AreaRouter}$<$ A $>$::{\bf LsaSearch} {\bf AreaRouter}$<$ A $>$::compare\_\-lsa (
\begin{DoxyParamCaption}
\item[{const {\bf Lsa\_\-header} \&}]{lsah, }
\item[{size\_\-t \&}]{index}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_aef8c4defb7063c30f972b0571bd876eb}


Compare this LSA to. 


\begin{DoxyParams}{Parameters}
{\em \hyperlink{classLsa__header}{Lsa\_\-header}} & that is being sought. \\
\hline
{\em index} & into LSA database if search succeeded.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
LsaSearch that describes \hyperlink{protocolthe-p}{the} type of match. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_acb23fdd6f6fcf49a93740bc5ac46266a}{
\index{AreaRouter@{AreaRouter}!configured\_\-virtual\_\-link@{configured\_\-virtual\_\-link}}
\index{configured\_\-virtual\_\-link@{configured\_\-virtual\_\-link}!AreaRouter@{AreaRouter}}
\subsubsection[{configured\_\-virtual\_\-link}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::configured\_\-virtual\_\-link (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classAreaRouter_acb23fdd6f6fcf49a93740bc5ac46266a}
\begin{DoxyReturn}{Returns}
true if any virtual links are configured through this area. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a7d41561d8fb0d2af9e676e47d8c3a1c9}{
\index{AreaRouter@{AreaRouter}!delete\_\-lsa@{delete\_\-lsa}}
\index{delete\_\-lsa@{delete\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{delete\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::delete\_\-lsa (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{lsar, }
\item[{size\_\-t}]{index, }
\item[{bool}]{invalidate}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a7d41561d8fb0d2af9e676e47d8c3a1c9}


Delete this LSA from \hyperlink{protocolthe-p}{the} database. 


\begin{DoxyParams}{Parameters}
{\em lsar} & LSA to delete. \\
\hline
{\em index} & into database. \\
\hline
{\em invalidate} & if true as well as removing from \hyperlink{protocolthe-p}{the} database mark \hyperlink{protocolthe-p}{the} LSA as invalid. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a1ff8766df9548f3a69ceaf0590d0d604}{
\index{AreaRouter@{AreaRouter}!event\_\-bad\_\-link\_\-state\_\-request@{event\_\-bad\_\-link\_\-state\_\-request}}
\index{event\_\-bad\_\-link\_\-state\_\-request@{event\_\-bad\_\-link\_\-state\_\-request}!AreaRouter@{AreaRouter}}
\subsubsection[{event\_\-bad\_\-link\_\-state\_\-request}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::event\_\-bad\_\-link\_\-state\_\-request (
\begin{DoxyParamCaption}
\item[{const {\bf OspfTypes::PeerID}}]{peerid, }
\item[{const {\bf OspfTypes::NeighbourID}}]{nid}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a1ff8766df9548f3a69ceaf0590d0d604}


Generate a BadLSReq event. 


\begin{DoxyParams}{Parameters}
{\em peerid} & \\
\hline
{\em nid} & \\
\hline
\end{DoxyParams}
\hypertarget{classAreaRouter_afa87dd9ebcd053426942b86985503911}{
\index{AreaRouter@{AreaRouter}!external\_\-announce@{external\_\-announce}}
\index{external\_\-announce@{external\_\-announce}!AreaRouter@{AreaRouter}}
\subsubsection[{external\_\-announce}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::external\_\-announce (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{lsar, }
\item[{bool}]{push, }
\item[{bool}]{redist}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_afa87dd9ebcd053426942b86985503911}


An AS-\/External-\/LSA being announced either from another area or from \hyperlink{protocolthe-p}{the} \hyperlink{classRIB}{RIB} as a redist. 

The LSAs should not be scheduled for transmission until \hyperlink{protocolthe-p}{the} \hyperlink{classAreaRouter_a8819214674425421097cee8ef50ccdf4}{external\_\-announce\_\-complete()} is seen. In many cases a number of LSAs may arrive in a single packet, waiting for \hyperlink{protocolthe-p}{the} \hyperlink{classAreaRouter_a8819214674425421097cee8ef50ccdf4}{external\_\-announce\_\-complete()} offers an opportunity for aggregation.


\begin{DoxyParams}{Parameters}
{\em lsar} & \hyperlink{protocolthe-p}{the} AS-\/External-\/LSA \\
\hline
{\em push} & set to true if \hyperlink{protocolthe-p}{the} push is a result of an external\_\-push(). \\
\hline
{\em redist} & true if this LSA was locally generated due to a redistribution. \\
\hline
\end{DoxyParams}
\hypertarget{classAreaRouter_ae5d790f42d674c86b93665ea57d2e036}{
\index{AreaRouter@{AreaRouter}!external\_\-area\_\-type@{external\_\-area\_\-type}}
\index{external\_\-area\_\-type@{external\_\-area\_\-type}!AreaRouter@{AreaRouter}}
\subsubsection[{external\_\-area\_\-type}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::external\_\-area\_\-type (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classAreaRouter_ae5d790f42d674c86b93665ea57d2e036}
\begin{DoxyReturn}{Returns}
true if this area should accept an AS-\/External-\/LSA or a Type-\/7-\/LSA. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a0a74b4fc2b5e1f901d74f2f4ad0f1af6}{
\index{AreaRouter@{AreaRouter}!external\_\-copy\_\-net\_\-nexthop@{external\_\-copy\_\-net\_\-nexthop}}
\index{external\_\-copy\_\-net\_\-nexthop@{external\_\-copy\_\-net\_\-nexthop}!AreaRouter@{AreaRouter}}
\subsubsection[{external\_\-copy\_\-net\_\-nexthop}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::external\_\-copy\_\-net\_\-nexthop (
\begin{DoxyParamCaption}
\item[{A}]{, }
\item[{{\bf ASExternalLsa} $\ast$}]{dst, }
\item[{{\bf ASExternalLsa} $\ast$}]{src}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_a0a74b4fc2b5e1f901d74f2f4ad0f1af6}


Copy \hyperlink{protocolthe-p}{the} net and nexthop information from one AS-\/External-\/LSA to another. 

The first dummy argument A is to allow template specialisation by address family. \hypertarget{classAreaRouter_af73a15288ef2177cb8acd53b1516f65d}{
\index{AreaRouter@{AreaRouter}!external\_\-flood\_\-all\_\-areas@{external\_\-flood\_\-all\_\-areas}}
\index{external\_\-flood\_\-all\_\-areas@{external\_\-flood\_\-all\_\-areas}!AreaRouter@{AreaRouter}}
\subsubsection[{external\_\-flood\_\-all\_\-areas}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::external\_\-flood\_\-all\_\-areas (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{lsar}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_af73a15288ef2177cb8acd53b1516f65d}


\hyperlink{structSend}{Send} this LSA to all area's. 

This is an AS-\/External-\/LSA being sent to other areas.


\begin{DoxyParams}{Parameters}
{\em lsar} & The LSA to publish \\
\hline
\end{DoxyParams}
\hypertarget{classAreaRouter_accb70bc635dbffc7cf3fd05a682e302c}{
\index{AreaRouter@{AreaRouter}!external\_\-generate\_\-type7@{external\_\-generate\_\-type7}}
\index{external\_\-generate\_\-type7@{external\_\-generate\_\-type7}!AreaRouter@{AreaRouter}}
\subsubsection[{external\_\-generate\_\-type7}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ {\bf Lsa::LsaRef} {\bf AreaRouter}$<$ A $>$::external\_\-generate\_\-type7 (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{lsar, }
\item[{bool \&}]{indb}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_accb70bc635dbffc7cf3fd05a682e302c}


Given an AS-\/External-\/LSA generate a Type-\/7 LSA. 


\begin{DoxyParams}{Parameters}
{\em indb} & if true \hyperlink{protocolthe-p}{the} Type-\/7-\/LSA is already in \hyperlink{protocolthe-p}{the} database. \\
\hline
\end{DoxyParams}
\hypertarget{classAreaRouter_a0411ad37b138dad320872c27f97bc845}{
\index{AreaRouter@{AreaRouter}!external\_\-refresh@{external\_\-refresh}}
\index{external\_\-refresh@{external\_\-refresh}!AreaRouter@{AreaRouter}}
\subsubsection[{external\_\-refresh}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::external\_\-refresh (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{lsar}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_a0411ad37b138dad320872c27f97bc845}


Refresh this LSA either because a timer has expired or because a newer LSA has arrived from another area. 

In either cause \hyperlink{protocolthe-p}{the} LSA should already be in this area's database. \hypertarget{classAreaRouter_a941a2416e69ed8f8c906e24698a083b8}{
\index{AreaRouter@{AreaRouter}!external\_\-withdraw@{external\_\-withdraw}}
\index{external\_\-withdraw@{external\_\-withdraw}!AreaRouter@{AreaRouter}}
\subsubsection[{external\_\-withdraw}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::external\_\-withdraw (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{lsar}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_a941a2416e69ed8f8c906e24698a083b8}


An AS-\/External-\/LSA being withdrawn either from another area or from \hyperlink{protocolthe-p}{the} \hyperlink{classRIB}{RIB} as a redist. 


\begin{DoxyParams}{Parameters}
{\em lsar} & \hyperlink{protocolthe-p}{the} AS-\/External-\/LSA \\
\hline
\end{DoxyParams}
\hypertarget{classAreaRouter_a1afc608a07ea7bbda68f6d502ce947f0}{
\index{AreaRouter@{AreaRouter}!find\_\-global\_\-address@{find\_\-global\_\-address}}
\index{find\_\-global\_\-address@{find\_\-global\_\-address}!AreaRouter@{AreaRouter}}
\subsubsection[{find\_\-global\_\-address}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf AreaRouter}$<$ A $>$::find\_\-global\_\-address (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{adv, }
\item[{uint16\_\-t}]{type, }
\item[{{\bf LsaTempStore} \&}]{lsa\_\-temp\_\-store, }
\item[{A \&}]{global\_\-address}
\end{DoxyParamCaption}
) const}}
\label{classAreaRouter_a1afc608a07ea7bbda68f6d502ce947f0}


Given an advertising router and type find a global address if present in its associated Intra-\/Area-\/Prefix-\/LSA if present, OSPFv3 only. 


\begin{DoxyParams}{Parameters}
{\em adv} & advertising router. \\
\hline
{\em type} & of Intra-\/Area-\/Prefix-\/LSA (Router-\/LSA or Network-\/LSA), Router-\/LSA expected. \\
\hline
{\em lsa\_\-temp\_\-store} & store of all possible Router-\/LSAs. \\
\hline
{\em global\_\-address} & (out) argument.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if global address found. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a058996cb5ef9c09b52629549aba3869c}{
\index{AreaRouter@{AreaRouter}!find\_\-interface\_\-address@{find\_\-interface\_\-address}}
\index{find\_\-interface\_\-address@{find\_\-interface\_\-address}!AreaRouter@{AreaRouter}}
\subsubsection[{find\_\-interface\_\-address}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf AreaRouter}$<$ A $>$::find\_\-interface\_\-address (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{src, }
\item[{{\bf Lsa::LsaRef}}]{dst, }
\item[{A \&}]{interface}
\end{DoxyParamCaption}
) const}}
\label{classAreaRouter_a058996cb5ef9c09b52629549aba3869c}


Given two LSAs find \hyperlink{protocolthe-p}{the} interface address of \hyperlink{protocolthe-p}{the} destination LSA. 

The source LSA can be a Router-\/LSA or a Network-\/LSA \hyperlink{protocolthe-p}{the} destination LSA must be a Router-\/LSA. \hypertarget{classAreaRouter_ac46041b906b2b71bcb2961d8fbe782c7}{
\index{AreaRouter@{AreaRouter}!find\_\-interface\_\-address@{find\_\-interface\_\-address}}
\index{find\_\-interface\_\-address@{find\_\-interface\_\-address}!AreaRouter@{AreaRouter}}
\subsubsection[{find\_\-interface\_\-address}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf AreaRouter}$<$ A $>$::find\_\-interface\_\-address (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::RouterID}}]{rid, }
\item[{uint32\_\-t}]{interface\_\-id, }
\item[{A \&}]{interface}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_ac46041b906b2b71bcb2961d8fbe782c7}


OSPFv3 only. 

Given a Router ID and interface ID find \hyperlink{protocolthe-p}{the} associated Link-\/LSA if present and return \hyperlink{protocolthe-p}{the} Link-\/local Interface \hyperlink{structAddress}{Address}. \hypertarget{classAreaRouter_af4be83e6a055674d8141fb101f4886f2}{
\index{AreaRouter@{AreaRouter}!find\_\-lsa@{find\_\-lsa}}
\index{find\_\-lsa@{find\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{find\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::find\_\-lsa (
\begin{DoxyParamCaption}
\item[{const {\bf Ls\_\-request} \&}]{lsr, }
\item[{size\_\-t \&}]{index}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_af4be83e6a055674d8141fb101f4886f2}


Find LSA matching this request. 


\begin{DoxyParams}{Parameters}
{\em lsr} & that is being sought. \\
\hline
{\em index} & into LSA database if search succeeded.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if an LSA was found. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_aa2afda58a93a484582625b00cc91a09b}{
\index{AreaRouter@{AreaRouter}!find\_\-lsa@{find\_\-lsa}}
\index{find\_\-lsa@{find\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{find\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::find\_\-lsa (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{lsar, }
\item[{size\_\-t \&}]{index}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_aa2afda58a93a484582625b00cc91a09b}


Find LSA matching this request. 


\begin{DoxyParams}{Parameters}
{\em lsar} & that is being sought. \\
\hline
{\em index} & into LSA database if search succeeded.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if an LSA was found. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a331c82d75c3f4c271c7e25839258f858}{
\index{AreaRouter@{AreaRouter}!find\_\-network\_\-lsa@{find\_\-network\_\-lsa}}
\index{find\_\-network\_\-lsa@{find\_\-network\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{find\_\-network\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::find\_\-network\_\-lsa (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{link\_\-state\_\-id, }
\item[{size\_\-t \&}]{index}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a331c82d75c3f4c271c7e25839258f858}


Find Network-\/LSA. 


\begin{DoxyParams}{Parameters}
{\em link\_\-state\_\-id} & \\
\hline
{\em index} & into LSA database if search succeeded.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if an LSA was found. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_af56f9a6eec55893ecfe95f61c06c4f8d}{
\index{AreaRouter@{AreaRouter}!find\_\-router\_\-lsa@{find\_\-router\_\-lsa}}
\index{find\_\-router\_\-lsa@{find\_\-router\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{find\_\-router\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::find\_\-router\_\-lsa (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{advertising\_\-router, }
\item[{size\_\-t \&}]{index}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_af56f9a6eec55893ecfe95f61c06c4f8d}


Find Router-\/LSA. 

OSPFv3 only

In OSPFv3 a router may generate more that one Router-\/LSA. In order to find all \hyperlink{protocolthe-p}{the} Router-\/LSAs that a router may have generated \hyperlink{protocolthe-p}{the} index must be seeded.


\begin{DoxyParams}{Parameters}
{\em advertising\_\-router} & \\
\hline
{\em index} & into LSA database if search succeeded. On input \hyperlink{protocolthe-p}{the} index should be set to one past \hyperlink{protocolthe-p}{the} last search result.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if an LSA was found. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a1c8a7ea934dc5e7f96bee8bd0e9fdc07}{
\index{AreaRouter@{AreaRouter}!generate\_\-intra\_\-area\_\-prefix\_\-lsa@{generate\_\-intra\_\-area\_\-prefix\_\-lsa}}
\index{generate\_\-intra\_\-area\_\-prefix\_\-lsa@{generate\_\-intra\_\-area\_\-prefix\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{generate\_\-intra\_\-area\_\-prefix\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::generate\_\-intra\_\-area\_\-prefix\_\-lsa (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::PeerID}}]{peerid, }
\item[{{\bf Lsa::LsaRef}}]{lsar, }
\item[{uint32\_\-t}]{interface\_\-id}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_a1c8a7ea934dc5e7f96bee8bd0e9fdc07}


Generate a Intra-\/Area-\/Prefix-\/LSA for this peer OSPFv3 only and add it to \hyperlink{protocolthe-p}{the} database. 


\begin{DoxyParams}{Parameters}
{\em peerid} & \hyperlink{protocolthe-p}{the} peer that \hyperlink{protocolthe-p}{the} generated Intra-\/Area-\/Prefix-\/LSA belongs to. \\
\hline
{\em lsar} & \hyperlink{protocolthe-p}{the} LSA that is referenced by \hyperlink{protocolthe-p}{the} Intra-\/Area-\/Prefix-\/LSA. \\
\hline
{\em interface\_\-id} & that \hyperlink{protocolthe-p}{the} generated Intra-\/Area-\/Prefix-\/LSA belongs to. \\
\hline
\end{DoxyParams}
\hypertarget{classAreaRouter_a70e8c17269bec2253db8146a0618b161}{
\index{AreaRouter@{AreaRouter}!get\_\-area\_\-type@{get\_\-area\_\-type}}
\index{get\_\-area\_\-type@{get\_\-area\_\-type}!AreaRouter@{AreaRouter}}
\subsubsection[{get\_\-area\_\-type}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ {\bf OspfTypes::AreaType} {\bf AreaRouter}$<$ A $>$::get\_\-area\_\-type (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classAreaRouter_a70e8c17269bec2253db8146a0618b161}


Add a network to be announced. 

Remove a network to be announced. \begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} type of this area. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a5e0e2d4b954cfca208a22443966538d7}{
\index{AreaRouter@{AreaRouter}!get\_\-entry\_\-database@{get\_\-entry\_\-database}}
\index{get\_\-entry\_\-database@{get\_\-entry\_\-database}!AreaRouter@{AreaRouter}}
\subsubsection[{get\_\-entry\_\-database}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ {\bf Lsa::LsaRef} {\bf AreaRouter}$<$ A $>$::get\_\-entry\_\-database (
\begin{DoxyParamCaption}
\item[{{\bf DataBaseHandle} \&}]{dbh, }
\item[{bool \&}]{last}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_a5e0e2d4b954cfca208a22443966538d7}


\hyperlink{classNext}{Next} database entry. 


\begin{DoxyParams}{Parameters}
{\em last} & true if this is \hyperlink{protocolthe-p}{the} last entry.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The next LSA in \hyperlink{protocolthe-p}{the} database. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a84ec981da579a439340b1017e1642d25}{
\index{AreaRouter@{AreaRouter}!get\_\-lsas@{get\_\-lsas}}
\index{get\_\-lsas@{get\_\-lsas}!AreaRouter@{AreaRouter}}
\subsubsection[{get\_\-lsas}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::get\_\-lsas (
\begin{DoxyParamCaption}
\item[{const list$<$ {\bf Ls\_\-request} $>$ \&}]{requests, }
\item[{list$<$ {\bf Lsa::LsaRef} $>$ \&}]{lsas}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_a84ec981da579a439340b1017e1642d25}


Fetch a list of lsas given a list of requests. 

The age fields of \hyperlink{protocolthe-p}{the} returned LSAs will be correctly set.


\begin{DoxyParams}{Parameters}
{\em requests} & list of requests \\
\hline
{\em lsas} & list of LSAs\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
True if $\ast$all$\ast$ \hyperlink{protocolthe-p}{the} requests have been satisfied. If an LSA can not be found False is returned and \hyperlink{protocolthe-p}{the} state of \hyperlink{protocolthe-p}{the} lsas list is undefined; hence should not be used. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a11dae51efe3562affb03fce2c5323602}{
\index{AreaRouter@{AreaRouter}!get\_\-neighbour\_\-address@{get\_\-neighbour\_\-address}}
\index{get\_\-neighbour\_\-address@{get\_\-neighbour\_\-address}!AreaRouter@{AreaRouter}}
\subsubsection[{get\_\-neighbour\_\-address}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::get\_\-neighbour\_\-address (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::RouterID}}]{rid, }
\item[{uint32\_\-t}]{interface\_\-id, }
\item[{A \&}]{neighbour\_\-address}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a11dae51efe3562affb03fce2c5323602}


OSPFv3 Only Neighbour's source address. 


\begin{DoxyParams}{Parameters}
{\em rid} & Router ID \\
\hline
{\em interface\_\-id} & Interface ID. \\
\hline
{\em neighbour\_\-address} & set if neighbour is found.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} neighbour is found. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a42c04b264824ea2191b38e94308c39cf}{
\index{AreaRouter@{AreaRouter}!maxage\_\-reached@{maxage\_\-reached}}
\index{maxage\_\-reached@{maxage\_\-reached}!AreaRouter@{AreaRouter}}
\subsubsection[{maxage\_\-reached}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::maxage\_\-reached (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{lsar, }
\item[{size\_\-t}]{index}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a42c04b264824ea2191b38e94308c39cf}


This LSA has reached MAXAGE so flood it to all \hyperlink{protocolthe-p}{the} peers of this area. 

If its an external LSA flood it to all areas. \hypertarget{classAreaRouter_ac674bdbae42c925439eeaae58bea7b43}{
\index{AreaRouter@{AreaRouter}!neighbour\_\-at\_\-least\_\-two\_\-way@{neighbour\_\-at\_\-least\_\-two\_\-way}}
\index{neighbour\_\-at\_\-least\_\-two\_\-way@{neighbour\_\-at\_\-least\_\-two\_\-way}!AreaRouter@{AreaRouter}}
\subsubsection[{neighbour\_\-at\_\-least\_\-two\_\-way}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::neighbour\_\-at\_\-least\_\-two\_\-way (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::RouterID}}]{rid}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_ac674bdbae42c925439eeaae58bea7b43}

\begin{DoxyParams}{Parameters}
{\em rid} & Router ID of neighbouring router.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if this router is at least twoway with \hyperlink{protocolthe-p}{the} specified router. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a3f65adf595ba29eb0a1bd32d975b4f0d}{
\index{AreaRouter@{AreaRouter}!neighbours\_\-exchange\_\-or\_\-loading@{neighbours\_\-exchange\_\-or\_\-loading}}
\index{neighbours\_\-exchange\_\-or\_\-loading@{neighbours\_\-exchange\_\-or\_\-loading}!AreaRouter@{AreaRouter}}
\subsubsection[{neighbours\_\-exchange\_\-or\_\-loading}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::neighbours\_\-exchange\_\-or\_\-loading (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a3f65adf595ba29eb0a1bd32d975b4f0d}
\begin{DoxyReturn}{Returns}
true if any of \hyperlink{protocolthe-p}{the} neigbours are in state Exchange or Loading. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_aacacca988e7b226f0c4f25957f8ad406}{
\index{AreaRouter@{AreaRouter}!newer\_\-lsa@{newer\_\-lsa}}
\index{newer\_\-lsa@{newer\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{newer\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::newer\_\-lsa (
\begin{DoxyParamCaption}
\item[{const {\bf Lsa\_\-header} \&}]{lsah}
\end{DoxyParamCaption}
) const}}
\label{classAreaRouter_aacacca988e7b226f0c4f25957f8ad406}
\begin{DoxyReturn}{Returns}
true if this is a newer LSA than we already have. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_add0a539d91e8afe0dea4d3b9a7296ebc}{
\index{AreaRouter@{AreaRouter}!on\_\-link\_\-state\_\-request\_\-list@{on\_\-link\_\-state\_\-request\_\-list}}
\index{on\_\-link\_\-state\_\-request\_\-list@{on\_\-link\_\-state\_\-request\_\-list}!AreaRouter@{AreaRouter}}
\subsubsection[{on\_\-link\_\-state\_\-request\_\-list}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::on\_\-link\_\-state\_\-request\_\-list (
\begin{DoxyParamCaption}
\item[{const {\bf OspfTypes::PeerID}}]{peerid, }
\item[{const {\bf OspfTypes::NeighbourID}}]{nid, }
\item[{{\bf Lsa::LsaRef}}]{lsar}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_add0a539d91e8afe0dea4d3b9a7296ebc}


Is this LSA on this neighbours link state request list. 


\begin{DoxyParams}{Parameters}
{\em peerid} & \\
\hline
{\em nid} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if it is. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_afce01e8b262b847709120cdb09db5c2d}{
\index{AreaRouter@{AreaRouter}!open\_\-database@{open\_\-database}}
\index{open\_\-database@{open\_\-database}!AreaRouter@{AreaRouter}}
\subsubsection[{open\_\-database}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ {\bf DataBaseHandle} {\bf AreaRouter}$<$ A $>$::open\_\-database (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::PeerID}}]{peerid, }
\item[{bool \&}]{empty}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_afce01e8b262b847709120cdb09db5c2d}


Open database. 

Used only by \hyperlink{protocolthe-p}{the} peer to generate \hyperlink{protocolthe-p}{the} database description packets.


\begin{DoxyParams}{Parameters}
{\em peerid} & \\
\hline
{\em empty} & true if \hyperlink{protocolthe-p}{the} database is empty. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Database Handle 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a2e920314afa81c5ea89e0f3e584d93a6}{
\index{AreaRouter@{AreaRouter}!populate\_\-prefix@{populate\_\-prefix}}
\index{populate\_\-prefix@{populate\_\-prefix}!AreaRouter@{AreaRouter}}
\subsubsection[{populate\_\-prefix}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ uint32\_\-t {\bf AreaRouter}$<$ A $>$::populate\_\-prefix (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::PeerID}}]{peeridid, }
\item[{uint32\_\-t}]{interface\_\-id, }
\item[{{\bf OspfTypes::RouterID}}]{router\_\-id, }
\item[{list$<$ {\bf IPv6Prefix} $>$ \&}]{prefixes}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_a2e920314afa81c5ea89e0f3e584d93a6}


OSPFv3 only. 

Find \hyperlink{protocolthe-p}{the} Link-\/LSA (if it exists) specified by \hyperlink{protocolthe-p}{the} \hyperlink{protocolthe-p}{the} tuple LS type, Link State ID and Router ID, and add to \hyperlink{protocolthe-p}{the} prefix list. If \hyperlink{protocolthe-p}{the} prefix is already on \hyperlink{protocolthe-p}{the} list just or in \hyperlink{protocolthe-p}{the} options field.

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} options associated with this Link-\/LSA if present otherwise zero. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a0aa1eda39144426baea7f542173cff84}{
\index{AreaRouter@{AreaRouter}!receive\_\-lsas@{receive\_\-lsas}}
\index{receive\_\-lsas@{receive\_\-lsas}!AreaRouter@{AreaRouter}}
\subsubsection[{receive\_\-lsas}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::receive\_\-lsas (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::PeerID}}]{peerid, }
\item[{{\bf OspfTypes::NeighbourID}}]{nid, }
\item[{list$<$ {\bf Lsa::LsaRef} $>$ \&}]{lsas, }
\item[{list$<$ {\bf Lsa\_\-header} $>$ \&}]{direct\_\-ack, }
\item[{list$<$ {\bf Lsa\_\-header} $>$ \&}]{delayed\_\-ack, }
\item[{bool}]{is\_\-router\_\-dr, }
\item[{bool}]{is\_\-router\_\-bdr, }
\item[{bool}]{is\_\-neighbour\_\-dr}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_a0aa1eda39144426baea7f542173cff84}


Receive LSAs. 


\begin{DoxyParams}{Parameters}
{\em peerid} & that \hyperlink{protocolthe-p}{the} LSAs arrived on. \\
\hline
{\em nid} & neighbourID that \hyperlink{protocolthe-p}{the} LSAs arrived on. \\
\hline
{\em lsas} & list of recived lsas. \\
\hline
{\em direct\_\-ack} & list of direct acks to send in response to \hyperlink{protocolthe-p}{the} LSA \\
\hline
{\em delayed\_\-ack} & list of delayed acks to send in response to \hyperlink{protocolthe-p}{the} LSA \\
\hline
{\em is\_\-router\_\-dr} & true if \hyperlink{protocolthe-p}{the} router is \hyperlink{protocolthe-p}{the} designated router. \\
\hline
{\em is\_\-router\_\-bdr} & true if \hyperlink{protocolthe-p}{the} receiving interface was in state backup. \\
\hline
{\em is\_\-neighbour\_\-dr} & true if \hyperlink{protocolthe-p}{the} LSA was received from \hyperlink{protocolthe-p}{the} designated router. \\
\hline
\end{DoxyParams}
\hypertarget{classAreaRouter_a6deb0783e0b2ea7bc55f398ba90331f4}{
\index{AreaRouter@{AreaRouter}!refresh\_\-default\_\-route@{refresh\_\-default\_\-route}}
\index{refresh\_\-default\_\-route@{refresh\_\-default\_\-route}!AreaRouter@{AreaRouter}}
\subsubsection[{refresh\_\-default\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::refresh\_\-default\_\-route (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_a6deb0783e0b2ea7bc55f398ba90331f4}


Refresh \hyperlink{protocolthe-p}{the} default route LSA. 

Increments \hyperlink{protocolthe-p}{the} sequence and floods updates \hyperlink{protocolthe-p}{the} cost if it has changed. \hypertarget{classAreaRouter_a807b6bcdb4105ecd6c085c29fd242802}{
\index{AreaRouter@{AreaRouter}!refresh\_\-intra\_\-area\_\-prefix\_\-lsa@{refresh\_\-intra\_\-area\_\-prefix\_\-lsa}}
\index{refresh\_\-intra\_\-area\_\-prefix\_\-lsa@{refresh\_\-intra\_\-area\_\-prefix\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{refresh\_\-intra\_\-area\_\-prefix\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::refresh\_\-intra\_\-area\_\-prefix\_\-lsa (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::PeerID}}]{peerid, }
\item[{uint16\_\-t}]{referenced\_\-ls\_\-type, }
\item[{uint32\_\-t}]{interface\_\-id}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_a807b6bcdb4105ecd6c085c29fd242802}


Refresh \hyperlink{protocolthe-p}{the} Intra-\/Area-\/Prefix-\/LSA OSPFv3 only. 

NOT IMPLEMENTED.


\begin{DoxyParams}{Parameters}
{\em peerid} & \hyperlink{protocolthe-p}{the} peer that needs its Intra-\/Area-\/Prefix-\/LSA refreshed. \\
\hline
{\em referenced\_\-ls\_\-type} & \\
\hline
{\em interface\_\-id} & that \hyperlink{protocolthe-p}{the} generated Intra-\/Area-\/Prefix-\/LSA belongs to. \\
\hline
\end{DoxyParams}
\hypertarget{classAreaRouter_ab6efdd417b0c032b8976d3dfda7f9e02}{
\index{AreaRouter@{AreaRouter}!refresh\_\-network\_\-lsa@{refresh\_\-network\_\-lsa}}
\index{refresh\_\-network\_\-lsa@{refresh\_\-network\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{refresh\_\-network\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::refresh\_\-network\_\-lsa (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::PeerID}}]{peerid, }
\item[{{\bf Lsa::LsaRef}}]{lsar, }
\item[{bool}]{timer = {\ttfamily false}}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_ab6efdd417b0c032b8976d3dfda7f9e02}


Refresh \hyperlink{protocolthe-p}{the} Network-\/LSAs. 


\begin{DoxyParams}{Parameters}
{\em peerid} & \hyperlink{protocolthe-p}{the} peer that needs its Network-\/LSA refreshed. \\
\hline
{\em lsar} & \hyperlink{protocolthe-p}{the} Network-\/LSA itself. \\
\hline
{\em timer} & is \hyperlink{protocolthe-p}{the} Network-\/LSA being refreshed due to \hyperlink{protocolthe-p}{the} timer firing? \\
\hline
\end{DoxyParams}
\hypertarget{classAreaRouter_a8b234551d86758c252b93e663c4bca45}{
\index{AreaRouter@{AreaRouter}!refresh\_\-router\_\-lsa@{refresh\_\-router\_\-lsa}}
\index{refresh\_\-router\_\-lsa@{refresh\_\-router\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{refresh\_\-router\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::refresh\_\-router\_\-lsa (
\begin{DoxyParamCaption}
\item[{bool}]{timer = {\ttfamily false}}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_a8b234551d86758c252b93e663c4bca45}


Refresh Router-\/LSA. 

Cause \hyperlink{protocolthe-p}{the} generation of a new Router-\/LSA if necessary.


\begin{DoxyParams}{Parameters}
{\em timer} & true if called by \hyperlink{protocolthe-p}{the} timer. \\
\hline
\end{DoxyParams}
\hypertarget{classAreaRouter_a5d9b4a059aba9cb3a11ce3c772e7fe29}{
\index{AreaRouter@{AreaRouter}!reincarnate@{reincarnate}}
\index{reincarnate@{reincarnate}!AreaRouter@{AreaRouter}}
\subsubsection[{reincarnate}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::reincarnate (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a5d9b4a059aba9cb3a11ce3c772e7fe29}


Reincarnate LSAs that have gone through \hyperlink{protocolthe-p}{the} MaxSequenceNumber transition. 

Called on a periodic timer. \hypertarget{classAreaRouter_a52344d111914603a7ba878b826ef0228}{
\index{AreaRouter@{AreaRouter}!restore\_\-default\_\-route@{restore\_\-default\_\-route}}
\index{restore\_\-default\_\-route@{restore\_\-default\_\-route}!AreaRouter@{AreaRouter}}
\subsubsection[{restore\_\-default\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::restore\_\-default\_\-route (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_a52344d111914603a7ba878b826ef0228}


If \hyperlink{protocolthe-p}{the} default route LSA should be in \hyperlink{protocolthe-p}{the} database put it back. 

Either from \hyperlink{protocolthe-p}{the} previously saved or generate a new one if necessary. Typically paired with \hyperlink{classAreaRouter_a73e2eedfb778a90a82ae4f08e38ae44c}{save\_\-default\_\-route()}. \hypertarget{classAreaRouter_a3f26610752decc56a11d2018c4cd4fc7}{
\index{AreaRouter@{AreaRouter}!routing\_\-add@{routing\_\-add}}
\index{routing\_\-add@{routing\_\-add}!AreaRouter@{AreaRouter}}
\subsubsection[{routing\_\-add}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::routing\_\-add (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{lsar, }
\item[{bool}]{known}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a3f26610752decc56a11d2018c4cd4fc7}


Add this LSA to \hyperlink{protocolthe-p}{the} routing computation. 

The calls to this method are bracketed between a call to routing begin and routing end.


\begin{DoxyParams}{Parameters}
{\em lsar} & LSA to be added to \hyperlink{protocolthe-p}{the} database. \\
\hline
{\em known} & true if this LSA is already in \hyperlink{protocolthe-p}{the} database. \\
\hline
\end{DoxyParams}
\hypertarget{classAreaRouter_a0e94329abeb277da173a2a589bb01b50}{
\index{AreaRouter@{AreaRouter}!routing\_\-compare\_\-externals@{routing\_\-compare\_\-externals}}
\index{routing\_\-compare\_\-externals@{routing\_\-compare\_\-externals}!AreaRouter@{AreaRouter}}
\subsubsection[{routing\_\-compare\_\-externals}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::routing\_\-compare\_\-externals (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{current, }
\item[{{\bf Lsa::LsaRef}}]{candidate}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a0e94329abeb277da173a2a589bb01b50}


RFC 3101 Section 2.5. 

(6) (e) Calculating Type-\/7 AS external routes.

Return true if \hyperlink{protocolthe-p}{the} current LSA should be replaced by \hyperlink{protocolthe-p}{the} candidate LSA. \hypertarget{classAreaRouter_a1e309bf128318b73ab3367a6f7f49da5}{
\index{AreaRouter@{AreaRouter}!routing\_\-delete@{routing\_\-delete}}
\index{routing\_\-delete@{routing\_\-delete}!AreaRouter@{AreaRouter}}
\subsubsection[{routing\_\-delete}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::routing\_\-delete (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{lsar}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a1e309bf128318b73ab3367a6f7f49da5}


Remove this LSA from \hyperlink{protocolthe-p}{the} routing computation. 

The calls to this method are $\ast$NOT$\ast$ bracketed between a call to routing begin and routing end. \hypertarget{classAreaRouter_a0db615e96f78deadad6ba7cc0ebfd588}{
\index{AreaRouter@{AreaRouter}!routing\_\-end@{routing\_\-end}}
\index{routing\_\-end@{routing\_\-end}!AreaRouter@{AreaRouter}}
\subsubsection[{routing\_\-end}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::routing\_\-end (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a0db615e96f78deadad6ba7cc0ebfd588}


\hyperlink{classRouting}{Routing} changes are completed. 

1) Update \hyperlink{protocolthe-p}{the} routing table if necessary. 2) Possibly generate new summary LSAs. \hypertarget{classAreaRouter_a73e2eedfb778a90a82ae4f08e38ae44c}{
\index{AreaRouter@{AreaRouter}!save\_\-default\_\-route@{save\_\-default\_\-route}}
\index{save\_\-default\_\-route@{save\_\-default\_\-route}!AreaRouter@{AreaRouter}}
\subsubsection[{save\_\-default\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::save\_\-default\_\-route (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_a73e2eedfb778a90a82ae4f08e38ae44c}


If \hyperlink{protocolthe-p}{the} default route LSA is in \hyperlink{protocolthe-p}{the} database remove it. 

Typically to stop it being purged when \hyperlink{protocolthe-p}{the} area type changes or summarisation is disable. \hypertarget{classAreaRouter_a8ed8d739a26a640b7136ca4ba414d7fc}{
\index{AreaRouter@{AreaRouter}!self\_\-originated@{self\_\-originated}}
\index{self\_\-originated@{self\_\-originated}!AreaRouter@{AreaRouter}}
\subsubsection[{self\_\-originated}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::self\_\-originated (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{lsar, }
\item[{bool}]{match, }
\item[{size\_\-t}]{index}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a8ed8d739a26a640b7136ca4ba414d7fc}


If this is a self-\/originated LSA do \hyperlink{protocolthe-p}{the} appropriate processing. 

RFC 2328 Section 13.4. Receiving self-\/originated LSAs


\begin{DoxyParams}{Parameters}
{\em lsar} & received LSA. \\
\hline
{\em match} & if true this LSA has matched a self-\/originated LSA already in \hyperlink{protocolthe-p}{the} database. \\
\hline
{\em index} & if match is true \hyperlink{protocolthe-p}{the} index into \hyperlink{protocolthe-p}{the} database for \hyperlink{protocolthe-p}{the} matching LSA.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if this is a self-\/orignated LSA. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a267eb2ed72d9d140deeaaad7b3c6c54e}{
\index{AreaRouter@{AreaRouter}!self\_\-originated\_\-by\_\-interface@{self\_\-originated\_\-by\_\-interface}}
\index{self\_\-originated\_\-by\_\-interface@{self\_\-originated\_\-by\_\-interface}!AreaRouter@{AreaRouter}}
\subsubsection[{self\_\-originated\_\-by\_\-interface}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf AreaRouter}$<$ A $>$::self\_\-originated\_\-by\_\-interface (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{lsar, }
\item[{A}]{ = {\ttfamily A::ZERO()}}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a267eb2ed72d9d140deeaaad7b3c6c54e}


Check this LSA to see if its link state id matched any of \hyperlink{protocolthe-p}{the} routers interfaces. 


\begin{DoxyParams}{Parameters}
{\em lsar} & LSA to check. A dummy argument is used to force an \hyperlink{classIPv4}{IPv4} and an \hyperlink{classIPv6}{IPv6} instance of this method to be generated. Isn't C++ cool? \\
\hline
\end{DoxyParams}
\hypertarget{classAreaRouter_a78f6d93914e6de0e9c5983fce59a0aba}{
\index{AreaRouter@{AreaRouter}!send\_\-lsa@{send\_\-lsa}}
\index{send\_\-lsa@{send\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{send\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::send\_\-lsa (
\begin{DoxyParamCaption}
\item[{const {\bf OspfTypes::PeerID}}]{peerid, }
\item[{const {\bf OspfTypes::NeighbourID}}]{nid, }
\item[{{\bf Lsa::LsaRef}}]{lsar}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a78f6d93914e6de0e9c5983fce59a0aba}


\hyperlink{structSend}{Send} this LSA directly to \hyperlink{protocolthe-p}{the} neighbour. 

Do not place on retransmission list.


\begin{DoxyParams}{Parameters}
{\em peerid} & \\
\hline
{\em nid} & \\
\hline
{\em lsar} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success 
\end{DoxyReturn}
\hypertarget{classAreaRouter_ab736a45a2a61d70cc08523e8236d3e44}{
\index{AreaRouter@{AreaRouter}!shutdown@{shutdown}}
\index{shutdown@{shutdown}!AreaRouter@{AreaRouter}}
\subsubsection[{shutdown}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ int {\bf AreaRouter}$<$ A $>$::shutdown (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classAreaRouter_ab736a45a2a61d70cc08523e8236d3e44}


Required by \hyperlink{protocolthe-p}{the} class Subsystem. 

Called on shutdown.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implements \hyperlink{classServiceBase_a6ad34506fd5a446d5667abcb2e1b593b}{ServiceBase}.

\hypertarget{classAreaRouter_aa002ddc87b036cea1c5721a3ef716b43}{
\index{AreaRouter@{AreaRouter}!startup@{startup}}
\index{startup@{startup}!AreaRouter@{AreaRouter}}
\subsubsection[{startup}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ int {\bf AreaRouter}$<$ A $>$::startup (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classAreaRouter_aa002ddc87b036cea1c5721a3ef716b43}


Required by \hyperlink{protocolthe-p}{the} class Subsystem. 

Called on startup.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Implements \hyperlink{classServiceBase_a791755872b2056ddd82a2f00904c7d2b}{ServiceBase}.

\hypertarget{classAreaRouter_ac6f82681278366bbfaae55a0edd2c41e}{
\index{AreaRouter@{AreaRouter}!subsequent@{subsequent}}
\index{subsequent@{subsequent}!AreaRouter@{AreaRouter}}
\subsubsection[{subsequent}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::subsequent (
\begin{DoxyParamCaption}
\item[{{\bf DataBaseHandle} \&}]{dbh}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_ac6f82681278366bbfaae55a0edd2c41e}


Is there another database entry following this one. 

This method is for internal use and its use is not recommended.

\begin{DoxyReturn}{Returns}
true if there is a subsequent entry. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_afbde2072db4b87f092ae7c8c6b2dfa3f}{
\index{AreaRouter@{AreaRouter}!summary\_\-announce@{summary\_\-announce}}
\index{summary\_\-announce@{summary\_\-announce}!AreaRouter@{AreaRouter}}
\subsubsection[{summary\_\-announce}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::summary\_\-announce (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{{\bf IPNet}$<$ A $>$}]{net, }
\item[{{\bf RouteEntry}$<$ A $>$ \&}]{rt, }
\item[{bool}]{push}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_afbde2072db4b87f092ae7c8c6b2dfa3f}


A new route has been added to \hyperlink{protocolthe-p}{the} routing table it is being presented to this area for possible Summary-\/LSA generation. 


\begin{DoxyParams}{Parameters}
{\em area} & \hyperlink{protocolthe-p}{the} route came from \\
\hline
{\em net} & \\
\hline
{\em rt} & routing entry. \\
\hline
{\em push} & true if \hyperlink{protocolthe-p}{the} routes are arriving as a consquence of calling summary\_\-push() \\
\hline
\end{DoxyParams}
\hypertarget{classAreaRouter_a2365c9d4f2e0ee60fe0a8b44c7894ac4}{
\index{AreaRouter@{AreaRouter}!summary\_\-build@{summary\_\-build}}
\index{summary\_\-build@{summary\_\-build}!AreaRouter@{AreaRouter}}
\subsubsection[{summary\_\-build}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ {\bf Lsa::LsaRef} {\bf AreaRouter}$<$ A $>$::summary\_\-build (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{{\bf IPNet}$<$ A $>$}]{net, }
\item[{{\bf RouteEntry}$<$ A $>$ \&}]{rt, }
\item[{bool \&}]{announce}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a2365c9d4f2e0ee60fe0a8b44c7894ac4}


Construct a summary LSA if appropriate. 


\begin{DoxyParams}{Parameters}
{\em announce} & true if this in an announce false if its a withdraw. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} LSA can be empty. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a9fc49db9a13119bcf47010d3d96c178b}{
\index{AreaRouter@{AreaRouter}!summary\_\-network\_\-lsa\_\-intra\_\-area@{summary\_\-network\_\-lsa\_\-intra\_\-area}}
\index{summary\_\-network\_\-lsa\_\-intra\_\-area@{summary\_\-network\_\-lsa\_\-intra\_\-area}!AreaRouter@{AreaRouter}}
\subsubsection[{summary\_\-network\_\-lsa\_\-intra\_\-area}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ {\bf Lsa::LsaRef} {\bf AreaRouter}$<$ A $>$::summary\_\-network\_\-lsa\_\-intra\_\-area (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{{\bf IPNet}$<$ A $>$}]{net, }
\item[{{\bf RouteEntry}$<$ A $>$ \&}]{rt, }
\item[{bool \&}]{announce}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a9fc49db9a13119bcf47010d3d96c178b}


Generate a Summary-\/LSA for an intra area path taking into account area ranges. 

An announcement may not generate an LSA and a withdraw may not cause an LSA to be removed. \hypertarget{classAreaRouter_ab67ef41def4b4d9d77d2178b4959d637}{
\index{AreaRouter@{AreaRouter}!summary\_\-replace@{summary\_\-replace}}
\index{summary\_\-replace@{summary\_\-replace}!AreaRouter@{AreaRouter}}
\subsubsection[{summary\_\-replace}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::summary\_\-replace (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{{\bf IPNet}$<$ A $>$}]{net, }
\item[{{\bf RouteEntry}$<$ A $>$ \&}]{rt, }
\item[{{\bf RouteEntry}$<$ A $>$ \&}]{previous\_\-rt, }
\item[{{\bf OspfTypes::AreaID}}]{previous\_\-area}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_ab67ef41def4b4d9d77d2178b4959d637}


A route has been replaced in \hyperlink{protocolthe-p}{the} routing table. 

A previously generated Summary-\/LSA may need to be withdrawn or replaced. \hypertarget{classAreaRouter_a7c3735d8fe5672b09b4fd198c1fb011a}{
\index{AreaRouter@{AreaRouter}!summary\_\-withdraw@{summary\_\-withdraw}}
\index{summary\_\-withdraw@{summary\_\-withdraw}!AreaRouter@{AreaRouter}}
\subsubsection[{summary\_\-withdraw}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::summary\_\-withdraw (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{{\bf IPNet}$<$ A $>$}]{net, }
\item[{{\bf RouteEntry}$<$ A $>$ \&}]{rt}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_a7c3735d8fe5672b09b4fd198c1fb011a}


A route has been deleted from \hyperlink{protocolthe-p}{the} routing table. 

It may previously have caused a Summary-\/LSA which now needs to be withdrawn. \hypertarget{classAreaRouter_a63bf8ec9b4681c29e38acf5397977156}{
\index{AreaRouter@{AreaRouter}!unique\_\-find\_\-lsa@{unique\_\-find\_\-lsa}}
\index{unique\_\-find\_\-lsa@{unique\_\-find\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{unique\_\-find\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf AreaRouter}$<$ A $>$::unique\_\-find\_\-lsa (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{lsar, }
\item[{const {\bf IPNet}$<$ A $>$ \&}]{net, }
\item[{size\_\-t \&}]{index}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a63bf8ec9b4681c29e38acf5397977156}


Networks with same network number but different prefix lengths can generate \hyperlink{protocolthe-p}{the} same link state ID. 

When looking for an LSA make sure that there \hyperlink{protocolthe-p}{the} lsar that matches \hyperlink{protocolthe-p}{the} net is found. Summary-\/LSAs only. \hypertarget{classAreaRouter_a9826ee38e6d5f29910782d014f71b35d}{
\index{AreaRouter@{AreaRouter}!unique\_\-link\_\-state\_\-id@{unique\_\-link\_\-state\_\-id}}
\index{unique\_\-link\_\-state\_\-id@{unique\_\-link\_\-state\_\-id}!AreaRouter@{AreaRouter}}
\subsubsection[{unique\_\-link\_\-state\_\-id}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ void {\bf AreaRouter}$<$ A $>$::unique\_\-link\_\-state\_\-id (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{lsar}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_a9826ee38e6d5f29910782d014f71b35d}


Networks with same network number but different prefix lengths can generate \hyperlink{protocolthe-p}{the} same link state ID. 

When generating a new LSA if a collision occurs use: RFC 2328 Appendix E. An algorithm for assigning Link State IDs to resolve \hyperlink{protocolthe-p}{the} clash. Summary-\/LSAs only. \hypertarget{classAreaRouter_a1294826aeee3b6869a0c976972e3597e}{
\index{AreaRouter@{AreaRouter}!update\_\-intra\_\-area\_\-prefix\_\-lsa@{update\_\-intra\_\-area\_\-prefix\_\-lsa}}
\index{update\_\-intra\_\-area\_\-prefix\_\-lsa@{update\_\-intra\_\-area\_\-prefix\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{update\_\-intra\_\-area\_\-prefix\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::update\_\-intra\_\-area\_\-prefix\_\-lsa (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::PeerID}}]{peerid}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_a1294826aeee3b6869a0c976972e3597e}


OSPFv3 only. 

This method is paired with \hyperlink{classAreaRouter_aca3b8d45dd86fb877cecc2f9d2aa3779}{check\_\-link\_\-lsa()} if a new Link-\/LSA has arrived that requires a new Intra-\/Area-\/Prefix-\/LSA then this method should be called. \hypertarget{classAreaRouter_aa74a77fa25490968d1deb7b61bf99ffb}{
\index{AreaRouter@{AreaRouter}!update\_\-intra\_\-area\_\-prefix\_\-lsa@{update\_\-intra\_\-area\_\-prefix\_\-lsa}}
\index{update\_\-intra\_\-area\_\-prefix\_\-lsa@{update\_\-intra\_\-area\_\-prefix\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{update\_\-intra\_\-area\_\-prefix\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ uint32\_\-t {\bf AreaRouter}$<$ A $>$::update\_\-intra\_\-area\_\-prefix\_\-lsa (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::PeerID}}]{peer, }
\item[{uint16\_\-t}]{referenced\_\-ls\_\-type, }
\item[{{\bf OspfTypes::RouterID}}]{interface\_\-id, }
\item[{const list$<$ {\bf RouterInfo} $>$ \&}]{attached\_\-routers}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_aa74a77fa25490968d1deb7b61bf99ffb}


Update \hyperlink{protocolthe-p}{the} Intra-\/Area-\/Prefix-\/LSA for this peer OSPFv3 only. 


\begin{DoxyParams}{Parameters}
{\em peerid} & \hyperlink{protocolthe-p}{the} peer that needs its Intra-\/Area-\/Prefix-\/LSA refreshed. \\
\hline
{\em referenced\_\-ls\_\-type} & \\
\hline
{\em interface\_\-id} & that \hyperlink{protocolthe-p}{the} generated Intra-\/Area-\/Prefix-\/LSA belongs to. \\
\hline
{\em attached\_\-routers} & list of fully attached routers.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} options fields from all \hyperlink{protocolthe-p}{the} Link-\/LSAs or'd together. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_af98c78c2c47171a186da02afbb1d04b8}{
\index{AreaRouter@{AreaRouter}!update\_\-lsa@{update\_\-lsa}}
\index{update\_\-lsa@{update\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{update\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::update\_\-lsa (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{lsar, }
\item[{size\_\-t}]{index}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_af98c78c2c47171a186da02afbb1d04b8}


Update this LSA in \hyperlink{protocolthe-p}{the} database. 


\begin{DoxyParams}{Parameters}
{\em lsar} & LSA to update. \\
\hline
{\em index} & into database. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success 
\end{DoxyReturn}
\hypertarget{classAreaRouter_af620714a5d1178f0d9950d8705ef23cd}{
\index{AreaRouter@{AreaRouter}!update\_\-router\_\-links@{update\_\-router\_\-links}}
\index{update\_\-router\_\-links@{update\_\-router\_\-links}!AreaRouter@{AreaRouter}}
\subsubsection[{update\_\-router\_\-links}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::update\_\-router\_\-links (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classAreaRouter_af620714a5d1178f0d9950d8705ef23cd}


Update router links. 

A peer has just changed state, or \hyperlink{protocolthe-p}{the} refresh timer has fired, so update \hyperlink{protocolthe-p}{the} router lsa and publish.

\begin{DoxyReturn}{Returns}
true if something changed. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_a5fb008454bed54c1146c8c56c678c5a7}{
\index{AreaRouter@{AreaRouter}!valid\_\-entry\_\-database@{valid\_\-entry\_\-database}}
\index{valid\_\-entry\_\-database@{valid\_\-entry\_\-database}!AreaRouter@{AreaRouter}}
\subsubsection[{valid\_\-entry\_\-database}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::valid\_\-entry\_\-database (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::PeerID}}]{peerid, }
\item[{size\_\-t}]{index}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_a5fb008454bed54c1146c8c56c678c5a7}


Is this a valid entry to be returned by \hyperlink{protocolthe-p}{the} database. 

This method is for internal use and its use is not recommended.

\begin{DoxyReturn}{Returns}
true if this entry is valid. 
\end{DoxyReturn}
\hypertarget{classAreaRouter_acdb4a009f4f2c720f207889a3e8bf925}{
\index{AreaRouter@{AreaRouter}!withdraw\_\-default\_\-route@{withdraw\_\-default\_\-route}}
\index{withdraw\_\-default\_\-route@{withdraw\_\-default\_\-route}!AreaRouter@{AreaRouter}}
\subsubsection[{withdraw\_\-default\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf AreaRouter}$<$ A $>$::withdraw\_\-default\_\-route (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_acdb4a009f4f2c720f207889a3e8bf925}


Withdraw \hyperlink{protocolthe-p}{the} default route LSA if it exists. 

Set \hyperlink{protocolthe-p}{the} LSA to MaxAge and floods. \hypertarget{classAreaRouter_aecfafb4c214947a19f05106f68268748}{
\index{AreaRouter@{AreaRouter}!withdraw\_\-intra\_\-area\_\-prefix\_\-lsa@{withdraw\_\-intra\_\-area\_\-prefix\_\-lsa}}
\index{withdraw\_\-intra\_\-area\_\-prefix\_\-lsa@{withdraw\_\-intra\_\-area\_\-prefix\_\-lsa}!AreaRouter@{AreaRouter}}
\subsubsection[{withdraw\_\-intra\_\-area\_\-prefix\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf AreaRouter}$<$ A $>$::withdraw\_\-intra\_\-area\_\-prefix\_\-lsa (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::PeerID}}]{peer, }
\item[{uint16\_\-t}]{referenced\_\-ls\_\-type, }
\item[{uint32\_\-t}]{interface\_\-id}
\end{DoxyParamCaption}
)}}
\label{classAreaRouter_aecfafb4c214947a19f05106f68268748}


Withdraw \hyperlink{protocolthe-p}{the} Intra-\/Area-\/Prefix-\/LSA for this peer by prematurely aging OSPFv3 only. 


\begin{DoxyParams}{Parameters}
{\em peerid} & \hyperlink{protocolthe-p}{the} peer that needs its Intra-\/Area-\/Prefix-\/LSA refreshed. \\
\hline
{\em referenced\_\-ls\_\-type} & \\
\hline
{\em interface\_\-id} & that \hyperlink{protocolthe-p}{the} generated Intra-\/Area-\/Prefix-\/LSA belongs to. \\
\hline
\end{DoxyParams}


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