--- a/doc/build.txt Tue May 10 00:07:19 2011 +0200
+++ b/doc/build.txt Mon May 09 18:04:52 2011 -0700
@@ -76,7 +76,7 @@
=== Extending ns-3 ===
To add new modules:
- 1. Create the module directory under src (or src/devices, or whatever);
+ 1. Create the module directory under src;
2. Add the source files to it;
3. Add a 'wscript' describing it;
4. Add the module subdirectory name to the all_modules list in src/wscript.
--- a/doc/doxygen.conf Tue May 10 00:07:19 2011 +0200
+++ b/doc/doxygen.conf Mon May 09 18:04:52 2011 -0700
@@ -603,13 +603,13 @@
# excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag.
-EXCLUDE = src/routing/olsr/olsr-state.h \
- src/routing/olsr/olsr-repositories.h \
- src/simulator/high-precision.h \
- src/simulator/high-precision-128.h \
- src/simulator/high-precision-double.h \
- src/tools/visualizer/model/visual-simulator-impl.h \
- src/tools/visualizer/model/pyviz.h
+EXCLUDE = src/olsr/model/olsr-state.h \
+ src/olsr/model/olsr-repositories.h \
+ src/core/model/high-precision.h \
+ src/core/model/high-precision-128.h \
+ src/core/model/high-precision-double.h \
+ src/visualizer/model/visual-simulator-impl.h \
+ src/visualizer/model/pyviz.h
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
# directories that are symbolic links (a Unix filesystem feature) are excluded
--- a/doc/main.h Tue May 10 00:07:19 2011 +0200
+++ b/doc/main.h Mon May 09 18:04:52 2011 -0700
@@ -34,24 +34,14 @@
*
* \section module-sec Module overview
*
- * The ns-3 library is split across multiple modules:
+ * The ns-3 library is split across many modules. :
* - core: located in src/core and contains a number of facilities which
* do not depend on any other module. Some of these facilities are
* OS-dependent.
- * - simulator: located in src/simulator and contains event scheduling
- * facilities.
- * - common: located in src/common and contains facilities specific
- * to network simulations but shared by pretty much every model
- * of a network component.
- * - node: located in src/node. Defines the abstract interfaces which
- * must be implemented by every node and more specifically, by
- * IPv4 and IPv6 nodes.
- * - devices: located in src/devices. Contains a set of MAC-level models
- * - InternetStack: located in src/internet-stack. Contains TCP/IP models.
- * - Applications: located in src/applications
- * - Routing: located in src/routing; routing protocols.
- * - Mobility: located in src/mobility; Mobility models for nodes
- * - Helper: located in src/helper; Helper API for the simulator
+ * - network: located in src/network. Network related files.
+ * - internet: located in src/internet. Internet related files.
+ * - applications: located in src/applications
+ * - mobility: located in src/mobility; Mobility models for nodes
*
* More detail can be found in the <b><a href="modules.html">Modules</a></b>
* tab.
--- a/doc/manual/source/attributes.rst Tue May 10 00:07:19 2011 +0200
+++ b/doc/manual/source/attributes.rst Mon May 09 18:04:52 2011 -0700
@@ -641,14 +641,14 @@
***********
**Feedback requested:** This is an experimental feature of |ns3|. It is found
-in ``src/contrib`` and not in the main tree. If you like this feature and
+in ``src/config-store``. If you like this feature and
would like to provide feedback on it, please email us.
-Values for |ns3| attributes can be stored in an ASCII or XML text file and
-loaded into a future simulation. This feature is known as the |ns3|
-ConfigStore. The ConfigStore code is in ``src/contrib/``. It is not yet
-main-tree code, because we are seeking some user feedback and experience with
-this.
+Values for |ns3| attributes can be stored in an ASCII or XML text file
+and loaded into a future simulation. This feature is known as the
+|ns3| ConfigStore. The ConfigStore code is in ``src/config-store/``.
+It is still considered as unstable code, because we are seeking some
+user feedback and experience with this.
We can explore this system by using an example. Copy the ``csma-bridge.cc``
file to the scratch directory:::
--- a/doc/manual/source/organization.rst Tue May 10 00:07:19 2011 +0200
+++ b/doc/manual/source/organization.rst Mon May 09 18:04:52 2011 -0700
@@ -27,10 +27,9 @@
We first describe the core of the simulator; those components that are
common across all protocol, hardware, and environmental models.
-The simulation core is implemented
-in ``src/core``, and the core is used to build the simulation engine
-``src/simulator``. Packets are fundamental objects in a network simulator
-and are implemented in ``src/common``. These three simulation modules by
+The simulation core is implemented in ``src/core``. Packets are
+fundamental objects in a network simulator
+and are implemented in ``src/network``. These two simulation modules by
themselves are intended to comprise a generic simulation core that can be
used by different kinds of networks, not just Internet-based networks. The
above modules of |ns3| are independent of specific network and device
--- a/doc/manual/source/tcp.rst Tue May 10 00:07:19 2011 +0200
+++ b/doc/manual/source/tcp.rst Mon May 09 18:04:52 2011 -0700
@@ -195,7 +195,7 @@
These examples will deposit some ``.pcap`` files in your directory,
which can be examined by tcpdump or wireshark.
-Let's look at the ``examples/tcp-nsc-zoo.cc`` file for some typical
+Let's look at the ``examples/tcp/tcp-nsc-zoo.cc`` file for some typical
usage. How does it differ from using native |ns3| TCP? There is one main
configuration line, when using NSC and the |ns3| helper API, that needs to be
set:::
@@ -233,7 +233,7 @@
<http://www.nsnam.org/doxygen/classns3_1_1_tcp_socket.html>`_
Additionally, NSC TCP exports a lot of configuration variables into the
-|ns3| :ref:`Attributes` system, via a `sysctl <http://en.wikipedia.org/wiki/Sysctl>`_-like interface. In the ``examples/tcp-nsc-zoo`` example, you
+|ns3| :ref:`Attributes` system, via a `sysctl <http://en.wikipedia.org/wiki/Sysctl>`_-like interface. In the ``examples/tcp/tcp-nsc-zoo`` example, you
can see the following configuration:::
--- a/doc/manual/source/wifi.rst Tue May 10 00:07:19 2011 +0200
+++ b/doc/manual/source/wifi.rst Mon May 09 18:04:52 2011 -0700
@@ -105,7 +105,7 @@
cross-channel interference or coupling.
The source code for the Wifi NetDevice lives in the directory
-``src/devices/wifi``.
+``src/wifi``.
.. _wifi-architecture:
--- a/doc/manual/source/wimax.rst Tue May 10 00:07:19 2011 +0200
+++ b/doc/manual/source/wimax.rst Mon May 09 18:04:52 2011 -0700
@@ -16,7 +16,7 @@
* packet tracing functionality
The source code for the WiMAX models lives in the directory
-``src/devices/wimax``.
+``src/wimax``.
There have been two academic papers published on this model:
--- a/doc/testing/source/how-to-write-tests.rst Tue May 10 00:07:19 2011 +0200
+++ b/doc/testing/source/how-to-write-tests.rst Mon May 09 18:04:52 2011 -0700
@@ -31,7 +31,7 @@
separately in src/test/ directory). You will have to edit the wscript
file in that directory to compile your new code, if it is a new file.
-See the file ``src/test/sample-test-suite.cc`` and corresponding
+See the file ``src/template/test/sample-test-suite.cc`` and corresponding
wscript file in that directory for a simple example, and see the directories
under ``src/test`` for more complicated examples.
--- a/doc/testing/source/testing-framework.rst Tue May 10 00:07:19 2011 +0200
+++ b/doc/testing/source/testing-framework.rst Mon May 09 18:04:52 2011 -0700
@@ -421,10 +421,10 @@
check a single bit of functionality that are not built into the ns-3 code,
but live in the same directory as the code it tests. It is possible that
these tests check integration of multiple implementation files in a module
-as well. The file src/core/names-test-suite.cc is an example of this kind
-of test. The file src/common/pcap-file-test-suite.cc is another example
+as well. The file src/core/test/names-test-suite.cc is an example of this kind
+of test. The file src/network/test/pcap-file-test-suite.cc is another example
that uses a known good pcap file as a test vector file. This file is stored
-locally in the src/common directory.
+locally in the src/network directory.
System Tests
++++++++++++
@@ -742,7 +742,7 @@
(gdb) r --basedir=`pwd`
Starting program: <..>/build/debug/utils/test-runner --basedir=`pwd`
[Thread debugging using libthread_db enabled]
- assert failed. file=../src/core/type-id.cc, line=138, cond="uid <= m_information.size () && uid != 0"
+ assert failed. file=../src/core/model/type-id.cc, line=138, cond="uid <= m_information.size () && uid != 0"
...
Here is another example of how to use valgrind to debug a memory problem
--- a/doc/tutorial/source/tracing.rst Tue May 10 00:07:19 2011 +0200
+++ b/doc/tutorial/source/tracing.rst Mon May 09 18:04:52 2011 -0700
@@ -1766,9 +1766,9 @@
This trace sink will be connected to the "PhyRxDrop" trace source of the
point-to-point NetDevice. This trace source fires when a packet is dropped
by the physical layer of a ``NetDevice``. If you take a small detour to the
-source (``src/devices/point-to-point/point-to-point-net-device.cc``) you will
+source (``src/point-to-point/model/point-to-point-net-device.cc``) you will
see that this trace source refers to ``PointToPointNetDevice::m_phyRxDropTrace``.
-If you then look in ``src/devices/point-to-point/point-to-point-net-device.h``
+If you then look in ``src/point-to-point/model/point-to-point-net-device.h``
for this member variable, you will find that it is declared as a
``TracedCallback<Ptr<const Packet> >``. This should tell you that the
callback target should be a function that returns void and takes a single
--- a/src/template/wscript Tue May 10 00:07:19 2011 +0200
+++ b/src/template/wscript Mon May 09 18:04:52 2011 -0700
@@ -7,6 +7,11 @@
# Set the C++ source files for this module.
module.source = [
+ # Uncomment this line to compile this model source file.
+ #'model/sample-model.cc',
+
+ # Uncomment this line to compile this helper source file.
+ #'helper/sample-helper.cc',
]
# Create the module's test library.
@@ -23,6 +28,11 @@
# Set the C++ header files for this module.
headers.source = [
+ # Uncomment this line to install this model header file.
+ #'model/sample-model.h',
+
+ # Uncomment this line to install this helper header file.
+ #'helper/sample-helper.h',
]
# Uncomment these lines if this module needs a library such as the
--- a/src/wifi/bindings/modulegen__gcc_ILP32.py Tue May 10 00:07:19 2011 +0200
+++ b/src/wifi/bindings/modulegen__gcc_ILP32.py Mon May 09 18:04:52 2011 -0700
@@ -1869,11 +1869,6 @@
cls.add_method('CalculateSnrPer',
'ns3::InterferenceHelper::SnrPer',
[param('ns3::Ptr< ns3::InterferenceHelper::Event >', 'event')])
- ## interference-helper.h (module 'wifi'): static ns3::Time ns3::InterferenceHelper::CalculateTxDuration(uint32_t size, ns3::WifiMode payloadMode, ns3::WifiPreamble preamble) [member function]
- cls.add_method('CalculateTxDuration',
- 'ns3::Time',
- [param('uint32_t', 'size'), param('ns3::WifiMode', 'payloadMode'), param('ns3::WifiPreamble', 'preamble')],
- is_static=True)
## interference-helper.h (module 'wifi'): void ns3::InterferenceHelper::EraseEvents() [member function]
cls.add_method('EraseEvents',
'void',
@@ -1892,26 +1887,6 @@
'double',
[],
is_const=True)
- ## interference-helper.h (module 'wifi'): static uint32_t ns3::InterferenceHelper::GetPayloadDurationMicroSeconds(uint32_t size, ns3::WifiMode payloadMode) [member function]
- cls.add_method('GetPayloadDurationMicroSeconds',
- 'uint32_t',
- [param('uint32_t', 'size'), param('ns3::WifiMode', 'payloadMode')],
- is_static=True)
- ## interference-helper.h (module 'wifi'): static uint32_t ns3::InterferenceHelper::GetPlcpHeaderDurationMicroSeconds(ns3::WifiMode payloadMode, ns3::WifiPreamble preamble) [member function]
- cls.add_method('GetPlcpHeaderDurationMicroSeconds',
- 'uint32_t',
- [param('ns3::WifiMode', 'payloadMode'), param('ns3::WifiPreamble', 'preamble')],
- is_static=True)
- ## interference-helper.h (module 'wifi'): static ns3::WifiMode ns3::InterferenceHelper::GetPlcpHeaderMode(ns3::WifiMode payloadMode, ns3::WifiPreamble preamble) [member function]
- cls.add_method('GetPlcpHeaderMode',
- 'ns3::WifiMode',
- [param('ns3::WifiMode', 'payloadMode'), param('ns3::WifiPreamble', 'preamble')],
- is_static=True)
- ## interference-helper.h (module 'wifi'): static uint32_t ns3::InterferenceHelper::GetPlcpPreambleDurationMicroSeconds(ns3::WifiMode mode, ns3::WifiPreamble preamble) [member function]
- cls.add_method('GetPlcpPreambleDurationMicroSeconds',
- 'uint32_t',
- [param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble')],
- is_static=True)
## interference-helper.h (module 'wifi'): void ns3::InterferenceHelper::NotifyRxEnd() [member function]
cls.add_method('NotifyRxEnd',
'void',
@@ -6266,11 +6241,11 @@
'double',
[param('ns3::WifiMode', 'txMode'), param('double', 'ber')],
is_pure_virtual=True, is_const=True, is_virtual=True)
- ## wifi-phy.h (module 'wifi'): ns3::Time ns3::WifiPhy::CalculateTxDuration(uint32_t size, ns3::WifiMode payloadMode, ns3::WifiPreamble preamble) const [member function]
+ ## wifi-phy.h (module 'wifi'): static ns3::Time ns3::WifiPhy::CalculateTxDuration(uint32_t size, ns3::WifiMode payloadMode, ns3::WifiPreamble preamble) [member function]
cls.add_method('CalculateTxDuration',
'ns3::Time',
[param('uint32_t', 'size'), param('ns3::WifiMode', 'payloadMode'), param('ns3::WifiPreamble', 'preamble')],
- is_pure_virtual=True, is_const=True, is_virtual=True)
+ is_static=True)
## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::ConfigureStandard(ns3::WifiPhyStandard standard) [member function]
cls.add_method('ConfigureStandard',
'void',
@@ -6491,6 +6466,26 @@
'ns3::WifiMode',
[],
is_static=True)
+ ## wifi-phy.h (module 'wifi'): static uint32_t ns3::WifiPhy::GetPayloadDurationMicroSeconds(uint32_t size, ns3::WifiMode payloadMode) [member function]
+ cls.add_method('GetPayloadDurationMicroSeconds',
+ 'uint32_t',
+ [param('uint32_t', 'size'), param('ns3::WifiMode', 'payloadMode')],
+ is_static=True)
+ ## wifi-phy.h (module 'wifi'): static uint32_t ns3::WifiPhy::GetPlcpHeaderDurationMicroSeconds(ns3::WifiMode payloadMode, ns3::WifiPreamble preamble) [member function]
+ cls.add_method('GetPlcpHeaderDurationMicroSeconds',
+ 'uint32_t',
+ [param('ns3::WifiMode', 'payloadMode'), param('ns3::WifiPreamble', 'preamble')],
+ is_static=True)
+ ## wifi-phy.h (module 'wifi'): static ns3::WifiMode ns3::WifiPhy::GetPlcpHeaderMode(ns3::WifiMode payloadMode, ns3::WifiPreamble preamble) [member function]
+ cls.add_method('GetPlcpHeaderMode',
+ 'ns3::WifiMode',
+ [param('ns3::WifiMode', 'payloadMode'), param('ns3::WifiPreamble', 'preamble')],
+ is_static=True)
+ ## wifi-phy.h (module 'wifi'): static uint32_t ns3::WifiPhy::GetPlcpPreambleDurationMicroSeconds(ns3::WifiMode payloadMode, ns3::WifiPreamble preamble) [member function]
+ cls.add_method('GetPlcpPreambleDurationMicroSeconds',
+ 'uint32_t',
+ [param('ns3::WifiMode', 'payloadMode'), param('ns3::WifiPreamble', 'preamble')],
+ is_static=True)
## wifi-phy.h (module 'wifi'): ns3::Time ns3::WifiPhy::GetStateDuration() [member function]
cls.add_method('GetStateDuration',
'ns3::Time',
@@ -7084,11 +7079,6 @@
'ns3::Time',
[],
is_const=True, is_virtual=True)
- ## yans-wifi-phy.h (module 'wifi'): ns3::Time ns3::YansWifiPhy::CalculateTxDuration(uint32_t size, ns3::WifiMode payloadMode, ns3::WifiPreamble preamble) const [member function]
- cls.add_method('CalculateTxDuration',
- 'ns3::Time',
- [param('uint32_t', 'size'), param('ns3::WifiMode', 'payloadMode'), param('ns3::WifiPreamble', 'preamble')],
- is_const=True, is_virtual=True)
## yans-wifi-phy.h (module 'wifi'): uint32_t ns3::YansWifiPhy::GetNModes() const [member function]
cls.add_method('GetNModes',
'uint32_t',
--- a/src/wifi/bindings/modulegen__gcc_LP64.py Tue May 10 00:07:19 2011 +0200
+++ b/src/wifi/bindings/modulegen__gcc_LP64.py Mon May 09 18:04:52 2011 -0700
@@ -1869,11 +1869,6 @@
cls.add_method('CalculateSnrPer',
'ns3::InterferenceHelper::SnrPer',
[param('ns3::Ptr< ns3::InterferenceHelper::Event >', 'event')])
- ## interference-helper.h (module 'wifi'): static ns3::Time ns3::InterferenceHelper::CalculateTxDuration(uint32_t size, ns3::WifiMode payloadMode, ns3::WifiPreamble preamble) [member function]
- cls.add_method('CalculateTxDuration',
- 'ns3::Time',
- [param('uint32_t', 'size'), param('ns3::WifiMode', 'payloadMode'), param('ns3::WifiPreamble', 'preamble')],
- is_static=True)
## interference-helper.h (module 'wifi'): void ns3::InterferenceHelper::EraseEvents() [member function]
cls.add_method('EraseEvents',
'void',
@@ -1892,26 +1887,6 @@
'double',
[],
is_const=True)
- ## interference-helper.h (module 'wifi'): static uint32_t ns3::InterferenceHelper::GetPayloadDurationMicroSeconds(uint32_t size, ns3::WifiMode payloadMode) [member function]
- cls.add_method('GetPayloadDurationMicroSeconds',
- 'uint32_t',
- [param('uint32_t', 'size'), param('ns3::WifiMode', 'payloadMode')],
- is_static=True)
- ## interference-helper.h (module 'wifi'): static uint32_t ns3::InterferenceHelper::GetPlcpHeaderDurationMicroSeconds(ns3::WifiMode payloadMode, ns3::WifiPreamble preamble) [member function]
- cls.add_method('GetPlcpHeaderDurationMicroSeconds',
- 'uint32_t',
- [param('ns3::WifiMode', 'payloadMode'), param('ns3::WifiPreamble', 'preamble')],
- is_static=True)
- ## interference-helper.h (module 'wifi'): static ns3::WifiMode ns3::InterferenceHelper::GetPlcpHeaderMode(ns3::WifiMode payloadMode, ns3::WifiPreamble preamble) [member function]
- cls.add_method('GetPlcpHeaderMode',
- 'ns3::WifiMode',
- [param('ns3::WifiMode', 'payloadMode'), param('ns3::WifiPreamble', 'preamble')],
- is_static=True)
- ## interference-helper.h (module 'wifi'): static uint32_t ns3::InterferenceHelper::GetPlcpPreambleDurationMicroSeconds(ns3::WifiMode mode, ns3::WifiPreamble preamble) [member function]
- cls.add_method('GetPlcpPreambleDurationMicroSeconds',
- 'uint32_t',
- [param('ns3::WifiMode', 'mode'), param('ns3::WifiPreamble', 'preamble')],
- is_static=True)
## interference-helper.h (module 'wifi'): void ns3::InterferenceHelper::NotifyRxEnd() [member function]
cls.add_method('NotifyRxEnd',
'void',
@@ -6266,11 +6241,11 @@
'double',
[param('ns3::WifiMode', 'txMode'), param('double', 'ber')],
is_pure_virtual=True, is_const=True, is_virtual=True)
- ## wifi-phy.h (module 'wifi'): ns3::Time ns3::WifiPhy::CalculateTxDuration(uint32_t size, ns3::WifiMode payloadMode, ns3::WifiPreamble preamble) const [member function]
+ ## wifi-phy.h (module 'wifi'): static ns3::Time ns3::WifiPhy::CalculateTxDuration(uint32_t size, ns3::WifiMode payloadMode, ns3::WifiPreamble preamble) [member function]
cls.add_method('CalculateTxDuration',
'ns3::Time',
[param('uint32_t', 'size'), param('ns3::WifiMode', 'payloadMode'), param('ns3::WifiPreamble', 'preamble')],
- is_pure_virtual=True, is_const=True, is_virtual=True)
+ is_static=True)
## wifi-phy.h (module 'wifi'): void ns3::WifiPhy::ConfigureStandard(ns3::WifiPhyStandard standard) [member function]
cls.add_method('ConfigureStandard',
'void',
@@ -6491,6 +6466,26 @@
'ns3::WifiMode',
[],
is_static=True)
+ ## wifi-phy.h (module 'wifi'): static uint32_t ns3::WifiPhy::GetPayloadDurationMicroSeconds(uint32_t size, ns3::WifiMode payloadMode) [member function]
+ cls.add_method('GetPayloadDurationMicroSeconds',
+ 'uint32_t',
+ [param('uint32_t', 'size'), param('ns3::WifiMode', 'payloadMode')],
+ is_static=True)
+ ## wifi-phy.h (module 'wifi'): static uint32_t ns3::WifiPhy::GetPlcpHeaderDurationMicroSeconds(ns3::WifiMode payloadMode, ns3::WifiPreamble preamble) [member function]
+ cls.add_method('GetPlcpHeaderDurationMicroSeconds',
+ 'uint32_t',
+ [param('ns3::WifiMode', 'payloadMode'), param('ns3::WifiPreamble', 'preamble')],
+ is_static=True)
+ ## wifi-phy.h (module 'wifi'): static ns3::WifiMode ns3::WifiPhy::GetPlcpHeaderMode(ns3::WifiMode payloadMode, ns3::WifiPreamble preamble) [member function]
+ cls.add_method('GetPlcpHeaderMode',
+ 'ns3::WifiMode',
+ [param('ns3::WifiMode', 'payloadMode'), param('ns3::WifiPreamble', 'preamble')],
+ is_static=True)
+ ## wifi-phy.h (module 'wifi'): static uint32_t ns3::WifiPhy::GetPlcpPreambleDurationMicroSeconds(ns3::WifiMode payloadMode, ns3::WifiPreamble preamble) [member function]
+ cls.add_method('GetPlcpPreambleDurationMicroSeconds',
+ 'uint32_t',
+ [param('ns3::WifiMode', 'payloadMode'), param('ns3::WifiPreamble', 'preamble')],
+ is_static=True)
## wifi-phy.h (module 'wifi'): ns3::Time ns3::WifiPhy::GetStateDuration() [member function]
cls.add_method('GetStateDuration',
'ns3::Time',
@@ -7084,11 +7079,6 @@
'ns3::Time',
[],
is_const=True, is_virtual=True)
- ## yans-wifi-phy.h (module 'wifi'): ns3::Time ns3::YansWifiPhy::CalculateTxDuration(uint32_t size, ns3::WifiMode payloadMode, ns3::WifiPreamble preamble) const [member function]
- cls.add_method('CalculateTxDuration',
- 'ns3::Time',
- [param('uint32_t', 'size'), param('ns3::WifiMode', 'payloadMode'), param('ns3::WifiPreamble', 'preamble')],
- is_const=True, is_virtual=True)
## yans-wifi-phy.h (module 'wifi'): uint32_t ns3::YansWifiPhy::GetNModes() const [member function]
cls.add_method('GetNModes',
'uint32_t',