\hypertarget{classPeer}{
\section{Peer$<$ A $>$ Class Template Reference}
\label{classPeer}\index{Peer@{Peer}}
}


A peer represents a single area and is bound to a \hyperlink{classPeerOut}{PeerOut}.  




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

Inheritance diagram for Peer$<$ A $>$:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.000000cm]{classPeer}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structPeer_1_1Candidate}{Candidate}
\begin{DoxyCompactList}\small\item\em Possible DR or BDR candidates. \item\end{DoxyCompactList}\item 
struct \hyperlink{structPeer_1_1expect}{expect}
\end{DoxyCompactItemize}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
enum {\bfseries PeerState} \{ {\bfseries YES\_\-ITS\_\-ME}, 
{\bfseries NO\_\-ITS\_\-NOT\_\-ME}, 
{\bfseries PLEASE\_\-DELETE\_\-ME}
 \}
\item 
enum \hyperlink{classPeer_a5636e11ed21a7ea5879188282c0c7008}{InterfaceState} \{ \par
{\bfseries Down}, 
{\bfseries Loopback}, 
{\bfseries Waiting}, 
{\bfseries Point2Point}, 
\par
{\bfseries DR\_\-other}, 
{\bfseries Backup}, 
{\bfseries DR}
 \}
\begin{DoxyCompactList}\small\item\em Interface as defined by OSPF not XORP. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_ad425efef9b4af19bf41cab78ca4054d7}{
typedef A {\bfseries Addr}}
\label{classPeer_ad425efef9b4af19bf41cab78ca4054d7}

\item 
\hypertarget{classPeer_aa46f425b3c321e2f360e5d19499bc644}{
typedef \hyperlink{classPort}{Port}$<$ A $>$ {\bfseries RipPort}}
\label{classPeer_aa46f425b3c321e2f360e5d19499bc644}

\item 
\hypertarget{classPeer_afad61d35c402f4832265c98d12ce066c}{
typedef \hyperlink{classRouteEntry}{RouteEntry}$<$ A $>$ {\bfseries Route}}
\label{classPeer_afad61d35c402f4832265c98d12ce066c}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classPeer_a2e8fe4a4f27e024416fc24ae9f705357}{
{\bfseries Peer} (\hyperlink{classEventLoop}{EventLoop} $\ast$eventloop, \hyperlink{classXrlStdRouter}{XrlStdRouter} $\ast$xrlrouter, const string \&peer\_\-name, const uint32\_\-t genid, const string \&target\_\-hostname, const string \&target\_\-port)}
\label{classPeer_a2e8fe4a4f27e024416fc24ae9f705357}

\item 
\hypertarget{classPeer_afb4a3454037f456db43991a593b19a86}{
{\bfseries Peer} (const \hyperlink{classPeer}{Peer} \&rhs)}
\label{classPeer_afb4a3454037f456db43991a593b19a86}

\item 
\hypertarget{classPeer_a1fb2454b12eb31117b270480a428e205}{
\hyperlink{classPeer}{Peer} \& {\bfseries operator=} (const \hyperlink{classPeer}{Peer} \&rhs)}
\label{classPeer_a1fb2454b12eb31117b270480a428e205}

\item 
\hypertarget{classPeer_ab07c0a69cd792ee29d0e7b4571039c1f}{
void {\bfseries copy} (const \hyperlink{classPeer}{Peer} \&rhs)}
\label{classPeer_ab07c0a69cd792ee29d0e7b4571039c1f}

\item 
\hypertarget{classPeer_ad6a3e43ea2360e75f84327a00d3dee96}{
PeerState {\bfseries is\_\-this\_\-you} (const string \&peer\_\-name) const }
\label{classPeer_ad6a3e43ea2360e75f84327a00d3dee96}

\item 
\hypertarget{classPeer_a014659ae6bc511274191a0f805317fb8}{
PeerState {\bfseries is\_\-this\_\-you} (const string \&peer\_\-name, const uint32\_\-t genid) const }
\label{classPeer_a014659ae6bc511274191a0f805317fb8}

\item 
\hypertarget{classPeer_aea228f27554134240dc8003575aaba8b}{
void {\bfseries shutdown} ()}
\label{classPeer_aea228f27554134240dc8003575aaba8b}

\item 
\hypertarget{classPeer_afaf92eb6c8a916178d9984ca018ba3c3}{
bool {\bfseries up} () const }
\label{classPeer_afaf92eb6c8a916178d9984ca018ba3c3}

\item 
\hypertarget{classPeer_a9897c5bcee43cc8be105136080d5d9ef}{
void {\bfseries status} (string \&status)}
\label{classPeer_a9897c5bcee43cc8be105136080d5d9ef}

\item 
\hypertarget{classPeer_a6a9652d63eb5266793abbc37304e28e5}{
bool {\bfseries pending} ()}
\label{classPeer_a6a9652d63eb5266793abbc37304e28e5}

\item 
\hypertarget{classPeer_ad99cd475070b2cd276e5cb7b57de6092}{
void {\bfseries listen} (const string \&line, const vector$<$ string $>$ \&words)  throw (InvalidString)}
\label{classPeer_ad99cd475070b2cd276e5cb7b57de6092}

\item 
\hypertarget{classPeer_aa28421b45dcee2cfe369e0d3c61953c5}{
void {\bfseries connect} (const string \&line, const vector$<$ string $>$ \&words)  throw (InvalidString)}
\label{classPeer_aa28421b45dcee2cfe369e0d3c61953c5}

\item 
\hypertarget{classPeer_a206a3e3084585bbb727f1f59d66f21e8}{
void {\bfseries disconnect} (const string \&line, const vector$<$ string $>$ \&words)  throw (InvalidString)}
\label{classPeer_a206a3e3084585bbb727f1f59d66f21e8}

\item 
\hypertarget{classPeer_accfe4863a039bd60494d9e2ef6078206}{
void {\bfseries establish} (const string \&line, const vector$<$ string $>$ \&words)  throw (InvalidString)}
\label{classPeer_accfe4863a039bd60494d9e2ef6078206}

\item 
\hypertarget{classPeer_a377be0f770d5842a4e1e0a0a7b09b2c4}{
void {\bfseries send} (const string \&line, const vector$<$ string $>$ \&words)  throw (InvalidString)}
\label{classPeer_a377be0f770d5842a4e1e0a0a7b09b2c4}

\item 
\hypertarget{classPeer_ae973e6b4feed7060b8bba58ccd114fbb}{
void {\bfseries send\_\-packet} (const string \&line, const vector$<$ string $>$ \&words)  throw (InvalidString)}
\label{classPeer_ae973e6b4feed7060b8bba58ccd114fbb}

\item 
\hypertarget{classPeer_af32d41bfcbe3d8fd791f007ae0644378}{
void {\bfseries send\_\-dump} (const string \&line, const vector$<$ string $>$ \&words)  throw (InvalidString)}
\label{classPeer_af32d41bfcbe3d8fd791f007ae0644378}

\item 
\hypertarget{classPeer_a5d0427cdcec8307f48e1c72af4177a6f}{
void {\bfseries trie} (const string \&line, const vector$<$ string $>$ \&words)  throw (InvalidString)}
\label{classPeer_a5d0427cdcec8307f48e1c72af4177a6f}

\item 
\hypertarget{classPeer_a71cac8dc7b59ab7d25a8314f858d3537}{
void {\bfseries expect} (const string \&line, const vector$<$ string $>$ \&words)  throw (InvalidString)}
\label{classPeer_a71cac8dc7b59ab7d25a8314f858d3537}

\item 
\hypertarget{classPeer_a578e4a270f11c2a22f71a438fbcc369d}{
void {\bfseries assertX} (const string \&line, const vector$<$ string $>$ \&words)  throw (InvalidString)}
\label{classPeer_a578e4a270f11c2a22f71a438fbcc369d}

\item 
\hypertarget{classPeer_ad74abafc3062dacc4c0de5478d857ec5}{
void {\bfseries dump} (const string \&line, const vector$<$ string $>$ \&words)  throw (InvalidString)}
\label{classPeer_ad74abafc3062dacc4c0de5478d857ec5}

\item 
\hypertarget{classPeer_a5b35fdf7515d2a345d0570a6988f5440}{
void {\bfseries check\_\-expect} (\hyperlink{classBGPPacket}{BGPPacket} $\ast$rec)}
\label{classPeer_a5b35fdf7515d2a345d0570a6988f5440}

\item 
\hypertarget{classPeer_ac3288590b78a25acde4d3096598de8c7}{
void {\bfseries xrl\_\-callback} (const \hyperlink{classXrlError}{XrlError} \&error, const char $\ast$comment)}
\label{classPeer_ac3288590b78a25acde4d3096598de8c7}

\item 
\hypertarget{classPeer_a99f03cfa9d8d946996553d92e6ced18e}{
void {\bfseries xrl\_\-callback\_\-connected} (const \hyperlink{classXrlError}{XrlError} \&error, const char $\ast$comment)}
\label{classPeer_a99f03cfa9d8d946996553d92e6ced18e}

\item 
\hypertarget{classPeer_a259ef484426266e9ab03ace24c7a6f36}{
void {\bfseries datain} (const bool \&status, const \hyperlink{classTimeVal}{TimeVal} \&tv, const vector$<$ uint8\_\-t $>$ \&data)}
\label{classPeer_a259ef484426266e9ab03ace24c7a6f36}

\item 
\hypertarget{classPeer_a47c469d56a8957ecee597fd65f67205d}{
void {\bfseries datain\_\-error} (const string \&reason)}
\label{classPeer_a47c469d56a8957ecee597fd65f67205d}

\item 
\hypertarget{classPeer_aa779770d87cac1258a1c523b7eb89ba0}{
void {\bfseries datain\_\-closed} ()}
\label{classPeer_aa779770d87cac1258a1c523b7eb89ba0}

\item 
\hypertarget{classPeer_aa8686571fa0eba35b81d02770fc01e78}{
\hyperlink{classPathAttribute}{PathAttribute} $\ast$ {\bfseries path\_\-attribute} (const char $\ast$) const   throw (InvalidString)}
\label{classPeer_aa8686571fa0eba35b81d02770fc01e78}

\item 
\hypertarget{classPeer_a58b2b249809646385ff28bf0cc77c886}{
const \hyperlink{classBGPPacket}{BGPPacket} $\ast$ {\bfseries packet} (const string \&line, const vector$<$ string $>$ \&words, int index) const   throw (InvalidString)}
\label{classPeer_a58b2b249809646385ff28bf0cc77c886}

\item 
\hypertarget{classPeer_a65a9f03e439844bafe5614ea4cc0650f}{
{\bfseries Peer} (\hyperlink{classOspf}{Ospf}$<$ A $>$ \&ospf, \hyperlink{classPeerOut}{PeerOut}$<$ A $>$ \&peerout, \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} area\_\-id, \hyperlink{structOspfTypes_acbef6a08bc1aea6981897f45d61dae9e}{OspfTypes::AreaType} area\_\-type)}
\label{classPeer_a65a9f03e439844bafe5614ea4cc0650f}

\item 
\hypertarget{classPeer_a85fe91a2bf815a37c41676e0a3b960ba}{
bool \hyperlink{classPeer_a85fe91a2bf815a37c41676e0a3b960ba}{init} ()}
\label{classPeer_a85fe91a2bf815a37c41676e0a3b960ba}

\begin{DoxyCompactList}\small\item\em Should be invoked just once. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeer_afd2587bd16064aa4f717734d7259c369}{shutdown} ()
\begin{DoxyCompactList}\small\item\em Will only execute if \hyperlink{classPeer_a6a0b5f32e796075a7f71df5dc00431bf}{go()} has been called. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeer_a6a0b5f32e796075a7f71df5dc00431bf}{go} ()
\begin{DoxyCompactList}\small\item\em Called once \hyperlink{protocolthe-p}{the} peer is configured and enabled. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a1d082be28f21bc80c782cca68175ccfe}{
bool \hyperlink{classPeer_a1d082be28f21bc80c782cca68175ccfe}{initV3} ()}
\label{classPeer_a1d082be28f21bc80c782cca68175ccfe}

\begin{DoxyCompactList}\small\item\em OSPFv3 specific initialisation. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a4aa29d9f9a18ed563d32e041a7ddec21}{
bool \hyperlink{classPeer_a4aa29d9f9a18ed563d32e041a7ddec21}{goV3} ()}
\label{classPeer_a4aa29d9f9a18ed563d32e041a7ddec21}

\begin{DoxyCompactList}\small\item\em OSPFv3 specific go. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a6b426db044fd20e504910902b7068514}{
bool \hyperlink{classPeer_a6b426db044fd20e504910902b7068514}{shutdownV3} ()}
\label{classPeer_a6b426db044fd20e504910902b7068514}

\begin{DoxyCompactList}\small\item\em OSPFv3 specific shutdown. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_ae17c30feafba599251b39f78613ede11}{
void {\bfseries populate\_\-link\_\-lsa} ()}
\label{classPeer_ae17c30feafba599251b39f78613ede11}

\item 
\hypertarget{classPeer_a990b4a4e22d3b9e344b508d95dc67ce7}{
bool \hyperlink{classPeer_a990b4a4e22d3b9e344b508d95dc67ce7}{match} (\hyperlink{classIPv6}{IPv6} source) const }
\label{classPeer_a990b4a4e22d3b9e344b508d95dc67ce7}

\begin{DoxyCompactList}\small\item\em If \hyperlink{protocolthe-p}{the} source address matches a global address return true. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a4e1bf2dde04f0b08d9503eb5200d22f1}{
string \hyperlink{classPeer_a4e1bf2dde04f0b08d9503eb5200d22f1}{get\_\-if\_\-name} () const }
\label{classPeer_a4e1bf2dde04f0b08d9503eb5200d22f1}

\begin{DoxyCompactList}\small\item\em For debugging only printable rendition of this interface/vif. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_ac6aaa0276b29d0f8770429e0dae8f15e}{
\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} \hyperlink{classPeer_ac6aaa0276b29d0f8770429e0dae8f15e}{get\_\-peerid} () const }
\label{classPeer_ac6aaa0276b29d0f8770429e0dae8f15e}

\begin{DoxyCompactList}\small\item\em Get \hyperlink{classPeer}{Peer} ID. \item\end{DoxyCompactList}\item 
A \hyperlink{classPeer_a748d1c36172c54d3a14c3df593495db4}{get\_\-interface\_\-address} () const 
\begin{DoxyCompactList}\small\item\em \hyperlink{structAddress}{Address} of this interface/vif. \item\end{DoxyCompactList}\item 
uint16\_\-t \hyperlink{classPeer_a0dc37e9c1717214a7284ac1217351538}{get\_\-interface\_\-prefix\_\-length} () const 
\item 
uint16\_\-t \hyperlink{classPeer_a5ab796ab9eb5d809add55836999f9048}{get\_\-interface\_\-mtu} () const 
\item 
uint16\_\-t \hyperlink{classPeer_af9d1961b6a43666740ac8a0f1e467c97}{get\_\-frame\_\-size} () const 
\begin{DoxyCompactList}\small\item\em The maximum size of an OSPF frame, \hyperlink{protocolthe-p}{the} MTU minus \hyperlink{protocolthe-p}{the} IP header. \item\end{DoxyCompactList}\item 
uint16\_\-t \hyperlink{classPeer_a8cf32d0e8e531450e3822c160eacb842}{get\_\-inftransdelay} () const 
\item 
\hypertarget{classPeer_a10fce160342fd833e3d9046861539612}{
bool \hyperlink{classPeer_a10fce160342fd833e3d9046861539612}{transmit} (typename \hyperlink{classTransmit}{Transmit}$<$ A $>$::TransmitRef tr)}
\label{classPeer_a10fce160342fd833e3d9046861539612}

\begin{DoxyCompactList}\small\item\em Used by external and internal entities to transmit packets. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_accf771601058dc345276c3775fef8bc0}{
bool \hyperlink{classPeer_accf771601058dc345276c3775fef8bc0}{add\_\-neighbour} (A neighbour\_\-address, \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid)}
\label{classPeer_accf771601058dc345276c3775fef8bc0}

\begin{DoxyCompactList}\small\item\em Add neighbour. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_ad71817a61f1640abb84d110700b06fb2}{
bool \hyperlink{classPeer_ad71817a61f1640abb84d110700b06fb2}{remove\_\-neighbour} (A neighbour\_\-address, \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid)}
\label{classPeer_ad71817a61f1640abb84d110700b06fb2}

\begin{DoxyCompactList}\small\item\em Remove neighbour. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a46188f342e93dd01e79ee43e485fc5e8}{
bool \hyperlink{classPeer_a46188f342e93dd01e79ee43e485fc5e8}{belongs} (A addr) const }
\label{classPeer_a46188f342e93dd01e79ee43e485fc5e8}

\begin{DoxyCompactList}\small\item\em \hyperlink{structAddress}{Address} belongs to this router used for destination address validation. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a2fe7096fd156facbf45775e9766215d9}{
bool \hyperlink{classPeer_a2fe7096fd156facbf45775e9766215d9}{receive} (A dst, A src, \hyperlink{classPacket}{Packet} $\ast$packet)}
\label{classPeer_a2fe7096fd156facbf45775e9766215d9}

\begin{DoxyCompactList}\small\item\em Packets for this peer are received here. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeer_aece4858a72528ca68a7fa33992f3965f}{accept\_\-lsa} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar) const 
\begin{DoxyCompactList}\small\item\em Used to test if an lsa should be accepted for this peer/neighbour. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeer_a1bcf32ee5ba1dadfd5c13043d6dd09c2}{send\_\-lsa} (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{classPeer_a6d9a8b3681b7e461187aec77196fdc75}{queue\_\-lsa} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} nid, \hyperlink{classref__ptr}{Lsa::LsaRef} lsar, bool \&multicast\_\-on\_\-peer) const 
\begin{DoxyCompactList}\small\item\em Queue an LSA for transmission. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_ab43ad71c59ffae69c56ce3c228226522}{
bool \hyperlink{classPeer_ab43ad71c59ffae69c56ce3c228226522}{push\_\-lsas} (const char $\ast$message)}
\label{classPeer_ab43ad71c59ffae69c56ce3c228226522}

\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} (push) any queued LSAs. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a21b413bbcfd969f6a35bc573674fdcba}{
bool {\bfseries do\_\-dr\_\-or\_\-bdr} () const }
\label{classPeer_a21b413bbcfd969f6a35bc573674fdcba}

\item 
bool \hyperlink{classPeer_a901066aa56dcf0faa9075c26447b5743}{is\_\-DR} () const 
\item 
bool \hyperlink{classPeer_a1d77cb09b482d53ec55a0669346537f3}{is\_\-BDR} () const 
\item 
bool \hyperlink{classPeer_a0a9646972b7cc87d2a8dcf62d8f5cbc7}{is\_\-DR\_\-or\_\-BDR} () const 
\item 
bool \hyperlink{classPeer_a3984537bca83ce1cfc1cb6f42693097b}{neighbours\_\-exchange\_\-or\_\-loading} () const 
\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{classPeer_af5423799d72c278bedf777ba0c4cdc38}{neighbour\_\-at\_\-least\_\-two\_\-way} (\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid, bool \&twoway)
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} state of \hyperlink{protocolthe-p}{the} neighbour with \hyperlink{protocolthe-p}{the} specified router ID. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeer_aef22a9e01b3f912d63e72982992c8f04}{get\_\-neighbour\_\-address} (\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{classPeer_a4d14c3a47fdafb4214d3d4f55acc1bdd}{on\_\-link\_\-state\_\-request\_\-list} (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{classPeer_ab7bbdeade7d3a66bde86ab87722fe78e}{event\_\-bad\_\-link\_\-state\_\-request} (const \hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} nid) const 
\begin{DoxyCompactList}\small\item\em Generate a BadLSReq event. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeer_a75e74b3d84f8d7e953e6aec4f729b6a2}{virtual\_\-link\_\-endpoint} () const 
\begin{DoxyCompactList}\small\item\em Are any of neighbours of this peer a virtual link endpoint. \item\end{DoxyCompactList}\item 
void \hyperlink{classPeer_a726d4d317ab523cf6892903f6c81250a}{send\_\-direct\_\-acks} (\hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} nid, list$<$ \hyperlink{classLsa__header}{Lsa\_\-header} $>$ \&ack)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} direct ACKs. \item\end{DoxyCompactList}\item 
void \hyperlink{classPeer_aa3760aa47eee95f5d0ee4078d229346b}{send\_\-delayed\_\-acks} (\hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} nid, list$<$ \hyperlink{classLsa__header}{Lsa\_\-header} $>$ \&ack)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} delayed ACKs. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a3ac24b2f504ae00d52fe949fae1d8af8}{
\hyperlink{classNeighbour}{Neighbour}$<$ A $>$ $\ast$ {\bfseries find\_\-neighbour} (A src, \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} rid)}
\label{classPeer_a3ac24b2f504ae00d52fe949fae1d8af8}

\item 
bool \hyperlink{classPeer_a928e4f904a5aff7476671911ff754fe5}{is\_\-neighbour\_\-DR\_\-or\_\-BDR} (\hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} nid) const 
\item 
\hypertarget{classPeer_a3c7abe1ff5ef953caf9dc57605487a61}{
bool \hyperlink{classPeer_a3c7abe1ff5ef953caf9dc57605487a61}{process\_\-hello\_\-packet} (A dst, A src, \hyperlink{classHelloPacket}{HelloPacket} $\ast$hello)}
\label{classPeer_a3c7abe1ff5ef953caf9dc57605487a61}

\begin{DoxyCompactList}\small\item\em Process a hello packet. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_aff1b9463ec86af6a2c6bc36ba1dd0995}{
bool \hyperlink{classPeer_aff1b9463ec86af6a2c6bc36ba1dd0995}{process\_\-data\_\-description\_\-packet} (A dst, A src, \hyperlink{classDataDescriptionPacket}{DataDescriptionPacket} $\ast$dd)}
\label{classPeer_aff1b9463ec86af6a2c6bc36ba1dd0995}

\begin{DoxyCompactList}\small\item\em Process a data description packet. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_aff1c8412cb74c0d88f5d52eb891462ba}{
bool \hyperlink{classPeer_aff1c8412cb74c0d88f5d52eb891462ba}{process\_\-link\_\-state\_\-request\_\-packet} (A dst, A src, \hyperlink{classLinkStateRequestPacket}{LinkStateRequestPacket} $\ast$lsrp)}
\label{classPeer_aff1c8412cb74c0d88f5d52eb891462ba}

\begin{DoxyCompactList}\small\item\em Process a link state request packet. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_ae747001d1af726ae7c6960873cb7fe98}{
bool \hyperlink{classPeer_ae747001d1af726ae7c6960873cb7fe98}{process\_\-link\_\-state\_\-update\_\-packet} (A dst, A src, \hyperlink{classLinkStateUpdatePacket}{LinkStateUpdatePacket} $\ast$lsup)}
\label{classPeer_ae747001d1af726ae7c6960873cb7fe98}

\begin{DoxyCompactList}\small\item\em Process a link state update packet. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a6d4b49ec18382b6b273f74a2b7920c82}{
bool \hyperlink{classPeer_a6d4b49ec18382b6b273f74a2b7920c82}{process\_\-link\_\-state\_\-acknowledgement\_\-packet} (A dst, A src, \hyperlink{classLinkStateAcknowledgementPacket}{LinkStateAcknowledgementPacket} $\ast$lsap)}
\label{classPeer_a6d4b49ec18382b6b273f74a2b7920c82}

\begin{DoxyCompactList}\small\item\em Process a link state acknowledgement packet. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a5a53f31458a4d58934fbaa8c07f8b6b3}{
void \hyperlink{classPeer_a5a53f31458a4d58934fbaa8c07f8b6b3}{start} ()}
\label{classPeer_a5a53f31458a4d58934fbaa8c07f8b6b3}

\begin{DoxyCompactList}\small\item\em Start \hyperlink{protocolthe-p}{the} protocol machinery running. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_aeb60ca321c0b090e3ad965d483d0e8ed}{
void \hyperlink{classPeer_aeb60ca321c0b090e3ad965d483d0e8ed}{stop} ()}
\label{classPeer_aeb60ca321c0b090e3ad965d483d0e8ed}

\begin{DoxyCompactList}\small\item\em Stop \hyperlink{protocolthe-p}{the} protocol machinery running. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_addaf39f6f913d2a0f0dadfe22cd4c395}{
void \hyperlink{classPeer_addaf39f6f913d2a0f0dadfe22cd4c395}{change\_\-area\_\-router\_\-type} (\hyperlink{structOspfTypes_acbef6a08bc1aea6981897f45d61dae9e}{OspfTypes::AreaType} area\_\-type)}
\label{classPeer_addaf39f6f913d2a0f0dadfe22cd4c395}

\begin{DoxyCompactList}\small\item\em Change \hyperlink{protocolthe-p}{the} type of this area. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_af2d993a39183c9a538a64d6a61d06897}{
void \hyperlink{classPeer_af2d993a39183c9a538a64d6a61d06897}{event\_\-interface\_\-up} ()}
\label{classPeer_af2d993a39183c9a538a64d6a61d06897}

\begin{DoxyCompactList}\small\item\em Event: InterfaceUP. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_acc2d7ef77457df5d784e4f9f6bd4ee82}{
void \hyperlink{classPeer_acc2d7ef77457df5d784e4f9f6bd4ee82}{event\_\-wait\_\-timer} ()}
\label{classPeer_acc2d7ef77457df5d784e4f9f6bd4ee82}

\begin{DoxyCompactList}\small\item\em Event: WaitTimer. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_ac6d6eec87f64e350cafe45e67eccf41c}{
void \hyperlink{classPeer_ac6d6eec87f64e350cafe45e67eccf41c}{event\_\-backup\_\-seen} ()}
\label{classPeer_ac6d6eec87f64e350cafe45e67eccf41c}

\begin{DoxyCompactList}\small\item\em Event: BackupSeen. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a2a9205bbfe506afe85c7998808a7c6e9}{
void \hyperlink{classPeer_a2a9205bbfe506afe85c7998808a7c6e9}{event\_\-neighbour\_\-change} ()}
\label{classPeer_a2a9205bbfe506afe85c7998808a7c6e9}

\begin{DoxyCompactList}\small\item\em Event: NeighborChange. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a69e48a9155ff60d9cceffa884121db10}{
void \hyperlink{classPeer_a69e48a9155ff60d9cceffa884121db10}{event\_\-loop\_\-ind} ()}
\label{classPeer_a69e48a9155ff60d9cceffa884121db10}

\begin{DoxyCompactList}\small\item\em Event: LoopInd. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a9d4889fd3d3d8bcb19f6507e08d89c4a}{
void \hyperlink{classPeer_a9d4889fd3d3d8bcb19f6507e08d89c4a}{event\_\-unloop\_\-ind} ()}
\label{classPeer_a9d4889fd3d3d8bcb19f6507e08d89c4a}

\begin{DoxyCompactList}\small\item\em Event: UnLoopInd. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a8c6379b6074fcf7466fc6d8a0cf4e930}{
void \hyperlink{classPeer_a8c6379b6074fcf7466fc6d8a0cf4e930}{event\_\-interface\_\-down} ()}
\label{classPeer_a8c6379b6074fcf7466fc6d8a0cf4e930}

\begin{DoxyCompactList}\small\item\em Event: InterfaceDown. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a76a34f560d8adbb08a5bf6b6f659805a}{
void \hyperlink{classPeer_a76a34f560d8adbb08a5bf6b6f659805a}{schedule\_\-event} (const char $\ast$)}
\label{classPeer_a76a34f560d8adbb08a5bf6b6f659805a}

\begin{DoxyCompactList}\small\item\em Schedule an event, used by \hyperlink{protocolthe-p}{the} neighbours to schedule an interface event. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a21c50fe2f15cbdd4ba2d31f337422a43}{
void \hyperlink{classPeer_a21c50fe2f15cbdd4ba2d31f337422a43}{process\_\-scheduled\_\-events} ()}
\label{classPeer_a21c50fe2f15cbdd4ba2d31f337422a43}

\begin{DoxyCompactList}\small\item\em Run all \hyperlink{protocolthe-p}{the} deferred events, callback method. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a7eeb0bb619d12b87a2d3158b45e84fda}{
\hyperlink{classAreaRouter}{AreaRouter}$<$ A $>$ $\ast$ \hyperlink{classPeer_a7eeb0bb619d12b87a2d3158b45e84fda}{get\_\-area\_\-router} ()}
\label{classPeer_a7eeb0bb619d12b87a2d3158b45e84fda}

\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} area router. \item\end{DoxyCompactList}\item 
\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} \hyperlink{classPeer_a77f63ef1439b389251738ea9a3a844a9}{get\_\-candidate\_\-id} (A=A::ZERO()) const 
\item 
\hypertarget{classPeer_a5a7a0621d1c02d3d6b43429bb23b5d90}{
\hyperlink{classPeer_a5636e11ed21a7ea5879188282c0c7008}{InterfaceState} {\bfseries get\_\-state} () const }
\label{classPeer_a5a7a0621d1c02d3d6b43429bb23b5d90}

\item 
\hyperlink{structOspfTypes_aa80e314cde7a3e8b749d3252c228f281}{OspfTypes::LinkType} \hyperlink{classPeer_a243db0ab756e4eb88fa323bf237e6d5a}{get\_\-linktype} () const 
\item 
\hypertarget{classPeer_a4d80f7e47951ed09d5ba3e00a6037642}{
\hyperlink{classAuth}{Auth} \& \hyperlink{classPeer_a4d80f7e47951ed09d5ba3e00a6037642}{get\_\-auth\_\-handler} ()}
\label{classPeer_a4d80f7e47951ed09d5ba3e00a6037642}

\begin{DoxyCompactList}\small\item\em Return \hyperlink{protocolthe-p}{the} authentication handler. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_ace2e496697421d51c786382817e34e97}{
void \hyperlink{classPeer_ace2e496697421d51c786382817e34e97}{populate\_\-common\_\-header} (\hyperlink{classPacket}{Packet} \&packet)}
\label{classPeer_ace2e496697421d51c786382817e34e97}

\begin{DoxyCompactList}\small\item\em Fill in \hyperlink{protocolthe-p}{the} common header parts of \hyperlink{protocolthe-p}{the} packet. \item\end{DoxyCompactList}\item 
\hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} \hyperlink{classPeer_a294706d52a992c5fd0782f19e5e11310}{get\_\-area\_\-id} () const 
\item 
\hyperlink{structOspfTypes_acbef6a08bc1aea6981897f45d61dae9e}{OspfTypes::AreaType} \hyperlink{classPeer_a9a72b0496b9df4441b59be671c45d648}{get\_\-area\_\-type} () const 
\item 
void \hyperlink{classPeer_a7d02be00d72ea178ec9e475618ec0b38}{set\_\-area\_\-type} (\hyperlink{structOspfTypes_acbef6a08bc1aea6981897f45d61dae9e}{OspfTypes::AreaType} area\_\-type)
\item 
\hypertarget{classPeer_ace2714a4f76f4835eb47b8b73455f12c}{
void \hyperlink{classPeer_ace2714a4f76f4835eb47b8b73455f12c}{router\_\-id\_\-changing} ()}
\label{classPeer_ace2714a4f76f4835eb47b8b73455f12c}

\begin{DoxyCompactList}\small\item\em The router ID is about to change. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a3fbe6b9fccf5921eb3a06336b8410f66}{
bool \hyperlink{classPeer_a3fbe6b9fccf5921eb3a06336b8410f66}{set\_\-network\_\-mask} (uint32\_\-t network\_\-mask)}
\label{classPeer_a3fbe6b9fccf5921eb3a06336b8410f66}

\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} network mask OSPFv2 only. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a062d672445c49db74c29b9becbd24670}{
uint32\_\-t \hyperlink{classPeer_a062d672445c49db74c29b9becbd24670}{get\_\-network\_\-mask} () const }
\label{classPeer_a062d672445c49db74c29b9becbd24670}

\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} network mask OSPFv2 only. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a7ae676529fb37cd2481a89837b0e2992}{
bool \hyperlink{classPeer_a7ae676529fb37cd2481a89837b0e2992}{set\_\-interface\_\-id} (uint32\_\-t interface\_\-id)}
\label{classPeer_a7ae676529fb37cd2481a89837b0e2992}

\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} interface ID OSPFv3 only. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_af04513d5afe014d44786d7dd6870913f}{
uint32\_\-t \hyperlink{classPeer_af04513d5afe014d44786d7dd6870913f}{get\_\-interface\_\-id} () const }
\label{classPeer_af04513d5afe014d44786d7dd6870913f}

\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} interface ID OSPFv3 only. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a5b76cfd131798879ce2315917d696371}{
bool \hyperlink{classPeer_a5b76cfd131798879ce2315917d696371}{add\_\-advertise\_\-net} (A addr, uint32\_\-t prefix)}
\label{classPeer_a5b76cfd131798879ce2315917d696371}

\begin{DoxyCompactList}\small\item\em Set a network to advertise OSPFv3 only. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_aae5220620b8802f413015f894dc6e41f}{
bool \hyperlink{classPeer_aae5220620b8802f413015f894dc6e41f}{remove\_\-all\_\-nets} ()}
\label{classPeer_aae5220620b8802f413015f894dc6e41f}

\begin{DoxyCompactList}\small\item\em Remove all \hyperlink{protocolthe-p}{the} networks that are being advertised OSPFv3 only. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a19a91f286177b00d304d2746ca12837f}{
bool \hyperlink{classPeer_a19a91f286177b00d304d2746ca12837f}{update\_\-nets} ()}
\label{classPeer_a19a91f286177b00d304d2746ca12837f}

\begin{DoxyCompactList}\small\item\em Calls to \hyperlink{classPeer_a5b76cfd131798879ce2315917d696371}{add\_\-advertise\_\-net()} and \hyperlink{classPeer_aae5220620b8802f413015f894dc6e41f}{remove\_\-all\_\-nets()} must be followed by a call to update nets to force a new Link-\/LSA to be sent out OSPFv3 only. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_ae64cd05d51302b0ec116c458af3bed6a}{
bool \hyperlink{classPeer_ae64cd05d51302b0ec116c458af3bed6a}{set\_\-hello\_\-interval} (uint16\_\-t hello\_\-interval)}
\label{classPeer_ae64cd05d51302b0ec116c458af3bed6a}

\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} hello interval in seconds. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a10617eca219208c7f984ffc2e54bb24d}{
bool \hyperlink{classPeer_a10617eca219208c7f984ffc2e54bb24d}{set\_\-options} (uint32\_\-t options)}
\label{classPeer_a10617eca219208c7f984ffc2e54bb24d}

\begin{DoxyCompactList}\small\item\em Set options. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_ac6d431b9b04a4be6f6fe062ea7ab988b}{
uint32\_\-t \hyperlink{classPeer_ac6d431b9b04a4be6f6fe062ea7ab988b}{get\_\-options} () const }
\label{classPeer_ac6d431b9b04a4be6f6fe062ea7ab988b}

\begin{DoxyCompactList}\small\item\em Get options. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a98bcdecfba37de5b58e02bb580c7dd43}{
bool \hyperlink{classPeer_a98bcdecfba37de5b58e02bb580c7dd43}{set\_\-router\_\-priority} (uint8\_\-t priority)}
\label{classPeer_a98bcdecfba37de5b58e02bb580c7dd43}

\begin{DoxyCompactList}\small\item\em Set router priority. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a34130fd76ece5b86449cbaec6211dd9f}{
bool \hyperlink{classPeer_a34130fd76ece5b86449cbaec6211dd9f}{set\_\-router\_\-dead\_\-interval} (uint32\_\-t router\_\-dead\_\-interval)}
\label{classPeer_a34130fd76ece5b86449cbaec6211dd9f}

\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} router dead interval in seconds. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a0292f27984007fd656d104cee465cacf}{
uint32\_\-t \hyperlink{classPeer_a0292f27984007fd656d104cee465cacf}{get\_\-router\_\-dead\_\-interval} () const }
\label{classPeer_a0292f27984007fd656d104cee465cacf}

\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} router dead interval in seconds. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeer_a04302e46b362d0cc25d36ee1e809fae2}{set\_\-simple\_\-authentication\_\-key} (const string \&password, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Set a simple password authentication key. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeer_a8c3981c3840669edba8475b4d71b3fcf}{delete\_\-simple\_\-authentication\_\-key} (string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Delete a simple password authentication key. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeer_a0070ff44fb922db520a43eb34595fb24}{set\_\-md5\_\-authentication\_\-key} (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{classPeer_ab90b2446043e674e5d61e981c71e59bf}{delete\_\-md5\_\-authentication\_\-key} (uint8\_\-t key\_\-id, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Delete an MD5 authentication key. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a77436d1442021b5377402b5e4ea474b8}{
bool \hyperlink{classPeer_a77436d1442021b5377402b5e4ea474b8}{set\_\-passive} (bool passive, bool host)}
\label{classPeer_a77436d1442021b5377402b5e4ea474b8}

\begin{DoxyCompactList}\small\item\em Toggle \hyperlink{protocolthe-p}{the} passive status of an interface. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a4c18926a81db7445a9f5dedc1d1639ef}{
bool \hyperlink{classPeer_a4c18926a81db7445a9f5dedc1d1639ef}{get\_\-passive} () const }
\label{classPeer_a4c18926a81db7445a9f5dedc1d1639ef}

\begin{DoxyCompactList}\small\item\em If all peers are in state passive then return passive. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a64e2c4bfdd47ce66868ea2624fb89bac}{
bool \hyperlink{classPeer_a64e2c4bfdd47ce66868ea2624fb89bac}{set\_\-rxmt\_\-interval} (uint32\_\-t rxmt\_\-interval)}
\label{classPeer_a64e2c4bfdd47ce66868ea2624fb89bac}

\begin{DoxyCompactList}\small\item\em Set RxmtInterval. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a02a8f1b687db266eb058526ac2b13f82}{
uint32\_\-t \hyperlink{classPeer_a02a8f1b687db266eb058526ac2b13f82}{get\_\-rxmt\_\-interval} ()}
\label{classPeer_a02a8f1b687db266eb058526ac2b13f82}

\begin{DoxyCompactList}\small\item\em Get RxmtInterval. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_aec92dca30499ac48b1742375b1d40670}{
\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} \hyperlink{classPeer_aec92dca30499ac48b1742375b1d40670}{get\_\-designated\_\-router} () const }
\label{classPeer_aec92dca30499ac48b1742375b1d40670}

\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} designated router. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a9bbc59b4e6017998c92df0a24338e602}{
\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} \hyperlink{classPeer_a9bbc59b4e6017998c92df0a24338e602}{get\_\-backup\_\-designated\_\-router} () const }
\label{classPeer_a9bbc59b4e6017998c92df0a24338e602}

\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} backup designated router. \item\end{DoxyCompactList}\item 
uint32\_\-t \hyperlink{classPeer_a9b64778b11b96476f4bfd13958778586}{get\_\-designated\_\-router\_\-interface\_\-id} (A=A::ZERO()) const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} interface ID of \hyperlink{protocolthe-p}{the} designated router. \item\end{DoxyCompactList}\item 
void \hyperlink{classPeer_a2994df21d7a12abc4d4a7bc152a110b0}{update\_\-router\_\-links} ()
\begin{DoxyCompactList}\small\item\em Compute \hyperlink{protocolthe-p}{the} current router link. \item\end{DoxyCompactList}\item 
void \hyperlink{classPeer_a30611b9beef9d3353e8d69eee1862cf4}{adjacency\_\-change} (bool up)
\begin{DoxyCompactList}\small\item\em Used to notify \hyperlink{protocolthe-p}{the} peer that a neighbour has become fully adjacent or a neighbour is no longer fully adjacent. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a15e45d24acbef18275126ad20aecd488}{
bool \hyperlink{classPeer_a15e45d24acbef18275126ad20aecd488}{get\_\-neighbour\_\-list} (list$<$ \hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} $>$ \&neighbours) const }
\label{classPeer_a15e45d24acbef18275126ad20aecd488}

\begin{DoxyCompactList}\small\item\em Get a list of all \hyperlink{protocolthe-p}{the} neighbours. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeer_a69afaee340a50dc0048ff99712b7c57d}{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 
\hypertarget{classPeer_a110eacb958a39ce67c6309865bf3eedb}{
set$<$ \hyperlink{structAddressInfo}{AddressInfo}$<$ A $>$ $>$ \& \hyperlink{classPeer_a110eacb958a39ce67c6309865bf3eedb}{get\_\-address\_\-info} ()}
\label{classPeer_a110eacb958a39ce67c6309865bf3eedb}

\begin{DoxyCompactList}\small\item\em Get this list of addresses that should be advertised OSPFv3 only. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a4135fec1ed1bbb8be9fb100e1df5d351}{
bool \hyperlink{classPeer_a4135fec1ed1bbb8be9fb100e1df5d351}{get\_\-attached\_\-routers} (list$<$ \hyperlink{structRouterInfo}{RouterInfo} $>$ \&routers)}
\label{classPeer_a4135fec1ed1bbb8be9fb100e1df5d351}

\begin{DoxyCompactList}\small\item\em Return a list of \hyperlink{protocolthe-p}{the} fully adjacent routers. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a09f4fd131c584996263eeeb2faf7a797}{
{\bfseries Peer} (\hyperlink{classPort}{RipPort} \&p, const Addr \&addr)}
\label{classPeer_a09f4fd131c584996263eeeb2faf7a797}

\item 
\hypertarget{classPeer_ace06776546a9badc80a291c134b7a149}{
const Addr \& \hyperlink{classPeer_ace06776546a9badc80a291c134b7a149}{address} () const }
\label{classPeer_ace06776546a9badc80a291c134b7a149}

\begin{DoxyCompactList}\small\item\em Get address of \hyperlink{classPeer}{Peer}. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_aca71389a7bf449b5d49f8df9dae927f0}{
\hyperlink{structPeerCounters}{PeerCounters} \& \hyperlink{classPeer_aca71389a7bf449b5d49f8df9dae927f0}{counters} ()}
\label{classPeer_aca71389a7bf449b5d49f8df9dae927f0}

\begin{DoxyCompactList}\small\item\em Get counters associated with \hyperlink{classPeer}{Peer}. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a4e2b7ec47ef090b1beabe9801eaee325}{
const \hyperlink{structPeerCounters}{PeerCounters} \& \hyperlink{classPeer_a4e2b7ec47ef090b1beabe9801eaee325}{counters} () const }
\label{classPeer_a4e2b7ec47ef090b1beabe9801eaee325}

\begin{DoxyCompactList}\small\item\em Get counters associated with \hyperlink{classPeer}{Peer}. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a9fdee1ad7f8cb5c1062ae102ba08eb28}{
\hyperlink{classPort}{RipPort} \& \hyperlink{classPeer_a9fdee1ad7f8cb5c1062ae102ba08eb28}{port} ()}
\label{classPeer_a9fdee1ad7f8cb5c1062ae102ba08eb28}

\begin{DoxyCompactList}\small\item\em Get port associated with \hyperlink{classPeer}{Peer}. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_ad63e5bb6b8ea4a841e2742710079b5e8}{
const \hyperlink{classPort}{RipPort} \& \hyperlink{classPeer_ad63e5bb6b8ea4a841e2742710079b5e8}{port} () const }
\label{classPeer_ad63e5bb6b8ea4a841e2742710079b5e8}

\begin{DoxyCompactList}\small\item\em Get port associated with \hyperlink{classPeer}{Peer}. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a6f7a237950be1f29be5a0e5d7c452f93}{
void \hyperlink{classPeer_a6f7a237950be1f29be5a0e5d7c452f93}{set\_\-last\_\-active} (const \hyperlink{classTimeVal}{TimeVal} \&t)}
\label{classPeer_a6f7a237950be1f29be5a0e5d7c452f93}

\begin{DoxyCompactList}\small\item\em Set last active time. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a062e49d78d77439f1e1afcc7033afdfd}{
const \hyperlink{classTimeVal}{TimeVal} \& \hyperlink{classPeer_a062e49d78d77439f1e1afcc7033afdfd}{last\_\-active} () const }
\label{classPeer_a062e49d78d77439f1e1afcc7033afdfd}

\begin{DoxyCompactList}\small\item\em Get last active time. \item\end{DoxyCompactList}\item 
bool \hyperlink{classPeer_a1e32bbd439ee6faec9d8df03556dc24f}{update\_\-route} (const \hyperlink{classIPNet}{IPNet}$<$ A $>$ \&net, const A \&nexthop, uint32\_\-t cost, uint32\_\-t tag, const \hyperlink{classPolicyTags}{PolicyTags} \&policytags)
\begin{DoxyCompactList}\small\item\em Update \hyperlink{classRoute}{Route} Entry in database for specified route. \item\end{DoxyCompactList}\item 
void \hyperlink{classPeer_a288b1d96733a4de12aac6608a16094db}{push\_\-routes} ()
\begin{DoxyCompactList}\small\item\em \hyperlink{classPush}{Push} routes through \hyperlink{protocolthe-p}{the} system. \item\end{DoxyCompactList}\item 
uint32\_\-t \hyperlink{classPeer_a84c66164cc090fab7132f7910ccaaca8}{expiry\_\-secs} () const 
\begin{DoxyCompactList}\small\item\em Retrieve number of seconds before routes associated with this \hyperlink{classRouteEntryOrigin}{RouteEntryOrigin} should be marked as expired. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a895e68bf4f426efb301bb6d16bb60c7b}{
uint32\_\-t \hyperlink{classPeer_a895e68bf4f426efb301bb6d16bb60c7b}{deletion\_\-secs} () const }
\label{classPeer_a895e68bf4f426efb301bb6d16bb60c7b}

\begin{DoxyCompactList}\small\item\em Retrieve number of seconds before route should be deleted after expiry. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_afc423d90d532d44cd166e9fd977cc5de}{
{\footnotesize template$<$$>$ }\\void {\bfseries populate\_\-link\_\-lsa} ()}
\label{classPeer_afc423d90d532d44cd166e9fd977cc5de}

\item 
\hypertarget{classPeer_a579591bbdbd4334fb2eb644d74133a4d}{
{\footnotesize template$<$$>$ }\\bool {\bfseries belongs} (\hyperlink{classIPv6}{IPv6} addr) const}
\label{classPeer_a579591bbdbd4334fb2eb644d74133a4d}

\item 
\hypertarget{classPeer_a4047a7185cd969f528ae2ca53e018872}{
{\footnotesize template$<$$>$ }\\\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} {\bfseries get\_\-candidate\_\-id} (\hyperlink{classIPv6}{IPv6}, \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} router\_\-id)}
\label{classPeer_a4047a7185cd969f528ae2ca53e018872}

\item 
\hypertarget{classPeer_a3e2b1fb4e1bb35018a8bf9e292dcfbfe}{
{\footnotesize template$<$$>$ }\\\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} {\bfseries get\_\-candidate\_\-id} (\hyperlink{classIPv6}{IPv6}) const}
\label{classPeer_a3e2b1fb4e1bb35018a8bf9e292dcfbfe}

\item 
\hypertarget{classPeer_ad10418345e4c2cfb4acc6f3282474816}{
{\footnotesize template$<$$>$ }\\uint32\_\-t {\bfseries get\_\-designated\_\-router\_\-interface\_\-id} (\hyperlink{classIPv6}{IPv6}) const}
\label{classPeer_ad10418345e4c2cfb4acc6f3282474816}

\item 
\hypertarget{classPeer_aa30c60e0841349d7bc1828def65041e4}{
{\footnotesize template$<$$>$ }\\bool {\bfseries add\_\-advertise\_\-net} (\hyperlink{classIPv6}{IPv6} addr, uint32\_\-t prefix\_\-length)}
\label{classPeer_aa30c60e0841349d7bc1828def65041e4}

\item 
\hypertarget{classPeer_aa16ab3bf0dcf1e051ba2c33c93ce7497}{
{\footnotesize template$<$$>$ }\\bool {\bfseries remove\_\-all\_\-nets} ()}
\label{classPeer_aa16ab3bf0dcf1e051ba2c33c93ce7497}

\item 
\hypertarget{classPeer_a669f55d63dd360f87cd58f154e181b0f}{
{\footnotesize template$<$$>$ }\\bool {\bfseries update\_\-nets} ()}
\label{classPeer_a669f55d63dd360f87cd58f154e181b0f}

\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} \hyperlink{classPeer_aff9faa72fc6a84f09039cc396c284452}{get\_\-candidate\_\-id} (A, \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID})
\item 
\hypertarget{classPeer_a325756fb6237fae161f23958933ec778}{
static string \hyperlink{classPeer_a325756fb6237fae161f23958933ec778}{pp\_\-interface\_\-state} (\hyperlink{classPeer_a5636e11ed21a7ea5879188282c0c7008}{InterfaceState} is)}
\label{classPeer_a325756fb6237fae161f23958933ec778}

\begin{DoxyCompactList}\small\item\em Pretty print \hyperlink{protocolthe-p}{the} interface state. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classPeer_a8fc88822b136adf5a32f36853d2f3ae0}{
typedef XorpCallback1$<$ void, const \hyperlink{classXrlError}{XrlError} \& $>$::RefPtr {\bfseries SMCB}}
\label{classPeer_a8fc88822b136adf5a32f36853d2f3ae0}

\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classPeer_a6e6473676986a7f28c9cad3029119ac2}{
void {\bfseries send\_\-message} (const uint8\_\-t $\ast$buf, const size\_\-t len, SMCB cb)}
\label{classPeer_a6e6473676986a7f28c9cad3029119ac2}

\item 
\hypertarget{classPeer_a97930d9e4b60407dec4c287f608f7c0b}{
void {\bfseries send\_\-dump\_\-callback} (const \hyperlink{classXrlError}{XrlError} \&error, FILE $\ast$fp, const size\_\-t packet\_\-number, const size\_\-t packets\_\-to\_\-send, const char $\ast$comment)}
\label{classPeer_a97930d9e4b60407dec4c287f608f7c0b}

\item 
\hypertarget{classPeer_ae6db0156361b170515ae9b3e6834684a}{
void {\bfseries send\_\-open} ()}
\label{classPeer_ae6db0156361b170515ae9b3e6834684a}

\item 
\hypertarget{classPeer_ab08a486f76f6475e8263c97472212296}{
void {\bfseries send\_\-keepalive} ()}
\label{classPeer_ab08a486f76f6475e8263c97472212296}

\item 
\hypertarget{classPeer_adcb076e98305997a91ecbdb57d7676db}{
void {\bfseries set\_\-expiry\_\-timer} (\hyperlink{classRouteEntry}{Route} $\ast$route)}
\label{classPeer_adcb076e98305997a91ecbdb57d7676db}

\item 
\hypertarget{classPeer_aa9aa49b631a50651eeb36da9694acc44}{
void {\bfseries expire\_\-route} (\hyperlink{classRouteEntry}{Route} $\ast$route)}
\label{classPeer_aa9aa49b631a50651eeb36da9694acc44}

\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classPeer_a76aad4fd0a2fa3ebb0d3e52167d35229}{
SMCB {\bfseries \_\-smcb}}
\label{classPeer_a76aad4fd0a2fa3ebb0d3e52167d35229}

\item 
\hypertarget{classPeer_aa5749d34b34b8b276f67b008482bf13e}{
\hyperlink{classPort}{RipPort} \& {\bfseries \_\-port}}
\label{classPeer_aa5749d34b34b8b276f67b008482bf13e}

\item 
\hypertarget{classPeer_ae981815988838cba23e3e1bce3557af6}{
Addr {\bfseries \_\-addr}}
\label{classPeer_ae981815988838cba23e3e1bce3557af6}

\item 
\hypertarget{classPeer_a62275611da33c6817ac694fca8b74935}{
\hyperlink{structPeerCounters}{PeerCounters} {\bfseries \_\-counters}}
\label{classPeer_a62275611da33c6817ac694fca8b74935}

\item 
\hypertarget{classPeer_ad67142e0cac0016e6d913a03c5e9fb95}{
\hyperlink{classTimeVal}{TimeVal} {\bfseries \_\-last\_\-active}}
\label{classPeer_ad67142e0cac0016e6d913a03c5e9fb95}

\item 
\hypertarget{classPeer_a98edb564be6b1c96255d86c80e551d30}{
\hyperlink{classPeerRoutes}{PeerRoutes}$<$ A $>$ {\bfseries \_\-peer\_\-routes}}
\label{classPeer_a98edb564be6b1c96255d86c80e551d30}

\end{DoxyCompactItemize}
\subsection*{Private Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classPeer_ac1eb263bc1b8553fe04a079d6a70f059}{
typedef XorpCallback3$<$ void, const uint8\_\-t $\ast$, size\_\-t, \hyperlink{classTimeVal}{TimeVal} $>$::RefPtr {\bfseries Dumper}}
\label{classPeer_ac1eb263bc1b8553fe04a079d6a70f059}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classPeer_ad4613a54b9ddd171f10b074b08bb85b8}{
void \hyperlink{classPeer_ad4613a54b9ddd171f10b074b08bb85b8}{change\_\-state} (\hyperlink{classPeer_a5636e11ed21a7ea5879188282c0c7008}{InterfaceState} state)}
\label{classPeer_ad4613a54b9ddd171f10b074b08bb85b8}

\begin{DoxyCompactList}\small\item\em Change state, use this not set\_\-state when changing states. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a0a61bca8f90f028b057a8f4f332d42f0}{
void \hyperlink{classPeer_a0a61bca8f90f028b057a8f4f332d42f0}{set\_\-state} (\hyperlink{classPeer_a5636e11ed21a7ea5879188282c0c7008}{InterfaceState} state)}
\label{classPeer_a0a61bca8f90f028b057a8f4f332d42f0}

\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} state of this peer. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_acfb395527a0b38595bc51209282fb718}{
bool \hyperlink{classPeer_acfb395527a0b38595bc51209282fb718}{set\_\-designated\_\-router} (\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} dr)}
\label{classPeer_acfb395527a0b38595bc51209282fb718}

\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} designated router. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a68ba524876cd54ea019f9e38f4205525}{
bool \hyperlink{classPeer_a68ba524876cd54ea019f9e38f4205525}{set\_\-backup\_\-designated\_\-router} (\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} dr)}
\label{classPeer_a68ba524876cd54ea019f9e38f4205525}

\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} backup designated router. \item\end{DoxyCompactList}\item 
void \hyperlink{classPeer_a4e1be40394c9d395162baf51409cfe84}{designated\_\-router\_\-changed} (bool yes)
\begin{DoxyCompactList}\small\item\em Called when this peer becomes \hyperlink{protocolthe-p}{the} designated router or this peer was \hyperlink{protocolthe-p}{the} designated router. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_ac7a7fb81681efa5b13f6ae3e25264aab}{
void \hyperlink{classPeer_ac7a7fb81681efa5b13f6ae3e25264aab}{start\_\-hello\_\-timer} ()}
\label{classPeer_ac7a7fb81681efa5b13f6ae3e25264aab}

\begin{DoxyCompactList}\small\item\em Unconditionally start \hyperlink{protocolthe-p}{the} hello timer running. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a0d7d5ce6c371948fcad0a82871869235}{
void \hyperlink{classPeer_a0d7d5ce6c371948fcad0a82871869235}{stop\_\-hello\_\-timer} ()}
\label{classPeer_a0d7d5ce6c371948fcad0a82871869235}

\begin{DoxyCompactList}\small\item\em Unconditionally stop \hyperlink{protocolthe-p}{the} hello timer running. \item\end{DoxyCompactList}\item 
void \hyperlink{classPeer_a3d66829c4decf88d800b6eebae8c4de3}{restart\_\-hello\_\-timer} ()
\begin{DoxyCompactList}\small\item\em If \hyperlink{protocolthe-p}{the} hello timer is already running, then stop and start \hyperlink{protocolthe-p}{the} timer. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a0f225a1c05516e9e39e599501e0ec138}{
void {\bfseries start\_\-wait\_\-timer} ()}
\label{classPeer_a0f225a1c05516e9e39e599501e0ec138}

\item 
\hypertarget{classPeer_acc8986590c563cd031e440f28bb65731}{
void {\bfseries stop\_\-wait\_\-timer} ()}
\label{classPeer_acc8986590c563cd031e440f28bb65731}

\item 
\hypertarget{classPeer_a09ace930f528d374f02b15b62fb4a20e}{
bool {\bfseries send\_\-hello\_\-packet} ()}
\label{classPeer_a09ace930f528d374f02b15b62fb4a20e}

\item 
\hypertarget{classPeer_a0053e064f4d089425a52d3bf1810979c}{
\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} {\bfseries backup\_\-designated\_\-router} (list$<$ \hyperlink{structPeer_1_1Candidate}{Candidate} $>$ \&candidates) const }
\label{classPeer_a0053e064f4d089425a52d3bf1810979c}

\item 
\hypertarget{classPeer_a2b93736f7094862fec49de8b0fc91bc9}{
\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} {\bfseries designated\_\-router} (list$<$ \hyperlink{structPeer_1_1Candidate}{Candidate} $>$ \&candidates, \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} backup\_\-designated\_\-router) const }
\label{classPeer_a2b93736f7094862fec49de8b0fc91bc9}

\item 
\hypertarget{classPeer_a161b4da078f947e7c36e9db385da31d7}{
void {\bfseries compute\_\-designated\_\-router\_\-and\_\-backup\_\-designated\_\-router} ()}
\label{classPeer_a161b4da078f947e7c36e9db385da31d7}

\item 
void \hyperlink{classPeer_a1d1504b085c994b8a84e4647d32ff0cc}{update\_\-router\_\-linksV2} (list$<$ \hyperlink{classRouterLink}{RouterLink} $>$ \&router\_\-links)
\begin{DoxyCompactList}\small\item\em Compute \hyperlink{protocolthe-p}{the} current router link for OSPFv2. \item\end{DoxyCompactList}\item 
void \hyperlink{classPeer_a255f8afdd68dc3883c1be06688fb911a}{update\_\-router\_\-linksV3} (list$<$ \hyperlink{classRouterLink}{RouterLink} $>$ \&router\_\-links)
\begin{DoxyCompactList}\small\item\em Compute \hyperlink{protocolthe-p}{the} current router link for OSPFv3. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a83dc4d05aa38f7c5831940b787c328fa}{
void \hyperlink{classPeer_a83dc4d05aa38f7c5831940b787c328fa}{remove\_\-neighbour\_\-state} ()}
\label{classPeer_a83dc4d05aa38f7c5831940b787c328fa}

\begin{DoxyCompactList}\small\item\em Remove neighbour state. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_a60a00ba627f5199af7f920911e842e99}{
void \hyperlink{classPeer_a60a00ba627f5199af7f920911e842e99}{tear\_\-down\_\-state} ()}
\label{classPeer_a60a00ba627f5199af7f920911e842e99}

\begin{DoxyCompactList}\small\item\em Stop all timers. \item\end{DoxyCompactList}\item 
\hypertarget{classPeer_aa30f6aa9ba4d39c77ac90482401f9089}{
{\footnotesize template$<$$>$ }\\void {\bfseries update\_\-router\_\-linksV2} (list$<$ \hyperlink{classRouterLink}{RouterLink} $>$ \&)}
\label{classPeer_aa30f6aa9ba4d39c77ac90482401f9089}

\item 
\hypertarget{classPeer_a7fb8e399d2eb3ba6af82af48db3c97ab}{
{\footnotesize template$<$$>$ }\\void {\bfseries update\_\-router\_\-linksV3} (list$<$ \hyperlink{classRouterLink}{RouterLink} $>$ \&router\_\-links)}
\label{classPeer_a7fb8e399d2eb3ba6af82af48db3c97ab}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classPeer_a06ddf7a246e8e4856365ea4350a8c8c1}{
\hyperlink{classEventLoop}{EventLoop} $\ast$ {\bfseries \_\-eventloop}}
\label{classPeer_a06ddf7a246e8e4856365ea4350a8c8c1}

\item 
\hypertarget{classPeer_ad444bc69663807c1c53b985663bdfdb1}{
\hyperlink{classXrlStdRouter}{XrlStdRouter} $\ast$ {\bfseries \_\-xrlrouter}}
\label{classPeer_ad444bc69663807c1c53b985663bdfdb1}

\item 
\hypertarget{classPeer_a2eb52c3252227d4341c5b775e12df283}{
\hyperlink{classLocalData}{LocalData} $\ast$ {\bfseries \_\-localdata}}
\label{classPeer_a2eb52c3252227d4341c5b775e12df283}

\item 
\hypertarget{classPeer_a5da9ea4d6bfc3ce745f6a1b096775b5c}{
\hyperlink{classBGPPeerData}{BGPPeerData} $\ast$ {\bfseries \_\-peerdata}}
\label{classPeer_a5da9ea4d6bfc3ce745f6a1b096775b5c}

\item 
\hypertarget{classPeer_a7bd806ef51edbbbac793eabcd41d05bf}{
string {\bfseries \_\-peername}}
\label{classPeer_a7bd806ef51edbbbac793eabcd41d05bf}

\item 
\hypertarget{classPeer_aa39efbe06e54d2a0263a21059676639f}{
uint32\_\-t {\bfseries \_\-genid}}
\label{classPeer_aa39efbe06e54d2a0263a21059676639f}

\item 
\hypertarget{classPeer_a8283f4ffce1dbb25aef6eef1c68ef7a5}{
string {\bfseries \_\-target\_\-hostname}}
\label{classPeer_a8283f4ffce1dbb25aef6eef1c68ef7a5}

\item 
\hypertarget{classPeer_a00de66f58b8d6cd6107d3e8cda24fe65}{
string {\bfseries \_\-target\_\-port}}
\label{classPeer_a00de66f58b8d6cd6107d3e8cda24fe65}

\item 
\hypertarget{classPeer_a75477ff15fcfb8a77f6c9718877464e2}{
bool {\bfseries \_\-up}}
\label{classPeer_a75477ff15fcfb8a77f6c9718877464e2}

\item 
\hypertarget{classPeer_adba5287a69f13dc5cba4474f8bcdc331}{
\hyperlink{classTimeVal}{TimeVal} {\bfseries \_\-shutdown\_\-time}}
\label{classPeer_adba5287a69f13dc5cba4474f8bcdc331}

\item 
\hypertarget{classPeer_aa53bf2bad46fc56bb566b01159432147}{
uint32\_\-t {\bfseries \_\-busy}}
\label{classPeer_aa53bf2bad46fc56bb566b01159432147}

\item 
\hypertarget{classPeer_aff36ef816169dc95749f233dbc27593e}{
bool {\bfseries \_\-connected}}
\label{classPeer_aff36ef816169dc95749f233dbc27593e}

\item 
\hypertarget{classPeer_a6bdb723878b4a6436a862fbf3a1c0928}{
bool {\bfseries \_\-session}}
\label{classPeer_a6bdb723878b4a6436a862fbf3a1c0928}

\item 
\hypertarget{classPeer_a166530455a0b7347c65d0066ddcaf2a0}{
bool {\bfseries \_\-passive}}
\label{classPeer_a166530455a0b7347c65d0066ddcaf2a0}

\item 
\hypertarget{classPeer_a9c80106da201965055fed20d5feca04a}{
bool {\bfseries \_\-established}}
\label{classPeer_a9c80106da201965055fed20d5feca04a}

\item 
\hypertarget{classPeer_a55716a1407229860164bfaeaaea45dbc}{
bool {\bfseries \_\-keepalive}}
\label{classPeer_a55716a1407229860164bfaeaaea45dbc}

\item 
\hypertarget{classPeer_a657581e8d89ae1fa7bd4b66d6389228b}{
\hyperlink{classAsNum}{AsNum} {\bfseries \_\-as}}
\label{classPeer_a657581e8d89ae1fa7bd4b66d6389228b}

\item 
\hypertarget{classPeer_afc6d657c19ff0a9760c7ebfa45bb676d}{
int {\bfseries \_\-holdtime}}
\label{classPeer_afc6d657c19ff0a9760c7ebfa45bb676d}

\item 
\hypertarget{classPeer_a5037431f0c65f9aa51fe92b3484befe1}{
\hyperlink{classIPv4}{IPv4} {\bfseries \_\-id}}
\label{classPeer_a5037431f0c65f9aa51fe92b3484befe1}

\item 
\hypertarget{classPeer_a00549c6119b7c9f89fa0162f78f4217b}{
bool {\bfseries \_\-ipv6}}
\label{classPeer_a00549c6119b7c9f89fa0162f78f4217b}

\item 
\hypertarget{classPeer_ad2eab0a9132f3ad5a840fe3103e59c1c}{
\hyperlink{classTrie}{Trie} {\bfseries \_\-trie\_\-recv}}
\label{classPeer_ad2eab0a9132f3ad5a840fe3103e59c1c}

\item 
\hypertarget{classPeer_a4b8be06fa2fb8567635a968e73e9c11f}{
\hyperlink{classTrie}{Trie} {\bfseries \_\-trie\_\-sent}}
\label{classPeer_a4b8be06fa2fb8567635a968e73e9c11f}

\item 
\hypertarget{classPeer_ae823afad94c813ea86e2b29d1978cdf4}{
uint32\_\-t {\bfseries \_\-last\_\-recv}}
\label{classPeer_ae823afad94c813ea86e2b29d1978cdf4}

\item 
\hypertarget{classPeer_a9f2ba4385cbfd660c15e31d966ca533f}{
uint32\_\-t {\bfseries \_\-last\_\-sent}}
\label{classPeer_a9f2ba4385cbfd660c15e31d966ca533f}

\item 
\hypertarget{classPeer_aa6ef83fad150e730754e7465da496dbf}{
Dumper {\bfseries \_\-traffic\_\-recv}}
\label{classPeer_aa6ef83fad150e730754e7465da496dbf}

\item 
\hypertarget{classPeer_a31d2160896d1aeb231433efcfb43317d}{
Dumper {\bfseries \_\-traffic\_\-sent}}
\label{classPeer_a31d2160896d1aeb231433efcfb43317d}

\item 
\hypertarget{classPeer_a11a042fedbff1178c6a364c306a5c644}{
struct \hyperlink{structPeer_1_1expect}{Peer::expect} {\bfseries \_\-expect}}
\label{classPeer_a11a042fedbff1178c6a364c306a5c644}

\item 
\hypertarget{classPeer_a27b0d2b801021dffdd5779ffbbb64825}{
\hyperlink{classOspf}{Ospf}$<$ A $>$ \& {\bfseries \_\-ospf}}
\label{classPeer_a27b0d2b801021dffdd5779ffbbb64825}

\item 
\hypertarget{classPeer_a7257c81c75074eef10efec5f7e3c8c44}{
\hyperlink{classPeerOut}{PeerOut}$<$ A $>$ \& {\bfseries \_\-peerout}}
\label{classPeer_a7257c81c75074eef10efec5f7e3c8c44}

\item 
\hypertarget{classPeer_a56d892daaaf968cebbe830902b9a4081}{
const \hyperlink{structOspfTypes_a8276e5e81192074d7c95e445995d18c6}{OspfTypes::AreaID} {\bfseries \_\-area\_\-id}}
\label{classPeer_a56d892daaaf968cebbe830902b9a4081}

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

\item 
\hypertarget{classPeer_a587f8110e328d44001bd61203c967a91}{
bool {\bfseries \_\-go\_\-called}}
\label{classPeer_a587f8110e328d44001bd61203c967a91}

\item 
\hypertarget{classPeer_ab31deac394f509411c972ab7181f511b}{
bool {\bfseries \_\-enabled}}
\label{classPeer_ab31deac394f509411c972ab7181f511b}

\item 
\hypertarget{classPeer_a1043c8c90cfb681118acded9bd5558b3}{
bool {\bfseries \_\-passive\_\-host}}
\label{classPeer_a1043c8c90cfb681118acded9bd5558b3}

\item 
\hypertarget{classPeer_a2cfd626d73f8392b993a8598bda9ab45}{
\hyperlink{classAuth}{Auth} {\bfseries \_\-auth\_\-handler}}
\label{classPeer_a2cfd626d73f8392b993a8598bda9ab45}

\item 
\hypertarget{classPeer_a2c557e1f07f9e18860241e4015b59448}{
\hyperlink{classXorpTimer}{XorpTimer} {\bfseries \_\-hello\_\-timer}}
\label{classPeer_a2c557e1f07f9e18860241e4015b59448}

\item 
\hypertarget{classPeer_a939a49ddf39c06de20a95efb58aa28a8}{
\hyperlink{classXorpTimer}{XorpTimer} {\bfseries \_\-wait\_\-timer}}
\label{classPeer_a939a49ddf39c06de20a95efb58aa28a8}

\item 
\hypertarget{classPeer_a59e095c5cec0014372d8c2467ea59ce8}{
\hyperlink{classXorpTimer}{XorpTimer} {\bfseries \_\-event\_\-timer}}
\label{classPeer_a59e095c5cec0014372d8c2467ea59ce8}

\item 
\hypertarget{classPeer_aeb15c841e79363533fc3ea89132469fd}{
uint32\_\-t {\bfseries \_\-rxmt\_\-interval}}
\label{classPeer_aeb15c841e79363533fc3ea89132469fd}

\item 
\hypertarget{classPeer_a5f8190800c13ca4b2b10fde67702a6d6}{
\hyperlink{classPeer_a5636e11ed21a7ea5879188282c0c7008}{InterfaceState} {\bfseries \_\-interface\_\-state}}
\label{classPeer_a5f8190800c13ca4b2b10fde67702a6d6}

\item 
\hypertarget{classPeer_ae4a664647a73ac0f641ce6f8ed70230f}{
list$<$ \hyperlink{classNeighbour}{Neighbour}$<$ A $>$ $\ast$ $>$ {\bfseries \_\-neighbours}}
\label{classPeer_ae4a664647a73ac0f641ce6f8ed70230f}

\item 
\hypertarget{classPeer_a7eb86713af9902ddb509dba091260984}{
\hyperlink{classHelloPacket}{HelloPacket} {\bfseries \_\-hello\_\-packet}}
\label{classPeer_a7eb86713af9902ddb509dba091260984}

\item 
\hypertarget{classPeer_af827b493888aa86eb084ade7aa5de39e}{
\hyperlink{classref__ptr}{Lsa::LsaRef} {\bfseries \_\-link\_\-lsa}}
\label{classPeer_af827b493888aa86eb084ade7aa5de39e}

\item 
\hypertarget{classPeer_a89d2dbcfadee150563776bb9f57322ad}{
list$<$ \hyperlink{classRouterLink}{RouterLink} $>$ {\bfseries \_\-router\_\-links}}
\label{classPeer_a89d2dbcfadee150563776bb9f57322ad}

\item 
\hypertarget{classPeer_ac5118351ffb68b80ee8d4f23922b6a26}{
list$<$ string $>$ {\bfseries \_\-scheduled\_\-events}}
\label{classPeer_ac5118351ffb68b80ee8d4f23922b6a26}

\item 
\hypertarget{classPeer_a832cfc3e402d1cdb9be53797587e4581}{
set$<$ \hyperlink{structAddressInfo}{AddressInfo}$<$ A $>$ $>$ {\bfseries \_\-address\_\-info}}
\label{classPeer_a832cfc3e402d1cdb9be53797587e4581}

\end{DoxyCompactItemize}


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

A peer represents a single area and is bound to a \hyperlink{classPeerOut}{PeerOut}. RIP \hyperlink{classPeer}{Peer}.

A RIP peer is a host that sent RIP packets, originating routes, to \hyperlink{protocolthe-p}{the} local RIP \hyperlink{classPort}{Port} (\hyperlink{classPort}{Port}) that have originated routes. Most of a Peer's work is conducted by \hyperlink{protocolthe-p}{the} \hyperlink{classPort}{Port} associated with \hyperlink{protocolthe-p}{the} \hyperlink{classPeer}{Peer} instance. The \hyperlink{classPeer}{Peer} class just acts as a container of information about \hyperlink{protocolthe-p}{the} \hyperlink{classPeer}{Peer} host, such as \hyperlink{protocolthe-p}{the} number of packets sent, \hyperlink{protocolthe-p}{the} time of last update, etc. It also contains \hyperlink{protocolthe-p}{the} original routes as received from \hyperlink{protocolthe-p}{the} \hyperlink{classPeer}{Peer} host. Those routes are used to push them whenever \hyperlink{protocolthe-p}{the} routing policy is modified. 

\subsection{Member Function Documentation}
\hypertarget{classPeer_aece4858a72528ca68a7fa33992f3965f}{
\index{Peer@{Peer}!accept\_\-lsa@{accept\_\-lsa}}
\index{accept\_\-lsa@{accept\_\-lsa}!Peer@{Peer}}
\subsubsection[{accept\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Peer}$<$ A $>$::accept\_\-lsa (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{lsar}
\end{DoxyParamCaption}
) const}}
\label{classPeer_aece4858a72528ca68a7fa33992f3965f}


Used to test if an lsa should be accepted for this peer/neighbour. 

Specifically to deal with \hyperlink{protocolthe-p}{the} case that AS-\/External-\/LSAs should not be sent on virtual links. \hypertarget{classPeer_a30611b9beef9d3353e8d69eee1862cf4}{
\index{Peer@{Peer}!adjacency\_\-change@{adjacency\_\-change}}
\index{adjacency\_\-change@{adjacency\_\-change}!Peer@{Peer}}
\subsubsection[{adjacency\_\-change}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf Peer}$<$ A $>$::adjacency\_\-change (
\begin{DoxyParamCaption}
\item[{bool}]{up}
\end{DoxyParamCaption}
)}}
\label{classPeer_a30611b9beef9d3353e8d69eee1862cf4}


Used to notify \hyperlink{protocolthe-p}{the} peer that a neighbour has become fully adjacent or a neighbour is no longer fully adjacent. 

Used to trigger \hyperlink{protocolthe-p}{the} generation or withdrawal of a network-\/LSA. Should only be called if \hyperlink{protocolthe-p}{the} interface is in state DR.


\begin{DoxyParams}{Parameters}
{\em up} & true if \hyperlink{protocolthe-p}{the} adjacency became full, false otherwise. \\
\hline
\end{DoxyParams}
\hypertarget{classPeer_ab90b2446043e674e5d61e981c71e59bf}{
\index{Peer@{Peer}!delete\_\-md5\_\-authentication\_\-key@{delete\_\-md5\_\-authentication\_\-key}}
\index{delete\_\-md5\_\-authentication\_\-key@{delete\_\-md5\_\-authentication\_\-key}!Peer@{Peer}}
\subsubsection[{delete\_\-md5\_\-authentication\_\-key}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Peer}$<$ A $>$::delete\_\-md5\_\-authentication\_\-key (
\begin{DoxyParamCaption}
\item[{uint8\_\-t}]{key\_\-id, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPeer_ab90b2446043e674e5d61e981c71e59bf}


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 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{classPeer_a8c3981c3840669edba8475b4d71b3fcf}{
\index{Peer@{Peer}!delete\_\-simple\_\-authentication\_\-key@{delete\_\-simple\_\-authentication\_\-key}}
\index{delete\_\-simple\_\-authentication\_\-key@{delete\_\-simple\_\-authentication\_\-key}!Peer@{Peer}}
\subsubsection[{delete\_\-simple\_\-authentication\_\-key}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Peer}$<$ A $>$::delete\_\-simple\_\-authentication\_\-key (
\begin{DoxyParamCaption}
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPeer_a8c3981c3840669edba8475b4d71b3fcf}


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 \hyperlink{protocolthe-p}{the}} & error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success, otherwise false. 
\end{DoxyReturn}
\hypertarget{classPeer_a4e1be40394c9d395162baf51409cfe84}{
\index{Peer@{Peer}!designated\_\-router\_\-changed@{designated\_\-router\_\-changed}}
\index{designated\_\-router\_\-changed@{designated\_\-router\_\-changed}!Peer@{Peer}}
\subsubsection[{designated\_\-router\_\-changed}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf Peer}$<$ A $>$::designated\_\-router\_\-changed (
\begin{DoxyParamCaption}
\item[{bool}]{yes}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPeer_a4e1be40394c9d395162baf51409cfe84}


Called when this peer becomes \hyperlink{protocolthe-p}{the} designated router or this peer was \hyperlink{protocolthe-p}{the} designated router. 


\begin{DoxyParams}{Parameters}
{\em yes} & true if \hyperlink{protocolthe-p}{the} peer became \hyperlink{protocolthe-p}{the} DR false if it is no longer \hyperlink{protocolthe-p}{the} DR. \\
\hline
\end{DoxyParams}
\hypertarget{classPeer_ab7bbdeade7d3a66bde86ab87722fe78e}{
\index{Peer@{Peer}!event\_\-bad\_\-link\_\-state\_\-request@{event\_\-bad\_\-link\_\-state\_\-request}}
\index{event\_\-bad\_\-link\_\-state\_\-request@{event\_\-bad\_\-link\_\-state\_\-request}!Peer@{Peer}}
\subsubsection[{event\_\-bad\_\-link\_\-state\_\-request}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Peer}$<$ A $>$::event\_\-bad\_\-link\_\-state\_\-request (
\begin{DoxyParamCaption}
\item[{const {\bf OspfTypes::NeighbourID}}]{nid}
\end{DoxyParamCaption}
) const}}
\label{classPeer_ab7bbdeade7d3a66bde86ab87722fe78e}


Generate a BadLSReq event. 


\begin{DoxyParams}{Parameters}
{\em nid} & \\
\hline
\end{DoxyParams}
\hypertarget{classPeer_a84c66164cc090fab7132f7910ccaaca8}{
\index{Peer@{Peer}!expiry\_\-secs@{expiry\_\-secs}}
\index{expiry\_\-secs@{expiry\_\-secs}!Peer@{Peer}}
\subsubsection[{expiry\_\-secs}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ uint32\_\-t {\bf Peer}$<$ A $>$::expiry\_\-secs (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classPeer_a84c66164cc090fab7132f7910ccaaca8}


Retrieve number of seconds before routes associated with this \hyperlink{classRouteEntryOrigin}{RouteEntryOrigin} should be marked as expired. 

A return value of 0 indicates routes are of infinite duration, eg static routes. 

Implements \hyperlink{classRouteEntryOrigin_aebd3e3b39e314d4394632b4f0b2cbe84}{RouteEntryOrigin$<$ A $>$}.

\hypertarget{classPeer_a294706d52a992c5fd0782f19e5e11310}{
\index{Peer@{Peer}!get\_\-area\_\-id@{get\_\-area\_\-id}}
\index{get\_\-area\_\-id@{get\_\-area\_\-id}!Peer@{Peer}}
\subsubsection[{get\_\-area\_\-id}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ {\bf OspfTypes::AreaID} {\bf Peer}$<$ A $>$::get\_\-area\_\-id (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPeer_a294706d52a992c5fd0782f19e5e11310}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} Area ID. 
\end{DoxyReturn}
\hypertarget{classPeer_a9a72b0496b9df4441b59be671c45d648}{
\index{Peer@{Peer}!get\_\-area\_\-type@{get\_\-area\_\-type}}
\index{get\_\-area\_\-type@{get\_\-area\_\-type}!Peer@{Peer}}
\subsubsection[{get\_\-area\_\-type}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ {\bf OspfTypes::AreaType} {\bf Peer}$<$ A $>$::get\_\-area\_\-type (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPeer_a9a72b0496b9df4441b59be671c45d648}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} Area Type. 
\end{DoxyReturn}
\hypertarget{classPeer_aff9faa72fc6a84f09039cc396c284452}{
\index{Peer@{Peer}!get\_\-candidate\_\-id@{get\_\-candidate\_\-id}}
\index{get\_\-candidate\_\-id@{get\_\-candidate\_\-id}!Peer@{Peer}}
\subsubsection[{get\_\-candidate\_\-id}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ static {\bf OspfTypes::RouterID} {\bf Peer}$<$ A $>$::get\_\-candidate\_\-id (
\begin{DoxyParamCaption}
\item[{A}]{, }
\item[{{\bf OspfTypes::RouterID}}]{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}static\mbox{]}}}}
\label{classPeer_aff9faa72fc6a84f09039cc396c284452}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} value that should be used for DR or BDR. In OSPFv2 its \hyperlink{protocolthe-p}{the} source address of \hyperlink{protocolthe-p}{the} interface. In OSPFv3 its \hyperlink{protocolthe-p}{the} router ID. 
\end{DoxyReturn}
\hypertarget{classPeer_a77f63ef1439b389251738ea9a3a844a9}{
\index{Peer@{Peer}!get\_\-candidate\_\-id@{get\_\-candidate\_\-id}}
\index{get\_\-candidate\_\-id@{get\_\-candidate\_\-id}!Peer@{Peer}}
\subsubsection[{get\_\-candidate\_\-id}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ {\bf OspfTypes::RouterID} {\bf Peer}$<$ A $>$::get\_\-candidate\_\-id (
\begin{DoxyParamCaption}
\item[{A}]{ = {\ttfamily A::ZERO()}}
\end{DoxyParamCaption}
) const}}
\label{classPeer_a77f63ef1439b389251738ea9a3a844a9}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} value that should be used for DR or BDR for this router In OSPFv2 its \hyperlink{protocolthe-p}{the} source address of \hyperlink{protocolthe-p}{the} interface. In OSPFv3 its \hyperlink{protocolthe-p}{the} router ID. 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? 
\end{DoxyReturn}
\hypertarget{classPeer_a9b64778b11b96476f4bfd13958778586}{
\index{Peer@{Peer}!get\_\-designated\_\-router\_\-interface\_\-id@{get\_\-designated\_\-router\_\-interface\_\-id}}
\index{get\_\-designated\_\-router\_\-interface\_\-id@{get\_\-designated\_\-router\_\-interface\_\-id}!Peer@{Peer}}
\subsubsection[{get\_\-designated\_\-router\_\-interface\_\-id}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ uint32\_\-t {\bf Peer}$<$ A $>$::get\_\-designated\_\-router\_\-interface\_\-id (
\begin{DoxyParamCaption}
\item[{A}]{ = {\ttfamily A::ZERO()}}
\end{DoxyParamCaption}
) const}}
\label{classPeer_a9b64778b11b96476f4bfd13958778586}


Get \hyperlink{protocolthe-p}{the} interface ID of \hyperlink{protocolthe-p}{the} designated router. 

OSPFv3 only. \hypertarget{classPeer_af9d1961b6a43666740ac8a0f1e467c97}{
\index{Peer@{Peer}!get\_\-frame\_\-size@{get\_\-frame\_\-size}}
\index{get\_\-frame\_\-size@{get\_\-frame\_\-size}!Peer@{Peer}}
\subsubsection[{get\_\-frame\_\-size}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ uint16\_\-t {\bf Peer}$<$ A $>$::get\_\-frame\_\-size (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPeer_af9d1961b6a43666740ac8a0f1e467c97}


The maximum size of an OSPF frame, \hyperlink{protocolthe-p}{the} MTU minus \hyperlink{protocolthe-p}{the} IP header. 

Also include any bytes that \hyperlink{protocolthe-p}{the} authentication scheme may use.

\begin{DoxyReturn}{Returns}
maximum frame size. 
\end{DoxyReturn}
\hypertarget{classPeer_a8cf32d0e8e531450e3822c160eacb842}{
\index{Peer@{Peer}!get\_\-inftransdelay@{get\_\-inftransdelay}}
\index{get\_\-inftransdelay@{get\_\-inftransdelay}!Peer@{Peer}}
\subsubsection[{get\_\-inftransdelay}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ uint16\_\-t {\bf Peer}$<$ A $>$::get\_\-inftransdelay (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPeer_a8cf32d0e8e531450e3822c160eacb842}
\begin{DoxyReturn}{Returns}
InfTransDelay 
\end{DoxyReturn}
\hypertarget{classPeer_a748d1c36172c54d3a14c3df593495db4}{
\index{Peer@{Peer}!get\_\-interface\_\-address@{get\_\-interface\_\-address}}
\index{get\_\-interface\_\-address@{get\_\-interface\_\-address}!Peer@{Peer}}
\subsubsection[{get\_\-interface\_\-address}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ A {\bf Peer}$<$ A $>$::get\_\-interface\_\-address (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPeer_a748d1c36172c54d3a14c3df593495db4}


\hyperlink{structAddress}{Address} of this interface/vif. 

\begin{DoxyReturn}{Returns}
interface/vif address. 
\end{DoxyReturn}
\hypertarget{classPeer_a5ab796ab9eb5d809add55836999f9048}{
\index{Peer@{Peer}!get\_\-interface\_\-mtu@{get\_\-interface\_\-mtu}}
\index{get\_\-interface\_\-mtu@{get\_\-interface\_\-mtu}!Peer@{Peer}}
\subsubsection[{get\_\-interface\_\-mtu}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ uint16\_\-t {\bf Peer}$<$ A $>$::get\_\-interface\_\-mtu (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPeer_a5ab796ab9eb5d809add55836999f9048}
\begin{DoxyReturn}{Returns}
mtu of this interface. 
\end{DoxyReturn}
\hypertarget{classPeer_a0dc37e9c1717214a7284ac1217351538}{
\index{Peer@{Peer}!get\_\-interface\_\-prefix\_\-length@{get\_\-interface\_\-prefix\_\-length}}
\index{get\_\-interface\_\-prefix\_\-length@{get\_\-interface\_\-prefix\_\-length}!Peer@{Peer}}
\subsubsection[{get\_\-interface\_\-prefix\_\-length}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ uint16\_\-t {\bf Peer}$<$ A $>$::get\_\-interface\_\-prefix\_\-length (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPeer_a0dc37e9c1717214a7284ac1217351538}
\begin{DoxyReturn}{Returns}
prefix length of this interface. 
\end{DoxyReturn}
\hypertarget{classPeer_a243db0ab756e4eb88fa323bf237e6d5a}{
\index{Peer@{Peer}!get\_\-linktype@{get\_\-linktype}}
\index{get\_\-linktype@{get\_\-linktype}!Peer@{Peer}}
\subsubsection[{get\_\-linktype}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ {\bf OspfTypes::LinkType} {\bf Peer}$<$ A $>$::get\_\-linktype (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPeer_a243db0ab756e4eb88fa323bf237e6d5a}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} link type. 
\end{DoxyReturn}
\hypertarget{classPeer_aef22a9e01b3f912d63e72982992c8f04}{
\index{Peer@{Peer}!get\_\-neighbour\_\-address@{get\_\-neighbour\_\-address}}
\index{get\_\-neighbour\_\-address@{get\_\-neighbour\_\-address}!Peer@{Peer}}
\subsubsection[{get\_\-neighbour\_\-address}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf Peer}$<$ A $>$::get\_\-neighbour\_\-address (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::RouterID}}]{rid, }
\item[{uint32\_\-t}]{interface\_\-id, }
\item[{A \&}]{neighbour\_\-address}
\end{DoxyParamCaption}
)}}
\label{classPeer_aef22a9e01b3f912d63e72982992c8f04}


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


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{classPeer_a6a0b5f32e796075a7f71df5dc00431bf}{
\index{Peer@{Peer}!go@{go}}
\index{go@{go}!Peer@{Peer}}
\subsubsection[{go}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf Peer}$<$ A $>$::go (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPeer_a6a0b5f32e796075a7f71df5dc00431bf}


Called once \hyperlink{protocolthe-p}{the} peer is configured and enabled. 

Can be called multiple times paired with shutdown(). \hypertarget{classPeer_a1d77cb09b482d53ec55a0669346537f3}{
\index{Peer@{Peer}!is\_\-BDR@{is\_\-BDR}}
\index{is\_\-BDR@{is\_\-BDR}!Peer@{Peer}}
\subsubsection[{is\_\-BDR}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Peer}$<$ A $>$::is\_\-BDR (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classPeer_a1d77cb09b482d53ec55a0669346537f3}
\begin{DoxyReturn}{Returns}
true if this router is \hyperlink{protocolthe-p}{the} BDR. 
\end{DoxyReturn}
\hypertarget{classPeer_a901066aa56dcf0faa9075c26447b5743}{
\index{Peer@{Peer}!is\_\-DR@{is\_\-DR}}
\index{is\_\-DR@{is\_\-DR}!Peer@{Peer}}
\subsubsection[{is\_\-DR}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Peer}$<$ A $>$::is\_\-DR (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classPeer_a901066aa56dcf0faa9075c26447b5743}
\begin{DoxyReturn}{Returns}
true if this router is \hyperlink{protocolthe-p}{the} DR. 
\end{DoxyReturn}
\hypertarget{classPeer_a0a9646972b7cc87d2a8dcf62d8f5cbc7}{
\index{Peer@{Peer}!is\_\-DR\_\-or\_\-BDR@{is\_\-DR\_\-or\_\-BDR}}
\index{is\_\-DR\_\-or\_\-BDR@{is\_\-DR\_\-or\_\-BDR}!Peer@{Peer}}
\subsubsection[{is\_\-DR\_\-or\_\-BDR}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Peer}$<$ A $>$::is\_\-DR\_\-or\_\-BDR (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classPeer_a0a9646972b7cc87d2a8dcf62d8f5cbc7}
\begin{DoxyReturn}{Returns}
true if this router is \hyperlink{protocolthe-p}{the} DR or BDR. 
\end{DoxyReturn}
\hypertarget{classPeer_a928e4f904a5aff7476671911ff754fe5}{
\index{Peer@{Peer}!is\_\-neighbour\_\-DR\_\-or\_\-BDR@{is\_\-neighbour\_\-DR\_\-or\_\-BDR}}
\index{is\_\-neighbour\_\-DR\_\-or\_\-BDR@{is\_\-neighbour\_\-DR\_\-or\_\-BDR}!Peer@{Peer}}
\subsubsection[{is\_\-neighbour\_\-DR\_\-or\_\-BDR}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Peer}$<$ A $>$::is\_\-neighbour\_\-DR\_\-or\_\-BDR (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::NeighbourID}}]{nid}
\end{DoxyParamCaption}
) const}}
\label{classPeer_a928e4f904a5aff7476671911ff754fe5}
\begin{DoxyReturn}{Returns}
true if this routers neighbour is \hyperlink{protocolthe-p}{the} DR or BDR. 
\end{DoxyReturn}
\hypertarget{classPeer_af5423799d72c278bedf777ba0c4cdc38}{
\index{Peer@{Peer}!neighbour\_\-at\_\-least\_\-two\_\-way@{neighbour\_\-at\_\-least\_\-two\_\-way}}
\index{neighbour\_\-at\_\-least\_\-two\_\-way@{neighbour\_\-at\_\-least\_\-two\_\-way}!Peer@{Peer}}
\subsubsection[{neighbour\_\-at\_\-least\_\-two\_\-way}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Peer}$<$ A $>$::neighbour\_\-at\_\-least\_\-two\_\-way (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::RouterID}}]{rid, }
\item[{bool \&}]{twoway}
\end{DoxyParamCaption}
)}}
\label{classPeer_af5423799d72c278bedf777ba0c4cdc38}


Get \hyperlink{protocolthe-p}{the} state of \hyperlink{protocolthe-p}{the} neighbour with \hyperlink{protocolthe-p}{the} specified router ID. 


\begin{DoxyParams}{Parameters}
{\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{classPeer_a3984537bca83ce1cfc1cb6f42693097b}{
\index{Peer@{Peer}!neighbours\_\-exchange\_\-or\_\-loading@{neighbours\_\-exchange\_\-or\_\-loading}}
\index{neighbours\_\-exchange\_\-or\_\-loading@{neighbours\_\-exchange\_\-or\_\-loading}!Peer@{Peer}}
\subsubsection[{neighbours\_\-exchange\_\-or\_\-loading}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Peer}$<$ A $>$::neighbours\_\-exchange\_\-or\_\-loading (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classPeer_a3984537bca83ce1cfc1cb6f42693097b}


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

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


Is this LSA on this neighbours link state request list. 


\begin{DoxyParams}{Parameters}
{\em nid} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if it is. 
\end{DoxyReturn}
\hypertarget{classPeer_a288b1d96733a4de12aac6608a16094db}{
\index{Peer@{Peer}!push\_\-routes@{push\_\-routes}}
\index{push\_\-routes@{push\_\-routes}!Peer@{Peer}}
\subsubsection[{push\_\-routes}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf Peer}$<$ A $>$::push\_\-routes (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classPeer_a288b1d96733a4de12aac6608a16094db}


\hyperlink{classPush}{Push} routes through \hyperlink{protocolthe-p}{the} system. 

This is needed to apply \hyperlink{protocolthe-p}{the} policy filters for re-\/filtering. \hypertarget{classPeer_a6d9a8b3681b7e461187aec77196fdc75}{
\index{Peer@{Peer}!queue\_\-lsa@{queue\_\-lsa}}
\index{queue\_\-lsa@{queue\_\-lsa}!Peer@{Peer}}
\subsubsection[{queue\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Peer}$<$ A $>$::queue\_\-lsa (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::PeerID}}]{peerid, }
\item[{{\bf OspfTypes::NeighbourID}}]{nid, }
\item[{{\bf Lsa::LsaRef}}]{lsar, }
\item[{bool \&}]{multicast\_\-on\_\-peer}
\end{DoxyParamCaption}
) const}}
\label{classPeer_a6d9a8b3681b7e461187aec77196fdc75}


Queue an LSA for transmission. 


\begin{DoxyParams}{Parameters}
{\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} & Did this LSA get multicast on this peer.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success. 
\end{DoxyReturn}
\hypertarget{classPeer_a3d66829c4decf88d800b6eebae8c4de3}{
\index{Peer@{Peer}!restart\_\-hello\_\-timer@{restart\_\-hello\_\-timer}}
\index{restart\_\-hello\_\-timer@{restart\_\-hello\_\-timer}!Peer@{Peer}}
\subsubsection[{restart\_\-hello\_\-timer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf Peer}$<$ A $>$::restart\_\-hello\_\-timer (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPeer_a3d66829c4decf88d800b6eebae8c4de3}


If \hyperlink{protocolthe-p}{the} hello timer is already running, then stop and start \hyperlink{protocolthe-p}{the} timer. 

Required when \hyperlink{protocolthe-p}{the} timer value is changed interactively. \hypertarget{classPeer_aa3760aa47eee95f5d0ee4078d229346b}{
\index{Peer@{Peer}!send\_\-delayed\_\-acks@{send\_\-delayed\_\-acks}}
\index{send\_\-delayed\_\-acks@{send\_\-delayed\_\-acks}!Peer@{Peer}}
\subsubsection[{send\_\-delayed\_\-acks}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf Peer}$<$ A $>$::send\_\-delayed\_\-acks (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::NeighbourID}}]{nid, }
\item[{list$<$ {\bf Lsa\_\-header} $>$ \&}]{ack}
\end{DoxyParamCaption}
)}}
\label{classPeer_aa3760aa47eee95f5d0ee4078d229346b}


\hyperlink{structSend}{Send} delayed ACKs. 


\begin{DoxyParams}{Parameters}
{\em nid} & \hyperlink{protocolthe-p}{the} neighbour that \hyperlink{protocolthe-p}{the} LSAs that are being acked arrived on. \\
\hline
{\em ack} & list of acks to send. \\
\hline
\end{DoxyParams}
\hypertarget{classPeer_a726d4d317ab523cf6892903f6c81250a}{
\index{Peer@{Peer}!send\_\-direct\_\-acks@{send\_\-direct\_\-acks}}
\index{send\_\-direct\_\-acks@{send\_\-direct\_\-acks}!Peer@{Peer}}
\subsubsection[{send\_\-direct\_\-acks}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf Peer}$<$ A $>$::send\_\-direct\_\-acks (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::NeighbourID}}]{nid, }
\item[{list$<$ {\bf Lsa\_\-header} $>$ \&}]{ack}
\end{DoxyParamCaption}
)}}
\label{classPeer_a726d4d317ab523cf6892903f6c81250a}


\hyperlink{structSend}{Send} direct ACKs. 


\begin{DoxyParams}{Parameters}
{\em nid} & \hyperlink{protocolthe-p}{the} neighbour that \hyperlink{protocolthe-p}{the} LSAs that are being acked arrived on. \\
\hline
{\em ack} & list of acks to send. \\
\hline
\end{DoxyParams}
\hypertarget{classPeer_a1bcf32ee5ba1dadfd5c13043d6dd09c2}{
\index{Peer@{Peer}!send\_\-lsa@{send\_\-lsa}}
\index{send\_\-lsa@{send\_\-lsa}!Peer@{Peer}}
\subsubsection[{send\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Peer}$<$ A $>$::send\_\-lsa (
\begin{DoxyParamCaption}
\item[{const {\bf OspfTypes::NeighbourID}}]{nid, }
\item[{{\bf Lsa::LsaRef}}]{lsar}
\end{DoxyParamCaption}
) const}}
\label{classPeer_a1bcf32ee5ba1dadfd5c13043d6dd09c2}


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

Do not place on retransmission list.


\begin{DoxyParams}{Parameters}
{\em nid} & \\
\hline
{\em lsar} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success 
\end{DoxyReturn}
\hypertarget{classPeer_a7d02be00d72ea178ec9e475618ec0b38}{
\index{Peer@{Peer}!set\_\-area\_\-type@{set\_\-area\_\-type}}
\index{set\_\-area\_\-type@{set\_\-area\_\-type}!Peer@{Peer}}
\subsubsection[{set\_\-area\_\-type}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ void {\bf Peer}$<$ A $>$::set\_\-area\_\-type (
\begin{DoxyParamCaption}
\item[{{\bf OspfTypes::AreaType}}]{area\_\-type}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPeer_a7d02be00d72ea178ec9e475618ec0b38}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} Area Type. 
\end{DoxyReturn}
\hypertarget{classPeer_a0070ff44fb922db520a43eb34595fb24}{
\index{Peer@{Peer}!set\_\-md5\_\-authentication\_\-key@{set\_\-md5\_\-authentication\_\-key}}
\index{set\_\-md5\_\-authentication\_\-key@{set\_\-md5\_\-authentication\_\-key}!Peer@{Peer}}
\subsubsection[{set\_\-md5\_\-authentication\_\-key}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Peer}$<$ A $>$::set\_\-md5\_\-authentication\_\-key (
\begin{DoxyParamCaption}
\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{classPeer_a0070ff44fb922db520a43eb34595fb24}


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 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{classPeer_a04302e46b362d0cc25d36ee1e809fae2}{
\index{Peer@{Peer}!set\_\-simple\_\-authentication\_\-key@{set\_\-simple\_\-authentication\_\-key}}
\index{set\_\-simple\_\-authentication\_\-key@{set\_\-simple\_\-authentication\_\-key}!Peer@{Peer}}
\subsubsection[{set\_\-simple\_\-authentication\_\-key}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Peer}$<$ A $>$::set\_\-simple\_\-authentication\_\-key (
\begin{DoxyParamCaption}
\item[{const string \&}]{password, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classPeer_a04302e46b362d0cc25d36ee1e809fae2}


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 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{classPeer_afd2587bd16064aa4f717734d7259c369}{
\index{Peer@{Peer}!shutdown@{shutdown}}
\index{shutdown@{shutdown}!Peer@{Peer}}
\subsubsection[{shutdown}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf Peer}$<$ A $>$::shutdown (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classPeer_afd2587bd16064aa4f717734d7259c369}


Will only execute if \hyperlink{classPeer_a6a0b5f32e796075a7f71df5dc00431bf}{go()} has been called. 

Can be called multiple times paired with \hyperlink{classPeer_a6a0b5f32e796075a7f71df5dc00431bf}{go()}. \hypertarget{classPeer_a1e32bbd439ee6faec9d8df03556dc24f}{
\index{Peer@{Peer}!update\_\-route@{update\_\-route}}
\index{update\_\-route@{update\_\-route}!Peer@{Peer}}
\subsubsection[{update\_\-route}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf Peer}$<$ A $>$::update\_\-route (
\begin{DoxyParamCaption}
\item[{const {\bf IPNet}$<$ A $>$ \&}]{net, }
\item[{const A \&}]{nexthop, }
\item[{uint32\_\-t}]{cost, }
\item[{uint32\_\-t}]{tag, }
\item[{const {\bf PolicyTags} \&}]{policytags}
\end{DoxyParamCaption}
)}}
\label{classPeer_a1e32bbd439ee6faec9d8df03556dc24f}


Update \hyperlink{classRoute}{Route} Entry in database for specified route. 


\begin{DoxyParams}{Parameters}
{\em net} & \hyperlink{protocolthe-p}{the} network route being updated. \\
\hline
{\em nexthop} & \hyperlink{protocolthe-p}{the} corresponding nexthop address. \\
\hline
{\em cost} & \hyperlink{protocolthe-p}{the} corresponding metric value as received from \hyperlink{protocolthe-p}{the} route originator. \\
\hline
{\em tag} & \hyperlink{protocolthe-p}{the} corresponding route tag. \\
\hline
{\em policytags} & \hyperlink{protocolthe-p}{the} policytags of this route. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if an update occurs, false otherwise. 
\end{DoxyReturn}
\hypertarget{classPeer_a2994df21d7a12abc4d4a7bc152a110b0}{
\index{Peer@{Peer}!update\_\-router\_\-links@{update\_\-router\_\-links}}
\index{update\_\-router\_\-links@{update\_\-router\_\-links}!Peer@{Peer}}
\subsubsection[{update\_\-router\_\-links}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf Peer}$<$ A $>$::update\_\-router\_\-links (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classPeer_a2994df21d7a12abc4d4a7bc152a110b0}


Compute \hyperlink{protocolthe-p}{the} current router link. 

Typically called after a state transition. \hypertarget{classPeer_a1d1504b085c994b8a84e4647d32ff0cc}{
\index{Peer@{Peer}!update\_\-router\_\-linksV2@{update\_\-router\_\-linksV2}}
\index{update\_\-router\_\-linksV2@{update\_\-router\_\-linksV2}!Peer@{Peer}}
\subsubsection[{update\_\-router\_\-linksV2}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ void {\bf Peer}$<$ A $>$::update\_\-router\_\-linksV2 (
\begin{DoxyParamCaption}
\item[{list$<$ {\bf RouterLink} $>$ \&}]{router\_\-links}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPeer_a1d1504b085c994b8a84e4647d32ff0cc}


Compute \hyperlink{protocolthe-p}{the} current router link for OSPFv2. 

Typically called after a state transition. \hypertarget{classPeer_a255f8afdd68dc3883c1be06688fb911a}{
\index{Peer@{Peer}!update\_\-router\_\-linksV3@{update\_\-router\_\-linksV3}}
\index{update\_\-router\_\-linksV3@{update\_\-router\_\-linksV3}!Peer@{Peer}}
\subsubsection[{update\_\-router\_\-linksV3}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ void {\bf Peer}$<$ A $>$::update\_\-router\_\-linksV3 (
\begin{DoxyParamCaption}
\item[{list$<$ {\bf RouterLink} $>$ \&}]{router\_\-links}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classPeer_a255f8afdd68dc3883c1be06688fb911a}


Compute \hyperlink{protocolthe-p}{the} current router link for OSPFv3. 

Typically called after a state transition. \hypertarget{classPeer_a75e74b3d84f8d7e953e6aec4f729b6a2}{
\index{Peer@{Peer}!virtual\_\-link\_\-endpoint@{virtual\_\-link\_\-endpoint}}
\index{virtual\_\-link\_\-endpoint@{virtual\_\-link\_\-endpoint}!Peer@{Peer}}
\subsubsection[{virtual\_\-link\_\-endpoint}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Peer}$<$ A $>$::virtual\_\-link\_\-endpoint (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classPeer_a75e74b3d84f8d7e953e6aec4f729b6a2}


Are any of neighbours of this peer 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/bgp/harness/peer.hh\item 
/home/greearb/git/xorp.ct.github/xorp/ospf/peer.hh\item 
/home/greearb/git/xorp.ct.github/xorp/rip/peer.hh\item 
/home/greearb/git/xorp.ct.github/xorp/bgp/harness/peer.cc\item 
/home/greearb/git/xorp.ct.github/xorp/ospf/peer.cc\item 
/home/greearb/git/xorp.ct.github/xorp/rip/peer.cc\end{DoxyCompactItemize}
