\hypertarget{classNeighbour}{
\section{Neighbour$<$ A $>$ Class Template Reference}
\label{classNeighbour}\index{Neighbour@{Neighbour}}
}


\hyperlink{classNeighbour}{Neighbour} specific information.  




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

\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
enum \hyperlink{classNeighbour_a79a3804faf6a32881e10e33f636b2a64}{State} \{ \par
{\bfseries Down} =  1, 
{\bfseries Attempt} =  2, 
{\bfseries Init} =  3, 
{\bfseries TwoWay} =  4, 
\par
{\bfseries ExStart} =  5, 
{\bfseries Exchange} =  6, 
{\bfseries Loading} =  7, 
{\bfseries Full} =  8
 \}
\begin{DoxyCompactList}\small\item\em The ordering is important (used in \hyperlink{protocolthe-p}{the} DR and BDR election). \item\end{DoxyCompactList}\item 
enum \hyperlink{classNeighbour_a86fe03ec4b0d0a59dab29f3ae7048a4b}{Timers} \{ {\bfseries INITIAL} =  0, 
{\bfseries FULL} =  1
 \}
\begin{DoxyCompactList}\small\item\em Index for timers. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighbour_addc46cf15a5430bbf4c333c0f925e48f}{
typedef XorpCallback0$<$ bool $>$::RefPtr {\bfseries RxmtCallback}}
\label{classNeighbour_addc46cf15a5430bbf4c333c0f925e48f}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classNeighbour_ab083a77d2fc41c6c4163abce153fa97e}{
\hyperlink{classNeighbour_ab083a77d2fc41c6c4163abce153fa97e}{Neighbour} (\hyperlink{classOspf}{Ospf}$<$ A $>$ \&ospf, \hyperlink{classPeer}{Peer}$<$ A $>$ \&peer, \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} router\_\-id, A neighbour\_\-address, \hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} neighbourid, \hyperlink{structOspfTypes_aa80e314cde7a3e8b749d3252c228f281}{OspfTypes::LinkType} linktype, \hyperlink{classNeighbour_a79a3804faf6a32881e10e33f636b2a64}{State} state=Init)}
\label{classNeighbour_ab083a77d2fc41c6c4163abce153fa97e}

\begin{DoxyCompactList}\small\item\em We start in Init not Down state as typically this class is created on demand when a hello packet arrives. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighbour_a4222da3cbcf8401a89e9f90d09194b6f}{
\hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} \hyperlink{classNeighbour_a4222da3cbcf8401a89e9f90d09194b6f}{get\_\-neighbour\_\-id} () const }
\label{classNeighbour_a4222da3cbcf8401a89e9f90d09194b6f}

\begin{DoxyCompactList}\small\item\em Get neighbour ID our internal ID for each neighbour. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighbour_a02c0d050d106cbbe89801c0d75d4fe5e}{
\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} \hyperlink{classNeighbour_a02c0d050d106cbbe89801c0d75d4fe5e}{get\_\-router\_\-id} () const }
\label{classNeighbour_a02c0d050d106cbbe89801c0d75d4fe5e}

\begin{DoxyCompactList}\small\item\em Neighbours router ID. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighbour_a9f3d37834c076565d89e6e4d51d5787e}{
A \hyperlink{classNeighbour_a9f3d37834c076565d89e6e4d51d5787e}{get\_\-neighbour\_\-address} () const }
\label{classNeighbour_a9f3d37834c076565d89e6e4d51d5787e}

\begin{DoxyCompactList}\small\item\em Neighbour's source address. \item\end{DoxyCompactList}\item 
\hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} \hyperlink{classNeighbour_a64fc3df07f18c4e4f30e5695d169d077}{get\_\-candidate\_\-id} () const 
\item 
\hypertarget{classNeighbour_a2d749a83d2409be48084f5e68aaccea0}{
\hyperlink{classNeighbour_a79a3804faf6a32881e10e33f636b2a64}{State} \hyperlink{classNeighbour_a2d749a83d2409be48084f5e68aaccea0}{get\_\-state} () const }
\label{classNeighbour_a2d749a83d2409be48084f5e68aaccea0}

\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} state of this neighbour. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighbour_a6b36a75166308ed69dcff7b15aa729d3}{
\hyperlink{classAuth}{Auth} \& \hyperlink{classNeighbour_a6b36a75166308ed69dcff7b15aa729d3}{get\_\-auth\_\-handler} ()}
\label{classNeighbour_a6b36a75166308ed69dcff7b15aa729d3}

\begin{DoxyCompactList}\small\item\em Return \hyperlink{protocolthe-p}{the} authentication handler. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighbour_a0a4dcc5189681f1116c13d6f30b31e75}{is\_\-neighbour\_\-DR} () const 
\item 
bool \hyperlink{classNeighbour_afd07dfab679035e0efbb3edb36f14812}{is\_\-neighbour\_\-DR\_\-or\_\-BDR} () const 
\item 
bool \hyperlink{classNeighbour_a1fd4e9fda2577a07c2a2c8d78a28ffee}{announce\_\-in\_\-hello\_\-packet} () const 
\begin{DoxyCompactList}\small\item\em Should this neighbour be announced in hello packet. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighbour_a61f172ea471cdcfdcdaacfc769f4e29f}{
\hyperlink{classHelloPacket}{HelloPacket} $\ast$ \hyperlink{classNeighbour_a61f172ea471cdcfdcdaacfc769f4e29f}{get\_\-hello\_\-packet} ()}
\label{classNeighbour_a61f172ea471cdcfdcdaacfc769f4e29f}

\begin{DoxyCompactList}\small\item\em Get a copy of \hyperlink{protocolthe-p}{the} last hello packet that was received. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighbour_a195f0313e1367089d6e6b8c09ecb2f85}{
\hyperlink{classHelloPacket}{HelloPacket} $\ast$ \hyperlink{classNeighbour_a195f0313e1367089d6e6b8c09ecb2f85}{get\_\-hello\_\-packet} () const }
\label{classNeighbour_a195f0313e1367089d6e6b8c09ecb2f85}

\begin{DoxyCompactList}\small\item\em Get a copy of \hyperlink{protocolthe-p}{the} last hello packet that was received. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighbour_ac84d04747c293a848f3e8d9b6dfd62e8}{
void \hyperlink{classNeighbour_ac84d04747c293a848f3e8d9b6dfd62e8}{event\_\-hello\_\-received} (\hyperlink{classHelloPacket}{HelloPacket} $\ast$hello)}
\label{classNeighbour_ac84d04747c293a848f3e8d9b6dfd62e8}

\begin{DoxyCompactList}\small\item\em RFC 2328 Section 10.5 Receiving Hello Packets, neighbour component. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighbour_a9c8d0bdc07ce14c09da326c120bfe96f}{
void \hyperlink{classNeighbour_a9c8d0bdc07ce14c09da326c120bfe96f}{data\_\-description\_\-received} (\hyperlink{classDataDescriptionPacket}{DataDescriptionPacket} $\ast$dd)}
\label{classNeighbour_a9c8d0bdc07ce14c09da326c120bfe96f}

\begin{DoxyCompactList}\small\item\em RFC 2328 Section 10.6 Receiving Database Description Packets, neighbour component. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighbour_af1fe374b9baff3e0e2440790605aad97}{link\_\-state\_\-request\_\-received} (\hyperlink{classLinkStateRequestPacket}{LinkStateRequestPacket} $\ast$lsrp)
\begin{DoxyCompactList}\small\item\em RFC 2328 Section 10.7. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighbour_a1760915f7985bddc51d1d95f3907813b}{
void {\bfseries link\_\-state\_\-update\_\-received} (\hyperlink{classLinkStateUpdatePacket}{LinkStateUpdatePacket} $\ast$lsup)}
\label{classNeighbour_a1760915f7985bddc51d1d95f3907813b}

\item 
\hypertarget{classNeighbour_ae3bcee89f641d6235fac5025137d93d9}{
void {\bfseries link\_\-state\_\-acknowledgement\_\-received} (\hyperlink{classLinkStateAcknowledgementPacket}{LinkStateAcknowledgementPacket} $\ast$lsap)}
\label{classNeighbour_ae3bcee89f641d6235fac5025137d93d9}

\item 
bool \hyperlink{classNeighbour_a4f2c7107eb85a8ca967f0cb7ff53b6c1}{send\_\-lsa} (\hyperlink{classref__ptr}{Lsa::LsaRef} lsar)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} this LSA directly to \hyperlink{protocolthe-p}{the} neighbour. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighbour_a8abb27d16f7c5aa6be5217bb4cca5919}{queue\_\-lsa} (\hyperlink{structOspfTypes_a7b2f7f140158710a1b85588be80ca64d}{OspfTypes::PeerID} peerid, \hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} nid, \hyperlink{classref__ptr}{Lsa::LsaRef} lsar, bool \&multicast\_\-on\_\-peer)
\begin{DoxyCompactList}\small\item\em Queue an LSA for transmission. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighbour_ad9858091069ff2ec96a79b68b81427d3}{
bool \hyperlink{classNeighbour_ad9858091069ff2ec96a79b68b81427d3}{push\_\-lsas} (const char $\ast$message)}
\label{classNeighbour_ad9858091069ff2ec96a79b68b81427d3}

\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} (push) any queued LSAs. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighbour_a9dce8d0c1966670806ac2d1efbfc2b68}{on\_\-link\_\-state\_\-request\_\-list} (\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 
\hyperlink{structOspfTypes_aa80e314cde7a3e8b749d3252c228f281}{OspfTypes::LinkType} \hyperlink{classNeighbour_a8fd523a860337bb033e356309e46b099}{get\_\-linktype} () const 
\item 
bool \hyperlink{classNeighbour_a7a5a17a9b22c3e56346deeae041204d9}{send\_\-ack} (list$<$ \hyperlink{classLsa__header}{Lsa\_\-header} $>$ \&ack, bool direct, bool \&multicast\_\-on\_\-peer)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} acknowledgement. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighbour_aa009c9d5e03b1a8b841c75335049b4a4}{
void {\bfseries event\_\-kill\_\-neighbour} ()}
\label{classNeighbour_aa009c9d5e03b1a8b841c75335049b4a4}

\item 
\hypertarget{classNeighbour_a8835f4a9b7098c38c0fbf24105665aae}{
void {\bfseries event\_\-adj\_\-ok} ()}
\label{classNeighbour_a8835f4a9b7098c38c0fbf24105665aae}

\item 
\hypertarget{classNeighbour_aba5fbfe2853e2871f198a05874a01c7a}{
void {\bfseries event\_\-bad\_\-link\_\-state\_\-request} ()}
\label{classNeighbour_aba5fbfe2853e2871f198a05874a01c7a}

\item 
bool \hyperlink{classNeighbour_a63921aa526734f2b810f808bcc8537b4}{get\_\-neighbour\_\-info} (\hyperlink{structNeighbourInfo}{NeighbourInfo} \&ninfo) const 
\begin{DoxyCompactList}\small\item\em Get state information about this neighbour. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighbour_a86cfac9c2cf6525299b88193674f74dc}{
string {\bfseries str} ()}
\label{classNeighbour_a86cfac9c2cf6525299b88193674f74dc}

\item 
\hypertarget{classNeighbour_a00d0212e94bd2e3ea599f6a67e7d6472}{
{\footnotesize template$<$$>$ }\\\hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} {\bfseries \_\-ticket}}
\label{classNeighbour_a00d0212e94bd2e3ea599f6a67e7d6472}

\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classNeighbour_a82731be042aba8d4c4f643dd462b4327}{
static const char $\ast$ \hyperlink{classNeighbour_a82731be042aba8d4c4f643dd462b4327}{pp\_\-state} (\hyperlink{classNeighbour_a79a3804faf6a32881e10e33f636b2a64}{State} is)}
\label{classNeighbour_a82731be042aba8d4c4f643dd462b4327}

\begin{DoxyCompactList}\small\item\em Pretty print \hyperlink{protocolthe-p}{the} neighbour state. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Static Public Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classNeighbour_a8c74149f9853e437d023c02a17ef17be}{
static const uint32\_\-t {\bfseries TIMERS} = 2}
\label{classNeighbour_a8c74149f9853e437d023c02a17ef17be}

\item 
\hypertarget{classNeighbour_a17d9d9d2d77c5056da8af7bb474bcddc}{
static \hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} {\bfseries \_\-ticket}}
\label{classNeighbour_a17d9d9d2d77c5056da8af7bb474bcddc}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classNeighbour_add2760b59986b160a21f4d5806cff9af}{
\hyperlink{classAreaRouter}{AreaRouter}$<$ A $>$ $\ast$ \hyperlink{classNeighbour_add2760b59986b160a21f4d5806cff9af}{get\_\-area\_\-router} ()}
\label{classNeighbour_add2760b59986b160a21f4d5806cff9af}

\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} area router. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighbour_a137662fa5ebd822a8e029ed835dd2dab}{
void \hyperlink{classNeighbour_a137662fa5ebd822a8e029ed835dd2dab}{change\_\-state} (\hyperlink{classNeighbour_a79a3804faf6a32881e10e33f636b2a64}{State} state)}
\label{classNeighbour_a137662fa5ebd822a8e029ed835dd2dab}

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

\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} state of this neighbour. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighbour_a4be64452b34f75f3a7ac35f5281ec9e5}{establish\_\-adjacency\_\-p} () const 
\begin{DoxyCompactList}\small\item\em RFC 2328 Section 10.4. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighbour_aa7ef93ec9ede4059f673727e3bd3e753}{is\_\-DR} () const 
\item 
bool \hyperlink{classNeighbour_a4678c4b44effae750fbaee5d4dc7ed26}{is\_\-BDR} () const 
\item 
bool \hyperlink{classNeighbour_a72e7c425695962cc17094628ef222a65}{is\_\-DR\_\-or\_\-BDR} () const 
\item 
void \hyperlink{classNeighbour_a7f322ff812e6d279a3acdd46f6a9c192}{start\_\-inactivity\_\-timer} ()
\begin{DoxyCompactList}\small\item\em Start \hyperlink{protocolthe-p}{the} inactivity timer. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighbour_ace762ddffc597576de1256d538225a29}{stop\_\-inactivity\_\-timer} ()
\begin{DoxyCompactList}\small\item\em Stop \hyperlink{protocolthe-p}{the} inactivity timer. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighbour_a1a30530b7bab3801e2441dede6018c8a}{start\_\-rxmt\_\-timer} (uint32\_\-t index, RxmtCallback, bool immediate, const char $\ast$comment)
\begin{DoxyCompactList}\small\item\em Start \hyperlink{protocolthe-p}{the} retransmit timer. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighbour_a032e48311b4e4082332a56ee4fae421b}{stop\_\-rxmt\_\-timer} (uint32\_\-t index, const char $\ast$comment)
\begin{DoxyCompactList}\small\item\em Stop \hyperlink{protocolthe-p}{the} retransmit timer. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighbour_acdf9487d96a06a73ca354eea7fe0ce70}{ensure\_\-retransmitter\_\-running} (const char $\ast$comment)
\begin{DoxyCompactList}\small\item\em Ensure that \hyperlink{protocolthe-p}{the} LSA retransmitter is running. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighbour_a6223024cf57766c6bb1c59f6f905aad3}{retransmitter} ()
\begin{DoxyCompactList}\small\item\em Retransmit link state request and link state update packets. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighbour_aac33d580db3f3798d4604cf9937e276a}{
void \hyperlink{classNeighbour_aac33d580db3f3798d4604cf9937e276a}{build\_\-data\_\-description\_\-packet} ()}
\label{classNeighbour_aac33d580db3f3798d4604cf9937e276a}

\begin{DoxyCompactList}\small\item\em Build database description packet. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighbour_a4eb71d7c39e444a4ff0005790bf2926d}{
bool \hyperlink{classNeighbour_a4eb71d7c39e444a4ff0005790bf2926d}{send\_\-data\_\-description\_\-packet} ()}
\label{classNeighbour_a4eb71d7c39e444a4ff0005790bf2926d}

\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} database description packet. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighbour_aef0dc075ba978aeda4d8746556b53389}{start\_\-sending\_\-data\_\-description\_\-packets} (const char $\ast$event\_\-name, bool immediate=true)
\begin{DoxyCompactList}\small\item\em Start sending data description packets. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighbour_a8ae652421768f5bae636bedebe257603}{extract\_\-lsa\_\-headers} (\hyperlink{classDataDescriptionPacket}{DataDescriptionPacket} $\ast$dd)
\begin{DoxyCompactList}\small\item\em Extract \hyperlink{protocolthe-p}{the} list of LSA headers for future requests from \hyperlink{protocolthe-p}{the} neighbour. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighbour_ad5fb4232f1525bc4c15c6ee196d40229}{
bool \hyperlink{classNeighbour_ad5fb4232f1525bc4c15c6ee196d40229}{send\_\-link\_\-state\_\-request\_\-packet} (\hyperlink{classLinkStateRequestPacket}{LinkStateRequestPacket} \&lsrp)}
\label{classNeighbour_ad5fb4232f1525bc4c15c6ee196d40229}

\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} link state request packet. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighbour_a6cf5f2acf149cafceb5824f1925cacb4}{send\_\-link\_\-state\_\-update\_\-packet} (\hyperlink{classLinkStateUpdatePacket}{LinkStateUpdatePacket} \&lsup, bool direct=false)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} link state update packet. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighbour_a0f262dffee3b71cc1a8f0bb33307ebe3}{send\_\-link\_\-state\_\-ack\_\-packet} (\hyperlink{classLinkStateAcknowledgementPacket}{LinkStateAcknowledgementPacket} \&lsap, bool direct, bool \&multicast\_\-on\_\-peer)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} link state ack packet. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighbour_a5fde325a260ccd0aa3eda5efaa126bb2}{tear\_\-down\_\-state} (\hyperlink{classNeighbour_a79a3804faf6a32881e10e33f636b2a64}{State} previous\_\-state)
\begin{DoxyCompactList}\small\item\em The state has just dropped so pull out any state associated with a higher state. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighbour_ae55ac926704b3ea66c52175c043fc7a5}{
void {\bfseries event\_\-1\_\-way\_\-received} ()}
\label{classNeighbour_ae55ac926704b3ea66c52175c043fc7a5}

\item 
\hypertarget{classNeighbour_a9531a6a65803ae8ce8a815345e0f919b}{
void {\bfseries event\_\-2\_\-way\_\-received} ()}
\label{classNeighbour_a9531a6a65803ae8ce8a815345e0f919b}

\item 
\hypertarget{classNeighbour_ae2e02f2a33c058d7721ae4825651327c}{
void {\bfseries event\_\-negotiation\_\-done} ()}
\label{classNeighbour_ae2e02f2a33c058d7721ae4825651327c}

\item 
\hypertarget{classNeighbour_a44af39a3487806ea82c04b63e3f703de}{
void {\bfseries event\_\-sequence\_\-number\_\-mismatch} ()}
\label{classNeighbour_a44af39a3487806ea82c04b63e3f703de}

\item 
\hypertarget{classNeighbour_a19982af0f4503abd63c3674665695a3c}{
void {\bfseries event\_\-exchange\_\-done} ()}
\label{classNeighbour_a19982af0f4503abd63c3674665695a3c}

\item 
\hypertarget{classNeighbour_a8a4679d94a132de24e77f6c2fbe37a02}{
void {\bfseries event\_\-loading\_\-done} ()}
\label{classNeighbour_a8a4679d94a132de24e77f6c2fbe37a02}

\item 
\hypertarget{classNeighbour_aed67367a2e4aa7e2efc2575462b50767}{
void {\bfseries event\_\-inactivity\_\-timer} ()}
\label{classNeighbour_aed67367a2e4aa7e2efc2575462b50767}

\item 
\hypertarget{classNeighbour_a3742a267cb43742b6129c1e07db0a150}{
void \hyperlink{classNeighbour_a3742a267cb43742b6129c1e07db0a150}{event\_\-SequenceNumberMismatch\_\-or\_\-BadLSReq} (const char $\ast$event\_\-name)}
\label{classNeighbour_a3742a267cb43742b6129c1e07db0a150}

\begin{DoxyCompactList}\small\item\em Common code for: Sequence Number Mismatch and Bad Link State Request. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classNeighbour_aa0054699a93e946233156f70c575979a}{
\hyperlink{classOspf}{Ospf}$<$ A $>$ \& {\bfseries \_\-ospf}}
\label{classNeighbour_aa0054699a93e946233156f70c575979a}

\item 
\hypertarget{classNeighbour_afb61ee6c837bf54ae7962c4ee42bee1f}{
\hyperlink{classPeer}{Peer}$<$ A $>$ \& {\bfseries \_\-peer}}
\label{classNeighbour_afb61ee6c837bf54ae7962c4ee42bee1f}

\item 
\hypertarget{classNeighbour_aee28ee740fb6dc2fda3e1adc23a4e07e}{
const \hyperlink{structOspfTypes_a8fc36f0cbcee50cfdb0d10b192aaa53a}{OspfTypes::RouterID} {\bfseries \_\-router\_\-id}}
\label{classNeighbour_aee28ee740fb6dc2fda3e1adc23a4e07e}

\item 
\hypertarget{classNeighbour_a6427839684b188c48011cbe2cba2398e}{
const A {\bfseries \_\-neighbour\_\-address}}
\label{classNeighbour_a6427839684b188c48011cbe2cba2398e}

\item 
\hypertarget{classNeighbour_a9314b7bfb4f41816d1737b2cf86f461c}{
const \hyperlink{structOspfTypes_ab410d0371b8456f91ff133e6edf9da3f}{OspfTypes::NeighbourID} {\bfseries \_\-neighbourid}}
\label{classNeighbour_a9314b7bfb4f41816d1737b2cf86f461c}

\item 
\hypertarget{classNeighbour_ae83192610214cd05b8d378acb59f7c29}{
const \hyperlink{structOspfTypes_aa80e314cde7a3e8b749d3252c228f281}{OspfTypes::LinkType} {\bfseries \_\-linktype}}
\label{classNeighbour_ae83192610214cd05b8d378acb59f7c29}

\item 
\hypertarget{classNeighbour_a380d8eb8041acf475bd29022d5cf3b4e}{
\hyperlink{classNeighbour_a79a3804faf6a32881e10e33f636b2a64}{State} {\bfseries \_\-state}}
\label{classNeighbour_a380d8eb8041acf475bd29022d5cf3b4e}

\item 
\hypertarget{classNeighbour_aba0a0a26ea1f750e129eada16adc3809}{
\hyperlink{classHelloPacket}{HelloPacket} $\ast$ {\bfseries \_\-hello\_\-packet}}
\label{classNeighbour_aba0a0a26ea1f750e129eada16adc3809}

\item 
\hypertarget{classNeighbour_ab9336cbe7cdcc3511ad7859b66e29ef6}{
\hyperlink{classDataDescriptionPacket}{DataDescriptionPacket} {\bfseries \_\-last\_\-dd}}
\label{classNeighbour_ab9336cbe7cdcc3511ad7859b66e29ef6}

\item 
\hypertarget{classNeighbour_a04fc21e6bfe219f07b7b3bac9641cfc2}{
\hyperlink{classDataDescriptionPacket}{DataDescriptionPacket} {\bfseries \_\-data\_\-description\_\-packet}}
\label{classNeighbour_a04fc21e6bfe219f07b7b3bac9641cfc2}

\item 
\hypertarget{classNeighbour_ae677c1d62a632a9dc9055d2697e535a7}{
bool {\bfseries \_\-all\_\-headers\_\-sent}}
\label{classNeighbour_ae677c1d62a632a9dc9055d2697e535a7}

\item 
\hypertarget{classNeighbour_a22a6706ce10e892edbd4a4ba95ed08cd}{
\hyperlink{classXorpTimer}{XorpTimer} {\bfseries \_\-rxmt\_\-timer} \mbox{[}TIMERS\mbox{]}}
\label{classNeighbour_a22a6706ce10e892edbd4a4ba95ed08cd}

\item 
\hypertarget{classNeighbour_a33b83ef7bda466b9e525884df5af6c4a}{
\hyperlink{classRxmtWrapper}{RxmtWrapper} $\ast$ {\bfseries \_\-rxmt\_\-wrapper} \mbox{[}TIMERS\mbox{]}}
\label{classNeighbour_a33b83ef7bda466b9e525884df5af6c4a}

\item 
\hypertarget{classNeighbour_a064ffa48d3b529080743b3b2e9543608}{
\hyperlink{classDataBaseHandle}{DataBaseHandle} {\bfseries \_\-database\_\-handle}}
\label{classNeighbour_a064ffa48d3b529080743b3b2e9543608}

\item 
\hypertarget{classNeighbour_aaeca19b18d18c9695638fc0bb71a5b41}{
list$<$ \hyperlink{classLsa__header}{Lsa\_\-header} $>$ {\bfseries \_\-ls\_\-request\_\-list}}
\label{classNeighbour_aaeca19b18d18c9695638fc0bb71a5b41}

\item 
\hypertarget{classNeighbour_abf3675fee861d9572efdab9335a15361}{
list$<$ \hyperlink{classref__ptr}{Lsa::LsaRef} $>$ {\bfseries \_\-lsa\_\-queue}}
\label{classNeighbour_abf3675fee861d9572efdab9335a15361}

\item 
\hypertarget{classNeighbour_a83c9926f7773f89b1c987919ba565b8c}{
list$<$ \hyperlink{classref__ptr}{Lsa::LsaRef} $>$ {\bfseries \_\-lsa\_\-rxmt}}
\label{classNeighbour_a83c9926f7773f89b1c987919ba565b8c}

\item 
\hypertarget{classNeighbour_aa63a3f49cfd7bfa9c2552fee2c53fb9e}{
\hyperlink{classXorpTimer}{XorpTimer} {\bfseries \_\-inactivity\_\-timer}}
\label{classNeighbour_aa63a3f49cfd7bfa9c2552fee2c53fb9e}

\item 
\hypertarget{classNeighbour_ae8d6d6dbd69b2e297b767088a1ea0bed}{
\hyperlink{classTimeVal}{TimeVal} {\bfseries \_\-creation\_\-time}}
\label{classNeighbour_ae8d6d6dbd69b2e297b767088a1ea0bed}

\item 
\hypertarget{classNeighbour_af14decc87d06a16276770e5c1e307291}{
\hyperlink{classTimeVal}{TimeVal} {\bfseries \_\-adjacency\_\-time}}
\label{classNeighbour_af14decc87d06a16276770e5c1e307291}

\end{DoxyCompactItemize}


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

\hyperlink{classNeighbour}{Neighbour} specific information. 

\subsection{Member Function Documentation}
\hypertarget{classNeighbour_a1fd4e9fda2577a07c2a2c8d78a28ffee}{
\index{Neighbour@{Neighbour}!announce\_\-in\_\-hello\_\-packet@{announce\_\-in\_\-hello\_\-packet}}
\index{announce\_\-in\_\-hello\_\-packet@{announce\_\-in\_\-hello\_\-packet}!Neighbour@{Neighbour}}
\subsubsection[{announce\_\-in\_\-hello\_\-packet}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ bool {\bf Neighbour}$<$ A $>$::announce\_\-in\_\-hello\_\-packet (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classNeighbour_a1fd4e9fda2577a07c2a2c8d78a28ffee}


Should this neighbour be announced in hello packet. 

\begin{DoxyReturn}{Returns}
true if it should. 
\end{DoxyReturn}
\hypertarget{classNeighbour_acdf9487d96a06a73ca354eea7fe0ce70}{
\index{Neighbour@{Neighbour}!ensure\_\-retransmitter\_\-running@{ensure\_\-retransmitter\_\-running}}
\index{ensure\_\-retransmitter\_\-running@{ensure\_\-retransmitter\_\-running}!Neighbour@{Neighbour}}
\subsubsection[{ensure\_\-retransmitter\_\-running}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf Neighbour}$<$ A $>$::ensure\_\-retransmitter\_\-running (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{comment}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighbour_acdf9487d96a06a73ca354eea7fe0ce70}


Ensure that \hyperlink{protocolthe-p}{the} LSA retransmitter is running. 

If there is an existing timer, make no changes, otherwise start a new timer running. \hypertarget{classNeighbour_a4be64452b34f75f3a7ac35f5281ec9e5}{
\index{Neighbour@{Neighbour}!establish\_\-adjacency\_\-p@{establish\_\-adjacency\_\-p}}
\index{establish\_\-adjacency\_\-p@{establish\_\-adjacency\_\-p}!Neighbour@{Neighbour}}
\subsubsection[{establish\_\-adjacency\_\-p}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Neighbour}$<$ A $>$::establish\_\-adjacency\_\-p (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighbour_a4be64452b34f75f3a7ac35f5281ec9e5}


RFC 2328 Section 10.4. 

\begin{DoxyReturn}{Returns}
true if an adjacency should be established with this neighbour
\end{DoxyReturn}
Whether to become adjacent \hypertarget{classNeighbour_a8ae652421768f5bae636bedebe257603}{
\index{Neighbour@{Neighbour}!extract\_\-lsa\_\-headers@{extract\_\-lsa\_\-headers}}
\index{extract\_\-lsa\_\-headers@{extract\_\-lsa\_\-headers}!Neighbour@{Neighbour}}
\subsubsection[{extract\_\-lsa\_\-headers}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Neighbour}$<$ A $>$::extract\_\-lsa\_\-headers (
\begin{DoxyParamCaption}
\item[{{\bf DataDescriptionPacket} $\ast$}]{dd}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighbour_a8ae652421768f5bae636bedebe257603}


Extract \hyperlink{protocolthe-p}{the} list of LSA headers for future requests from \hyperlink{protocolthe-p}{the} neighbour. 

\begin{DoxyReturn}{Returns}
false if an unknown LS type is encountered or if an AS-\/External-\/LSA appears in a non-\/normal area, otherwise true. 
\end{DoxyReturn}
\hypertarget{classNeighbour_a64fc3df07f18c4e4f30e5695d169d077}{
\index{Neighbour@{Neighbour}!get\_\-candidate\_\-id@{get\_\-candidate\_\-id}}
\index{get\_\-candidate\_\-id@{get\_\-candidate\_\-id}!Neighbour@{Neighbour}}
\subsubsection[{get\_\-candidate\_\-id}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ {\bf OspfTypes::RouterID} {\bf Neighbour}$<$ A $>$::get\_\-candidate\_\-id (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classNeighbour_a64fc3df07f18c4e4f30e5695d169d077}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} value that should be used for DR or BDR for this neighbour 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{classNeighbour_a8fd523a860337bb033e356309e46b099}{
\index{Neighbour@{Neighbour}!get\_\-linktype@{get\_\-linktype}}
\index{get\_\-linktype@{get\_\-linktype}!Neighbour@{Neighbour}}
\subsubsection[{get\_\-linktype}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A$>$ {\bf OspfTypes::LinkType} {\bf Neighbour}$<$ A $>$::get\_\-linktype (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classNeighbour_a8fd523a860337bb033e356309e46b099}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} link type. 
\end{DoxyReturn}
\hypertarget{classNeighbour_a63921aa526734f2b810f808bcc8537b4}{
\index{Neighbour@{Neighbour}!get\_\-neighbour\_\-info@{get\_\-neighbour\_\-info}}
\index{get\_\-neighbour\_\-info@{get\_\-neighbour\_\-info}!Neighbour@{Neighbour}}
\subsubsection[{get\_\-neighbour\_\-info}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Neighbour}$<$ A $>$::get\_\-neighbour\_\-info (
\begin{DoxyParamCaption}
\item[{{\bf NeighbourInfo} \&}]{ninfo}
\end{DoxyParamCaption}
) const}}
\label{classNeighbour_a63921aa526734f2b810f808bcc8537b4}


Get state information about this neighbour. 


\begin{DoxyParams}{Parameters}
{\em ninfo} & if neighbour is found its information. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighbour_a4678c4b44effae750fbaee5d4dc7ed26}{
\index{Neighbour@{Neighbour}!is\_\-BDR@{is\_\-BDR}}
\index{is\_\-BDR@{is\_\-BDR}!Neighbour@{Neighbour}}
\subsubsection[{is\_\-BDR}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Neighbour}$<$ A $>$::is\_\-BDR (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighbour_a4678c4b44effae750fbaee5d4dc7ed26}
\begin{DoxyReturn}{Returns}
true if this router is \hyperlink{protocolthe-p}{the} BDR. 
\end{DoxyReturn}
\hypertarget{classNeighbour_aa7ef93ec9ede4059f673727e3bd3e753}{
\index{Neighbour@{Neighbour}!is\_\-DR@{is\_\-DR}}
\index{is\_\-DR@{is\_\-DR}!Neighbour@{Neighbour}}
\subsubsection[{is\_\-DR}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Neighbour}$<$ A $>$::is\_\-DR (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighbour_aa7ef93ec9ede4059f673727e3bd3e753}
\begin{DoxyReturn}{Returns}
true if this router is \hyperlink{protocolthe-p}{the} DR. 
\end{DoxyReturn}
\hypertarget{classNeighbour_a72e7c425695962cc17094628ef222a65}{
\index{Neighbour@{Neighbour}!is\_\-DR\_\-or\_\-BDR@{is\_\-DR\_\-or\_\-BDR}}
\index{is\_\-DR\_\-or\_\-BDR@{is\_\-DR\_\-or\_\-BDR}!Neighbour@{Neighbour}}
\subsubsection[{is\_\-DR\_\-or\_\-BDR}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Neighbour}$<$ A $>$::is\_\-DR\_\-or\_\-BDR (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighbour_a72e7c425695962cc17094628ef222a65}
\begin{DoxyReturn}{Returns}
true if this router is \hyperlink{protocolthe-p}{the} DR or BDR. 
\end{DoxyReturn}
\hypertarget{classNeighbour_a0a4dcc5189681f1116c13d6f30b31e75}{
\index{Neighbour@{Neighbour}!is\_\-neighbour\_\-DR@{is\_\-neighbour\_\-DR}}
\index{is\_\-neighbour\_\-DR@{is\_\-neighbour\_\-DR}!Neighbour@{Neighbour}}
\subsubsection[{is\_\-neighbour\_\-DR}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Neighbour}$<$ A $>$::is\_\-neighbour\_\-DR (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classNeighbour_a0a4dcc5189681f1116c13d6f30b31e75}
\begin{DoxyReturn}{Returns}
true if this routers neighbour is \hyperlink{protocolthe-p}{the} DR. 
\end{DoxyReturn}
\hypertarget{classNeighbour_afd07dfab679035e0efbb3edb36f14812}{
\index{Neighbour@{Neighbour}!is\_\-neighbour\_\-DR\_\-or\_\-BDR@{is\_\-neighbour\_\-DR\_\-or\_\-BDR}}
\index{is\_\-neighbour\_\-DR\_\-or\_\-BDR@{is\_\-neighbour\_\-DR\_\-or\_\-BDR}!Neighbour@{Neighbour}}
\subsubsection[{is\_\-neighbour\_\-DR\_\-or\_\-BDR}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Neighbour}$<$ A $>$::is\_\-neighbour\_\-DR\_\-or\_\-BDR (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}}
\label{classNeighbour_afd07dfab679035e0efbb3edb36f14812}
\begin{DoxyReturn}{Returns}
true if this routers neighbour is \hyperlink{protocolthe-p}{the} DR or BDR. 
\end{DoxyReturn}
\hypertarget{classNeighbour_af1fe374b9baff3e0e2440790605aad97}{
\index{Neighbour@{Neighbour}!link\_\-state\_\-request\_\-received@{link\_\-state\_\-request\_\-received}}
\index{link\_\-state\_\-request\_\-received@{link\_\-state\_\-request\_\-received}!Neighbour@{Neighbour}}
\subsubsection[{link\_\-state\_\-request\_\-received}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf Neighbour}$<$ A $>$::link\_\-state\_\-request\_\-received (
\begin{DoxyParamCaption}
\item[{{\bf LinkStateRequestPacket} $\ast$}]{lsrp}
\end{DoxyParamCaption}
)}}
\label{classNeighbour_af1fe374b9baff3e0e2440790605aad97}


RFC 2328 Section 10.7. 

Receiving Link State Request Packets \hypertarget{classNeighbour_a9dce8d0c1966670806ac2d1efbfc2b68}{
\index{Neighbour@{Neighbour}!on\_\-link\_\-state\_\-request\_\-list@{on\_\-link\_\-state\_\-request\_\-list}}
\index{on\_\-link\_\-state\_\-request\_\-list@{on\_\-link\_\-state\_\-request\_\-list}!Neighbour@{Neighbour}}
\subsubsection[{on\_\-link\_\-state\_\-request\_\-list}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Neighbour}$<$ A $>$::on\_\-link\_\-state\_\-request\_\-list (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{lsar}
\end{DoxyParamCaption}
) const}}
\label{classNeighbour_a9dce8d0c1966670806ac2d1efbfc2b68}


Is this LSA on this neighbours link state request list. 

\begin{DoxyReturn}{Returns}
true if it is. 
\end{DoxyReturn}
\hypertarget{classNeighbour_a8abb27d16f7c5aa6be5217bb4cca5919}{
\index{Neighbour@{Neighbour}!queue\_\-lsa@{queue\_\-lsa}}
\index{queue\_\-lsa@{queue\_\-lsa}!Neighbour@{Neighbour}}
\subsubsection[{queue\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Neighbour}$<$ 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}
)}}
\label{classNeighbour_a8abb27d16f7c5aa6be5217bb4cca5919}


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


Retransmit link state request and link state update packets. 

\begin{DoxyReturn}{Returns}
true if there are more retransmissions to perform. 
\end{DoxyReturn}
\hypertarget{classNeighbour_a7a5a17a9b22c3e56346deeae041204d9}{
\index{Neighbour@{Neighbour}!send\_\-ack@{send\_\-ack}}
\index{send\_\-ack@{send\_\-ack}!Neighbour@{Neighbour}}
\subsubsection[{send\_\-ack}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Neighbour}$<$ A $>$::send\_\-ack (
\begin{DoxyParamCaption}
\item[{list$<$ {\bf Lsa\_\-header} $>$ \&}]{ack, }
\item[{bool}]{direct, }
\item[{bool \&}]{multicast\_\-on\_\-peer}
\end{DoxyParamCaption}
)}}
\label{classNeighbour_a7a5a17a9b22c3e56346deeae041204d9}


\hyperlink{structSend}{Send} acknowledgement. 


\begin{DoxyParams}{Parameters}
{\em ack} & list of acknowledgements. \\
\hline
{\em direct} & if true send directly to \hyperlink{protocolthe-p}{the} neighbour. \\
\hline
{\em multicast\_\-on\_\-peer} & set to true if \hyperlink{protocolthe-p}{the} ack was multicast. Only if direct is false is it possible for \hyperlink{protocolthe-p}{the} packet to be multicast.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if an acknowledgement is sent. 
\end{DoxyReturn}
\hypertarget{classNeighbour_a0f262dffee3b71cc1a8f0bb33307ebe3}{
\index{Neighbour@{Neighbour}!send\_\-link\_\-state\_\-ack\_\-packet@{send\_\-link\_\-state\_\-ack\_\-packet}}
\index{send\_\-link\_\-state\_\-ack\_\-packet@{send\_\-link\_\-state\_\-ack\_\-packet}!Neighbour@{Neighbour}}
\subsubsection[{send\_\-link\_\-state\_\-ack\_\-packet}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Neighbour}$<$ A $>$::send\_\-link\_\-state\_\-ack\_\-packet (
\begin{DoxyParamCaption}
\item[{{\bf LinkStateAcknowledgementPacket} \&}]{lsap, }
\item[{bool}]{direct, }
\item[{bool \&}]{multicast\_\-on\_\-peer}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighbour_a0f262dffee3b71cc1a8f0bb33307ebe3}


\hyperlink{structSend}{Send} link state ack packet. 


\begin{DoxyParams}{Parameters}
{\em direct} & if true send directly to \hyperlink{protocolthe-p}{the} neighbour. \\
\hline
{\em multicast\_\-on\_\-peer} & set to true if \hyperlink{protocolthe-p}{the} packet is multicast false otherwise. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighbour_a6cf5f2acf149cafceb5824f1925cacb4}{
\index{Neighbour@{Neighbour}!send\_\-link\_\-state\_\-update\_\-packet@{send\_\-link\_\-state\_\-update\_\-packet}}
\index{send\_\-link\_\-state\_\-update\_\-packet@{send\_\-link\_\-state\_\-update\_\-packet}!Neighbour@{Neighbour}}
\subsubsection[{send\_\-link\_\-state\_\-update\_\-packet}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Neighbour}$<$ A $>$::send\_\-link\_\-state\_\-update\_\-packet (
\begin{DoxyParamCaption}
\item[{{\bf LinkStateUpdatePacket} \&}]{lsup, }
\item[{bool}]{direct = {\ttfamily false}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighbour_a6cf5f2acf149cafceb5824f1925cacb4}


\hyperlink{structSend}{Send} link state update packet. 


\begin{DoxyParams}{Parameters}
{\em direct} & if true send directly to \hyperlink{protocolthe-p}{the} neighbour. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighbour_a4f2c7107eb85a8ca967f0cb7ff53b6c1}{
\index{Neighbour@{Neighbour}!send\_\-lsa@{send\_\-lsa}}
\index{send\_\-lsa@{send\_\-lsa}!Neighbour@{Neighbour}}
\subsubsection[{send\_\-lsa}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ bool {\bf Neighbour}$<$ A $>$::send\_\-lsa (
\begin{DoxyParamCaption}
\item[{{\bf Lsa::LsaRef}}]{lsar}
\end{DoxyParamCaption}
)}}
\label{classNeighbour_a4f2c7107eb85a8ca967f0cb7ff53b6c1}


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

Do not place on retransmission list.


\begin{DoxyParams}{Parameters}
{\em lsar} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success 
\end{DoxyReturn}
\hypertarget{classNeighbour_a7f322ff812e6d279a3acdd46f6a9c192}{
\index{Neighbour@{Neighbour}!start\_\-inactivity\_\-timer@{start\_\-inactivity\_\-timer}}
\index{start\_\-inactivity\_\-timer@{start\_\-inactivity\_\-timer}!Neighbour@{Neighbour}}
\subsubsection[{start\_\-inactivity\_\-timer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf Neighbour}$<$ A $>$::start\_\-inactivity\_\-timer (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighbour_a7f322ff812e6d279a3acdd46f6a9c192}


Start \hyperlink{protocolthe-p}{the} inactivity timer. 

Used to track Hello packets from \hyperlink{protocolthe-p}{the} neighbour. \hypertarget{classNeighbour_a1a30530b7bab3801e2441dede6018c8a}{
\index{Neighbour@{Neighbour}!start\_\-rxmt\_\-timer@{start\_\-rxmt\_\-timer}}
\index{start\_\-rxmt\_\-timer@{start\_\-rxmt\_\-timer}!Neighbour@{Neighbour}}
\subsubsection[{start\_\-rxmt\_\-timer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf Neighbour}$<$ A $>$::start\_\-rxmt\_\-timer (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{index, }
\item[{RxmtCallback}]{rcb, }
\item[{bool}]{immediate, }
\item[{const char $\ast$}]{comment}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighbour_a1a30530b7bab3801e2441dede6018c8a}


Start \hyperlink{protocolthe-p}{the} retransmit timer. 


\begin{DoxyParams}{Parameters}
{\em index} & defining which timer to use. \\
\hline
{\em RxmtCallback} & method to be called ever retransmit interval. \\
\hline
{\em immediate} & don't wait for \hyperlink{protocolthe-p}{the} retransmit interval send one now. \\
\hline
{\em comment} & to track \hyperlink{protocolthe-p}{the} callbacks \\
\hline
\end{DoxyParams}
\hypertarget{classNeighbour_aef0dc075ba978aeda4d8746556b53389}{
\index{Neighbour@{Neighbour}!start\_\-sending\_\-data\_\-description\_\-packets@{start\_\-sending\_\-data\_\-description\_\-packets}}
\index{start\_\-sending\_\-data\_\-description\_\-packets@{start\_\-sending\_\-data\_\-description\_\-packets}!Neighbour@{Neighbour}}
\subsubsection[{start\_\-sending\_\-data\_\-description\_\-packets}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf Neighbour}$<$ A $>$::start\_\-sending\_\-data\_\-description\_\-packets (
\begin{DoxyParamCaption}
\item[{const char $\ast$}]{event\_\-name, }
\item[{bool}]{immediate = {\ttfamily true}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighbour_aef0dc075ba978aeda4d8746556b53389}


Start sending data description packets. 

RFC 2328 Section 10.8.

Should only be called in state ExStart.


\begin{DoxyParams}{Parameters}
{\em event\_\-name} & for debugging. \\
\hline
{\em immediate} & if true send \hyperlink{protocolthe-p}{the} packet immediately, if false wait \hyperlink{protocolthe-p}{the} retransmit interval.\\
\hline
\end{DoxyParams}
Sending Database Description Packets. (ExStart) \hypertarget{classNeighbour_ace762ddffc597576de1256d538225a29}{
\index{Neighbour@{Neighbour}!stop\_\-inactivity\_\-timer@{stop\_\-inactivity\_\-timer}}
\index{stop\_\-inactivity\_\-timer@{stop\_\-inactivity\_\-timer}!Neighbour@{Neighbour}}
\subsubsection[{stop\_\-inactivity\_\-timer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf Neighbour}$<$ A $>$::stop\_\-inactivity\_\-timer (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighbour_ace762ddffc597576de1256d538225a29}


Stop \hyperlink{protocolthe-p}{the} inactivity timer. 

Used to track Hello packets from \hyperlink{protocolthe-p}{the} neighbour. \hypertarget{classNeighbour_a032e48311b4e4082332a56ee4fae421b}{
\index{Neighbour@{Neighbour}!stop\_\-rxmt\_\-timer@{stop\_\-rxmt\_\-timer}}
\index{stop\_\-rxmt\_\-timer@{stop\_\-rxmt\_\-timer}!Neighbour@{Neighbour}}
\subsubsection[{stop\_\-rxmt\_\-timer}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf Neighbour}$<$ A $>$::stop\_\-rxmt\_\-timer (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{index, }
\item[{const char $\ast$}]{comment}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighbour_a032e48311b4e4082332a56ee4fae421b}


Stop \hyperlink{protocolthe-p}{the} retransmit timer. 


\begin{DoxyParams}{Parameters}
{\em index} & defining which timer to use. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighbour_a5fde325a260ccd0aa3eda5efaa126bb2}{
\index{Neighbour@{Neighbour}!tear\_\-down\_\-state@{tear\_\-down\_\-state}}
\index{tear\_\-down\_\-state@{tear\_\-down\_\-state}!Neighbour@{Neighbour}}
\subsubsection[{tear\_\-down\_\-state}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename A $>$ void {\bf Neighbour}$<$ A $>$::tear\_\-down\_\-state (
\begin{DoxyParamCaption}
\item[{{\bf State}}]{previous\_\-state}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighbour_a5fde325a260ccd0aa3eda5efaa126bb2}


The state has just dropped so pull out any state associated with a higher state. 


\begin{DoxyParams}{Parameters}
{\em previous\_\-state} & \\
\hline
\end{DoxyParams}


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