21 #include "ns3/assert.h"
26 #define IPV4_ADDRESS_SIZE 4
27 #define OLSR_MSG_HEADER_SIZE 12
28 #define OLSR_PKT_HEADER_SIZE 4
51 for (b = 0; (seconds/
OLSR_C) >= (1 << b); ++b)
58 double tmp = 16*(seconds/(
OLSR_C*(1<<b))-1);
75 return (uint8_t)((a << 4) | b);
87 int a = (olsrFormat >> 4);
88 int b = (olsrFormat & 0xf);
90 return OLSR_C * (1 + a/16.0) * (1 << b);
112 .AddConstructor<PacketHeader> ()
170 .AddConstructor<MessageHeader> ()
187 size +=
m_message.mid.GetSerializedSize ();
191 size +=
m_message.hello.GetSerializedSize ();
194 size +=
m_message.tc.GetSerializedSize ();
197 size +=
m_message.hna.GetSerializedSize ();
297 for (std::vector<Ipv4Address>::const_iterator iter = this->interfaceAddresses.begin ();
298 iter != this->interfaceAddresses.end (); iter++)
309 this->interfaceAddresses.clear ();
313 this->interfaceAddresses.erase (this->interfaceAddresses.begin (),
314 this->interfaceAddresses.end ());
315 for (
int n = 0; n < numAddresses; ++n)
328 for (std::vector<LinkMessage>::const_iterator iter = this->linkMessages.begin ();
329 iter != this->linkMessages.end (); iter++)
353 for (std::vector<LinkMessage>::const_iterator iter = this->linkMessages.begin ();
354 iter != this->linkMessages.end (); iter++)
382 this->linkMessages.clear ();
384 uint16_t helloSizeLeft = messageSize;
387 this->hTime = i.
ReadU8 ();
388 this->willingness = i.
ReadU8 ();
392 while (helloSizeLeft)
404 helloSizeLeft -= lmSize;
405 this->linkMessages.push_back (lm);
435 for (std::vector<Ipv4Address>::const_iterator iter = this->neighborAddresses.begin ();
436 iter != this->neighborAddresses.end (); iter++)
447 this->neighborAddresses.clear ();
455 this->neighborAddresses.clear ();
456 for (
int n = 0; n < numAddresses; ++n)
482 for (
size_t n = 0; n < this->associations.size (); ++n)
496 this->associations.clear ();
497 for (
int n = 0; n < numAddresses; ++n)
501 this->associations.push_back ((
Association) { address, mask});