diff -Naur ns-3.18/AUTHORS ns-3.18.1/AUTHORS
--- ns-3.18/AUTHORS 2013-08-29 22:36:52.000000000 -0700
+++ ns-3.18.1/AUTHORS 2013-11-15 16:40:49.663761007 -0800
@@ -11,10 +11,12 @@
Raj Bhattacharjea (raj.b@gatech.edu)
Timo Bingmann (timo.bingmann@student.kit.edu)
Julien Boite (juboite@gmail.com)
+Biljana Bojovic
Elena Borovkova (borokovaes@iitp.ru)
Pavel Boyko (boyko@iitp.ru)
Dan Broyles (muxman@sbcglobal.net)
Jonathan Brugge (j.d.brugge@student.utwente.nl)
+Junling Bu
Elena Buchatskaia (borovkovaes@iitp.ru)
Gustavo Carneiro (gjc@inescporto.pt, gjcarneiro@gmail.com)
Egemen K. Cetinkaya (ekc@iitc.ku.edu)
@@ -26,12 +28,17 @@
Luca Costantino (luca.costantino@gmail.com)
Alexander D'souza (moijes12@gmail.com)
Craig Dowell (craigdo@ee.washington.edu)
+Gilaras Drakeson
+Christian Facchini
Denis Fakhriev (fakhriev@iitp.ru)
Jahanzeb Farooq (Jahanzeb.Farooq@inria.fr, Jahanzeb.Farooq@gmail.com)
+Luca Favatella
Pedro Fortuna (pedro.fortuna@inescporto.pt)
Juliana Freitag Borin (juliana.freitag@gmail.com)
Eric Gamess (egamess@gmail.com)
+Yida Gao
Thomas Geithner (thomas.geithner@dai-labor.de)
+Ashim Ghosh
Martin Giachino (martin.giachino@gmail.com,giachino@fing.edu.uy)
Tom Goff (tgoff@tgoff.net)
David Gross (gdavid.devel@gmail.com)
@@ -41,6 +48,9 @@
Bruno Haick (bghaick@hotmail.com)
Frank Helbert (frank@ime.usp.br)
Tom Henderson (tomhend@u.washington.edu)
+Budiarto Herman
+Tom Hewer
+Kim Højgaard-Hansen
Blake Hurd (naimorai@gmail.com)
ishan (ishan.chhabra@gmail.com)
Mohamed Amine Ismail (amine.ismail@inria.fr, iamine@udcast.com)
@@ -48,13 +58,16 @@
Sascha Alexander Jopen (jopen@informatik.uni-bonn.de)
Sam Jansen (sam.jansen@gmail.com)
Liu Jian (liujatp@gmail.com)
+Konstantinos Katsaros
Joe Kopena (tjkopena@cs.drexel.edu)
Flavio Kobuta (flaviokubota@gmail.com)
Aleksey Kovalenko (kovalenko@iitp.ru)
Mathieu Lacage (mathieu.lacage@inria.fr)
Emmanuelle Laprise (emmmanuelle.laprise@bluekazoo.ca)
+Kristijan Lenković
Daniel Lertpratchya (nikkipui@gmail.com)
Björn Lichtblau (lichtbla@informatik.hu-berlin.de)
+Timo Lindhorst
Keith Ma (keith.nwsuaf@gmail.com)
Federico Maguolo (maguolof@dei.unipd.it)
Antti Makela (zarhan@cc.hut.fi)
@@ -63,17 +76,24 @@
Andrey Mazo (mazo@iitp.ru)
Jonathan McCrohan (jmccroha@tcd.ie)
Vedran Miletić (rivanvx@gmail.com)
+Jens Mittag
Marco Miozzo (mmiozzo@cttc.es)
Faker Moatamri (faker.moatamri@inria.fr)
+Edvin Močibob
Mike Moreton (mjvm_ns@hotmail.com)
Sidharth Nabar (snabar@uw.edu)
Hemanth Narra (hemanth@ittc.ku.edu)
+Andreas Nilsson
Jaume Nin (jnin@cttc.es)
Michael Nowatkowski (nowatkom@gmail.com)
+Anh Nguyen
Duy Nguyen (duy@soe.ucsc.edu)
+Lluís Parcerisa
Tommaso Pecorella (tommaso.pecorella@unifi.it)
Vikas Pushkar (vikaskupushkar@gmail.com)
Josh Pelkey (jpelkey@gatech.edu)
+Per
+Fernando Pereira
Colin Perkins (csp@csperkins.org)
Giuseppe Piro (g.piro@poliba.it)
Yana Podkosova (yanapdk@rambler.ru)
@@ -83,15 +103,22 @@
Ken Renard (kenneth.renard@arl.army.mil)
Manuel Requena (mrequena@cttc.es)
George F. Riley (riley@ece.gatech.edu)
+Juergen Rinas
Sebastian Rohde (sebastian.rohde@tu-dortmund.de)
+Karsten Roscher
Bill Roome (wdr@bell-labs.com)
+David
Andrea Sacco (andrea.sacco85@gmail.com)
Providence Salumu Munga (Providence.Salumu@gmail.com, Providence.Salumu_Munga@it-sudparis.eu)
+Francisco Javier Sánchez-Roselly
Florian Schmidt (Florian.Schmidt@cs.rwth-aachen.de)
Guillaume Seguin (guillaume.seguin@inria.fr)
Kulin Shah (m.kulin@gmail.com)
+Guowang Shi
Phillip Sitbon (phillip.sitbon@gmail.com)
Anirudh Sivaraman (sk.anirudh@gmail.com)
+Steven Smith
+Andrew Stanton
Ewgenij Starostin (estar@cs.tu-berlin.de)
YunQiang Su (wzssyqa@gmail.com)
Brian Swenson (bswenson3@gatech.edu)
diff -Naur ns-3.18/bindings/python/wscript ns-3.18.1/bindings/python/wscript
--- ns-3.18/bindings/python/wscript 2013-08-29 22:36:52.000000000 -0700
+++ ns-3.18.1/bindings/python/wscript 2013-11-15 16:40:49.663761007 -0800
@@ -13,7 +13,7 @@
# after = TaskGen.after
## https://launchpad.net/pybindgen/
-REQUIRED_PYBINDGEN_VERSION = (0, 16, 0, 831)
+REQUIRED_PYBINDGEN_VERSION = (0, 16, 0, 834)
REQUIRED_PYGCCXML_VERSION = (0, 9, 5)
@@ -310,7 +310,7 @@
raise ValueError("Module %r not found" % module)
return ns3headers.path.abspath()
-class apiscan_task(Task.TaskBase):
+class apiscan_task(Task.Task):
"""Uses gccxml to scan the file 'everything.h' and extract API definitions.
"""
after = 'gen_ns3_module_header ns3header'
@@ -318,7 +318,7 @@
color = "BLUE"
def __init__(self, curdirnode, env, bld, target, cflags, module):
self.bld = bld
- super(apiscan_task, self).__init__(generator=self)
+ super(apiscan_task, self).__init__(generator=self, env=env)
self.curdirnode = curdirnode
self.env = env
self.target = target
@@ -341,6 +341,8 @@
return self.uid_
def run(self):
+ self.inputs = [self.bld.bldnode.find_resource("ns3/{0}-module.h".format(self.module))]
+ self.outputs = [self.bld.srcnode.find_resource("src/{}/bindings/modulegen__{}.py".format(self.module, self.target))]
top_builddir = self.bld.bldnode.abspath()
module_path = get_module_path(self.bld, self.module)
headers_map = get_headers_map(self.bld)
@@ -363,6 +365,12 @@
retval = scan.wait()
return retval
+ def runnable_status(self):
+ # By default, Waf Task will skip running a task if the signature of
+ # the build has not changed. We want this task to always run if
+ # invoked by the user, particularly since --apiscan=all will require
+ # invoking this task many times, once per module.
+ return Task.RUN_ME
def get_modules_and_headers(bld):
"""
@@ -393,30 +401,6 @@
-class python_scan_task_collector(Task.TaskBase):
- """Tasks that waits for the python-scan-* tasks to complete and then signals WAF to exit
- """
- after = 'apiscan'
- before = 'cxx'
- color = "BLUE"
- def __init__(self, curdirnode, env, bld):
- self.bld = bld
- super(python_scan_task_collector, self).__init__(generator=self)
- self.curdirnode = curdirnode
- self.env = env
-
- def display(self):
- return 'python-scan-collector\n'
-
- def run(self):
- # signal stop (we generated files into the source dir and WAF
- # can't cope with it, so we have to force the user to restart
- # WAF)
- self.bld.producer.stop = 1
- return 0
-
-
-
class gen_ns3_compat_pymod_task(Task.Task):
"""Generates a 'ns3.py' compatibility module."""
before = 'cxx'
@@ -479,7 +463,6 @@
group = bld.get_group(bld.current_group)
for module in scan_modules:
group.append(apiscan_task(bld.path, env, bld, target, cflags, module))
- group.append(python_scan_task_collector(bld.path, env, bld))
return
diff -Naur ns-3.18/CHANGES.html ns-3.18.1/CHANGES.html
--- ns-3.18/CHANGES.html 2013-08-29 22:36:52.000000000 -0700
+++ ns-3.18.1/CHANGES.html 2013-11-15 16:40:49.659761009 -0800
@@ -51,6 +51,44 @@
us a note on ns-developers mailing list.
+
Changes from ns-3.18 to ns-3.18.1
+
New API:
+
+
It is now possible to randomize the time of the first beacon from an
+ access point. Use an attribute "EnableBeaconJitter" to enable/disable
+ this feature.
+
+
A new FixedRoomPositionAllocator helper class is available; it
+ allows one to generate a random position uniformly distributed in the
+ volume of a chosen room inside a chosen building.
+
+
+
+
Changes to existing API:
+
+
Logging wildcards: allow "***" as synonym for "*=**" to turn on all logging.
+
+
The log component list ("NS_LOG=print-list") is now printed alphabetically.
+
+
Some deprecated IEEE 802.11p code has been removed from the wifi module
+
+
+
+
Changes to build system:
+
+
The Python API scanning system (./waf --apiscan) has been fixed (bug 1622)
+
+
Waf has been upgraded from 1.7.11 to 1.7.13
+
+
+
+
Changed behavior:
+
+
Wifi simulations have additional jitter on AP beaconing (see above) and some bug fixes have been applied to wifi module (see RELEASE_NOTES)
+
+
+
+
Changes from ns-3.17 to ns-3.18
New API:
@@ -161,6 +199,7 @@
AODV Hellos are disabled by default. The performance with Hellos enabled and disabled are almost identical. With Hellos enabled, AODV will suppress hellos from transmission, if any recent broadcast such as RREQ was transmitted. The attribute ns3::aodv::RoutingProtocol::EnableHello can be used to enable/disable Hellos.
+
Changes from ns-3.16 to ns-3.17
New API:
diff -Naur ns-3.18/doc/build.txt ns-3.18.1/doc/build.txt
--- ns-3.18/doc/build.txt 2013-08-29 22:36:52.000000000 -0700
+++ ns-3.18.1/doc/build.txt 2013-11-15 16:40:48.191760969 -0800
@@ -3,7 +3,7 @@
Note: We've added a wiki page with more complete build instructions
than the quick ones you find below:
-http://www.nsnam.org/wiki/index.php/Installation
+http://www.nsnam.org/wiki/Installation
=== Installing Waf ===
diff -Naur ns-3.18/doc/manual/Makefile ns-3.18.1/doc/manual/Makefile
--- ns-3.18/doc/manual/Makefile 2013-08-29 22:36:52.000000000 -0700
+++ ns-3.18.1/doc/manual/Makefile 2013-11-15 16:40:48.195760971 -0800
@@ -87,7 +87,7 @@
IMAGES = $(IMAGES_EPS) $(IMAGES_PNG) $(IMAGES_PDF)
-RESCALE = $(shell hg root)/utils/rescale-pdf.sh
+RESCALE = ../../utils/rescale-pdf.sh
%.eps : %.dia; $(DIA) -t eps $< -e $@
%.png : %.dia; $(DIA) -t png $< -e $@
diff -Naur ns-3.18/doc/manual/source/conf.py ns-3.18.1/doc/manual/source/conf.py
--- ns-3.18/doc/manual/source/conf.py 2013-08-29 22:36:52.000000000 -0700
+++ ns-3.18.1/doc/manual/source/conf.py 2013-11-15 16:40:48.203760974 -0800
@@ -48,9 +48,9 @@
# built documents.
#
# The short X.Y version.
-version = 'ns-3.18'
+version = 'ns-3.18.1'
# The full version, including alpha/beta/rc tags.
-release = 'ns-3.18'
+release = 'ns-3.18.1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff -Naur ns-3.18/doc/manual/source/index.rst ns-3.18.1/doc/manual/source/index.rst
--- ns-3.18/doc/manual/source/index.rst 2013-08-29 22:36:52.000000000 -0700
+++ ns-3.18.1/doc/manual/source/index.rst 2013-11-15 16:40:48.203760974 -0800
@@ -8,7 +8,7 @@
* `ns-3 Doxygen `_: Documentation of the public APIs of the simulator
* Tutorial, Manual *(this document)*, and Model Library for the `latest release `_ and `development tree `_
-* `ns-3 wiki `_
+* `ns-3 wiki `_
This document is written in `reStructuredText `_ for `Sphinx `_ and is maintained in the
``doc/manual`` directory of ns-3's source code.
diff -Naur ns-3.18/doc/manual/source/new-modules.rst ns-3.18.1/doc/manual/source/new-modules.rst
--- ns-3.18/doc/manual/source/new-modules.rst 2013-08-29 22:36:52.000000000 -0700
+++ ns-3.18.1/doc/manual/source/new-modules.rst 2013-11-15 16:40:48.199760973 -0800
@@ -152,7 +152,7 @@
.. sourcecode:: python
- headers = bld.new_task_gen(features=['ns3header'])
+ headers = bld(features='ns3header')
headers.module = 'spectrum'
@@ -329,7 +329,9 @@
Step 8 - Build and test your new module
***************************************
-You can now build and test your module as normal:
+You can now build and test your module as normal. You must reconfigure
+the project as a first step or else your new module will not be included
+in the build.
.. sourcecode:: bash
@@ -338,3 +340,19 @@
$ ./test.py
and look for your new module's test suite (and example programs, if enabled) in the test output.
+
+Step 9 - Python bindings
+************************
+
+Adding Python bindings to your module is optional, and the step is
+commented out by default in the ``create-module.py`` script.
+
+.. sourcecode:: python
+
+ # bld.ns3_python_bindings()
+
+If you want to include Python bindings (needed only if you want
+to write Python ns-3 programs instead of C++ ns-3 programs), you
+should uncomment the above and install the Python API scanning
+system (covered elsewhere in this manual) and scan your module to
+generate new bindings.
diff -Naur ns-3.18/doc/manual/source/python.rst ns-3.18.1/doc/manual/source/python.rst
--- ns-3.18/doc/manual/source/python.rst 2013-08-29 22:36:52.000000000 -0700
+++ ns-3.18.1/doc/manual/source/python.rst 2013-11-15 16:40:48.207760974 -0800
@@ -312,4 +312,4 @@
More Information for Developers
*******************************
-If you are a developer and need more information on |ns3|'s Python bindings, please see the `Python Bindings wiki page `_.
+If you are a developer and need more information on |ns3|'s Python bindings, please see the `Python Bindings wiki page `_.
diff -Naur ns-3.18/doc/manual/source/troubleshoot.rst ns-3.18.1/doc/manual/source/troubleshoot.rst
--- ns-3.18/doc/manual/source/troubleshoot.rst 2013-08-29 22:36:52.000000000 -0700
+++ ns-3.18.1/doc/manual/source/troubleshoot.rst 2013-11-15 16:40:48.199760973 -0800
@@ -8,7 +8,7 @@
or running |ns3| programs.
Please note that the wiki
-(``_) may have contributed
+(``_) may have contributed
items.
Build errors
diff -Naur ns-3.18/doc/models/Makefile ns-3.18.1/doc/models/Makefile
--- ns-3.18/doc/models/Makefile 2013-08-29 22:36:52.000000000 -0700
+++ ns-3.18.1/doc/models/Makefile 2013-11-15 16:40:48.151760968 -0800
@@ -309,7 +309,7 @@
IMAGES = $(IMAGES_EPS) $(IMAGES_PNG) $(IMAGES_PDF)
-RESCALE = $(shell hg root)/utils/rescale-pdf.sh
+RESCALE = ../../utils/rescale-pdf.sh
%.eps : %.dia; $(DIA) -t eps $< -e $@
%.png : %.dia; $(DIA) -t png $< -e $@
diff -Naur ns-3.18/doc/models/source/conf.py ns-3.18.1/doc/models/source/conf.py
--- ns-3.18/doc/models/source/conf.py 2013-08-29 22:36:52.000000000 -0700
+++ ns-3.18.1/doc/models/source/conf.py 2013-11-15 16:40:48.175760974 -0800
@@ -48,9 +48,9 @@
# built documents.
#
# The short X.Y version.
-version = 'ns-3.18'
+version = 'ns-3.18.1'
# The full version, including alpha/beta/rc tags.
-release = 'ns-3.18'
+release = 'ns-3.18.1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff -Naur ns-3.18/doc/models/source/index.rst ns-3.18.1/doc/models/source/index.rst
--- ns-3.18/doc/models/source/index.rst 2013-08-29 22:36:52.000000000 -0700
+++ ns-3.18.1/doc/models/source/index.rst 2013-11-15 16:40:48.171760974 -0800
@@ -8,7 +8,7 @@
* `ns-3 Doxygen `_: Documentation of the public APIs of the simulator
* Tutorial, Manual, and Model Library *(this document)* for the `latest release `_ and `development tree `_
-* `ns-3 wiki `_
+* `ns-3 wiki `_
This document is written in `reStructuredText `_ for `Sphinx `_ and is maintained in the
``doc/models`` directory of ns-3's source code.
diff -Naur ns-3.18/doc/release_steps.txt ns-3.18.1/doc/release_steps.txt
--- ns-3.18/doc/release_steps.txt 2013-08-29 22:36:52.000000000 -0700
+++ ns-3.18.1/doc/release_steps.txt 2013-11-15 16:40:48.223760971 -0800
@@ -102,7 +102,7 @@
- change the string 3-dev in the VERSION file to the real version
(e.g. 3.14) This must agree with the version name you chose in the clone.
- change the version and release string for the documentation in
- doc/manual/source, doc/tutorial/source, doc/tutorial-pt/source,
+ doc/manual/source, doc/tutorial/source, doc/tutorial-pt-br/source,
and doc/models/source conf.py files
This should hopefully be updated in the future to simply pull from the
VERSION file.
@@ -155,6 +155,7 @@
- Documentation
2. Repoint http://www.nsnam.org/releases/latest to the new page
+ Repoint http://www.nsnam.org/documentation/latest to the new page
Repoint /var/www/html/doxygen-release to the new release doxygen.
3. Update the Older Releases page to create an entry for the previous
diff -Naur ns-3.18/doc/tutorial/source/conf.py ns-3.18.1/doc/tutorial/source/conf.py
--- ns-3.18/doc/tutorial/source/conf.py 2013-08-29 22:36:54.000000000 -0700
+++ ns-3.18.1/doc/tutorial/source/conf.py 2013-11-15 16:40:48.147760970 -0800
@@ -48,9 +48,9 @@
# built documents.
#
# The short X.Y version.
-version = 'ns-3.18'
+version = 'ns-3.18.1'
# The full version, including alpha/beta/rc tags.
-release = 'ns-3.18'
+release = 'ns-3.18.1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff -Naur ns-3.18/doc/tutorial/source/getting-started.rst ns-3.18.1/doc/tutorial/source/getting-started.rst
--- ns-3.18/doc/tutorial/source/getting-started.rst 2013-08-29 22:36:54.000000000 -0700
+++ ns-3.18.1/doc/tutorial/source/getting-started.rst 2013-11-15 16:40:48.143760972 -0800
@@ -43,7 +43,7 @@
present on your system before proceeding. |ns3| provides a wiki
page that includes pages with many useful hints and tips.
One such page is the "Installation" page,
-http://www.nsnam.org/wiki/index.php/Installation.
+http://www.nsnam.org/wiki/Installation.
The "Prerequisites" section of this wiki page explains which packages are
required to support common |ns3| options, and also provides the
@@ -661,5 +661,5 @@
If you want to run programs under another tool such as gdb or valgrind,
see this `wiki entry
-`_.
+`_.
diff -Naur ns-3.18/doc/tutorial/source/index.rst ns-3.18.1/doc/tutorial/source/index.rst
--- ns-3.18/doc/tutorial/source/index.rst 2013-08-29 22:36:54.000000000 -0700
+++ ns-3.18.1/doc/tutorial/source/index.rst 2013-11-15 16:40:48.147760970 -0800
@@ -8,7 +8,7 @@
* `ns-3 Doxygen `_: Documentation of the public APIs of the simulator
* Tutorial *(this document)*, Manual, and Model Library for the `latest release `_ and `development tree `_
-* `ns-3 wiki `_
+* `ns-3 wiki `_
This document is written in `reStructuredText `_ for `Sphinx `_ and is maintained in the
``doc/tutorial`` directory of ns-3's source code.
diff -Naur ns-3.18/doc/tutorial/source/introduction.rst ns-3.18.1/doc/tutorial/source/introduction.rst
--- ns-3.18/doc/tutorial/source/introduction.rst 2013-08-29 22:36:54.000000000 -0700
+++ ns-3.18.1/doc/tutorial/source/introduction.rst 2013-11-15 16:40:48.147760970 -0800
@@ -135,9 +135,9 @@
* Open source licensing based on GNU GPLv2 compatibility
* `wiki
- `_
+ `_
* `Contributed Code
- `_ page, similar to |ns2|'s popular Contributed Code
+ `_ page, similar to |ns2|'s popular Contributed Code
`page
`_
* Open `bug tracker
diff -Naur ns-3.18/doc/tutorial-pt-br/source/conf.py ns-3.18.1/doc/tutorial-pt-br/source/conf.py
--- ns-3.18/doc/tutorial-pt-br/source/conf.py 2013-08-29 22:36:53.000000000 -0700
+++ ns-3.18.1/doc/tutorial-pt-br/source/conf.py 2013-11-15 16:40:48.215760970 -0800
@@ -50,9 +50,9 @@
# built documents.
#
# The short X.Y version.
-version = 'ns-3.18'
+version = 'ns-3.18.1'
# The full version, including alpha/beta/rc tags.
-release = 'ns-3.18'
+release = 'ns-3.18.1'
# The language for content autogenerated by . Refer to babel documentation
# for a list of supported languages.
diff -Naur ns-3.18/doc/tutorial-pt-br/source/getting-started.rst ns-3.18.1/doc/tutorial-pt-br/source/getting-started.rst
--- ns-3.18/doc/tutorial-pt-br/source/getting-started.rst 2013-08-29 22:36:53.000000000 -0700
+++ ns-3.18.1/doc/tutorial-pt-br/source/getting-started.rst 2013-11-15 16:40:48.211760972 -0800
@@ -30,9 +30,9 @@
present on your system before proceeding. |ns3| provides a wiki
for your reading pleasure that includes pages with many useful hints and tips.
One such page is the "Installation" page,
- http://www.nsnam.org/wiki/index.php/Installation.
+ http://www.nsnam.org/wiki/Installation.
-O |ns3|, como um todo, bastante complexo e possui vrias dependncias. Isto tambm verdade para as ferramentas que fornecem suporte ao |ns3| (exemplos, `"GNU toolchain"`, Mercurial e um editor para a programao), desta forma necessrio assegurar que vrias bibliotecas estejam presentes no sistema. O |ns3| fornece um Wiki com vrias dicas sobre o sistema. Uma das pginas do Wiki a pgina de instalao (`"Installation"`) que est disponvel em: http://www.nsnam.org/wiki/index.php/Installation.
+O |ns3|, como um todo, bastante complexo e possui vrias dependncias. Isto tambm verdade para as ferramentas que fornecem suporte ao |ns3| (exemplos, `"GNU toolchain"`, Mercurial e um editor para a programao), desta forma necessrio assegurar que vrias bibliotecas estejam presentes no sistema. O |ns3| fornece um Wiki com vrias dicas sobre o sistema. Uma das pginas do Wiki a pgina de instalao (`"Installation"`) que est disponvel em: http://www.nsnam.org/wiki/Installation.
..
The "Prerequisites" section of this wiki page explains which packages are
@@ -740,7 +740,7 @@
..
If you want to run programs under another tool such as gdb or valgrind,
see this `wiki entry
- `_.
+ `_.
-Se o leitor for executar seus programas sob outras ferramentas, tais como Gdb ou Valgrind, recomendvel que leia a seguinte `entrada no Wiki `_.
+Se o leitor for executar seus programas sob outras ferramentas, tais como Gdb ou Valgrind, recomendvel que leia a seguinte `entrada no Wiki `_.
diff -Naur ns-3.18/doc/tutorial-pt-br/source/index.rst ns-3.18.1/doc/tutorial-pt-br/source/index.rst
--- ns-3.18/doc/tutorial-pt-br/source/index.rst 2013-08-29 22:36:53.000000000 -0700
+++ ns-3.18.1/doc/tutorial-pt-br/source/index.rst 2013-11-15 16:40:48.215760970 -0800
@@ -30,7 +30,7 @@
* Tutorial *(este documento)*, manual, modelos de bibliotecas para a `ltima release `_ e `rvore de desenvolvimento `_;
-* `ns-3 wiki `_.
+* `ns-3 wiki `_.
..
This document is written in `reStructuredText `_ for `Sphinx `_ and is maintained in the
diff -Naur ns-3.18/doc/tutorial-pt-br/source/introduction.rst ns-3.18.1/doc/tutorial-pt-br/source/introduction.rst
--- ns-3.18/doc/tutorial-pt-br/source/introduction.rst 2013-08-29 22:36:53.000000000 -0700
+++ ns-3.18.1/doc/tutorial-pt-br/source/introduction.rst 2013-11-15 16:40:48.215760970 -0800
@@ -132,15 +132,15 @@
* Licena de cdigo aberto compatvel com GNU GPLv2;
-* `Wiki `_;
+* `Wiki `_;
..
* `Contributed Code
- `_ page, similar to ns-2's popular Contributed Code
+ `_ page, similar to ns-2's popular Contributed Code
`page
`_
-* Pgina para `contribuio com o cdigo `_, similar a pgina de contribuio do `ns-2 `_;
+* Pgina para `contribuio com o cdigo `_, similar a pgina de contribuio do `ns-2 `_;
..
* Open `bug tracker
diff -Naur ns-3.18/examples/stats/README ns-3.18.1/examples/stats/README
--- ns-3.18/examples/stats/README 2013-08-29 22:36:55.000000000 -0700
+++ ns-3.18.1/examples/stats/README 2013-11-15 16:40:48.239760975 -0800
@@ -13,7 +13,7 @@
More information on the statistics package and this example is
available online on the ns-3 wiki at:
-http://www.nsnam.org/wiki/index.php/Statistical_Framework_for_Network_Simulation
+http://www.nsnam.org/wiki/Statistical_Framework_for_Network_Simulation
*** Using ns-3 with the OMNeT++ analysis tool ***
diff -Naur ns-3.18/examples/tcp/tcp-variants-comparison.cc ns-3.18.1/examples/tcp/tcp-variants-comparison.cc
--- ns-3.18/examples/tcp/tcp-variants-comparison.cc 2013-08-29 22:36:55.000000000 -0700
+++ ns-3.18.1/examples/tcp/tcp-variants-comparison.cc 2013-11-15 16:40:48.243760973 -0800
@@ -300,7 +300,6 @@
ApplicationContainer sourceApp = ftp.Install (sources.Get(i));
sourceApp.Start (Seconds (start_time*i));
sourceApp.Stop (Seconds (stop_time - 3));
- Time check_start (Seconds((start_time*i)+3));
sinkHelper.SetAttribute ("Protocol", TypeIdValue (TcpSocketFactory::GetTypeId ()));
ApplicationContainer sinkApp = sinkHelper.Install (sinks);
diff -Naur ns-3.18/examples/wireless/ht-wifi-network.cc ns-3.18.1/examples/wireless/ht-wifi-network.cc
--- ns-3.18/examples/wireless/ht-wifi-network.cc 2013-08-29 22:36:56.000000000 -0700
+++ ns-3.18.1/examples/wireless/ht-wifi-network.cc 2013-11-15 16:40:48.231760974 -0800
@@ -92,7 +92,7 @@
Ssid ssid = Ssid ("ns380211n");
- double datarate;
+ double datarate = 0;
StringValue DataRate;
if (i==0)
{
diff -Naur ns-3.18/examples/wireless/wifi-hidden-terminal.cc ns-3.18.1/examples/wireless/wifi-hidden-terminal.cc
--- ns-3.18/examples/wireless/wifi-hidden-terminal.cc 2013-08-29 22:36:56.000000000 -0700
+++ ns-3.18.1/examples/wireless/wifi-hidden-terminal.cc 2013-11-15 16:40:48.231760974 -0800
@@ -82,10 +82,10 @@
// uncomment the following to have athstats output
// AthstatsHelper athstats;
- // athstats.EnableAthstats(enableCtsRts ? "basic-athstats-node" : "rtscts-athstats-node", nodes);
+ // athstats.EnableAthstats(enableCtsRts ? "rtscts-athstats-node" : "basic-athstats-node" , nodes);
// uncomment the following to have pcap output
- //wifiPhy.EnablePcap (enableCtsRts ? "basic-pcap-node" : "rtscts-pcap-node", nodes);
+ // wifiPhy.EnablePcap (enableCtsRts ? "rtscts-pcap-node" : "basic-pcap-node" , nodes);
// 6. Install TCP/IP stack & assign IP addresses
@@ -99,7 +99,7 @@
ApplicationContainer cbrApps;
uint16_t cbrPort = 12345;
OnOffHelper onOffHelper ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address ("10.0.0.2"), cbrPort));
- onOffHelper.SetAttribute ("PacketSize", UintegerValue (200));
+ onOffHelper.SetAttribute ("PacketSize", UintegerValue (1400));
onOffHelper.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
onOffHelper.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));
@@ -153,13 +153,21 @@
for (std::map::const_iterator i = stats.begin (); i != stats.end (); ++i)
{
// first 2 FlowIds are for ECHO apps, we don't want to display them
+ //
+ // Duration for throughput measurement is 9.0 seconds, since
+ // StartTime of the OnOffApplication is at about "second 1"
+ // and
+ // Simulator::Stops at "second 10".
if (i->first > 2)
{
Ipv4FlowClassifier::FiveTuple t = classifier->FindFlow (i->first);
std::cout << "Flow " << i->first - 2 << " (" << t.sourceAddress << " -> " << t.destinationAddress << ")\n";
+ std::cout << " Tx Packets: " << i->second.txPackets << "\n";
std::cout << " Tx Bytes: " << i->second.txBytes << "\n";
+ std::cout << " TxOffered: " << i->second.txBytes * 8.0 / 9.0 / 1000 / 1000 << " Mbps\n";
+ std::cout << " Rx Packets: " << i->second.rxPackets << "\n";
std::cout << " Rx Bytes: " << i->second.rxBytes << "\n";
- std::cout << " Throughput: " << i->second.rxBytes * 8.0 / 10.0 / 1000 / 1000 << " Mbps\n";
+ std::cout << " Throughput: " << i->second.rxBytes * 8.0 / 9.0 / 1000 / 1000 << " Mbps\n";
}
}
diff -Naur ns-3.18/RELEASE_NOTES ns-3.18.1/RELEASE_NOTES
--- ns-3.18/RELEASE_NOTES 2013-08-29 22:42:16.000000000 -0700
+++ ns-3.18.1/RELEASE_NOTES 2013-11-15 16:40:48.231760974 -0800
@@ -9,8 +9,60 @@
Consult the file CHANGES.html for more detailed information about changed
API and behavior across ns-3 releases.
+Release 3.18.1
+==============
+
+This release is mainly to provide updated compiler support (clang/LLVM)
+and fix the Python API scanning facility. A few additional bug fixes
+and new features are described below.
+
+Availability
+------------
+This release is available from:
+http://www.nsnam.org/release/ns-allinone-3.18.1.tar.bz2
+
+Supported platforms
+-------------------
+These platforms have been tested; others may work also:
+- Fedora Core 19 (32/64 bit) with g++-4.8.1
+- Ubuntu 13.10 (64 bit) with g++-4.8.1
+- Ubuntu 12.04.3 (32/64 bit) with g++-4.6.3
+- Ubuntu 10.04.4 LTS (64 bit) with g++-4.4.3
+- OS X Mavericks 10.9 with Xcode 5.0.1 and clang-500.2.79
+- OS X Mountain Lion 10.8.5 with Xcode 5 and g++-4.2.1
+- FreeBSD 9.2-RELEASE (64 bit) with clang-3.3
+
+New user-visible features
+-------------------------
+- It is now possible to randomize the time of the first beacon from an
+ access point. Use an attribute "EnableBeaconJitter" to enable/disable
+ this feature.
+- A new FixedRoomPositionAllocator helper class is available; it
+ allows one to generate a random position uniformly distributed in the
+ volume of a chosen room inside a chosen building.
+- Logging wildcards: allow "***" as synonym for "*=**" to turn on all logging.
+- The log component list ("NS_LOG=print-list") is now printed alphabetically.
+
+Bugs fixed
+----------
+- Bug 1779 - NS_UNUSED_GLOBAL not working in attribute test class declaration
+- Bug 1766 - Fixes to wifi-hidden-terminal.cc example
+- Bug 1722 - Avoid transmitting beacons concurrently
+- Bug 1691 - RTS/CTS NAV reset prematurely
+- Bug 1622 - Avoid waf hanging during apiscan
+- Bug 1616 - WifiPhyStateHelper reports false CCA_BUSY times at State trace source
+- Bug 1552 - Storing log name inside LogComponent class (NS_LOG) as std::string
+- Bug 1011 - assert failed. file=../src/devices/wifi/dcf-manager.cc
+- bug 945 - remove deprecated IEEE 802.11p code from wifi module
+- Fix aliasing bug in optimized static builds
+- Fix memory leak due to circular reference in MPI module
+- Make wifi tests more robust to random variable perturbations
+- Fix Time class doxygen
+- Fix compilation with Clang 3.2 and newer versions, including Apple Xcode 5
+- Miscellaneous NetAnim fixes
+
Release 3.18
-============
+=============
Availability
------------
@@ -19,6 +71,14 @@
Supported platforms
-------------------
+These platforms have been tested; others may work also:
+- Fedora Core 18 (32/64 bit) with g++-4.7.2
+- Fedora Core 17 (32/64 bit) with g++-4.7.0
+- Ubuntu 13.04 (32/64 bit) with g++-4.7.3
+- Ubuntu 12.04 (32/64 bit) with g++-4.6.3
+- Ubuntu 10.04.4 LTS (64 bit) with g++-4.4.3
+- OS X Mountain Lion 10.8.3 with g++-4.2.1
+- FreeBSD 9.1-RELEASE (64 bit) with g++-4.2.1
New user-visible features
-------------------------
@@ -946,7 +1006,7 @@
Not all ns-3 options are available on all platforms; consult the
wiki for more information:
-http://www.nsnam.org/wiki/index.php/Installation
+http://www.nsnam.org/wiki/Installation
New user-visible features
-------------------------
@@ -1103,7 +1163,7 @@
Not all ns-3 options are available on all platforms; consult the
wiki for more information:
-http://www.nsnam.org/wiki/index.php/Installation
+http://www.nsnam.org/wiki/Installation
New user-visible features
-------------------------
@@ -1247,7 +1307,7 @@
Not all ns-3 options are available on all platforms; consult the
wiki for more information:
-http://www.nsnam.org/wiki/index.php/Installation
+http://www.nsnam.org/wiki/Installation
New user-visible features
-------------------------
@@ -1367,7 +1427,7 @@
Not all ns-3 options are available on all platforms; consult the
wiki for more information:
-http://www.nsnam.org/wiki/index.php/Installation
+http://www.nsnam.org/wiki/Installation
New user-visible features
-------------------------
@@ -1444,7 +1504,7 @@
Not all ns-3 options are available on all platforms; consult the
wiki for more information:
-http://www.nsnam.org/wiki/index.php/Installation
+http://www.nsnam.org/wiki/Installation
New user-visible features
-------------------------
@@ -1502,7 +1562,7 @@
Not all ns-3 options are available on all platforms; consult the
wiki for more information:
-http://www.nsnam.org/wiki/index.php/Installation
+http://www.nsnam.org/wiki/Installation
New user-visible features
-------------------------
@@ -1566,7 +1626,7 @@
Not all ns-3 options are available on all platforms; consult the
wiki for more information:
-http://www.nsnam.org/wiki/index.php/Installation
+http://www.nsnam.org/wiki/Installation
New user-visible features
-------------------------
@@ -1633,7 +1693,7 @@
Not all ns-3 options are available on all platforms; consult the
wiki for more information:
-http://www.nsnam.org/wiki/index.php/Installation
+http://www.nsnam.org/wiki/Installation
New user-visible features
-------------------------
@@ -1661,7 +1721,7 @@
keep track of simulation data in persistent storage across multiple
runs (database and ascii file backends are available).
More information on the wiki:
- http://www.nsnam.org/wiki/index.php/Statistical_Framework_for_Network_Simulation
+ http://www.nsnam.org/wiki/Statistical_Framework_for_Network_Simulation
API changes from ns-3.1
-----------------------
diff -Naur ns-3.18/src/antenna/bindings/modulegen__gcc_ILP32.py ns-3.18.1/src/antenna/bindings/modulegen__gcc_ILP32.py
--- ns-3.18/src/antenna/bindings/modulegen__gcc_ILP32.py 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/antenna/bindings/modulegen__gcc_ILP32.py 2013-11-15 16:40:48.499760977 -0800
@@ -102,14 +102,14 @@
module.add_class('Vector3DChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
## vector.h (module 'core'): ns3::Vector3DValue [class]
module.add_class('Vector3DValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
- typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
- typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
- typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
- module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
+ typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
+ typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
+ typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+ module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
diff -Naur ns-3.18/src/antenna/bindings/modulegen__gcc_LP64.py ns-3.18.1/src/antenna/bindings/modulegen__gcc_LP64.py
--- ns-3.18/src/antenna/bindings/modulegen__gcc_LP64.py 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/antenna/bindings/modulegen__gcc_LP64.py 2013-11-15 16:40:48.499760977 -0800
@@ -102,14 +102,14 @@
module.add_class('Vector3DChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
## vector.h (module 'core'): ns3::Vector3DValue [class]
module.add_class('Vector3DValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
- typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
- typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
- typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
- module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
+ typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
+ typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
+ typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+ module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
diff -Naur ns-3.18/src/antenna/doc/Makefile ns-3.18.1/src/antenna/doc/Makefile
--- ns-3.18/src/antenna/doc/Makefile 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/antenna/doc/Makefile 2013-11-15 16:40:48.495760979 -0800
@@ -20,7 +20,7 @@
IMAGES = $(IMAGES_EPS) $(IMAGES_PNG) $(IMAGES_PDF)
-RESCALE = $(shell hg root)/utils/rescale-pdf.sh
+RESCALE = ../../../utils/rescale-pdf.sh
%.eps : %.dia; $(DIA) -t eps $< -e $@
%.png : %.dia; $(DIA) -t png $< -e $@
diff -Naur ns-3.18/src/aodv/bindings/modulegen__gcc_ILP32.py ns-3.18.1/src/aodv/bindings/modulegen__gcc_ILP32.py
--- ns-3.18/src/aodv/bindings/modulegen__gcc_ILP32.py 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/aodv/bindings/modulegen__gcc_ILP32.py 2013-11-15 16:40:48.439760977 -0800
@@ -2797,6 +2797,7 @@
return
def register_Ns3Int64x64_t_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('!=')
cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
@@ -2854,7 +2855,6 @@
cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t() [constructor]
@@ -4160,6 +4160,7 @@
return
def register_Ns3Time_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('!=')
cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
@@ -4168,7 +4169,6 @@
cls.add_binary_comparison_operator('>')
cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
## nstime.h (module 'core'): ns3::Time::Time() [constructor]
diff -Naur ns-3.18/src/aodv/bindings/modulegen__gcc_LP64.py ns-3.18.1/src/aodv/bindings/modulegen__gcc_LP64.py
--- ns-3.18/src/aodv/bindings/modulegen__gcc_LP64.py 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/aodv/bindings/modulegen__gcc_LP64.py 2013-11-15 16:40:48.431760979 -0800
@@ -2797,6 +2797,7 @@
return
def register_Ns3Int64x64_t_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('!=')
cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
@@ -2854,7 +2855,6 @@
cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t() [constructor]
@@ -4160,6 +4160,7 @@
return
def register_Ns3Time_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('!=')
cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
@@ -4168,7 +4169,6 @@
cls.add_binary_comparison_operator('>')
cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
## nstime.h (module 'core'): ns3::Time::Time() [constructor]
diff -Naur ns-3.18/src/aodv/model/aodv-routing-protocol.cc ns-3.18.1/src/aodv/model/aodv-routing-protocol.cc
--- ns-3.18/src/aodv/model/aodv-routing-protocol.cc 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/aodv/model/aodv-routing-protocol.cc 2013-11-15 16:40:48.423760977 -0800
@@ -129,7 +129,6 @@
AllowedHelloLoss (2),
DeletePeriod (Time (5 * std::max (ActiveRouteTimeout, HelloInterval))),
NextHopWait (NodeTraversalTime + MilliSeconds (10)),
- TimeoutBuffer (2),
BlackListTimeout (Time (RreqRetries * NetTraversalTime)),
MaxQueueLen (64),
MaxQueueTime (Seconds (30)),
@@ -202,11 +201,6 @@
TimeValue (Seconds (15)),
MakeTimeAccessor (&RoutingProtocol::DeletePeriod),
MakeTimeChecker ())
- .AddAttribute ("TimeoutBuffer", "Its purpose is to provide a buffer for the timeout so that if the RREP is delayed"
- " due to congestion, a timeout is less likely to occur while the RREP is still en route back to the source.",
- UintegerValue (2),
- MakeUintegerAccessor (&RoutingProtocol::TimeoutBuffer),
- MakeUintegerChecker ())
.AddAttribute ("NetDiameter", "Net diameter measures the maximum possible number of hops between two nodes in the network",
UintegerValue (35),
MakeUintegerAccessor (&RoutingProtocol::NetDiameter),
diff -Naur ns-3.18/src/aodv/model/aodv-routing-protocol.h ns-3.18.1/src/aodv/model/aodv-routing-protocol.h
--- ns-3.18/src/aodv/model/aodv-routing-protocol.h 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/aodv/model/aodv-routing-protocol.h 2013-11-15 16:40:48.423760977 -0800
@@ -129,11 +129,6 @@
*/
Time DeletePeriod;
Time NextHopWait; ///< Period of our waiting for the neighbour's RREP_ACK
- /**
- * The TimeoutBuffer is configurable. Its purpose is to provide a buffer for the timeout so that if the RREP is delayed
- * due to congestion, a timeout is less likely to occur while the RREP is still en route back to the source.
- */
- uint16_t TimeoutBuffer;
Time BlackListTimeout; ///< Time for which the node is put into the blacklist
uint32_t MaxQueueLen; ///< The maximum number of packets that we allow a routing protocol to buffer.
Time MaxQueueTime; ///< The maximum period of time that a routing protocol is allowed to buffer a packet for.
diff -Naur ns-3.18/src/applications/bindings/modulegen__gcc_ILP32.py ns-3.18.1/src/applications/bindings/modulegen__gcc_ILP32.py
--- ns-3.18/src/applications/bindings/modulegen__gcc_ILP32.py 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/applications/bindings/modulegen__gcc_ILP32.py 2013-11-15 16:40:49.627761008 -0800
@@ -4098,6 +4098,7 @@
return
def register_Ns3Int64x64_t_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('!=')
cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
@@ -4155,7 +4156,6 @@
cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t() [constructor]
@@ -5858,6 +5858,7 @@
return
def register_Ns3Time_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('!=')
cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
@@ -5866,7 +5867,6 @@
cls.add_binary_comparison_operator('>')
cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
## nstime.h (module 'core'): ns3::Time::Time() [constructor]
diff -Naur ns-3.18/src/applications/bindings/modulegen__gcc_LP64.py ns-3.18.1/src/applications/bindings/modulegen__gcc_LP64.py
--- ns-3.18/src/applications/bindings/modulegen__gcc_LP64.py 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/applications/bindings/modulegen__gcc_LP64.py 2013-11-15 16:40:49.619761011 -0800
@@ -4098,6 +4098,7 @@
return
def register_Ns3Int64x64_t_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('!=')
cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
@@ -4155,7 +4156,6 @@
cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t() [constructor]
@@ -5858,6 +5858,7 @@
return
def register_Ns3Time_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('!=')
cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
@@ -5866,7 +5867,6 @@
cls.add_binary_comparison_operator('>')
cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
## nstime.h (module 'core'): ns3::Time::Time() [constructor]
diff -Naur ns-3.18/src/buildings/bindings/modulegen__gcc_ILP32.py ns-3.18.1/src/buildings/bindings/modulegen__gcc_ILP32.py
--- ns-3.18/src/buildings/bindings/modulegen__gcc_ILP32.py 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/buildings/bindings/modulegen__gcc_ILP32.py 2013-11-15 16:40:48.335760977 -0800
@@ -188,6 +188,8 @@
module.add_class('ErlangRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
## random-variable-stream.h (module 'core'): ns3::ExponentialRandomVariable [class]
module.add_class('ExponentialRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
+ ## building-position-allocator.h (module 'buildings'): ns3::FixedRoomPositionAllocator [class]
+ module.add_class('FixedRoomPositionAllocator', parent=root_module['ns3::PositionAllocator'])
## propagation-loss-model.h (module 'propagation'): ns3::FixedRssLossModel [class]
module.add_class('FixedRssLossModel', import_from_module='ns.propagation', parent=root_module['ns3::PropagationLossModel'])
## propagation-loss-model.h (module 'propagation'): ns3::FriisPropagationLossModel [class]
@@ -266,14 +268,14 @@
module.add_class('AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
## address.h (module 'network'): ns3::AddressValue [class]
module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
- typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
- typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
- typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
- module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
+ typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
+ typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
+ typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+ module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
@@ -399,6 +401,7 @@
register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
register_Ns3ErlangRandomVariable_methods(root_module, root_module['ns3::ErlangRandomVariable'])
register_Ns3ExponentialRandomVariable_methods(root_module, root_module['ns3::ExponentialRandomVariable'])
+ register_Ns3FixedRoomPositionAllocator_methods(root_module, root_module['ns3::FixedRoomPositionAllocator'])
register_Ns3FixedRssLossModel_methods(root_module, root_module['ns3::FixedRssLossModel'])
register_Ns3FriisPropagationLossModel_methods(root_module, root_module['ns3::FriisPropagationLossModel'])
register_Ns3GammaRandomVariable_methods(root_module, root_module['ns3::GammaRandomVariable'])
@@ -3312,6 +3315,28 @@
is_virtual=True)
return
+def register_Ns3FixedRoomPositionAllocator_methods(root_module, cls):
+ ## building-position-allocator.h (module 'buildings'): ns3::FixedRoomPositionAllocator::FixedRoomPositionAllocator(ns3::FixedRoomPositionAllocator const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::FixedRoomPositionAllocator const &', 'arg0')])
+ ## building-position-allocator.h (module 'buildings'): ns3::FixedRoomPositionAllocator::FixedRoomPositionAllocator(uint32_t x, uint32_t y, uint32_t z, ns3::Ptr b) [constructor]
+ cls.add_constructor([param('uint32_t', 'x'), param('uint32_t', 'y'), param('uint32_t', 'z'), param('ns3::Ptr< ns3::Building >', 'b')])
+ ## building-position-allocator.h (module 'buildings'): int64_t ns3::FixedRoomPositionAllocator::AssignStreams(int64_t arg0) [member function]
+ cls.add_method('AssignStreams',
+ 'int64_t',
+ [param('int64_t', 'arg0')],
+ is_virtual=True)
+ ## building-position-allocator.h (module 'buildings'): ns3::Vector ns3::FixedRoomPositionAllocator::GetNext() const [member function]
+ cls.add_method('GetNext',
+ 'ns3::Vector',
+ [],
+ is_const=True, is_virtual=True)
+ ## building-position-allocator.h (module 'buildings'): static ns3::TypeId ns3::FixedRoomPositionAllocator::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ return
+
def register_Ns3FixedRssLossModel_methods(root_module, cls):
## propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::FixedRssLossModel::GetTypeId() [member function]
cls.add_method('GetTypeId',
diff -Naur ns-3.18/src/buildings/bindings/modulegen__gcc_LP64.py ns-3.18.1/src/buildings/bindings/modulegen__gcc_LP64.py
--- ns-3.18/src/buildings/bindings/modulegen__gcc_LP64.py 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/buildings/bindings/modulegen__gcc_LP64.py 2013-11-15 16:40:48.331760977 -0800
@@ -188,6 +188,8 @@
module.add_class('ErlangRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
## random-variable-stream.h (module 'core'): ns3::ExponentialRandomVariable [class]
module.add_class('ExponentialRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
+ ## building-position-allocator.h (module 'buildings'): ns3::FixedRoomPositionAllocator [class]
+ module.add_class('FixedRoomPositionAllocator', parent=root_module['ns3::PositionAllocator'])
## propagation-loss-model.h (module 'propagation'): ns3::FixedRssLossModel [class]
module.add_class('FixedRssLossModel', import_from_module='ns.propagation', parent=root_module['ns3::PropagationLossModel'])
## propagation-loss-model.h (module 'propagation'): ns3::FriisPropagationLossModel [class]
@@ -266,14 +268,14 @@
module.add_class('AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
## address.h (module 'network'): ns3::AddressValue [class]
module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
- typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
- typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
- typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
- module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
+ typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
+ typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
+ typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+ module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
@@ -399,6 +401,7 @@
register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
register_Ns3ErlangRandomVariable_methods(root_module, root_module['ns3::ErlangRandomVariable'])
register_Ns3ExponentialRandomVariable_methods(root_module, root_module['ns3::ExponentialRandomVariable'])
+ register_Ns3FixedRoomPositionAllocator_methods(root_module, root_module['ns3::FixedRoomPositionAllocator'])
register_Ns3FixedRssLossModel_methods(root_module, root_module['ns3::FixedRssLossModel'])
register_Ns3FriisPropagationLossModel_methods(root_module, root_module['ns3::FriisPropagationLossModel'])
register_Ns3GammaRandomVariable_methods(root_module, root_module['ns3::GammaRandomVariable'])
@@ -3312,6 +3315,28 @@
is_virtual=True)
return
+def register_Ns3FixedRoomPositionAllocator_methods(root_module, cls):
+ ## building-position-allocator.h (module 'buildings'): ns3::FixedRoomPositionAllocator::FixedRoomPositionAllocator(ns3::FixedRoomPositionAllocator const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::FixedRoomPositionAllocator const &', 'arg0')])
+ ## building-position-allocator.h (module 'buildings'): ns3::FixedRoomPositionAllocator::FixedRoomPositionAllocator(uint32_t x, uint32_t y, uint32_t z, ns3::Ptr b) [constructor]
+ cls.add_constructor([param('uint32_t', 'x'), param('uint32_t', 'y'), param('uint32_t', 'z'), param('ns3::Ptr< ns3::Building >', 'b')])
+ ## building-position-allocator.h (module 'buildings'): int64_t ns3::FixedRoomPositionAllocator::AssignStreams(int64_t arg0) [member function]
+ cls.add_method('AssignStreams',
+ 'int64_t',
+ [param('int64_t', 'arg0')],
+ is_virtual=True)
+ ## building-position-allocator.h (module 'buildings'): ns3::Vector ns3::FixedRoomPositionAllocator::GetNext() const [member function]
+ cls.add_method('GetNext',
+ 'ns3::Vector',
+ [],
+ is_const=True, is_virtual=True)
+ ## building-position-allocator.h (module 'buildings'): static ns3::TypeId ns3::FixedRoomPositionAllocator::GetTypeId() [member function]
+ cls.add_method('GetTypeId',
+ 'ns3::TypeId',
+ [],
+ is_static=True)
+ return
+
def register_Ns3FixedRssLossModel_methods(root_module, cls):
## propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::FixedRssLossModel::GetTypeId() [member function]
cls.add_method('GetTypeId',
diff -Naur ns-3.18/src/buildings/doc/Makefile ns-3.18.1/src/buildings/doc/Makefile
--- ns-3.18/src/buildings/doc/Makefile 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/buildings/doc/Makefile 2013-11-15 16:40:48.319760973 -0800
@@ -20,7 +20,7 @@
IMAGES = $(IMAGES_EPS) $(IMAGES_PNG) $(IMAGES_PDF)
-RESCALE = $(shell hg root)/utils/rescale-pdf.sh
+RESCALE = ../../../utils/rescale-pdf.sh
%.eps : %.dia; $(DIA) -t eps $< -e $@
%.png : %.dia; $(DIA) -t png $< -e $@
diff -Naur ns-3.18/src/buildings/doc/source/buildings-user.rst ns-3.18.1/src/buildings/doc/source/buildings-user.rst
--- ns-3.18/src/buildings/doc/source/buildings-user.rst 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/buildings/doc/source/buildings-user.rst 2013-11-15 16:40:48.319760973 -0800
@@ -5,10 +5,172 @@
User Documentation
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+How to use buildings in a simulation
+====================================
+In this section we explain the basic usage of the buildings model within a
+simulation program.
-Main configurable parameters
-----------------------------
+Include the headers
+*******************
+
+Add this at the beginning of your simulation program::
+
+ #include
+
+
+Create a building
+*****************
+
+As an example, let's create a residential 10 x 20 x 10 building::
+
+ double x_min = 0.0;
+ double x_max = 10.0;
+ double y_min = 0.0;
+ double y_max = 20.0;
+ double z_min = 0.0;
+ double z_max = 10.0;
+ Ptr b = CreateObject ();
+ b->SetBoundaries (Box (x_min, x_max, y_min, y_max, z_min, z_max));
+ b->SetBuildingType (Building::Residential);
+ b->SetExtWallsType (Building::ConcreteWithWindows);
+ b->SetNFloors (3);
+ b->SetNRoomsX (3);
+ b->SetNRoomsY (2);
+
+This building has three floors and an internal 3 x 2 grid of rooms of equal size.
+
+The helper class GridBuildingAllocator is also available to easily
+create a set of buildings with identical characteristics placed on a
+rectangular grid. Here's an example of how to use it::
+
+ Ptr gridBuildingAllocator;
+ gridBuildingAllocator = CreateObject ();
+ gridBuildingAllocator->SetAttribute ("GridWidth", UintegerValue (3));
+ gridBuildingAllocator->SetAttribute ("LengthX", DoubleValue (7));
+ gridBuildingAllocator->SetAttribute ("LengthY", DoubleValue (13));
+ gridBuildingAllocator->SetAttribute ("DeltaX", DoubleValue (3));
+ gridBuildingAllocator->SetAttribute ("DeltaY", DoubleValue (3));
+ gridBuildingAllocator->SetAttribute ("Height", DoubleValue (6));
+ gridBuildingAllocator->SetBuildingAttribute ("NRoomsX", UintegerValue (2));
+ gridBuildingAllocator->SetBuildingAttribute ("NRoomsY", UintegerValue (4));
+ gridBuildingAllocator->SetBuildingAttribute ("NFloors", UintegerValue (2));
+ gridBuildingAllocator->SetAttribute ("MinX", DoubleValue (0));
+ gridBuildingAllocator->SetAttribute ("MinY", DoubleValue (0));
+ gridBuildingAllocator->Create (6);
+
+
+This will create a 3x2 grid of 6 buildings, each 7 x 13 x 6 m with 2 x
+4 rooms inside and 2 foors; the buildings are spaced by 3 m on both
+the x and the y axis.
+
+
+Setup nodes and mobility models
+*******************************
+
+Nodes and mobility models are configured as usual, however in order to
+use them with the buildings model you need an additional call to
+``BuildingsHelper::Install()``, so as to let the mobility model include
+the informtion on their position w.r.t. the buildings. Here is an example::
+
+ MobilityHelper mobility;
+ mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+ ueNodes.Create (2);
+ mobility.Install (ueNodes);
+ BuildingsHelper::Install (ueNodes);
+
+It is to be noted that any mobility model can be used. However, the
+user is advised to make sure that the behavior of the mobility model
+being used is consistent with the presence of Buildings. For example,
+using a simple random mobility over the whole simulation area in
+presence of buildings might easily results in node moving in and out
+of buildings, regardless of the presence of walls.
+
+
+Place some nodes
+****************
+
+You can place nodes in your simulation using several methods, which
+are described in the following.
+
+Legacy positioning methods
+--------------------------
+
+Any legacy ns-3 positioning method can be used to place node in the
+simulation. The important additional step is to For example, you can
+place nodes manually like this::
+
+ Ptr mm0 = enbNodes.Get (0)->GetObject ();
+ Ptr mm1 = enbNodes.Get (1)->GetObject ();
+ mm0->SetPosition (Vector (5.0, 5.0, 1.5));
+ mm1->SetPosition (Vector (30.0, 40.0, 1.5));
+
+ MobilityHelper mobility;
+ mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+ ueNodes.Create (2);
+ mobility.Install (ueNodes);
+ BuildingsHelper::Install (ueNodes);
+ mm0->SetPosition (Vector (5.0, 5.0, 1.5));
+ mm1->SetPosition (Vector (30.0, 40.0, 1.5));
+
+Alternatively, you could use any existing PositionAllocator
+class. The coordinates of the node will determine whether it is placed
+outdoor or indoor and, if indoor, in which building and room it is placed.
+
+
+Building-specific positioning methods
+-------------------------------------
+
+The following position allocator classes are available to place node
+in special positions with respect to buildings:
+
+ - ``RandomBuildingPositionAllocator``: Allocate each position by
+ randomly chosing a building from the list of all buildings, and
+ then randomly chosing a position inside the building.
+
+ - ``RandomRoomPositionAllocator``: Allocate each position by randomly
+ chosing a room from the list of rooms in all buildings, and then
+ randomly chosing a position inside the room.
+
+ - ``SameRoomPositionAllocator``: Walks a given NodeContainer
+ sequentially, and for each node allocate a new position randomly in
+ the same room of that node.
+
+ - ``FixedRoomPositionAllocator``: Generate a random position
+ uniformly distributed in the volume of a chosen room inside a
+ chosen building.
+
+
+
+Make the Mobility Model Consistent
+**********************************
+
+**Important**: whenever you use buildings, you have to issue the
+following command after we have placed all nodes and buildings in the simulation::
+
+ BuildingsHelper::MakeMobilityModelConsistent ();
+
+This command will go through the lists of all nodes and of all
+buildings, determine for each user if it is indoor or outdoor, and if
+indoor it will also determine the building in which the user is
+located and the corresponding floor and number inside the building.
+
+
+Building-aware pathloss model
+*****************************
+
+After you placed buildings and nodes in a simulation, you can use a
+building-aware pathloss model in a simulation exactly in the same way
+you would use any regular path loss model. How to do this is specific
+for the wireless module that you are considering (lte, wifi, wimax,
+etc.), so please refer to the documentation of that model for specific
+instructions.
+
+
+
+
+Main configurable attributes
+============================
The ``Building`` class has the following configurable parameters:
@@ -42,12 +204,6 @@
The simple ``OhBuildingMobilityLossModel`` overcome this problem by using only the Okumura Hata model and the wall penetration losses.
-Helper Functionalities
-----------------------
-
-The ``BuildingsHelper`` class defines a set of static function for assisting in the definition of the scenario with building module. In detail, it provides the method ``Install`` for installing the building information included in ``MobilityBuildingInfo`` to a specific node (or set of nodes, i.e., the ``NodeContainer``). In order to synchronize the nodes information with their position, this helper provides the function ``MakeMobilityModelConsistent`` that puts all the ``Node``\s presents in the simulation in the right position (i.e., outdoor or indoor, in the latter also updating in terms of building, floor and room number).
-
-
diff -Naur ns-3.18/src/buildings/helper/building-position-allocator.cc ns-3.18.1/src/buildings/helper/building-position-allocator.cc
--- ns-3.18/src/buildings/helper/building-position-allocator.cc 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/buildings/helper/building-position-allocator.cc 2013-11-15 16:40:48.323760975 -0800
@@ -77,13 +77,13 @@
{
if (m_buildingListWithoutReplacement.empty ())
{
- for (BuildingList::Iterator bit = BuildingList::Begin (); bit != BuildingList::End (); ++bit)
- {
- m_buildingListWithoutReplacement.push_back (*bit);
- }
+ for (BuildingList::Iterator bit = BuildingList::Begin (); bit != BuildingList::End (); ++bit)
+ {
+ m_buildingListWithoutReplacement.push_back (*bit);
+ }
}
uint32_t n = m_rand->GetInteger (0, m_buildingListWithoutReplacement.size () - 1);
- b = m_buildingListWithoutReplacement.at (n);
+ b = m_buildingListWithoutReplacement.at (n);
m_buildingListWithoutReplacement.erase (m_buildingListWithoutReplacement.begin () + n);
}
@@ -152,8 +152,8 @@
}
}
uint32_t n = m_rand->GetInteger (0,m_roomListWithoutReplacement.size () - 1);
- RoomInfo r = m_roomListWithoutReplacement.at (n);
- m_roomListWithoutReplacement.erase (m_roomListWithoutReplacement.begin () + n);
+ RoomInfo r = m_roomListWithoutReplacement.at (n);
+ m_roomListWithoutReplacement.erase (m_roomListWithoutReplacement.begin () + n);
NS_LOG_LOGIC ("considering building " << r.b->GetId () << " room (" << r.roomx << ", " << r.roomy << ", " << r.floor << ")");
Ptr pa = CreateObject ();
@@ -177,7 +177,7 @@
double x = m_rand->GetValue (x1, x2);
double y = m_rand->GetValue (y1, y2);
double z = m_rand->GetValue (z1, z2);
-
+
return Vector (x, y, z);
}
@@ -234,7 +234,7 @@
{
m_nodeIt = m_nodes.Begin ();
}
-
+
NS_ASSERT_MSG (m_nodeIt != m_nodes.End (), "no node in container");
NS_LOG_LOGIC ("considering node " << (*m_nodeIt)->GetId ());
@@ -271,7 +271,7 @@
double x = m_rand->GetValue (x1, x2);
double y = m_rand->GetValue (y1, y2);
double z = m_rand->GetValue (z1, z2);
-
+
return Vector (x, y, z);
}
@@ -282,6 +282,68 @@
return 1;
}
+NS_OBJECT_ENSURE_REGISTERED (FixedRoomPositionAllocator);
+
+
+FixedRoomPositionAllocator::FixedRoomPositionAllocator (
+ uint32_t x,
+ uint32_t y,
+ uint32_t z,
+ Ptr pbtr)
+{
+ m_rand = CreateObject ();
+ roomx = x;
+ roomy = y;
+ floor = z;
+ bptr = pbtr;
+}
+
+TypeId
+FixedRoomPositionAllocator::GetTypeId (void)
+{
+ static TypeId tid = TypeId ("ns3::FixedRoomPositionAllocator")
+ .SetParent ()
+ .SetGroupName ("Mobility")
+ .AddConstructor ();
+ return tid;
+}
+
+Vector
+FixedRoomPositionAllocator::GetNext () const
+{
+
+ NS_LOG_LOGIC ("considering building " << bptr->GetId () << " room (" << roomx << ", " << roomy << ", " << floor << ")");
+
+ Ptr pa = CreateObject ();
+
+ Box box = bptr->GetBoundaries ();
+ double rdx = (box.xMax - box.xMin) / bptr->GetNRoomsX ();
+ double rdy = (box.yMax - box.yMin) / bptr->GetNRoomsY ();
+ double rdz = (box.zMax - box.zMin) / bptr->GetNFloors ();
+ double x1 = box.xMin + rdx * (roomx - 1);
+ double x2 = box.xMin + rdx * roomx;
+ double y1 = box.yMin + rdy * (roomy -1);
+ double y2 = box.yMin + rdy * roomy;
+ double z1 = box.zMin + rdz * (floor - 1);
+ double z2 = box.zMin + rdz * floor;
+ NS_LOG_LOGIC ("randomly allocating position in "
+ << " (" << x1 << "," << x2 << ") "
+ << "x (" << y1 << "," << y2 << ") "
+ << "x (" << z1 << "," << z2 << ") ");
+
+ double x = m_rand->GetValue (x1, x2);
+ double y = m_rand->GetValue (y1, y2);
+ double z = m_rand->GetValue (z1, z2);
+ return Vector (x, y, z);
+}
+
+
+int64_t
+FixedRoomPositionAllocator::AssignStreams (int64_t stream)
+{
+ m_rand->SetStream (stream);
+ return 1;
+}
} // namespace ns3
diff -Naur ns-3.18/src/buildings/helper/building-position-allocator.h ns-3.18.1/src/buildings/helper/building-position-allocator.h
--- ns-3.18/src/buildings/helper/building-position-allocator.h 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/buildings/helper/building-position-allocator.h 2013-11-15 16:40:48.323760975 -0800
@@ -47,18 +47,18 @@
// inherited from PositionAllocator
virtual Vector GetNext (void) const;
- /**
- * Assign a fixed random variable stream number to the random variables
- * used by this model. Return the number of streams (possibly zero) that
- * have been assigned.
- *
- * \param stream first stream index to use
- * \return the number of stream indices assigned by this model
- */
+ /**
+ * Assign a fixed random variable stream number to the random variables
+ * used by this model. Return the number of streams (possibly zero) that
+ * have been assigned.
+ *
+ * \param stream first stream index to use
+ * \return the number of stream indices assigned by this model
+ */
int64_t AssignStreams (int64_t stream);
private:
-
+
bool m_withReplacement;
mutable std::vector< Ptr > m_buildingListWithoutReplacement;
@@ -95,8 +95,7 @@
int64_t AssignStreams (int64_t stream);
private:
-
- bool m_withReplacement;
+
struct RoomInfo
{
Ptr b;
@@ -111,10 +110,11 @@
};
+
/**
* Walks a given NodeContainer sequentially, and for each node allocate a new
* position randomly in the same room of that node
- *
+ *
*/
class SameRoomPositionAllocator : public PositionAllocator
{
@@ -128,14 +128,14 @@
// inherited from PositionAllocator
virtual Vector GetNext (void) const;
- /**
- * Assign a fixed random variable stream number to the random variables
- * used by this model. Return the number of streams (possibly zero) that
- * have been assigned.
- *
- * \param stream first stream index to use
- * \return the number of stream indices assigned by this model
- */
+ /**
+ * Assign a fixed random variable stream number to the random variables
+ * used by this model. Return the number of streams (possibly zero) that
+ * have been assigned.
+ *
+ * \param stream first stream index to use
+ * \return the number of stream indices assigned by this model
+ */
int64_t AssignStreams (int64_t);
private:
@@ -145,6 +145,54 @@
/// Provides uniform random variables.
Ptr m_rand;
+};
+
+/**
+ * Generate a random position uniformly distributed in the volume of a
+ * chosen room inside a chosen building.
+ */
+class FixedRoomPositionAllocator : public PositionAllocator
+{
+public:
+
+ /**
+ *
+ *
+ * \param x index of the room on the x-axis
+ * \param y index of the room on the y-axis
+ * \param z index of the room on the z-axis (i.e., floor number)
+ * \param b pointer to the chosen building
+ *
+ */
+ FixedRoomPositionAllocator (uint32_t x,
+ uint32_t y,
+ uint32_t z,
+ Ptr b);
+ // inherited from Object
+ static TypeId GetTypeId (void);
+ // inherited from PositionAllocator
+ virtual Vector GetNext (void) const;
+
+ /**
+ * Assign a fixed random variable stream number to the random variables
+ * used by this model. Return the number of streams (possibly zero) that
+ * have been assigned.
+ *
+ * \param stream first stream index to use
+ * \return the number of stream indices assigned by this model
+ */
+ int64_t AssignStreams (int64_t);
+
+private:
+
+ uint32_t roomx;
+ uint32_t roomy;
+ uint32_t floor;
+
+ Ptr bptr;
+
+ /// Provides uniform random variables.
+ Ptr m_rand;
};
diff -Naur ns-3.18/src/buildings/model/itu-r-1238-propagation-loss-model.h ns-3.18.1/src/buildings/model/itu-r-1238-propagation-loss-model.h
--- ns-3.18/src/buildings/model/itu-r-1238-propagation-loss-model.h 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/buildings/model/itu-r-1238-propagation-loss-model.h 2013-11-15 16:40:48.323760975 -0800
@@ -60,14 +60,6 @@
virtual int64_t DoAssignStreams (int64_t stream);
double m_frequency; ///< frequency in MHz
- double m_lambda; ///< wavelength
- EnvironmentType m_environment;
- CitySize m_citySize;
- double m_rooftopHeight; ///< in meters
- double m_streetsOrientation; ///< in degrees [0,90]
- double m_streetsWidth; ///< in meters
- double m_buildingsExtend; ///< in meters
- double m_buildingSeparation; ///< in meters
};
diff -Naur ns-3.18/src/buildings/test/buildings-shadowing-test.cc ns-3.18.1/src/buildings/test/buildings-shadowing-test.cc
--- ns-3.18/src/buildings/test/buildings-shadowing-test.cc 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/buildings/test/buildings-shadowing-test.cc 2013-11-15 16:40:48.335760977 -0800
@@ -81,6 +81,7 @@
m_lossRef (refValue),
m_sigmaRef (sigmaRef)
{
+ NS_UNUSED (m_sigmaRef); // suppress private field unused warning
}
BuildingsShadowingTestCase::~BuildingsShadowingTestCase ()
diff -Naur ns-3.18/src/click/model/ipv4-l3-click-protocol.cc ns-3.18.1/src/click/model/ipv4-l3-click-protocol.cc
--- ns-3.18/src/click/model/ipv4-l3-click-protocol.cc 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/click/model/ipv4-l3-click-protocol.cc 2013-11-15 16:40:49.567761005 -0800
@@ -330,7 +330,7 @@
// First check whether an existing LoopbackNetDevice exists on the node
for (uint32_t i = 0; i < m_node->GetNDevices (); i++)
{
- if (device = DynamicCast (m_node->GetDevice (i)))
+ if ((device = DynamicCast (m_node->GetDevice (i))))
{
break;
}
diff -Naur ns-3.18/src/core/bindings/modulegen__gcc_ILP32.py ns-3.18.1/src/core/bindings/modulegen__gcc_ILP32.py
--- ns-3.18/src/core/bindings/modulegen__gcc_ILP32.py 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/core/bindings/modulegen__gcc_ILP32.py 2013-11-15 16:40:48.975760991 -0800
@@ -316,10 +316,10 @@
module.add_class('Vector3DChecker', parent=root_module['ns3::AttributeChecker'])
## vector.h (module 'core'): ns3::Vector3DValue [class]
module.add_class('Vector3DValue', parent=root_module['ns3::AttributeValue'])
- typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
- typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
- typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
- module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
+ typehandlers.add_type_alias('ns3::RngSeedManager', 'ns3::SeedManager')
+ typehandlers.add_type_alias('ns3::RngSeedManager*', 'ns3::SeedManager*')
+ typehandlers.add_type_alias('ns3::RngSeedManager&', 'ns3::SeedManager&')
+ module.add_typedef(root_module['ns3::RngSeedManager'], 'SeedManager')
typehandlers.add_type_alias('ns3::ObjectPtrContainerValue', 'ns3::ObjectVectorValue')
typehandlers.add_type_alias('ns3::ObjectPtrContainerValue*', 'ns3::ObjectVectorValue*')
typehandlers.add_type_alias('ns3::ObjectPtrContainerValue&', 'ns3::ObjectVectorValue&')
@@ -327,13 +327,13 @@
typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *', 'ns3::LogTimePrinter')
typehandlers.add_type_alias('void ( * ) ( std::ostream & ) **', 'ns3::LogTimePrinter*')
typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *&', 'ns3::LogTimePrinter&')
- typehandlers.add_type_alias('ns3::RngSeedManager', 'ns3::SeedManager')
- typehandlers.add_type_alias('ns3::RngSeedManager*', 'ns3::SeedManager*')
- typehandlers.add_type_alias('ns3::RngSeedManager&', 'ns3::SeedManager&')
- module.add_typedef(root_module['ns3::RngSeedManager'], 'SeedManager')
typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *', 'ns3::LogNodePrinter')
typehandlers.add_type_alias('void ( * ) ( std::ostream & ) **', 'ns3::LogNodePrinter*')
typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *&', 'ns3::LogNodePrinter&')
+ typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
+ typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
+ typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+ module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
@@ -878,8 +878,8 @@
def register_Ns3LogComponent_methods(root_module, cls):
## log.h (module 'core'): ns3::LogComponent::LogComponent(ns3::LogComponent const & arg0) [copy constructor]
cls.add_constructor([param('ns3::LogComponent const &', 'arg0')])
- ## log.h (module 'core'): ns3::LogComponent::LogComponent(char const * name) [constructor]
- cls.add_constructor([param('char const *', 'name')])
+ ## log.h (module 'core'): ns3::LogComponent::LogComponent(std::string const & name) [constructor]
+ cls.add_constructor([param('std::string const &', 'name')])
## log.h (module 'core'): void ns3::LogComponent::Disable(ns3::LogLevel level) [member function]
cls.add_method('Disable',
'void',
@@ -888,10 +888,10 @@
cls.add_method('Enable',
'void',
[param('ns3::LogLevel', 'level')])
- ## log.h (module 'core'): void ns3::LogComponent::EnvVarCheck(char const * name) [member function]
+ ## log.h (module 'core'): void ns3::LogComponent::EnvVarCheck(std::string const & name) [member function]
cls.add_method('EnvVarCheck',
'void',
- [param('char const *', 'name')])
+ [param('std::string const &', 'name')])
## log.h (module 'core'): std::string ns3::LogComponent::GetLevelLabel(ns3::LogLevel const level) const [member function]
cls.add_method('GetLevelLabel',
'std::string',
@@ -5003,7 +5003,7 @@
## command-line.h (module 'core'): extern std::string ns3::CommandLineHelper::GetDefault(bool const & val) [free function]
module.add_function('GetDefault',
'std::string',
- [param('bool &', 'val')],
+ [param('bool const &', 'val')],
template_parameters=['bool'])
## command-line.h (module 'core'): extern bool ns3::CommandLineHelper::UserItemParse(std::string const value, bool & val) [free function]
module.add_function('UserItemParse',
diff -Naur ns-3.18/src/core/bindings/modulegen__gcc_LP64.py ns-3.18.1/src/core/bindings/modulegen__gcc_LP64.py
--- ns-3.18/src/core/bindings/modulegen__gcc_LP64.py 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/core/bindings/modulegen__gcc_LP64.py 2013-11-15 16:40:48.971760992 -0800
@@ -316,10 +316,10 @@
module.add_class('Vector3DChecker', parent=root_module['ns3::AttributeChecker'])
## vector.h (module 'core'): ns3::Vector3DValue [class]
module.add_class('Vector3DValue', parent=root_module['ns3::AttributeValue'])
- typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
- typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
- typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
- module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
+ typehandlers.add_type_alias('ns3::RngSeedManager', 'ns3::SeedManager')
+ typehandlers.add_type_alias('ns3::RngSeedManager*', 'ns3::SeedManager*')
+ typehandlers.add_type_alias('ns3::RngSeedManager&', 'ns3::SeedManager&')
+ module.add_typedef(root_module['ns3::RngSeedManager'], 'SeedManager')
typehandlers.add_type_alias('ns3::ObjectPtrContainerValue', 'ns3::ObjectVectorValue')
typehandlers.add_type_alias('ns3::ObjectPtrContainerValue*', 'ns3::ObjectVectorValue*')
typehandlers.add_type_alias('ns3::ObjectPtrContainerValue&', 'ns3::ObjectVectorValue&')
@@ -327,13 +327,13 @@
typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *', 'ns3::LogTimePrinter')
typehandlers.add_type_alias('void ( * ) ( std::ostream & ) **', 'ns3::LogTimePrinter*')
typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *&', 'ns3::LogTimePrinter&')
- typehandlers.add_type_alias('ns3::RngSeedManager', 'ns3::SeedManager')
- typehandlers.add_type_alias('ns3::RngSeedManager*', 'ns3::SeedManager*')
- typehandlers.add_type_alias('ns3::RngSeedManager&', 'ns3::SeedManager&')
- module.add_typedef(root_module['ns3::RngSeedManager'], 'SeedManager')
typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *', 'ns3::LogNodePrinter')
typehandlers.add_type_alias('void ( * ) ( std::ostream & ) **', 'ns3::LogNodePrinter*')
typehandlers.add_type_alias('void ( * ) ( std::ostream & ) *&', 'ns3::LogNodePrinter&')
+ typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
+ typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
+ typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+ module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
@@ -878,8 +878,8 @@
def register_Ns3LogComponent_methods(root_module, cls):
## log.h (module 'core'): ns3::LogComponent::LogComponent(ns3::LogComponent const & arg0) [copy constructor]
cls.add_constructor([param('ns3::LogComponent const &', 'arg0')])
- ## log.h (module 'core'): ns3::LogComponent::LogComponent(char const * name) [constructor]
- cls.add_constructor([param('char const *', 'name')])
+ ## log.h (module 'core'): ns3::LogComponent::LogComponent(std::string const & name) [constructor]
+ cls.add_constructor([param('std::string const &', 'name')])
## log.h (module 'core'): void ns3::LogComponent::Disable(ns3::LogLevel level) [member function]
cls.add_method('Disable',
'void',
@@ -888,10 +888,10 @@
cls.add_method('Enable',
'void',
[param('ns3::LogLevel', 'level')])
- ## log.h (module 'core'): void ns3::LogComponent::EnvVarCheck(char const * name) [member function]
+ ## log.h (module 'core'): void ns3::LogComponent::EnvVarCheck(std::string const & name) [member function]
cls.add_method('EnvVarCheck',
'void',
- [param('char const *', 'name')])
+ [param('std::string const &', 'name')])
## log.h (module 'core'): std::string ns3::LogComponent::GetLevelLabel(ns3::LogLevel const level) const [member function]
cls.add_method('GetLevelLabel',
'std::string',
@@ -5003,7 +5003,7 @@
## command-line.h (module 'core'): extern std::string ns3::CommandLineHelper::GetDefault(bool const & val) [free function]
module.add_function('GetDefault',
'std::string',
- [param('bool &', 'val')],
+ [param('bool const &', 'val')],
template_parameters=['bool'])
## command-line.h (module 'core'): extern bool ns3::CommandLineHelper::UserItemParse(std::string const value, bool & val) [free function]
module.add_function('UserItemParse',
diff -Naur ns-3.18/src/core/model/hash-murmur3.cc ns-3.18.1/src/core/model/hash-murmur3.cc
--- ns-3.18/src/core/model/hash-murmur3.cc 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/core/model/hash-murmur3.cc 2013-11-15 16:40:48.951760989 -0800
@@ -34,33 +34,6 @@
#include
-/*
- * \brief Silence erroneous strict alias warning from a gcc 4.4 bug
- *
- * Casting \c (void*) triggers a strict alias warning bug
- * in gcc 4.4 (see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39390).
- *
- * In the murmur3 code, data is returned by
- * \code
- * void Function (... , void * out)
- * {
- * ...
- * *(uint32_t *)out = ...
- * }
- * \endcode
- *
- * which triggers the erroneous warning.
- *
- * We suppress strict-alias warnings in this compilation unit.
- * (gcc 4.4 doesn't support the diagnostic push/pop pragmas,
- * so we can't narrow down the suppression any further.)
- */
-// Test for gcc 4.4.x
-#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
-#if (GCC_VERSION == 404)
-# pragma GCC diagnostic ignored "-Wstrict-aliasing"
-#endif
-
namespace ns3 {
NS_LOG_COMPONENT_DEFINE ("Hash-Murmur3");
@@ -479,12 +452,28 @@
{
using namespace Murmur3Implementation;
MurmurHash3_x86_128_incr (buffer, size,
- (uint32_t *)(void *)m_hash64, (void *)(m_hash64));
+ (uint32_t *)(void *)m_hash64, m_hash64);
m_size64 += size;
- uint64_t hash[2];
+
+ // Simpler would be:
+ //
+ // uint64_t hash[2];
+ // MurmurHash3_x86_128_fin (m_size64, m_hash64, hash);
+ // return hash[0];
+ //
+ // but this triggers an aliasing bug in gcc-4.4 (perhaps related to
+ // http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39390).
+ // In ns-3, this bug produces incorrect results in static optimized
+ // builds only.
+ //
+ // Using uint32_t here avoids the bug, and continues to works with newer gcc.
+ uint32_t hash[4];
+
MurmurHash3_x86_128_fin (m_size64,
- (uint32_t*)(void *)m_hash64, (void *)hash);
- return hash[0];
+ (uint32_t *)(void *)m_hash64, hash);
+ uint64_t result = hash[1];
+ result = (result << 32) | hash[0];
+ return result;
}
void
@@ -492,8 +481,7 @@
{
m_hash32 = (uint32_t)SEED;
m_size32 = 0;
- m_hash64[0] = ((uint64_t)(SEED) << 32) + (uint64_t)SEED;
- m_hash64[1] = ((uint64_t)(SEED) << 32) + (uint64_t)SEED;
+ m_hash64[0] = m_hash64[1] = ((uint64_t)(SEED) << 32) + (uint64_t)SEED;
m_size64 = 0;
}
diff -Naur ns-3.18/src/core/model/log.cc ns-3.18.1/src/core/model/log.cc
--- ns-3.18/src/core/model/log.cc 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/core/model/log.cc 2013-11-15 16:40:48.939760993 -0800
@@ -39,8 +39,8 @@
LogTimePrinter g_logTimePrinter = 0;
LogNodePrinter g_logNodePrinter = 0;
-typedef std::list > ComponentList;
-typedef std::list >::iterator ComponentListI;
+typedef std::map ComponentList;
+typedef std::map::iterator ComponentListI;
static class PrintList
{
@@ -84,7 +84,7 @@
}
-LogComponent::LogComponent (char const * name)
+LogComponent::LogComponent (const std::string & name)
: m_levels (0), m_name (name)
{
EnvVarCheck (name);
@@ -99,11 +99,11 @@
NS_FATAL_ERROR ("Log component \""<push_back (std::make_pair (name, this));
+ components->insert (std::make_pair (name, this));
}
void
-LogComponent::EnvVarCheck (char const * name)
+LogComponent::EnvVarCheck (const std::string & name)
{
#ifdef HAVE_GETENV
char *envVar = getenv ("NS_LOG");
@@ -125,7 +125,7 @@
if (equal == std::string::npos)
{
component = tmp;
- if (component == myName || component == "*")
+ if (component == myName || component == "*" || component == "***")
{
int level = LOG_LEVEL_ALL | LOG_PREFIX_ALL;
Enable ((enum LogLevel)level);
@@ -269,7 +269,7 @@
char const *
LogComponent::Name (void) const
{
- return m_name;
+ return m_name.c_str ();
}
std::string
@@ -485,7 +485,7 @@
{
// ie no '=' characters found
component = tmp;
- if (ComponentExists(component) || component == "*")
+ if (ComponentExists(component) || component == "*" || component == "***")
{
return;
}
@@ -580,7 +580,8 @@
ParameterLogger::ParameterLogger (std::ostream &os)
- : m_itemNumber (0),
+ : std::basic_ostream (os.rdbuf ()), //!< \bugid{1792}
+ m_itemNumber (0),
m_os (os)
{
}
diff -Naur ns-3.18/src/core/model/log.h ns-3.18.1/src/core/model/log.h
--- ns-3.18/src/core/model/log.h 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/core/model/log.h 2013-11-15 16:40:48.943760992 -0800
@@ -384,8 +384,8 @@
class LogComponent {
public:
- LogComponent (char const *name);
- void EnvVarCheck (char const *name);
+ LogComponent (const std::string & name);
+ void EnvVarCheck (const std::string & name);
bool IsEnabled (enum LogLevel level) const;
bool IsNoneEnabled (void) const;
void Enable (enum LogLevel level);
@@ -394,7 +394,7 @@
std::string GetLevelLabel(const enum LogLevel level) const;
private:
int32_t m_levels;
- char const *m_name;
+ std::string m_name;
};
class ParameterLogger : public std::ostream
diff -Naur ns-3.18/src/core/model/nstime.h ns-3.18.1/src/core/model/nstime.h
--- ns-3.18/src/core/model/nstime.h 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/core/model/nstime.h 2013-11-15 16:40:48.943760992 -0800
@@ -41,64 +41,42 @@
* \ingroup time
* \brief keep track of time values and allow control of global simulation resolution
*
- * This class defines all the classic C++ arithmetic
- * operators +, -, *, /, and all the classic comparison operators:
+ * This class defines all the classic C++ addition/subtraction
+ * operators: +, -, +=, -=; and all the classic comparison operators:
* ==, !=, <, >, <=, >=. It is thus easy to add, substract, or
- * multiply Time objects.
+ * compare Time objects.
*
* For example:
* \code
* Time t1 = Seconds (10.0);
* Time t2 = Seconds (10.0);
- * Time t3 = t1 * t2;
- * Time t4 = t1 / t2;
- * Time t5 = t3 * t1;
- * Time t6 = t1 / t5;
- * Time t7 = t3;
+ * Time t3 = t1;
+ * t3 += t2;
* \endcode
*
* You can also use the following non-member functions to manipulate
* any of these ns3::Time object:
- * - \ref ns3-Time-Abs ns3::Abs
- * - \ref ns3-Time-Max ns3::Max
- * - \ref ns3-Time-Min ns3::Min
- *
- * This class also controls
- * the resolution of the underlying time value . The default resolution
- * is nanoseconds. That is, TimeStep (1).GetNanoSeconds () will return
- * 1. It is possible to either increase or decrease the resolution and the
- * code tries really hard to make this easy.
- *
- * If your resolution is X (say, nanoseconds) and if you create Time objects
- * with a lower resolution (say, picoseconds), don't expect that this
- * code will return 1: PicoSeconds (1).GetPicoSeconds (). It will most
- * likely return 0 because the Time object has only 64 bits of fractional
- * precision which means that PicoSeconds (1) is stored as a 64-bit aproximation
- * of 1/1000 in the Time object. If you later multiply it again by the exact
- * value 1000, the result is unlikely to be 1 exactly. It will be close to
- * 1 but not exactly 1.
- *
- * In general, it is thus a really bad idea to try to use time objects of a
- * resolution higher than the global resolution controlled through
- * Time::SetResolution. If you do need to use picoseconds, it's thus best
- * to switch the global resolution to picoseconds to avoid nasty surprises.
- *
- * Another important issue to keep in mind is that if you increase the
- * global resolution, you also implicitely decrease the range of your simulation.
- * i.e., the global simulation time is stored in a 64 bit integer whose interpretation
- * will depend on the global resolution so, 2^64 picoseconds which is the maximum
- * duration of your simulation if the global resolution is picoseconds
- * is smaller than 2^64 nanoseconds which is the maximum duration of your simulation
- * if the global resolution is nanoseconds.
- *
- * Finally, don't even think about ever changing the global resolution after
- * creating Time objects: all Time objects created before the call to SetResolution
- * will contain values which are not updated to the new resolution. In practice,
- * the default value for the attributes of many models is indeed calculated
- * before the main function of the main program enters. Because of this, if you
- * use one of these models (and it's likely), it's going to be hard to change
- * the global simulation resolution in a way which gives reasonable results. This
- * issue has been filed as bug 954 in the ns-3 bugzilla installation.
+ * - \ref Abs()
+ * - \ref Max()
+ * - \ref Min()
+ *
+ * This class also controls the resolution of the underlying time value.
+ * The resolution is the smallest representable time interval.
+ * The default resolution is nanoseconds.
+ *
+ * To change the resolution, use SetResolution(). All Time objects created
+ * before the call to SetResolution() will be updated to the new resolution.
+ * This can only be done once! (Tracking each Time object uses 4 pointers.
+ * For speed, once we convert the existing instances we discard the recording
+ * data structure and stop tracking new instances, so we have no way
+ * to do a second conversion.)
+ *
+ * If you increase the global resolution, you also implicitly decrease
+ * the range of your simulation. The global simulation time is stored
+ * in a 64 bit integer, whose interpretation will depend on the global
+ * resolution. Therefore the maximum duration of your simulation,
+ * if you use picoseconds, is 2^64 ps = 2^24 s = 7 months, whereas,
+ * had you used nanoseconds, you could have run for 584 years.
*/
class Time
{
diff -Naur ns-3.18/src/core/model/random-variable-stream.h ns-3.18.1/src/core/model/random-variable-stream.h
--- ns-3.18/src/core/model/random-variable-stream.h 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/core/model/random-variable-stream.h 2013-11-15 16:40:48.959760991 -0800
@@ -2012,10 +2012,6 @@
/// The upper bound on values that can be returned by this RNG stream.
double m_max;
-
- /// It's easier to work with the mode internally instead of the
- /// mean. They are related by the simple: mean = (min+max+mode)/3.
- double m_mode;
};
/**
diff -Naur ns-3.18/src/core/test/attribute-test-suite.cc ns-3.18.1/src/core/test/attribute-test-suite.cc
--- ns-3.18/src/core/test/attribute-test-suite.cc 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/core/test/attribute-test-suite.cc 2013-11-15 16:40:48.979760990 -0800
@@ -200,6 +200,18 @@
return tid;
}
+ AttributeObjectTest (void)
+ {
+ NS_UNUSED (m_boolTest);
+ NS_UNUSED (m_int16);
+ NS_UNUSED (m_int16WithBounds);
+ NS_UNUSED (m_uint8);
+ NS_UNUSED (m_float);
+ NS_UNUSED (m_enum);
+ }
+
+ virtual ~AttributeObjectTest (void) {};
+
void AddToVector1 (void) { m_vector1.push_back (CreateObject ()); }
void AddToVector2 (void) { m_vector2.push_back (CreateObject ()); }
diff -Naur ns-3.18/src/core/test/hash-test-suite.cc ns-3.18.1/src/core/test/hash-test-suite.cc
--- ns-3.18/src/core/test/hash-test-suite.cc 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/core/test/hash-test-suite.cc 2013-11-15 16:40:48.983760990 -0800
@@ -376,22 +376,10 @@
HashTestSuite::HashTestSuite ()
: TestSuite ("hash", UNIT)
{
-// The below tests fail for static optimized builds in gcc-4.4.3 (64-bit)
-// This is likely due to a compiler bug (see also the strict alias
-// warning issue mentioned in hash-murmur3.cc). It does not impact
-// most users of the code, so we silence the test failure while we
-// continue to use gcc-4.4.3 (python bindings) for other purposes
-//
-// This code can be removed once gcc-4.4.3 is no longer supported
-//
-// Test for gcc 4.4.x
-#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
-#if (GCC_VERSION != 404)
AddTestCase (new DefaultHashTestCase, QUICK);
AddTestCase (new Murmur3TestCase, QUICK);
AddTestCase (new Fnv1aTestCase, QUICK);
AddTestCase (new IncrementalTestCase, QUICK);
-#endif
AddTestCase (new Hash32FunctionPtrTestCase, QUICK);
AddTestCase (new Hash64FunctionPtrTestCase, QUICK);
}
diff -Naur ns-3.18/src/core/wscript ns-3.18.1/src/core/wscript
--- ns-3.18/src/core/wscript 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/core/wscript 2013-11-15 16:40:48.931760992 -0800
@@ -12,6 +12,10 @@
'with the configure command.'),
action="store_true", default=False,
dest='int64x64_as_double')
+ opt.add_option('--disable-pthread',
+ help=('Whether to enable the use of POSIX threads'),
+ action="store_true", default=False,
+ dest='disable_pthread')
@@ -62,9 +66,15 @@
return 0;
}
"""
- have_pthread = conf.check_nonfatal(header_name='pthread.h', define_name='HAVE_PTHREAD_H',
- env=test_env, fragment=fragment,
- errmsg='Could not find pthread support (build/config.log for details)')
+ if Options.options.disable_pthread:
+ conf.report_optional_feature("Threading", "Threading Primitives",
+ False,
+ "Disabled by user request (--disable-pthread)")
+ have_pthread = False
+ else:
+ have_pthread = conf.check_nonfatal(header_name='pthread.h', define_name='HAVE_PTHREAD_H',
+ env=test_env, fragment=fragment,
+ errmsg='Could not find pthread support (build/config.log for details)')
if have_pthread:
# darwin accepts -pthread but prints a warning saying it is ignored
if Options.platform != 'darwin' and Options.platform != 'cygwin':
diff -Naur ns-3.18/src/create-module.py ns-3.18.1/src/create-module.py
--- ns-3.18/src/create-module.py 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/create-module.py 2013-11-15 16:40:48.515760981 -0800
@@ -331,7 +331,8 @@
print >> sys.stderr, "Module %r already exists" % (modname,)
return 2
- print "Creating module %r" % (modname,)
+ print("Creating module %r, "
+ "run './waf configure' to include it in the build" % (modname,))
os.mkdir(moduledir)
wscript = file(os.path.join(moduledir, "wscript"), "wt")
diff -Naur ns-3.18/src/dsr/bindings/modulegen__gcc_ILP32.py ns-3.18.1/src/dsr/bindings/modulegen__gcc_ILP32.py
--- ns-3.18/src/dsr/bindings/modulegen__gcc_ILP32.py 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/dsr/bindings/modulegen__gcc_ILP32.py 2013-11-15 16:40:48.719760981 -0800
@@ -27,7 +27,7 @@
## wifi-mode.h (module 'wifi'): ns3::WifiModulationClass [enumeration]
module.add_enum('WifiModulationClass', ['WIFI_MOD_CLASS_UNKNOWN', 'WIFI_MOD_CLASS_IR', 'WIFI_MOD_CLASS_FHSS', 'WIFI_MOD_CLASS_DSSS', 'WIFI_MOD_CLASS_ERP_PBCC', 'WIFI_MOD_CLASS_DSSS_OFDM', 'WIFI_MOD_CLASS_ERP_OFDM', 'WIFI_MOD_CLASS_OFDM', 'WIFI_MOD_CLASS_HT'], import_from_module='ns.wifi')
## wifi-phy-standard.h (module 'wifi'): ns3::WifiPhyStandard [enumeration]
- module.add_enum('WifiPhyStandard', ['WIFI_PHY_STANDARD_80211a', 'WIFI_PHY_STANDARD_80211b', 'WIFI_PHY_STANDARD_80211g', 'WIFI_PHY_STANDARD_80211_10MHZ', 'WIFI_PHY_STANDARD_80211_5MHZ', 'WIFI_PHY_STANDARD_holland', 'WIFI_PHY_STANDARD_80211p_CCH', 'WIFI_PHY_STANDARD_80211p_SCH', 'WIFI_PHY_STANDARD_80211n_2_4GHZ', 'WIFI_PHY_STANDARD_80211n_5GHZ'], import_from_module='ns.wifi')
+ module.add_enum('WifiPhyStandard', ['WIFI_PHY_STANDARD_80211a', 'WIFI_PHY_STANDARD_80211b', 'WIFI_PHY_STANDARD_80211g', 'WIFI_PHY_STANDARD_80211_10MHZ', 'WIFI_PHY_STANDARD_80211_5MHZ', 'WIFI_PHY_STANDARD_holland', 'WIFI_PHY_STANDARD_80211n_2_4GHZ', 'WIFI_PHY_STANDARD_80211n_5GHZ'], import_from_module='ns.wifi')
## qos-utils.h (module 'wifi'): ns3::AcIndex [enumeration]
module.add_enum('AcIndex', ['AC_BE', 'AC_BK', 'AC_VI', 'AC_VO', 'AC_BE_NQOS', 'AC_UNDEF'], import_from_module='ns.wifi')
## wifi-mode.h (module 'wifi'): ns3::WifiCodeRate [enumeration]
@@ -3325,6 +3325,7 @@
return
def register_Ns3Int64x64_t_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('!=')
cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
@@ -3382,7 +3383,6 @@
cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t() [constructor]
@@ -4922,6 +4922,7 @@
return
def register_Ns3Time_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('!=')
cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
@@ -4930,7 +4931,6 @@
cls.add_binary_comparison_operator('>')
cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
## nstime.h (module 'core'): ns3::Time::Time() [constructor]
@@ -5536,11 +5536,6 @@
'bool',
[],
is_pure_virtual=True, is_const=True, is_virtual=True)
- ## wifi-mac.h (module 'wifi'): void ns3::WifiMac::ConfigureCCHDcf(ns3::Ptr dcf, uint32_t cwmin, uint32_t cwmax, ns3::AcIndex ac) [member function]
- cls.add_method('ConfigureCCHDcf',
- 'void',
- [param('ns3::Ptr< ns3::Dcf >', 'dcf'), param('uint32_t', 'cwmin'), param('uint32_t', 'cwmax'), param('ns3::AcIndex', 'ac')],
- visibility='protected')
## wifi-mac.h (module 'wifi'): void ns3::WifiMac::ConfigureDcf(ns3::Ptr dcf, uint32_t cwmin, uint32_t cwmax, ns3::AcIndex ac) [member function]
cls.add_method('ConfigureDcf',
'void',
diff -Naur ns-3.18/src/dsr/bindings/modulegen__gcc_LP64.py ns-3.18.1/src/dsr/bindings/modulegen__gcc_LP64.py
--- ns-3.18/src/dsr/bindings/modulegen__gcc_LP64.py 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/dsr/bindings/modulegen__gcc_LP64.py 2013-11-15 16:40:48.707760987 -0800
@@ -27,7 +27,7 @@
## wifi-mode.h (module 'wifi'): ns3::WifiModulationClass [enumeration]
module.add_enum('WifiModulationClass', ['WIFI_MOD_CLASS_UNKNOWN', 'WIFI_MOD_CLASS_IR', 'WIFI_MOD_CLASS_FHSS', 'WIFI_MOD_CLASS_DSSS', 'WIFI_MOD_CLASS_ERP_PBCC', 'WIFI_MOD_CLASS_DSSS_OFDM', 'WIFI_MOD_CLASS_ERP_OFDM', 'WIFI_MOD_CLASS_OFDM', 'WIFI_MOD_CLASS_HT'], import_from_module='ns.wifi')
## wifi-phy-standard.h (module 'wifi'): ns3::WifiPhyStandard [enumeration]
- module.add_enum('WifiPhyStandard', ['WIFI_PHY_STANDARD_80211a', 'WIFI_PHY_STANDARD_80211b', 'WIFI_PHY_STANDARD_80211g', 'WIFI_PHY_STANDARD_80211_10MHZ', 'WIFI_PHY_STANDARD_80211_5MHZ', 'WIFI_PHY_STANDARD_holland', 'WIFI_PHY_STANDARD_80211p_CCH', 'WIFI_PHY_STANDARD_80211p_SCH', 'WIFI_PHY_STANDARD_80211n_2_4GHZ', 'WIFI_PHY_STANDARD_80211n_5GHZ'], import_from_module='ns.wifi')
+ module.add_enum('WifiPhyStandard', ['WIFI_PHY_STANDARD_80211a', 'WIFI_PHY_STANDARD_80211b', 'WIFI_PHY_STANDARD_80211g', 'WIFI_PHY_STANDARD_80211_10MHZ', 'WIFI_PHY_STANDARD_80211_5MHZ', 'WIFI_PHY_STANDARD_holland', 'WIFI_PHY_STANDARD_80211n_2_4GHZ', 'WIFI_PHY_STANDARD_80211n_5GHZ'], import_from_module='ns.wifi')
## qos-utils.h (module 'wifi'): ns3::AcIndex [enumeration]
module.add_enum('AcIndex', ['AC_BE', 'AC_BK', 'AC_VI', 'AC_VO', 'AC_BE_NQOS', 'AC_UNDEF'], import_from_module='ns.wifi')
## wifi-mode.h (module 'wifi'): ns3::WifiCodeRate [enumeration]
@@ -3325,6 +3325,7 @@
return
def register_Ns3Int64x64_t_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('!=')
cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', 'right'))
cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long unsigned int const', 'right'))
@@ -3382,7 +3383,6 @@
cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t() [constructor]
@@ -4922,6 +4922,7 @@
return
def register_Ns3Time_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('!=')
cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
@@ -4930,7 +4931,6 @@
cls.add_binary_comparison_operator('>')
cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('<=')
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
## nstime.h (module 'core'): ns3::Time::Time() [constructor]
@@ -5536,11 +5536,6 @@
'bool',
[],
is_pure_virtual=True, is_const=True, is_virtual=True)
- ## wifi-mac.h (module 'wifi'): void ns3::WifiMac::ConfigureCCHDcf(ns3::Ptr dcf, uint32_t cwmin, uint32_t cwmax, ns3::AcIndex ac) [member function]
- cls.add_method('ConfigureCCHDcf',
- 'void',
- [param('ns3::Ptr< ns3::Dcf >', 'dcf'), param('uint32_t', 'cwmin'), param('uint32_t', 'cwmax'), param('ns3::AcIndex', 'ac')],
- visibility='protected')
## wifi-mac.h (module 'wifi'): void ns3::WifiMac::ConfigureDcf(ns3::Ptr dcf, uint32_t cwmin, uint32_t cwmax, ns3::AcIndex ac) [member function]
cls.add_method('ConfigureDcf',
'void',
diff -Naur ns-3.18/src/dsr/model/dsr-maintain-buff.h ns-3.18.1/src/dsr/model/dsr-maintain-buff.h
--- ns-3.18/src/dsr/model/dsr-maintain-buff.h 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/dsr/model/dsr-maintain-buff.h 2013-11-15 16:40:48.695760987 -0800
@@ -204,8 +204,6 @@
Ipv4Address m_dst;
// / The data ack id
uint16_t m_ackId;
- // / The ipv4 id
- uint16_t m_id;
// / The segments left field
uint8_t m_segsLeft;
// / Expire time for queue entry
diff -Naur ns-3.18/src/dsr/model/dsr-option-header.cc ns-3.18.1/src/dsr/model/dsr-option-header.cc
--- ns-3.18/src/dsr/model/dsr-option-header.cc 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/dsr/model/dsr-option-header.cc 2013-11-15 16:40:48.691760985 -0800
@@ -675,7 +675,6 @@
DsrOptionRerrHeader::DsrOptionRerrHeader ()
: m_errorType (0),
- m_reserved (0),
m_salvage (0),
m_errorLength (4)
{
@@ -797,7 +796,7 @@
}
DsrOptionRerrUnreachHeader::DsrOptionRerrUnreachHeader ()
- : m_reserved (0),
+ :
m_salvage (0)
{
SetType (3);
@@ -925,7 +924,7 @@
}
DsrOptionRerrUnsupportHeader::DsrOptionRerrUnsupportHeader ()
- : m_reserved (0),
+ :
m_salvage (0)
{
SetType (3);
diff -Naur ns-3.18/src/dsr/model/dsr-option-header.h ns-3.18.1/src/dsr/model/dsr-option-header.h
--- ns-3.18/src/dsr/model/dsr-option-header.h 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/dsr/model/dsr-option-header.h 2013-11-15 16:40:48.691760985 -0800
@@ -377,10 +377,6 @@
private:
/**
- * \brief The data length.
- */
- uint32_t m_dataLength;
- /**
* \brief Identifier of the packet.
*/
uint16_t m_identification;
@@ -817,18 +813,10 @@
private:
/**
- * \brief option data length
- */
- uint8_t m_optDataLen;
- /**
* \brief The error type or route error option
*/
uint8_t m_errorType;
/**
- * \brief The reserved field
- */
- uint8_t m_reserved;
- /**
* \brief The salavage field
*/
uint8_t m_salvage;
@@ -980,18 +968,10 @@
private:
/**
- * \brief option data length
- */
- uint8_t m_optDataLen;
- /**
* \brief The error type or route error option
*/
uint8_t m_errorType;
/**
- * \brief The reserved field
- */
- uint8_t m_reserved;
- /**
* \brief The salavage field
*/
uint8_t m_salvage;
@@ -1011,10 +991,6 @@
* \brief The original destination address
*/
Ipv4Address m_originalDst;
- /**
- * \brief The specific error type
- */
- uint16_t m_typeSpecific;
};
/**
@@ -1138,18 +1114,10 @@
private:
/**
- * \brief option data length
- */
- uint8_t m_optDataLen;
- /**
* \brief The error type or route error option
*/
uint8_t m_errorType;
/**
- * \brief The reserved field
- */
- uint8_t m_reserved;
- /**
* \brief The salavage field
*/
uint8_t m_salvage;
@@ -1245,10 +1213,6 @@
private:
/*
- * The option data length
- */
- uint8_t m_optDataLen;
- /*
* The identification field
*/
uint16_t m_identification;
@@ -1356,10 +1320,6 @@
private:
/**
- * \brief option data length
- */
- uint8_t m_optDataLen;
- /**
* \brief identification field
*/
uint16_t m_identification;
diff -Naur ns-3.18/src/dsr/model/dsr-options.h ns-3.18.1/src/dsr/model/dsr-options.h
--- ns-3.18/src/dsr/model/dsr-options.h 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/dsr/model/dsr-options.h 2013-11-15 16:40:48.691760985 -0800
@@ -431,10 +431,6 @@
*/
Ptr m_routeCache;
/**
- * \brief The length of the packet.
- */
- uint32_t m_length;
- /**
* \brief The ip layer 3.
*/
Ptr m_ipv4;
@@ -489,10 +485,6 @@
private:
/**
- * \brief The length of the packet.
- */
- uint32_t m_length;
- /**
* \brief The ip layer 3.
*/
Ptr m_ipv4;
@@ -562,10 +554,6 @@
*/
Ptr m_routeCache;
/**
- * \brief The length of the packet.
- */
- uint32_t m_length;
- /**
* \brief The ipv4 layer 3.
*/
Ptr m_ipv4;
@@ -624,10 +612,6 @@
*/
Ptr m_routeCache;
/**
- * \brief The length of the packet.
- */
- uint32_t m_length;
- /**
* \brief The ipv4 layer 3.
*/
Ptr m_ipv4;
@@ -686,10 +670,6 @@
*/
Ptr m_routeCache;
/**
- * \brief The length of the packet.
- */
- uint32_t m_length;
- /**
* \brief The ipv4 layer 3.
*/
Ptr m_ipv4;
diff -Naur ns-3.18/src/dsr/model/dsr-rreq-table.h ns-3.18.1/src/dsr/model/dsr-rreq-table.h
--- ns-3.18/src/dsr/model/dsr-rreq-table.h 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/dsr/model/dsr-rreq-table.h 2013-11-15 16:40:48.687760981 -0800
@@ -238,9 +238,6 @@
bool FindSourceEntry (Ipv4Address src, Ipv4Address dst, uint16_t id);
private:
-
- // / The max # of requests to retransmit
- uint32_t MaxRequestRexmt;
// / The max request period among requests
Time MaxRequestPeriod;
// / The original request period
diff -Naur ns-3.18/src/emu/doc/emu.rst ns-3.18.1/src/emu/doc/emu.rst
--- ns-3.18/src/emu/doc/emu.rst 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/emu/doc/emu.rst 2013-11-15 16:40:49.587761009 -0800
@@ -70,8 +70,8 @@
that describe how to set up a virtual test network using VMware and how to run a
set of example (client server) simulations that use ``Emu`` net devices.
-* ``_
-* ``_
+* ``_
+* ``_
Once you are over the configuration hurdle, the script changes required to use
an ``Emu`` device are trivial. The main structural difference is that you will
diff -Naur ns-3.18/src/energy/bindings/modulegen__gcc_ILP32.py ns-3.18.1/src/energy/bindings/modulegen__gcc_ILP32.py
--- ns-3.18/src/energy/bindings/modulegen__gcc_ILP32.py 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/energy/bindings/modulegen__gcc_ILP32.py 2013-11-15 16:40:48.395760977 -0800
@@ -25,7 +25,7 @@
## wifi-preamble.h (module 'wifi'): ns3::WifiPreamble [enumeration]
module.add_enum('WifiPreamble', ['WIFI_PREAMBLE_LONG', 'WIFI_PREAMBLE_SHORT', 'WIFI_PREAMBLE_HT_MF', 'WIFI_PREAMBLE_HT_GF'], import_from_module='ns.wifi')
## wifi-phy-standard.h (module 'wifi'): ns3::WifiPhyStandard [enumeration]
- module.add_enum('WifiPhyStandard', ['WIFI_PHY_STANDARD_80211a', 'WIFI_PHY_STANDARD_80211b', 'WIFI_PHY_STANDARD_80211g', 'WIFI_PHY_STANDARD_80211_10MHZ', 'WIFI_PHY_STANDARD_80211_5MHZ', 'WIFI_PHY_STANDARD_holland', 'WIFI_PHY_STANDARD_80211p_CCH', 'WIFI_PHY_STANDARD_80211p_SCH', 'WIFI_PHY_STANDARD_80211n_2_4GHZ', 'WIFI_PHY_STANDARD_80211n_5GHZ'], import_from_module='ns.wifi')
+ module.add_enum('WifiPhyStandard', ['WIFI_PHY_STANDARD_80211a', 'WIFI_PHY_STANDARD_80211b', 'WIFI_PHY_STANDARD_80211g', 'WIFI_PHY_STANDARD_80211_10MHZ', 'WIFI_PHY_STANDARD_80211_5MHZ', 'WIFI_PHY_STANDARD_holland', 'WIFI_PHY_STANDARD_80211n_2_4GHZ', 'WIFI_PHY_STANDARD_80211n_5GHZ'], import_from_module='ns.wifi')
## wifi-mode.h (module 'wifi'): ns3::WifiModulationClass [enumeration]
module.add_enum('WifiModulationClass', ['WIFI_MOD_CLASS_UNKNOWN', 'WIFI_MOD_CLASS_IR', 'WIFI_MOD_CLASS_FHSS', 'WIFI_MOD_CLASS_DSSS', 'WIFI_MOD_CLASS_ERP_PBCC', 'WIFI_MOD_CLASS_DSSS_OFDM', 'WIFI_MOD_CLASS_ERP_OFDM', 'WIFI_MOD_CLASS_OFDM', 'WIFI_MOD_CLASS_HT'], import_from_module='ns.wifi')
## address.h (module 'network'): ns3::Address [class]
diff -Naur ns-3.18/src/energy/bindings/modulegen__gcc_LP64.py ns-3.18.1/src/energy/bindings/modulegen__gcc_LP64.py
--- ns-3.18/src/energy/bindings/modulegen__gcc_LP64.py 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/energy/bindings/modulegen__gcc_LP64.py 2013-11-15 16:40:48.391760977 -0800
@@ -25,7 +25,7 @@
## wifi-preamble.h (module 'wifi'): ns3::WifiPreamble [enumeration]
module.add_enum('WifiPreamble', ['WIFI_PREAMBLE_LONG', 'WIFI_PREAMBLE_SHORT', 'WIFI_PREAMBLE_HT_MF', 'WIFI_PREAMBLE_HT_GF'], import_from_module='ns.wifi')
## wifi-phy-standard.h (module 'wifi'): ns3::WifiPhyStandard [enumeration]
- module.add_enum('WifiPhyStandard', ['WIFI_PHY_STANDARD_80211a', 'WIFI_PHY_STANDARD_80211b', 'WIFI_PHY_STANDARD_80211g', 'WIFI_PHY_STANDARD_80211_10MHZ', 'WIFI_PHY_STANDARD_80211_5MHZ', 'WIFI_PHY_STANDARD_holland', 'WIFI_PHY_STANDARD_80211p_CCH', 'WIFI_PHY_STANDARD_80211p_SCH', 'WIFI_PHY_STANDARD_80211n_2_4GHZ', 'WIFI_PHY_STANDARD_80211n_5GHZ'], import_from_module='ns.wifi')
+ module.add_enum('WifiPhyStandard', ['WIFI_PHY_STANDARD_80211a', 'WIFI_PHY_STANDARD_80211b', 'WIFI_PHY_STANDARD_80211g', 'WIFI_PHY_STANDARD_80211_10MHZ', 'WIFI_PHY_STANDARD_80211_5MHZ', 'WIFI_PHY_STANDARD_holland', 'WIFI_PHY_STANDARD_80211n_2_4GHZ', 'WIFI_PHY_STANDARD_80211n_5GHZ'], import_from_module='ns.wifi')
## wifi-mode.h (module 'wifi'): ns3::WifiModulationClass [enumeration]
module.add_enum('WifiModulationClass', ['WIFI_MOD_CLASS_UNKNOWN', 'WIFI_MOD_CLASS_IR', 'WIFI_MOD_CLASS_FHSS', 'WIFI_MOD_CLASS_DSSS', 'WIFI_MOD_CLASS_ERP_PBCC', 'WIFI_MOD_CLASS_DSSS_OFDM', 'WIFI_MOD_CLASS_ERP_OFDM', 'WIFI_MOD_CLASS_OFDM', 'WIFI_MOD_CLASS_HT'], import_from_module='ns.wifi')
## address.h (module 'network'): ns3::Address [class]
diff -Naur ns-3.18/src/energy/model/li-ion-energy-source.h ns-3.18.1/src/energy/model/li-ion-energy-source.h
--- ns-3.18/src/energy/model/li-ion-energy-source.h 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/energy/model/li-ion-energy-source.h 2013-11-15 16:40:48.383760975 -0800
@@ -59,8 +59,8 @@
* depleted
*
* For a complete reference of the energy source model and model's fitting please refer
- * to UAN Framework
- * page and Li-Ion model
+ * to UAN Framework
+ * page and Li-Ion model
* fitting page.
*
* References:
diff -Naur ns-3.18/src/energy/model/rv-battery-model.h ns-3.18.1/src/energy/model/rv-battery-model.h
--- ns-3.18/src/energy/model/rv-battery-model.h 2013-08-29 22:36:57.000000000 -0700
+++ ns-3.18.1/src/energy/model/rv-battery-model.h 2013-11-15 16:40:48.383760975 -0800
@@ -225,7 +225,6 @@
std::vector m_load; // load profile
std::vector