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 *