\hypertarget{classNeighborhood}{
\section{Neighborhood Class Reference}
\label{classNeighborhood}\index{Neighborhood@{Neighborhood}}
}


Representation of OLSR node's one-\/hop and two-\/hop neighborhood.  




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

\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classNeighborhood_af78b7241f3a001e5f67bec93a4a998f6}{
{\bfseries Neighborhood} (\hyperlink{classOlsr}{Olsr} \&olsr, \hyperlink{classEventLoop}{EventLoop} \&eventloop, \hyperlink{classFaceManager}{FaceManager} \&fm)}
\label{classNeighborhood_af78b7241f3a001e5f67bec93a4a998f6}

\item 
\hypertarget{classNeighborhood_a8465f3e870496c58efcbba107800ce96}{
\hyperlink{classTopologyManager}{TopologyManager} $\ast$ {\bfseries topology\_\-manager} ()}
\label{classNeighborhood_a8465f3e870496c58efcbba107800ce96}

\item 
\hypertarget{classNeighborhood_a143d965812e54aa7fae2adbd93a472bc}{
void {\bfseries set\_\-topology\_\-manager} (\hyperlink{classTopologyManager}{TopologyManager} $\ast$tm)}
\label{classNeighborhood_a143d965812e54aa7fae2adbd93a472bc}

\item 
\hypertarget{classNeighborhood_a6aa85091ed9daaf8873344a8d5236711}{
\hyperlink{classRouteManager}{RouteManager} $\ast$ {\bfseries route\_\-manager} ()}
\label{classNeighborhood_a6aa85091ed9daaf8873344a8d5236711}

\item 
\hypertarget{classNeighborhood_a2cbcb5df9a33eddf562a53ba91535d0b}{
void {\bfseries set\_\-route\_\-manager} (\hyperlink{classRouteManager}{RouteManager} $\ast$rm)}
\label{classNeighborhood_a2cbcb5df9a33eddf562a53ba91535d0b}

\item 
size\_\-t \hyperlink{classNeighborhood_a4fc985620042209b9443a0e8f5b0be20}{populate\_\-hello} (\hyperlink{classHelloMessage}{HelloMessage} $\ast$hello)
\begin{DoxyCompactList}\small\item\em Given an empty HELLO message, fill it out as appropriate for its interface ID property. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighborhood_a6672426f1e21e9e54432f818ec4d7fd2}{push\_\-topology} ()
\begin{DoxyCompactList}\small\item\em \hyperlink{classPush}{Push} \hyperlink{protocolthe-p}{the} topology to \hyperlink{protocolthe-p}{the} \hyperlink{classRouteManager}{RouteManager} for route computation. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighborhood_a185a8eeaa1108fb5bfaf29eb7a7079ed}{set\_\-tc\_\-redundancy} (const \hyperlink{structOlsrTypes_ae08a8eaf283793888111c29f1b289b6d}{OlsrTypes::TcRedundancyType} type)
\begin{DoxyCompactList}\small\item\em Attempt to set \hyperlink{protocolthe-p}{the} redundancy of links advertised in TC broadcasts. \item\end{DoxyCompactList}\item 
\hyperlink{structOlsrTypes_ae08a8eaf283793888111c29f1b289b6d}{OlsrTypes::TcRedundancyType} \hyperlink{classNeighborhood_a0856ee7276acd3e331d0ff0d3e2d2351}{get\_\-tc\_\-redundancy} () const 
\item 
uint32\_\-t \hyperlink{classNeighborhood_abb2dd3df85baed3bc0dfccfd3d60b3eb}{mpr\_\-coverage} () const 
\item 
bool \hyperlink{classNeighborhood_a12abb74efe9aedd72f50c26e7fac818f}{set\_\-mpr\_\-coverage} (const uint32\_\-t coverage)
\begin{DoxyCompactList}\small\item\em Attempt to set \hyperlink{protocolthe-p}{the} required level of MPR coverage. \item\end{DoxyCompactList}\item 
\hyperlink{classTimeVal}{TimeVal} \hyperlink{classNeighborhood_a6c0190fc4a5fce3ccbb810d41609a276}{get\_\-refresh\_\-interval} () const 
\item 
void \hyperlink{classNeighborhood_ae2221242c826d6d1ff4f3146f6a3bdf4}{set\_\-refresh\_\-interval} (const \hyperlink{classTimeVal}{TimeVal} \&interval)
\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} value of \hyperlink{protocolthe-p}{the} REFRESH\_\-INTERVAL protocol variable. \item\end{DoxyCompactList}\item 
\hyperlink{classTimeVal}{TimeVal} \hyperlink{classNeighborhood_abd9c828759c7570a36eb2e774b88ad3f}{get\_\-tc\_\-interval} ()
\item 
void \hyperlink{classNeighborhood_a00706e2bf5b70856301079ed8e28fef5}{set\_\-tc\_\-interval} (const \hyperlink{classTimeVal}{TimeVal} \&interval)
\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} interval between TC broadcasts. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighborhood_a5f5b8b613350711dab84f60751d7c12d}{set\_\-willingness} (const \hyperlink{structOlsrTypes_a0dc070ed0b3ef1b8e99e93c333c8ed2e}{OlsrTypes::WillType} willingness)
\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} WILLINGNESS protocol variable. \item\end{DoxyCompactList}\item 
\hyperlink{structOlsrTypes_a0dc070ed0b3ef1b8e99e93c333c8ed2e}{OlsrTypes::WillType} \hyperlink{classNeighborhood_ac3af11f1398c37c64d3234c925720364}{willingness} () const 
\item 
\hyperlink{classTimeVal}{TimeVal} \hyperlink{classNeighborhood_a333fda4b3d8bac33d2d8ac6ded148328}{get\_\-neighbor\_\-hold\_\-time} ()
\item 
\hyperlink{classTimeVal}{TimeVal} \hyperlink{classNeighborhood_aa502169996d2366f62f34aa432ef7c16}{get\_\-topology\_\-hold\_\-time} ()
\item 
void \hyperlink{classNeighborhood_aa82d929620b620c76efb4581e5751d64}{add\_\-face} (const \hyperlink{structOlsrTypes_a0be5017ad053311658089d9a795c63ac}{OlsrTypes::FaceID} faceid)
\begin{DoxyCompactList}\small\item\em Add an interface to \hyperlink{protocolthe-p}{the} neighborhood. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighborhood_a9abaaebaf698f8599ab8333ca161a22d}{delete\_\-face} (const \hyperlink{structOlsrTypes_a0be5017ad053311658089d9a795c63ac}{OlsrTypes::FaceID} faceid)
\begin{DoxyCompactList}\small\item\em Delete an interface from \hyperlink{protocolthe-p}{the} neighborhood. \item\end{DoxyCompactList}\item 
\hyperlink{structOlsrTypes_a5c8f1d4f06caa7b0cb4b05f7aef7b67f}{OlsrTypes::LogicalLinkID} \hyperlink{classNeighborhood_a14c1e9942b004eaf999d91bd4a5a7e1b}{update\_\-link} (const \hyperlink{structOlsrTypes_a0be5017ad053311658089d9a795c63ac}{OlsrTypes::FaceID} faceid, const \hyperlink{classIPv4}{IPv4} \&remote\_\-addr, const \hyperlink{classIPv4}{IPv4} \&local\_\-addr, const \hyperlink{classTimeVal}{TimeVal} \&vtime, bool \&is\_\-created)  throw (BadLogicalLink)
\begin{DoxyCompactList}\small\item\em Update a \hyperlink{classLogicalLink}{LogicalLink}. \item\end{DoxyCompactList}\item 
\hyperlink{structOlsrTypes_a5c8f1d4f06caa7b0cb4b05f7aef7b67f}{OlsrTypes::LogicalLinkID} \hyperlink{classNeighborhood_a5ce6fc87ae9163b9787922408cacebfa}{add\_\-link} (const \hyperlink{classTimeVal}{TimeVal} \&vtime, const \hyperlink{classIPv4}{IPv4} \&remote\_\-addr, const \hyperlink{classIPv4}{IPv4} \&local\_\-addr)  throw (BadLogicalLink)
\begin{DoxyCompactList}\small\item\em Add a link to \hyperlink{protocolthe-p}{the} local link database. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighborhood_ac90501e63c0bfa18c8e457f22970192c}{delete\_\-link} (\hyperlink{structOlsrTypes_a5c8f1d4f06caa7b0cb4b05f7aef7b67f}{OlsrTypes::LogicalLinkID} linkid)
\begin{DoxyCompactList}\small\item\em Delete \hyperlink{protocolthe-p}{the} link tuple specified by \hyperlink{protocolthe-p}{the} given link id. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighborhood_a1f5a48385d79a1a4d1d7022281c455c2}{clear\_\-links} ()
\begin{DoxyCompactList}\small\item\em Clear \hyperlink{protocolthe-p}{the} neighborhood one-\/hop links. \item\end{DoxyCompactList}\item 
const \hyperlink{classLogicalLink}{LogicalLink} $\ast$ \hyperlink{classNeighborhood_a7e194e8c4966b26766b11191434e3358}{get\_\-logical\_\-link} (const \hyperlink{structOlsrTypes_a5c8f1d4f06caa7b0cb4b05f7aef7b67f}{OlsrTypes::LogicalLinkID} linkid)  throw (BadLogicalLink)
\begin{DoxyCompactList}\small\item\em Look up a LogicalLink's pointer given its LogicalLinkID. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighborhood_abf99a35c6c4f0bed22b91e6d82f306ca}{get\_\-logical\_\-link\_\-list} (list$<$ \hyperlink{structOlsrTypes_a5c8f1d4f06caa7b0cb4b05f7aef7b67f}{OlsrTypes::LogicalLinkID} $>$ \&l1\_\-list) const 
\begin{DoxyCompactList}\small\item\em Fill out a list of all LogicalLinkIDs in \hyperlink{protocolthe-p}{the} database. \item\end{DoxyCompactList}\item 
\hyperlink{structOlsrTypes_a5c8f1d4f06caa7b0cb4b05f7aef7b67f}{OlsrTypes::LogicalLinkID} \hyperlink{classNeighborhood_ae8315e7b9a3b9cbf27bfe28dfc276127}{get\_\-linkid} (const \hyperlink{classIPv4}{IPv4} \&remote\_\-addr, const \hyperlink{classIPv4}{IPv4} \&local\_\-addr)  throw (BadLogicalLink)
\begin{DoxyCompactList}\small\item\em Look up a LogicalLink's ID given its interface addresses. \item\end{DoxyCompactList}\item 
\hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID} \hyperlink{classNeighborhood_a3e438130fc09a9736c591425fb1ab15b}{update\_\-neighbor} (const \hyperlink{classIPv4}{IPv4} \&main\_\-addr, const \hyperlink{structOlsrTypes_a5c8f1d4f06caa7b0cb4b05f7aef7b67f}{OlsrTypes::LogicalLinkID} linkid, const bool is\_\-new\_\-link, const \hyperlink{structOlsrTypes_a0dc070ed0b3ef1b8e99e93c333c8ed2e}{OlsrTypes::WillType} will, const bool is\_\-mpr\_\-selector, const \hyperlink{classTimeVal}{TimeVal} \&mprs\_\-expiry\_\-time, bool \&is\_\-created)  throw (BadNeighbor)
\begin{DoxyCompactList}\small\item\em Update or create a \hyperlink{classNeighbor}{Neighbor} in \hyperlink{protocolthe-p}{the} one-\/hop neighbor database. \item\end{DoxyCompactList}\item 
\hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID} \hyperlink{classNeighborhood_adcfc3d879a888f60217b60956d3542fb}{add\_\-neighbor} (const \hyperlink{classIPv4}{IPv4} \&main\_\-addr, \hyperlink{structOlsrTypes_a5c8f1d4f06caa7b0cb4b05f7aef7b67f}{OlsrTypes::LogicalLinkID} linkid)  throw (BadNeighbor)
\begin{DoxyCompactList}\small\item\em Add a new \hyperlink{classNeighbor}{Neighbor} to \hyperlink{protocolthe-p}{the} one-\/hop neighbor database. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighborhood_afbedccca8b3c76133b51d09750967052}{delete\_\-neighbor} (const \hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID} nid)
\begin{DoxyCompactList}\small\item\em Delete a neighbor from \hyperlink{protocolthe-p}{the} neighbor database. \item\end{DoxyCompactList}\item 
const \hyperlink{classNeighbor}{Neighbor} $\ast$ \hyperlink{classNeighborhood_a70104e4d54f5f1c3a0934f9fedb8728c}{get\_\-neighbor} (const \hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID} nid)  throw (BadNeighbor)
\begin{DoxyCompactList}\small\item\em Find a Neighbor's pointer, given its NeighborID. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighborhood_a005c71cbbae39be363c86ec6bdfc2054}{get\_\-neighbor\_\-list} (list$<$ \hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID} $>$ \&n1\_\-list) const 
\begin{DoxyCompactList}\small\item\em Fill out a list of all NeighborIDs in \hyperlink{protocolthe-p}{the} database. \item\end{DoxyCompactList}\item 
\hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID} \hyperlink{classNeighborhood_a2fab9bb370c8d8acd5bdeace17b7d983}{get\_\-neighborid\_\-by\_\-main\_\-addr} (const \hyperlink{classIPv4}{IPv4} \&main\_\-addr)  throw (BadNeighbor)
\begin{DoxyCompactList}\small\item\em Find a neighbor ID, given its main address. \item\end{DoxyCompactList}\item 
\hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID} \hyperlink{classNeighborhood_ab53545f0df353cf0ace9001611118a6c}{get\_\-neighborid\_\-by\_\-remote\_\-addr} (const \hyperlink{classIPv4}{IPv4} \&remote\_\-addr)  throw (BadNeighbor)
\begin{DoxyCompactList}\small\item\em Find a neighbor ID, given \hyperlink{protocolthe-p}{the} address of one of its interfaces. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighborhood_abfb0c784e959485d68d8a7d64c0332ad}{is\_\-sym\_\-neighbor\_\-addr} (const \hyperlink{classIPv4}{IPv4} \&addr)
\begin{DoxyCompactList}\small\item\em Check if a remote address belongs to a symmetric one-\/hop neighbor. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighborhood_a4540a97ebb3cce1112e743b9963427f1}{is\_\-tc\_\-advertised\_\-neighbor} (\hyperlink{classNeighbor}{Neighbor} $\ast$n)
\item 
void \hyperlink{classNeighborhood_afae2aea4dbc1a2d94d84c2f0d4dd9ba6}{schedule\_\-ans\_\-update} (const bool is\_\-deleted)
\begin{DoxyCompactList}\small\item\em Schedule an update of \hyperlink{protocolthe-p}{the} Advertised \hyperlink{classNeighbor}{Neighbor} Set. \item\end{DoxyCompactList}\item 
\hyperlink{structOlsrTypes_a5341e986890944c45a8362cd9d8916e7}{OlsrTypes::TwoHopLinkID} \hyperlink{classNeighborhood_ab7d6c1c247a065aba1dc45b04d70e24d}{update\_\-twohop\_\-link} (const \hyperlink{classLinkAddrInfo}{LinkAddrInfo} \&node\_\-info, \hyperlink{classNeighbor}{Neighbor} \&nexthop, const \hyperlink{structOlsrTypes_a0be5017ad053311658089d9a795c63ac}{OlsrTypes::FaceID} faceid, const \hyperlink{classTimeVal}{TimeVal} \&vtime)  throw (BadTwoHopLink)
\begin{DoxyCompactList}\small\item\em Update \hyperlink{protocolthe-p}{the} link state information for a two-\/hop neighbor. \item\end{DoxyCompactList}\item 
\hyperlink{structOlsrTypes_a5341e986890944c45a8362cd9d8916e7}{OlsrTypes::TwoHopLinkID} \hyperlink{classNeighborhood_a6abf8aa4c17a172d569b0422397d6191}{add\_\-twohop\_\-link} (\hyperlink{classNeighbor}{Neighbor} $\ast$nexthop, const \hyperlink{classIPv4}{IPv4} \&remote\_\-addr, const \hyperlink{classTimeVal}{TimeVal} \&vtime)  throw (BadTwoHopLink)
\begin{DoxyCompactList}\small\item\em Add a \hyperlink{classTwoHopLink}{TwoHopLink} to \hyperlink{protocolthe-p}{the} \hyperlink{classNeighborhood}{Neighborhood}. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighborhood_a5f2f7ae6dac4fabc1a35f6577b9fa98c}{delete\_\-twohop\_\-link} (\hyperlink{structOlsrTypes_af87f2dd463b624b5e0cb89d476ff5485}{OlsrTypes::TwoHopNodeID} tlid)
\begin{DoxyCompactList}\small\item\em Delete \hyperlink{protocolthe-p}{the} \hyperlink{classTwoHopLink}{TwoHopLink} to a two-\/hop neighbor. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighborhood_abee5842334a1e1fceb802b7b633087d5}{delete\_\-twohop\_\-link\_\-by\_\-addrs} (const \hyperlink{classIPv4}{IPv4} \&nexthop\_\-addr, const \hyperlink{classIPv4}{IPv4} \&twohop\_\-addr)
\begin{DoxyCompactList}\small\item\em Delete \hyperlink{protocolthe-p}{the} \hyperlink{classTwoHopLink}{TwoHopLink} to a two-\/hop neighbor. \item\end{DoxyCompactList}\item 
\hyperlink{classTwoHopLink}{TwoHopLink} $\ast$ \hyperlink{classNeighborhood_a1f69415a22619259c3fd3360f2ee5f2a}{get\_\-twohop\_\-link} (const \hyperlink{structOlsrTypes_a5341e986890944c45a8362cd9d8916e7}{OlsrTypes::TwoHopLinkID} tlid)  throw (BadTwoHopLink)
\begin{DoxyCompactList}\small\item\em Given \hyperlink{protocolthe-p}{the} ID of a \hyperlink{classTwoHopLink}{TwoHopLink}, return its instance pointer. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighborhood_a50b32cc33c3495b1be8ac85883fb28cf}{get\_\-twohop\_\-link\_\-list} (list$<$ \hyperlink{structOlsrTypes_a5341e986890944c45a8362cd9d8916e7}{OlsrTypes::TwoHopLinkID} $>$ \&l2\_\-list) const 
\begin{DoxyCompactList}\small\item\em Fill out a list of all TwoHopLinkIDs in \hyperlink{protocolthe-p}{the} database. \item\end{DoxyCompactList}\item 
\hyperlink{structOlsrTypes_af87f2dd463b624b5e0cb89d476ff5485}{OlsrTypes::TwoHopNodeID} \hyperlink{classNeighborhood_a260dfd60ea2810284fcbfcd5399ded8a}{update\_\-twohop\_\-node} (const \hyperlink{classIPv4}{IPv4} \&main\_\-addr, const \hyperlink{structOlsrTypes_a5341e986890944c45a8362cd9d8916e7}{OlsrTypes::TwoHopLinkID} tlid, const bool is\_\-new\_\-l2, bool \&is\_\-n2\_\-created)  throw (BadTwoHopNode)
\begin{DoxyCompactList}\small\item\em Update a two-\/hop neighbor. \item\end{DoxyCompactList}\item 
\hyperlink{structOlsrTypes_af87f2dd463b624b5e0cb89d476ff5485}{OlsrTypes::TwoHopNodeID} \hyperlink{classNeighborhood_a4c18b447b3067573402527cf6d64f09c}{add\_\-twohop\_\-node} (const \hyperlink{classIPv4}{IPv4} \&main\_\-addr, const \hyperlink{structOlsrTypes_a5341e986890944c45a8362cd9d8916e7}{OlsrTypes::TwoHopLinkID} tlid)  throw (BadTwoHopNode)
\begin{DoxyCompactList}\small\item\em Add a two-\/hop neighbor to \hyperlink{protocolthe-p}{the} two-\/hop neighborhood. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighborhood_ae4657719e1953ee49eea0b7fde0cc23f}{delete\_\-twohop\_\-node} (\hyperlink{structOlsrTypes_af87f2dd463b624b5e0cb89d476ff5485}{OlsrTypes::TwoHopNodeID} tnid)
\begin{DoxyCompactList}\small\item\em Delete an entry in \hyperlink{protocolthe-p}{the} two-\/hop neighbor table. \item\end{DoxyCompactList}\item 
\hyperlink{structOlsrTypes_af87f2dd463b624b5e0cb89d476ff5485}{OlsrTypes::TwoHopNodeID} \hyperlink{classNeighborhood_a6c22fd93b41d8cf1bbf6cc8bc40900cf}{get\_\-twohop\_\-nodeid\_\-by\_\-main\_\-addr} (const \hyperlink{classIPv4}{IPv4} \&main\_\-addr)  throw (BadTwoHopNode)
\begin{DoxyCompactList}\small\item\em Look up a two-\/hop neighbor by main address. \item\end{DoxyCompactList}\item 
const \hyperlink{classTwoHopNeighbor}{TwoHopNeighbor} $\ast$ \hyperlink{classNeighborhood_a43e4d7070581b02446e9d7602e407cec}{get\_\-twohop\_\-neighbor} (const \hyperlink{structOlsrTypes_af87f2dd463b624b5e0cb89d476ff5485}{OlsrTypes::TwoHopNodeID} tnid) const   throw (BadTwoHopNode)
\begin{DoxyCompactList}\small\item\em Given \hyperlink{protocolthe-p}{the} ID of a \hyperlink{classTwoHopNeighbor}{TwoHopNeighbor}, return its instance pointer. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighborhood_a929e8319154b66cbaa0984fce1ec9982}{get\_\-twohop\_\-neighbor\_\-list} (list$<$ \hyperlink{structOlsrTypes_af87f2dd463b624b5e0cb89d476ff5485}{OlsrTypes::TwoHopNodeID} $>$ \&n2\_\-list) const 
\begin{DoxyCompactList}\small\item\em Fill out a list of all TwoHopNodeIDs in \hyperlink{protocolthe-p}{the} database. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighborhood_a7dbd642a9a2a56be363126c5e2312f9e}{is\_\-mpr} () const 
\item 
void \hyperlink{classNeighborhood_a8b81ca352793547f87f2b4d54486171b}{update\_\-mpr\_\-selector} (const \hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID} nid, const \hyperlink{classTimeVal}{TimeVal} \&vtime)
\begin{DoxyCompactList}\small\item\em Update a Neighbor's status in \hyperlink{protocolthe-p}{the} MPR selector set, possibly adding it. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighborhood_a6a37f644cb62b518b573dcfb8a307ad0}{delete\_\-mpr\_\-selector} (const \hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID} nid)
\begin{DoxyCompactList}\small\item\em Remove a neighbor from \hyperlink{protocolthe-p}{the} MPR selector set by its ID. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighborhood_a6be586f68fb7373d97de3541db150a9a}{is\_\-mpr\_\-selector\_\-addr} (const \hyperlink{classIPv4}{IPv4} \&remote\_\-addr)
\begin{DoxyCompactList}\small\item\em Check if an address belongs to a one-\/hop neighbor which is also an MPR selector. \item\end{DoxyCompactList}\item 
set$<$ \hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID} $>$ \hyperlink{classNeighborhood_adcf811f79de683bcb52daaf46ea969f1}{mpr\_\-selector\_\-set} () const 
\item 
void \hyperlink{classNeighborhood_a5526507ea67a6b389a72bba43857ec3c}{schedule\_\-mpr\_\-recount} ()
\begin{DoxyCompactList}\small\item\em Trigger a recount of \hyperlink{protocolthe-p}{the} MPR set. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighborhood_a4c467af4b3433d8dc10291116838cd47}{add\_\-cand\_\-mpr} (const \hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID} nid)
\begin{DoxyCompactList}\small\item\em Add a neighbor to \hyperlink{protocolthe-p}{the} set of MPR candidates for \hyperlink{protocolthe-p}{the} interfaces from which it is reachable. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighborhood_a3a41c80c36290a310feef03573c45e93}{withdraw\_\-cand\_\-mpr} (const \hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID} nid)
\begin{DoxyCompactList}\small\item\em Remove a neighbor from \hyperlink{protocolthe-p}{the} set of MPR candidates for all interfaces. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_af17c583665e685c62ba01e275a1cd16d}{
void \hyperlink{classNeighborhood_af17c583665e685c62ba01e275a1cd16d}{recount\_\-mpr\_\-set} ()}
\label{classNeighborhood_af17c583665e685c62ba01e275a1cd16d}

\begin{DoxyCompactList}\small\item\em Callback method to: recount \hyperlink{protocolthe-p}{the} MPR set for all configured OLSR interfaces. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_a19f9019cd0db6bc510b9659b03536757}{
void \hyperlink{classNeighborhood_a19f9019cd0db6bc510b9659b03536757}{reset\_\-onehop\_\-mpr\_\-state} ()}
\label{classNeighborhood_a19f9019cd0db6bc510b9659b03536757}

\begin{DoxyCompactList}\small\item\em Clear all existing MPR state for Neighbors. \item\end{DoxyCompactList}\item 
size\_\-t \hyperlink{classNeighborhood_a52dd048875fd8ffdd34586dc17119562}{reset\_\-twohop\_\-mpr\_\-state} (ostringstream \&dbg)
\begin{DoxyCompactList}\small\item\em Clear all existing MPR state for TwoHopNeighbors. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighborhood_a8b211dee3b888e94125bdc0fd387691f}{update\_\-onehop\_\-reachability} (\hyperlink{classNeighbor}{Neighbor} $\ast$n)
\begin{DoxyCompactList}\small\item\em Compute one-\/hop neighbor reachability and update it in \hyperlink{protocolthe-p}{the} \hyperlink{classNeighbor}{Neighbor} to avoid repetitively computing it on every MPR recount. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighborhood_aaf3d1316e82849a452328310edba76b8}{update\_\-twohop\_\-reachability} (\hyperlink{classTwoHopNeighbor}{TwoHopNeighbor} $\ast$tn)
\begin{DoxyCompactList}\small\item\em Compute two-\/hop neighbor reachability. \item\end{DoxyCompactList}\item 
size\_\-t \hyperlink{classNeighborhood_a835845e64be27e2b89d26c6a31f40428}{consider\_\-persistent\_\-cand\_\-mprs} (ostringstream \&dbg)
\begin{DoxyCompactList}\small\item\em Consider persistent MPR candidates for MPR selection. \item\end{DoxyCompactList}\item 
size\_\-t \hyperlink{classNeighborhood_a12b0beeab777cc8dd18ed6c0403786bc}{consider\_\-poorly\_\-covered\_\-twohops} (ostringstream \&dbg)
\begin{DoxyCompactList}\small\item\em Consider MPR coverage of poorly covered two-\/hop neighbors. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighborhood_a308e8740cb560c281cd1bb48ea7c3c79}{consider\_\-remaining\_\-cand\_\-mprs} (const size\_\-t n2\_\-count, size\_\-t \&covered\_\-n2\_\-count, ostringstream \&oss)
\begin{DoxyCompactList}\small\item\em Consider remaining MPR candidates for MPR selection. \item\end{DoxyCompactList}\item 
size\_\-t \hyperlink{classNeighborhood_a61c0e8caae108c9fefff053c38589b52}{mark\_\-all\_\-n1\_\-as\_\-mprs} (set$<$ \hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID} $>$ \&final\_\-mpr\_\-set)
\begin{DoxyCompactList}\small\item\em Mark all N1 neighbors was MPRs. \item\end{DoxyCompactList}\item 
size\_\-t \hyperlink{classNeighborhood_acb3ceaf582266032a4bf2db5c326ff05}{minimize\_\-mpr\_\-set} (set$<$ \hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID} $>$ \&final\_\-mpr\_\-set)  throw (BadTwoHopCoverage)
\begin{DoxyCompactList}\small\item\em Minimize \hyperlink{protocolthe-p}{the} MPR set, based on \hyperlink{protocolthe-p}{the} MPR coverage parameter. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighborhood_ae08e6df917f8eed4f1fa376ea2a63a9f}{is\_\-essential\_\-mpr} (const \hyperlink{classNeighbor}{Neighbor} $\ast$n)
\begin{DoxyCompactList}\small\item\em Determine if an MPR is essential to covering \hyperlink{protocolthe-p}{the} entire two-\/hop neighborhood. \item\end{DoxyCompactList}\item 
set$<$ \hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID} $>$ \hyperlink{classNeighborhood_ae283b3f1cd37bc61859557c50bdf799b}{mpr\_\-set} () const 
\item 
void \hyperlink{classNeighborhood_a5625039c14c0172c086ea1b0b6327f5a}{event\_\-link\_\-sym\_\-timer} (\hyperlink{structOlsrTypes_a5c8f1d4f06caa7b0cb4b05f7aef7b67f}{OlsrTypes::LogicalLinkID} linkid)
\begin{DoxyCompactList}\small\item\em Callback method to: service a LogicalLink's SYM timer. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighborhood_a4cf3e0f22f1ef8487957d88b50a8b911}{event\_\-link\_\-asym\_\-timer} (\hyperlink{structOlsrTypes_a5c8f1d4f06caa7b0cb4b05f7aef7b67f}{OlsrTypes::LogicalLinkID} linkid)
\begin{DoxyCompactList}\small\item\em Callback method to: service a LogicalLink's ASYM timer. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighborhood_a0862dac7a8642f8532cd310dc147bdee}{event\_\-link\_\-lost\_\-timer} (\hyperlink{structOlsrTypes_a5c8f1d4f06caa7b0cb4b05f7aef7b67f}{OlsrTypes::LogicalLinkID} linkid)
\begin{DoxyCompactList}\small\item\em Callback method to: service a LogicalLink's LOST timer. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighborhood_a852876c0027bf890a632724d5594c364}{event\_\-link\_\-dead\_\-timer} (\hyperlink{structOlsrTypes_a5c8f1d4f06caa7b0cb4b05f7aef7b67f}{OlsrTypes::LogicalLinkID} linkid)
\begin{DoxyCompactList}\small\item\em Callback method to: service a LogicalLink's DEAD timer. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighborhood_aeeb5770af731b668c7f79849006fcd91}{event\_\-twohop\_\-link\_\-dead\_\-timer} (const \hyperlink{structOlsrTypes_a5341e986890944c45a8362cd9d8916e7}{OlsrTypes::TwoHopLinkID} tlid)
\begin{DoxyCompactList}\small\item\em Callback method to: service a TwoHopLink's DEAD timer. \item\end{DoxyCompactList}\item 
void \hyperlink{classNeighborhood_aade956ebb1068d4912b8cf6f34d0ba47}{event\_\-mpr\_\-selector\_\-expired} (const \hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID} nid)
\begin{DoxyCompactList}\small\item\em Callback method to: service an MPR selector's EXPIRY timer. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighborhood_a3d22547792abb033ad9f2a2e6b8093ff}{event\_\-receive\_\-hello} (\hyperlink{classMessage}{Message} $\ast$msg, const \hyperlink{classIPv4}{IPv4} \&remote\_\-addr, const \hyperlink{classIPv4}{IPv4} \&local\_\-addr)
\begin{DoxyCompactList}\small\item\em Callback method to: process an incoming HELLO message. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighborhood_afb23c79767b9fae0ef95aab01c57b708}{event\_\-send\_\-tc} ()
\begin{DoxyCompactList}\small\item\em Callback method to: service \hyperlink{protocolthe-p}{the} TC transmission timer. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_a641afdbde69d7d126dc20b4af4c539bc}{
void \hyperlink{classNeighborhood_a641afdbde69d7d126dc20b4af4c539bc}{stop\_\-all\_\-timers} ()}
\label{classNeighborhood_a641afdbde69d7d126dc20b4af4c539bc}

\begin{DoxyCompactList}\small\item\em Stop all timers in \hyperlink{classNeighborhood}{Neighborhood}. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_ae92bf0a42526fef328abb2b195246579}{
void \hyperlink{classNeighborhood_ae92bf0a42526fef328abb2b195246579}{start\_\-tc\_\-timer} ()}
\label{classNeighborhood_ae92bf0a42526fef328abb2b195246579}

\begin{DoxyCompactList}\small\item\em Start \hyperlink{protocolthe-p}{the} TC transmission interval timer. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_a1e4ffa9a86c94cb7ae9e9e726a360eef}{
void \hyperlink{classNeighborhood_a1e4ffa9a86c94cb7ae9e9e726a360eef}{stop\_\-tc\_\-timer} ()}
\label{classNeighborhood_a1e4ffa9a86c94cb7ae9e9e726a360eef}

\begin{DoxyCompactList}\small\item\em Stop \hyperlink{protocolthe-p}{the} TC transmission interval timer. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_a886625fc30dd99e7f1b42272a09e8452}{
void \hyperlink{classNeighborhood_a886625fc30dd99e7f1b42272a09e8452}{restart\_\-tc\_\-timer} ()}
\label{classNeighborhood_a886625fc30dd99e7f1b42272a09e8452}

\begin{DoxyCompactList}\small\item\em Restart \hyperlink{protocolthe-p}{the} TC transmission interval timer. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Types}
\begin{DoxyCompactItemize}
\item 
enum {\bfseries TcTimerState} \{ {\bfseries TC\_\-STOPPED} =  0, 
{\bfseries TC\_\-RUNNING} =  1, 
{\bfseries TC\_\-FINISHING} =  2
 \}
\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
const \hyperlink{classLogicalLink}{LogicalLink} $\ast$ \hyperlink{classNeighborhood_a132f520351485b46da61b2bff5674b9e}{find\_\-best\_\-link} (const \hyperlink{classNeighbor}{Neighbor} $\ast$n)  throw (BadLinkCoverage)
\begin{DoxyCompactList}\small\item\em Find \hyperlink{protocolthe-p}{the} best link to a neighbor N. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighborhood_ab6a0d707094131a36f4c9620fe2019b2}{push\_\-neighbor} (const \hyperlink{classNeighbor}{Neighbor} $\ast$n)
\begin{DoxyCompactList}\small\item\em \hyperlink{classPush}{Push} a single \hyperlink{classNeighbor}{Neighbor}, and its links, to \hyperlink{protocolthe-p}{the} \hyperlink{classRouteManager}{RouteManager}. \item\end{DoxyCompactList}\item 
const \hyperlink{classTwoHopLink}{TwoHopLink} $\ast$ \hyperlink{classNeighborhood_ab3d954410fb8ce00a95ffc3c700a54f1}{find\_\-best\_\-twohop\_\-link} (const \hyperlink{classTwoHopNeighbor}{TwoHopNeighbor} $\ast$n2)  throw (BadTwoHopCoverage)
\begin{DoxyCompactList}\small\item\em Find \hyperlink{protocolthe-p}{the} best link to a two-\/hop neighbor N2. \item\end{DoxyCompactList}\item 
bool \hyperlink{classNeighborhood_a4879c93f74ed1b1f29e9ed02da2dfa06}{push\_\-twohop\_\-neighbor} (\hyperlink{classTwoHopNeighbor}{TwoHopNeighbor} $\ast$n2)
\begin{DoxyCompactList}\small\item\em \hyperlink{classPush}{Push} a single TwoHopNeigbor, and its links, to \hyperlink{protocolthe-p}{the} \hyperlink{classRouteManager}{RouteManager}. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_a8f05893ecdbd915d64b5e4d32444cd45}{
void \hyperlink{classNeighborhood_a8f05893ecdbd915d64b5e4d32444cd45}{finish\_\-tc\_\-timer} ()}
\label{classNeighborhood_a8f05893ecdbd915d64b5e4d32444cd45}

\begin{DoxyCompactList}\small\item\em Transition to \hyperlink{protocolthe-p}{the} 'finish' state for \hyperlink{protocolthe-p}{the} TC timer. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_a00fc0d845c2f810b318d65bcbc772691}{
void \hyperlink{classNeighborhood_a00fc0d845c2f810b318d65bcbc772691}{reschedule\_\-immediate\_\-tc\_\-timer} ()}
\label{classNeighborhood_a00fc0d845c2f810b318d65bcbc772691}

\begin{DoxyCompactList}\small\item\em Schedule \hyperlink{protocolthe-p}{the} TC timer as soon as possible. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_a4d7f82ccf62ec31fb7513db5ce3bf4f6}{
void \hyperlink{classNeighborhood_a4d7f82ccf62ec31fb7513db5ce3bf4f6}{reschedule\_\-tc\_\-timer} ()}
\label{classNeighborhood_a4d7f82ccf62ec31fb7513db5ce3bf4f6}

\begin{DoxyCompactList}\small\item\em Reschedule \hyperlink{protocolthe-p}{the} TC timer if \hyperlink{protocolthe-p}{the} TC interval changed. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classNeighborhood_aa66ee59c0d8fa12ac55e712644e24515}{
\hyperlink{classOlsr}{Olsr} \& {\bfseries \_\-olsr}}
\label{classNeighborhood_aa66ee59c0d8fa12ac55e712644e24515}

\item 
\hypertarget{classNeighborhood_a8749072d6b29b8ad59fb6d0265c08364}{
\hyperlink{classEventLoop}{EventLoop} \& {\bfseries \_\-eventloop}}
\label{classNeighborhood_a8749072d6b29b8ad59fb6d0265c08364}

\item 
\hypertarget{classNeighborhood_a8181c41ecd960fde5dee9fad365f2c0d}{
\hyperlink{classFaceManager}{FaceManager} \& {\bfseries \_\-fm}}
\label{classNeighborhood_a8181c41ecd960fde5dee9fad365f2c0d}

\item 
\hypertarget{classNeighborhood_a56d76b5ebf76789e2c6620cd759f84c9}{
\hyperlink{classTopologyManager}{TopologyManager} $\ast$ {\bfseries \_\-tm}}
\label{classNeighborhood_a56d76b5ebf76789e2c6620cd759f84c9}

\item 
\hypertarget{classNeighborhood_a4f169fee392e75c0ace7eb07617fe067}{
\hyperlink{classRouteManager}{RouteManager} $\ast$ {\bfseries \_\-rm}}
\label{classNeighborhood_a4f169fee392e75c0ace7eb07617fe067}

\item 
\hypertarget{classNeighborhood_ad2af51c3a6b5d8ff97fc0459618e3fd4}{
\hyperlink{structLinkOrderPred}{LinkOrderPred} {\bfseries \_\-link\_\-order\_\-pred}}
\label{classNeighborhood_ad2af51c3a6b5d8ff97fc0459618e3fd4}

\item 
\hypertarget{classNeighborhood_adbcc50830e890aa83027ae5049a64732}{
\hyperlink{structTwoHopLinkOrderPred}{TwoHopLinkOrderPred} {\bfseries \_\-twohop\_\-link\_\-order\_\-pred}}
\label{classNeighborhood_adbcc50830e890aa83027ae5049a64732}

\item 
\hypertarget{classNeighborhood_a5738cbea74459f175f57036cbeed1ca1}{
\hyperlink{structOlsrTypes_a5c8f1d4f06caa7b0cb4b05f7aef7b67f}{OlsrTypes::LogicalLinkID} {\bfseries \_\-next\_\-linkid}}
\label{classNeighborhood_a5738cbea74459f175f57036cbeed1ca1}

\item 
\hypertarget{classNeighborhood_a1fd2aba03dc3af9de76fb2f14ba61140}{
\hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID} {\bfseries \_\-next\_\-neighborid}}
\label{classNeighborhood_a1fd2aba03dc3af9de76fb2f14ba61140}

\item 
\hypertarget{classNeighborhood_ac6c1b954839ad9d5b04bf01f4026905a}{
\hyperlink{structOlsrTypes_a5341e986890944c45a8362cd9d8916e7}{OlsrTypes::TwoHopLinkID} {\bfseries \_\-next\_\-twohop\_\-linkid}}
\label{classNeighborhood_ac6c1b954839ad9d5b04bf01f4026905a}

\item 
\hypertarget{classNeighborhood_a98af303702391e9e25da81733a71e57e}{
\hyperlink{structOlsrTypes_af87f2dd463b624b5e0cb89d476ff5485}{OlsrTypes::TwoHopNodeID} {\bfseries \_\-next\_\-twohop\_\-nodeid}}
\label{classNeighborhood_a98af303702391e9e25da81733a71e57e}

\item 
\hypertarget{classNeighborhood_addf3e8f354ea1df6f1301add3c41fe3a}{
uint32\_\-t \hyperlink{classNeighborhood_addf3e8f354ea1df6f1301add3c41fe3a}{\_\-enabled\_\-face\_\-count}}
\label{classNeighborhood_addf3e8f354ea1df6f1301add3c41fe3a}

\begin{DoxyCompactList}\small\item\em The count of administratively up and running OLSR interfaces in this OLSR routing process. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_a3a3bb6eb41dbf0e7ac0496e92999e56e}{
\hyperlink{structOlsrTypes_a0dc070ed0b3ef1b8e99e93c333c8ed2e}{OlsrTypes::WillType} \hyperlink{classNeighborhood_a3a3bb6eb41dbf0e7ac0496e92999e56e}{\_\-willingness}}
\label{classNeighborhood_a3a3bb6eb41dbf0e7ac0496e92999e56e}

\begin{DoxyCompactList}\small\item\em Willingness of this node to forward packets for other nodes. \item\end{DoxyCompactList}\item 
\hyperlink{classTimeVal}{TimeVal} \hyperlink{classNeighborhood_a98d38c4070eab077f8fb03a501abcfa9}{\_\-refresh\_\-interval}
\begin{DoxyCompactList}\small\item\em The REFRESH\_\-INTERVAL protocol control variable. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_a85eab8114e393b5bcd0f4b44d52e32fa}{
bool \hyperlink{classNeighborhood_a85eab8114e393b5bcd0f4b44d52e32fa}{\_\-mpr\_\-computation\_\-enabled}}
\label{classNeighborhood_a85eab8114e393b5bcd0f4b44d52e32fa}

\begin{DoxyCompactList}\small\item\em true if \hyperlink{protocolthe-p}{the} MPR algorithm is enabled, false if all one-\/hop neighbors willing to forward should always be considered as MPRs. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_a9c275541ae588974cfe98a1a17017d21}{
uint32\_\-t \hyperlink{classNeighborhood_a9c275541ae588974cfe98a1a17017d21}{\_\-mpr\_\-coverage}}
\label{classNeighborhood_a9c275541ae588974cfe98a1a17017d21}

\begin{DoxyCompactList}\small\item\em Section 16.1: MPR\_\-COVERAGE Parameter. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_a169cddf6d58aa76d224783e7654fe44e}{
\hyperlink{classXorpTask}{XorpTask} \hyperlink{classNeighborhood_a169cddf6d58aa76d224783e7654fe44e}{\_\-mpr\_\-recount\_\-task}}
\label{classNeighborhood_a169cddf6d58aa76d224783e7654fe44e}

\begin{DoxyCompactList}\small\item\em A task which may be scheduled to recompute \hyperlink{protocolthe-p}{the} global MPR set. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_a8991f1ebbee993da1a457c1df22ca814}{
set$<$ \hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID} $>$ \hyperlink{classNeighborhood_a8991f1ebbee993da1a457c1df22ca814}{\_\-mpr\_\-selector\_\-set}}
\label{classNeighborhood_a8991f1ebbee993da1a457c1df22ca814}

\begin{DoxyCompactList}\small\item\em The neighbors which select this node as an MPR. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_aa8f0e0d3a3f336872bd3bc8bf1ae3ee2}{
set$<$ \hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID} $>$ \hyperlink{classNeighborhood_aa8f0e0d3a3f336872bd3bc8bf1ae3ee2}{\_\-mpr\_\-set}}
\label{classNeighborhood_aa8f0e0d3a3f336872bd3bc8bf1ae3ee2}

\begin{DoxyCompactList}\small\item\em The global set of neighbors which this node has selected as MPRs. \item\end{DoxyCompactList}\item 
\hyperlink{classTimeVal}{TimeVal} \hyperlink{classNeighborhood_ada1442154b5762d560d0636a8994de8e}{\_\-tc\_\-interval}
\begin{DoxyCompactList}\small\item\em The TC\_\-INTERVAL protocol control variable. \item\end{DoxyCompactList}\item 
\hyperlink{structOlsrTypes_ae08a8eaf283793888111c29f1b289b6d}{OlsrTypes::TcRedundancyType} \hyperlink{classNeighborhood_aafd775c9bd17831b6c8fe3d7210979c1}{\_\-tc\_\-redundancy}
\begin{DoxyCompactList}\small\item\em The TC\_\-REDUNDANCY protocol control variable. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_a992f2421482a3f2b0f658a7e03b006e8}{
\hyperlink{classXorpTimer}{XorpTimer} \hyperlink{classNeighborhood_a992f2421482a3f2b0f658a7e03b006e8}{\_\-tc\_\-timer}}
\label{classNeighborhood_a992f2421482a3f2b0f658a7e03b006e8}

\begin{DoxyCompactList}\small\item\em The TC broadcast timer. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_a841f781a19bb89684c6f5726598f3613}{
TcTimerState \hyperlink{classNeighborhood_a841f781a19bb89684c6f5726598f3613}{\_\-tc\_\-timer\_\-state}}
\label{classNeighborhood_a841f781a19bb89684c6f5726598f3613}

\begin{DoxyCompactList}\small\item\em The current state of \hyperlink{protocolthe-p}{the} TC timer: STOPPED, RUNNING or FINISHING. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_ab2a6cce7c1cd78b92f16493e0f1a89e4}{
uint32\_\-t \hyperlink{classNeighborhood_ab2a6cce7c1cd78b92f16493e0f1a89e4}{\_\-tc\_\-timer\_\-ticks\_\-remaining}}
\label{classNeighborhood_ab2a6cce7c1cd78b92f16493e0f1a89e4}

\begin{DoxyCompactList}\small\item\em The number of ticks remaining until \hyperlink{protocolthe-p}{the} TC timer transitions from FINISHING state to STOPPED state. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_a1ad3b337f5278be8e6aeab8a1d916ad0}{
uint16\_\-t \hyperlink{classNeighborhood_a1ad3b337f5278be8e6aeab8a1d916ad0}{\_\-tc\_\-current\_\-ansn}}
\label{classNeighborhood_a1ad3b337f5278be8e6aeab8a1d916ad0}

\begin{DoxyCompactList}\small\item\em The current advertised neighbor sequence number. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_aaa12233db8adfaf05f88083fcfa6a48c}{
uint16\_\-t \hyperlink{classNeighborhood_aaa12233db8adfaf05f88083fcfa6a48c}{\_\-tc\_\-previous\_\-ans\_\-count}}
\label{classNeighborhood_aaa12233db8adfaf05f88083fcfa6a48c}

\begin{DoxyCompactList}\small\item\em The previous advertised neighbor count. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_a988de969208500930edb10e73cf5afca}{
bool \hyperlink{classNeighborhood_a988de969208500930edb10e73cf5afca}{\_\-loss\_\-triggered\_\-tc\_\-enabled}}
\label{classNeighborhood_a988de969208500930edb10e73cf5afca}

\begin{DoxyCompactList}\small\item\em true if TC messages should be flooded immediately when an MPR selector is deleted. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_a3a0a0429b701fb7f5744656da4721c89}{
bool \hyperlink{classNeighborhood_a3a0a0429b701fb7f5744656da4721c89}{\_\-change\_\-triggered\_\-tc\_\-enabled}}
\label{classNeighborhood_a3a0a0429b701fb7f5744656da4721c89}

\begin{DoxyCompactList}\small\item\em true if TC messages should be flooded immediately when any change in \hyperlink{protocolthe-p}{the} ANSN is detected. \item\end{DoxyCompactList}\item 
map$<$ \hyperlink{structOlsrTypes_a5c8f1d4f06caa7b0cb4b05f7aef7b67f}{OlsrTypes::LogicalLinkID}, \hyperlink{classLogicalLink}{LogicalLink} $\ast$ $>$ \hyperlink{classNeighborhood_a0d37b7f805bb400aac075d8d002a0246}{\_\-links}
\begin{DoxyCompactList}\small\item\em This node's links to neighbors. \item\end{DoxyCompactList}\item 
map$<$ pair$<$ \hyperlink{classIPv4}{IPv4}, \hyperlink{classIPv4}{IPv4} $>$, \hyperlink{structOlsrTypes_a5c8f1d4f06caa7b0cb4b05f7aef7b67f}{OlsrTypes::LogicalLinkID} $>$ \hyperlink{classNeighborhood_a51aedf84fc2631b7b5ee83d1d0f4c9dc}{\_\-link\_\-addr}
\begin{DoxyCompactList}\small\item\em A map providing lookup of Link ID based on remote and local protocol addresses in that order. \item\end{DoxyCompactList}\item 
map$<$ \hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID}, \hyperlink{classNeighbor}{Neighbor} $\ast$ $>$ \hyperlink{classNeighborhood_aa17dabaf1698842f1b921f05c3b278a3}{\_\-neighbors}
\begin{DoxyCompactList}\small\item\em This node's neighbors. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_ad7b10519fc5c501c43bb8af59da94e6e}{
map$<$ \hyperlink{classIPv4}{IPv4}, \hyperlink{structOlsrTypes_a246952255e8728960d15898f8f96e017}{OlsrTypes::NeighborID} $>$ \hyperlink{classNeighborhood_ad7b10519fc5c501c43bb8af59da94e6e}{\_\-neighbor\_\-addr}}
\label{classNeighborhood_ad7b10519fc5c501c43bb8af59da94e6e}

\begin{DoxyCompactList}\small\item\em A map providing lookup of \hyperlink{classNeighbor}{Neighbor} ID based on \hyperlink{protocolthe-p}{the} node's main address. \item\end{DoxyCompactList}\item 
map$<$ \hyperlink{structOlsrTypes_a5341e986890944c45a8362cd9d8916e7}{OlsrTypes::TwoHopLinkID}, \hyperlink{classTwoHopLink}{TwoHopLink} $\ast$ $>$ \hyperlink{classNeighborhood_a43517d672cc01d567c0b2dc8283bd05d}{\_\-twohop\_\-links}
\begin{DoxyCompactList}\small\item\em The two-\/hop link table. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_ad3b2858433ccff89b14e91156e9c0494}{
map$<$ pair$<$ \hyperlink{classIPv4}{IPv4}, \hyperlink{classIPv4}{IPv4} $>$, \hyperlink{structOlsrTypes_a5341e986890944c45a8362cd9d8916e7}{OlsrTypes::TwoHopLinkID} $>$ \hyperlink{classNeighborhood_ad3b2858433ccff89b14e91156e9c0494}{\_\-twohop\_\-link\_\-addrs}}
\label{classNeighborhood_ad3b2858433ccff89b14e91156e9c0494}

\begin{DoxyCompactList}\small\item\em A map providing lookup of two-\/hop link ID based on \hyperlink{protocolthe-p}{the} main addresses of \hyperlink{protocolthe-p}{the} one-\/hop and two-\/hop neighbors, in that order. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_a0e716b4e3d6bbae8c485debc7d07f814}{
map$<$ \hyperlink{structOlsrTypes_af87f2dd463b624b5e0cb89d476ff5485}{OlsrTypes::TwoHopNodeID}, \hyperlink{classTwoHopNeighbor}{TwoHopNeighbor} $\ast$ $>$ \hyperlink{classNeighborhood_a0e716b4e3d6bbae8c485debc7d07f814}{\_\-twohop\_\-nodes}}
\label{classNeighborhood_a0e716b4e3d6bbae8c485debc7d07f814}

\begin{DoxyCompactList}\small\item\em The two-\/hop neighbor table. \item\end{DoxyCompactList}\item 
\hypertarget{classNeighborhood_a4598f32a94eb3f592821505cb6465793}{
map$<$ \hyperlink{classIPv4}{IPv4}, \hyperlink{structOlsrTypes_af87f2dd463b624b5e0cb89d476ff5485}{OlsrTypes::TwoHopNodeID} $>$ \hyperlink{classNeighborhood_a4598f32a94eb3f592821505cb6465793}{\_\-twohop\_\-node\_\-addrs}}
\label{classNeighborhood_a4598f32a94eb3f592821505cb6465793}

\begin{DoxyCompactList}\small\item\em A map providing lookup of two-\/hop neighbor ID based on its main protocol address and \hyperlink{protocolthe-p}{the} next-\/hop used to reach it. \item\end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Representation of OLSR node's one-\/hop and two-\/hop neighborhood. Responsible for originating TC broadcasts when \hyperlink{protocolthe-p}{the} node is selected as an MPR by other nodes. 

\subsection{Member Function Documentation}
\hypertarget{classNeighborhood_a4c467af4b3433d8dc10291116838cd47}{
\index{Neighborhood@{Neighborhood}!add\_\-cand\_\-mpr@{add\_\-cand\_\-mpr}}
\index{add\_\-cand\_\-mpr@{add\_\-cand\_\-mpr}!Neighborhood@{Neighborhood}}
\subsubsection[{add\_\-cand\_\-mpr}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::add\_\-cand\_\-mpr (
\begin{DoxyParamCaption}
\item[{const {\bf OlsrTypes::NeighborID}}]{nid}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a4c467af4b3433d8dc10291116838cd47}


Add a neighbor to \hyperlink{protocolthe-p}{the} set of MPR candidates for \hyperlink{protocolthe-p}{the} interfaces from which it is reachable. 


\begin{DoxyParams}{Parameters}
{\em nid} & \hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} neighbor to add. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_aa82d929620b620c76efb4581e5751d64}{
\index{Neighborhood@{Neighborhood}!add\_\-face@{add\_\-face}}
\index{add\_\-face@{add\_\-face}!Neighborhood@{Neighborhood}}
\subsubsection[{add\_\-face}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::add\_\-face (
\begin{DoxyParamCaption}
\item[{const {\bf OlsrTypes::FaceID}}]{faceid}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_aa82d929620b620c76efb4581e5751d64}


Add an interface to \hyperlink{protocolthe-p}{the} neighborhood. 

Called whenever an instance of \hyperlink{classFace}{Face} is configured administratively up.


\begin{DoxyParams}{Parameters}
{\em faceid} & The ID of \hyperlink{protocolthe-p}{the} interface which has been configured administratively up. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_a5ce6fc87ae9163b9787922408cacebfa}{
\index{Neighborhood@{Neighborhood}!add\_\-link@{add\_\-link}}
\index{add\_\-link@{add\_\-link}!Neighborhood@{Neighborhood}}
\subsubsection[{add\_\-link}]{\setlength{\rightskip}{0pt plus 5cm}{\bf OlsrTypes::LogicalLinkID} Neighborhood::add\_\-link (
\begin{DoxyParamCaption}
\item[{const {\bf TimeVal} \&}]{vtime, }
\item[{const {\bf IPv4} \&}]{remote\_\-addr, }
\item[{const {\bf IPv4} \&}]{local\_\-addr}
\end{DoxyParamCaption}
)  throw ({\bf BadLogicalLink})}}
\label{classNeighborhood_a5ce6fc87ae9163b9787922408cacebfa}


Add a link to \hyperlink{protocolthe-p}{the} local link database. 


\begin{DoxyParams}{Parameters}
{\em vtime} & \hyperlink{protocolthe-p}{the} validity time of \hyperlink{protocolthe-p}{the} new link. \\
\hline
{\em remote\_\-addr} & \hyperlink{protocolthe-p}{the} protocol address of \hyperlink{protocolthe-p}{the} remote interface at \hyperlink{protocolthe-p}{the} far end of \hyperlink{protocolthe-p}{the} link. \\
\hline
{\em local\_\-addr} & \hyperlink{protocolthe-p}{the} protocol address of \hyperlink{protocolthe-p}{the} local interface at \hyperlink{protocolthe-p}{the} near end of \hyperlink{protocolthe-p}{the} link. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} new link. 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em \hyperlink{classBadLogicalLink}{BadLogicalLink}} & if \hyperlink{protocolthe-p}{the} link could not be created. \\
\hline
\end{DoxyExceptions}
\hypertarget{classNeighborhood_adcfc3d879a888f60217b60956d3542fb}{
\index{Neighborhood@{Neighborhood}!add\_\-neighbor@{add\_\-neighbor}}
\index{add\_\-neighbor@{add\_\-neighbor}!Neighborhood@{Neighborhood}}
\subsubsection[{add\_\-neighbor}]{\setlength{\rightskip}{0pt plus 5cm}{\bf OlsrTypes::NeighborID} Neighborhood::add\_\-neighbor (
\begin{DoxyParamCaption}
\item[{const {\bf IPv4} \&}]{main\_\-addr, }
\item[{{\bf OlsrTypes::LogicalLinkID}}]{linkid}
\end{DoxyParamCaption}
)  throw ({\bf BadNeighbor})}}
\label{classNeighborhood_adcfc3d879a888f60217b60956d3542fb}


Add a new \hyperlink{classNeighbor}{Neighbor} to \hyperlink{protocolthe-p}{the} one-\/hop neighbor database. 

A \hyperlink{classNeighbor}{Neighbor} must be created with at least one \hyperlink{classLogicalLink}{LogicalLink}.


\begin{DoxyParams}{Parameters}
{\em main\_\-addr} & The main address of \hyperlink{protocolthe-p}{the} new neighbor. \\
\hline
{\em linkid} & The ID of \hyperlink{protocolthe-p}{the} Neighbor's first link. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} newly created neighbor. 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em \hyperlink{classBadNeighbor}{BadNeighbor}} & if \hyperlink{protocolthe-p}{the} neighbor entry could not be created. \\
\hline
\end{DoxyExceptions}
\hypertarget{classNeighborhood_a6abf8aa4c17a172d569b0422397d6191}{
\index{Neighborhood@{Neighborhood}!add\_\-twohop\_\-link@{add\_\-twohop\_\-link}}
\index{add\_\-twohop\_\-link@{add\_\-twohop\_\-link}!Neighborhood@{Neighborhood}}
\subsubsection[{add\_\-twohop\_\-link}]{\setlength{\rightskip}{0pt plus 5cm}{\bf OlsrTypes::TwoHopLinkID} Neighborhood::add\_\-twohop\_\-link (
\begin{DoxyParamCaption}
\item[{{\bf Neighbor} $\ast$}]{nexthop, }
\item[{const {\bf IPv4} \&}]{remote\_\-addr, }
\item[{const {\bf TimeVal} \&}]{vtime}
\end{DoxyParamCaption}
)  throw ({\bf BadTwoHopLink})}}
\label{classNeighborhood_a6abf8aa4c17a172d569b0422397d6191}


Add a \hyperlink{classTwoHopLink}{TwoHopLink} to \hyperlink{protocolthe-p}{the} \hyperlink{classNeighborhood}{Neighborhood}. 

The constructor signature forces us to associate \hyperlink{protocolthe-p}{the} near end of \hyperlink{protocolthe-p}{the} \hyperlink{classTwoHopLink}{TwoHopLink} with a \hyperlink{classNeighbor}{Neighbor}. It MUST be associated with a \hyperlink{classTwoHopNeighbor}{TwoHopNeighbor} after construction to be considered valid.


\begin{DoxyParams}{Parameters}
{\em nexthop} & The strict one-\/hop neighbor at \hyperlink{protocolthe-p}{the} near end of \hyperlink{protocolthe-p}{the} \hyperlink{classTwoHopLink}{TwoHopLink} being created. \\
\hline
{\em remote\_\-addr} & The two-\/hop neighbor at \hyperlink{protocolthe-p}{the} far end of \hyperlink{protocolthe-p}{the} \hyperlink{classTwoHopLink}{TwoHopLink} being created. \\
\hline
{\em vtime} & The time for which \hyperlink{protocolthe-p}{the} \hyperlink{classTwoHopLink}{TwoHopLink} remains valid. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} newly created \hyperlink{classTwoHopLink}{TwoHopLink}. 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em \hyperlink{classBadTwoHopLink}{BadTwoHopLink}} & if \hyperlink{protocolthe-p}{the} \hyperlink{classTwoHopLink}{TwoHopLink} could not be created. \\
\hline
\end{DoxyExceptions}
\hypertarget{classNeighborhood_a4c18b447b3067573402527cf6d64f09c}{
\index{Neighborhood@{Neighborhood}!add\_\-twohop\_\-node@{add\_\-twohop\_\-node}}
\index{add\_\-twohop\_\-node@{add\_\-twohop\_\-node}!Neighborhood@{Neighborhood}}
\subsubsection[{add\_\-twohop\_\-node}]{\setlength{\rightskip}{0pt plus 5cm}{\bf OlsrTypes::TwoHopNodeID} Neighborhood::add\_\-twohop\_\-node (
\begin{DoxyParamCaption}
\item[{const {\bf IPv4} \&}]{main\_\-addr, }
\item[{const {\bf OlsrTypes::TwoHopLinkID}}]{tlid}
\end{DoxyParamCaption}
)  throw ({\bf BadTwoHopNode})}}
\label{classNeighborhood_a4c18b447b3067573402527cf6d64f09c}


Add a two-\/hop neighbor to \hyperlink{protocolthe-p}{the} two-\/hop neighborhood. 


\begin{DoxyParams}{Parameters}
{\em main\_\-addr} & \hyperlink{protocolthe-p}{the} main address of \hyperlink{protocolthe-p}{the} two-\/hop neighbor to create. \\
\hline
{\em tlid} & \hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} initial link to this two-\/hop neighbor. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} newly created two-\/hop neighbor. 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em \hyperlink{classBadTwoHopNode}{BadTwoHopNode}} & if \hyperlink{protocolthe-p}{the} two-\/hop neighbor could not be created. \\
\hline
\end{DoxyExceptions}
\hypertarget{classNeighborhood_a1f5a48385d79a1a4d1d7022281c455c2}{
\index{Neighborhood@{Neighborhood}!clear\_\-links@{clear\_\-links}}
\index{clear\_\-links@{clear\_\-links}!Neighborhood@{Neighborhood}}
\subsubsection[{clear\_\-links}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::clear\_\-links (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a1f5a48385d79a1a4d1d7022281c455c2}


Clear \hyperlink{protocolthe-p}{the} neighborhood one-\/hop links. 

The neighbors and two-\/hop neighbors associated with these links will be removed. Assertions for this are in \hyperlink{protocolthe-p}{the} destructor. \hypertarget{classNeighborhood_a835845e64be27e2b89d26c6a31f40428}{
\index{Neighborhood@{Neighborhood}!consider\_\-persistent\_\-cand\_\-mprs@{consider\_\-persistent\_\-cand\_\-mprs}}
\index{consider\_\-persistent\_\-cand\_\-mprs@{consider\_\-persistent\_\-cand\_\-mprs}!Neighborhood@{Neighborhood}}
\subsubsection[{consider\_\-persistent\_\-cand\_\-mprs}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t Neighborhood::consider\_\-persistent\_\-cand\_\-mprs (
\begin{DoxyParamCaption}
\item[{ostringstream \&}]{dbg}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a835845e64be27e2b89d26c6a31f40428}


Consider persistent MPR candidates for MPR selection. 

8.3.1, 1: Start with an MPR set made of all members of N with willingness equal to WILL\_\-ALWAYS.

This introduces \hyperlink{protocolthe-p}{the} funky situation that a neighbor may be selected as an MPR even if it has no two-\/hop links. Such neighbors are always chosen as MPRs before other neighbors.

\begin{DoxyReturn}{Returns}
The number of two-\/hop neighbors which have been covered by considering \hyperlink{protocolthe-p}{the} persistent MPR candidates. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_a12b0beeab777cc8dd18ed6c0403786bc}{
\index{Neighborhood@{Neighborhood}!consider\_\-poorly\_\-covered\_\-twohops@{consider\_\-poorly\_\-covered\_\-twohops}}
\index{consider\_\-poorly\_\-covered\_\-twohops@{consider\_\-poorly\_\-covered\_\-twohops}!Neighborhood@{Neighborhood}}
\subsubsection[{consider\_\-poorly\_\-covered\_\-twohops}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t Neighborhood::consider\_\-poorly\_\-covered\_\-twohops (
\begin{DoxyParamCaption}
\item[{ostringstream \&}]{dbg}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a12b0beeab777cc8dd18ed6c0403786bc}


Consider MPR coverage of poorly covered two-\/hop neighbors. 

8.3.1, 3: Ensure that for all uncovered strict N2 reachable $\ast$only via 1 edge$\ast$, their neighbor N is selected as an MPR.

TODO: Use ETX measurements.

\begin{DoxyReturn}{Returns}
The number of two-\/hop neighbors which have been covered by considering \hyperlink{protocolthe-p}{the} persistent MPR candidates. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_a308e8740cb560c281cd1bb48ea7c3c79}{
\index{Neighborhood@{Neighborhood}!consider\_\-remaining\_\-cand\_\-mprs@{consider\_\-remaining\_\-cand\_\-mprs}}
\index{consider\_\-remaining\_\-cand\_\-mprs@{consider\_\-remaining\_\-cand\_\-mprs}!Neighborhood@{Neighborhood}}
\subsubsection[{consider\_\-remaining\_\-cand\_\-mprs}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::consider\_\-remaining\_\-cand\_\-mprs (
\begin{DoxyParamCaption}
\item[{const size\_\-t}]{n2\_\-count, }
\item[{size\_\-t \&}]{covered\_\-n2\_\-count, }
\item[{ostringstream \&}]{oss}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a308e8740cb560c281cd1bb48ea7c3c79}


Consider remaining MPR candidates for MPR selection. 

Candidates are considered in descending order of willingness, reachability and degree.

Note: As we only use \hyperlink{protocolthe-p}{the} result of \hyperlink{protocolthe-p}{the} insertion sort in this scope, this block is a candidate for a Boost++ filter\_\-iterator. However a filter iterator might keep scanning \hyperlink{protocolthe-p}{the} N space and blowing \hyperlink{protocolthe-p}{the} l2/l3 cache.


\begin{DoxyParams}{Parameters}
{\em n2\_\-count} & The total number of N2 which must be reachable by \hyperlink{protocolthe-p}{the} MPR set, used as a recursion upper bound. \\
\hline
{\em covered\_\-n2\_\-count} & A reference to \hyperlink{protocolthe-p}{the} cumulative number of N2 which are reachable by \hyperlink{protocolthe-p}{the} MPR set, and which this method will update. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_a9abaaebaf698f8599ab8333ca161a22d}{
\index{Neighborhood@{Neighborhood}!delete\_\-face@{delete\_\-face}}
\index{delete\_\-face@{delete\_\-face}!Neighborhood@{Neighborhood}}
\subsubsection[{delete\_\-face}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::delete\_\-face (
\begin{DoxyParamCaption}
\item[{const {\bf OlsrTypes::FaceID}}]{faceid}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a9abaaebaf698f8599ab8333ca161a22d}


Delete an interface from \hyperlink{protocolthe-p}{the} neighborhood. 

Called whenever an instance of \hyperlink{classFace}{Face} is configured administratively down.


\begin{DoxyParams}{Parameters}
{\em faceid} & The ID of \hyperlink{protocolthe-p}{the} interface which has been configured administratively down. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_ac90501e63c0bfa18c8e457f22970192c}{
\index{Neighborhood@{Neighborhood}!delete\_\-link@{delete\_\-link}}
\index{delete\_\-link@{delete\_\-link}!Neighborhood@{Neighborhood}}
\subsubsection[{delete\_\-link}]{\setlength{\rightskip}{0pt plus 5cm}bool Neighborhood::delete\_\-link (
\begin{DoxyParamCaption}
\item[{{\bf OlsrTypes::LogicalLinkID}}]{linkid}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_ac90501e63c0bfa18c8e457f22970192c}


Delete \hyperlink{protocolthe-p}{the} link tuple specified by \hyperlink{protocolthe-p}{the} given link id. 

Note: The associated \hyperlink{classNeighbor}{Neighbor} may be deleted. State change is also propagated to \hyperlink{protocolthe-p}{the} \hyperlink{classFaceManager}{FaceManager}.


\begin{DoxyParams}{Parameters}
{\em linkid} & \hyperlink{protocolthe-p}{the} identifier of \hyperlink{protocolthe-p}{the} link tuple. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} link was deleted. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_a6a37f644cb62b518b573dcfb8a307ad0}{
\index{Neighborhood@{Neighborhood}!delete\_\-mpr\_\-selector@{delete\_\-mpr\_\-selector}}
\index{delete\_\-mpr\_\-selector@{delete\_\-mpr\_\-selector}!Neighborhood@{Neighborhood}}
\subsubsection[{delete\_\-mpr\_\-selector}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::delete\_\-mpr\_\-selector (
\begin{DoxyParamCaption}
\item[{const {\bf OlsrTypes::NeighborID}}]{nid}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a6a37f644cb62b518b573dcfb8a307ad0}


Remove a neighbor from \hyperlink{protocolthe-p}{the} MPR selector set by its ID. 

If \hyperlink{protocolthe-p}{the} node no longer has any MPR selectors, it is no longer considered an MPR, and it must continue to originate empty TCs for TOP\_\-HOLD\_\-TIME, after which it shall stop.


\begin{DoxyParams}{Parameters}
{\em nid} & \hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} \hyperlink{classNeighbor}{Neighbor} to add as an MPR selector. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_afbedccca8b3c76133b51d09750967052}{
\index{Neighborhood@{Neighborhood}!delete\_\-neighbor@{delete\_\-neighbor}}
\index{delete\_\-neighbor@{delete\_\-neighbor}!Neighborhood@{Neighborhood}}
\subsubsection[{delete\_\-neighbor}]{\setlength{\rightskip}{0pt plus 5cm}bool Neighborhood::delete\_\-neighbor (
\begin{DoxyParamCaption}
\item[{const {\bf OlsrTypes::NeighborID}}]{nid}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_afbedccca8b3c76133b51d09750967052}


Delete a neighbor from \hyperlink{protocolthe-p}{the} neighbor database. 

Called when \hyperlink{protocolthe-p}{the} last link to \hyperlink{protocolthe-p}{the} neighbor has been deleted.


\begin{DoxyParams}{Parameters}
{\em nid} & The ID of this neighbor. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} neighbor was removed, false if it cannot be found. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_a5f2f7ae6dac4fabc1a35f6577b9fa98c}{
\index{Neighborhood@{Neighborhood}!delete\_\-twohop\_\-link@{delete\_\-twohop\_\-link}}
\index{delete\_\-twohop\_\-link@{delete\_\-twohop\_\-link}!Neighborhood@{Neighborhood}}
\subsubsection[{delete\_\-twohop\_\-link}]{\setlength{\rightskip}{0pt plus 5cm}bool Neighborhood::delete\_\-twohop\_\-link (
\begin{DoxyParamCaption}
\item[{{\bf OlsrTypes::TwoHopNodeID}}]{tlid}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a5f2f7ae6dac4fabc1a35f6577b9fa98c}


Delete \hyperlink{protocolthe-p}{the} \hyperlink{classTwoHopLink}{TwoHopLink} to a two-\/hop neighbor. 

The deletion is propagated to \hyperlink{protocolthe-p}{the} \hyperlink{classNeighbor}{Neighbor} and \hyperlink{classTwoHopNeighbor}{TwoHopNeighbor} instances on \hyperlink{protocolthe-p}{the} near and far ends of \hyperlink{protocolthe-p}{the} link respectively.


\begin{DoxyParams}{Parameters}
{\em tlid} & ID of \hyperlink{protocolthe-p}{the} two-\/hop link which is to be deleted. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} link thus deleted was \hyperlink{protocolthe-p}{the} last link to \hyperlink{protocolthe-p}{the} two-\/hop node it is used to reach, otherwise false. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_abee5842334a1e1fceb802b7b633087d5}{
\index{Neighborhood@{Neighborhood}!delete\_\-twohop\_\-link\_\-by\_\-addrs@{delete\_\-twohop\_\-link\_\-by\_\-addrs}}
\index{delete\_\-twohop\_\-link\_\-by\_\-addrs@{delete\_\-twohop\_\-link\_\-by\_\-addrs}!Neighborhood@{Neighborhood}}
\subsubsection[{delete\_\-twohop\_\-link\_\-by\_\-addrs}]{\setlength{\rightskip}{0pt plus 5cm}bool Neighborhood::delete\_\-twohop\_\-link\_\-by\_\-addrs (
\begin{DoxyParamCaption}
\item[{const {\bf IPv4} \&}]{nexthop\_\-addr, }
\item[{const {\bf IPv4} \&}]{twohop\_\-addr}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_abee5842334a1e1fceb802b7b633087d5}


Delete \hyperlink{protocolthe-p}{the} \hyperlink{classTwoHopLink}{TwoHopLink} to a two-\/hop neighbor. 

The link is identified by \hyperlink{protocolthe-p}{the} near and far end main addresses.


\begin{DoxyParams}{Parameters}
{\em nexthop\_\-addr} & The address of \hyperlink{protocolthe-p}{the} \hyperlink{classNeighbor}{Neighbor} used to reach \hyperlink{protocolthe-p}{the} two-\/hop neighbor given by twohop\_\-addr. \\
\hline
{\em twohop\_\-addr} & The two-\/hop neighbor whose link has been lost. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if this was \hyperlink{protocolthe-p}{the} last link to \hyperlink{protocolthe-p}{the} two-\/hop neighbor and it was deleted as a result. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_ae4657719e1953ee49eea0b7fde0cc23f}{
\index{Neighborhood@{Neighborhood}!delete\_\-twohop\_\-node@{delete\_\-twohop\_\-node}}
\index{delete\_\-twohop\_\-node@{delete\_\-twohop\_\-node}!Neighborhood@{Neighborhood}}
\subsubsection[{delete\_\-twohop\_\-node}]{\setlength{\rightskip}{0pt plus 5cm}bool Neighborhood::delete\_\-twohop\_\-node (
\begin{DoxyParamCaption}
\item[{{\bf OlsrTypes::TwoHopNodeID}}]{tnid}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_ae4657719e1953ee49eea0b7fde0cc23f}


Delete an entry in \hyperlink{protocolthe-p}{the} two-\/hop neighbor table. 


\begin{DoxyParams}{Parameters}
{\em tnid} & \hyperlink{protocolthe-p}{the} ID of a two-\/hop neighbor. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} neighbor was deleted, otherwise false. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_a4cf3e0f22f1ef8487957d88b50a8b911}{
\index{Neighborhood@{Neighborhood}!event\_\-link\_\-asym\_\-timer@{event\_\-link\_\-asym\_\-timer}}
\index{event\_\-link\_\-asym\_\-timer@{event\_\-link\_\-asym\_\-timer}!Neighborhood@{Neighborhood}}
\subsubsection[{event\_\-link\_\-asym\_\-timer}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::event\_\-link\_\-asym\_\-timer (
\begin{DoxyParamCaption}
\item[{{\bf OlsrTypes::LogicalLinkID}}]{linkid}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a4cf3e0f22f1ef8487957d88b50a8b911}


Callback method to: service a LogicalLink's ASYM timer. 

Whilst \hyperlink{protocolthe-p}{the} ASYM interval timer is pending, \hyperlink{protocolthe-p}{the} link is considered asymmetric. When \hyperlink{protocolthe-p}{the} timer fires, \hyperlink{protocolthe-p}{the} link is considered LOST.


\begin{DoxyParams}{Parameters}
{\em linkid} & \hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} link whose ASYM timer has fired. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_a852876c0027bf890a632724d5594c364}{
\index{Neighborhood@{Neighborhood}!event\_\-link\_\-dead\_\-timer@{event\_\-link\_\-dead\_\-timer}}
\index{event\_\-link\_\-dead\_\-timer@{event\_\-link\_\-dead\_\-timer}!Neighborhood@{Neighborhood}}
\subsubsection[{event\_\-link\_\-dead\_\-timer}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::event\_\-link\_\-dead\_\-timer (
\begin{DoxyParamCaption}
\item[{{\bf OlsrTypes::LogicalLinkID}}]{linkid}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a852876c0027bf890a632724d5594c364}


Callback method to: service a LogicalLink's DEAD timer. 


\begin{DoxyParams}{Parameters}
{\em linkid} & \hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} link whose DEAD timer has fired. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_a0862dac7a8642f8532cd310dc147bdee}{
\index{Neighborhood@{Neighborhood}!event\_\-link\_\-lost\_\-timer@{event\_\-link\_\-lost\_\-timer}}
\index{event\_\-link\_\-lost\_\-timer@{event\_\-link\_\-lost\_\-timer}!Neighborhood@{Neighborhood}}
\subsubsection[{event\_\-link\_\-lost\_\-timer}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::event\_\-link\_\-lost\_\-timer (
\begin{DoxyParamCaption}
\item[{{\bf OlsrTypes::LogicalLinkID}}]{linkid}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a0862dac7a8642f8532cd310dc147bdee}


Callback method to: service a LogicalLink's LOST timer. 

Section 13: Link Layer Notification.

TODO: Not yet implemented, as it relies on link layer support from \hyperlink{protocolthe-p}{the} host platform which does not yet exist. In practice this should not pose a problem, as 802.11 IBSS disassociation is often unreliable anyway.


\begin{DoxyParams}{Parameters}
{\em linkid} & \hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} link whose LOST timer has fired. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_a5625039c14c0172c086ea1b0b6327f5a}{
\index{Neighborhood@{Neighborhood}!event\_\-link\_\-sym\_\-timer@{event\_\-link\_\-sym\_\-timer}}
\index{event\_\-link\_\-sym\_\-timer@{event\_\-link\_\-sym\_\-timer}!Neighborhood@{Neighborhood}}
\subsubsection[{event\_\-link\_\-sym\_\-timer}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::event\_\-link\_\-sym\_\-timer (
\begin{DoxyParamCaption}
\item[{{\bf OlsrTypes::LogicalLinkID}}]{linkid}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a5625039c14c0172c086ea1b0b6327f5a}


Callback method to: service a LogicalLink's SYM timer. 

Whilst \hyperlink{protocolthe-p}{the} SYM interval timer is pending, \hyperlink{protocolthe-p}{the} link is considered symmetric. When \hyperlink{protocolthe-p}{the} timer fires, \hyperlink{protocolthe-p}{the} link is considered ASYM. If both \hyperlink{protocolthe-p}{the} ASYM and SYM timers fire in \hyperlink{protocolthe-p}{the} same event loop quantum, \hyperlink{protocolthe-p}{the} ASYM timer is considered to have priority.


\begin{DoxyParams}{Parameters}
{\em linkid} & \hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} link whose SYM timer has fired. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_aade956ebb1068d4912b8cf6f34d0ba47}{
\index{Neighborhood@{Neighborhood}!event\_\-mpr\_\-selector\_\-expired@{event\_\-mpr\_\-selector\_\-expired}}
\index{event\_\-mpr\_\-selector\_\-expired@{event\_\-mpr\_\-selector\_\-expired}!Neighborhood@{Neighborhood}}
\subsubsection[{event\_\-mpr\_\-selector\_\-expired}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::event\_\-mpr\_\-selector\_\-expired (
\begin{DoxyParamCaption}
\item[{const {\bf OlsrTypes::NeighborID}}]{nid}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_aade956ebb1068d4912b8cf6f34d0ba47}


Callback method to: service an MPR selector's EXPIRY timer. 


\begin{DoxyParams}{Parameters}
{\em nid} & \hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} \hyperlink{classNeighbor}{Neighbor} whose MPR selector tuple has expired. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_a3d22547792abb033ad9f2a2e6b8093ff}{
\index{Neighborhood@{Neighborhood}!event\_\-receive\_\-hello@{event\_\-receive\_\-hello}}
\index{event\_\-receive\_\-hello@{event\_\-receive\_\-hello}!Neighborhood@{Neighborhood}}
\subsubsection[{event\_\-receive\_\-hello}]{\setlength{\rightskip}{0pt plus 5cm}bool Neighborhood::event\_\-receive\_\-hello (
\begin{DoxyParamCaption}
\item[{{\bf Message} $\ast$}]{msg, }
\item[{const {\bf IPv4} \&}]{remote\_\-addr, }
\item[{const {\bf IPv4} \&}]{local\_\-addr}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a3d22547792abb033ad9f2a2e6b8093ff}


Callback method to: process an incoming HELLO message. 

Section 7.1.1: HELLO \hyperlink{classMessage}{Message} Processing.


\begin{DoxyParams}{Parameters}
{\em msg} & Pointer to a message which is derived from \hyperlink{classHelloMessage}{HelloMessage}. \\
\hline
{\em remote\_\-addr} & The source address of \hyperlink{protocolthe-p}{the} packet containing msg. \\
\hline
{\em local\_\-addr} & The address of \hyperlink{protocolthe-p}{the} interface where this packet was received. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if this function consumed msg. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_afb23c79767b9fae0ef95aab01c57b708}{
\index{Neighborhood@{Neighborhood}!event\_\-send\_\-tc@{event\_\-send\_\-tc}}
\index{event\_\-send\_\-tc@{event\_\-send\_\-tc}!Neighborhood@{Neighborhood}}
\subsubsection[{event\_\-send\_\-tc}]{\setlength{\rightskip}{0pt plus 5cm}bool Neighborhood::event\_\-send\_\-tc (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_afb23c79767b9fae0ef95aab01c57b708}


Callback method to: service \hyperlink{protocolthe-p}{the} TC transmission timer. 

Section 9.2: Advertised \hyperlink{classNeighbor}{Neighbor} Set.

Flood a TC message to \hyperlink{protocolthe-p}{the} rest of \hyperlink{protocolthe-p}{the} OLSR domain which contains our Advertised \hyperlink{classNeighbor}{Neighbor} Set (ANS). This method should only be called if \hyperlink{protocolthe-p}{the} TC timer is running or finishing. The finishing state is entered when a node has stopped being an MPR or when \hyperlink{protocolthe-p}{the} ANS set becomes empty.

TODO: Account for ETX metrics in selecting advertised neighbors. TODO: Fish-\/eye TC emission optimization; transmit only.

\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} callback should be rescheduled, otherwise false. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_aeeb5770af731b668c7f79849006fcd91}{
\index{Neighborhood@{Neighborhood}!event\_\-twohop\_\-link\_\-dead\_\-timer@{event\_\-twohop\_\-link\_\-dead\_\-timer}}
\index{event\_\-twohop\_\-link\_\-dead\_\-timer@{event\_\-twohop\_\-link\_\-dead\_\-timer}!Neighborhood@{Neighborhood}}
\subsubsection[{event\_\-twohop\_\-link\_\-dead\_\-timer}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::event\_\-twohop\_\-link\_\-dead\_\-timer (
\begin{DoxyParamCaption}
\item[{const {\bf OlsrTypes::TwoHopLinkID}}]{tlid}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_aeeb5770af731b668c7f79849006fcd91}


Callback method to: service a TwoHopLink's DEAD timer. 


\begin{DoxyParams}{Parameters}
{\em tlid} & \hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} two-\/hop link whose DEAD timer has fired. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_a132f520351485b46da61b2bff5674b9e}{
\index{Neighborhood@{Neighborhood}!find\_\-best\_\-link@{find\_\-best\_\-link}}
\index{find\_\-best\_\-link@{find\_\-best\_\-link}!Neighborhood@{Neighborhood}}
\subsubsection[{find\_\-best\_\-link}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf LogicalLink} $\ast$ Neighborhood::find\_\-best\_\-link (
\begin{DoxyParamCaption}
\item[{const {\bf Neighbor} $\ast$}]{n}
\end{DoxyParamCaption}
)  throw ({\bf BadLinkCoverage})\hspace{0.3cm}{\ttfamily  \mbox{[}protected\mbox{]}}}}
\label{classNeighborhood_a132f520351485b46da61b2bff5674b9e}


Find \hyperlink{protocolthe-p}{the} best link to a neighbor N. 


\begin{DoxyParams}{Parameters}
{\em n} & Pointer to a neighbor N. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Pointer to a \hyperlink{classLogicalLink}{LogicalLink} l which is \hyperlink{protocolthe-p}{the} best link to N. 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em \hyperlink{classBadLinkCoverage}{BadLinkCoverage}} & if none of \hyperlink{protocolthe-p}{the} links are reachable or is of suitable ETX criteria. \\
\hline
\end{DoxyExceptions}
\hypertarget{classNeighborhood_ab3d954410fb8ce00a95ffc3c700a54f1}{
\index{Neighborhood@{Neighborhood}!find\_\-best\_\-twohop\_\-link@{find\_\-best\_\-twohop\_\-link}}
\index{find\_\-best\_\-twohop\_\-link@{find\_\-best\_\-twohop\_\-link}!Neighborhood@{Neighborhood}}
\subsubsection[{find\_\-best\_\-twohop\_\-link}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf TwoHopLink} $\ast$ Neighborhood::find\_\-best\_\-twohop\_\-link (
\begin{DoxyParamCaption}
\item[{const {\bf TwoHopNeighbor} $\ast$}]{n2}
\end{DoxyParamCaption}
)  throw ({\bf BadTwoHopCoverage})\hspace{0.3cm}{\ttfamily  \mbox{[}protected\mbox{]}}}}
\label{classNeighborhood_ab3d954410fb8ce00a95ffc3c700a54f1}


Find \hyperlink{protocolthe-p}{the} best link to a two-\/hop neighbor N2. 


\begin{DoxyParams}{Parameters}
{\em n2} & Pointer to a neighbor N2. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Pointer to a \hyperlink{classTwoHopLink}{TwoHopLink} l2 which is \hyperlink{protocolthe-p}{the} best link to N2. 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em \hyperlink{classBadTwoHopCoverage}{BadTwoHopCoverage}} & if none of \hyperlink{protocolthe-p}{the} links are reachable, or of suitable ETX criteria. \\
\hline
\end{DoxyExceptions}
\hypertarget{classNeighborhood_ae8315e7b9a3b9cbf27bfe28dfc276127}{
\index{Neighborhood@{Neighborhood}!get\_\-linkid@{get\_\-linkid}}
\index{get\_\-linkid@{get\_\-linkid}!Neighborhood@{Neighborhood}}
\subsubsection[{get\_\-linkid}]{\setlength{\rightskip}{0pt plus 5cm}{\bf OlsrTypes::LogicalLinkID} Neighborhood::get\_\-linkid (
\begin{DoxyParamCaption}
\item[{const {\bf IPv4} \&}]{remote\_\-addr, }
\item[{const {\bf IPv4} \&}]{local\_\-addr}
\end{DoxyParamCaption}
)  throw ({\bf BadLogicalLink})}}
\label{classNeighborhood_ae8315e7b9a3b9cbf27bfe28dfc276127}


Look up a LogicalLink's ID given its interface addresses. 


\begin{DoxyParams}{Parameters}
{\em remote\_\-addr} & \hyperlink{protocolthe-p}{the} protocol address of \hyperlink{protocolthe-p}{the} remote interface at \hyperlink{protocolthe-p}{the} far end of \hyperlink{protocolthe-p}{the} link. \\
\hline
{\em local\_\-addr} & \hyperlink{protocolthe-p}{the} protocol address of \hyperlink{protocolthe-p}{the} local interface at \hyperlink{protocolthe-p}{the} near end of \hyperlink{protocolthe-p}{the} link. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} \hyperlink{classLogicalLink}{LogicalLink}. 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em \hyperlink{classBadLogicalLink}{BadLogicalLink}} & if \hyperlink{protocolthe-p}{the} link could not be found. \\
\hline
\end{DoxyExceptions}
\hypertarget{classNeighborhood_a7e194e8c4966b26766b11191434e3358}{
\index{Neighborhood@{Neighborhood}!get\_\-logical\_\-link@{get\_\-logical\_\-link}}
\index{get\_\-logical\_\-link@{get\_\-logical\_\-link}!Neighborhood@{Neighborhood}}
\subsubsection[{get\_\-logical\_\-link}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf LogicalLink} $\ast$ Neighborhood::get\_\-logical\_\-link (
\begin{DoxyParamCaption}
\item[{const {\bf OlsrTypes::LogicalLinkID}}]{linkid}
\end{DoxyParamCaption}
)  throw ({\bf BadLogicalLink})}}
\label{classNeighborhood_a7e194e8c4966b26766b11191434e3358}


Look up a LogicalLink's pointer given its LogicalLinkID. 


\begin{DoxyParams}{Parameters}
{\em linkid} & \hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} link to look up. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a pointer to \hyperlink{protocolthe-p}{the} logical link. 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em \hyperlink{classBadLogicalLink}{BadLogicalLink}} & if \hyperlink{protocolthe-p}{the} link could not be found. \\
\hline
\end{DoxyExceptions}
\hypertarget{classNeighborhood_abf99a35c6c4f0bed22b91e6d82f306ca}{
\index{Neighborhood@{Neighborhood}!get\_\-logical\_\-link\_\-list@{get\_\-logical\_\-link\_\-list}}
\index{get\_\-logical\_\-link\_\-list@{get\_\-logical\_\-link\_\-list}!Neighborhood@{Neighborhood}}
\subsubsection[{get\_\-logical\_\-link\_\-list}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::get\_\-logical\_\-link\_\-list (
\begin{DoxyParamCaption}
\item[{list$<$ {\bf OlsrTypes::LogicalLinkID} $>$ \&}]{l1\_\-list}
\end{DoxyParamCaption}
) const}}
\label{classNeighborhood_abf99a35c6c4f0bed22b91e6d82f306ca}


Fill out a list of all LogicalLinkIDs in \hyperlink{protocolthe-p}{the} database. 


\begin{DoxyParams}{Parameters}
{\em l1\_\-list} & \hyperlink{protocolthe-p}{the} list to fill out. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_a70104e4d54f5f1c3a0934f9fedb8728c}{
\index{Neighborhood@{Neighborhood}!get\_\-neighbor@{get\_\-neighbor}}
\index{get\_\-neighbor@{get\_\-neighbor}!Neighborhood@{Neighborhood}}
\subsubsection[{get\_\-neighbor}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf Neighbor} $\ast$ Neighborhood::get\_\-neighbor (
\begin{DoxyParamCaption}
\item[{const {\bf OlsrTypes::NeighborID}}]{nid}
\end{DoxyParamCaption}
)  throw ({\bf BadNeighbor})}}
\label{classNeighborhood_a70104e4d54f5f1c3a0934f9fedb8728c}


Find a Neighbor's pointer, given its NeighborID. 


\begin{DoxyParams}{Parameters}
{\em nid} & \hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} \hyperlink{classNeighbor}{Neighbor}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} pointer to \hyperlink{protocolthe-p}{the} \hyperlink{classNeighbor}{Neighbor} instance. 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em \hyperlink{classBadNeighbor}{BadNeighbor}} & if \hyperlink{protocolthe-p}{the} \hyperlink{classNeighbor}{Neighbor} does not exist. \\
\hline
\end{DoxyExceptions}
\hypertarget{classNeighborhood_a333fda4b3d8bac33d2d8ac6ded148328}{
\index{Neighborhood@{Neighborhood}!get\_\-neighbor\_\-hold\_\-time@{get\_\-neighbor\_\-hold\_\-time}}
\index{get\_\-neighbor\_\-hold\_\-time@{get\_\-neighbor\_\-hold\_\-time}!Neighborhood@{Neighborhood}}
\subsubsection[{get\_\-neighbor\_\-hold\_\-time}]{\setlength{\rightskip}{0pt plus 5cm}{\bf TimeVal} Neighborhood::get\_\-neighbor\_\-hold\_\-time (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classNeighborhood_a333fda4b3d8bac33d2d8ac6ded148328}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} current value of \hyperlink{protocolthe-p}{the} NEIGHB\_\-HOLD\_\-TIME protocol variable. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_a005c71cbbae39be363c86ec6bdfc2054}{
\index{Neighborhood@{Neighborhood}!get\_\-neighbor\_\-list@{get\_\-neighbor\_\-list}}
\index{get\_\-neighbor\_\-list@{get\_\-neighbor\_\-list}!Neighborhood@{Neighborhood}}
\subsubsection[{get\_\-neighbor\_\-list}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::get\_\-neighbor\_\-list (
\begin{DoxyParamCaption}
\item[{list$<$ {\bf OlsrTypes::NeighborID} $>$ \&}]{n1\_\-list}
\end{DoxyParamCaption}
) const}}
\label{classNeighborhood_a005c71cbbae39be363c86ec6bdfc2054}


Fill out a list of all NeighborIDs in \hyperlink{protocolthe-p}{the} database. 


\begin{DoxyParams}{Parameters}
{\em n1\_\-list} & \hyperlink{protocolthe-p}{the} list to fill out. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_a2fab9bb370c8d8acd5bdeace17b7d983}{
\index{Neighborhood@{Neighborhood}!get\_\-neighborid\_\-by\_\-main\_\-addr@{get\_\-neighborid\_\-by\_\-main\_\-addr}}
\index{get\_\-neighborid\_\-by\_\-main\_\-addr@{get\_\-neighborid\_\-by\_\-main\_\-addr}!Neighborhood@{Neighborhood}}
\subsubsection[{get\_\-neighborid\_\-by\_\-main\_\-addr}]{\setlength{\rightskip}{0pt plus 5cm}{\bf OlsrTypes::NeighborID} Neighborhood::get\_\-neighborid\_\-by\_\-main\_\-addr (
\begin{DoxyParamCaption}
\item[{const {\bf IPv4} \&}]{main\_\-addr}
\end{DoxyParamCaption}
)  throw ({\bf BadNeighbor})}}
\label{classNeighborhood_a2fab9bb370c8d8acd5bdeace17b7d983}


Find a neighbor ID, given its main address. 


\begin{DoxyParams}{Parameters}
{\em main\_\-addr} & \hyperlink{protocolthe-p}{the} main protocol address of \hyperlink{protocolthe-p}{the} OLSR node. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} neighbor ID. 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em \hyperlink{classBadNeighbor}{BadNeighbor}} & if \hyperlink{protocolthe-p}{the} neighbor is not found. \\
\hline
\end{DoxyExceptions}
\hypertarget{classNeighborhood_ab53545f0df353cf0ace9001611118a6c}{
\index{Neighborhood@{Neighborhood}!get\_\-neighborid\_\-by\_\-remote\_\-addr@{get\_\-neighborid\_\-by\_\-remote\_\-addr}}
\index{get\_\-neighborid\_\-by\_\-remote\_\-addr@{get\_\-neighborid\_\-by\_\-remote\_\-addr}!Neighborhood@{Neighborhood}}
\subsubsection[{get\_\-neighborid\_\-by\_\-remote\_\-addr}]{\setlength{\rightskip}{0pt plus 5cm}{\bf OlsrTypes::NeighborID} Neighborhood::get\_\-neighborid\_\-by\_\-remote\_\-addr (
\begin{DoxyParamCaption}
\item[{const {\bf IPv4} \&}]{remote\_\-addr}
\end{DoxyParamCaption}
)  throw ({\bf BadNeighbor})}}
\label{classNeighborhood_ab53545f0df353cf0ace9001611118a6c}


Find a neighbor ID, given \hyperlink{protocolthe-p}{the} address of one of its interfaces. 


\begin{DoxyParams}{Parameters}
{\em remote\_\-addr} & \hyperlink{protocolthe-p}{the} address of one of \hyperlink{protocolthe-p}{the} interfaces of an OLSR node. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} neighbor ID. 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em \hyperlink{classBadNeighbor}{BadNeighbor}} & if \hyperlink{protocolthe-p}{the} neighbor is not found. \\
\hline
\end{DoxyExceptions}
\hypertarget{classNeighborhood_a6c0190fc4a5fce3ccbb810d41609a276}{
\index{Neighborhood@{Neighborhood}!get\_\-refresh\_\-interval@{get\_\-refresh\_\-interval}}
\index{get\_\-refresh\_\-interval@{get\_\-refresh\_\-interval}!Neighborhood@{Neighborhood}}
\subsubsection[{get\_\-refresh\_\-interval}]{\setlength{\rightskip}{0pt plus 5cm}{\bf TimeVal} Neighborhood::get\_\-refresh\_\-interval (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classNeighborhood_a6c0190fc4a5fce3ccbb810d41609a276}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} value of \hyperlink{protocolthe-p}{the} REFRESH\_\-INTERVAL protocol variable. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_abd9c828759c7570a36eb2e774b88ad3f}{
\index{Neighborhood@{Neighborhood}!get\_\-tc\_\-interval@{get\_\-tc\_\-interval}}
\index{get\_\-tc\_\-interval@{get\_\-tc\_\-interval}!Neighborhood@{Neighborhood}}
\subsubsection[{get\_\-tc\_\-interval}]{\setlength{\rightskip}{0pt plus 5cm}{\bf TimeVal} Neighborhood::get\_\-tc\_\-interval (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classNeighborhood_abd9c828759c7570a36eb2e774b88ad3f}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} value of \hyperlink{protocolthe-p}{the} TC\_\-INTERVAL protocol variable. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_a0856ee7276acd3e331d0ff0d3e2d2351}{
\index{Neighborhood@{Neighborhood}!get\_\-tc\_\-redundancy@{get\_\-tc\_\-redundancy}}
\index{get\_\-tc\_\-redundancy@{get\_\-tc\_\-redundancy}!Neighborhood@{Neighborhood}}
\subsubsection[{get\_\-tc\_\-redundancy}]{\setlength{\rightskip}{0pt plus 5cm}{\bf OlsrTypes::TcRedundancyType} Neighborhood::get\_\-tc\_\-redundancy (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classNeighborhood_a0856ee7276acd3e331d0ff0d3e2d2351}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} value of \hyperlink{protocolthe-p}{the} TC\_\-REDUNDANCY protocol variable. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_aa502169996d2366f62f34aa432ef7c16}{
\index{Neighborhood@{Neighborhood}!get\_\-topology\_\-hold\_\-time@{get\_\-topology\_\-hold\_\-time}}
\index{get\_\-topology\_\-hold\_\-time@{get\_\-topology\_\-hold\_\-time}!Neighborhood@{Neighborhood}}
\subsubsection[{get\_\-topology\_\-hold\_\-time}]{\setlength{\rightskip}{0pt plus 5cm}{\bf TimeVal} Neighborhood::get\_\-topology\_\-hold\_\-time (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classNeighborhood_aa502169996d2366f62f34aa432ef7c16}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} current value of \hyperlink{protocolthe-p}{the} TOP\_\-HOLD\_\-TIME protocol variable. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_a1f69415a22619259c3fd3360f2ee5f2a}{
\index{Neighborhood@{Neighborhood}!get\_\-twohop\_\-link@{get\_\-twohop\_\-link}}
\index{get\_\-twohop\_\-link@{get\_\-twohop\_\-link}!Neighborhood@{Neighborhood}}
\subsubsection[{get\_\-twohop\_\-link}]{\setlength{\rightskip}{0pt plus 5cm}{\bf TwoHopLink} $\ast$ Neighborhood::get\_\-twohop\_\-link (
\begin{DoxyParamCaption}
\item[{const {\bf OlsrTypes::TwoHopLinkID}}]{tlid}
\end{DoxyParamCaption}
)  throw ({\bf BadTwoHopLink})}}
\label{classNeighborhood_a1f69415a22619259c3fd3360f2ee5f2a}


Given \hyperlink{protocolthe-p}{the} ID of a \hyperlink{classTwoHopLink}{TwoHopLink}, return its instance pointer. 


\begin{DoxyParams}{Parameters}
{\em tlid} & \hyperlink{protocolthe-p}{the} ID of a \hyperlink{classTwoHopLink}{TwoHopLink}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} pointer to \hyperlink{protocolthe-p}{the} \hyperlink{classTwoHopLink}{TwoHopLink} instance. 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em \hyperlink{classBadTwoHopLink}{BadTwoHopLink}} & if tlid does not exist. \\
\hline
\end{DoxyExceptions}
\hypertarget{classNeighborhood_a50b32cc33c3495b1be8ac85883fb28cf}{
\index{Neighborhood@{Neighborhood}!get\_\-twohop\_\-link\_\-list@{get\_\-twohop\_\-link\_\-list}}
\index{get\_\-twohop\_\-link\_\-list@{get\_\-twohop\_\-link\_\-list}!Neighborhood@{Neighborhood}}
\subsubsection[{get\_\-twohop\_\-link\_\-list}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::get\_\-twohop\_\-link\_\-list (
\begin{DoxyParamCaption}
\item[{list$<$ {\bf OlsrTypes::TwoHopLinkID} $>$ \&}]{l2\_\-list}
\end{DoxyParamCaption}
) const}}
\label{classNeighborhood_a50b32cc33c3495b1be8ac85883fb28cf}


Fill out a list of all TwoHopLinkIDs in \hyperlink{protocolthe-p}{the} database. 


\begin{DoxyParams}{Parameters}
{\em l2\_\-list} & \hyperlink{protocolthe-p}{the} list to fill out. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_a43e4d7070581b02446e9d7602e407cec}{
\index{Neighborhood@{Neighborhood}!get\_\-twohop\_\-neighbor@{get\_\-twohop\_\-neighbor}}
\index{get\_\-twohop\_\-neighbor@{get\_\-twohop\_\-neighbor}!Neighborhood@{Neighborhood}}
\subsubsection[{get\_\-twohop\_\-neighbor}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf TwoHopNeighbor} $\ast$ Neighborhood::get\_\-twohop\_\-neighbor (
\begin{DoxyParamCaption}
\item[{const {\bf OlsrTypes::TwoHopNodeID}}]{tnid}
\end{DoxyParamCaption}
) const  throw ({\bf BadTwoHopNode})}}
\label{classNeighborhood_a43e4d7070581b02446e9d7602e407cec}


Given \hyperlink{protocolthe-p}{the} ID of a \hyperlink{classTwoHopNeighbor}{TwoHopNeighbor}, return its instance pointer. 


\begin{DoxyParams}{Parameters}
{\em tnid} & \hyperlink{protocolthe-p}{the} ID of a \hyperlink{classTwoHopNeighbor}{TwoHopNeighbor}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} pointer to \hyperlink{protocolthe-p}{the} \hyperlink{classTwoHopNeighbor}{TwoHopNeighbor} instance. 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em \hyperlink{classBadTwoHopNode}{BadTwoHopNode}} & if tnid does not exist. \\
\hline
\end{DoxyExceptions}
\hypertarget{classNeighborhood_a929e8319154b66cbaa0984fce1ec9982}{
\index{Neighborhood@{Neighborhood}!get\_\-twohop\_\-neighbor\_\-list@{get\_\-twohop\_\-neighbor\_\-list}}
\index{get\_\-twohop\_\-neighbor\_\-list@{get\_\-twohop\_\-neighbor\_\-list}!Neighborhood@{Neighborhood}}
\subsubsection[{get\_\-twohop\_\-neighbor\_\-list}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::get\_\-twohop\_\-neighbor\_\-list (
\begin{DoxyParamCaption}
\item[{list$<$ {\bf OlsrTypes::TwoHopNodeID} $>$ \&}]{n2\_\-list}
\end{DoxyParamCaption}
) const}}
\label{classNeighborhood_a929e8319154b66cbaa0984fce1ec9982}


Fill out a list of all TwoHopNodeIDs in \hyperlink{protocolthe-p}{the} database. 


\begin{DoxyParams}{Parameters}
{\em n2\_\-list} & \hyperlink{protocolthe-p}{the} list to fill out. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_a6c22fd93b41d8cf1bbf6cc8bc40900cf}{
\index{Neighborhood@{Neighborhood}!get\_\-twohop\_\-nodeid\_\-by\_\-main\_\-addr@{get\_\-twohop\_\-nodeid\_\-by\_\-main\_\-addr}}
\index{get\_\-twohop\_\-nodeid\_\-by\_\-main\_\-addr@{get\_\-twohop\_\-nodeid\_\-by\_\-main\_\-addr}!Neighborhood@{Neighborhood}}
\subsubsection[{get\_\-twohop\_\-nodeid\_\-by\_\-main\_\-addr}]{\setlength{\rightskip}{0pt plus 5cm}{\bf OlsrTypes::TwoHopNodeID} Neighborhood::get\_\-twohop\_\-nodeid\_\-by\_\-main\_\-addr (
\begin{DoxyParamCaption}
\item[{const {\bf IPv4} \&}]{main\_\-addr}
\end{DoxyParamCaption}
)  throw ({\bf BadTwoHopNode})}}
\label{classNeighborhood_a6c22fd93b41d8cf1bbf6cc8bc40900cf}


Look up a two-\/hop neighbor by main address. 


\begin{DoxyParams}{Parameters}
{\em main\_\-addr} & \hyperlink{protocolthe-p}{the} main address of a two-\/hop neighbor. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} two-\/hop neighbor. 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em \hyperlink{classBadTwoHopNode}{BadTwoHopNode}} & if \hyperlink{protocolthe-p}{the} two-\/hop neighbor could not be found. \\
\hline
\end{DoxyExceptions}
\hypertarget{classNeighborhood_ae08e6df917f8eed4f1fa376ea2a63a9f}{
\index{Neighborhood@{Neighborhood}!is\_\-essential\_\-mpr@{is\_\-essential\_\-mpr}}
\index{is\_\-essential\_\-mpr@{is\_\-essential\_\-mpr}!Neighborhood@{Neighborhood}}
\subsubsection[{is\_\-essential\_\-mpr}]{\setlength{\rightskip}{0pt plus 5cm}bool Neighborhood::is\_\-essential\_\-mpr (
\begin{DoxyParamCaption}
\item[{const {\bf Neighbor} $\ast$}]{n}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_ae08e6df917f8eed4f1fa376ea2a63a9f}


Determine if an MPR is essential to covering \hyperlink{protocolthe-p}{the} entire two-\/hop neighborhood. 


\begin{DoxyParams}{Parameters}
{\em n} & \hyperlink{protocolthe-p}{the} \hyperlink{classNeighbor}{Neighbor} to evaluate. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if any of N's links cover a poorly covered strict \hyperlink{classTwoHopNeighbor}{TwoHopNeighbor}. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_a7dbd642a9a2a56be363126c5e2312f9e}{
\index{Neighborhood@{Neighborhood}!is\_\-mpr@{is\_\-mpr}}
\index{is\_\-mpr@{is\_\-mpr}!Neighborhood@{Neighborhood}}
\subsubsection[{is\_\-mpr}]{\setlength{\rightskip}{0pt plus 5cm}bool Neighborhood::is\_\-mpr (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classNeighborhood_a7dbd642a9a2a56be363126c5e2312f9e}
\begin{DoxyReturn}{Returns}
true if this node has been selected as an MPR by any one-\/hop neighbor, that is, \hyperlink{protocolthe-p}{the} MPR selector set is non-\/empty. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_a6be586f68fb7373d97de3541db150a9a}{
\index{Neighborhood@{Neighborhood}!is\_\-mpr\_\-selector\_\-addr@{is\_\-mpr\_\-selector\_\-addr}}
\index{is\_\-mpr\_\-selector\_\-addr@{is\_\-mpr\_\-selector\_\-addr}!Neighborhood@{Neighborhood}}
\subsubsection[{is\_\-mpr\_\-selector\_\-addr}]{\setlength{\rightskip}{0pt plus 5cm}bool Neighborhood::is\_\-mpr\_\-selector\_\-addr (
\begin{DoxyParamCaption}
\item[{const {\bf IPv4} \&}]{remote\_\-addr}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a6be586f68fb7373d97de3541db150a9a}


Check if an address belongs to a one-\/hop neighbor which is also an MPR selector. 

Referenced from: Section 3.4.1 Default Forwarding Algorithm.


\begin{DoxyParams}{Parameters}
{\em remote\_\-addr} & \hyperlink{protocolthe-p}{the} \hyperlink{classIPv4}{IPv4} interface address to look up in \hyperlink{protocolthe-p}{the} neighbor database. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if addr is an interface address of a symmetric one-\/hop neighbor which selects this node as an MPR. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_abfb0c784e959485d68d8a7d64c0332ad}{
\index{Neighborhood@{Neighborhood}!is\_\-sym\_\-neighbor\_\-addr@{is\_\-sym\_\-neighbor\_\-addr}}
\index{is\_\-sym\_\-neighbor\_\-addr@{is\_\-sym\_\-neighbor\_\-addr}!Neighborhood@{Neighborhood}}
\subsubsection[{is\_\-sym\_\-neighbor\_\-addr}]{\setlength{\rightskip}{0pt plus 5cm}bool Neighborhood::is\_\-sym\_\-neighbor\_\-addr (
\begin{DoxyParamCaption}
\item[{const {\bf IPv4} \&}]{addr}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_abfb0c784e959485d68d8a7d64c0332ad}


Check if a remote address belongs to a symmetric one-\/hop neighbor. 

Referenced from: Section 5.4 point 1 MID \hyperlink{classMessage}{Message} Processing. Section 9.5 point 1 TC \hyperlink{classMessage}{Message} Processing. Section 12.5 point 1 HNA \hyperlink{classMessage}{Message} Processing.


\begin{DoxyParams}{Parameters}
{\em addr} & \hyperlink{protocolthe-p}{the} interface address of a neighbor. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if addr is an interface address of a symmetric one-\/hop neighbor. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_a4540a97ebb3cce1112e743b9963427f1}{
\index{Neighborhood@{Neighborhood}!is\_\-tc\_\-advertised\_\-neighbor@{is\_\-tc\_\-advertised\_\-neighbor}}
\index{is\_\-tc\_\-advertised\_\-neighbor@{is\_\-tc\_\-advertised\_\-neighbor}!Neighborhood@{Neighborhood}}
\subsubsection[{is\_\-tc\_\-advertised\_\-neighbor}]{\setlength{\rightskip}{0pt plus 5cm}bool Neighborhood::is\_\-tc\_\-advertised\_\-neighbor (
\begin{DoxyParamCaption}
\item[{{\bf Neighbor} $\ast$}]{n}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classNeighborhood_a4540a97ebb3cce1112e743b9963427f1}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} \hyperlink{classNeighbor}{Neighbor} n would be advertised in a TC broadcast, given \hyperlink{protocolthe-p}{the} current TC\_\-REDUNDANCY. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_a61c0e8caae108c9fefff053c38589b52}{
\index{Neighborhood@{Neighborhood}!mark\_\-all\_\-n1\_\-as\_\-mprs@{mark\_\-all\_\-n1\_\-as\_\-mprs}}
\index{mark\_\-all\_\-n1\_\-as\_\-mprs@{mark\_\-all\_\-n1\_\-as\_\-mprs}!Neighborhood@{Neighborhood}}
\subsubsection[{mark\_\-all\_\-n1\_\-as\_\-mprs}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t Neighborhood::mark\_\-all\_\-n1\_\-as\_\-mprs (
\begin{DoxyParamCaption}
\item[{set$<$ {\bf OlsrTypes::NeighborID} $>$ \&}]{final\_\-mpr\_\-set}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a61c0e8caae108c9fefff053c38589b52}


Mark all N1 neighbors was MPRs. 

Considers all reachable one-\/hop neighbors with willingness of other than WILL\_\-NEVER as MPRs. This feature is typically used as a workaround in dense OLSR topologies which are not sufficiently partitioned.


\begin{DoxyParams}{Parameters}
{\em final\_\-mpr\_\-set} & will have \hyperlink{protocolthe-p}{the} result set of this method merged with it. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} number of neighbors which have been selected as MPRs. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_acb3ceaf582266032a4bf2db5c326ff05}{
\index{Neighborhood@{Neighborhood}!minimize\_\-mpr\_\-set@{minimize\_\-mpr\_\-set}}
\index{minimize\_\-mpr\_\-set@{minimize\_\-mpr\_\-set}!Neighborhood@{Neighborhood}}
\subsubsection[{minimize\_\-mpr\_\-set}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t Neighborhood::minimize\_\-mpr\_\-set (
\begin{DoxyParamCaption}
\item[{set$<$ {\bf OlsrTypes::NeighborID} $>$ \&}]{final\_\-mpr\_\-set}
\end{DoxyParamCaption}
)  throw ({\bf BadTwoHopCoverage})}}
\label{classNeighborhood_acb3ceaf582266032a4bf2db5c326ff05}


Minimize \hyperlink{protocolthe-p}{the} MPR set, based on \hyperlink{protocolthe-p}{the} MPR coverage parameter. 

Produces \hyperlink{protocolthe-p}{the} final MPR set in a std::set container, for debugging purposes. Section 8.3.1, 4.


\begin{DoxyParams}{Parameters}
{\em final\_\-mpr\_\-set} & reference to an empty MPR set that shall contain \hyperlink{protocolthe-p}{the} resultant MPR set after it has been minimized. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} number of elements removed from \hyperlink{protocolthe-p}{the} MPR set, as it appears in \hyperlink{protocolthe-p}{the} one-\/hop neighbor database. 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em \hyperlink{classBadTwoHopCoverage}{BadTwoHopCoverage}} & if \hyperlink{protocolthe-p}{the} MPR minimization algorithm detects that a two-\/hop node is now uncovered by any MPRs. \\
\hline
\end{DoxyExceptions}
\hypertarget{classNeighborhood_abb2dd3df85baed3bc0dfccfd3d60b3eb}{
\index{Neighborhood@{Neighborhood}!mpr\_\-coverage@{mpr\_\-coverage}}
\index{mpr\_\-coverage@{mpr\_\-coverage}!Neighborhood@{Neighborhood}}
\subsubsection[{mpr\_\-coverage}]{\setlength{\rightskip}{0pt plus 5cm}uint32\_\-t Neighborhood::mpr\_\-coverage (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classNeighborhood_abb2dd3df85baed3bc0dfccfd3d60b3eb}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} value of \hyperlink{protocolthe-p}{the} MPR\_\-COVERAGE protocol variable. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_adcf811f79de683bcb52daaf46ea969f1}{
\index{Neighborhood@{Neighborhood}!mpr\_\-selector\_\-set@{mpr\_\-selector\_\-set}}
\index{mpr\_\-selector\_\-set@{mpr\_\-selector\_\-set}!Neighborhood@{Neighborhood}}
\subsubsection[{mpr\_\-selector\_\-set}]{\setlength{\rightskip}{0pt plus 5cm}set$<${\bf OlsrTypes::NeighborID}$>$ Neighborhood::mpr\_\-selector\_\-set (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classNeighborhood_adcf811f79de683bcb52daaf46ea969f1}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} MPR selector set.
\end{DoxyReturn}
For use by simulation framework. \hypertarget{classNeighborhood_ae283b3f1cd37bc61859557c50bdf799b}{
\index{Neighborhood@{Neighborhood}!mpr\_\-set@{mpr\_\-set}}
\index{mpr\_\-set@{mpr\_\-set}!Neighborhood@{Neighborhood}}
\subsubsection[{mpr\_\-set}]{\setlength{\rightskip}{0pt plus 5cm}set$<${\bf OlsrTypes::NeighborID}$>$ Neighborhood::mpr\_\-set (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classNeighborhood_ae283b3f1cd37bc61859557c50bdf799b}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} MPR selector set.
\end{DoxyReturn}
For use by simulation framework. \hypertarget{classNeighborhood_a4fc985620042209b9443a0e8f5b0be20}{
\index{Neighborhood@{Neighborhood}!populate\_\-hello@{populate\_\-hello}}
\index{populate\_\-hello@{populate\_\-hello}!Neighborhood@{Neighborhood}}
\subsubsection[{populate\_\-hello}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t Neighborhood::populate\_\-hello (
\begin{DoxyParamCaption}
\item[{{\bf HelloMessage} $\ast$}]{hello}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a4fc985620042209b9443a0e8f5b0be20}


Given an empty HELLO message, fill it out as appropriate for its interface ID property. 

If \hyperlink{protocolthe-p}{the} message is not empty \hyperlink{protocolthe-p}{the} results are undefined.

TODO: Support ETX measurements.


\begin{DoxyParams}{Parameters}
{\em hello} & \hyperlink{protocolthe-p}{the} HELLO message to be filled out, which MUST contain \hyperlink{protocolthe-p}{the} FaceID of where it is to be sent. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} number of link addresses, including neighbors which are not local to this link, filled out in hello. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_ab6a0d707094131a36f4c9620fe2019b2}{
\index{Neighborhood@{Neighborhood}!push\_\-neighbor@{push\_\-neighbor}}
\index{push\_\-neighbor@{push\_\-neighbor}!Neighborhood@{Neighborhood}}
\subsubsection[{push\_\-neighbor}]{\setlength{\rightskip}{0pt plus 5cm}bool Neighborhood::push\_\-neighbor (
\begin{DoxyParamCaption}
\item[{const {\bf Neighbor} $\ast$}]{n}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected\mbox{]}}}}
\label{classNeighborhood_ab6a0d707094131a36f4c9620fe2019b2}


\hyperlink{classPush}{Push} a single \hyperlink{classNeighbor}{Neighbor}, and its links, to \hyperlink{protocolthe-p}{the} \hyperlink{classRouteManager}{RouteManager}. 

The SPT structure can only hold a single edge between each neighbor at \hyperlink{protocolthe-p}{the} moment. We also need to select each node by its ETX. In \hyperlink{protocolthe-p}{the} absence of ETX measurements, we select \hyperlink{protocolthe-p}{the} most recently heard symmetric link which is up.


\begin{DoxyParams}{Parameters}
{\em n} & \hyperlink{protocolthe-p}{the} neighbor to push. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} neighbor was pushed, false if it was not. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_a6672426f1e21e9e54432f818ec4d7fd2}{
\index{Neighborhood@{Neighborhood}!push\_\-topology@{push\_\-topology}}
\index{push\_\-topology@{push\_\-topology}!Neighborhood@{Neighborhood}}
\subsubsection[{push\_\-topology}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::push\_\-topology (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a6672426f1e21e9e54432f818ec4d7fd2}


\hyperlink{classPush}{Push} \hyperlink{protocolthe-p}{the} topology to \hyperlink{protocolthe-p}{the} \hyperlink{classRouteManager}{RouteManager} for route computation. 

When we do incremental SPT this can partially go away. The SPT can contain only one edge between each node -\/-\/ \hyperlink{protocolthe-p}{the} nested methods here deal with this. \hypertarget{classNeighborhood_a4879c93f74ed1b1f29e9ed02da2dfa06}{
\index{Neighborhood@{Neighborhood}!push\_\-twohop\_\-neighbor@{push\_\-twohop\_\-neighbor}}
\index{push\_\-twohop\_\-neighbor@{push\_\-twohop\_\-neighbor}!Neighborhood@{Neighborhood}}
\subsubsection[{push\_\-twohop\_\-neighbor}]{\setlength{\rightskip}{0pt plus 5cm}bool Neighborhood::push\_\-twohop\_\-neighbor (
\begin{DoxyParamCaption}
\item[{{\bf TwoHopNeighbor} $\ast$}]{n2}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected\mbox{]}}}}
\label{classNeighborhood_a4879c93f74ed1b1f29e9ed02da2dfa06}


\hyperlink{classPush}{Push} a single TwoHopNeigbor, and its links, to \hyperlink{protocolthe-p}{the} \hyperlink{classRouteManager}{RouteManager}. 

Here, we select \hyperlink{protocolthe-p}{the} best link to this \hyperlink{classTwoHopNeighbor}{TwoHopNeighbor}.


\begin{DoxyParams}{Parameters}
{\em n2} & \hyperlink{protocolthe-p}{the} two-\/hop neighbor to push. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} two-\/hop neighbor was pushed, false if it was not. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_a52dd048875fd8ffdd34586dc17119562}{
\index{Neighborhood@{Neighborhood}!reset\_\-twohop\_\-mpr\_\-state@{reset\_\-twohop\_\-mpr\_\-state}}
\index{reset\_\-twohop\_\-mpr\_\-state@{reset\_\-twohop\_\-mpr\_\-state}!Neighborhood@{Neighborhood}}
\subsubsection[{reset\_\-twohop\_\-mpr\_\-state}]{\setlength{\rightskip}{0pt plus 5cm}size\_\-t Neighborhood::reset\_\-twohop\_\-mpr\_\-state (
\begin{DoxyParamCaption}
\item[{ostringstream \&}]{dbg}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a52dd048875fd8ffdd34586dc17119562}


Clear all existing MPR state for TwoHopNeighbors. 

Compute number of now uncovered reachable nodes at radius=2.

\begin{DoxyReturn}{Returns}
The number of reachable, strict two-\/hop neighbors to be considered by MPR selection. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_afae2aea4dbc1a2d94d84c2f0d4dd9ba6}{
\index{Neighborhood@{Neighborhood}!schedule\_\-ans\_\-update@{schedule\_\-ans\_\-update}}
\index{schedule\_\-ans\_\-update@{schedule\_\-ans\_\-update}!Neighborhood@{Neighborhood}}
\subsubsection[{schedule\_\-ans\_\-update}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::schedule\_\-ans\_\-update (
\begin{DoxyParamCaption}
\item[{const bool}]{is\_\-deleted}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_afae2aea4dbc1a2d94d84c2f0d4dd9ba6}


Schedule an update of \hyperlink{protocolthe-p}{the} Advertised \hyperlink{classNeighbor}{Neighbor} Set. 


\begin{DoxyParams}{Parameters}
{\em is\_\-deleted} & true if \hyperlink{protocolthe-p}{the} update is being scheduled in response to \hyperlink{protocolthe-p}{the} deletion of a \hyperlink{classNeighbor}{Neighbor}. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_a5526507ea67a6b389a72bba43857ec3c}{
\index{Neighborhood@{Neighborhood}!schedule\_\-mpr\_\-recount@{schedule\_\-mpr\_\-recount}}
\index{schedule\_\-mpr\_\-recount@{schedule\_\-mpr\_\-recount}!Neighborhood@{Neighborhood}}
\subsubsection[{schedule\_\-mpr\_\-recount}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::schedule\_\-mpr\_\-recount (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classNeighborhood_a5526507ea67a6b389a72bba43857ec3c}


Trigger a recount of \hyperlink{protocolthe-p}{the} MPR set. 

Invoked whenever there is a change of state which would cause \hyperlink{protocolthe-p}{the} MPR set to change. Calculating \hyperlink{protocolthe-p}{the} MPR set is an expensive operation, so it is scheduled as a one-\/off task in \hyperlink{protocolthe-p}{the} event loop. \hypertarget{classNeighborhood_a12abb74efe9aedd72f50c26e7fac818f}{
\index{Neighborhood@{Neighborhood}!set\_\-mpr\_\-coverage@{set\_\-mpr\_\-coverage}}
\index{set\_\-mpr\_\-coverage@{set\_\-mpr\_\-coverage}!Neighborhood@{Neighborhood}}
\subsubsection[{set\_\-mpr\_\-coverage}]{\setlength{\rightskip}{0pt plus 5cm}bool Neighborhood::set\_\-mpr\_\-coverage (
\begin{DoxyParamCaption}
\item[{const uint32\_\-t}]{coverage}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a12abb74efe9aedd72f50c26e7fac818f}


Attempt to set \hyperlink{protocolthe-p}{the} required level of MPR coverage. 

If successful, and OLSR is running on any configured interface, \hyperlink{protocolthe-p}{the} MPR set will be recalculated.


\begin{DoxyParams}{Parameters}
{\em coverage} & \hyperlink{protocolthe-p}{the} new value of \hyperlink{protocolthe-p}{the} MPR\_\-COVERAGE variable. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} MPR\_\-COVERAGE was set to coverage. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_ae2221242c826d6d1ff4f3146f6a3bdf4}{
\index{Neighborhood@{Neighborhood}!set\_\-refresh\_\-interval@{set\_\-refresh\_\-interval}}
\index{set\_\-refresh\_\-interval@{set\_\-refresh\_\-interval}!Neighborhood@{Neighborhood}}
\subsubsection[{set\_\-refresh\_\-interval}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::set\_\-refresh\_\-interval (
\begin{DoxyParamCaption}
\item[{const {\bf TimeVal} \&}]{interval}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classNeighborhood_ae2221242c826d6d1ff4f3146f6a3bdf4}


Set \hyperlink{protocolthe-p}{the} value of \hyperlink{protocolthe-p}{the} REFRESH\_\-INTERVAL protocol variable. 


\begin{DoxyParams}{Parameters}
{\em interval} & \hyperlink{protocolthe-p}{the} new value of REFRESH\_\-INTERVAL.. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_a00706e2bf5b70856301079ed8e28fef5}{
\index{Neighborhood@{Neighborhood}!set\_\-tc\_\-interval@{set\_\-tc\_\-interval}}
\index{set\_\-tc\_\-interval@{set\_\-tc\_\-interval}!Neighborhood@{Neighborhood}}
\subsubsection[{set\_\-tc\_\-interval}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::set\_\-tc\_\-interval (
\begin{DoxyParamCaption}
\item[{const {\bf TimeVal} \&}]{interval}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a00706e2bf5b70856301079ed8e28fef5}


Set \hyperlink{protocolthe-p}{the} interval between TC broadcasts. 

The timer will only be restarted if previously scheduled. If \hyperlink{protocolthe-p}{the} period of \hyperlink{protocolthe-p}{the} TC broadcasts is changed, a TC broadcast is scheduled to take place immediately.


\begin{DoxyParams}{Parameters}
{\em interval} & \hyperlink{protocolthe-p}{the} new value of TC\_\-INTERVAL. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_a185a8eeaa1108fb5bfaf29eb7a7079ed}{
\index{Neighborhood@{Neighborhood}!set\_\-tc\_\-redundancy@{set\_\-tc\_\-redundancy}}
\index{set\_\-tc\_\-redundancy@{set\_\-tc\_\-redundancy}!Neighborhood@{Neighborhood}}
\subsubsection[{set\_\-tc\_\-redundancy}]{\setlength{\rightskip}{0pt plus 5cm}bool Neighborhood::set\_\-tc\_\-redundancy (
\begin{DoxyParamCaption}
\item[{const {\bf OlsrTypes::TcRedundancyType}}]{type}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a185a8eeaa1108fb5bfaf29eb7a7079ed}


Attempt to set \hyperlink{protocolthe-p}{the} redundancy of links advertised in TC broadcasts. 


\begin{DoxyParams}{Parameters}
{\em type} & \hyperlink{protocolthe-p}{the} new redundancy level to set. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} TC\_\-REDUNDANCY was set to type. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_a5f5b8b613350711dab84f60751d7c12d}{
\index{Neighborhood@{Neighborhood}!set\_\-willingness@{set\_\-willingness}}
\index{set\_\-willingness@{set\_\-willingness}!Neighborhood@{Neighborhood}}
\subsubsection[{set\_\-willingness}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::set\_\-willingness (
\begin{DoxyParamCaption}
\item[{const {\bf OlsrTypes::WillType}}]{willingness}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a5f5b8b613350711dab84f60751d7c12d}


Set \hyperlink{protocolthe-p}{the} WILLINGNESS protocol variable. 


\begin{DoxyParams}{Parameters}
{\em willingness} & \hyperlink{protocolthe-p}{the} new value of \hyperlink{protocolthe-p}{the} WILLINGNESS protocol variable. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_a14c1e9942b004eaf999d91bd4a5a7e1b}{
\index{Neighborhood@{Neighborhood}!update\_\-link@{update\_\-link}}
\index{update\_\-link@{update\_\-link}!Neighborhood@{Neighborhood}}
\subsubsection[{update\_\-link}]{\setlength{\rightskip}{0pt plus 5cm}{\bf OlsrTypes::LogicalLinkID} Neighborhood::update\_\-link (
\begin{DoxyParamCaption}
\item[{const {\bf OlsrTypes::FaceID}}]{faceid, }
\item[{const {\bf IPv4} \&}]{remote\_\-addr, }
\item[{const {\bf IPv4} \&}]{local\_\-addr, }
\item[{const {\bf TimeVal} \&}]{vtime, }
\item[{bool \&}]{is\_\-created}
\end{DoxyParamCaption}
)  throw ({\bf BadLogicalLink})}}
\label{classNeighborhood_a14c1e9942b004eaf999d91bd4a5a7e1b}


Update a \hyperlink{classLogicalLink}{LogicalLink}. 

The link will be created if it does not exist. \hyperlink{classLinks}{Links} are specified by their remote and local interface addresses.


\begin{DoxyParams}{Parameters}
{\em faceid} & \hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} interface where this link appears. \\
\hline
{\em remote\_\-addr} & \hyperlink{protocolthe-p}{the} protocol address of \hyperlink{protocolthe-p}{the} remote interface at \hyperlink{protocolthe-p}{the} far end of \hyperlink{protocolthe-p}{the} link. \\
\hline
{\em local\_\-addr} & \hyperlink{protocolthe-p}{the} protocol address of \hyperlink{protocolthe-p}{the} local interface at \hyperlink{protocolthe-p}{the} near end of \hyperlink{protocolthe-p}{the} link. \\
\hline
{\em vtime} & \hyperlink{protocolthe-p}{the} validity time of \hyperlink{protocolthe-p}{the} new link. \\
\hline
{\em is\_\-created} & will be set to true if \hyperlink{protocolthe-p}{the} link did not previously exist and was created by this method. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} link tuple. 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em \hyperlink{classBadLogicalLink}{BadLogicalLink}} & if \hyperlink{protocolthe-p}{the} link could not be updated. \\
\hline
\end{DoxyExceptions}
\hypertarget{classNeighborhood_a8b81ca352793547f87f2b4d54486171b}{
\index{Neighborhood@{Neighborhood}!update\_\-mpr\_\-selector@{update\_\-mpr\_\-selector}}
\index{update\_\-mpr\_\-selector@{update\_\-mpr\_\-selector}!Neighborhood@{Neighborhood}}
\subsubsection[{update\_\-mpr\_\-selector}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::update\_\-mpr\_\-selector (
\begin{DoxyParamCaption}
\item[{const {\bf OlsrTypes::NeighborID}}]{nid, }
\item[{const {\bf TimeVal} \&}]{vtime}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a8b81ca352793547f87f2b4d54486171b}


Update a Neighbor's status in \hyperlink{protocolthe-p}{the} MPR selector set, possibly adding it. 

If our node now has a non-\/empty MPR selector set, it must now originate TC advertisements.


\begin{DoxyParams}{Parameters}
{\em nid} & \hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} \hyperlink{classNeighbor}{Neighbor} to mark as an MPR selector. \\
\hline
{\em vtime} & \hyperlink{protocolthe-p}{the} duration of \hyperlink{protocolthe-p}{the} MPR selector set membership. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_a3e438130fc09a9736c591425fb1ab15b}{
\index{Neighborhood@{Neighborhood}!update\_\-neighbor@{update\_\-neighbor}}
\index{update\_\-neighbor@{update\_\-neighbor}!Neighborhood@{Neighborhood}}
\subsubsection[{update\_\-neighbor}]{\setlength{\rightskip}{0pt plus 5cm}{\bf OlsrTypes::NeighborID} Neighborhood::update\_\-neighbor (
\begin{DoxyParamCaption}
\item[{const {\bf IPv4} \&}]{main\_\-addr, }
\item[{const {\bf OlsrTypes::LogicalLinkID}}]{linkid, }
\item[{const bool}]{is\_\-new\_\-link, }
\item[{const {\bf OlsrTypes::WillType}}]{will, }
\item[{const bool}]{is\_\-mpr\_\-selector, }
\item[{const {\bf TimeVal} \&}]{mprs\_\-expiry\_\-time, }
\item[{bool \&}]{is\_\-created}
\end{DoxyParamCaption}
)  throw ({\bf BadNeighbor})}}
\label{classNeighborhood_a3e438130fc09a9736c591425fb1ab15b}


Update or create a \hyperlink{classNeighbor}{Neighbor} in \hyperlink{protocolthe-p}{the} one-\/hop neighbor database. 

This method has \hyperlink{protocolthe-p}{the} weak exception guarantee that \hyperlink{classBadNeighbor}{BadNeighbor} will only be thrown before it is associated with \hyperlink{classLogicalLink}{LogicalLink}.


\begin{DoxyParams}{Parameters}
{\em main\_\-addr} & The main protocol address of \hyperlink{protocolthe-p}{the} neighbor. \\
\hline
{\em linkid} & The ID of \hyperlink{protocolthe-p}{the} initially created link to \hyperlink{protocolthe-p}{the} neighbor. \\
\hline
{\em is\_\-new\_\-link} & true if \hyperlink{protocolthe-p}{the} link \hyperlink{protocolthe-p}{the} neighbor is being created with has just been instantiated. \\
\hline
{\em will} & The neighbor's advertised willingness-\/to-\/forward. \\
\hline
{\em is\_\-mpr\_\-selector} & true if \hyperlink{protocolthe-p}{the} neighbor selects us as an MPR. \\
\hline
{\em mprs\_\-expiry\_\-time} & \hyperlink{protocolthe-p}{the} expiry time for \hyperlink{protocolthe-p}{the} MPR selector tuple. \\
\hline
{\em is\_\-created} & set to true if a new neighbor entry was created. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} updated or created neighbor tuple. 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em \hyperlink{classBadNeighbor}{BadNeighbor}} & if \hyperlink{protocolthe-p}{the} neighbor entry could not be updated. \\
\hline
\end{DoxyExceptions}
\hypertarget{classNeighborhood_a8b211dee3b888e94125bdc0fd387691f}{
\index{Neighborhood@{Neighborhood}!update\_\-onehop\_\-reachability@{update\_\-onehop\_\-reachability}}
\index{update\_\-onehop\_\-reachability@{update\_\-onehop\_\-reachability}!Neighborhood@{Neighborhood}}
\subsubsection[{update\_\-onehop\_\-reachability}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::update\_\-onehop\_\-reachability (
\begin{DoxyParamCaption}
\item[{{\bf Neighbor} $\ast$}]{n}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a8b211dee3b888e94125bdc0fd387691f}


Compute one-\/hop neighbor reachability and update it in \hyperlink{protocolthe-p}{the} \hyperlink{classNeighbor}{Neighbor} to avoid repetitively computing it on every MPR recount. 

Coverage must be valid. If this method is called outside of an MPR recount results are undefined.

Reachability is defined as: \hyperlink{protocolthe-p}{the} number of uncovered N2 nodes which have edges to this N. We do this outside of \hyperlink{classNeighbor}{Neighbor} for code brevity.


\begin{DoxyParams}{Parameters}
{\em n} & Pointer to a \hyperlink{classNeighbor}{Neighbor}, which is normally an MPR candidate. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_ab7d6c1c247a065aba1dc45b04d70e24d}{
\index{Neighborhood@{Neighborhood}!update\_\-twohop\_\-link@{update\_\-twohop\_\-link}}
\index{update\_\-twohop\_\-link@{update\_\-twohop\_\-link}!Neighborhood@{Neighborhood}}
\subsubsection[{update\_\-twohop\_\-link}]{\setlength{\rightskip}{0pt plus 5cm}{\bf OlsrTypes::TwoHopLinkID} Neighborhood::update\_\-twohop\_\-link (
\begin{DoxyParamCaption}
\item[{const {\bf LinkAddrInfo} \&}]{node\_\-info, }
\item[{{\bf Neighbor} \&}]{nexthop, }
\item[{const {\bf OlsrTypes::FaceID}}]{faceid, }
\item[{const {\bf TimeVal} \&}]{vtime}
\end{DoxyParamCaption}
)  throw ({\bf BadTwoHopLink})}}
\label{classNeighborhood_ab7d6c1c247a065aba1dc45b04d70e24d}


Update \hyperlink{protocolthe-p}{the} link state information for a two-\/hop neighbor. 

This method may create a \hyperlink{classTwoHopNeighbor}{TwoHopNeighbor} and/or a \hyperlink{classTwoHopLink}{TwoHopLink} if they do not already exist.


\begin{DoxyParams}{Parameters}
{\em node\_\-info} & The address information for \hyperlink{protocolthe-p}{the} two-\/hop neighbor; contains ETX measurements, if applicable. \\
\hline
{\em nexthop} & The main address of \hyperlink{protocolthe-p}{the} immediate neighbor which advertises this \hyperlink{classTwoHopLink}{TwoHopLink}. \\
\hline
{\em faceid} & The interface where \hyperlink{protocolthe-p}{the} advertisement was heard. \\
\hline
{\em vtime} & The time for which \hyperlink{protocolthe-p}{the} \hyperlink{classTwoHopLink}{TwoHopLink} remains valid. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} two-\/hop neighbor. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_a260dfd60ea2810284fcbfcd5399ded8a}{
\index{Neighborhood@{Neighborhood}!update\_\-twohop\_\-node@{update\_\-twohop\_\-node}}
\index{update\_\-twohop\_\-node@{update\_\-twohop\_\-node}!Neighborhood@{Neighborhood}}
\subsubsection[{update\_\-twohop\_\-node}]{\setlength{\rightskip}{0pt plus 5cm}{\bf OlsrTypes::TwoHopNodeID} Neighborhood::update\_\-twohop\_\-node (
\begin{DoxyParamCaption}
\item[{const {\bf IPv4} \&}]{main\_\-addr, }
\item[{const {\bf OlsrTypes::TwoHopLinkID}}]{tlid, }
\item[{const bool}]{is\_\-new\_\-l2, }
\item[{bool \&}]{is\_\-n2\_\-created}
\end{DoxyParamCaption}
)  throw ({\bf BadTwoHopNode})}}
\label{classNeighborhood_a260dfd60ea2810284fcbfcd5399ded8a}


Update a two-\/hop neighbor. 

If \hyperlink{protocolthe-p}{the} \hyperlink{classTwoHopNeighbor}{TwoHopNeighbor} does not exist it will be created. A valid two-\/hop link must be provided; if \hyperlink{protocolthe-p}{the} link is also newly created, this method will create \hyperlink{protocolthe-p}{the} back-\/reference.


\begin{DoxyParams}{Parameters}
{\em main\_\-addr} & \hyperlink{protocolthe-p}{the} main address of \hyperlink{protocolthe-p}{the} two-\/hop neighbor. \\
\hline
{\em tlid} & \hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} two-\/hop link with which \hyperlink{protocolthe-p}{the} two-\/hop neighbor is initially associated. \\
\hline
{\em is\_\-new\_\-l2} & true if tlid refers to a newly created link. \\
\hline
{\em is\_\-n2\_\-created} & set to true if a new \hyperlink{classTwoHopNeighbor}{TwoHopNeighbor} was created. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} two-\/hop neighbor. 
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em \hyperlink{classBadTwoHopNode}{BadTwoHopNode}} & if \hyperlink{protocolthe-p}{the} two-\/hop neighbor could not be updated. \\
\hline
\end{DoxyExceptions}
\hypertarget{classNeighborhood_aaf3d1316e82849a452328310edba76b8}{
\index{Neighborhood@{Neighborhood}!update\_\-twohop\_\-reachability@{update\_\-twohop\_\-reachability}}
\index{update\_\-twohop\_\-reachability@{update\_\-twohop\_\-reachability}!Neighborhood@{Neighborhood}}
\subsubsection[{update\_\-twohop\_\-reachability}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::update\_\-twohop\_\-reachability (
\begin{DoxyParamCaption}
\item[{{\bf TwoHopNeighbor} $\ast$}]{tn}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_aaf3d1316e82849a452328310edba76b8}


Compute two-\/hop neighbor reachability. 

It will be updated it in \hyperlink{protocolthe-p}{the} \hyperlink{classTwoHopNeighbor}{TwoHopNeighbor} to avoid computing it more than once during an MPR recount. If an N2 is reachable via an N with WILL\_\-ALWAYS this takes precedence.

TODO: WHEN ETX IS IMPLEMENTED, A LINK WITH NO 'GOOD' LINKS MUST BE CONSIDERED UNREACHABLE.

Two-\/hop reachability is defined as: \hyperlink{protocolthe-p}{the} number of MPR candidates with edges linking them to N2. Note: This is NOT THE SAME as a one-\/hop neighbor's reachability.

We do this outside of \hyperlink{classTwoHopNeighbor}{TwoHopNeighbor} to avoid playing too many tedious C++ accessor games. MPR candidacy of linked neighbors must be valid. If this method is called outside of an MPR recount, its results are undefined.


\begin{DoxyParams}{Parameters}
{\em tn} & Pointer to a \hyperlink{classTwoHopNeighbor}{TwoHopNeighbor}. \\
\hline
\end{DoxyParams}
\hypertarget{classNeighborhood_ac3af11f1398c37c64d3234c925720364}{
\index{Neighborhood@{Neighborhood}!willingness@{willingness}}
\index{willingness@{willingness}!Neighborhood@{Neighborhood}}
\subsubsection[{willingness}]{\setlength{\rightskip}{0pt plus 5cm}{\bf OlsrTypes::WillType} Neighborhood::willingness (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classNeighborhood_ac3af11f1398c37c64d3234c925720364}
\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} current value of \hyperlink{protocolthe-p}{the} WILLINGNESS protocol variable. 
\end{DoxyReturn}
\hypertarget{classNeighborhood_a3a41c80c36290a310feef03573c45e93}{
\index{Neighborhood@{Neighborhood}!withdraw\_\-cand\_\-mpr@{withdraw\_\-cand\_\-mpr}}
\index{withdraw\_\-cand\_\-mpr@{withdraw\_\-cand\_\-mpr}!Neighborhood@{Neighborhood}}
\subsubsection[{withdraw\_\-cand\_\-mpr}]{\setlength{\rightskip}{0pt plus 5cm}void Neighborhood::withdraw\_\-cand\_\-mpr (
\begin{DoxyParamCaption}
\item[{const {\bf OlsrTypes::NeighborID}}]{nid}
\end{DoxyParamCaption}
)}}
\label{classNeighborhood_a3a41c80c36290a310feef03573c45e93}


Remove a neighbor from \hyperlink{protocolthe-p}{the} set of MPR candidates for all interfaces. 


\begin{DoxyParams}{Parameters}
{\em nid} & \hyperlink{protocolthe-p}{the} ID of \hyperlink{protocolthe-p}{the} neighbor to remove. \\
\hline
\end{DoxyParams}


\subsection{Member Data Documentation}
\hypertarget{classNeighborhood_a51aedf84fc2631b7b5ee83d1d0f4c9dc}{
\index{Neighborhood@{Neighborhood}!\_\-link\_\-addr@{\_\-link\_\-addr}}
\index{\_\-link\_\-addr@{\_\-link\_\-addr}!Neighborhood@{Neighborhood}}
\subsubsection[{\_\-link\_\-addr}]{\setlength{\rightskip}{0pt plus 5cm}map$<$pair$<${\bf IPv4}, {\bf IPv4}$>$, {\bf OlsrTypes::LogicalLinkID}$>$ {\bf Neighborhood::\_\-link\_\-addr}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighborhood_a51aedf84fc2631b7b5ee83d1d0f4c9dc}


A map providing lookup of Link ID based on remote and local protocol addresses in that order. 

Used for processing incoming HELLOs. \hypertarget{classNeighborhood_a0d37b7f805bb400aac075d8d002a0246}{
\index{Neighborhood@{Neighborhood}!\_\-links@{\_\-links}}
\index{\_\-links@{\_\-links}!Neighborhood@{Neighborhood}}
\subsubsection[{\_\-links}]{\setlength{\rightskip}{0pt plus 5cm}map$<${\bf OlsrTypes::LogicalLinkID}, {\bf LogicalLink}$\ast$$>$ {\bf Neighborhood::\_\-links}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighborhood_a0d37b7f805bb400aac075d8d002a0246}


This node's links to neighbors. 

RFC 3626 Section 4.2.1 Local Link Information Base \hypertarget{classNeighborhood_aa17dabaf1698842f1b921f05c3b278a3}{
\index{Neighborhood@{Neighborhood}!\_\-neighbors@{\_\-neighbors}}
\index{\_\-neighbors@{\_\-neighbors}!Neighborhood@{Neighborhood}}
\subsubsection[{\_\-neighbors}]{\setlength{\rightskip}{0pt plus 5cm}map$<${\bf OlsrTypes::NeighborID}, {\bf Neighbor}$\ast$$>$ {\bf Neighborhood::\_\-neighbors}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighborhood_aa17dabaf1698842f1b921f05c3b278a3}


This node's neighbors. 

RFC 3626 Section 4.3 \hyperlink{classNeighborhood}{Neighborhood} Information Base \hypertarget{classNeighborhood_a98d38c4070eab077f8fb03a501abcfa9}{
\index{Neighborhood@{Neighborhood}!\_\-refresh\_\-interval@{\_\-refresh\_\-interval}}
\index{\_\-refresh\_\-interval@{\_\-refresh\_\-interval}!Neighborhood@{Neighborhood}}
\subsubsection[{\_\-refresh\_\-interval}]{\setlength{\rightskip}{0pt plus 5cm}{\bf TimeVal} {\bf Neighborhood::\_\-refresh\_\-interval}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighborhood_a98d38c4070eab077f8fb03a501abcfa9}


The REFRESH\_\-INTERVAL protocol control variable. 

RFC 3626 Section 18.2. \hypertarget{classNeighborhood_ada1442154b5762d560d0636a8994de8e}{
\index{Neighborhood@{Neighborhood}!\_\-tc\_\-interval@{\_\-tc\_\-interval}}
\index{\_\-tc\_\-interval@{\_\-tc\_\-interval}!Neighborhood@{Neighborhood}}
\subsubsection[{\_\-tc\_\-interval}]{\setlength{\rightskip}{0pt plus 5cm}{\bf TimeVal} {\bf Neighborhood::\_\-tc\_\-interval}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighborhood_ada1442154b5762d560d0636a8994de8e}


The TC\_\-INTERVAL protocol control variable. 

RFC 3626 Section 18.2. \hypertarget{classNeighborhood_aafd775c9bd17831b6c8fe3d7210979c1}{
\index{Neighborhood@{Neighborhood}!\_\-tc\_\-redundancy@{\_\-tc\_\-redundancy}}
\index{\_\-tc\_\-redundancy@{\_\-tc\_\-redundancy}!Neighborhood@{Neighborhood}}
\subsubsection[{\_\-tc\_\-redundancy}]{\setlength{\rightskip}{0pt plus 5cm}{\bf OlsrTypes::TcRedundancyType} {\bf Neighborhood::\_\-tc\_\-redundancy}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighborhood_aafd775c9bd17831b6c8fe3d7210979c1}


The TC\_\-REDUNDANCY protocol control variable. 

Section 15. \hypertarget{classNeighborhood_a43517d672cc01d567c0b2dc8283bd05d}{
\index{Neighborhood@{Neighborhood}!\_\-twohop\_\-links@{\_\-twohop\_\-links}}
\index{\_\-twohop\_\-links@{\_\-twohop\_\-links}!Neighborhood@{Neighborhood}}
\subsubsection[{\_\-twohop\_\-links}]{\setlength{\rightskip}{0pt plus 5cm}map$<${\bf OlsrTypes::TwoHopLinkID}, {\bf TwoHopLink}$\ast$$>$ {\bf Neighborhood::\_\-twohop\_\-links}\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classNeighborhood_a43517d672cc01d567c0b2dc8283bd05d}


The two-\/hop link table. 

This is not part of \hyperlink{protocolthe-p}{the} RFC however we break \hyperlink{protocolthe-p}{the} implementation of two-\/hop neighbors into links and nodes to facilitate faster convergence of MPR sets when links change in \hyperlink{protocolthe-p}{the} vicinity. 

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