\hypertarget{classPeerManager}{
\section{PeerManager$<$ A $>$ Class Template Reference}
\label{classPeerManager}\index{PeerManager@{PeerManager}}
}


\hyperlink{classPeer}{Peer} Manager: 1) Monitor \hyperlink{protocolthe-p}{the} state of \hyperlink{protocolthe-p}{the} interfaces.  




{\ttfamily \#include $<$peer\_\-manager.hh$>$}

\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structPeerManager_1_1Summary}{Summary}
\begin{DoxyCompactList}\small\item\em Saved summaries that can be introduced into a new area. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classPeerManager_a6a52061a82b922c4d4fb15f76911f181}{
{\bfseries PeerManager} (\hyperlink{classOspf}{Ospf}$<$ A $>$ \&ospf)}
\label{classPeerManager_a6a52061a82b922c4d4fb15f76911f181}

\item 
bool \hyperlink{classPeerManager_ac2dd6b727416b47916315cae107b815a}{check\_\-area\_\-type} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{structOspfTypes_acbef6a08bc1aea6981897f45d61dae9e}{OspfTypes::AreaType} area\_\-type)
\begin{DoxyCompactList}\small\item\em Check area type. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_aacb6ab74288cd060b732ae4540b8059e}{create\_\-area\_\-router} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{structOspfTypes_acbef6a08bc1aea6981897f45d61dae9e}{OspfTypes::AreaType} area\_\-type, bool permissive=true)
\begin{DoxyCompactList}\small\item\em Create an area router. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a8ce9395210aed885f9268cbc8ad18f72}{
\hyperlink{classAreaRouter}{AreaRouter}$<$ A $>$ $\ast$ {\bfseries get\_\-area\_\-router} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area)}
\label{classPeerManager_a8ce9395210aed885f9268cbc8ad18f72}

\item 
\hypertarget{classPeerManager_a0955f9150c80d709c9787699b00d1140}{
bool \hyperlink{classPeerManager_a0955f9150c80d709c9787699b00d1140}{change\_\-area\_\-router\_\-type} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{structOspfTypes_acbef6a08bc1aea6981897f45d61dae9e}{OspfTypes::AreaType} area\_\-type)}
\label{classPeerManager_a0955f9150c80d709c9787699b00d1140}

\begin{DoxyCompactList}\small\item\em Change \hyperlink{protocolthe-p}{the} type of this area. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a1e739ec5b55afb2ad533c7a363e9f972}{
bool \hyperlink{classPeerManager_a1e739ec5b55afb2ad533c7a363e9f972}{destroy\_\-area\_\-router} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area)}
\label{classPeerManager_a1e739ec5b55afb2ad533c7a363e9f972}

\begin{DoxyCompactList}\small\item\em Destroy an area router. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a1aa0fa7bab4348aba2667b36eb3a3cd0}{
bool \hyperlink{classPeerManager_a1aa0fa7bab4348aba2667b36eb3a3cd0}{area\_\-range\_\-add} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{classIPNet}{IPNet}$<$ A $>$ net, bool advertise)}
\label{classPeerManager_a1aa0fa7bab4348aba2667b36eb3a3cd0}

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

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

\begin{DoxyCompactList}\small\item\em Change \hyperlink{protocolthe-p}{the} advertised state of this area. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_a41b7850c0240b0e7066b60e33cc235dc}{get\_\-lsa} (const \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, const uint32\_\-t index, bool \&valid, bool \&toohigh, bool \&self, vector$<$ uint8\_\-t $>$ \&lsa)
\begin{DoxyCompactList}\small\item\em Get a single lsa from an area. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_aa3e573d9e483b4ffc4bfe158a46644b9}{
bool \hyperlink{classPeerManager_aa3e573d9e483b4ffc4bfe158a46644b9}{get\_\-area\_\-list} (list$<$ \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} $>$ \&areas) const }
\label{classPeerManager_aa3e573d9e483b4ffc4bfe158a46644b9}

\begin{DoxyCompactList}\small\item\em Get a list of all \hyperlink{protocolthe-p}{the} configured areas. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a0f59be651f5e4c944b90aa12de0ca56c}{
bool \hyperlink{classPeerManager_a0f59be651f5e4c944b90aa12de0ca56c}{get\_\-neighbour\_\-list} (list$<$ \hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} $>$ \&neighbours) const }
\label{classPeerManager_a0f59be651f5e4c944b90aa12de0ca56c}

\begin{DoxyCompactList}\small\item\em Get a list of all \hyperlink{protocolthe-p}{the} neighbours. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_a6ff2546df4ddb1b674940216861f3176}{get\_\-neighbour\_\-info} (\hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} nid, \hyperlink{structNeighbourInfo}{NeighbourInfo} \&ninfo) const 
\begin{DoxyCompactList}\small\item\em Get state information about this neighbour. \item\end{DoxyCompactList}\item 
\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} \hyperlink{classPeerManager_a70920aab3c73232f6cf8b31690e5879b}{get\_\-peerid} (const string \&interface, const string \&vif)  throw (BadPeer)
\begin{DoxyCompactList}\small\item\em Convert an interface/vif to a PeerID. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_aee5f53db75215b5613c1fc34d9d7fc12}{
bool \hyperlink{classPeerManager_aee5f53db75215b5613c1fc34d9d7fc12}{get\_\-interface\_\-vif\_\-by\_\-peerid} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, string \&interface, string \&vif) const }
\label{classPeerManager_aee5f53db75215b5613c1fc34d9d7fc12}

\begin{DoxyCompactList}\small\item\em Given a PeerID convert it back to an interface and vif. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_af0480555a478e95c38f782ffd12a2e98}{enabled} (const string \&interface, const string \&vif, A address)
\begin{DoxyCompactList}\small\item\em Is this interface/vif/address enabled? This is a question asked of \hyperlink{protocolthe-p}{the} FEA, has \hyperlink{protocolthe-p}{the} interface/vif been marked as up. \item\end{DoxyCompactList}\item 
\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} \hyperlink{classPeerManager_a63c69242547a667559431dd6d0186b0c}{create\_\-peer} (const string \&interface, const string \&vif, A source, \hyperlink{structOspfTypes_aa80e314cde7a3e8b749d3252c228f281}{OspfTypes::LinkType} linktype, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area)  throw (BadPeer)
\begin{DoxyCompactList}\small\item\em Create a peer. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a6482001e7da779c27b7871d6231c5adf}{
bool \hyperlink{classPeerManager_a6482001e7da779c27b7871d6231c5adf}{delete\_\-peer} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID})}
\label{classPeerManager_a6482001e7da779c27b7871d6231c5adf}

\begin{DoxyCompactList}\small\item\em Delete a peer. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a2a708212ef4ce472b2a431cf7ed614a7}{
bool \hyperlink{classPeerManager_a2a708212ef4ce472b2a431cf7ed614a7}{set\_\-state\_\-peer} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID}, bool state)}
\label{classPeerManager_a2a708212ef4ce472b2a431cf7ed614a7}

\begin{DoxyCompactList}\small\item\em Take a peer up or down. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_aef8b03ea5cd2e83d0a77910e11a64f34}{
bool \hyperlink{classPeerManager_aef8b03ea5cd2e83d0a77910e11a64f34}{set\_\-link\_\-status\_\-peer} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID}, bool state)}
\label{classPeerManager_aef8b03ea5cd2e83d0a77910e11a64f34}

\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} link status of \hyperlink{protocolthe-p}{the} peer. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_aa5281dac9ad8546a24043b6f8ecc7672}{
bool \hyperlink{classPeerManager_aa5281dac9ad8546a24043b6f8ecc7672}{add\_\-address\_\-peer} (const string \&interface, const string \&vif, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, A addr)}
\label{classPeerManager_aa5281dac9ad8546a24043b6f8ecc7672}

\begin{DoxyCompactList}\small\item\em Add an address to this peer OSPFv3 only. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_ad989f2f879a657170b84c4276f740c21}{
bool \hyperlink{classPeerManager_ad989f2f879a657170b84c4276f740c21}{remove\_\-address\_\-peer} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID}, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, A addr)}
\label{classPeerManager_ad989f2f879a657170b84c4276f740c21}

\begin{DoxyCompactList}\small\item\em Remove an address from this peer OSPFv3 only. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a62dca861c5764804676dd7ca1319b499}{
bool \hyperlink{classPeerManager_a62dca861c5764804676dd7ca1319b499}{set\_\-address\_\-state\_\-peer} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID}, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, A addr, bool enable)}
\label{classPeerManager_a62dca861c5764804676dd7ca1319b499}

\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} state of \hyperlink{protocolthe-p}{the} address on this peer OSPFv3 only. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_a6641300f8e8fb1eca6c24e7d93d91ee9}{activate\_\-peer} (const string \&interface, const string \&vif, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area)
\begin{DoxyCompactList}\small\item\em Activate this peer OSPFv3 only. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_a2a2cb3f5bf3ec55a6a3ef81f3efbd3a5}{update\_\-peer} (const string \&interface, const string \&vif, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area)
\begin{DoxyCompactList}\small\item\em Update this peer OSPFv3 only. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_ae08f0239f0d4e69436a335b9f84eb66c}{recompute\_\-addresses\_\-peer} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID}, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area)
\begin{DoxyCompactList}\small\item\em Update this peer OSPFv3 only. \item\end{DoxyCompactList}\item 
void \hyperlink{classPeerManager_adebe46c66b686a6873af82e36ef442c9}{vif\_\-status\_\-change} (const string \&interface, const string \&vif, bool state)
\begin{DoxyCompactList}\small\item\em Track \hyperlink{protocolthe-p}{the} state of a vif. \item\end{DoxyCompactList}\item 
void \hyperlink{classPeerManager_af4aff333bab79484865c6409ebd7e56f}{address\_\-status\_\-change} (const string \&interface, const string \&vif, A source, bool state)
\begin{DoxyCompactList}\small\item\em Track \hyperlink{protocolthe-p}{the} state of an address. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a8c531ff8176b586c753432fd1bc610af}{
bool \hyperlink{classPeerManager_a8c531ff8176b586c753432fd1bc610af}{add\_\-neighbour} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID}, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, A neighbour\_\-address, \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID})}
\label{classPeerManager_a8c531ff8176b586c753432fd1bc610af}

\begin{DoxyCompactList}\small\item\em Add a neighbour to \hyperlink{protocolthe-p}{the} peer. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a3b28a1aaebe2c2954ea22927c7b30d37}{
bool \hyperlink{classPeerManager_a3b28a1aaebe2c2954ea22927c7b30d37}{remove\_\-neighbour} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID}, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, A neighbour\_\-address, \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid)}
\label{classPeerManager_a3b28a1aaebe2c2954ea22927c7b30d37}

\begin{DoxyCompactList}\small\item\em Remove a neighbour from \hyperlink{protocolthe-p}{the} peer. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a6c208f5681a173b56ce9b32cbb39d7ba}{
bool \hyperlink{classPeerManager_a6c208f5681a173b56ce9b32cbb39d7ba}{transmit} (const string \&interface, const string \&vif, A dst, A src, uint8\_\-t $\ast$data, uint32\_\-t len)}
\label{classPeerManager_a6c208f5681a173b56ce9b32cbb39d7ba}

\begin{DoxyCompactList}\small\item\em \hyperlink{classTransmit}{Transmit} packets. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_a2f2027f4219893023288c45e03af7ad9}{receive} (const string \&interface, const string \&vif, A dst, A src, \hyperlink{classPacket}{Packet} $\ast$packet)  throw (BadPeer)
\begin{DoxyCompactList}\small\item\em Demultiplex incoming packets to \hyperlink{protocolthe-p}{the} associated peer. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_aa94de7e7aed18bc6f374b43ee3367a52}{
bool \hyperlink{classPeerManager_aa94de7e7aed18bc6f374b43ee3367a52}{clear\_\-database} ()}
\label{classPeerManager_aa94de7e7aed18bc6f374b43ee3367a52}

\begin{DoxyCompactList}\small\item\em Drop all adjacencies and hence clear database. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_a561d202e751350332cf727c8fd96a1c9}{queue\_\-lsa} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peer, \hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} nid, \hyperlink{classref__ptr}{Lsa::LsaRef} lsar, bool \&multicast\_\-on\_\-peer)
\begin{DoxyCompactList}\small\item\em Queue an LSA for transmission. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a1812870c8f32fc15875738502e047a36}{
bool \hyperlink{classPeerManager_a1812870c8f32fc15875738502e047a36}{push\_\-lsas} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, const char $\ast$msg)}
\label{classPeerManager_a1812870c8f32fc15875738502e047a36}

\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} (push) any queued LSAs. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a36d667579e0a7bfe1c09fc1d56b12236}{
uint32\_\-t \hyperlink{classPeerManager_a36d667579e0a7bfe1c09fc1d56b12236}{get\_\-interface\_\-id} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid)}
\label{classPeerManager_a36d667579e0a7bfe1c09fc1d56b12236}

\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} interface ID of this peer OSPFv3 only. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_aebf06d0782bbc447de54a6c502a9cfb0}{
bool \hyperlink{classPeerManager_aebf06d0782bbc447de54a6c502a9cfb0}{get\_\-attached\_\-routers} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, list$<$ \hyperlink{structRouterInfo}{RouterInfo} $>$ \&routers)}
\label{classPeerManager_aebf06d0782bbc447de54a6c502a9cfb0}

\begin{DoxyCompactList}\small\item\em Return a list of \hyperlink{protocolthe-p}{the} fully adjacent routers. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a5690220b77c91abc2d13b26eb7541a94}{
bool {\bfseries configured\_\-network} (const A address) const }
\label{classPeerManager_a5690220b77c91abc2d13b26eb7541a94}

\item 
\hypertarget{classPeerManager_af5133292a12f52d57806217f6a8b1b06}{
bool {\bfseries known\_\-interface\_\-address} (const A address) const }
\label{classPeerManager_af5133292a12f52d57806217f6a8b1b06}

\item 
bool \hyperlink{classPeerManager_a62fa40e8521509967768fb2e46d5d7f3}{neighbours\_\-exchange\_\-or\_\-loading} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area)
\begin{DoxyCompactList}\small\item\em Are any of \hyperlink{protocolthe-p}{the} neighbours of this peer in \hyperlink{protocolthe-p}{the} state exchange or loading. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_a2d7ab5aab68d1d5e9124877bb76e1a34}{neighbour\_\-at\_\-least\_\-two\_\-way} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid, bool \&twoway)
\begin{DoxyCompactList}\small\item\em Is \hyperlink{protocolthe-p}{the} state of \hyperlink{protocolthe-p}{the} neighbour with \hyperlink{protocolthe-p}{the} specified Router ID at least 2-\/Way. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_a2f4f451d85d29f790a014c4a50bb0d13}{get\_\-neighbour\_\-address} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid, uint32\_\-t interface\_\-id, A \&neighbour\_\-address)
\begin{DoxyCompactList}\small\item\em Neighbour's source address. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_a8b45842889b97f1ac80f63767ade7442}{on\_\-link\_\-state\_\-request\_\-list} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, const \hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} nid, \hyperlink{classref__ptr}{Lsa::LsaRef} lsar)
\begin{DoxyCompactList}\small\item\em Is this LSA on this neighbours link state request list. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_a115af6ad8d856228fae4f4db20eec75b}{event\_\-bad\_\-link\_\-state\_\-request} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, const \hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} nid)
\begin{DoxyCompactList}\small\item\em Generate a BadLSReq event. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_af7a016d1c84d19a7a81ea3b5282abefd}{send\_\-lsa} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, const \hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} nid, \hyperlink{classref__ptr}{Lsa::LsaRef} lsar)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} this LSA directly to \hyperlink{protocolthe-p}{the} neighbour. \item\end{DoxyCompactList}\item 
void \hyperlink{classPeerManager_ac2144f3256b8353c250b44caf31a289b}{adjacency\_\-changed} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid, bool up)
\begin{DoxyCompactList}\small\item\em Upcall from a peer to notify \hyperlink{protocolthe-p}{the} peer manager that a full adjacency has been achieved or lost. \item\end{DoxyCompactList}\item 
void \hyperlink{classPeerManager_a8db2543fa259a47de388f1ad08f094a5}{area\_\-border\_\-router\_\-transition} (bool up) const 
\begin{DoxyCompactList}\small\item\em Track border router transitions. \item\end{DoxyCompactList}\item 
void \hyperlink{classPeerManager_a491761bd4ba68d95090ff0867fe1f1d2}{refresh\_\-router\_\-lsas} () const 
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} a new Router-\/LSA in all areas. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_aec1fa9d60645223d003d5112fd0e6818}{
bool \hyperlink{classPeerManager_aec1fa9d60645223d003d5112fd0e6818}{create\_\-virtual\_\-peer} (\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid)}
\label{classPeerManager_aec1fa9d60645223d003d5112fd0e6818}

\begin{DoxyCompactList}\small\item\em Create a virtual link peer. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a04242ebce7b89666c21019e540ea0127}{
bool \hyperlink{classPeerManager_a04242ebce7b89666c21019e540ea0127}{delete\_\-virtual\_\-peer} (\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid)}
\label{classPeerManager_a04242ebce7b89666c21019e540ea0127}

\begin{DoxyCompactList}\small\item\em Delete a virtual link peer. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_af78c9a5ef385dd75d0e34e0697a2502d}{virtual\_\-link\_\-endpoint} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area) const 
\begin{DoxyCompactList}\small\item\em Are any of neighbours of this area a virtual link endpoint. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_afb8870c92eb1e385a41dbc58c236d413}{create\_\-virtual\_\-link} (\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid)
\begin{DoxyCompactList}\small\item\em Create a virtual link (\hyperlink{classConfiguration}{Configuration}). \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a34a3927fd62ad3b155b42d179dacc48f}{
bool \hyperlink{classPeerManager_a34a3927fd62ad3b155b42d179dacc48f}{transit\_\-area\_\-virtual\_\-link} (\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} transit\_\-area)}
\label{classPeerManager_a34a3927fd62ad3b155b42d179dacc48f}

\begin{DoxyCompactList}\small\item\em Attach this transit area to \hyperlink{protocolthe-p}{the} neighbours router ID (\hyperlink{classConfiguration}{Configuration}). \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_a04e0ec98ec62c91508115b659047d103}{delete\_\-virtual\_\-link} (\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid)
\begin{DoxyCompactList}\small\item\em Delete a virtual link (\hyperlink{classConfiguration}{Configuration}). \item\end{DoxyCompactList}\item 
void \hyperlink{classPeerManager_aca229bfefd2f33111600e3072b008aaf}{up\_\-virtual\_\-link} (\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid, A source, uint16\_\-t interface\_\-cost, A destination)
\begin{DoxyCompactList}\small\item\em Bring virtual link up (Upcall from area router). \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a834907912f59158251aa032bb244ddcb}{
void \hyperlink{classPeerManager_a834907912f59158251aa032bb244ddcb}{down\_\-virtual\_\-link} (\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid)}
\label{classPeerManager_a834907912f59158251aa032bb244ddcb}

\begin{DoxyCompactList}\small\item\em Take this virtual link down (Upcall from area router). \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a2d32a0b70bc9851b2730cedb3ca835c8}{
bool \hyperlink{classPeerManager_a2d32a0b70bc9851b2730cedb3ca835c8}{receive\_\-virtual\_\-link} (A dst, A src, \hyperlink{classPacket}{Packet} $\ast$packet)}
\label{classPeerManager_a2d32a0b70bc9851b2730cedb3ca835c8}

\begin{DoxyCompactList}\small\item\em A packet was sent to a peer that rejected it so this may be a virtual link candidate. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a638e5c5a2c57164d8045376e36a520f5}{
uint32\_\-t \hyperlink{classPeerManager_a638e5c5a2c57164d8045376e36a520f5}{area\_\-count} (\hyperlink{structOspfTypes_acbef6a08bc1aea6981897f45d61dae9e}{OspfTypes::AreaType} area\_\-type) const }
\label{classPeerManager_a638e5c5a2c57164d8045376e36a520f5}

\begin{DoxyCompactList}\small\item\em Return \hyperlink{protocolthe-p}{the} number of areas of \hyperlink{protocolthe-p}{the} specified type. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_aa2b28693d00f2e1eaca228e50ef8689c}{
bool \hyperlink{classPeerManager_aa2b28693d00f2e1eaca228e50ef8689c}{internal\_\-router\_\-p} () const }
\label{classPeerManager_aa2b28693d00f2e1eaca228e50ef8689c}

\begin{DoxyCompactList}\small\item\em Is this an internal router? \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a75aa24a74d4ad51cdf211cb33abb1bae}{
bool \hyperlink{classPeerManager_a75aa24a74d4ad51cdf211cb33abb1bae}{area\_\-border\_\-router\_\-p} () const }
\label{classPeerManager_a75aa24a74d4ad51cdf211cb33abb1bae}

\begin{DoxyCompactList}\small\item\em Is this an area border router? \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a77b763806493f6a94f7b8bc5308e26b9}{
bool \hyperlink{classPeerManager_a77b763806493f6a94f7b8bc5308e26b9}{backbone\_\-router\_\-p} () const }
\label{classPeerManager_a77b763806493f6a94f7b8bc5308e26b9}

\begin{DoxyCompactList}\small\item\em Is this a backbone router? \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a59497658081d514c9dfe79a1f6221a81}{
bool \hyperlink{classPeerManager_a59497658081d514c9dfe79a1f6221a81}{as\_\-boundary\_\-router\_\-p} () const }
\label{classPeerManager_a59497658081d514c9dfe79a1f6221a81}

\begin{DoxyCompactList}\small\item\em Is this an AS boundary router? \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_ac01252de3121ca74396c23c497474e4e}{
uint32\_\-t \hyperlink{classPeerManager_ac01252de3121ca74396c23c497474e4e}{compute\_\-options} (\hyperlink{structOspfTypes_acbef6a08bc1aea6981897f45d61dae9e}{OspfTypes::AreaType} area\_\-type)}
\label{classPeerManager_ac01252de3121ca74396c23c497474e4e}

\begin{DoxyCompactList}\small\item\em Compute \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 
\hypertarget{classPeerManager_af2d9154564238a62a6f6d18b63463559}{
void \hyperlink{classPeerManager_af2d9154564238a62a6f6d18b63463559}{router\_\-id\_\-changing} ()}
\label{classPeerManager_af2d9154564238a62a6f6d18b63463559}

\begin{DoxyCompactList}\small\item\em The router ID is about to change. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a221324dce2c920ff15c4777a96f24a1b}{
bool \hyperlink{classPeerManager_a221324dce2c920ff15c4777a96f24a1b}{set\_\-interface\_\-address} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID}, A address)}
\label{classPeerManager_a221324dce2c920ff15c4777a96f24a1b}

\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} interface address of this peer. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a0cbea29890e467b9e1ba52ae70e84512}{
bool \hyperlink{classPeerManager_a0cbea29890e467b9e1ba52ae70e84512}{set\_\-hello\_\-interval} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID}, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, uint16\_\-t hello\_\-interval)}
\label{classPeerManager_a0cbea29890e467b9e1ba52ae70e84512}

\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} hello interval in seconds. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a3bab2858875cb597e703bdcf1ef4e1e9}{
bool \hyperlink{classPeerManager_a3bab2858875cb597e703bdcf1ef4e1e9}{set\_\-router\_\-priority} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID}, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, uint8\_\-t priority)}
\label{classPeerManager_a3bab2858875cb597e703bdcf1ef4e1e9}

\begin{DoxyCompactList}\small\item\em Set router priority. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a74e47d6f912efc055fb30cdc5cdb174d}{
bool \hyperlink{classPeerManager_a74e47d6f912efc055fb30cdc5cdb174d}{set\_\-router\_\-dead\_\-interval} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID}, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, uint32\_\-t router\_\-dead\_\-interval)}
\label{classPeerManager_a74e47d6f912efc055fb30cdc5cdb174d}

\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} router dead interval in seconds. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a786edfd089cce861eedd5a3f4a3a97bb}{
bool \hyperlink{classPeerManager_a786edfd089cce861eedd5a3f4a3a97bb}{set\_\-interface\_\-cost} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID}, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, uint16\_\-t interface\_\-cost)}
\label{classPeerManager_a786edfd089cce861eedd5a3f4a3a97bb}

\begin{DoxyCompactList}\small\item\em Set interface cost. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a9c84fab3073b7b5ed7b4d63f7e75a465}{
bool \hyperlink{classPeerManager_a9c84fab3073b7b5ed7b4d63f7e75a465}{set\_\-retransmit\_\-interval} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID}, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, uint16\_\-t retransmit\_\-interval)}
\label{classPeerManager_a9c84fab3073b7b5ed7b4d63f7e75a465}

\begin{DoxyCompactList}\small\item\em Set RxmtInterval. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_aa102eab976adce4bd1aa4ac6f0c1efd9}{
bool \hyperlink{classPeerManager_aa102eab976adce4bd1aa4ac6f0c1efd9}{set\_\-inftransdelay} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID}, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, uint16\_\-t inftransdelay)}
\label{classPeerManager_aa102eab976adce4bd1aa4ac6f0c1efd9}

\begin{DoxyCompactList}\small\item\em Set InfTransDelay. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_a681d303f3978b9805031c4baff875641}{set\_\-simple\_\-authentication\_\-key} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, const string \&password, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Set a simple password authentication key. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_a8b869c982941e35d06be43032814f8cb}{delete\_\-simple\_\-authentication\_\-key} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Delete a simple password authentication key. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_ab6f1785f8b178cade03a7b0f7fd76094}{set\_\-md5\_\-authentication\_\-key} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, uint8\_\-t key\_\-id, const string \&password, const \hyperlink{classTimeVal}{TimeVal} \&start\_\-timeval, const \hyperlink{classTimeVal}{TimeVal} \&end\_\-timeval, const \hyperlink{classTimeVal}{TimeVal} \&max\_\-time\_\-drift, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Set an MD5 authentication key. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_aa6820ef60056c16be74cf578830028ed}{delete\_\-md5\_\-authentication\_\-key} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, uint8\_\-t key\_\-id, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Delete an MD5 authentication key. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_afcac62ae0b8307e6f63925a3efbde918}{
bool \hyperlink{classPeerManager_afcac62ae0b8307e6f63925a3efbde918}{set\_\-passive} (const \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID}, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, bool passive, bool host)}
\label{classPeerManager_afcac62ae0b8307e6f63925a3efbde918}

\begin{DoxyCompactList}\small\item\em Toggle \hyperlink{protocolthe-p}{the} passive status of an interface. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a90269e953fa6e10daeede8586fc792ce}{
bool \hyperlink{classPeerManager_a90269e953fa6e10daeede8586fc792ce}{originate\_\-default\_\-route} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, bool enable)}
\label{classPeerManager_a90269e953fa6e10daeede8586fc792ce}

\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{classPeerManager_adf07770244956cd3e2734d383a545d64}{
bool \hyperlink{classPeerManager_adf07770244956cd3e2734d383a545d64}{stub\_\-default\_\-cost} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, uint32\_\-t cost)}
\label{classPeerManager_adf07770244956cd3e2734d383a545d64}

\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{classPeerManager_a283e0571bd93ddfc18cbaa164d89a436}{
bool \hyperlink{classPeerManager_a283e0571bd93ddfc18cbaa164d89a436}{summaries} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, bool enable)}
\label{classPeerManager_a283e0571bd93ddfc18cbaa164d89a436}

\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{classPeerManager_abea65b842c4c0647eea3771f780ebd45}{
size\_\-t \hyperlink{classPeerManager_abea65b842c4c0647eea3771f780ebd45}{number\_\-of\_\-areas} () const }
\label{classPeerManager_abea65b842c4c0647eea3771f780ebd45}

\begin{DoxyCompactList}\small\item\em Number of areas this router serves. \item\end{DoxyCompactList}\item 
void \hyperlink{classPeerManager_a25c3806aeb4456d20080f44331892a15}{summary\_\-announce} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{classIPNet}{IPNet}$<$ A $>$ net, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&rt)
\begin{DoxyCompactList}\small\item\em A new route has been added to \hyperlink{protocolthe-p}{the} routing table announce it to all areas as it is a candidate for Summary-\/LSA generation. \item\end{DoxyCompactList}\item 
void \hyperlink{classPeerManager_a330b7b93edbfa7470c4193d34d991d59}{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{classPeerManager_a03a5a3a720fd3a22cce1146617827bf2}{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 
void \hyperlink{classPeerManager_a2b15e15137d842402e777586388f27c6}{summary\_\-push} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} all \hyperlink{protocolthe-p}{the} summary information to specified area. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_a157a2ca100827cdf78943da5b31eaa82}{area\_\-range\_\-covered} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{classIPNet}{IPNet}$<$ A $>$ net, bool \&advertise)
\begin{DoxyCompactList}\small\item\em In \hyperlink{protocolthe-p}{the} specified area is \hyperlink{protocolthe-p}{the} net covered by an area range. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_aac4a075d0fb668af452001faf27e1bc1}{area\_\-range\_\-configured} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area)
\begin{DoxyCompactList}\small\item\em Does \hyperlink{protocolthe-p}{the} specified area have any area ranges configured. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_a14fa51756c5e50bee271ee9664b8cd02}{external\_\-announce} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{classref__ptr}{Lsa::LsaRef} lsar)
\begin{DoxyCompactList}\small\item\em An AS-\/External-\/LSA has arrived from this area announce it to all others. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a70dd8bf44a94351dd04c8b1690d5326d}{
bool \hyperlink{classPeerManager_a70dd8bf44a94351dd04c8b1690d5326d}{external\_\-announce} (const \hyperlink{classIPNet}{IPNet}$<$ A $>$ \&net, const A \&nexthop, const uint32\_\-t \&metric, const \hyperlink{classPolicyTags}{PolicyTags} \&policytags)}
\label{classPeerManager_a70dd8bf44a94351dd04c8b1690d5326d}

\begin{DoxyCompactList}\small\item\em Create an AS-\/External-\/LSA and announce it to all appropriate areas. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_aadc8135ebd63b77db3a644355662d36d}{
bool \hyperlink{classPeerManager_aadc8135ebd63b77db3a644355662d36d}{external\_\-withdraw} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{classref__ptr}{Lsa::LsaRef} lsar)}
\label{classPeerManager_aadc8135ebd63b77db3a644355662d36d}

\begin{DoxyCompactList}\small\item\em An AS-\/External-\/LSA is being withdrawn from this area withdraw from all others. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a04706d851c9cf784f9a2fd189f77d402}{
bool \hyperlink{classPeerManager_a04706d851c9cf784f9a2fd189f77d402}{external\_\-withdraw} (const \hyperlink{classIPNet}{IPNet}$<$ A $>$ \&net)}
\label{classPeerManager_a04706d851c9cf784f9a2fd189f77d402}

\begin{DoxyCompactList}\small\item\em Withdraw a previously created and announced AS-\/External-\/LSA from all areas. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_ad86d1de8802ec78224a728f9f495e5b4}{
bool \hyperlink{classPeerManager_ad86d1de8802ec78224a728f9f495e5b4}{external\_\-announce\_\-complete} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area)}
\label{classPeerManager_ad86d1de8802ec78224a728f9f495e5b4}

\begin{DoxyCompactList}\small\item\em Called to complete a series of calls to external\_\-announce(area). \item\end{DoxyCompactList}\item 
void \hyperlink{classPeerManager_a46ab8d04d1425681f63758da71dd63d9}{external\_\-push} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area)
\begin{DoxyCompactList}\small\item\em When a new area is configured it can use this method to. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_adff204f6dc8f392db5b5e42ca9cde2d1}{
void \hyperlink{classPeerManager_adff204f6dc8f392db5b5e42ca9cde2d1}{external\_\-push\_\-routes} ()}
\label{classPeerManager_adff204f6dc8f392db5b5e42ca9cde2d1}

\begin{DoxyCompactList}\small\item\em Re-\/run \hyperlink{protocolthe-p}{the} policy filters on all routes. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_aa16366748c4bc1b6b9931c330a7442e4}{
void \hyperlink{classPeerManager_aa16366748c4bc1b6b9931c330a7442e4}{external\_\-suppress\_\-lsas} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area)}
\label{classPeerManager_aa16366748c4bc1b6b9931c330a7442e4}

\begin{DoxyCompactList}\small\item\em Examine self originated AS-\/external-\/LSAs that may need to be suppressed because another router's AS-\/external-\/LSA takes precedence. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_ace8c00a359917a91604aa15662891cca}{
void \hyperlink{classPeerManager_ace8c00a359917a91604aa15662891cca}{routing\_\-recompute\_\-all\_\-areas} ()}
\label{classPeerManager_ace8c00a359917a91604aa15662891cca}

\begin{DoxyCompactList}\small\item\em Recompute routing calculation all areas BACKBONE first. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a9cb7b9b4faabff072aa4f221aeb28b3a}{
void \hyperlink{classPeerManager_a9cb7b9b4faabff072aa4f221aeb28b3a}{routing\_\-recompute\_\-all\_\-transit\_\-areas} ()}
\label{classPeerManager_a9cb7b9b4faabff072aa4f221aeb28b3a}

\begin{DoxyCompactList}\small\item\em Recompute routing calculation for all transit areas. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} \hyperlink{classPeerManager_ad87408fc8597968c2f2d1c2f8ce35bc3}{create\_\-peerid} (const string \&interface, const string \&vif)  throw (BadPeer)
\begin{DoxyCompactList}\small\item\em Generate PeerID. \item\end{DoxyCompactList}\item 
\hypertarget{classPeerManager_a8a0f0b959208cfc1d7b55451ac1db273}{
void \hyperlink{classPeerManager_a8a0f0b959208cfc1d7b55451ac1db273}{destroy\_\-peerid} (const string \&interface, const string \&vif)  throw (BadPeer)}
\label{classPeerManager_a8a0f0b959208cfc1d7b55451ac1db273}

\begin{DoxyCompactList}\small\item\em Get rid of this mapping. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeerManager_a76e668522024390a6526daaae13345c5}{summary\_\-candidate} (\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area, \hyperlink{classIPNet}{IPNet}$<$ A $>$ net, \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ \&rt)
\item 
void \hyperlink{classPeerManager_a8403bc656cb0a94a6a3e83922982cb6a}{track\_\-area\_\-count} (\hyperlink{structOspfTypes_acbef6a08bc1aea6981897f45d61dae9e}{OspfTypes::AreaType} area\_\-type, bool up)
\begin{DoxyCompactList}\small\item\em Track \hyperlink{protocolthe-p}{the} number of areas of each type. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classPeerManager_a745d4e4a673f1d5fd9ddd08f2da625a1}{
\hyperlink{classOspf}{Ospf}$<$ A $>$ \& {\bfseries \_\-ospf}}
\label{classPeerManager_a745d4e4a673f1d5fd9ddd08f2da625a1}

\item 
\hypertarget{classPeerManager_ac269f4b2b6c60364d40c624d6e11b1e4}{
\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} {\bfseries \_\-next\_\-peerid}}
\label{classPeerManager_ac269f4b2b6c60364d40c624d6e11b1e4}

\item 
\hypertarget{classPeerManager_ad7f276745ebf9de6347f37854c810635}{
map$<$ string, \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} $>$ {\bfseries \_\-pmap}}
\label{classPeerManager_ad7f276745ebf9de6347f37854c810635}

\item 
\hypertarget{classPeerManager_a6b6ced9d951cad7a4275c69a745564a3}{
map$<$ \hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID}, \hyperlink{classPeerOut}{PeerOut}$<$ A $>$ $\ast$ $>$ {\bfseries \_\-peers}}
\label{classPeerManager_a6b6ced9d951cad7a4275c69a745564a3}

\item 
\hypertarget{classPeerManager_a42cc50fed9e5d977d9619ae93e9df797}{
map$<$ \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID}, \hyperlink{classAreaRouter}{AreaRouter}$<$ A $>$ $\ast$ $>$ {\bfseries \_\-areas}}
\label{classPeerManager_a42cc50fed9e5d977d9619ae93e9df797}

\item 
\hypertarget{classPeerManager_abac607393ccf38c4149e2d42c0f5a848}{
\hyperlink{classExternal}{External}$<$ A $>$ {\bfseries \_\-external}}
\label{classPeerManager_abac607393ccf38c4149e2d42c0f5a848}

\item 
\hypertarget{classPeerManager_a1477e42ef9752d8ae92081c8f4b2ee6d}{
\hyperlink{classVlink}{Vlink}$<$ A $>$ {\bfseries \_\-vlink}}
\label{classPeerManager_a1477e42ef9752d8ae92081c8f4b2ee6d}

\item 
\hypertarget{classPeerManager_a4fbb7d32c361d5338c2ceed31bad9403}{
uint32\_\-t {\bfseries \_\-normal\_\-cnt}}
\label{classPeerManager_a4fbb7d32c361d5338c2ceed31bad9403}

\item 
\hypertarget{classPeerManager_aac0ecef1a5d75f2a76a9752944487554}{
uint32\_\-t {\bfseries \_\-stub\_\-cnt}}
\label{classPeerManager_aac0ecef1a5d75f2a76a9752944487554}

\item 
\hypertarget{classPeerManager_a423e4e72d29c33fcd5cdb274106ce0b0}{
uint32\_\-t {\bfseries \_\-nssa\_\-cnt}}
\label{classPeerManager_a423e4e72d29c33fcd5cdb274106ce0b0}

\item 
\hypertarget{classPeerManager_a654388c0d1989f3a0925602e0cd7d882}{
map$<$ \hyperlink{classIPNet}{IPNet}$<$ A $>$, \hyperlink{structPeerManager_1_1Summary}{Summary} $>$ {\bfseries \_\-summaries}}
\label{classPeerManager_a654388c0d1989f3a0925602e0cd7d882}

\end{DoxyCompactItemize}


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

\hyperlink{classPeer}{Peer} Manager: 1) Monitor \hyperlink{protocolthe-p}{the} state of \hyperlink{protocolthe-p}{the} interfaces. An interface going up/down will be monitored and trigger either adjacency attempts or new (withdraw) LSAs. 2) Manage interface configuration state. Control peers and area state. 3) \hyperlink{classAccept}{Accept} incoming hello's and demultiplex to \hyperlink{protocolthe-p}{the} correct peer. 4) Manage \hyperlink{protocolthe-p}{the} set of peers (peers are bound to interface and area). The peers themselves are hidden and are only exposed by reference (PeerID). 

\subsection{Member Function Documentation}
\hypertarget{classPeerManager_a6641300f8e8fb1eca6c24e7d93d91ee9}{
\index{PeerManager@{PeerManager}!activate\_\-peer@{activate\_\-peer}}
\index{activate\_\-peer@{activate\_\-peer}!PeerManager@{PeerManager}}
\subsubsection[{activate\_\-peer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::activate\_\-peer (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{{\bf OspfTypes::AreaID}}]{area}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_a6641300f8e8fb1eca6c24e7d93d91ee9}


Activate this peer OSPFv3 only. 

Called once after \hyperlink{protocolthe-p}{the} peer is created and every time a new address is added, but not when an address is deleted. \hypertarget{classPeerManager_af4aff333bab79484865c6409ebd7e56f}{
\index{PeerManager@{PeerManager}!address\_\-status\_\-change@{address\_\-status\_\-change}}
\index{address\_\-status\_\-change@{address\_\-status\_\-change}!PeerManager@{PeerManager}}
\subsubsection[{address\_\-status\_\-change}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ void {\bf PeerManager}$<$ A $>$::address\_\-status\_\-change (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{A}]{source, }
\item[{bool}]{state}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_af4aff333bab79484865c6409ebd7e56f}


Track \hyperlink{protocolthe-p}{the} state of an address. 

Callback when \hyperlink{protocolthe-p}{the} status of \hyperlink{protocolthe-p}{the} address changes. \hypertarget{classPeerManager_ac2144f3256b8353c250b44caf31a289b}{
\index{PeerManager@{PeerManager}!adjacency\_\-changed@{adjacency\_\-changed}}
\index{adjacency\_\-changed@{adjacency\_\-changed}!PeerManager@{PeerManager}}
\subsubsection[{adjacency\_\-changed}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf PeerManager}$<$ A $>$::adjacency\_\-changed (
\begin{DoxyParamCaption}
\item[{const {\bf OspfTypes::PeerID}}]{peerid, }
\item[{{\bf OspfTypes::RouterID}}]{rid, }
\item[{bool}]{up}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_ac2144f3256b8353c250b44caf31a289b}


Upcall from a peer to notify \hyperlink{protocolthe-p}{the} peer manager that a full adjacency has been achieved or lost. 


\begin{DoxyParams}{Parameters}
{\em peerid} & \\
\hline
{\em rid} & neighbours router ID. \\
\hline
{\em up} & true if \hyperlink{protocolthe-p}{the} adjacency has become full, false if a full adjacency has been lost. \\
\hline
\end{DoxyParams}
\hypertarget{classPeerManager_a8db2543fa259a47de388f1ad08f094a5}{
\index{PeerManager@{PeerManager}!area\_\-border\_\-router\_\-transition@{area\_\-border\_\-router\_\-transition}}
\index{area\_\-border\_\-router\_\-transition@{area\_\-border\_\-router\_\-transition}!PeerManager@{PeerManager}}
\subsubsection[{area\_\-border\_\-router\_\-transition}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf PeerManager}$<$ A $>$::area\_\-border\_\-router\_\-transition (
\begin{DoxyParamCaption}
\item[{bool}]{up}
\end{DoxyParamCaption}
) const}}
\label{classPeerManager_a8db2543fa259a47de388f1ad08f094a5}


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{classPeerManager_aac4a075d0fb668af452001faf27e1bc1}{
\index{PeerManager@{PeerManager}!area\_\-range\_\-configured@{area\_\-range\_\-configured}}
\index{area\_\-range\_\-configured@{area\_\-range\_\-configured}!PeerManager@{PeerManager}}
\subsubsection[{area\_\-range\_\-configured}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::area\_\-range\_\-configured (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaID}}]{area}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_aac4a075d0fb668af452001faf27e1bc1}


Does \hyperlink{protocolthe-p}{the} specified area have any area ranges configured. 

The primary purpose is to discover if \hyperlink{protocolthe-p}{the} backbone area has any area ranges configured, this is required when an area becomes a transit area. \hypertarget{classPeerManager_a157a2ca100827cdf78943da5b31eaa82}{
\index{PeerManager@{PeerManager}!area\_\-range\_\-covered@{area\_\-range\_\-covered}}
\index{area\_\-range\_\-covered@{area\_\-range\_\-covered}!PeerManager@{PeerManager}}
\subsubsection[{area\_\-range\_\-covered}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf PeerManager}$<$ A $>$::area\_\-range\_\-covered (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{{\bf IPNet}$<$ A $>$}]{net, }
\item[{bool \&}]{advertise}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_a157a2ca100827cdf78943da5b31eaa82}


In \hyperlink{protocolthe-p}{the} specified area is \hyperlink{protocolthe-p}{the} net covered by an area range. 


\begin{DoxyParams}{Parameters}
{\em area} & being checked. \\
\hline
{\em net} & that may be covered. \\
\hline
{\em advertise} & if \hyperlink{protocolthe-p}{the} area is covered set to advertise or do not advertise.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} area is covered. 
\end{DoxyReturn}
\hypertarget{classPeerManager_ac2dd6b727416b47916315cae107b815a}{
\index{PeerManager@{PeerManager}!check\_\-area\_\-type@{check\_\-area\_\-type}}
\index{check\_\-area\_\-type@{check\_\-area\_\-type}!PeerManager@{PeerManager}}
\subsubsection[{check\_\-area\_\-type}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::check\_\-area\_\-type (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{{\bf OspfTypes::AreaType}}]{area\_\-type}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_ac2dd6b727416b47916315cae107b815a}


Check area type. 

Verify that this area can be set to this area type. \hypertarget{classPeerManager_aacb6ab74288cd060b732ae4540b8059e}{
\index{PeerManager@{PeerManager}!create\_\-area\_\-router@{create\_\-area\_\-router}}
\index{create\_\-area\_\-router@{create\_\-area\_\-router}!PeerManager@{PeerManager}}
\subsubsection[{create\_\-area\_\-router}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::create\_\-area\_\-router (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{{\bf OspfTypes::AreaType}}]{area\_\-type, }
\item[{bool}]{permissive = {\ttfamily true}}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_aacb6ab74288cd060b732ae4540b8059e}


Create an area router. 


\begin{DoxyParams}{Parameters}
{\em area} & \\
\hline
{\em area\_\-type} & \\
\hline
{\em permissive} & if true won't fail if \hyperlink{protocolthe-p}{the} area already exists. \\
\hline
\end{DoxyParams}
\hypertarget{classPeerManager_a63c69242547a667559431dd6d0186b0c}{
\index{PeerManager@{PeerManager}!create\_\-peer@{create\_\-peer}}
\index{create\_\-peer@{create\_\-peer}!PeerManager@{PeerManager}}
\subsubsection[{create\_\-peer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ {\bf OspfTypes::PeerID} {\bf PeerManager}$<$ A $>$::create\_\-peer (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{A}]{source, }
\item[{{\bf OspfTypes::LinkType}}]{linktype, }
\item[{{\bf OspfTypes::AreaID}}]{area}
\end{DoxyParamCaption}
)  throw ({\bf BadPeer})}}
\label{classPeerManager_a63c69242547a667559431dd6d0186b0c}


Create a peer. 


\begin{DoxyParams}{Parameters}
{\em interface} & \\
\hline
{\em vif} & \\
\hline
{\em source} & address of transmitted packets. \\
\hline
{\em linktype} & broadcast or point-\/2-\/point, etc... \\
\hline
{\em area} & ID of area\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
PeerID on success otherwise throw an exception. 
\end{DoxyReturn}
\hypertarget{classPeerManager_ad87408fc8597968c2f2d1c2f8ce35bc3}{
\index{PeerManager@{PeerManager}!create\_\-peerid@{create\_\-peerid}}
\index{create\_\-peerid@{create\_\-peerid}!PeerManager@{PeerManager}}
\subsubsection[{create\_\-peerid}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ {\bf OspfTypes::PeerID} {\bf PeerManager}$<$ A $>$::create\_\-peerid (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif}
\end{DoxyParamCaption}
)  throw ({\bf BadPeer})\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPeerManager_ad87408fc8597968c2f2d1c2f8ce35bc3}


Generate PeerID. 

Internally we want to deal with peers as simple IDs not interface/vif. Throw an exception a mapping already exists. \hypertarget{classPeerManager_afb8870c92eb1e385a41dbc58c236d413}{
\index{PeerManager@{PeerManager}!create\_\-virtual\_\-link@{create\_\-virtual\_\-link}}
\index{create\_\-virtual\_\-link@{create\_\-virtual\_\-link}!PeerManager@{PeerManager}}
\subsubsection[{create\_\-virtual\_\-link}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::create\_\-virtual\_\-link (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::RouterID}}]{rid}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_afb8870c92eb1e385a41dbc58c236d413}


Create a virtual link (\hyperlink{classConfiguration}{Configuration}). 


\begin{DoxyParams}{Parameters}
{\em rid} & neighbours router ID. \\
\hline
\end{DoxyParams}
\hypertarget{classPeerManager_aa6820ef60056c16be74cf578830028ed}{
\index{PeerManager@{PeerManager}!delete\_\-md5\_\-authentication\_\-key@{delete\_\-md5\_\-authentication\_\-key}}
\index{delete\_\-md5\_\-authentication\_\-key@{delete\_\-md5\_\-authentication\_\-key}!PeerManager@{PeerManager}}
\subsubsection[{delete\_\-md5\_\-authentication\_\-key}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::delete\_\-md5\_\-authentication\_\-key (
\begin{DoxyParamCaption}
\item[{const {\bf OspfTypes::PeerID}}]{peerid, }
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{uint8\_\-t}]{key\_\-id, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_aa6820ef60056c16be74cf578830028ed}


Delete an MD5 authentication key. 

Note that after \hyperlink{protocolthe-p}{the} deletion if there are no more valid MD5 keys, \hyperlink{protocolthe-p}{the} MD5 authentication handler is replaced with a Null authentication handler.


\begin{DoxyParams}{Parameters}
{\em peerid} & \hyperlink{protocolthe-p}{the} peer ID. \\
\hline
{\em area} & \hyperlink{protocolthe-p}{the} area ID. \\
\hline
{\em key\_\-id} & \hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} key to delete. \\
\hline
{\em \hyperlink{protocolthe-p}{the}} & error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success, otherwise false. 
\end{DoxyReturn}
\hypertarget{classPeerManager_a8b869c982941e35d06be43032814f8cb}{
\index{PeerManager@{PeerManager}!delete\_\-simple\_\-authentication\_\-key@{delete\_\-simple\_\-authentication\_\-key}}
\index{delete\_\-simple\_\-authentication\_\-key@{delete\_\-simple\_\-authentication\_\-key}!PeerManager@{PeerManager}}
\subsubsection[{delete\_\-simple\_\-authentication\_\-key}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::delete\_\-simple\_\-authentication\_\-key (
\begin{DoxyParamCaption}
\item[{const {\bf OspfTypes::PeerID}}]{peerid, }
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_a8b869c982941e35d06be43032814f8cb}


Delete a simple password authentication key. 

Note that after \hyperlink{protocolthe-p}{the} deletion \hyperlink{protocolthe-p}{the} simple password authentication handler is replaced with a Null authentication handler.


\begin{DoxyParams}{Parameters}
{\em peerid} & \hyperlink{protocolthe-p}{the} peer ID. \\
\hline
{\em area} & \hyperlink{protocolthe-p}{the} area ID. \\
\hline
{\em \hyperlink{protocolthe-p}{the}} & error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success, otherwise false. 
\end{DoxyReturn}
\hypertarget{classPeerManager_a04e0ec98ec62c91508115b659047d103}{
\index{PeerManager@{PeerManager}!delete\_\-virtual\_\-link@{delete\_\-virtual\_\-link}}
\index{delete\_\-virtual\_\-link@{delete\_\-virtual\_\-link}!PeerManager@{PeerManager}}
\subsubsection[{delete\_\-virtual\_\-link}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::delete\_\-virtual\_\-link (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::RouterID}}]{rid}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_a04e0ec98ec62c91508115b659047d103}


Delete a virtual link (\hyperlink{classConfiguration}{Configuration}). 


\begin{DoxyParams}{Parameters}
{\em rid} & neighbours router ID. \\
\hline
\end{DoxyParams}
\hypertarget{classPeerManager_af0480555a478e95c38f782ffd12a2e98}{
\index{PeerManager@{PeerManager}!enabled@{enabled}}
\index{enabled@{enabled}!PeerManager@{PeerManager}}
\subsubsection[{enabled}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf PeerManager}$<$ A $>$::enabled (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{A}]{address}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_af0480555a478e95c38f782ffd12a2e98}


Is this interface/vif/address enabled? This is a question asked of \hyperlink{protocolthe-p}{the} FEA, has \hyperlink{protocolthe-p}{the} interface/vif been marked as up. 

\begin{DoxyReturn}{Returns}
true if it is. 
\end{DoxyReturn}
\hypertarget{classPeerManager_a115af6ad8d856228fae4f4db20eec75b}{
\index{PeerManager@{PeerManager}!event\_\-bad\_\-link\_\-state\_\-request@{event\_\-bad\_\-link\_\-state\_\-request}}
\index{event\_\-bad\_\-link\_\-state\_\-request@{event\_\-bad\_\-link\_\-state\_\-request}!PeerManager@{PeerManager}}
\subsubsection[{event\_\-bad\_\-link\_\-state\_\-request}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::event\_\-bad\_\-link\_\-state\_\-request (
\begin{DoxyParamCaption}
\item[{const {\bf OspfTypes::PeerID}}]{peerid, }
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{const {\bf OspfTypes::NeighbourID}}]{nid}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_a115af6ad8d856228fae4f4db20eec75b}


Generate a BadLSReq event. 


\begin{DoxyParams}{Parameters}
{\em peerid} & \\
\hline
{\em area} & \\
\hline
{\em nid} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if it is. 
\end{DoxyReturn}
\hypertarget{classPeerManager_a14fa51756c5e50bee271ee9664b8cd02}{
\index{PeerManager@{PeerManager}!external\_\-announce@{external\_\-announce}}
\index{external\_\-announce@{external\_\-announce}!PeerManager@{PeerManager}}
\subsubsection[{external\_\-announce}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::external\_\-announce (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{{\bf Lsa::LsaRef}}]{lsar}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_a14fa51756c5e50bee271ee9664b8cd02}


An AS-\/External-\/LSA has arrived from this area announce it to all others. 

The LSAs should not be scheduled for transmission until \hyperlink{protocolthe-p}{the} external\_\-accounce\_\-complete() is seen. In many cases a number of LSAs may arrive in a single packet, waiting for \hyperlink{protocolthe-p}{the} \hyperlink{classPeerManager_ad86d1de8802ec78224a728f9f495e5b4}{external\_\-announce\_\-complete()} offers an opportunity for aggregation. \hypertarget{classPeerManager_a46ab8d04d1425681f63758da71dd63d9}{
\index{PeerManager@{PeerManager}!external\_\-push@{external\_\-push}}
\index{external\_\-push@{external\_\-push}!PeerManager@{PeerManager}}
\subsubsection[{external\_\-push}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf PeerManager}$<$ A $>$::external\_\-push (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaID}}]{area}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_a46ab8d04d1425681f63758da71dd63d9}


When a new area is configured it can use this method to. 


\begin{DoxyParams}{Parameters}
{\em area} & that all AS-\/External-\/LSAs should be sent to. \\
\hline
\end{DoxyParams}
\hypertarget{classPeerManager_a41b7850c0240b0e7066b60e33cc235dc}{
\index{PeerManager@{PeerManager}!get\_\-lsa@{get\_\-lsa}}
\index{get\_\-lsa@{get\_\-lsa}!PeerManager@{PeerManager}}
\subsubsection[{get\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::get\_\-lsa (
\begin{DoxyParamCaption}
\item[{const {\bf OspfTypes::AreaID}}]{area, }
\item[{const uint32\_\-t}]{index, }
\item[{bool \&}]{valid, }
\item[{bool \&}]{toohigh, }
\item[{bool \&}]{self, }
\item[{vector$<$ uint8\_\-t $>$ \&}]{lsa}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_a41b7850c0240b0e7066b60e33cc235dc}


Get a single lsa from an area. 

A stateless mechanism to get LSAs. The client of this interface should start from zero and continue to request LSAs (incrementing index) until toohigh becomes true.


\begin{DoxyParams}{Parameters}
{\em area} & database that is being searched. \\
\hline
{\em index} & into database starting from 0. \\
\hline
{\em valid} & true if a LSA has been returned. Some index values do not contain LSAs. This should not be considered an error. \\
\hline
{\em toohigh} & true if no more LSA exist after this index. \\
\hline
{\em self} & if true this LSA was originated by this router. \\
\hline
{\em lsa} & if valid is true \hyperlink{protocolthe-p}{the} LSA at index. \\
\hline
\end{DoxyParams}
\hypertarget{classPeerManager_a2f4f451d85d29f790a014c4a50bb0d13}{
\index{PeerManager@{PeerManager}!get\_\-neighbour\_\-address@{get\_\-neighbour\_\-address}}
\index{get\_\-neighbour\_\-address@{get\_\-neighbour\_\-address}!PeerManager@{PeerManager}}
\subsubsection[{get\_\-neighbour\_\-address}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf PeerManager}$<$ A $>$::get\_\-neighbour\_\-address (
\begin{DoxyParamCaption}
\item[{const {\bf OspfTypes::PeerID}}]{peerid, }
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{{\bf OspfTypes::RouterID}}]{rid, }
\item[{uint32\_\-t}]{interface\_\-id, }
\item[{A \&}]{neighbour\_\-address}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_a2f4f451d85d29f790a014c4a50bb0d13}


Neighbour's source address. 


\begin{DoxyParams}{Parameters}
{\em peerid} & \\
\hline
{\em area} & \\
\hline
{\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{classPeerManager_a6ff2546df4ddb1b674940216861f3176}{
\index{PeerManager@{PeerManager}!get\_\-neighbour\_\-info@{get\_\-neighbour\_\-info}}
\index{get\_\-neighbour\_\-info@{get\_\-neighbour\_\-info}!PeerManager@{PeerManager}}
\subsubsection[{get\_\-neighbour\_\-info}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::get\_\-neighbour\_\-info (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::NeighbourID}}]{nid, }
\item[{{\bf NeighbourInfo} \&}]{ninfo}
\end{DoxyParamCaption}
) const}}
\label{classPeerManager_a6ff2546df4ddb1b674940216861f3176}


Get state information about this neighbour. 


\begin{DoxyParams}{Parameters}
{\em nid} & neighbour information is being request about. \\
\hline
{\em ninfo} & if neighbour is found its information. \\
\hline
\end{DoxyParams}
\hypertarget{classPeerManager_a70920aab3c73232f6cf8b31690e5879b}{
\index{PeerManager@{PeerManager}!get\_\-peerid@{get\_\-peerid}}
\index{get\_\-peerid@{get\_\-peerid}!PeerManager@{PeerManager}}
\subsubsection[{get\_\-peerid}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ {\bf OspfTypes::PeerID} {\bf PeerManager}$<$ A $>$::get\_\-peerid (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif}
\end{DoxyParamCaption}
)  throw ({\bf BadPeer})}}
\label{classPeerManager_a70920aab3c73232f6cf8b31690e5879b}


Convert an interface/vif to a PeerID. 

Throw an exception if no mapping is found. \hypertarget{classPeerManager_a2d7ab5aab68d1d5e9124877bb76e1a34}{
\index{PeerManager@{PeerManager}!neighbour\_\-at\_\-least\_\-two\_\-way@{neighbour\_\-at\_\-least\_\-two\_\-way}}
\index{neighbour\_\-at\_\-least\_\-two\_\-way@{neighbour\_\-at\_\-least\_\-two\_\-way}!PeerManager@{PeerManager}}
\subsubsection[{neighbour\_\-at\_\-least\_\-two\_\-way}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::neighbour\_\-at\_\-least\_\-two\_\-way (
\begin{DoxyParamCaption}
\item[{const {\bf OspfTypes::PeerID}}]{peerid, }
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{{\bf OspfTypes::RouterID}}]{rid, }
\item[{bool \&}]{twoway}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_a2d7ab5aab68d1d5e9124877bb76e1a34}


Is \hyperlink{protocolthe-p}{the} state of \hyperlink{protocolthe-p}{the} neighbour with \hyperlink{protocolthe-p}{the} specified Router ID at least 2-\/Way. 


\begin{DoxyParams}{Parameters}
{\em peerid} & \\
\hline
{\em area} & \\
\hline
{\em rid} & Router ID \\
\hline
{\em twoway} & if \hyperlink{protocolthe-p}{the} neighbour is found true means \hyperlink{protocolthe-p}{the} neighbour is at least twoway.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} neighbour is found. 
\end{DoxyReturn}
\hypertarget{classPeerManager_a62fa40e8521509967768fb2e46d5d7f3}{
\index{PeerManager@{PeerManager}!neighbours\_\-exchange\_\-or\_\-loading@{neighbours\_\-exchange\_\-or\_\-loading}}
\index{neighbours\_\-exchange\_\-or\_\-loading@{neighbours\_\-exchange\_\-or\_\-loading}!PeerManager@{PeerManager}}
\subsubsection[{neighbours\_\-exchange\_\-or\_\-loading}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::neighbours\_\-exchange\_\-or\_\-loading (
\begin{DoxyParamCaption}
\item[{const {\bf OspfTypes::PeerID}}]{peerid, }
\item[{{\bf OspfTypes::AreaID}}]{area}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_a62fa40e8521509967768fb2e46d5d7f3}


Are any of \hyperlink{protocolthe-p}{the} neighbours of this peer in \hyperlink{protocolthe-p}{the} state exchange or loading. 


\begin{DoxyParams}{Parameters}
{\em peerid} & \\
\hline
{\em area} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if any of \hyperlink{protocolthe-p}{the} neighbours are in state exchange or loading. 
\end{DoxyReturn}
\hypertarget{classPeerManager_a8b45842889b97f1ac80f63767ade7442}{
\index{PeerManager@{PeerManager}!on\_\-link\_\-state\_\-request\_\-list@{on\_\-link\_\-state\_\-request\_\-list}}
\index{on\_\-link\_\-state\_\-request\_\-list@{on\_\-link\_\-state\_\-request\_\-list}!PeerManager@{PeerManager}}
\subsubsection[{on\_\-link\_\-state\_\-request\_\-list}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::on\_\-link\_\-state\_\-request\_\-list (
\begin{DoxyParamCaption}
\item[{const {\bf OspfTypes::PeerID}}]{peerid, }
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{const {\bf OspfTypes::NeighbourID}}]{nid, }
\item[{{\bf Lsa::LsaRef}}]{lsar}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_a8b45842889b97f1ac80f63767ade7442}


Is this LSA on this neighbours link state request list. 


\begin{DoxyParams}{Parameters}
{\em peerid} & \\
\hline
{\em area} & \\
\hline
{\em nid} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if it is. 
\end{DoxyReturn}
\hypertarget{classPeerManager_a561d202e751350332cf727c8fd96a1c9}{
\index{PeerManager@{PeerManager}!queue\_\-lsa@{queue\_\-lsa}}
\index{queue\_\-lsa@{queue\_\-lsa}!PeerManager@{PeerManager}}
\subsubsection[{queue\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::queue\_\-lsa (
\begin{DoxyParamCaption}
\item[{const {\bf OspfTypes::PeerID}}]{peerid, }
\item[{const {\bf OspfTypes::PeerID}}]{peer, }
\item[{{\bf OspfTypes::NeighbourID}}]{nid, }
\item[{{\bf Lsa::LsaRef}}]{lsar, }
\item[{bool \&}]{multicast\_\-on\_\-peer}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_a561d202e751350332cf727c8fd96a1c9}


Queue an LSA for transmission. 


\begin{DoxyParams}{Parameters}
{\em peerid} & to queue \hyperlink{protocolthe-p}{the} LSA on. \\
\hline
{\em peer} & \hyperlink{protocolthe-p}{the} LSA arrived on. \\
\hline
{\em nid} & \hyperlink{protocolthe-p}{the} LSA arrived on. \\
\hline
{\em lsar} & \hyperlink{protocolthe-p}{the} lsa \\
\hline
{\em multicast\_\-on\_\-peer} & will this LSA get multicast on this peer.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success. 
\end{DoxyReturn}
\hypertarget{classPeerManager_a2f2027f4219893023288c45e03af7ad9}{
\index{PeerManager@{PeerManager}!receive@{receive}}
\index{receive@{receive}!PeerManager@{PeerManager}}
\subsubsection[{receive}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf PeerManager}$<$ A $>$::receive (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{A}]{dst, }
\item[{A}]{src, }
\item[{{\bf Packet} $\ast$}]{packet}
\end{DoxyParamCaption}
)  throw ({\bf BadPeer})}}
\label{classPeerManager_a2f2027f4219893023288c45e03af7ad9}


Demultiplex incoming packets to \hyperlink{protocolthe-p}{the} associated peer. 

If \hyperlink{protocolthe-p}{the} packet contains LSAs send it to \hyperlink{protocolthe-p}{the} LSA database manager if appropriate.


\begin{DoxyParams}{Parameters}
{\em interface} & that packet arrived on \\
\hline
{\em vif} & that packet arrived on \\
\hline
{\em packet} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} packet is now owned by \hyperlink{protocolthe-p}{the} peer manager. 
\end{DoxyReturn}
\hypertarget{classPeerManager_ae08f0239f0d4e69436a335b9f84eb66c}{
\index{PeerManager@{PeerManager}!recompute\_\-addresses\_\-peer@{recompute\_\-addresses\_\-peer}}
\index{recompute\_\-addresses\_\-peer@{recompute\_\-addresses\_\-peer}!PeerManager@{PeerManager}}
\subsubsection[{recompute\_\-addresses\_\-peer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::recompute\_\-addresses\_\-peer (
\begin{DoxyParamCaption}
\item[{const {\bf OspfTypes::PeerID}}]{peerid, }
\item[{{\bf OspfTypes::AreaID}}]{area}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_ae08f0239f0d4e69436a335b9f84eb66c}


Update this peer OSPFv3 only. 

Reset \hyperlink{protocolthe-p}{the} addresses that should be advertised by this peer. \hypertarget{classPeerManager_a491761bd4ba68d95090ff0867fe1f1d2}{
\index{PeerManager@{PeerManager}!refresh\_\-router\_\-lsas@{refresh\_\-router\_\-lsas}}
\index{refresh\_\-router\_\-lsas@{refresh\_\-router\_\-lsas}!PeerManager@{PeerManager}}
\subsubsection[{refresh\_\-router\_\-lsas}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf PeerManager}$<$ A $>$::refresh\_\-router\_\-lsas (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classPeerManager_a491761bd4ba68d95090ff0867fe1f1d2}


\hyperlink{structSend}{Send} a new Router-\/LSA in all areas. 

Typically called when one of \hyperlink{protocolthe-p}{the} Router-\/LSA flags changes state. \hypertarget{classPeerManager_af7a016d1c84d19a7a81ea3b5282abefd}{
\index{PeerManager@{PeerManager}!send\_\-lsa@{send\_\-lsa}}
\index{send\_\-lsa@{send\_\-lsa}!PeerManager@{PeerManager}}
\subsubsection[{send\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::send\_\-lsa (
\begin{DoxyParamCaption}
\item[{const {\bf OspfTypes::PeerID}}]{peerid, }
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{const {\bf OspfTypes::NeighbourID}}]{nid, }
\item[{{\bf Lsa::LsaRef}}]{lsar}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_af7a016d1c84d19a7a81ea3b5282abefd}


\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 area} & \\
\hline
{\em nid} & \\
\hline
{\em lsar} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success 
\end{DoxyReturn}
\hypertarget{classPeerManager_ab6f1785f8b178cade03a7b0f7fd76094}{
\index{PeerManager@{PeerManager}!set\_\-md5\_\-authentication\_\-key@{set\_\-md5\_\-authentication\_\-key}}
\index{set\_\-md5\_\-authentication\_\-key@{set\_\-md5\_\-authentication\_\-key}!PeerManager@{PeerManager}}
\subsubsection[{set\_\-md5\_\-authentication\_\-key}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::set\_\-md5\_\-authentication\_\-key (
\begin{DoxyParamCaption}
\item[{const {\bf OspfTypes::PeerID}}]{peerid, }
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{uint8\_\-t}]{key\_\-id, }
\item[{const string \&}]{password, }
\item[{const {\bf TimeVal} \&}]{start\_\-timeval, }
\item[{const {\bf TimeVal} \&}]{end\_\-timeval, }
\item[{const {\bf TimeVal} \&}]{max\_\-time\_\-drift, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_ab6f1785f8b178cade03a7b0f7fd76094}


Set an MD5 authentication key. 

Note that \hyperlink{protocolthe-p}{the} current authentication handler is replaced with an MD5 authentication handler.


\begin{DoxyParams}{Parameters}
{\em peerid} & \hyperlink{protocolthe-p}{the} peer ID. \\
\hline
{\em area} & \hyperlink{protocolthe-p}{the} area ID. \\
\hline
{\em key\_\-id} & unique ID associated with key. \\
\hline
{\em password} & phrase used for MD5 digest computation. \\
\hline
{\em start\_\-timeval} & start time when key becomes valid. \\
\hline
{\em end\_\-timeval} & end time when key becomes invalid. \\
\hline
{\em max\_\-time\_\-drift} & \hyperlink{protocolthe-p}{the} maximum time drift among all routers. \\
\hline
{\em \hyperlink{protocolthe-p}{the}} & error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success, otherwise false. 
\end{DoxyReturn}
\hypertarget{classPeerManager_a681d303f3978b9805031c4baff875641}{
\index{PeerManager@{PeerManager}!set\_\-simple\_\-authentication\_\-key@{set\_\-simple\_\-authentication\_\-key}}
\index{set\_\-simple\_\-authentication\_\-key@{set\_\-simple\_\-authentication\_\-key}!PeerManager@{PeerManager}}
\subsubsection[{set\_\-simple\_\-authentication\_\-key}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::set\_\-simple\_\-authentication\_\-key (
\begin{DoxyParamCaption}
\item[{const {\bf OspfTypes::PeerID}}]{peerid, }
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{const string \&}]{password, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_a681d303f3978b9805031c4baff875641}


Set a simple password authentication key. 

Note that \hyperlink{protocolthe-p}{the} current authentication handler is replaced with a simple password authentication handler.


\begin{DoxyParams}{Parameters}
{\em peerid} & \hyperlink{protocolthe-p}{the} peer ID. \\
\hline
{\em area} & \hyperlink{protocolthe-p}{the} area ID. \\
\hline
{\em password} & \hyperlink{protocolthe-p}{the} password to set. \\
\hline
{\em \hyperlink{protocolthe-p}{the}} & error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success, otherwise false. 
\end{DoxyReturn}
\hypertarget{classPeerManager_a25c3806aeb4456d20080f44331892a15}{
\index{PeerManager@{PeerManager}!summary\_\-announce@{summary\_\-announce}}
\index{summary\_\-announce@{summary\_\-announce}!PeerManager@{PeerManager}}
\subsubsection[{summary\_\-announce}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ void {\bf PeerManager}$<$ A $>$::summary\_\-announce (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{{\bf IPNet}$<$ A $>$}]{net, }
\item[{{\bf RouteEntry}$<$ A $>$ \&}]{rt}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_a25c3806aeb4456d20080f44331892a15}


A new route has been added to \hyperlink{protocolthe-p}{the} routing table announce it to all areas as it is a candidate for Summary-\/LSA generation. 


\begin{DoxyParams}{Parameters}
{\em area} & that \hyperlink{protocolthe-p}{the} route was introduced by. \\
\hline
\end{DoxyParams}
\hypertarget{classPeerManager_a76e668522024390a6526daaae13345c5}{
\index{PeerManager@{PeerManager}!summary\_\-candidate@{summary\_\-candidate}}
\index{summary\_\-candidate@{summary\_\-candidate}!PeerManager@{PeerManager}}
\subsubsection[{summary\_\-candidate}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf PeerManager}$<$ A $>$::summary\_\-candidate (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{{\bf IPNet}$<$ A $>$}]{net, }
\item[{{\bf RouteEntry}$<$ A $>$ \&}]{rt}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPeerManager_a76e668522024390a6526daaae13345c5}
\begin{DoxyReturn}{Returns}
true if this route is a candidate for summarisation. 
\end{DoxyReturn}
\hypertarget{classPeerManager_a2b15e15137d842402e777586388f27c6}{
\index{PeerManager@{PeerManager}!summary\_\-push@{summary\_\-push}}
\index{summary\_\-push@{summary\_\-push}!PeerManager@{PeerManager}}
\subsubsection[{summary\_\-push}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf PeerManager}$<$ A $>$::summary\_\-push (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaID}}]{area}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_a2b15e15137d842402e777586388f27c6}


\hyperlink{structSend}{Send} all \hyperlink{protocolthe-p}{the} summary information to specified area. 

New areas or stub areas that change from do not advertise can use this hook to force all routes to be sent to \hyperlink{protocolthe-p}{the} specified area.


\begin{DoxyParams}{Parameters}
{\em area} & that all routes should be sent to. \\
\hline
\end{DoxyParams}
\hypertarget{classPeerManager_a03a5a3a720fd3a22cce1146617827bf2}{
\index{PeerManager@{PeerManager}!summary\_\-replace@{summary\_\-replace}}
\index{summary\_\-replace@{summary\_\-replace}!PeerManager@{PeerManager}}
\subsubsection[{summary\_\-replace}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ void {\bf PeerManager}$<$ 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{classPeerManager_a03a5a3a720fd3a22cce1146617827bf2}


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

If a generated Summary-\/LSA exists it will need to have its metric or nexthop modified.


\begin{DoxyParams}{Parameters}
{\em area} & that \hyperlink{protocolthe-p}{the} route was introduced by. \\
\hline
\end{DoxyParams}
\hypertarget{classPeerManager_a330b7b93edbfa7470c4193d34d991d59}{
\index{PeerManager@{PeerManager}!summary\_\-withdraw@{summary\_\-withdraw}}
\index{summary\_\-withdraw@{summary\_\-withdraw}!PeerManager@{PeerManager}}
\subsubsection[{summary\_\-withdraw}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ void {\bf PeerManager}$<$ A $>$::summary\_\-withdraw (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaID}}]{area, }
\item[{{\bf IPNet}$<$ A $>$}]{net, }
\item[{{\bf RouteEntry}$<$ A $>$ \&}]{rt}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_a330b7b93edbfa7470c4193d34d991d59}


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.


\begin{DoxyParams}{Parameters}
{\em area} & that \hyperlink{protocolthe-p}{the} route was introduced by. \\
\hline
\end{DoxyParams}
\hypertarget{classPeerManager_a8403bc656cb0a94a6a3e83922982cb6a}{
\index{PeerManager@{PeerManager}!track\_\-area\_\-count@{track\_\-area\_\-count}}
\index{track\_\-area\_\-count@{track\_\-area\_\-count}!PeerManager@{PeerManager}}
\subsubsection[{track\_\-area\_\-count}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf PeerManager}$<$ A $>$::track\_\-area\_\-count (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaType}}]{area\_\-type, }
\item[{bool}]{up}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPeerManager_a8403bc656cb0a94a6a3e83922982cb6a}


Track \hyperlink{protocolthe-p}{the} number of areas of each type. 


\begin{DoxyParams}{Parameters}
{\em area\_\-type} & being tracked. \\
\hline
{\em up} & true if \hyperlink{protocolthe-p}{the} area is being created, false if it is being deleted. \\
\hline
\end{DoxyParams}
\hypertarget{classPeerManager_aca229bfefd2f33111600e3072b008aaf}{
\index{PeerManager@{PeerManager}!up\_\-virtual\_\-link@{up\_\-virtual\_\-link}}
\index{up\_\-virtual\_\-link@{up\_\-virtual\_\-link}!PeerManager@{PeerManager}}
\subsubsection[{up\_\-virtual\_\-link}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ void {\bf PeerManager}$<$ A $>$::up\_\-virtual\_\-link (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::RouterID}}]{rid, }
\item[{A}]{source, }
\item[{uint16\_\-t}]{interface\_\-cost, }
\item[{A}]{destination}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_aca229bfefd2f33111600e3072b008aaf}


Bring virtual link up (Upcall from area router). 


\begin{DoxyParams}{Parameters}
{\em rid} & neighbours router ID. \\
\hline
{\em source} & address of packets sent to this neighbour. \\
\hline
{\em interface\_\-cost} & \\
\hline
{\em destination} & address of \hyperlink{protocolthe-p}{the} neighbour router. \\
\hline
\end{DoxyParams}
\hypertarget{classPeerManager_a2a2cb3f5bf3ec55a6a3ef81f3efbd3a5}{
\index{PeerManager@{PeerManager}!update\_\-peer@{update\_\-peer}}
\index{update\_\-peer@{update\_\-peer}!PeerManager@{PeerManager}}
\subsubsection[{update\_\-peer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::update\_\-peer (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{{\bf OspfTypes::AreaID}}]{area}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_a2a2cb3f5bf3ec55a6a3ef81f3efbd3a5}


Update this peer OSPFv3 only. 

Called every time a variable related to this peer is changed. \hypertarget{classPeerManager_adebe46c66b686a6873af82e36ef442c9}{
\index{PeerManager@{PeerManager}!vif\_\-status\_\-change@{vif\_\-status\_\-change}}
\index{vif\_\-status\_\-change@{vif\_\-status\_\-change}!PeerManager@{PeerManager}}
\subsubsection[{vif\_\-status\_\-change}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf PeerManager}$<$ A $>$::vif\_\-status\_\-change (
\begin{DoxyParamCaption}
\item[{const string \&}]{interface, }
\item[{const string \&}]{vif, }
\item[{bool}]{state}
\end{DoxyParamCaption}
)}}
\label{classPeerManager_adebe46c66b686a6873af82e36ef442c9}


Track \hyperlink{protocolthe-p}{the} state of a vif. 

Callback when \hyperlink{protocolthe-p}{the} status of \hyperlink{protocolthe-p}{the} vif changes. \hypertarget{classPeerManager_af78c9a5ef385dd75d0e34e0697a2502d}{
\index{PeerManager@{PeerManager}!virtual\_\-link\_\-endpoint@{virtual\_\-link\_\-endpoint}}
\index{virtual\_\-link\_\-endpoint@{virtual\_\-link\_\-endpoint}!PeerManager@{PeerManager}}
\subsubsection[{virtual\_\-link\_\-endpoint}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf PeerManager}$<$ A $>$::virtual\_\-link\_\-endpoint (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaID}}]{area}
\end{DoxyParamCaption}
) const}}
\label{classPeerManager_af78c9a5ef385dd75d0e34e0697a2502d}


Are any of neighbours of this area a virtual link endpoint. 

\begin{DoxyReturn}{Returns}
true if any are. 
\end{DoxyReturn}


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