29 #include "olsr-state.h"
38 OlsrState::FindMprSelectorTuple (Ipv4Address
const &mainAddr)
43 if (it->mainAddr == mainAddr)
50 OlsrState::EraseMprSelectorTuple (
const MprSelectorTuple &tuple)
64 OlsrState::EraseMprSelectorTuples (
const Ipv4Address &mainAddr)
69 if (it->mainAddr == mainAddr)
81 OlsrState::InsertMprSelectorTuple (MprSelectorTuple
const &tuple)
87 OlsrState::PrintMprSelectorSet ()
const
89 std::ostringstream os;
94 MprSelectorSet::const_iterator next = iter;
108 OlsrState::FindNeighborTuple (Ipv4Address
const &mainAddr)
113 if (it->neighborMainAddr == mainAddr)
120 OlsrState::FindSymNeighborTuple (Ipv4Address
const &mainAddr)
const
122 for (NeighborSet::const_iterator it =
m_neighborSet.begin ();
125 if (it->neighborMainAddr == mainAddr && it->status == NeighborTuple::STATUS_SYM)
132 OlsrState::FindNeighborTuple (Ipv4Address
const &mainAddr, uint8_t willingness)
137 if (it->neighborMainAddr == mainAddr && it->willingness == willingness)
144 OlsrState::EraseNeighborTuple (
const NeighborTuple &tuple)
158 OlsrState::EraseNeighborTuple (
const Ipv4Address &mainAddr)
163 if (it->neighborMainAddr == mainAddr)
172 OlsrState::InsertNeighborTuple (NeighborTuple
const &tuple)
177 if (it->neighborMainAddr == tuple.neighborMainAddr)
190 OlsrState::FindTwoHopNeighborTuple (Ipv4Address
const &neighborMainAddr,
191 Ipv4Address
const &twoHopNeighborAddr)
196 if (it->neighborMainAddr == neighborMainAddr
197 && it->twoHopNeighborAddr == twoHopNeighborAddr)
206 OlsrState::EraseTwoHopNeighborTuple (
const TwoHopNeighborTuple &tuple)
220 OlsrState::EraseTwoHopNeighborTuples (
const Ipv4Address &neighborMainAddr,
221 const Ipv4Address &twoHopNeighborAddr)
226 if (it->neighborMainAddr == neighborMainAddr
227 && it->twoHopNeighborAddr == twoHopNeighborAddr)
239 OlsrState::EraseTwoHopNeighborTuples (
const Ipv4Address &neighborMainAddr)
244 if (it->neighborMainAddr == neighborMainAddr)
256 OlsrState::InsertTwoHopNeighborTuple (TwoHopNeighborTuple
const &tuple)
264 OlsrState::FindMprAddress (Ipv4Address
const &addr)
266 MprSet::iterator it =
m_mprSet.find (addr);
284 OlsrState::FindDuplicateTuple (
Ipv4Address const &addr, uint16_t sequenceNumber)
289 if (it->address == addr && it->sequenceNumber == sequenceNumber)
296 OlsrState::EraseDuplicateTuple (
const DuplicateTuple &tuple)
310 OlsrState::InsertDuplicateTuple (DuplicateTuple
const &tuple)
318 OlsrState::FindLinkTuple (Ipv4Address
const & ifaceAddr)
320 for (LinkSet::iterator it =
m_linkSet.begin ();
323 if (it->neighborIfaceAddr == ifaceAddr)
330 OlsrState::FindSymLinkTuple (Ipv4Address
const &ifaceAddr, Time now)
332 for (LinkSet::iterator it =
m_linkSet.begin ();
335 if (it->neighborIfaceAddr == ifaceAddr)
337 if (it->symTime > now)
347 OlsrState::EraseLinkTuple (
const LinkTuple &tuple)
349 for (LinkSet::iterator it =
m_linkSet.begin ();
361 OlsrState::InsertLinkTuple (LinkTuple
const &tuple)
370 OlsrState::FindTopologyTuple (Ipv4Address
const &destAddr,
371 Ipv4Address
const &lastAddr)
376 if (it->destAddr == destAddr && it->lastAddr == lastAddr)
383 OlsrState::FindNewerTopologyTuple (Ipv4Address
const & lastAddr, uint16_t ansn)
388 if (it->lastAddr == lastAddr && it->sequenceNumber > ansn)
395 OlsrState::EraseTopologyTuple (
const TopologyTuple &tuple)
409 OlsrState::EraseOlderTopologyTuples (
const Ipv4Address &lastAddr, uint16_t ansn)
414 if (it->lastAddr == lastAddr && it->sequenceNumber < ansn)
426 OlsrState::InsertTopologyTuple (TopologyTuple
const &tuple)
434 OlsrState::FindIfaceAssocTuple (Ipv4Address
const &ifaceAddr)
439 if (it->ifaceAddr == ifaceAddr)
445 const IfaceAssocTuple*
446 OlsrState::FindIfaceAssocTuple (Ipv4Address
const &ifaceAddr)
const
451 if (it->ifaceAddr == ifaceAddr)
458 OlsrState::EraseIfaceAssocTuple (
const IfaceAssocTuple &tuple)
472 OlsrState::InsertIfaceAssocTuple (
const IfaceAssocTuple &tuple)
477 std::vector<Ipv4Address>
478 OlsrState::FindNeighborInterfaces (
const Ipv4Address &neighborMainAddr)
const
480 std::vector<Ipv4Address> retval;
484 if (it->mainAddr == neighborMainAddr)
485 retval.push_back (it->ifaceAddr);
493 OlsrState::FindAssociationTuple (
const Ipv4Address &gatewayAddr,
const Ipv4Address &networkAddr,
const Ipv4Mask &netmask)
498 if (it->gatewayAddr == gatewayAddr and it->networkAddr == networkAddr and it->netmask == netmask)
507 OlsrState::EraseAssociationTuple (
const AssociationTuple &tuple)
521 OlsrState::InsertAssociationTuple (
const AssociationTuple &tuple)
527 OlsrState::EraseAssociation (
const Association &tuple)
541 OlsrState::InsertAssociation (
const Association &tuple)
Associations m_associations
The node's local Host Network Associations that will be advertised using HNA messages.
TopologySet m_topologySet
Topology Set (RFC 3626, section 4.4).
MprSelectorSet m_mprSelectorSet
MPR Selector Set (RFC 3626, section 4.3.4).
AssociationSet m_associationSet
Association Set (RFC 3626, section12.2). Associations obtained from HNA messages generated by other n...
NeighborSet m_neighborSet
Neighbor Set (RFC 3626, section 4.3.1).
void SetMprSet(MprSet mprSet)
MprSet is set by routing protocol after MprCompute.
DuplicateSet m_duplicateSet
Duplicate Set (RFC 3626, section 3.4).
TwoHopNeighborSet m_twoHopNeighborSet
2-hop Neighbor Set (RFC 3626, section 4.3.2).
LinkSet m_linkSet
Link Set (RFC 3626, section 4.2.1).
Ipv4 addresses are stored in host order in this class.
MprSet GetMprSet() const
Gets an MPR Set needed by tests.
MprSet m_mprSet
MPR Set (RFC 3626, section 4.3.3).
The type "list of interface addresses".
IfaceAssocSet m_ifaceAssocSet
Interface Association Set (RFC 3626, section 4.1).