merge with HEAD
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Tue Jun 03 16:20:32 2008 -0700 (20 months ago)
changeset 3209d73fd33172c0
parent 3208 1a754d09c4ba
parent 3207 5aa8fd647c24
child 3211 09b43ff43df0
merge with HEAD
     1.1 --- a/.hgtags	Tue Jun 03 16:20:17 2008 -0700
     1.2 +++ b/.hgtags	Tue Jun 03 16:20:32 2008 -0700
     1.3 @@ -12,3 +12,4 @@
     1.4  b5bf2588cde2f1273b1095cc5c83a0c272e55370 release ns-3.0.10
     1.5  ee5e1da76ecc52337f097cd90ebb50a3d49ec541 release-3.0.11
     1.6  b17f2928291eec5bf5b1c59a4a5fd583f704ac40 release ns-3.0.12
     1.7 +79dba133b5f8a2d6f6f678a22e8519bc155e6a4e release ns-3.0.13
     2.1 --- a/RELEASE_NOTES	Tue Jun 03 16:20:17 2008 -0700
     2.2 +++ b/RELEASE_NOTES	Tue Jun 03 16:20:32 2008 -0700
     2.3 @@ -3,6 +3,26 @@
     2.4  
     2.5  This file contains ns-3 release notes (most recent releases first).
     2.6  
     2.7 +Release 3.0.13 (2008/06/02)
     2.8 +========================
     2.9 +- point to point links generate ppp pcap traces
    2.10 +- point to point links support asymmetrical data rates.
    2.11 +- generate doxygen documentation for all attributes and trace sources
    2.12 +- add ConfigStore and GtkConfigStore to contrib module
    2.13 +- socket API now support tx and rx buffers: implemented for UDP and TCP
    2.14 +- ARP cache now supports per-entry pending queues
    2.15 +- lots of bugfixes and implementation and API cleanups
    2.16 +
    2.17 +Warning: among API changes in this release, Application::Start and 
    2.18 +Application::Stop now interprets the time argument as a relative
    2.19 +instead of absolute simulation time, to align with how Simulator::Schedule
    2.20 +behaves.  Any code that calls these APIs in the middle of the simulation 
    2.21 +will need to be adapted.  
    2.22 +
    2.23 +The API of Simulator::StopAt (time) has also changed.  Now it is 
    2.24 +called Simulator::Stop (time), and takes a relative time, instead of 
    2.25 +absolute.
    2.26 +
    2.27  Release 3.0.12 (2008/04/07)
    2.28  ========================
    2.29      - Add Attribute support to the TypeId metadata system and add
     3.1 --- a/VERSION	Tue Jun 03 16:20:17 2008 -0700
     3.2 +++ b/VERSION	Tue Jun 03 16:20:32 2008 -0700
     3.3 @@ -1,1 +1,1 @@
     3.4 -3.0.12
     3.5 +3.0.13
     4.1 --- a/doc/modules	Tue Jun 03 16:20:17 2008 -0700
     4.2 +++ b/doc/modules	Tue Jun 03 16:20:32 2008 -0700
     4.3 @@ -13,7 +13,7 @@
     4.4   *    - a Functor class: ns3::Callback  
     4.5   *    - an os-independent interface to get access to the elapsed wall clock time: ns3::SystemWallClockMs 
     4.6   *    - a class to register regression tests with the test manager: ns3::Test and ns3::TestManager
     4.7 - *    - debugging facilities: \ref logging, \ref assert, \ref error
     4.8 + *    - debugging facilities: \ref logging, \ref assert
     4.9   *    - \ref randomvariable
    4.10   *    - a base class for objects which need to support per-instance "attributes" and
    4.11   *      trace sources: ns3::ObjectBase
     5.1 --- a/doc/release_steps.txt	Tue Jun 03 16:20:17 2008 -0700
     5.2 +++ b/doc/release_steps.txt	Tue Jun 03 16:20:32 2008 -0700
     5.3 @@ -6,7 +6,7 @@
     5.4     - revise and check in RELEASE_NOTES
     5.5     - update and check in VERSION to the latest release number
     5.6     - confirm that Doxygen builds cleanly and without warnings
     5.7 -     (./waf --doxygen), and check in any necessary changes 
     5.8 +     (./waf check; ./waf --doxygen), and check in any necessary changes 
     5.9  2. ./waf configure; ./waf dist
    5.10     - this will create a ns-3.0.x.tar.bz2 tarball
    5.11     - this will also create a ns-3.0.x-ref-traces.tar.bz2 tarball
    5.12 @@ -23,7 +23,7 @@
    5.13  6. Run the regression tests on the new release and update the reference traces
    5.14     - ./waf --regression
    5.15     - ./waf --valgrind --regression (for valgrind version)
    5.16 -   - There should be no regressions at this time
    5.17 +   - There should be no regression errors at this time
    5.18     - tag ns-3-dev-ref-traces with "release ns-3.0.X"
    5.19       hg tag "release ns-3.0.x"
    5.20       hg push
     6.1 --- a/src/common/packet-metadata-test.cc	Tue Jun 03 16:20:17 2008 -0700
     6.2 +++ b/src/common/packet-metadata-test.cc	Tue Jun 03 16:20:32 2008 -0700
     6.3 @@ -746,7 +746,11 @@
     6.4    CHECK_HISTORY (p, 3, 1, 1000, 3);
     6.5    CHECK_HISTORY (p1, 3, 2, 1000, 3);
     6.6  
     6.7 -
     6.8 +  p = Create<Packet> (200);
     6.9 +  ADD_HEADER (p, 24);
    6.10 +  p1 = p->CreateFragment(0, 100);
    6.11 +  p2 = p->CreateFragment(100, 100);	
    6.12 +  p1->AddAtEnd (p2);
    6.13  
    6.14    return result;
    6.15  }
     7.1 --- a/src/common/packet-metadata.cc	Tue Jun 03 16:20:17 2008 -0700
     7.2 +++ b/src/common/packet-metadata.cc	Tue Jun 03 16:20:32 2008 -0700
     7.3 @@ -186,101 +186,6 @@
     7.4    buffer[2] = (value >> 16) & 0xff;
     7.5    buffer[3] = (value >> 24) & 0xff;
     7.6  }
     7.7 -bool
     7.8 -PacketMetadata::TryToAppend16 (uint16_t value,  uint8_t **pBuffer, uint8_t *end)
     7.9 -{
    7.10 -  uint8_t *start = *pBuffer;
    7.11 -  if (start + 1 < end)
    7.12 -    {
    7.13 -      start[0] = value & 0xff;
    7.14 -      start[1] = value >> 8;
    7.15 -      *pBuffer = start + 2;
    7.16 -      return true;
    7.17 -    }
    7.18 -  return false;
    7.19 -}
    7.20 -bool
    7.21 -PacketMetadata::TryToAppend32 (uint32_t value,  uint8_t **pBuffer, uint8_t *end)
    7.22 -{
    7.23 -  uint8_t *start = *pBuffer;
    7.24 -  if (start + 3 < end)
    7.25 -    {
    7.26 -      start[0] = value & 0xff;
    7.27 -      start[1] = (value >> 8) & 0xff;
    7.28 -      start[2] = (value >> 16) & 0xff;
    7.29 -      start[3] = (value >> 24) & 0xff;
    7.30 -      *pBuffer = start + 4;
    7.31 -      return true;
    7.32 -    }
    7.33 -  return false;
    7.34 -}
    7.35 -bool
    7.36 -PacketMetadata::TryToAppend (uint32_t value, uint8_t **pBuffer, uint8_t *end)
    7.37 -{
    7.38 -  uint8_t *start = *pBuffer;
    7.39 -  if (value < 0x80 && start < end)
    7.40 -    {
    7.41 -      start[0] = value;
    7.42 -      *pBuffer = start + 1;
    7.43 -      return true;
    7.44 -    }
    7.45 -  if (value < 0x4000 && start + 1 < end)
    7.46 -    {
    7.47 -      uint8_t byte = value & (~0x80);
    7.48 -      start[0] = 0x80 | byte;
    7.49 -      value >>= 7;
    7.50 -      start[1] = value;
    7.51 -      *pBuffer = start + 2;
    7.52 -      return true;
    7.53 -    }
    7.54 -  if (value < 0x200000 && start + 2 < end)
    7.55 -    {
    7.56 -      uint8_t byte = value & (~0x80);
    7.57 -      start[0] = 0x80 | byte;
    7.58 -      value >>= 7;
    7.59 -      byte = value & (~0x80);
    7.60 -      start[1] = 0x80 | byte;
    7.61 -      value >>= 7;
    7.62 -      byte = value & (~0x80);
    7.63 -      start[2] = value;
    7.64 -      *pBuffer = start + 3;
    7.65 -      return true;
    7.66 -    }
    7.67 -  if (value < 0x10000000 && start + 3 < end)
    7.68 -    {
    7.69 -      uint8_t byte = value & (~0x80);
    7.70 -      start[0] = 0x80 | byte;
    7.71 -      value >>= 7;
    7.72 -      byte = value & (~0x80);
    7.73 -      start[1] = 0x80 | byte;
    7.74 -      value >>= 7;
    7.75 -      byte = value & (~0x80);
    7.76 -      start[2] = 0x80 | byte;
    7.77 -      value >>= 7;
    7.78 -      start[3] = value;
    7.79 -      *pBuffer = start + 4;
    7.80 -      return true;
    7.81 -    }
    7.82 -  if (start + 4 < end)
    7.83 -    {
    7.84 -      uint8_t byte = value & (~0x80);
    7.85 -      start[0] = 0x80 | byte;
    7.86 -      value >>= 7;
    7.87 -      byte = value & (~0x80);
    7.88 -      start[1] = 0x80 | byte;
    7.89 -      value >>= 7;
    7.90 -      byte = value & (~0x80);
    7.91 -      start[2] = 0x80 | byte;
    7.92 -      value >>= 7;
    7.93 -      byte = value & (~0x80);
    7.94 -      start[3] = 0x80 | byte;
    7.95 -      value >>= 7;
    7.96 -      start[4] = value;
    7.97 -      *pBuffer = start + 5;
    7.98 -      return true;
    7.99 -    }
   7.100 -  return false;
   7.101 -}
   7.102  
   7.103  void
   7.104  PacketMetadata::AppendValueExtra (uint32_t value, uint8_t *buffer)
   7.105 @@ -350,6 +255,7 @@
   7.106  void
   7.107  PacketMetadata::UpdateTail (uint16_t written)
   7.108  {
   7.109 +  NS_LOG_FUNCTION (this << written);
   7.110    if (m_head == 0xffff)
   7.111      {
   7.112        NS_ASSERT (m_tail == 0xffff);
   7.113 @@ -376,6 +282,7 @@
   7.114  void
   7.115  PacketMetadata::UpdateHead (uint16_t written)
   7.116  {
   7.117 +  NS_LOG_FUNCTION (this << written);
   7.118    if (m_head == 0xffff)
   7.119      {
   7.120        NS_ASSERT (m_tail == 0xffff);
   7.121 @@ -401,6 +308,7 @@
   7.122  uint16_t
   7.123  PacketMetadata::AddSmall (const struct PacketMetadata::SmallItem *item)
   7.124  {
   7.125 +  NS_LOG_FUNCTION (this << item->next << item->prev << item->typeUid << item->size << item->chunkUid);
   7.126    NS_ASSERT (m_data != 0);
   7.127    NS_ASSERT (m_used != item->prev && m_used != item->next);
   7.128    uint32_t typeUidSize = GetUleb128Size (item->typeUid);
   7.129 @@ -431,6 +339,9 @@
   7.130                         const PacketMetadata::SmallItem *item, 
   7.131                         const PacketMetadata::ExtraItem *extraItem)
   7.132  {
   7.133 +  NS_LOG_FUNCTION (this << next << prev <<  
   7.134 +                   item->next << item->prev << item->typeUid << item->size << item->chunkUid <<
   7.135 +                   extraItem->fragmentStart << extraItem->fragmentEnd << extraItem->packetUid);
   7.136    NS_ASSERT (m_data != 0);
   7.137    uint32_t typeUid = ((item->typeUid & 0x1) == 0x1)?item->typeUid:item->typeUid+1;
   7.138    NS_ASSERT (m_used != prev && m_used != next);
   7.139 @@ -470,34 +381,68 @@
   7.140    return n;
   7.141  }
   7.142  
   7.143 +/**
   7.144 + * \param item the item data to write
   7.145 + * \param extraItem the extra item data to write
   7.146 + * \param available the number of bytes which can 
   7.147 + *        be written without having to rewrite the buffer entirely.
   7.148 + */
   7.149  void
   7.150  PacketMetadata::ReplaceTail (PacketMetadata::SmallItem *item, 
   7.151                              PacketMetadata::ExtraItem *extraItem,
   7.152                              uint32_t available)
   7.153  {
   7.154 +  NS_LOG_FUNCTION (this <<
   7.155 +                   item->next << item->prev << item->typeUid << item->size << item->chunkUid <<
   7.156 +                   extraItem->fragmentStart << extraItem->fragmentEnd << extraItem->packetUid <<
   7.157 +                   available);
   7.158 +
   7.159    NS_ASSERT (m_data != 0);  
   7.160 -  if (available >= 14 &&
   7.161 +  /* If the tail we want to replace is located at the end of the data array,
   7.162 +   * and if there is extra room at the end of this array, then, 
   7.163 +   * we can try to use that extra space to avoid falling in the slow
   7.164 +   * path below.
   7.165 +   */
   7.166 +  if (m_tail + available == m_used &&
   7.167 +      m_used == m_data->m_dirtyEnd)
   7.168 +    {
   7.169 +      available = m_data->m_size - m_tail;
   7.170 +    }
   7.171 +
   7.172 +  uint32_t typeUid = ((item->typeUid & 0x1) == 0x1)?item->typeUid:item->typeUid+1;
   7.173 +  uint32_t typeUidSize = GetUleb128Size (typeUid);
   7.174 +  uint32_t sizeSize = GetUleb128Size (item->size);
   7.175 +  uint32_t fragStartSize = GetUleb128Size (extraItem->fragmentStart);
   7.176 +  uint32_t fragEndSize = GetUleb128Size (extraItem->fragmentEnd);
   7.177 +  uint32_t n = 2 + 2 + typeUidSize + sizeSize + 2 + fragStartSize + fragEndSize + 4;
   7.178 +
   7.179 +  if (available >= n &&
   7.180        m_data->m_count == 1)
   7.181      {
   7.182        uint8_t *buffer = &m_data->m_data[m_tail];
   7.183 -      uint8_t *end = buffer + available;
   7.184 -
   7.185        Append16 (item->next, buffer);
   7.186        buffer += 2;
   7.187        Append16 (item->prev, buffer);
   7.188        buffer += 2;
   7.189 -      if (TryToAppend (item->typeUid, &buffer, end) &&
   7.190 -          TryToAppend (item->size, &buffer, end) &&
   7.191 -          TryToAppend16 (item->chunkUid, &buffer, end) &&
   7.192 -          TryToAppend (extraItem->fragmentStart, &buffer, end) &&
   7.193 -          TryToAppend (extraItem->fragmentEnd, &buffer, end) &&
   7.194 -          TryToAppend32 (extraItem->packetUid, &buffer, end))
   7.195 -        {
   7.196 -          m_used = buffer - &m_data->m_data[0];
   7.197 -          m_data->m_dirtyEnd = m_used;
   7.198 -          return;
   7.199 -        }
   7.200 +      AppendValue (typeUid, buffer);
   7.201 +      buffer += typeUidSize;
   7.202 +      AppendValue (item->size, buffer);
   7.203 +      buffer += sizeSize;
   7.204 +      Append16 (item->chunkUid, buffer);
   7.205 +      buffer += 2;
   7.206 +      AppendValue (extraItem->fragmentStart, buffer);
   7.207 +      buffer += fragStartSize;
   7.208 +      AppendValue (extraItem->fragmentEnd, buffer);
   7.209 +      buffer += fragEndSize;
   7.210 +      Append32 (extraItem->packetUid, buffer);
   7.211 +      m_used = buffer - &m_data->m_data[0];
   7.212 +      m_data->m_dirtyEnd = m_used;
   7.213 +      return;
   7.214      }
   7.215 +
   7.216 +  /* Below is the slow path which is hit if the new tail we want 
   7.217 +   * to append is bigger than the previous tail.
   7.218 +   */
   7.219    
   7.220    // create a copy of the packet.
   7.221    PacketMetadata h (m_packetUid, 0);
   7.222 @@ -510,6 +455,7 @@
   7.223        uint16_t written = h.AddBig (0xffff, h.m_tail, 
   7.224                                     &tmpItem, &tmpExtraItem);
   7.225        h.UpdateTail (written);
   7.226 +      current = tmpItem.next;
   7.227      }
   7.228    // append new tail.
   7.229    uint16_t written = h.AddBig (0xffff, h.m_tail, item, extraItem);
   7.230 @@ -518,11 +464,18 @@
   7.231    *this = h;
   7.232  }
   7.233  
   7.234 +/**
   7.235 + * \param current the offset we should start reading the data from
   7.236 + * \param item pointer to where we should store the data to return to the caller
   7.237 + * \param extraItem pointer to where we should store the data to return to the caller
   7.238 + * \returns the number of bytes read.
   7.239 + */
   7.240  uint32_t
   7.241  PacketMetadata::ReadItems (uint16_t current, 
   7.242                            struct PacketMetadata::SmallItem *item,
   7.243                            struct PacketMetadata::ExtraItem *extraItem) const
   7.244  {
   7.245 +  NS_LOG_FUNCTION (this << current);
   7.246    const uint8_t *buffer = &m_data->m_data[current];
   7.247    item->next = buffer[0];
   7.248    item->next |= (buffer[1]) << 8;
   7.249 @@ -644,12 +597,12 @@
   7.250  void
   7.251  PacketMetadata::DoAddHeader (uint32_t uid, uint32_t size)
   7.252  {
   7.253 +  NS_LOG_FUNCTION (this << uid << size);
   7.254    if (!m_enable)
   7.255      {
   7.256        m_metadataSkipped = true;
   7.257        return;
   7.258      }
   7.259 -  NS_LOG_FUNCTION ("uid=" << uid << "size=" << size << "");
   7.260  
   7.261    struct PacketMetadata::SmallItem item;
   7.262    item.next = m_head;
   7.263 @@ -665,12 +618,12 @@
   7.264  PacketMetadata::RemoveHeader (const Header &header, uint32_t size)
   7.265  {
   7.266    uint32_t uid = header.GetInstanceTypeId ().GetUid () << 1;
   7.267 +  NS_LOG_FUNCTION (this << uid << size);
   7.268    if (!m_enable) 
   7.269      {
   7.270        m_metadataSkipped = true;
   7.271        return;
   7.272      }
   7.273 -  NS_LOG_FUNCTION ("(uid=" << uid << ", size=" << size << ")");
   7.274    struct PacketMetadata::SmallItem item;
   7.275    struct PacketMetadata::ExtraItem extraItem;
   7.276    uint32_t read = ReadItems (m_head, &item, &extraItem);
   7.277 @@ -703,12 +656,12 @@
   7.278  PacketMetadata::AddTrailer (const Trailer &trailer, uint32_t size)
   7.279  {
   7.280    uint32_t uid = trailer.GetInstanceTypeId ().GetUid () << 1;
   7.281 +  NS_LOG_FUNCTION (this << uid << size);
   7.282    if (!m_enable)
   7.283      {
   7.284        m_metadataSkipped = true;
   7.285        return;
   7.286      }
   7.287 -  NS_LOG_FUNCTION ("(uid=" << uid << ", size=" << size << ")");
   7.288    struct PacketMetadata::SmallItem item;
   7.289    item.next = 0xffff;
   7.290    item.prev = m_tail;
   7.291 @@ -723,12 +676,12 @@
   7.292  PacketMetadata::RemoveTrailer (const Trailer &trailer, uint32_t size)
   7.293  {
   7.294    uint32_t uid = trailer.GetInstanceTypeId ().GetUid () << 1;
   7.295 +  NS_LOG_FUNCTION (this << uid << size);
   7.296    if (!m_enable) 
   7.297      {
   7.298        m_metadataSkipped = true;
   7.299        return;
   7.300      }
   7.301 -  NS_LOG_FUNCTION ("(uid=" << uid << ", size=" << size << ")");
   7.302    struct PacketMetadata::SmallItem item;
   7.303    struct PacketMetadata::ExtraItem extraItem;
   7.304    uint32_t read = ReadItems (m_tail, &item, &extraItem);
   7.305 @@ -760,6 +713,7 @@
   7.306  void
   7.307  PacketMetadata::AddAtEnd (PacketMetadata const&o)
   7.308  {
   7.309 +  NS_LOG_FUNCTION (this << &o);
   7.310    if (!m_enable) 
   7.311      {
   7.312        m_metadataSkipped = true;
   7.313 @@ -767,46 +721,53 @@
   7.314      }
   7.315    if (m_tail == 0xffff)
   7.316      {
   7.317 +      // We have no items so 'AddAtEnd' is 
   7.318 +      // equivalent to self-assignment.
   7.319        *this = o;
   7.320        return;
   7.321      }
   7.322    NS_ASSERT (m_head != 0xffff && m_tail != 0xffff);
   7.323  
   7.324 -  uint16_t lastTail;
   7.325 -  lastTail = m_tail;
   7.326 -  struct PacketMetadata::SmallItem lastItem;
   7.327 -  PacketMetadata::ExtraItem lastExtraItem;
   7.328 -  uint32_t lastTailSize = ReadItems (m_tail, &lastItem, &lastExtraItem);
   7.329 -  if (m_tail + lastTailSize == m_used &&
   7.330 -      m_used == m_data->m_dirtyEnd)
   7.331 +  // We read the current tail because we are going to append
   7.332 +  // after this item.
   7.333 +  struct PacketMetadata::SmallItem tailItem;
   7.334 +  PacketMetadata::ExtraItem tailExtraItem;
   7.335 +  uint32_t tailSize = ReadItems (m_tail, &tailItem, &tailExtraItem);
   7.336 +
   7.337 +  uint16_t current;
   7.338 +  struct PacketMetadata::SmallItem item;
   7.339 +  PacketMetadata::ExtraItem extraItem;
   7.340 +  o.ReadItems (o.m_head, &item, &extraItem);
   7.341 +  if (extraItem.packetUid == tailExtraItem.packetUid &&
   7.342 +      item.typeUid == tailItem.typeUid &&
   7.343 +      item.chunkUid == tailItem.chunkUid &&
   7.344 +      item.size == tailItem.size &&
   7.345 +      extraItem.fragmentStart == tailExtraItem.fragmentEnd)
   7.346      {
   7.347 -      lastTailSize = m_data->m_size - m_tail;
   7.348 +      /* If the previous tail came from the same header as
   7.349 +       * the next item we want to append to our array, then, 
   7.350 +       * we merge them and attempt to reuse the previous tail's
   7.351 +       * location.
   7.352 +       */
   7.353 +      tailExtraItem.fragmentEnd = extraItem.fragmentEnd;
   7.354 +      // XXX This call might be wrong. 
   7.355 +      ReplaceTail (&tailItem, &tailExtraItem, tailSize);
   7.356 +      current = item.next;
   7.357 +    }
   7.358 +  else
   7.359 +    {
   7.360 +      current = o.m_head;
   7.361      }
   7.362  
   7.363 -  uint16_t current = o.m_head;
   7.364 +  /* Now that we have merged our current tail with the head of the
   7.365 +   * next packet, we just append all items from the next packet
   7.366 +   * to the current packet.
   7.367 +   */
   7.368    while (current != 0xffff)
   7.369      {
   7.370 -      struct PacketMetadata::SmallItem item;
   7.371 -      PacketMetadata::ExtraItem extraItem;
   7.372        o.ReadItems (current, &item, &extraItem);
   7.373 -      if (extraItem.packetUid == lastExtraItem.packetUid &&
   7.374 -          item.typeUid == lastItem.typeUid &&
   7.375 -          item.chunkUid == lastItem.chunkUid &&
   7.376 -          item.size == lastItem.size &&
   7.377 -          extraItem.fragmentStart == lastExtraItem.fragmentEnd)
   7.378 -        {
   7.379 -          // replace previous tail.
   7.380 -          lastExtraItem.fragmentEnd = extraItem.fragmentEnd;
   7.381 -          NS_ASSERT (m_tail == lastTail);
   7.382 -          // XXX This call might be wrong. 
   7.383 -          ReplaceTail (&lastItem, &lastExtraItem, lastTailSize);
   7.384 -        }
   7.385 -      else
   7.386 -        {
   7.387 -          // append the extra items.
   7.388 -          uint16_t written = AddBig (0xffff, m_tail, &item, &extraItem);
   7.389 -          UpdateTail (written);
   7.390 -        }
   7.391 +      uint16_t written = AddBig (0xffff, m_tail, &item, &extraItem);
   7.392 +      UpdateTail (written);
   7.393        if (current == o.m_tail)
   7.394          {
   7.395            break;
   7.396 @@ -826,6 +787,7 @@
   7.397  void 
   7.398  PacketMetadata::RemoveAtStart (uint32_t start)
   7.399  {
   7.400 +  NS_LOG_FUNCTION (this << start);
   7.401    if (!m_enable) 
   7.402      {
   7.403        m_metadataSkipped = true;
   7.404 @@ -891,6 +853,7 @@
   7.405  void 
   7.406  PacketMetadata::RemoveAtEnd (uint32_t end)
   7.407  {
   7.408 +  NS_LOG_FUNCTION (this << end);
   7.409    if (!m_enable) 
   7.410      {
   7.411        m_metadataSkipped = true;
   7.412 @@ -1069,6 +1032,7 @@
   7.413  uint32_t 
   7.414  PacketMetadata::GetSerializedSize (void) const
   7.415  {
   7.416 +  NS_LOG_FUNCTION (this);
   7.417    uint32_t totalSize = 0;
   7.418    totalSize += 4;
   7.419    if (!m_enable)
   7.420 @@ -1105,6 +1069,7 @@
   7.421  void 
   7.422  PacketMetadata::Serialize (Buffer::Iterator i, uint32_t size) const
   7.423  {
   7.424 +  NS_LOG_FUNCTION (this);
   7.425    uint32_t bytesWritten = 0;
   7.426    i.WriteU32 (size);
   7.427    bytesWritten += 4;
   7.428 @@ -1160,6 +1125,7 @@
   7.429  uint32_t 
   7.430  PacketMetadata::Deserialize (Buffer::Iterator i)
   7.431  {
   7.432 +  NS_LOG_FUNCTION (this);
   7.433    struct PacketMetadata::SmallItem item;
   7.434    struct PacketMetadata::ExtraItem extraItem;
   7.435    uint32_t totalSize = i.ReadU32 ();
     8.1 --- a/src/common/packet-metadata.h	Tue Jun 03 16:20:17 2008 -0700
     8.2 +++ b/src/common/packet-metadata.h	Tue Jun 03 16:20:32 2008 -0700
     8.3 @@ -254,9 +254,6 @@
     8.4    uint32_t ReadUleb128 (const uint8_t **pBuffer) const;
     8.5    inline void Append16 (uint16_t value, uint8_t *buffer);
     8.6    inline void Append32 (uint32_t value, uint8_t *buffer);
     8.7 -  inline bool TryToAppend (uint32_t value, uint8_t **pBuffer, uint8_t *end);
     8.8 -  inline bool TryToAppend32 (uint32_t value, uint8_t **pBuffer, uint8_t *end);
     8.9 -  inline bool TryToAppend16 (uint16_t value, uint8_t **pBuffer, uint8_t *end);
    8.10    inline void AppendValue (uint32_t value, uint8_t *buffer);
    8.11    void AppendValueExtra (uint32_t value, uint8_t *buffer);
    8.12    inline void Reserve (uint32_t n);
     9.1 --- a/src/devices/wifi/nqap-wifi-mac.cc	Tue Jun 03 16:20:17 2008 -0700
     9.2 +++ b/src/devices/wifi/nqap-wifi-mac.cc	Tue Jun 03 16:20:32 2008 -0700
     9.3 @@ -44,7 +44,7 @@
     9.4      .SetParent<WifiMac> ()
     9.5      .AddConstructor<NqapWifiMac> ()
     9.6      .AddAttribute ("BeaconInterval", "Delay between two beacons",
     9.7 -                   TimeValue (Seconds (1.0)),
     9.8 +                   TimeValue (Seconds (0.1)),
     9.9                     MakeTimeAccessor (&NqapWifiMac::m_beaconInterval),
    9.10                     MakeTimeChecker ())
    9.11      .AddAttribute ("BeaconGeneration", "Whether or not beacons are generated.",
    10.1 --- a/src/devices/wifi/nqsta-wifi-mac.cc	Tue Jun 03 16:20:17 2008 -0700
    10.2 +++ b/src/devices/wifi/nqsta-wifi-mac.cc	Tue Jun 03 16:20:32 2008 -0700
    10.3 @@ -63,7 +63,7 @@
    10.4      .SetParent<WifiMac> ()
    10.5      .AddConstructor<NqstaWifiMac> ()
    10.6      .AddAttribute ("ProbeRequestTimeout", "XXX",
    10.7 -                   TimeValue (Seconds (0.5)),
    10.8 +                   TimeValue (Seconds (0.05)),
    10.9                     MakeTimeAccessor (&NqstaWifiMac::m_probeRequestTimeout),
   10.10                     MakeTimeChecker ())
   10.11      .AddAttribute ("AssocRequestTimeout", "XXX",
    11.1 --- a/src/node/application.h	Tue Jun 03 16:20:17 2008 -0700
    11.2 +++ b/src/node/application.h	Tue Jun 03 16:20:32 2008 -0700
    11.3 @@ -34,7 +34,7 @@
    11.4  
    11.5  /**
    11.6   * \ingroup node
    11.7 - * \defgroup application
    11.8 + * \defgroup application Application
    11.9   *
   11.10   * \brief The base class for all ns3 applicationes
   11.11   *