diff -Naur ns-3.19/AUTHORS ns-3.20/AUTHORS
--- ns-3.19/AUTHORS 2014-06-17 10:34:00.262638020 -0700
+++ ns-3.20/AUTHORS 2014-06-17 10:33:13.609998153 -0700
@@ -19,20 +19,24 @@
Junling Bu
Elena Buchatskaia (borovkovaes@iitp.ru)
Gustavo Carneiro (gjc@inescporto.pt, gjcarneiro@gmail.com)
+Scott Carpenter (scarpen@ncsu.edu)
Egemen K. Cetinkaya (ekc@iitc.ku.edu)
Angelos Chatzipapas (chatzipa@ceid.upatras.gr)
+Eugene Chemeritskiy (echemeritskiy@arccn.ru)
Yufei Cheng (yfcheng@ittc.ku.edu)
Andrey Churin (aachurin@gmail.com)
Salva Climent (jocliba@gmail.com)
Luis Cortes (cortes@gatech.edu)
Luca Costantino (luca.costantino@gmail.com)
Alexander D'souza (moijes12@gmail.com)
+Sébastien Deronne (sebastien.deronne@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
+Margherita Filippetti
Pedro Fortuna (pedro.fortuna@inescporto.pt)
Juliana Freitag Borin (juliana.freitag@gmail.com)
Eric Gamess (egamess@gmail.com)
@@ -41,6 +45,7 @@
Ashim Ghosh
Martin Giachino (martin.giachino@gmail.com,giachino@fing.edu.uy)
Tom Goff (tgoff@tgoff.net)
+Juan C. Granda (jcgranda@uniovi.es)
David Gross (gdavid.devel@gmail.com)
Maja Grubišić (maja.grubisic@live.com)
Charline Taibi Guguen (charline.guguen@gmail.com)
@@ -51,6 +56,7 @@
Budiarto Herman
Tom Hewer
Kim Højgaard-Hansen
+Chris Hood (chood8@gatech.edu)
Blake Hurd (naimorai@gmail.com)
ishan (ishan.chhabra@gmail.com)
Mohamed Amine Ismail (amine.ismail@inria.fr, iamine@udcast.com)
@@ -62,8 +68,10 @@
Piotr Jurkiewicz (piotr.jerzy.jurkiewicz@gmail.com)
Evgeny Kalishenko (ydginster@gmail.com)
Konstantinos Katsaros
-Joe Kopena (tjkopena@cs.drexel.edu)
+Morteza Kheirkhah (m.kheirkhah@sussex.ac.uk)
Flavio Kobuta (flaviokubota@gmail.com)
+Joe Kopena (tjkopena@cs.drexel.edu)
+Christopher Kosecki (christopher.l.kosecki.ctr@mail.mil)
Aleksey Kovalenko (kovalenko@iitp.ru)
Mathieu Lacage (mathieu.lacage@inria.fr)
Emmanuelle Laprise (emmmanuelle.laprise@bluekazoo.ca)
@@ -71,10 +79,12 @@
Daniel Lertpratchya (nikkipui@gmail.com)
Björn Lichtblau (lichtbla@informatik.hu-berlin.de)
Timo Lindhorst
+Erwan Livolant
Keith Ma (keith.nwsuaf@gmail.com)
Federico Maguolo (maguolof@dei.unipd.it)
Antti Makela (zarhan@cc.hut.fi)
Francesco Malandrino (francesco.malandrino@gmail.com)
+Rubén Martínez (rmartinez@deic.uab.cat)
Fabian Mauchle (f1mauchl@hsr.ch)
Andrey Mazo (mazo@iitp.ru)
Jonathan McCrohan (jmccroha@tcd.ie)
@@ -115,8 +125,10 @@
Andrea Sacco (andrea.sacco85@gmail.com)
Providence Salumu Munga (Providence.Salumu@gmail.com, Providence.Salumu_Munga@it-sudparis.eu)
Francisco Javier Sánchez-Roselly
+l.salameh@cs.ucl.ac.uk
Florian Schmidt (Florian.Schmidt@cs.rwth-aachen.de)
Guillaume Seguin (guillaume.seguin@inria.fr)
+Tomasz Seweryn (tomasz.seweryn7@gmail.com)
Kulin Shah (m.kulin@gmail.com)
Guowang Shi
Phillip Sitbon (phillip.sitbon@gmail.com)
diff -Naur ns-3.19/bindings/python/ns3modulegen_core_customizations.py ns-3.20/bindings/python/ns3modulegen_core_customizations.py
--- ns-3.19/bindings/python/ns3modulegen_core_customizations.py 2014-06-17 10:34:00.280637881 -0700
+++ ns-3.20/bindings/python/ns3modulegen_core_customizations.py 2014-06-17 10:33:13.628998007 -0700
@@ -1,3 +1,5 @@
+from __future__ import print_function
+import sys
import re
from pybindgen.typehandlers import base as typehandlers
@@ -26,11 +28,13 @@
def __init__(self):
super(SmartPointerTransformation, self).__init__()
self.rx = re.compile(r'(ns3::|::ns3::|)Ptr<([^>]+)>\s*$')
+ print("{0!r}".format(self), file=sys.stderr)
def _get_untransformed_type_traits(self, name):
m = self.rx.match(name)
is_const = False
if m is None:
+ print("{0!r} did not match".format(name), file=sys.stderr)
return None, False
else:
name1 = m.group(2).strip()
@@ -61,9 +65,9 @@
## fix the ctype, add ns3:: namespace
orig_ctype, is_const = self._get_untransformed_type_traits(args[0])
if is_const:
- correct_ctype = 'ns3::Ptr< %s const >' % orig_ctype[:-2]
+ correct_ctype = 'ns3::Ptr< {0} const >'.format(orig_ctype[:-2])
else:
- correct_ctype = 'ns3::Ptr< %s >' % orig_ctype[:-2]
+ correct_ctype = 'ns3::Ptr< {0} >'.format(orig_ctype[:-2])
args = tuple([correct_ctype] + list(args[1:]))
handler = type_handler(*args, **kwargs)
@@ -84,58 +88,6 @@
del transf
-class ArgvParam(Parameter):
- """
- Converts a python list-of-strings argument to a pair of 'int argc,
- char *argv[]' arguments to pass into C.
-
- One Python argument becomes two C function arguments -> it's a miracle!
-
- Note: this parameter type handler is not registered by any name;
- must be used explicitly.
- """
-
- DIRECTIONS = [Parameter.DIRECTION_IN]
- CTYPES = []
-
- def convert_c_to_python(self, wrapper):
- raise NotImplementedError
-
- def convert_python_to_c(self, wrapper):
- py_name = wrapper.declarations.declare_variable('PyObject*', 'py_' + self.name)
- argc_var = wrapper.declarations.declare_variable('int', 'argc')
- name = wrapper.declarations.declare_variable('char**', self.name)
- idx = wrapper.declarations.declare_variable('Py_ssize_t', 'idx')
- wrapper.parse_params.add_parameter('O!', ['&PyList_Type', '&'+py_name], self.name)
-
- #wrapper.before_call.write_error_check('!PyList_Check(%s)' % py_name) # XXX
-
- wrapper.before_call.write_code("%s = (char **) malloc(sizeof(char*)*PyList_Size(%s));"
- % (name, py_name))
- wrapper.before_call.add_cleanup_code('free(%s);' % name)
- wrapper.before_call.write_code('''
-for (%(idx)s = 0; %(idx)s < PyList_Size(%(py_name)s); %(idx)s++)
-{
-''' % vars())
- wrapper.before_call.sink.indent()
- wrapper.before_call.write_code('''
-PyObject *item = PyList_GET_ITEM(%(py_name)s, %(idx)s);
-''' % vars())
- #wrapper.before_call.write_error_check('item == NULL')
- wrapper.before_call.write_error_check(
- '!PyString_Check(item)',
- failure_cleanup=('PyErr_SetString(PyExc_TypeError, '
- '"argument %s must be a list of strings");') % self.name)
- wrapper.before_call.write_code(
- '%s[%s] = PyString_AsString(item);' % (name, idx))
- wrapper.before_call.sink.unindent()
- wrapper.before_call.write_code('}')
- wrapper.before_call.write_code('%s = PyList_Size(%s);' % (argc_var, py_name))
-
- wrapper.call_params.append(argc_var)
- wrapper.call_params.append(name)
-
-
class CallbackImplProxyMethod(typehandlers.ReverseWrapperBase):
"""
Class that generates a proxy virtual method that calls a similarly named python method.
@@ -204,7 +156,7 @@
kwargs = {}
try:
return_type = ReturnValue.new(str(return_ctype), **kwargs)
- except (typehandlers.TypeLookupError, typehandlers.TypeConfigurationError), ex:
+ except (typehandlers.TypeLookupError, typehandlers.TypeConfigurationError) as ex:
warnings.warn("***** Unable to register callback; Return value '%s' error (used in %s): %r"
% (callback_return, cls_name, ex),
Warning)
@@ -223,7 +175,7 @@
kwargs = {}
try:
arguments.append(Parameter.new(str(param_ctype), arg_name, **kwargs))
- except (typehandlers.TypeLookupError, typehandlers.TypeConfigurationError), ex:
+ except (typehandlers.TypeLookupError, typehandlers.TypeConfigurationError) as ex:
warnings.warn("***** Unable to register callback; parameter '%s %s' error (used in %s): %r"
% (arg_type, arg_name, cls_name, ex),
Warning)
@@ -241,7 +193,7 @@
class PythonCallbackParameter(Parameter):
"Class handlers"
CTYPES = [cls_name]
- print >> sys.stderr, "***** registering callback handler: %r" % ctypeparser.normalize_type_string(cls_name)
+ print("***** registering callback handler: %r" % ctypeparser.normalize_type_string(cls_name), file=sys.stderr)
DIRECTIONS = [Parameter.DIRECTION_IN]
PYTHON_CALLBACK_IMPL_NAME = class_name
TEMPLATE_ARGS = template_parameters
diff -Naur ns-3.19/bindings/python/ns3modulegen-modular.py ns-3.20/bindings/python/ns3modulegen-modular.py
--- ns-3.19/bindings/python/ns3modulegen-modular.py 2014-06-17 10:34:00.278637897 -0700
+++ ns-3.20/bindings/python/ns3modulegen-modular.py 2014-06-17 10:33:13.626998022 -0700
@@ -1,3 +1,4 @@
+from __future__ import print_function
import warnings
import sys
import os
@@ -6,6 +7,8 @@
from pybindgen.module import MultiSectionFactory
import ns3modulegen_core_customizations
+import logging
+
pybindgen.settings.wrapper_registry = pybindgen.settings.StdMapWrapperRegistry
import traceback
@@ -55,6 +58,9 @@
def main(argv):
+ logging.basicConfig()
+ logging.getLogger("pybindgen.typehandlers").setLevel(logging.DEBUG)
+
module_abs_src_path, target, extension_name, output_cc_file_name = argv[1:]
module_name = os.path.basename(module_abs_src_path)
out = MyMultiSectionFactory(output_cc_file_name)
@@ -71,11 +77,11 @@
try:
from callbacks_list import callback_classes
- except ImportError, ex:
- print >> sys.stderr, "***************", repr(ex)
+ except ImportError as ex:
+ print("***************", repr(ex), file=sys.stderr)
callback_classes = []
else:
- print >> sys.stderr, ">>>>>>>>>>>>>>>>", repr(callback_classes)
+ print(">>>>>>>>>>>>>>>>", repr(callback_classes), file=sys.stderr)
finally:
sys.path.pop(0)
diff -Naur ns-3.19/bindings/python/waf ns-3.20/bindings/python/waf
--- ns-3.19/bindings/python/waf 2014-06-17 10:34:00.283637858 -0700
+++ ns-3.20/bindings/python/waf 1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
\ No newline at end of file
diff -Naur ns-3.19/bindings/python/wscript ns-3.20/bindings/python/wscript
--- ns-3.19/bindings/python/wscript 2014-06-17 10:34:00.286637835 -0700
+++ ns-3.20/bindings/python/wscript 2014-06-17 10:33:13.633997968 -0700
@@ -13,7 +13,7 @@
# after = TaskGen.after
## https://launchpad.net/pybindgen/
-REQUIRED_PYBINDGEN_VERSION = (0, 16, 0, 834)
+REQUIRED_PYBINDGEN_VERSION = (0, 17, 0, 868)
REQUIRED_PYGCCXML_VERSION = (0, 9, 5)
RUN_ME=-3
@@ -47,6 +47,10 @@
opt.add_option('--with-python',
help=('Path to the Python interpreter to use.'),
default=None, dest='with_python', type="string")
+ opt.add_option('--no32bit-scan',
+ help=("Don't scan for the 32-bit variant of the bindings on 64-bit platforms."),
+ action="store_true", default=False,
+ dest='no32bit_scan')
def configure(conf):
@@ -161,7 +165,7 @@
else:
out = subprocess.Popen([conf.env['PYTHON'][0], "-c",
"import pybindgen.version; "
- "print '.'.join([str(x) for x in pybindgen.version.__version__])"],
+ "print('.'.join([str(x) for x in pybindgen.version.__version__]))"],
stdout=subprocess.PIPE).communicate()[0]
pybindgen_version_str = out.strip()
pybindgen_version = tuple([int(x) for x in pybindgen_version_str.split('.')])
@@ -436,7 +440,9 @@
else:
import struct
if struct.calcsize('I') == 4 and struct.calcsize('L') == 8 and struct.calcsize('P') == 8:
- scan_targets.extend([('gcc_ILP32', '-m32'), ('gcc_LP64', '-m64')])
+ if not Options.options.no32bit_scan:
+ scan_targets.append(('gcc_ILP32', '-m32'))
+ scan_targets.append(('gcc_LP64', '-m64'))
elif struct.calcsize('I') == 4 and struct.calcsize('L') == 4 and struct.calcsize('P') == 4:
scan_targets.append(('gcc_ILP32', ''))
else:
diff -Naur ns-3.19/CHANGES.html ns-3.20/CHANGES.html
--- ns-3.19/CHANGES.html 2014-06-17 10:34:00.268637974 -0700
+++ ns-3.20/CHANGES.html 2014-06-17 10:33:13.616998099 -0700
@@ -51,6 +51,64 @@
us a note on ns-developers mailing list.
+Changes from ns-3.19 to ns-3.20
+New API:
+
+ Models have been added for low-rate, wireless personal area networks
+(LR-WPAN) as specified by IEEE standard 802.15.4 (2006). The current
+emphasis is on the unslotted mode of 802.15.4 operation for use in Zigbee,
+and the scope is limited to enabling a single mode (CSMA/CA) with basic
+data transfer capabilities. Association with PAN coordinators is not yet
+supported, nor the use of extended addressing. Interference is modeled as
+AWGN but this is currently not thoroughly tested. The NetDevice Tx queue
+is not limited, i.e., packets are never dropped due to queue becoming full.
+They may be dropped due to excessive transmission retries or channel access
+failure.
+ A new IPv6 routing protocol has been added: RIPng. This protocol is
+ an Interior Gateway Protocol and it is available in the Internet module.
+ A new LTE MAC downlink scheduling algorithm named Channel and QoS
+ Aware (CQA) Scheduler is provided by the new "ns3::CqaFfMacScheduler" object.
+
+ Units may be attached to Time objects, to facilitate specific output
+ formats (see Time::As())
+ FlowMonitor "SerializeToXml" functions are now directly available
+ from the helper.
+ Access to OLSR's HNA table has been enabled
+
+
+Changes to existing API:
+
+ The SixLowPan model can now use uncompressed IPv6 headers. An option to
+ define the minimum compressed packet size has been added.
+ MinDistance wsa replaced by MinLoss in FriisPropagationLossModel, to
+ better handle conditions outside of the assumed far field region.
+ In the DSR model, the attribute DsrOptionRerrHeader::ErrorType" has
+ been removed.
+
+
+Changes to build system:
+
+ Python 3.3 is now supported for Python bindings for ns-3. Python 3.3
+ support for API scanning is not supported. Python 3.2 is not supported.
+ Enable selection of high precision int64x64_t implementation
+ at configure time, for debugging purposes.
+ Optimized builds are now enabling signed overflow optimization
+ (-fstrict-overflow) and for gcc 4.8.2 and greater, also warning for cases
+ where an optimizization may occur due to compiler assumption that
+ overflow will not occur.
+
+
+Changed behavior:
+
+ The Internet FlowMonitor can now track IPv6 packets.
+ Ipv6Extension::m_dropTrace has been removed. Ipv6L3Protocol::m_dropTrace
+ is now fired when appropriate.
+ IPv4 identification field value is now dependent on the protocol
+ field.
+ Point-to-point trace sources now contain PPP headers
+
+
+
Changes from ns-3.18.1 to ns-3.19
New API:
diff -Naur ns-3.19/doc/doxygen.conf ns-3.20/doc/doxygen.conf
--- ns-3.19/doc/doxygen.conf 2014-06-17 10:34:00.290637804 -0700
+++ ns-3.20/doc/doxygen.conf 2014-06-17 10:33:13.639997922 -0700
@@ -1,4 +1,6 @@
-# Doxyfile 1.8.1.1
+# -*-sh-*-
+
+# Doxyfile 1.8.3.1
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project.
@@ -126,7 +128,9 @@
# only done if one of the specified strings matches the left-hand part of
# the path. The tag can be used to show relative paths in the file list.
# If left blank the directory from which doxygen is run is used as the
-# path to strip.
+# path to strip. Note that you specify absolute paths here, but also
+# relative paths, which will be relative from the directory where doxygen is
+# started.
STRIP_FROM_PATH =
@@ -242,14 +246,15 @@
OPTIMIZE_OUTPUT_VHDL = NO
# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given extension.
-# Doxygen has a built-in mapping, but you can override or extend it using this
-# tag. The format is ext=language, where ext is a file extension, and language
-# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
-# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
-# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
-# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
-# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
+# parses. With this tag you can assign which parser to use for a given
+# extension. Doxygen has a built-in mapping, but you can override or extend it
+# using this tag. The format is ext=language, where ext is a file extension,
+# and language is one of the parsers supported by doxygen: IDL, Java,
+# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C,
+# C++. For instance to make doxygen treat .inc files as Fortran files (default
+# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note
+# that for custom extensions you also need to set FILE_PATTERNS otherwise the
+# files are not read by doxygen.
EXTENSION_MAPPING =
@@ -262,6 +267,13 @@
MARKDOWN_SUPPORT = YES
+# When enabled doxygen tries to link words that correspond to documented classes,
+# or namespaces to their corresponding documentation. Such a link can be
+# prevented in individual cases by by putting a % sign in front of the word or
+# globally by setting AUTOLINK_SUPPORT to NO.
+
+AUTOLINK_SUPPORT = YES
+
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
# to include (a tag file for) the STL sources as input, then you should
# set this tag to YES in order to let doxygen match functions declarations and
@@ -282,10 +294,10 @@
SIP_SUPPORT = NO
-# For Microsoft's IDL there are propget and propput attributes to indicate getter
-# and setter methods for a property. Setting this option to YES (the default)
-# will make doxygen replace the get and set methods by a property in the
-# documentation. This will only work if the methods are indeed getting or
+# For Microsoft's IDL there are propget and propput attributes to indicate
+# getter and setter methods for a property. Setting this option to YES (the
+# default) will make doxygen replace the get and set methods by a property in
+# the documentation. This will only work if the methods are indeed getting or
# setting a simple type. If this is not the case, or you want to show the
# methods anyway, you should set this option to NO.
@@ -346,7 +358,7 @@
# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
# corresponding to a cache size of 2^16 = 65536 symbols.
-SYMBOL_CACHE_SIZE = 0
+SYMBOL_CACHE_SIZE = 1
# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
@@ -375,7 +387,8 @@
EXTRACT_PRIVATE = YES
-# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal scope will be included in the documentation.
+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# scope will be included in the documentation.
EXTRACT_PACKAGE = NO
@@ -546,7 +559,8 @@
GENERATE_DEPRECATEDLIST= YES
# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
+# documentation sections, marked by \if section-label ... \endif
+# and \cond section-label ... \endcond blocks.
ENABLED_SECTIONS =
@@ -604,7 +618,8 @@
# requires the bibtex tool to be installed. See also
# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
-# feature you need bibtex and perl available in the search path.
+# feature you need bibtex and perl available in the search path. Do not use
+# file names with spaces, bibtex cannot handle them.
CITE_BIB_FILES =
@@ -836,6 +851,13 @@
FILTER_SOURCE_PATTERNS =
+# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that
+# is part of the input, its contents will be placed on the main page (index.html).
+# This can be useful if you have a project on for instance GitHub and want reuse
+# the introduction page also for the doxygen output.
+
+USE_MDFILE_AS_MAINPAGE =
+
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
@@ -957,12 +979,22 @@
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# style sheet in the HTML output directory as well, or it will be erased!
+# fine-tune the look of the HTML output. If left blank doxygen will
+# generate a default style sheet. Note that it is recommended to use
+# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this
+# tag will in the future become obsolete.
+
+HTML_STYLESHEET =
+
+# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional
+# user-defined cascading style sheet that is included after the standard
+# style sheets created by doxygen. Using this option one can overrule
+# certain style aspects. This is preferred over using HTML_STYLESHEET
+# since it does not replace the standard style sheet and is therefor more
+# robust against future updates. Doxygen will copy the style sheet file to
+# the output directory.
-HTML_STYLESHEET = doc/ns3_html_theme/static/ns3_stylesheet.css
+HTML_EXTRA_STYLESHEET = doc/ns3_html_theme/static/ns3_stylesheet.css
# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the HTML output directory. Note
@@ -971,8 +1003,7 @@
# files. In the HTML_STYLESHEET file, use the file name only. Also note that
# the files will be copied as-is; there are no commands or markers available.
-HTML_EXTRA_FILES = doc/ns3_html_theme/static/doxygen.css \
- doc/ns3_html_theme/static/bar-top.png \
+HTML_EXTRA_FILES = doc/ns3_html_theme/static/bar-top.png \
doc/ns3_html_theme/static/drop-down-menu.js \
doc/ns3_html_theme/static/favicon.ico \
doc/ns3_html_theme/static/menu-bgr-400.png \
@@ -1055,9 +1086,9 @@
DOCSET_BUNDLE_ID = org.nsnam.ns3
-# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
+# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely
+# identify the documentation publisher. This should be a reverse domain-name
+# style string, e.g. com.mycompany.MyDocSet.documentation.
DOCSET_PUBLISHER_ID = org.nsnam.ns3
@@ -1242,6 +1273,13 @@
USE_MATHJAX = NO
+# When MathJax is enabled you can set the default output format to be used for
+# thA MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and
+# SVG. The default value is HTML-CSS, which is slower, but has the best
+# compatibility.
+
+MATHJAX_FORMAT = HTML-CSS
+
# When MathJax is enabled you need to specify the location relative to the
# HTML output directory using the MATHJAX_RELPATH option. The destination
# directory should contain the MathJax.js script. For instance, if the mathjax
@@ -1252,7 +1290,7 @@
# However, it is strongly recommended to install a local
# copy of MathJax from http://www.mathjax.org before deployment.
-MATHJAX_RELPATH = http://www.mathjax.org/mathjax
+MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
# names that should be enabled during MathJax rendering.
@@ -1270,15 +1308,55 @@
SEARCHENGINE = YES
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a PHP enabled web server instead of at the web client
-# using Javascript. Doxygen will generate the search PHP script and index
-# file to put on the web server. The advantage of the server
-# based approach is that it scales better to large projects and allows
-# full text search. The disadvantages are that it is more difficult to setup
-# and does not have live searching capabilities.
+# implemented using a web server instead of a web client using Javascript.
+# There are two flavours of web server based search depending on the
+# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
+# searching and an index file used by the script. When EXTERNAL_SEARCH is
+# enabled the indexing and searching needs to be provided by external tools.
+# See the manual for details.
SERVER_BASED_SEARCH = NO
+# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP
+# script for searching. Instead the search results are written to an XML file
+# which needs to be processed by an external indexer. Doxygen will invoke an
+# external search engine pointed to by the SEARCHENGINE_URL option to obtain
+# the search results. Doxygen ships with an example indexer (doxyindexer) and
+# search engine (doxysearch.cgi) which are based on the open source search engine
+# library Xapian. See the manual for configuration details.
+
+EXTERNAL_SEARCH = NO
+
+# The SEARCHENGINE_URL should point to a search engine hosted by a web server
+# which will returned the search results when EXTERNAL_SEARCH is enabled.
+# Doxygen ships with an example search engine (doxysearch) which is based on
+# the open source search engine library Xapian. See the manual for configuration
+# details.
+
+SEARCHENGINE_URL =
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
+# search data is written to a file for indexing by an external tool. With the
+# SEARCHDATA_FILE tag the name of this file can be specified.
+
+SEARCHDATA_FILE = searchdata.xml
+
+# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the
+# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
+# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
+# projects and redirect the results back to the right project.
+
+EXTERNAL_SEARCH_ID =
+
+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+# projects other than the one defined by this configuration file, but that are
+# all added to the same external search index. Each project needs to have a
+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id
+# of to a relative location where the documentation can be found.
+# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ...
+
+EXTRA_SEARCH_MAPPINGS =
+
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
@@ -1564,6 +1642,9 @@
INCLUDE_PATH =
+# Allow doxygen to find generated include files, such as ns3/core-config.h
+INCLUDE_PATH += build
+
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
# directories. If left blank, the patterns specified with FILE_PATTERNS will
@@ -1579,8 +1660,22 @@
# undefined via #undef or recursively expanded use the := operator
# instead of the = operator.
-PREDEFINED = NS3_ASSERT_ENABLE \
- NS3_LOG_ENABLE
+# ns-3:
+#
+# We predefine NS3_ASSERT_ENABLE and NS3_LOG_ENABLE so doxygen sees
+# the working definitions. (These are normally defined by waf
+# in ns3/core-config.h)
+#
+# Function like macros at file global scope typically need to be here,
+# since doxygen confuses invocations of these macros for function
+# definitions.
+
+PREDEFINED = \
+ NS3_ASSERT_ENABLE \
+ NS3_LOG_ENABLE \
+ NS_LOG_COMPONENT_DEFINE()=1 \
+ NS_LOG_COMPONENT_DEFINE_MASK()=1 \
+ NS_OBJECT_ENSURE_REGISTERED()=1 \
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
# this tag can be used to specify a list of macro names that should be expanded.
diff -Naur ns-3.19/doc/doxygen.warnings.report.sh ns-3.20/doc/doxygen.warnings.report.sh
--- ns-3.19/doc/doxygen.warnings.report.sh 2014-06-17 10:34:00.291637796 -0700
+++ ns-3.20/doc/doxygen.warnings.report.sh 2014-06-17 10:33:13.639997922 -0700
@@ -136,14 +136,14 @@
conf=$DIR/doxygen.conf
sed -i.bak -E '/^EXTRACT_ALL |^HAVE_DOT |^WARNINGS /s/YES/no/' $conf
- rm -f $conf.bak
echo
echo -n "Rebuilding doxygen docs with full errors..."
(cd "$ROOT" && ./waf --doxygen >/dev/null 2>&1)
status=$?
- hg revert $conf
+ rm -f $conf
+ mv -f $conf.bak $conf
if [ $status -eq 0 ]; then
echo "Done."
diff -Naur ns-3.19/doc/main.h ns-3.20/doc/main.h
--- ns-3.19/doc/main.h 2014-06-17 10:34:00.292637789 -0700
+++ ns-3.20/doc/main.h 2014-06-17 10:33:13.640997914 -0700
@@ -71,3 +71,28 @@
* ns3 namespace.
*/
+// Macros defined by the build system.
+//
+// These have to be visible for doxygen to document them,
+// so we put them here in a file only seen by doxygen, not the compiler.
+/**
+ * \ingroup assert
+ *
+ * \def NS3_ASSERT_ENABLE
+ *
+ * Enable asserts at compile time.
+ *
+ * This is normally set by `./waf configure --build-profile=debug`.
+ */
+#define NS3_ASSERT_ENABLE
+
+/**
+ * \ingroup logging
+ *
+ * \def NS3_LOG_ENABLE
+ *
+ * Enable logging at compile time.
+ *
+ * This is normally set by `./waf configure --build-profile=debug`.
+ */
+#define NS3_LOG_ENABLE
diff -Naur ns-3.19/doc/manual/source/attributes.rst ns-3.20/doc/manual/source/attributes.rst
--- ns-3.19/doc/manual/source/attributes.rst 2014-06-17 10:34:00.296637758 -0700
+++ ns-3.20/doc/manual/source/attributes.rst 2014-06-17 10:33:13.644997883 -0700
@@ -741,6 +741,11 @@
Simulator::Destroy ();
+Note the placement of these statements just prior to the
+:cpp:func:`Simulator::Run ()` statement. This output logs all of the
+values in place just prior to starting the simulation (i.e. after
+all of the configuration has taken place).
+
After running, you can open the output-attributes.txt file and see:
.. sourcecode:: text
@@ -808,15 +813,34 @@
This file can be archived with your simulation script and output data.
-While it is possible to generate a sample config file and lightly edit it to
-change a couple of values, there are cases where this process will not work
-because the same value on the same object can appear multiple times in the same
-automatically-generated configuration file under different configuration paths.
-
-As such, the best way to use this class is to use it to generate an initial
-configuration file, extract from that configuration file only the strictly
-necessary elements, and move these minimal elements to a new configuration file
-which can then safely be edited and loaded in a subsequent simulation run.
+Next, we discuss using this to configure simulations via an input
+configuration file. There are a couple of key differences when
+compared to use for logging the final simulation configuration. First, we
+need to place statements such as these at the beginning of the program,
+before simulation configuration statements are written (so the values
+are registered before being used in object construction).
+
+::
+
+ Config::SetDefault ("ns3::ConfigStore::Filename", StringValue ("input-defaults.xml"));
+ Config::SetDefault ("ns3::ConfigStore::Mode", StringValue ("Load"));
+ Config::SetDefault ("ns3::ConfigStore::FileFormat", StringValue ("Xml"));
+ ConfigStore inputConfig;
+ inputConfig.ConfigureDefaults ();
+
+Next, note that loading of input configuration data is limited to attribute
+default (i.e. not instance) values, and global values. Attribute instance
+values are not supported because at this stage of the simulation, before
+any objects are constructed, there are no such object instances around.
+(Note, future enhancements to the config store may change this behavior).
+
+Second, while the output of config store state will list everything in
+the database, the input file need only contain the specific values to
+be overridden. So, one way to use this class for input file configuration
+is to generate an initial configuration using the output (Save) method
+described above, extract from that configuration file only the elements
+one wishes to change, and move these minimal elements to a new configuration
+file which can then safely be edited and loaded in a subsequent simulation run.
When the ConfigStore object is instantiated, its attributes Filename, Mode, and
FileFormat must be set, either via command-line or via program statements.
@@ -824,9 +848,7 @@
As a more complicated example, let's assume that we want to read in a
configuration of defaults from an input file named "input-defaults.xml", and
write out the resulting attributes to a separate file called
-"output-attributes.xml". (Note-- to get this input xml file to begin with, it
-is sometimes helpful to run the program to generate an output xml file first,
-then hand-edit that file and re-input it for the next simulation run).::
+"output-attributes.xml".::
#include "ns3/config-store-module.h"
...
diff -Naur ns-3.19/doc/manual/source/conf.py ns-3.20/doc/manual/source/conf.py
--- ns-3.19/doc/manual/source/conf.py 2014-06-17 10:34:00.297637750 -0700
+++ ns-3.20/doc/manual/source/conf.py 2014-06-17 10:33:13.645997876 -0700
@@ -41,16 +41,16 @@
# General information about the project.
project = u'ns-3'
-copyright = u'2008-13, ns-3 project'
+copyright = u'2010, ns-3 project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
-version = 'ns-3.19'
+version = 'ns-3.20'
# The full version, including alpha/beta/rc tags.
-release = 'ns-3.19'
+release = 'ns-3.20'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff -Naur ns-3.19/doc/manual/source/object-model.rst ns-3.20/doc/manual/source/object-model.rst
--- ns-3.19/doc/manual/source/object-model.rst 2014-06-17 10:34:00.303637704 -0700
+++ ns-3.20/doc/manual/source/object-model.rst 2014-06-17 10:33:13.651997829 -0700
@@ -176,7 +176,7 @@
binary-level compatibility of replaceable components is not supported and we
have tried to simplify the syntax and impact on model developers.
-Exmaples
+Examples
********
Aggregation example
diff -Naur ns-3.19/doc/models/Makefile ns-3.20/doc/models/Makefile
--- ns-3.19/doc/models/Makefile 2014-06-17 10:34:00.310637650 -0700
+++ ns-3.20/doc/models/Makefile 2014-06-17 10:33:13.658997775 -0700
@@ -80,6 +80,7 @@
$(SRC)/flow-monitor/doc/flow-monitor.rst \
$(SRC)/wave/doc/wave.rst \
$(SRC)/sixlowpan/doc/sixlowpan.rst \
+ $(SRC)/lr-wpan/doc/lr-wpan.rst \
# list all model library figure files that need to be copied to
# $SOURCETEMP/figures. For each figure to be included in all
@@ -213,28 +214,29 @@
$(SRC)/stats/doc/gnuplot-example.png \
$(SRC)/stats/doc/gnuplot-helper-example.png \
$(SRC)/stats/doc/seventh-packet-byte-count.png \
- $(SRC)/netanim/doc/figures/Dumbbell.png \
- $(SRC)/netanim/doc/figures/Dumbbell.pdf \
$(SRC)/netanim/doc/figures/PacketStatistics.png \
$(SRC)/netanim/doc/figures/PacketStatistics.pdf \
- $(SRC)/netanim/doc/figures/FastForward.png \
- $(SRC)/netanim/doc/figures/FastForward.pdf \
- $(SRC)/netanim/doc/figures/Wireless.png \
- $(SRC)/netanim/doc/figures/Wireless.pdf \
- $(SRC)/netanim/doc/figures/Precision.png \
- $(SRC)/netanim/doc/figures/Precision.pdf \
- $(SRC)/netanim/doc/figures/Persist.png \
- $(SRC)/netanim/doc/figures/Persist.pdf \
- $(SRC)/netanim/doc/figures/SimTime.png \
- $(SRC)/netanim/doc/figures/SimTime.pdf \
+ $(SRC)/netanim/doc/figures/NetAnim_3_105.png \
+ $(SRC)/netanim/doc/figures/NetAnim_3_105.pdf \
$(SRC)/netanim/doc/figures/Trajectory.png \
$(SRC)/netanim/doc/figures/Trajectory.pdf \
- $(SRC)/netanim/doc/figures/UpdateRateInterval.png \
- $(SRC)/netanim/doc/figures/UpdateRateInterval.pdf \
- $(SRC)/netanim/doc/figures/WithoutPrecision.png \
- $(SRC)/netanim/doc/figures/WithoutPrecision.pdf \
- $(SRC)/netanim/doc/figures/WithPrecision.png \
- $(SRC)/netanim/doc/figures/WithPrecision.pdf \
+ $(SRC)/netanim/doc/figures/NodeCountersChart.png \
+ $(SRC)/netanim/doc/figures/NodeCountersChart.pdf \
+ $(SRC)/netanim/doc/figures/NodeCountersTable.png \
+ $(SRC)/netanim/doc/figures/NodeCountersTable.pdf \
+ $(SRC)/netanim/doc/figures/RoutingTables.png \
+ $(SRC)/netanim/doc/figures/RoutingTables.pdf \
+ $(SRC)/netanim/doc/figures/PacketTimeline.png \
+ $(SRC)/netanim/doc/figures/PacketTimeline.pdf \
+ $(SRC)/spectrum/doc/spectrum-channel-phy-interface.png \
+ $(SRC)/spectrum/doc/spectrum-channel-phy-interface.pdf \
+ $(SRC)/spectrum/doc/spectrum-analyzer-example.eps \
+ $(SRC)/lr-wpan/doc/lr-wpan-arch.dia \
+ $(SRC)/lr-wpan/doc/lr-wpan-data-example.dia \
+ $(SRC)/lr-wpan/doc/lr-wpan-primitives.dia \
+ $(SRC)/lr-wpan/doc/802-15-4-ber.eps \
+ $(SRC)/lr-wpan/doc/802-15-4-per-sens.eps \
+ $(SRC)/lr-wpan/doc/802-15-4-psr-distance.eps
# specify figures from which .png and .pdf figures need to be
# generated (all dia and eps figures)
@@ -303,6 +305,13 @@
$(FIGURES)/lte-epc-x2-entity-saps.eps \
$(FIGURES)/lte-strongest-cell-handover-algorithm.eps \
$(FIGURES)/auvmobility-classes.eps \
+ $(FIGURES)/spectrum-analyzer-example.eps \
+ $(FIGURES)/lr-wpan-primitives.eps \
+ $(FIGURES)/lr-wpan-data-example.eps \
+ $(FIGURES)/lr-wpan-arch.eps \
+ $(FIGURES)/802-15-4-ber.eps \
+ $(FIGURES)/802-15-4-per-sens.eps \
+ $(FIGURES)/802-15-4-psr-distance.eps
# rescale pdf figures as necessary
$(FIGURES)/testbed.pdf_width = 5in
@@ -339,6 +348,9 @@
$(FIGURES)/mac-random-access-noncontention.pdf_width = 15cm
$(FIGURES)/helpers.pdf_width = 8cm
$(FIGURES)/auvmobility-classes.pdf_width = 10cm
+$(FIGURES)/spectrum-analyzer-example.pdf_width = 15cm
+$(FIGURES)/lr-wpan-primitives.pdf_width = 3in
+$(FIGURES)/lr-wpan-arch.pdf_width = 2in
IMAGES_PNG = ${IMAGES_EPS:.eps=.png}
IMAGES_PDF = ${IMAGES_EPS:.eps=.pdf}
@@ -389,11 +401,10 @@
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
copy-sources: $(SOURCES)
- @rm -rf $(SOURCETEMP)
@mkdir -p $(SOURCETEMP)
@mkdir -p $(FIGURES)
- @cp -r $(SOURCES) $(SOURCETEMP)
- @cp -r $(SOURCEFIGS) $(FIGURES)
+ @cp -r -p $(SOURCES) $(SOURCETEMP)
+ @cp -r -p $(SOURCEFIGS) $(FIGURES)
clean:
-rm -rf $(BUILDDIR)/*
diff -Naur ns-3.19/doc/models/source/conf.py ns-3.20/doc/models/source/conf.py
--- ns-3.19/doc/models/source/conf.py 2014-06-17 10:34:00.312637634 -0700
+++ ns-3.20/doc/models/source/conf.py 2014-06-17 10:33:13.660997760 -0700
@@ -41,16 +41,16 @@
# General information about the project.
project = u'ns-3'
-copyright = u'2008-13, ns-3 project'
+copyright = u'2011, ns-3 project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
-version = 'ns-3.19'
+version = 'ns-3.20'
# The full version, including alpha/beta/rc tags.
-release = 'ns-3.19'
+release = 'ns-3.20'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff -Naur ns-3.19/doc/models/source/index.rst ns-3.20/doc/models/source/index.rst
--- ns-3.19/doc/models/source/index.rst 2014-06-17 10:34:00.312637634 -0700
+++ ns-3.20/doc/models/source/index.rst 2014-06-17 10:33:13.661997752 -0700
@@ -33,6 +33,7 @@
energy
flow-monitor
internet-models
+ lr-wpan
lte
mesh
distributed
diff -Naur ns-3.19/doc/modules ns-3.20/doc/modules
--- ns-3.19/doc/modules 2014-06-17 10:34:00.314637619 -0700
+++ ns-3.20/doc/modules 2014-06-17 10:33:13.662997744 -0700
@@ -1,33 +1,42 @@
/**
* @anchor modules_anchor
*
- * @defgroup constructs Introspected Lists
- * \brief These are lists of useful items found by examining the type system.
- *
* @defgroup constants Constants
* @brief Constants you can change
*
* @defgroup utils Utils
* @brief The utils directory is for various programs and scripts related
* to code coverage, test suites, style checking, and benchmarking.
- *
+ */
+/**
* @defgroup core Core
* \brief The "core" module contains:
- * - a time management class to hold a time and convert between various time units: ns3::Time
- * - a scheduler base class used to implement new simulation event schedulers:
+ * - a time management class to hold a time and convert between various
+ * time units: ns3::Time
+ * - a scheduler base class used to implement new simulation event
+ * schedulers:
* ns3::Scheduler and ns3::SchedulerFactory
- * - a simulator class used to create, schedule and cancel events: ns3::Simulator
+ * - a simulator class used to create, schedule and cancel events:
+ * ns3::Simulator
* - a Functor class: ns3::Callback
- * - an os-independent interface to get access to the elapsed wall clock time: ns3::SystemWallClockMs
- * - a class to register regression tests with the test manager: ns3::Test and ns3::TestManager
- * - debugging facilities: \ref logging, \ref assert
+ * - an os-independent interface to get access to the elapsed wall clock
+ * time: ns3::SystemWallClockMs
+ * - a class to register regression tests with the test manager: ns3::Test
+ * and ns3::TestManager
+ * - debugging facilities: \ref debugging
* - \ref randomvariable
- * - a base class for objects which need to support per-instance "attributes" and
- * trace sources: ns3::ObjectBase
+ * - a base class for objects which need to support per-instance
+ * "attributes" and trace sources: ns3::ObjectBase
* - a base class for objects which need to support reference counting
* and dynamic object aggregation: ns3::Object
- * - a smart-pointer class ns3::Ptr designed to work together with ns3::Object
- * - a configuration class used to set and control all attributes and trace sources
- * in a simulation: ns3::Config.
+ * - a smart-pointer class ns3::Ptr designed to work together with
+ * ns3::Object
+ * - a configuration class used to set and control all attributes and
+ * trace sources in a simulation: ns3::Config.
+ */
+/**
+ * @ingroup core
+ * @defgroup debugging Debugging tools
*
+ * @brief Assertions, breakpoints, logging, and abnormal program termination
*/
diff -Naur ns-3.19/doc/ns3_html_theme/get_version.sh ns-3.20/doc/ns3_html_theme/get_version.sh
--- ns-3.19/doc/ns3_html_theme/get_version.sh 2014-06-17 10:34:00.316637604 -0700
+++ ns-3.20/doc/ns3_html_theme/get_version.sh 2014-06-17 10:33:13.664997729 -0700
@@ -71,6 +71,7 @@
# script arguments
say
+say using doxygen: $(which doxygen) $(doxygen --version)
public=0
nsnam=0
daily=0
diff -Naur ns-3.19/doc/ns3_html_theme/ns3_doxy_footer.html ns-3.20/doc/ns3_html_theme/ns3_doxy_footer.html
--- ns-3.19/doc/ns3_html_theme/ns3_doxy_footer.html 2014-06-17 10:34:00.317637596 -0700
+++ ns-3.20/doc/ns3_html_theme/ns3_doxy_footer.html 2014-06-17 10:33:13.665997721 -0700
@@ -1,3 +1,7 @@
+
diff -Naur ns-3.19/doc/ns3_html_theme/ns3_doxy_header.html ns-3.20/doc/ns3_html_theme/ns3_doxy_header.html
--- ns-3.19/doc/ns3_html_theme/ns3_doxy_header.html 2014-06-17 10:34:00.317637596 -0700
+++ ns-3.20/doc/ns3_html_theme/ns3_doxy_header.html 2014-06-17 10:33:13.666997713 -0700
@@ -1,18 +1,23 @@
+
-
-
-
-
$projectname: $title
- $title
-
-
-
+
+
+
+
+$projectname: $title
+$title
+
+
+
$treeview
$search
$mathjax
-
-
+
+$extrastylesheet
@@ -99,7 +104,7 @@
-
+
diff -Naur ns-3.19/doc/ns3_html_theme/static/doxygen.css ns-3.20/doc/ns3_html_theme/static/doxygen.css
--- ns-3.19/doc/ns3_html_theme/static/doxygen.css 2014-06-17 10:34:00.318637588 -0700
+++ ns-3.20/doc/ns3_html_theme/static/doxygen.css 1969-12-31 16:00:00.000000000 -0800
@@ -1,1156 +0,0 @@
-/* The standard CSS for doxygen */
-
-body, table, div, p, dl {
- font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
- font-size: 13px;
- line-height: 1.3;
-}
-
-/* @group Heading Levels */
-
-h1 {
- font-size: 150%;
-}
-
-.title {
- font-size: 150%;
- font-weight: bold;
- margin: 10px 2px;
-}
-
-h2 {
- font-size: 120%;
-}
-
-h3 {
- font-size: 100%;
-}
-
-h1, h2, h3, h4, h5, h6 {
- -webkit-transition: text-shadow 0.5s linear;
- -moz-transition: text-shadow 0.5s linear;
- -ms-transition: text-shadow 0.5s linear;
- -o-transition: text-shadow 0.5s linear;
- transition: text-shadow 0.5s linear;
- margin-right: 15px;
-}
-
-h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
- text-shadow: 0 0 15px cyan;
-}
-
-dt {
- font-weight: bold;
-}
-
-div.multicol {
- -moz-column-gap: 1em;
- -webkit-column-gap: 1em;
- -moz-column-count: 3;
- -webkit-column-count: 3;
-}
-
-p.startli, p.startdd, p.starttd {
- margin-top: 2px;
-}
-
-p.endli {
- margin-bottom: 0px;
-}
-
-p.enddd {
- margin-bottom: 4px;
-}
-
-p.endtd {
- margin-bottom: 2px;
-}
-
-/* @end */
-
-caption {
- font-weight: bold;
-}
-
-span.legend {
- font-size: 70%;
- text-align: center;
-}
-
-h3.version {
- font-size: 90%;
- text-align: center;
-}
-
-div.qindex, div.navtab{
- background-color: #EFEFEF;
- border: 1px solid #B5B5B5;
- text-align: center;
-}
-
-div.qindex, div.navpath {
- width: 100%;
- line-height: 140%;
-}
-
-div.navtab {
- margin-right: 15px;
-}
-
-/* @group Link Styling */
-
-a {
- color: #585858;
- font-weight: normal;
- text-decoration: none;
-}
-
-.contents a:visited {
- color: #686868;
-}
-
-a:hover {
- text-decoration: underline;
-}
-
-a.qindex {
- font-weight: bold;
-}
-
-a.qindexHL {
- font-weight: bold;
- background-color: #B0B0B0;
- color: #ffffff;
- border: 1px double #9F9F9F;
-}
-
-.contents a.qindexHL:visited {
- color: #ffffff;
-}
-
-a.el {
- font-weight: bold;
-}
-
-a.elRef {
-}
-
-a.code, a.code:visited {
- color: #4665A2;
-}
-
-a.codeRef, a.codeRef:visited {
- color: #4665A2;
-}
-
-/* @end */
-
-dl.el {
- margin-left: -1cm;
-}
-
-pre.fragment {
- border: 1px solid #C4CFE5;
- background-color: #FBFCFD;
- padding: 4px 6px;
- margin: 4px 8px 4px 2px;
- overflow: auto;
- word-wrap: break-word;
- font-size: 9pt;
- line-height: 125%;
- font-family: monospace, fixed;
- font-size: 105%;
-}
-
-div.fragment {
- padding: 4px;
- margin: 4px;
- background-color: #FCFCFC;
- border: 1px solid #D0D0D0;
-}
-
-div.line {
- font-family: monospace, fixed;
- font-size: 13px;
- min-height: 13px;
- line-height: 1.0;
- text-wrap: unrestricted;
- white-space: -moz-pre-wrap; /* Moz */
- white-space: -pre-wrap; /* Opera 4-6 */
- white-space: -o-pre-wrap; /* Opera 7 */
- white-space: pre-wrap; /* CSS3 */
- word-wrap: break-word; /* IE 5.5+ */
- text-indent: -53px;
- padding-left: 53px;
- padding-bottom: 0px;
- margin: 0px;
- -webkit-transition-property: background-color, box-shadow;
- -webkit-transition-duration: 0.5s;
- -moz-transition-property: background-color, box-shadow;
- -moz-transition-duration: 0.5s;
- -ms-transition-property: background-color, box-shadow;
- -ms-transition-duration: 0.5s;
- -o-transition-property: background-color, box-shadow;
- -o-transition-duration: 0.5s;
- transition-property: background-color, box-shadow;
- transition-duration: 0.5s;
-}
-
-div.line.glow {
- background-color: cyan;
- box-shadow: 0 0 10px cyan;
-}
-
-
-span.lineno {
- padding-right: 4px;
- text-align: right;
- border-right: 2px solid #0F0;
- background-color: #E8E8E8;
- white-space: pre;
-}
-span.lineno a {
- background-color: #D8D8D8;
-}
-
-span.lineno a:hover {
- background-color: #C8C8C8;
-}
-
-div.ah {
- background-color: black;
- font-weight: bold;
- color: #ffffff;
- margin-bottom: 3px;
- margin-top: 3px;
- padding: 0.2em;
- border: solid thin #333;
- border-radius: 0.5em;
- -webkit-border-radius: .5em;
- -moz-border-radius: .5em;
- box-shadow: 2px 2px 3px #999;
- -webkit-box-shadow: 2px 2px 3px #999;
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
- background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
- background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
-}
-
-div.groupHeader {
- margin-left: 16px;
- margin-top: 12px;
- font-weight: bold;
-}
-
-div.groupText {
- margin-left: 16px;
- font-style: italic;
-}
-
-body {
- background-color: white;
- color: black;
- margin: 0;
-}
-
-div.contents {
- margin-top: 10px;
- margin-left: 12px;
- margin-right: 8px;
-}
-
-td.indexkey {
- background-color: #EFEFEF;
- font-weight: bold;
- border: 1px solid #D0D0D0;
- margin: 2px 0px 2px 0;
- padding: 2px 10px;
- white-space: nowrap;
- vertical-align: top;
-}
-
-td.indexvalue {
- background-color: #EFEFEF;
- border: 1px solid #D0D0D0;
- padding: 2px 10px;
- margin: 2px 0px;
-}
-
-tr.memlist {
- background-color: #F1F1F1;
-}
-
-p.formulaDsp {
- text-align: center;
-}
-
-img.formulaDsp {
-
-}
-
-img.formulaInl {
- vertical-align: middle;
-}
-
-div.center {
- text-align: center;
- margin-top: 0px;
- margin-bottom: 0px;
- padding: 0px;
-}
-
-div.center img {
- border: 0px;
-}
-
-address.footer {
- text-align: right;
- padding-right: 12px;
-}
-
-img.footer {
- border: 0px;
- vertical-align: middle;
-}
-
-/* @group Code Colorization */
-
-span.keyword {
- color: #008000
-}
-
-span.keywordtype {
- color: #604020
-}
-
-span.keywordflow {
- color: #e08000
-}
-
-span.comment {
- color: #800000
-}
-
-span.preprocessor {
- color: #806020
-}
-
-span.stringliteral {
- color: #002080
-}
-
-span.charliteral {
- color: #008080
-}
-
-span.vhdldigit {
- color: #ff00ff
-}
-
-span.vhdlchar {
- color: #000000
-}
-
-span.vhdlkeyword {
- color: #700070
-}
-
-span.vhdllogic {
- color: #ff0000
-}
-
-blockquote {
- background-color: #F8F8F8;
- border-left: 2px solid #B0B0B0;
- margin: 0 24px 0 4px;
- padding: 0 12px 0 16px;
-}
-
-/* @end */
-
-/*
-.search {
- color: #003399;
- font-weight: bold;
-}
-
-form.search {
- margin-bottom: 0px;
- margin-top: 0px;
-}
-
-input.search {
- font-size: 75%;
- color: #000080;
- font-weight: normal;
- background-color: #e8eef2;
-}
-*/
-
-td.tiny {
- font-size: 75%;
-}
-
-.dirtab {
- padding: 4px;
- border-collapse: collapse;
- border: 1px solid #B5B5B5;
-}
-
-th.dirtab {
- background: #EFEFEF;
- font-weight: bold;
-}
-
-hr {
- height: 0px;
- border: none;
- border-top: 1px solid #6E6E6E;
-}
-
-hr.footer {
- height: 1px;
-}
-
-/* @group Member Descriptions */
-
-table.memberdecls {
- border-spacing: 0px;
- padding: 0px;
-}
-
-.memberdecls td {
- -webkit-transition-property: background-color, box-shadow;
- -webkit-transition-duration: 0.5s;
- -moz-transition-property: background-color, box-shadow;
- -moz-transition-duration: 0.5s;
- -ms-transition-property: background-color, box-shadow;
- -ms-transition-duration: 0.5s;
- -o-transition-property: background-color, box-shadow;
- -o-transition-duration: 0.5s;
- transition-property: background-color, box-shadow;
- transition-duration: 0.5s;
-}
-
-.memberdecls td.glow {
- background-color: cyan;
- box-shadow: 0 0 15px cyan;
-}
-
-.mdescLeft, .mdescRight,
-.memItemLeft, .memItemRight,
-.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
- background-color: #FAFAFA;
- border: none;
- margin: 4px;
- padding: 1px 0 0 8px;
-}
-
-.mdescLeft, .mdescRight {
- padding: 0px 8px 4px 8px;
- color: #555;
-}
-
-.memItemLeft, .memItemRight, .memTemplParams {
- border-top: 1px solid #D0D0D0;
-}
-
-.memItemLeft, .memTemplItemLeft {
- white-space: nowrap;
-}
-
-.memItemRight {
- width: 100%;
-}
-
-.memTemplParams {
- color: #686868;
- white-space: nowrap;
-}
-
-/* @end */
-
-/* @group Member Details */
-
-/* Styles for detailed member documentation */
-
-.memtemplate {
- font-size: 80%;
- color: #686868;
- font-weight: normal;
- margin-left: 9px;
-}
-
-.memnav {
- background-color: #EFEFEF;
- border: 1px solid #B5B5B5;
- text-align: center;
- margin: 2px;
- margin-right: 15px;
- padding: 2px;
-}
-
-.mempage {
- width: 100%;
-}
-
-.memitem {
- padding: 0;
- margin-bottom: 10px;
- margin-right: 5px;
- -webkit-transition: box-shadow 0.5s linear;
- -moz-transition: box-shadow 0.5s linear;
- -ms-transition: box-shadow 0.5s linear;
- -o-transition: box-shadow 0.5s linear;
- transition: box-shadow 0.5s linear;
- display: table !important;
- width: 100%;
-}
-
-.memitem.glow {
- box-shadow: 0 0 15px cyan;
-}
-
-.memname {
- font-weight: bold;
- margin-left: 6px;
-}
-
-.memname td {
- vertical-align: bottom;
-}
-
-.memproto, dl.reflist dt {
- border-top: 1px solid #B9B9B9;
- border-left: 1px solid #B9B9B9;
- border-right: 1px solid #B9B9B9;
- padding: 6px 0px 6px 0px;
- color: #323232;
- font-weight: bold;
- text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
- background-image:url('nav_f.png');
- background-repeat:repeat-x;
- background-color: #E8E8E8;
- /* opera specific markup */
- box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
- border-top-right-radius: 4px;
- border-top-left-radius: 4px;
- /* firefox specific markup */
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
- -moz-border-radius-topright: 4px;
- -moz-border-radius-topleft: 4px;
- /* webkit specific markup */
- -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
- -webkit-border-top-right-radius: 4px;
- -webkit-border-top-left-radius: 4px;
-
-}
-
-.memdoc, dl.reflist dd {
- border-bottom: 1px solid #B9B9B9;
- border-left: 1px solid #B9B9B9;
- border-right: 1px solid #B9B9B9;
- padding: 6px 10px 2px 10px;
- background-color: #FCFCFC;
- border-top-width: 0;
- background-image:url('nav_g.png');
- background-repeat:repeat-x;
- background-color: #FFFFFF;
- /* opera specific markup */
- border-bottom-left-radius: 4px;
- border-bottom-right-radius: 4px;
- box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
- /* firefox specific markup */
- -moz-border-radius-bottomleft: 4px;
- -moz-border-radius-bottomright: 4px;
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
- /* webkit specific markup */
- -webkit-border-bottom-left-radius: 4px;
- -webkit-border-bottom-right-radius: 4px;
- -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-}
-
-dl.reflist dt {
- padding: 5px;
-}
-
-dl.reflist dd {
- margin: 0px 0px 10px 0px;
- padding: 5px;
-}
-
-.paramkey {
- text-align: right;
-}
-
-.paramtype {
- white-space: nowrap;
-}
-
-.paramname {
- color: #602020;
- white-space: nowrap;
-}
-.paramname em {
- font-style: normal;
-}
-.paramname code {
- line-height: 14px;
-}
-
-.params, .retval, .exception, .tparams {
- margin-left: 0px;
- padding-left: 0px;
-}
-
-.params .paramname, .retval .paramname {
- font-weight: bold;
- vertical-align: top;
-}
-
-.params .paramtype {
- font-style: italic;
- vertical-align: top;
-}
-
-.params .paramdir {
- font-family: "courier new",courier,monospace;
- vertical-align: top;
-}
-
-table.mlabels {
- border-spacing: 0px;
-}
-
-td.mlabels-left {
- width: 100%;
- padding: 0px;
-}
-
-td.mlabels-right {
- vertical-align: bottom;
- padding: 0px;
- white-space: nowrap;
-}
-
-span.mlabels {
- margin-left: 8px;
-}
-
-span.mlabel {
- background-color: #8F8F8F;
- border-top:1px solid #787878;
- border-left:1px solid #787878;
- border-right:1px solid #D0D0D0;
- border-bottom:1px solid #D0D0D0;
- text-shadow: none;
- color: white;
- margin-right: 4px;
- padding: 2px 3px;
- border-radius: 3px;
- font-size: 7pt;
- white-space: nowrap;
-}
-
-
-
-/* @end */
-
-/* these are for tree view when not used as main index */
-
-div.directory {
- margin: 10px 0px;
- border-top: 1px solid #A8B8D9;
- border-bottom: 1px solid #A8B8D9;
- width: 100%;
-}
-
-.directory table {
- border-collapse:collapse;
-}
-
-.directory td {
- margin: 0px;
- padding: 0px;
- vertical-align: top;
-}
-
-.directory td.entry {
- white-space: nowrap;
- padding-right: 6px;
-}
-
-.directory td.entry a {
- outline:none;
-}
-
-.directory td.entry a img {
- border: none;
-}
-
-.directory td.desc {
- width: 100%;
- padding-left: 6px;
- padding-right: 6px;
- border-left: 1px solid rgba(0,0,0,0.05);
-}
-
-.directory tr.even {
- padding-left: 6px;
- background-color: #F8F8F8;
-}
-
-.directory img {
- vertical-align: -30%;
-}
-
-.directory .levels {
- white-space: nowrap;
- width: 100%;
- text-align: right;
- font-size: 9pt;
-}
-
-.directory .levels span {
- cursor: pointer;
- padding-left: 2px;
- padding-right: 2px;
- color: #585858;
-}
-
-div.dynheader {
- margin-top: 8px;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-
-address {
- font-style: normal;
- color: #3A3A3A;
-}
-
-table.doxtable {
- border-collapse:collapse;
- margin-top: 4px;
- margin-bottom: 4px;
-}
-
-table.doxtable td, table.doxtable th {
- border: 1px solid #3F3F3F;
- padding: 3px 7px 2px;
-}
-
-table.doxtable th {
- background-color: #4F4F4F;
- color: #FFFFFF;
- font-size: 110%;
- padding-bottom: 4px;
- padding-top: 5px;
-}
-
-table.fieldtable {
- width: 100%;
- margin-bottom: 10px;
- border: 1px solid #B9B9B9;
- border-spacing: 0px;
- -moz-border-radius: 4px;
- -webkit-border-radius: 4px;
- border-radius: 4px;
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
- -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
- box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
-}
-
-.fieldtable td, .fieldtable th {
- padding: 3px 7px 2px;
-}
-
-.fieldtable td.fieldtype, .fieldtable td.fieldname {
- white-space: nowrap;
- border-right: 1px solid #B9B9B9;
- border-bottom: 1px solid #B9B9B9;
- vertical-align: top;
-}
-
-.fieldtable td.fielddoc {
- border-bottom: 1px solid #B9B9B9;
- width: 100%;
-}
-
-.fieldtable tr:last-child td {
- border-bottom: none;
-}
-
-.fieldtable th {
- background-image:url('nav_f.png');
- background-repeat:repeat-x;
- background-color: #E8E8E8;
- font-size: 90%;
- color: #323232;
- padding-bottom: 4px;
- padding-top: 5px;
- text-align:left;
- -moz-border-radius-topleft: 4px;
- -moz-border-radius-topright: 4px;
- -webkit-border-top-left-radius: 4px;
- -webkit-border-top-right-radius: 4px;
- border-top-left-radius: 4px;
- border-top-right-radius: 4px;
- border-bottom: 1px solid #B9B9B9;
-}
-
-
-.tabsearch {
- top: 0px;
- left: 10px;
- height: 36px;
- background-image: url('tab_b.png');
- z-index: 101;
- overflow: hidden;
- font-size: 13px;
-}
-
-.navpath ul
-{
- font-size: 11px;
- background-image:url('tab_b.png');
- background-repeat:repeat-x;
- height:30px;
- line-height:30px;
- color:#A2A2A2;
- border:solid 1px #CECECE;
- overflow:hidden;
- margin:0px;
- padding:0px;
-}
-
-.navpath li
-{
- list-style-type:none;
- float:left;
- padding-left:10px;
- padding-right:15px;
- background-image:url('bc_s.png');
- background-repeat:no-repeat;
- background-position:right;
- color:#4D4D4D;
-}
-
-.navpath li.navelem a
-{
- height:32px;
- display:block;
- text-decoration: none;
- outline: none;
-}
-
-.navpath li.navelem a:hover
-{
- color:#888888;
-}
-
-.navpath li.footer
-{
- list-style-type:none;
- float:right;
- padding-left:10px;
- padding-right:15px;
- background-image:none;
- background-repeat:no-repeat;
- background-position:right;
- color:#4D4D4D;
- font-size: 8pt;
-}
-
-
-div.summary
-{
- float: right;
- font-size: 8pt;
- padding-right: 5px;
- width: 50%;
- text-align: right;
-}
-
-div.summary a
-{
- white-space: nowrap;
-}
-
-div.ingroups
-{
- font-size: 8pt;
- width: 50%;
- text-align: left;
-}
-
-div.ingroups a
-{
- white-space: nowrap;
-}
-
-div.header
-{
- background-image:url('nav_h.png');
- background-repeat:repeat-x;
- background-color: #FAFAFA;
- margin: 0px;
- border-bottom: 1px solid #D0D0D0;
-}
-
-div.headertitle
-{
- padding: 5px 5px 5px 7px;
-}
-
-dl
-{
- padding: 0 0 0 10px;
-}
-
-/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
-dl.section
-{
- margin-left: 0px;
- padding-left: 0px;
-}
-
-dl.note
-{
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #D0C000;
-}
-
-dl.warning, dl.attention
-{
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #FF0000;
-}
-
-dl.pre, dl.post, dl.invariant
-{
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #00D000;
-}
-
-dl.deprecated
-{
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #505050;
-}
-
-dl.todo
-{
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #00C0E0;
-}
-
-dl.test
-{
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #3030E0;
-}
-
-dl.bug
-{
- margin-left:-7px;
- padding-left: 3px;
- border-left:4px solid;
- border-color: #C08050;
-}
-
-dl.section dd {
- margin-bottom: 6px;
-}
-
-
-#projectlogo
-{
- text-align: center;
- vertical-align: bottom;
- border-collapse: separate;
-}
-
-#projectlogo img
-{
- border: 0px none;
-}
-
-#projectname
-{
- font: 300% Tahoma, Arial,sans-serif;
- margin: 0px;
- padding: 2px 0px;
-}
-
-#projectbrief
-{
- font: 120% Tahoma, Arial,sans-serif;
- margin: 0px;
- padding: 0px;
-}
-
-#projectnumber
-{
- font: 50% Tahoma, Arial,sans-serif;
- margin: 0px;
- padding: 0px;
-}
-
-#titlearea
-{
- padding: 0px;
- margin: 0px;
- width: 100%;
- border-bottom: 1px solid #787878;
-}
-
-.image
-{
- text-align: center;
-}
-
-.dotgraph
-{
- text-align: center;
-}
-
-.mscgraph
-{
- text-align: center;
-}
-
-.caption
-{
- font-weight: bold;
-}
-
-div.zoom
-{
- border: 1px solid #A6A6A6;
-}
-
-dl.citelist {
- margin-bottom:50px;
-}
-
-dl.citelist dt {
- color:#484848;
- float:left;
- font-weight:bold;
- margin-right:10px;
- padding:5px;
-}
-
-dl.citelist dd {
- margin:2px 0;
- padding:5px 0;
-}
-
-div.toc {
- padding: 14px 25px;
- background-color: #F6F6F6;
- border: 1px solid #DFDFDF;
- border-radius: 7px 7px 7px 7px;
- float: right;
- height: auto;
- margin: 0 20px 10px 10px;
- width: 200px;
-}
-
-div.toc li {
- background: url("bdwn.png") no-repeat scroll 0 5px transparent;
- font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
- margin-top: 5px;
- padding-left: 10px;
- padding-top: 2px;
-}
-
-div.toc h3 {
- font: bold 12px/1.2 Arial,FreeSans,sans-serif;
- color: #686868;
- border-bottom: 0 none;
- margin: 0;
-}
-
-div.toc ul {
- list-style: none outside none;
- border: medium none;
- padding: 0px;
-}
-
-div.toc li.level1 {
- margin-left: 0px;
-}
-
-div.toc li.level2 {
- margin-left: 15px;
-}
-
-div.toc li.level3 {
- margin-left: 30px;
-}
-
-div.toc li.level4 {
- margin-left: 45px;
-}
-
-.inherit_header {
- font-weight: bold;
- color: gray;
- cursor: pointer;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-
-.inherit_header td {
- padding: 6px 0px 2px 5px;
-}
-
-.inherit {
- display: none;
-}
-
-tr.heading h2 {
- margin-top: 12px;
- margin-bottom: 4px;
-}
-
-@media print
-{
- #top { display: none; }
- #side-nav { display: none; }
- #nav-path { display: none; }
- body { overflow:visible; }
- h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
- .summary { display: none; }
- .memitem { page-break-inside: avoid; }
- #doc-content
- {
- margin-left:0 !important;
- height:auto !important;
- width:auto !important;
- overflow:inherit;
- display:inline;
- }
-}
-
diff -Naur ns-3.19/doc/ns3_html_theme/static/ns3_stylesheet.css ns-3.20/doc/ns3_html_theme/static/ns3_stylesheet.css
--- ns-3.19/doc/ns3_html_theme/static/ns3_stylesheet.css 2014-06-17 10:34:00.321637565 -0700
+++ ns-3.20/doc/ns3_html_theme/static/ns3_stylesheet.css 2014-06-17 10:33:13.669997690 -0700
@@ -190,7 +190,7 @@
#ns3-menu .menu div {
background: #94A901;
- background-size: 100%; 100%
+ background-size: 100%;
color:#ffffff;
position: absolute;
visibility: hidden;
diff -Naur ns-3.19/doc/release_steps.txt ns-3.20/doc/release_steps.txt
--- ns-3.19/doc/release_steps.txt 2014-06-17 10:34:00.323637549 -0700
+++ ns-3.20/doc/release_steps.txt 2014-06-17 10:33:13.671997675 -0700
@@ -144,6 +144,9 @@
2. Check if these new files are available on the website
+3. In ns-3-dev, edit the tutorial "Getting Started" page to
+ update the release version numbers.
+
preparing the Wordpress-based main website
------------------------------------------
diff -Naur ns-3.19/doc/tutorial/source/conf.py ns-3.20/doc/tutorial/source/conf.py
--- ns-3.19/doc/tutorial/source/conf.py 2014-06-17 10:34:00.344637387 -0700
+++ ns-3.20/doc/tutorial/source/conf.py 2014-06-17 10:33:13.691997521 -0700
@@ -41,16 +41,16 @@
# General information about the project.
project = u'ns-3'
-copyright = u'2008-13, ns-3 project'
+copyright = u'2010, ns-3 project'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
-version = 'ns-3.19'
+version = 'ns-3.20'
# The full version, including alpha/beta/rc tags.
-release = 'ns-3.19'
+release = 'ns-3.20'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff -Naur ns-3.19/doc/tutorial/source/getting-started.rst ns-3.20/doc/tutorial/source/getting-started.rst
--- ns-3.19/doc/tutorial/source/getting-started.rst 2014-06-17 10:34:00.345637379 -0700
+++ ns-3.20/doc/tutorial/source/getting-started.rst 2014-06-17 10:33:13.693997505 -0700
@@ -33,8 +33,8 @@
copies of |ns3|. We'll walk through both examples since the tools
involved are slightly different.
-Downloading ns-3
-****************
+Downloading |ns3|
+*****************
The |ns3| system as a whole is a fairly complex system and has a
number of dependencies on other components. Along with the systems you will
@@ -72,8 +72,8 @@
downloading and building of various subsystems of |ns3| for you. We
recommend that you begin your |ns3| work in this environment.
-Downloading ns-3 Using a Tarball
-++++++++++++++++++++++++++++++++
+Downloading |ns3| Using a Tarball
++++++++++++++++++++++++++++++++++
A tarball is a particular format of software archive where multiple
files are bundled together and the archive possibly compressed.
@@ -85,27 +85,24 @@
directory called ``workspace``.
If you adopt the ``workspace`` directory approach, you can
get a copy of a release by typing the following into your Linux shell
-(substitute the appropriate version numbers, of course):
-
-::
+(substitute the appropriate version numbers, of course)::
$ cd
$ mkdir workspace
$ cd workspace
- $ wget http://www.nsnam.org/releases/ns-allinone-3.17.tar.bz2
- $ tar xjf ns-allinone-3.17.tar.bz2
+ $ wget http://www.nsnam.org/releases/ns-allinone-3.20.tar.bz2
+ $ tar xjf ns-allinone-3.20.tar.bz2
-If you change into the directory ``ns-allinone-3.17`` you should see a
-number of files:
+If you change into the directory ``ns-allinone-3.20`` you should see a
+number of files::
-::
-
- bake constants.py ns-3.17 README
+ $ ls
+ bake constants.py ns-3.20 README
build.py netanim-3.103 pybindgen-0.16.0.825 util.py
You are now ready to build the |ns3| distribution.
-Downloading ns-3 Using Bake
+Downloading |ns3| Using Bake
++++++++++++++++++++++++++++
Bake is a tool for distributed integration and building,
@@ -119,9 +116,7 @@
Any directory name will do, but we'll assume that ``workspace`` is used
herein (note: ``repos`` may also be used in some documentation as
an example directory name). You can get a copy of ``bake`` by typing the
-following into your Linux shell (assuming you have installed Mercurial):
-
-::
+following into your Linux shell (assuming you have installed Mercurial)::
$ cd
$ mkdir workspace
@@ -133,6 +128,7 @@
::
+ ...
destination directory: bake
requesting all changes
adding changesets
@@ -143,10 +139,9 @@
45 files updated, 0 files merged, 0 files removed, 0 files unresolved
After the clone command completes, you should have a directory called
-``bake``, the contents of which should look something like the following:
-
-::
+``bake``, the contents of which should look something like the following::
+ $ ls
bake bakeconf.xml doc generate-binary.py TODO
bake.py examples test
@@ -157,10 +152,10 @@
There are a few configuration targets available:
-1. ``ns-3.17``: the module corresponding to the release; it will download
+1. ``ns-3.20``: the module corresponding to the release; it will download
components similar to the release tarball.
2. ``ns-3-dev``: a similar module but using the development code tree
-3. ``ns-allinone-3.17``: the module that includes other optional features
+3. ``ns-allinone-3.20``: the module that includes other optional features
such as click routing, openflow for |ns3|, and the Network Simulation
Cradle
4. ``ns-3-allinone``: similar to the released version of the allinone
@@ -178,7 +173,7 @@
`"ns-3 Releases"
`_
web page and clicking on the latest release link. We'll proceed in
-this tutorial example with ``ns-3.17``.
+this tutorial example with ``ns-3.20``.
We are now going to use the bake tool to pull down the various pieces of
|ns3| you will be using. First, we'll say a word about running bake.
@@ -187,9 +182,7 @@
and installing libraries into a build directory. bake can be run
by referencing the binary, but if one chooses to run bake from
outside of the directory it was downloaded into, it is advisable
-to put bake into your path, such as follows (Linux bash shell example):
-
-::
+to put bake into your path, such as follows (Linux bash shell example)::
$ export BAKE_HOME=`pwd`/bake
$ export PATH=$PATH:$BAKE_HOME
@@ -199,16 +192,12 @@
complete this tutorial, so we'll call bake directly by specifying the path
to it in our shell commands.
-Step into the workspace directory and type the following into your shell:
-
-::
+Step into the workspace directory and type the following into your shell::
- $ ./bake.py configure -e ns-3.17
+ $ ./bake.py configure -e ns-3.20
Next, we'l ask bake to check whether we have enough tools to download
-various components. Type:
-
-::
+various components. Type::
$ ./bake.py check
@@ -240,15 +229,11 @@
are our principal concerns at this point, since they allow us to fetch
the code. Please install missing tools at this stage if you are able to.
-Next, try to download the software:
+Next, try to download the software::
-::
+ $ ./bake.py download
- ./bake.py download
-
-should yield something like:
-
-::
+should yield something like::
>> Searching for system dependency pygoocanvas - OK
>> Searching for system dependency python-dev - OK
@@ -257,22 +242,21 @@
>> Searching for system dependency g++ - OK
>> Searching for system dependency qt4 - OK
>> Downloading netanim-3.103 - OK
- >> Downloading ns-3.17 - OK
+ >> Downloading ns-3.20 - OK
The above suggests that three sources have been downloaded. Check the
-``source`` directory now and type ``ls``; one should see:
+``source`` directory now and type ``ls``; one should see::
-::
-
- netanim-3.103 ns-3.17 pybindgen-0.16.0.825
+ $ ls
+ netanim-3.103 ns-3.20 pybindgen-0.16.0.825
You are now ready to build the |ns3| distribution.
-Building ns-3
-*************
+Building |ns3|
+**************
-Building with build.py
-++++++++++++++++++++++
+Building with ``build.py``
+++++++++++++++++++++++++++
When working from a released tarball, the first time you build the
|ns3| project you can build using a convenience program found in the
``allinone`` directory. This program is called ``build.py``. This
@@ -283,10 +267,8 @@
If you downloaded
using a tarball you should have a directory called something like
-``ns-allinone-3.17`` under your ``~/workspace`` directory.
-Type the following:
-
-::
+``ns-allinone-3.20`` under your ``~/workspace`` directory.
+Type the following::
$ ./build.py --enable-examples --enable-tests
@@ -299,11 +281,9 @@
You will see lots of typical compiler output messages displayed as the build
script builds the various pieces you downloaded. Eventually you should see the
-following magic words:
-
-::
+following magic words::
- Waf: Leaving directory `/path/to/workspace/ns-allinone-3.17/ns-3.17/build'
+ Waf: Leaving directory `/path/to/workspace/ns-allinone-3.20/ns-3.20/build'
'build' finished successfully (6m25.032s)
Modules built:
@@ -325,17 +305,15 @@
brite click openflow
visualizer
- Leaving directory `./ns-3.17'
-
-Regarding the portion about modules not built:
+ Leaving directory `./ns-3.20'
-::
+Regarding the portion about modules not built::
Modules not built (see ns-3 tutorial for explanation):
brite click openflow
visualizer
-This just means that some ns-3 modules that have dependencies on
+This just means that some |ns3| modules that have dependencies on
outside libraries may not have been built, or that the configuration
specifically asked not to build them. It does not mean that the
simulator did not build successfully or that it will provide wrong
@@ -351,20 +329,16 @@
$ ./bake.py build
-and you should see something like:
-
-::
+and you should see something like::
>> Building pybindgen-0.16.0.825 - OK
>> Building netanim-3.103 - OK
- >> Building ns-3.17 - OK
+ >> Building ns-3.20 - OK
*Hint: you can also perform both steps, download and build by calling 'bake.py deploy'.*
If there happens to be a failure, please have a look at what the following
-command tells you; it may give a hint as to a missing dependency:
-
-::
+command tells you; it may give a hint as to a missing dependency::
$ ./bake.py show
@@ -390,83 +364,96 @@
your project to build the debug version. Let's tell the project to
make an optimized build. To explain to Waf that it should do optimized
builds that include the examples and tests, you will need to execute the
-following commands,
-
-::
+following commands::
$ ./waf clean
- $ ./waf -d optimized --enable-examples --enable-tests configure
+ $ ./waf --build-profile=optimized --enable-examples --enable-tests configure
This runs Waf out of the local directory (which is provided as a convenience
for you). The first command to clean out the previous build is not
-typically strictly necessary but is good practice; it will remove the
+typically strictly necessary but is good practice (but see `Build Profiles`_,
+below); it will remove the
previously built libraries and object files found in directory ``build/``.
When the project is reconfigured and the build system checks for various
dependencies, you should see
-output that looks similar to the following,
-
-::
+output that looks similar to the following::
- Checking for program g++ : ok /usr/bin/g++
- Checking for program cpp : ok /usr/bin/cpp
- Checking for program ar : ok /usr/bin/ar
- Checking for program ranlib : ok /usr/bin/ranlib
- Checking for g++ : ok
- Checking for program pkg-config : ok /usr/bin/pkg-config
- Checking for -Wno-error=deprecated-declarations support : yes
- Checking for -Wl,--soname=foo support : yes
- Checking for header stdlib.h : ok
- Checking for header signal.h : ok
- Checking for header pthread.h : ok
- Checking for high precision time implementation : 128-bit integer
- Checking for header stdint.h : ok
- Checking for header inttypes.h : ok
- Checking for header sys/inttypes.h : not found
- Checking for library rt : ok
- Checking for header netpacket/packet.h : ok
- Checking for pkg-config flags for GSL : ok
- Checking for header linux/if_tun.h : ok
- Checking for pkg-config flags for GTK_CONFIG_STORE : ok
- Checking for pkg-config flags for LIBXML2 : ok
- Checking for library sqlite3 : ok
- Checking for NSC location : ok ../nsc (guessed)
- Checking for library dl : ok
- Checking for NSC supported architecture x86_64 : ok
- Checking for program python : ok /usr/bin/python
- Checking for Python version >= 2.3 : ok 2.5.2
- Checking for library python2.5 : ok
- Checking for program python2.5-config : ok /usr/bin/python2.5-config
- Checking for header Python.h : ok
- Checking for -fvisibility=hidden support : yes
- Checking for pybindgen location : ok ../pybindgen (guessed)
- Checking for Python module pybindgen : ok
- Checking for pybindgen version : ok 0.10.0.640
- Checking for Python module pygccxml : ok
- Checking for pygccxml version : ok 0.9.5
- Checking for program gccxml : ok /usr/local/bin/gccxml
- Checking for gccxml version : ok 0.9.0
- Checking for program sudo : ok /usr/bin/sudo
- Checking for program hg : ok /usr/bin/hg
- Checking for program valgrind : ok /usr/bin/valgrind
+ Setting top to : .
+ Setting out to : build
+ Checking for 'gcc' (c compiler) : /usr/bin/gcc
+ Checking for cc version : 4.2.1
+ Checking for 'g++' (c++ compiler) : /usr/bin/g++
+ Checking boost includes : 1_46_1
+ Checking boost libs : ok
+ Checking for boost linkage : ok
+ Checking for click location : not found
+ Checking for program pkg-config : /sw/bin/pkg-config
+ Checking for 'gtk+-2.0' >= 2.12 : yes
+ Checking for 'libxml-2.0' >= 2.7 : yes
+ Checking for type uint128_t : not found
+ Checking for type __uint128_t : yes
+ Checking high precision implementation : 128-bit integer (default)
+ Checking for header stdint.h : yes
+ Checking for header inttypes.h : yes
+ Checking for header sys/inttypes.h : not found
+ Checking for header sys/types.h : yes
+ Checking for header sys/stat.h : yes
+ Checking for header dirent.h : yes
+ Checking for header stdlib.h : yes
+ Checking for header signal.h : yes
+ Checking for header pthread.h : yes
+ Checking for header stdint.h : yes
+ Checking for header inttypes.h : yes
+ Checking for header sys/inttypes.h : not found
+ Checking for library rt : not found
+ Checking for header netpacket/packet.h : not found
+ Checking for header sys/ioctl.h : yes
+ Checking for header net/if.h : not found
+ Checking for header net/ethernet.h : yes
+ Checking for header linux/if_tun.h : not found
+ Checking for header netpacket/packet.h : not found
+ Checking for NSC location : not found
+ Checking for 'mpic++' : yes
+ Checking for 'sqlite3' : yes
+ Checking for header linux/if_tun.h : not found
+ Checking for program sudo : /usr/bin/sudo
+ Checking for program valgrind : /sw/bin/valgrind
+ Checking for 'gsl' : yes
+ Checking for compilation flag -Wno-error=deprecated-d... support : ok
+ Checking for compilation flag -Wno-error=deprecated-d... support : ok
+ Checking for compilation flag -fstrict-aliasing... support : ok
+ Checking for compilation flag -fstrict-aliasing... support : ok
+ Checking for compilation flag -Wstrict-aliasing... support : ok
+ Checking for compilation flag -Wstrict-aliasing... support : ok
+ Checking for program doxygen : /usr/local/bin/doxygen
---- Summary of optional NS-3 features:
- Threading Primitives : enabled
- Real Time Simulator : enabled
- Emulated Net Device : enabled
- GNU Scientific Library (GSL) : enabled
- Tap Bridge : enabled
+ Build profile : debug
+ Build directory : build
+ Python Bindings : enabled
+ BRITE Integration : not enabled (BRITE not enabled (see option --with-brite))
+ NS-3 Click Integration : not enabled (nsclick not enabled (see option --with-nsclick))
GtkConfigStore : enabled
XmlIo : enabled
+ Threading Primitives : enabled
+ Real Time Simulator : enabled (librt is not available)
+ Emulated Net Device : enabled ( include not detected)
+ File descriptor NetDevice : enabled
+ Tap FdNetDevice : not enabled (needs linux/if_tun.h)
+ Emulation FdNetDevice : not enabled (needs netpacket/packet.h)
+ PlanetLab FdNetDevice : not enabled (PlanetLab operating system not detected (see option --force-planetlab))
+ Network Simulation Cradle : not enabled (NSC not found (see option --with-nsc))
+ MPI Support : enabled
+ NS-3 OpenFlow Integration : not enabled (Required boost libraries not found, missing: system, signals, filesystem)
SQlite stats data output : enabled
- Network Simulation Cradle : enabled
- Python Bindings : enabled
- Python API Scanning Support : enabled
+ Tap Bridge : not enabled ( include not detected)
+ PyViz visualizer : enabled
Use sudo to set suid bit : not enabled (option --enable-sudo not selected)
Build tests : enabled
Build examples : enabled
- Static build : not enabled (option --enable-static not selected)
- 'configure' finished successfully (2.870s)
+ GNU Scientific Library (GSL) : enabled
+ 'configure' finished successfully (1.944s)
-Note the last part of the above output. Some ns-3 options are not enabled by
+Note the last part of the above output. Some |ns3| options are not enabled by
default or require support from the underlying system to work properly.
For instance, to enable XmlTo, the library libxml-2.0 must be found on the
system. If this library were not found, the corresponding |ns3| feature
@@ -479,7 +466,7 @@
::
$ ./waf clean
- $ ./waf -d debug --enable-examples --enable-tests configure
+ $ ./waf --build-profile=debug --enable-examples --enable-tests configure
The build system is now configured and you can build the debug versions of
the |ns3| programs by simply typing
@@ -492,72 +479,146 @@
but now you know how to change the configuration and build optimized code.
Here are a few more introductory tips about Waf.
-Some waf commands are meaningful during the build phase and some commands are valid
-in the configuration phase. For example, if you wanted to use the emulation
+
+Configure vs. Build
+===================
+
+Some Waf commands are only meaningful during the configure phase and some commands are valid
+in the build phase. For example, if you wanted to use the emulation
features of |ns3|, you might want to enable setting the suid bit using
sudo as described above. This turns out to be a configuration-time command, and so
-you could reconfigure using the following command that also includes the examples and tests
+you could reconfigure using the following command that also includes the examples and tests.
::
- $ ./waf configure -d debug --enable-sudo --enable-examples --enable-tests
+ $ ./waf configure --enable-sudo --enable-examples --enable-tests
-If you do this, waf will have run sudo to change the socket creator programs of the
-emulation code to run as root. There are many other configure- and build-time options
-available in waf. To explore these options, type:
+If you do this, Waf will have run sudo to change the socket creator programs of the
+emulation code to run as root.
-::
+There are many other configure- and build-time options
+available in Waf. To explore these options, type::
$ ./waf --help
We'll use some of the testing-related commands in the next section.
-Finally, as an aside, it is possible to specify that waf builds the
-project in
-a directory different than the default ``build/`` directory by passing
-the ``-o`` option to configure; e.g.
+Build Profiles
+==============
-::
+We already saw how you can configure Waf for ``debug`` or ``optimized`` builds::
- $ ./waf configure -d debug -o build/debug --enable-examples --enable-tests
+ $ ./waf --build-profile=debug
-This allows users to work with multiple builds rather than always
-overwriting the last build.
+There is also an intermediate build profile, ``release``. ``-d`` is a
+synonym for ``--build-profile``.
-In the examples above, waf uses GCC C++ compiler, command ``g++``, for
-building ns-3. However, it's possible to change C++ compiler used by waf.
-Say one wants to use Clang C++ compiler, command ``clang++``; it's done by
+By default Waf puts the build artifacts in the ``build`` directory.
+You can specify a different output directory with the ``--out``
+option, e.g.
::
- $ CXX="clang++" ./waf configure
+ $ ./waf configure --out=foo
+
+Combining this with build profiles lets you switch between the different
+compile options in a clean way::
+
+ $ ./waf configure --build-profile=debug --out=build/debug
$ ./waf build
+ ...
+ $ ./waf configure --build-profile=optimized --out=build/optimized
+ $ ./waf build
+ ...
-One can also set up waf to do distributed compilation with ``distcc`` in
-a similar way:
+This allows you to work with multiple builds rather than always
+overwriting the last build. When you switch, Waf will only compile
+what it has to, instead of recompiling everything.
+
+When you do switch build profiles like this, you have to be careful
+to give the same configuration parameters each time. It may be convenient
+to define some environment variables to help you avoid mistakes::
+
+ $ export NS3CONFIG="--enable-examples --enable-tests"
+ $ export NS3DEBUG="--build-profile=debug --out=build/debug"
+ $ export NS3OPT=="--build-profile=optimized --out=build/optimized"
+
+ $ ./waf configure $NS3CONFIG $NS3DEBUG
+ $ ./waf build
+ ...
+ $ ./waf configure $NS3CONFIG $NS3OPT
+ $ ./waf build
+
+Compilers
+=========
+
+In the examples above, Waf uses the GCC C++ compiler, ``g++``, for
+building |ns3|. However, it's possible to change the C++ compiler used by Waf
+by defining the ``CXX`` environment variable.
+For example, to use the Clang C++ compiler, ``clang++``,
::
+ $ CXX="clang++" ./waf configure
+ $ ./waf build
+
+One can also set up Waf to do distributed compilation with ``distcc`` in
+a similar way::
+
$ CXX="distcc g++" ./waf configure
$ ./waf build
-More info on distcc and distributed compilation can be found on it's
+More info on ``distcc`` and distributed compilation can be found on it's
`project page
`_
under Documentation section.
-Testing ns-3
-************
+One Waf
+=======
-You can run the unit tests of the |ns3| distribution by running the
-"./test.py -c core" script,
+There is only one Waf script, at the top level of the |ns3| source tree.
+As you work, you may find yourself spending a lot of time in ``scratch/``,
+or deep in ``src/...``, and needing to invoke Waf. You could just
+remember where you are, and invoke Waf like this::
-::
+ $ ../../../waf ...
+
+but that get's tedious, and error prone, and there are better solutions.
+
+If you have the full |ns3| repository this little gem is a start::
+
+ $ cd $(hg root) && ./waf ...
+
+Even better is to define this as a shell function::
+
+ $ function waff { cd $(hg root) && ./waf $* ; }
+
+ $ waff build
+
+If you only have the tarball, an environment variable can help::
+
+ $ export NS3DIR="$PWD"
+ $ function waff { cd $NS3DIR && ./waf $* ; }
+
+ $ cd scratch
+ $ waff build
+
+It might be tempting in a module directory to add a trivial ``waf``
+script along the lines of ``exec ../../waf``. Please don't. It's
+confusing to new-comers, and when done poorly it leads to subtle build
+errors. The solutions above are the way to go.
+
+
+Testing |ns3|
+*************
+
+You can run the unit tests of the |ns3| distribution by running the
+``./test.py -c core`` script::
$ ./test.py -c core
-These tests are run in parallel by waf. You should eventually
-see a report saying that,
+These tests are run in parallel by Waf. You should eventually
+see a report saying that
::
@@ -565,9 +626,8 @@
This is the important message.
-You will also see output from the test runner and the output will actually look something like,
-
-::
+You will also see the summary output from Waf and the test runner
+executing each test, which will actually look something like::
Waf: Entering directory `/path/to/workspace/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/path/to/workspace/ns-3-allinone/ns-3-dev/build'
@@ -590,34 +650,26 @@
PASS: TestSuite ns3-wifi-interference
PASS: TestSuite histogram
- PASS: TestSuite sample
- PASS: TestSuite ipv4-address-helper
- PASS: TestSuite devices-wifi
- PASS: TestSuite propagation-loss-model
...
- PASS: TestSuite attributes
- PASS: TestSuite config
- PASS: TestSuite global-value
- PASS: TestSuite command-line
- PASS: TestSuite basic-random-number
PASS: TestSuite object
PASS: TestSuite random-number-generators
92 of 92 tests passed (92 passed, 0 failed, 0 crashed, 0 valgrind errors)
This command is typically run by users to quickly verify that an
-|ns3| distribution has built correctly.
+|ns3| distribution has built correctly. (Note the order of the ``PASS: ...``
+lines can vary, which is okay. What's important is that the summary line at
+the end report that all tests passed; none failed or crashed.)
Running a Script
****************
+
We typically run scripts under the control of Waf. This allows the build
system to ensure that the shared library paths are set correctly and that
the libraries are available at run time. To run a program, simply use the
``--run`` option in Waf. Let's run the |ns3| equivalent of the
-ubiquitous hello world program by typing the following:
-
-::
+ubiquitous hello world program by typing the following::
$ ./waf --run hello-simulator
@@ -629,28 +681,26 @@
Hello Simulator
-*Congratulations. You are now an ns-3 user.*
+Congratulations! You are now an ns-3 user!
-*What do I do if I don't see the output?*
+**What do I do if I don't see the output?**
-If you see ``waf`` messages indicating that the build was
+If you see Waf messages indicating that the build was
completed successfully, but do not see the "Hello Simulator" output,
-chances are that you have switched your build mode to "optimized" in
-the "Building with Waf" section, but have missed the change back to
-"debug" mode. All of the console output used in this tutorial uses a
+chances are that you have switched your build mode to ``optimized`` in
+the `Building with Waf`_ section, but have missed the change back to
+``debug`` mode. All of the console output used in this tutorial uses a
special |ns3| logging component that is useful for printing
user messages to the console. Output from this component is
automatically disabled when you compile optimized code -- it is
"optimized out." If you don't see the "Hello Simulator" output,
-type the following,
+type the following::
-::
+ $ ./waf configure --build-profile=debug --enable-examples --enable-tests
- $ ./waf configure -d debug --enable-examples --enable-tests
-
-to tell ``waf`` to build the debug versions of the |ns3|
+to tell Waf to build the debug versions of the |ns3|
programs that includes the examples and tests. You must still build
-the actual debug version of the code by typing,
+the actual debug version of the code by typing
::
@@ -659,7 +709,80 @@
Now, if you run the ``hello-simulator`` program, you should see the
expected output.
-If you want to run programs under another tool such as gdb or valgrind,
-see this `wiki entry
-`_.
+Program Arguments
++++++++++++++++++
+
+To feed command line arguments to an |ns3| program use this pattern::
+
+ $ ./waf --run --command-template="%s "
+
+Substitute your program name for ````, and the arguments
+for ````. The ``--command-template`` argument to Waf is
+basically a recipe for constructing the actual command line Waf should use
+to execute the program. Waf checks that the build is complete,
+sets the shared library paths, then invokes the executable
+using the provided command line template,
+inserting the program name for the ``%s`` placeholder.
+(I admit this is a bit awkward, but that's the way it is. Patches welcome!)
+
+Another particularly useful example is to run the ``mytest`` test suite
+by itself. Above, we used the ``./test.py`` script to run a whole slew of
+tests in parallel, by repeatedly invoking the real testing program,
+``test-runner``. To invoke ``test-runner`` directly for a single test::
+
+ $ ./waf --run test-runner --command-template="% --suite=mytest --verbose"
+
+This passes the arguments to the ``test-runner`` program. To print the
+available ``test-runner`` options::
+
+ $ ./waf --run test-runner --command-template="% --help"
+
+Debugging
++++++++++
+
+To run |ns3| programs under the control of another utility, such as
+a debugger (*e.g.* ``gdb``) or memory checker (*e.g.* ``valgrind``),
+you use a similar ``--command-template="..."`` form.
+
+For example, to run your |ns3| program ``mysim`` with the arguments
+```` under the ``gdb`` debugger::
+
+ $ ./waf --run=hello-simulator --command-template="gdb %s --args "
+
+Notice that the |ns3| program name goes with the ``--run`` argument,
+and the control utility (here ``gdb``) is the first token
+in the ``--commmand-template`` argument. The ``--args`` tells ``gdb``
+that the remainder of the command line belongs to the "inferior" program.
+(Some ``gdb``'s don't understand the ``--args`` feature. In this case,
+omit the program arguments from the ``--command-template``,
+and use the ``gdb`` command ``set args``.)
+
+We can combine this recipe and the previous one to run a test under the
+debugger::
+
+ $ ./waf --run test-runner --command-template="gdb %s --args --suite=mytest --verbose"
+
+Working Directory
++++++++++++++++++
+Waf needs to run from it's location at the top of the |ns3| tree.
+This becomes the working directory where output files will be written.
+But what if you want to keep those ouf to the |ns3| source tree? Use
+the ``--cwd`` argument::
+
+ $ ./waf --cwd=...
+
+It may be more convenient to start with your working directory where
+you want the output files, in which case a little indirection can help::
+
+ $ function waff {
+ CWD="$PWD"
+ cd $NS3DIR >/dev/null
+ ./waf --cwd="$CWD" $*
+ cd - >/dev/null
+ }
+
+This embellishment of the previous version saves the current working directory,
+``cd``'s to the Waf directory, then instructs Waf to change the working
+directory *back* to the saved current working directory before running the
+program.
diff -Naur ns-3.19/doc/tutorial-pt-br/source/conf.py ns-3.20/doc/tutorial-pt-br/source/conf.py
--- ns-3.19/doc/tutorial-pt-br/source/conf.py 2014-06-17 10:34:00.331637488 -0700
+++ ns-3.20/doc/tutorial-pt-br/source/conf.py 2014-06-17 10:33:13.678997621 -0700
@@ -42,7 +42,7 @@
# General information about the project.
project = u'ns-3'
-copyright = u'2008-13, ns-3 project'
+copyright = u'2008-11, ns-3 project'
# The version info for the project you're documenting, acts as replacement for
@@ -50,9 +50,9 @@
# built documents.
#
# The short X.Y version.
-version = 'ns-3.19'
+version = 'ns-3.20'
# The full version, including alpha/beta/rc tags.
-release = 'ns-3.19'
+release = 'ns-3.20'
# The language for content autogenerated by . Refer to babel documentation
# for a list of supported languages.
diff -Naur ns-3.19/examples/energy/waf ns-3.20/examples/energy/waf
--- ns-3.19/examples/energy/waf 2014-06-17 10:34:00.351637333 -0700
+++ ns-3.20/examples/energy/waf 1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/error-model/waf ns-3.20/examples/error-model/waf
--- ns-3.19/examples/error-model/waf 2014-06-17 10:34:00.352637325 -0700
+++ ns-3.20/examples/error-model/waf 1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/ipv6/waf ns-3.20/examples/ipv6/waf
--- ns-3.19/examples/ipv6/waf 2014-06-17 10:34:00.356637295 -0700
+++ ns-3.20/examples/ipv6/waf 1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/ipv6/wscript ns-3.20/examples/ipv6/wscript
--- ns-3.19/examples/ipv6/wscript 2014-06-17 10:34:00.357637287 -0700
+++ ns-3.20/examples/ipv6/wscript 2014-06-17 10:33:13.704997420 -0700
@@ -25,3 +25,6 @@
obj = bld.create_ns3_program('loose-routing-ipv6', ['csma', 'internet'])
obj.source = 'loose-routing-ipv6.cc'
+ obj = bld.create_ns3_program('wsn-ping6', ['lr-wpan', 'internet', 'sixlowpan', 'mobility'])
+ obj.source = 'wsn-ping6.cc'
+
diff -Naur ns-3.19/examples/ipv6/wsn-ping6.cc ns-3.20/examples/ipv6/wsn-ping6.cc
--- ns-3.19/examples/ipv6/wsn-ping6.cc 1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/examples/ipv6/wsn-ping6.cc 2014-06-17 10:33:13.704997420 -0700
@@ -0,0 +1,141 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' di Firenze
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Author: Tommaso Pecorella
+ */
+
+// Network topology
+//
+// n0 n1
+// | |
+// =================
+// WSN (802.15.4)
+//
+// - ICMPv6 echo request flows from n0 to n1 and back with ICMPv6 echo reply
+// - DropTail queues
+// - Tracing of queues and packet receptions to file "wsn-ping6.tr"
+//
+// This example is based on the "ping6.cc" example.
+
+#include
+#include "ns3/core-module.h"
+#include "ns3/internet-module.h"
+#include "ns3/sixlowpan-module.h"
+#include "ns3/lr-wpan-module.h"
+#include "ns3/applications-module.h"
+#include "ns3/mobility-module.h"
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("Ping6WsnExample");
+
+int main (int argc, char **argv)
+{
+ bool verbose = false;
+
+ CommandLine cmd;
+ cmd.AddValue ("verbose", "turn on log components", verbose);
+ cmd.Parse (argc, argv);
+
+ if (verbose)
+ {
+ LogComponentEnable ("Ping6WsnExample", LOG_LEVEL_INFO);
+ LogComponentEnable ("Ipv6EndPointDemux", LOG_LEVEL_ALL);
+ LogComponentEnable ("Ipv6L3Protocol", LOG_LEVEL_ALL);
+ LogComponentEnable ("Ipv6StaticRouting", LOG_LEVEL_ALL);
+ LogComponentEnable ("Ipv6ListRouting", LOG_LEVEL_ALL);
+ LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
+ LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_ALL);
+ LogComponentEnable ("Ping6Application", LOG_LEVEL_ALL);
+ LogComponentEnable ("NdiscCache", LOG_LEVEL_ALL);
+ LogComponentEnable ("SixLowPanNetDevice", LOG_LEVEL_ALL);
+ }
+
+ NS_LOG_INFO ("Create nodes.");
+ NodeContainer nodes;
+ nodes.Create (2);
+
+ // Set seed for random numbers
+ SeedManager::SetSeed (167);
+
+ // Install mobility
+ MobilityHelper mobility;
+ mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+
+ Ptr nodesPositionAlloc = CreateObject ();
+ nodesPositionAlloc->Add (Vector (0.0, 0.0, 0.0));
+ nodesPositionAlloc->Add (Vector (50.0, 0.0, 0.0));
+ mobility.SetPositionAllocator (nodesPositionAlloc);
+ mobility.Install (nodes);
+
+ NS_LOG_INFO ("Create channels.");
+ LrWpanHelper lrWpanHelper;
+ // Add and install the LrWpanNetDevice for each node
+ // lrWpanHelper.EnableLogComponents();
+ NetDeviceContainer devContainer = lrWpanHelper.Install(nodes);
+ lrWpanHelper.AssociateToPan (devContainer, 10);
+
+ std::cout << "Created " << devContainer.GetN() << " devices" << std::endl;
+ std::cout << "There are " << nodes.GetN() << " nodes" << std::endl;
+
+ /* Install IPv4/IPv6 stack */
+ NS_LOG_INFO ("Install Internet stack.");
+ InternetStackHelper internetv6;
+ internetv6.SetIpv4StackInstall (false);
+ internetv6.Install (nodes);
+
+ // Install 6LowPan layer
+ NS_LOG_INFO ("Install 6LoWPAN.");
+ SixLowPanHelper sixlowpan;
+ NetDeviceContainer six1 = sixlowpan.Install (devContainer);
+
+ NS_LOG_INFO ("Assign addresses.");
+ Ipv6AddressHelper ipv6;
+ ipv6.SetBase (Ipv6Address ("2001:1::"), Ipv6Prefix (64));
+ Ipv6InterfaceContainer i = ipv6.Assign (six1);
+
+ NS_LOG_INFO ("Create Applications.");
+
+ /* Create a Ping6 application to send ICMPv6 echo request from node zero to
+ * all-nodes (ff02::1).
+ */
+ uint32_t packetSize = 10;
+ uint32_t maxPacketCount = 5;
+ Time interPacketInterval = Seconds (1.);
+ Ping6Helper ping6;
+
+ ping6.SetLocal (i.GetAddress (0, 1));
+ ping6.SetRemote (i.GetAddress (1, 1));
+ // ping6.SetRemote (Ipv6Address::GetAllNodesMulticast ());
+
+ ping6.SetAttribute ("MaxPackets", UintegerValue (maxPacketCount));
+ ping6.SetAttribute ("Interval", TimeValue (interPacketInterval));
+ ping6.SetAttribute ("PacketSize", UintegerValue (packetSize));
+ ApplicationContainer apps = ping6.Install (nodes.Get (0));
+ apps.Start (Seconds (2.0));
+ apps.Stop (Seconds (10.0));
+
+ AsciiTraceHelper ascii;
+ lrWpanHelper.EnableAsciiAll (ascii.CreateFileStream ("ping6wsn.tr"));
+ lrWpanHelper.EnablePcapAll (std::string ("ping6wsn"), true);
+
+ NS_LOG_INFO ("Run Simulation.");
+ Simulator::Run ();
+ Simulator::Destroy ();
+ NS_LOG_INFO ("Done.");
+}
+
diff -Naur ns-3.19/examples/naming/waf ns-3.20/examples/naming/waf
--- ns-3.19/examples/naming/waf 2014-06-17 10:34:00.359637271 -0700
+++ ns-3.20/examples/naming/waf 1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/realtime/waf ns-3.20/examples/realtime/waf
--- ns-3.19/examples/realtime/waf 2014-06-17 10:34:00.361637256 -0700
+++ ns-3.20/examples/realtime/waf 1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/routing/manet-routing-compare.cc ns-3.20/examples/routing/manet-routing-compare.cc
--- ns-3.19/examples/routing/manet-routing-compare.cc 2014-06-17 10:34:00.378637125 -0700
+++ ns-3.20/examples/routing/manet-routing-compare.cc 2014-06-17 10:33:13.710997374 -0700
@@ -343,7 +343,7 @@
onoff1.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1.0]"));
onoff1.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0.0]"));
- for (int i = 0; i <= nSinks - 1; i++)
+ for (int i = 0; i < nSinks; i++)
{
Ptr sink = SetupPacketReceive (adhocInterfaces.GetAddress (i), adhocNodes.Get (i));
diff -Naur ns-3.19/examples/routing/ripng-simple-network.cc ns-3.20/examples/routing/ripng-simple-network.cc
--- ns-3.19/examples/routing/ripng-simple-network.cc 1969-12-31 16:00:00.000000000 -0800
+++ ns-3.20/examples/routing/ripng-simple-network.cc 2014-06-17 10:33:13.711997366 -0700
@@ -0,0 +1,268 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014 Universita' di Firenze, Italy
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Author: Tommaso Pecorella
+ */
+
+// Network topology
+//
+// SRC
+// |<=== source network
+// A-----B
+// \ / \ all networks have cost 1, except
+// \ / | for the direct link from C to D, which
+// C / has cost 10
+// | /
+// |/
+// D
+// |<=== target network
+// DST
+//
+//
+// A, B, C and D are RIPng routers.
+// A and D are configured with static addresses.
+// SRC and DST will exchange packets.
+//
+// After about 3 seconds, the topology is built, and Echo Reply will be received.
+// After 40 seconds, the link between B and D will break, causing a route failure.
+// After 44 seconds from the failure, the routers will recovery from the failure.
+// Split Horizoning should affect the recovery time, but it is not. See the manual
+// for an explanation of this effect.
+//
+// If "showPings" is enabled, the user will see:
+// 1) if the ping has been acknowledged
+// 2) if a Destination Unreachable has been received by the sender
+// 3) nothing, when the Echo Request has been received by the destination but
+// the Echo Reply is unable to reach the sender.
+// Examining the .pcap files with Wireshark can confirm this effect.
+
+
+#include
+#include "ns3/core-module.h"
+#include "ns3/internet-module.h"
+#include "ns3/csma-module.h"
+#include "ns3/applications-module.h"
+#include "ns3/ipv6-static-routing-helper.h"
+#include "ns3/ipv6-routing-table-entry.h"
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("RipNgSimpleRouting");
+
+void TearDownLink (Ptr nodeA, Ptr nodeB, uint32_t interfaceA, uint32_t interfaceB)
+{
+ nodeA->GetObject ()->SetDown (interfaceA);
+ nodeB->GetObject ()->SetDown (interfaceB);
+}
+
+int main (int argc, char **argv)
+{
+ bool verbose = false;
+ bool printRoutingTables = false;
+ bool showPings = false;
+ std::string SplitHorizon ("PoisonReverse");
+
+ CommandLine cmd;
+ cmd.AddValue ("verbose", "turn on log components", verbose);
+ cmd.AddValue ("printRoutingTables", "Print routing tables at 30, 60 and 90 seconds", printRoutingTables);
+ cmd.AddValue ("showPings", "Show Ping6 reception", showPings);
+ cmd.AddValue ("splitHorizonStrategy", "Split Horizon strategy to use (NoSplitHorizon, SplitHorizon, PoisonReverse)", SplitHorizon);
+ cmd.Parse (argc, argv);
+
+ if (verbose)
+ {
+ LogComponentEnable ("RipNgSimpleRouting", LOG_LEVEL_INFO);
+ LogComponentEnable ("RipNg", LOG_LEVEL_ALL);
+ LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_INFO);
+ LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
+ LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_ALL);
+ LogComponentEnable ("NdiscCache", LOG_LEVEL_ALL);
+ LogComponentEnable ("Ping6Application", LOG_LEVEL_ALL);
+ }
+
+ if (showPings)
+ {
+ LogComponentEnable ("Ping6Application", LOG_LEVEL_INFO);
+ }
+
+ if (SplitHorizon == "NoSplitHorizon")
+ {
+ Config::SetDefault ("ns3::RipNg::SplitHorizon", EnumValue (RipNg::NO_SPLIT_HORIZON));
+ }
+ else if (SplitHorizon == "SplitHorizon")
+ {
+ Config::SetDefault ("ns3::RipNg::SplitHorizon", EnumValue (RipNg::SPLIT_HORIZON));
+ }
+ else
+ {
+ Config::SetDefault ("ns3::RipNg::SplitHorizon", EnumValue (RipNg::POISON_REVERSE));
+ }
+
+ NS_LOG_INFO ("Create nodes.");
+ Ptr src = CreateObject ();
+ Names::Add ("SrcNode", src);
+ Ptr dst = CreateObject ();
+ Names::Add ("DstNode", dst);
+ Ptr a = CreateObject ();
+ Names::Add ("RouterA", a);
+ Ptr b = CreateObject ();
+ Names::Add ("RouterB", b);
+ Ptr c = CreateObject ();
+ Names::Add ("RouterC", c);
+ Ptr d = CreateObject ();
+ Names::Add ("RouterD", d);
+ NodeContainer net1 (src, a);
+ NodeContainer net2 (a, b);
+ NodeContainer net3 (a, c);
+ NodeContainer net4 (b, c);
+ NodeContainer net5 (c, d);
+ NodeContainer net6 (b, d);
+ NodeContainer net7 (d, dst);
+ NodeContainer routers (a, b, c, d);
+ NodeContainer nodes (src, dst);
+
+
+ NS_LOG_INFO ("Create channels.");
+ CsmaHelper csma;
+ csma.SetChannelAttribute ("DataRate", DataRateValue (5000000));
+ csma.SetChannelAttribute ("Delay", TimeValue (MilliSeconds (2)));
+ NetDeviceContainer ndc1 = csma.Install (net1);
+ NetDeviceContainer ndc2 = csma.Install (net2);
+ NetDeviceContainer ndc3 = csma.Install (net3);
+ NetDeviceContainer ndc4 = csma.Install (net4);
+ NetDeviceContainer ndc5 = csma.Install (net5);
+ NetDeviceContainer ndc6 = csma.Install (net6);
+ NetDeviceContainer ndc7 = csma.Install (net7);
+
+ NS_LOG_INFO ("Create IPv6 and routing");
+ RipNgHelper ripNgRouting;
+
+ // Rule of thumb:
+ // Interfaces are added sequentially, starting from 0
+ // However, interface 0 is always the loopback...
+ ripNgRouting.ExcludeInterface (a, 1);
+ ripNgRouting.ExcludeInterface (d, 3);
+
+ ripNgRouting.SetInterfaceMetric (c, 3, 10);
+ ripNgRouting.SetInterfaceMetric (d, 1, 10);
+
+ Ipv6ListRoutingHelper listRH;
+ listRH.Add (ripNgRouting, 0);
+
+ InternetStackHelper internetv6;
+ internetv6.SetIpv4StackInstall (false);
+ internetv6.SetRoutingHelper (listRH);
+ internetv6.Install (routers);
+
+ InternetStackHelper internetv6Nodes;
+ internetv6Nodes.SetIpv4StackInstall (false);
+ internetv6Nodes.Install (nodes);
+
+ // Assign addresses.
+ // The source and destination networks have global addresses
+ // The "core" network just needs link-local addresses for routing.
+ // We assign global addresses to the routers as well to receive
+ // ICMPv6 errors.
+ NS_LOG_INFO ("Assign IPv6 Addresses.");
+ Ipv6AddressHelper ipv6;
+
+ ipv6.SetBase (Ipv6Address ("2001:1::"), Ipv6Prefix (64));
+ Ipv6InterfaceContainer iic1 = ipv6.Assign (ndc1);
+ iic1.SetForwarding (1, true);
+ iic1.SetDefaultRouteInAllNodes (1);
+
+ ipv6.SetBase (Ipv6Address ("2001:0:1::"), Ipv6Prefix (64));
+ Ipv6InterfaceContainer iic2 = ipv6.Assign (ndc2);
+ iic2.SetForwarding (0, true);
+ iic2.SetForwarding (1, true);
+
+ ipv6.SetBase (Ipv6Address ("2001:0:2::"), Ipv6Prefix (64));
+ Ipv6InterfaceContainer iic3 = ipv6.Assign (ndc3);
+ iic3.SetForwarding (0, true);
+ iic3.SetForwarding (1, true);
+
+ ipv6.SetBase (Ipv6Address ("2001:0:3::"), Ipv6Prefix (64));
+ Ipv6InterfaceContainer iic4 = ipv6.Assign (ndc4);
+ iic4.SetForwarding (0, true);
+ iic4.SetForwarding (1, true);
+
+ ipv6.SetBase (Ipv6Address ("2001:0:4::"), Ipv6Prefix (64));
+ Ipv6InterfaceContainer iic5 = ipv6.Assign (ndc5);
+ iic5.SetForwarding (0, true);
+ iic5.SetForwarding (1, true);
+
+ ipv6.SetBase (Ipv6Address ("2001:0:5::"), Ipv6Prefix (64));
+ Ipv6InterfaceContainer iic6 = ipv6.Assign (ndc6);
+ iic6.SetForwarding (0, true);
+ iic6.SetForwarding (1, true);
+
+ ipv6.SetBase (Ipv6Address ("2001:2::"), Ipv6Prefix (64));
+ Ipv6InterfaceContainer iic7 = ipv6.Assign (ndc7);
+ iic7.SetForwarding (0, true);
+ iic7.SetDefaultRouteInAllNodes (0);
+
+ if (printRoutingTables)
+ {
+ RipNgHelper routingHelper;
+
+ Ptr routingStream = Create (&std::cout);
+
+ routingHelper.PrintRoutingTableAt (Seconds (30.0), a, routingStream);
+ routingHelper.PrintRoutingTableAt (Seconds (30.0), b, routingStream);
+ routingHelper.PrintRoutingTableAt (Seconds (30.0), c, routingStream);
+ routingHelper.PrintRoutingTableAt (Seconds (30.0), d, routingStream);
+
+ routingHelper.PrintRoutingTableAt (Seconds (60.0), a, routingStream);
+ routingHelper.PrintRoutingTableAt (Seconds (60.0), b, routingStream);
+ routingHelper.PrintRoutingTableAt (Seconds (60.0), c, routingStream);
+ routingHelper.PrintRoutingTableAt (Seconds (60.0), d, routingStream);
+
+ routingHelper.PrintRoutingTableAt (Seconds (90.0), a, routingStream);
+ routingHelper.PrintRoutingTableAt (Seconds (90.0), b, routingStream);
+ routingHelper.PrintRoutingTableAt (Seconds (90.0), c, routingStream);
+ routingHelper.PrintRoutingTableAt (Seconds (90.0), d, routingStream);
+ }
+
+ NS_LOG_INFO ("Create Applications.");
+ uint32_t packetSize = 1024;
+ uint32_t maxPacketCount = 100;
+ Time interPacketInterval = Seconds (1.0);
+ Ping6Helper ping6;
+
+ ping6.SetLocal (iic1.GetAddress (0, 1));
+ ping6.SetRemote (iic7.GetAddress (1, 1));
+ ping6.SetAttribute ("MaxPackets", UintegerValue (maxPacketCount));
+ ping6.SetAttribute ("Interval", TimeValue (interPacketInterval));
+ ping6.SetAttribute ("PacketSize", UintegerValue (packetSize));
+ ApplicationContainer apps = ping6.Install (src);
+ apps.Start (Seconds (1.0));
+ apps.Stop (Seconds (110.0));
+
+ AsciiTraceHelper ascii;
+ csma.EnableAsciiAll (ascii.CreateFileStream ("ripng-simple-routing.tr"));
+ csma.EnablePcapAll ("ripng-simple-routing", true);
+
+ Simulator::Schedule (Seconds (40), &TearDownLink, b, d, 3, 2);
+
+ /* Now, do the actual simulation. */
+ NS_LOG_INFO ("Run Simulation.");
+ Simulator::Stop (Seconds (120));
+ Simulator::Run ();
+ Simulator::Destroy ();
+ NS_LOG_INFO ("Done.");
+}
+
diff -Naur ns-3.19/examples/routing/simple-global-routing.cc ns-3.20/examples/routing/simple-global-routing.cc
--- ns-3.19/examples/routing/simple-global-routing.cc 2014-06-17 10:34:00.379637117 -0700
+++ ns-3.20/examples/routing/simple-global-routing.cc 2014-06-17 10:33:13.712997359 -0700
@@ -149,11 +149,10 @@
p2p.EnablePcapAll ("simple-global-routing");
// Flow Monitor
- Ptr flowmon;
FlowMonitorHelper flowmonHelper;
if (enableFlowMonitor)
{
- flowmon = flowmonHelper.InstallAll ();
+ flowmonHelper.InstallAll ();
}
NS_LOG_INFO ("Run Simulation.");
@@ -163,7 +162,7 @@
if (enableFlowMonitor)
{
- flowmon->SerializeToXmlFile ("simple-global-routing.flowmon", false, false);
+ flowmonHelper.SerializeToXmlFile ("simple-global-routing.flowmon", false, false);
}
Simulator::Destroy ();
diff -Naur ns-3.19/examples/routing/waf ns-3.20/examples/routing/waf
--- ns-3.19/examples/routing/waf 2014-06-17 10:34:00.381637101 -0700
+++ ns-3.20/examples/routing/waf 1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/routing/wscript ns-3.20/examples/routing/wscript
--- ns-3.19/examples/routing/wscript 2014-06-17 10:34:00.381637101 -0700
+++ ns-3.20/examples/routing/wscript 2014-06-17 10:33:13.714997343 -0700
@@ -37,4 +37,8 @@
['wifi', 'dsr', 'dsdv', 'aodv', 'olsr', 'internet', 'applications'])
obj.source = 'manet-routing-compare.cc'
+ obj = bld.create_ns3_program('ripng-simple-network',
+ ['csma', 'internet', 'applications'])
+ obj.source = 'ripng-simple-network.cc'
+
bld.register_ns3_script('simple-routing-ping6.py', ['csma', 'internet', 'applications'])
diff -Naur ns-3.19/examples/socket/waf ns-3.20/examples/socket/waf
--- ns-3.19/examples/socket/waf 2014-06-17 10:34:00.383637086 -0700
+++ ns-3.20/examples/socket/waf 1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/tcp/tcp-variants-comparison.cc ns-3.20/examples/tcp/tcp-variants-comparison.cc
--- ns-3.19/examples/tcp/tcp-variants-comparison.cc 2014-06-17 10:34:00.390637032 -0700
+++ ns-3.20/examples/tcp/tcp-variants-comparison.cc 2014-06-17 10:33:13.723997274 -0700
@@ -339,11 +339,10 @@
LocalLink.EnablePcapAll("TcpVariantsComparison", true);
// Flow monitor
- Ptr flowMonitor;
FlowMonitorHelper flowHelper;
if (flow_monitor)
{
- flowMonitor = flowHelper.InstallAll();
+ flowHelper.InstallAll();
}
Simulator::Stop (Seconds(stop_time));
@@ -351,7 +350,7 @@
if (flow_monitor)
{
- flowMonitor->SerializeToXmlFile("TcpVariantsComparison.flowmonitor", true, true);
+ flowHelper.SerializeToXmlFile("TcpVariantsComparison.flowmonitor", true, true);
}
Simulator::Destroy ();
diff -Naur ns-3.19/examples/tcp/waf ns-3.20/examples/tcp/waf
--- ns-3.19/examples/tcp/waf 2014-06-17 10:34:00.391637024 -0700
+++ ns-3.20/examples/tcp/waf 1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/tutorial/waf ns-3.20/examples/tutorial/waf
--- ns-3.19/examples/tutorial/waf 2014-06-17 10:34:00.395636994 -0700
+++ ns-3.20/examples/tutorial/waf 1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/udp/waf ns-3.20/examples/udp/waf
--- ns-3.19/examples/udp/waf 2014-06-17 10:34:00.398636970 -0700
+++ ns-3.20/examples/udp/waf 1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/udp-client-server/waf ns-3.20/examples/udp-client-server/waf
--- ns-3.19/examples/udp-client-server/waf 2014-06-17 10:34:00.397636978 -0700
+++ ns-3.20/examples/udp-client-server/waf 1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/waf ns-3.20/examples/waf
--- ns-3.19/examples/waf 2014-06-17 10:34:00.398636970 -0700
+++ ns-3.20/examples/waf 1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../waf "$@"
diff -Naur ns-3.19/examples/wireless/mixed-wireless.cc ns-3.20/examples/wireless/mixed-wireless.cc
--- ns-3.19/examples/wireless/mixed-wireless.cc 2014-06-17 10:34:00.400636955 -0700
+++ ns-3.20/examples/wireless/mixed-wireless.cc 2014-06-17 10:33:13.731997212 -0700
@@ -69,6 +69,7 @@
#include "ns3/csma-module.h"
#include "ns3/olsr-helper.h"
#include "ns3/internet-module.h"
+#include "ns3/netanim-module.h"
using namespace ns3;
@@ -96,18 +97,17 @@
// simulation parameters.
//
uint32_t backboneNodes = 10;
- uint32_t infraNodes = 5;
- uint32_t lanNodes = 5;
- uint32_t stopTime = 10;
+ uint32_t infraNodes = 2;
+ uint32_t lanNodes = 2;
+ uint32_t stopTime = 20;
bool useCourseChangeCallback = false;
- bool enableTracing = false;
//
// Simulation defaults are typically set next, before command line
// arguments are parsed.
//
- Config::SetDefault ("ns3::OnOffApplication::PacketSize", StringValue ("210"));
- Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("10kb/s"));
+ Config::SetDefault ("ns3::OnOffApplication::PacketSize", StringValue ("1472"));
+ Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("100kb/s"));
//
// For convenience, we add the local variables to the command line argument
@@ -120,7 +120,6 @@
cmd.AddValue ("lanNodes", "number of LAN nodes", lanNodes);
cmd.AddValue ("stopTime", "simulation stop time (seconds)", stopTime);
cmd.AddValue ("useCourseChangeCallback", "whether to enable course change tracing", useCourseChangeCallback);
- cmd.AddValue ("enableTracing", "enable tracing", enableTracing);
//
// The system global variables and the local values added to the argument
@@ -128,6 +127,11 @@
//
cmd.Parse (argc, argv);
+ if (stopTime < 10)
+ {
+ std::cout << "Use a simulation stop time >= 10 seconds" << std::endl;
+ exit (1);
+ }
///////////////////////////////////////////////////////////////////////////
// //
// Construct the backbone //
@@ -165,9 +169,6 @@
internet.SetRoutingHelper (olsr); // has effect on the next Install ()
internet.Install (backbone);
- // re-initialize for non-olsr routing.
- internet.Reset ();
-
//
// Assign IPv4 addresses to the device drivers (actually to the associated
// IPv4 interfaces) we just created.
@@ -181,17 +182,15 @@
// each of the nodes we just finished building.
//
MobilityHelper mobility;
- Ptr positionAlloc =
- CreateObject ();
- double x = 0.0;
- for (uint32_t i = 0; i < backboneNodes; ++i)
- {
- positionAlloc->Add (Vector (x, 0.0, 0.0));
- x += 5.0;
- }
- mobility.SetPositionAllocator (positionAlloc);
+ mobility.SetPositionAllocator ("ns3::GridPositionAllocator",
+ "MinX", DoubleValue (20.0),
+ "MinY", DoubleValue (20.0),
+ "DeltaX", DoubleValue (20.0),
+ "DeltaY", DoubleValue (20.0),
+ "GridWidth", UintegerValue (5),
+ "LayoutType", StringValue ("RowFirst"));
mobility.SetMobilityModel ("ns3::RandomDirection2dMobilityModel",
- "Bounds", RectangleValue (Rectangle (0, 20, 0, 20)),
+ "Bounds", RectangleValue (Rectangle (-500, 500, -500, 500)),
"Speed", StringValue ("ns3::ConstantRandomVariable[Constant=2]"),
"Pause", StringValue ("ns3::ConstantRandomVariable[Constant=0.2]"));
mobility.Install (backbone);
@@ -242,6 +241,21 @@
// network mask initialized above
//
ipAddrs.NewNetwork ();
+ //
+ // The new LAN nodes need a mobility model so we aggregate one
+ // to each of the nodes we just finished building.
+ //
+ MobilityHelper mobilityLan;
+ Ptr subnetAlloc =
+ CreateObject ();
+ for (uint32_t j = 0; j < newLanNodes.GetN (); ++j)
+ {
+ subnetAlloc->Add (Vector (0.0, j*10 + 10, 0.0));
+ }
+ mobilityLan.PushReferenceMobilityModel (backbone.Get (i));
+ mobilityLan.SetPositionAllocator (subnetAlloc);
+ mobilityLan.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
+ mobilityLan.Install (newLanNodes);
}
///////////////////////////////////////////////////////////////////////////
@@ -286,7 +300,9 @@
NetDeviceContainer staDevices = wifiInfra.Install (wifiPhy, macInfra, stas);
// setup ap.
macInfra.SetType ("ns3::ApWifiMac",
- "Ssid", SsidValue (ssid));
+ "Ssid", SsidValue (ssid),
+ "BeaconGeneration", BooleanValue (true),
+ "BeaconInterval", TimeValue(Seconds(2.5)));
NetDeviceContainer apDevices = wifiInfra.Install (wifiPhy, macInfra, backbone.Get (i));
// Collect all of these new devices
NetDeviceContainer infraDevices (apDevices, staDevices);
@@ -320,19 +336,8 @@
"Bounds", RectangleValue (Rectangle (-10, 10, -10, 10)),
"Speed", StringValue ("ns3::ConstantRandomVariable[Constant=3]"),
"Pause", StringValue ("ns3::ConstantRandomVariable[Constant=0.4]"));
- mobility.Install (infra);
+ mobility.Install (stas);
}
- ///////////////////////////////////////////////////////////////////////////
- // //
- // Routing configuration //
- // //
- ///////////////////////////////////////////////////////////////////////////
-
- // The below global routing does not take into account wireless effects.
- // However, it is useful for setting default routes for all of the nodes
- // such as the LAN nodes.
- NS_LOG_INFO ("Enabling global routing on all nodes");
- Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
///////////////////////////////////////////////////////////////////////////
// //
@@ -363,17 +368,16 @@
OnOffHelper onoff ("ns3::UdpSocketFactory",
Address (InetSocketAddress (remoteAddr, port)));
- onoff.SetConstantRate (DataRate ("10kb/s"));
ApplicationContainer apps = onoff.Install (appSource);
- apps.Start (Seconds (3.0));
- apps.Stop (Seconds (20.0));
+ apps.Start (Seconds (3));
+ apps.Stop (Seconds (stopTime - 1));
// Create a packet sink to receive these packets
PacketSinkHelper sink ("ns3::UdpSocketFactory",
InetSocketAddress (Ipv4Address::GetAny (), port));
apps = sink.Install (appSink);
- apps.Start (Seconds (3.0));
+ apps.Start (Seconds (3));
///////////////////////////////////////////////////////////////////////////
// //
@@ -382,36 +386,31 @@
///////////////////////////////////////////////////////////////////////////
NS_LOG_INFO ("Configure Tracing.");
- if (enableTracing == true)
- {
- CsmaHelper csma;
+ CsmaHelper csma;
- //
- // Let's set up some ns-2-like ascii traces, using another helper class
- //
- AsciiTraceHelper ascii;
- Ptr stream = ascii.CreateFileStream ("mixed-wireless.tr");
- wifiPhy.EnableAsciiAll (stream);
- csma.EnableAsciiAll (stream);
- internet.EnableAsciiIpv4All (stream);
-
- // Let's do a pcap trace on the application source and sink, ifIndex 0
- // Csma captures in non-promiscuous mode
-#if 0
- csma.EnablePcap ("mixed-wireless", appSource->GetId (), 0, false);
-#else
- csma.EnablePcapAll ("mixed-wireless", false);
-#endif
- wifiPhy.EnablePcap ("mixed-wireless", appSink->GetId (), 0);
- wifiPhy.EnablePcap ("mixed-wireless", 9, 2);
- wifiPhy.EnablePcap ("mixed-wireless", 9, 0);
- }
+ //
+ // Let's set up some ns-2-like ascii traces, using another helper class
+ //
+ AsciiTraceHelper ascii;
+ Ptr stream = ascii.CreateFileStream ("mixed-wireless.tr");
+ wifiPhy.EnableAsciiAll (stream);
+ csma.EnableAsciiAll (stream);
+ internet.EnableAsciiIpv4All (stream);
+
+ // Csma captures in non-promiscuous mode
+ csma.EnablePcapAll ("mixed-wireless", false);
+ // pcap captures on the backbone wifi devices
+ wifiPhy.EnablePcap ("mixed-wireless", backboneDevices, false);
+ // pcap trace on the application data sink
+ wifiPhy.EnablePcap ("mixed-wireless", appSink->GetId (), 0);
if (useCourseChangeCallback == true)
{
Config::Connect ("/NodeList/*/$ns3::MobilityModel/CourseChange", MakeCallback (&CourseChangeCallback));
}
+ AnimationInterface anim ("mixed-wireless.xml");
+
///////////////////////////////////////////////////////////////////////////
// //
// Run simulation //
diff -Naur ns-3.19/examples/wireless/mixed-wireless.py ns-3.20/examples/wireless/mixed-wireless.py
--- ns-3.19/examples/wireless/mixed-wireless.py 2014-06-17 10:34:00.400636955 -0700
+++ ns-3.20/examples/wireless/mixed-wireless.py 2014-06-17 10:33:13.731997212 -0700
@@ -76,16 +76,16 @@
# simulation parameters.
#
backboneNodes = 10
- infraNodes = 5
- lanNodes = 5
- stopTime = 10
+ infraNodes = 2
+ lanNodes = 2
+ stopTime = 20
#
# Simulation defaults are typically set next, before command line
# arguments are parsed.
#
- ns.core.Config.SetDefault("ns3::OnOffApplication::PacketSize", ns.core.StringValue("210"))
- ns.core.Config.SetDefault("ns3::OnOffApplication::DataRate", ns.core.StringValue("448kb/s"))
+ ns.core.Config.SetDefault("ns3::OnOffApplication::PacketSize", ns.core.StringValue("1472"))
+ ns.core.Config.SetDefault("ns3::OnOffApplication::DataRate", ns.core.StringValue("100kb/s"))
#
# For convenience, we add the local variables to the command line argument
@@ -93,10 +93,10 @@
# "--backboneNodes=20"
#
cmd = ns.core.CommandLine()
- #cmd.AddValue("backboneNodes", "number of backbone nodes", backboneNodes)
- #cmd.AddValue("infraNodes", "number of leaf nodes", infraNodes)
- #cmd.AddValue("lanNodes", "number of LAN nodes", lanNodes)
- #cmd.AddValue("stopTime", "simulation stop time(seconds)", stopTime)
+ cmd.AddValue("backboneNodes", "number of backbone nodes", str(backboneNodes))
+ cmd.AddValue("infraNodes", "number of leaf nodes", str(infraNodes))
+ cmd.AddValue("lanNodes", "number of LAN nodes", str(lanNodes))
+ cmd.AddValue("stopTime", "simulation stop time(seconds)", str(stopTime))
#
# The system global variables and the local values added to the argument
@@ -104,6 +104,9 @@
#
cmd.Parse(argv)
+ if (stopTime < 10):
+ print "Use a simulation stop time >= 10 seconds"
+ exit(1)
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
# #
# Construct the backbone #
@@ -138,7 +141,7 @@
internet.SetRoutingHelper(olsr); # has effect on the next Install ()
internet.Install(backbone);
# re-initialize for non-olsr routing.
- internet.Reset()
+ # internet.Reset()
#
# Assign IPv4 addresses to the device drivers(actually to the associated
# IPv4 interfaces) we just created.
@@ -152,15 +155,16 @@
# each of the nodes we just finished building.
#
mobility = ns.mobility.MobilityHelper()
- positionAlloc = ns.mobility.ListPositionAllocator()
- x = 0.0
- for i in range(backboneNodes):
- positionAlloc.Add(ns.core.Vector(x, 0.0, 0.0))
- x += 5.0
- mobility.SetPositionAllocator(positionAlloc)
+ mobility.SetPositionAllocator("ns3::GridPositionAllocator",
+ "MinX", ns.core.DoubleValue(20.0),
+ "MinY", ns.core.DoubleValue(20.0),
+ "DeltaX", ns.core.DoubleValue(20.0),
+ "DeltaY", ns.core.DoubleValue(20.0),
+ "GridWidth", ns.core.UintegerValue(5),
+ "LayoutType", ns.core.StringValue("RowFirst"))
mobility.SetMobilityModel("ns3::RandomDirection2dMobilityModel",
- "Bounds", ns.mobility.RectangleValue(ns.mobility.Rectangle(0, 1000, 0, 1000)),
- "Speed", ns.core.StringValue ("ns3::ConstantRandomVariable[Constant=2000]"),
+ "Bounds", ns.mobility.RectangleValue(ns.mobility.Rectangle(-500, 500, -500, 500)),
+ "Speed", ns.core.StringValue ("ns3::ConstantRandomVariable[Constant=2]"),
"Pause", ns.core.StringValue ("ns3::ConstantRandomVariable[Constant=0.2]"))
mobility.Install(backbone)
@@ -207,6 +211,19 @@
# network mask initialized above
#
ipAddrs.NewNetwork()
+ #
+ # The new LAN nodes need a mobility model so we aggregate one
+ # to each of the nodes we just finished building.
+ #
+ mobilityLan = ns.mobility.MobilityHelper()
+ positionAlloc = ns.mobility.ListPositionAllocator()
+ for j in range(newLanNodes.GetN()):
+ positionAlloc.Add(ns.core.Vector(0.0, (j*10 + 10), 0.0))
+
+ mobilityLan.SetPositionAllocator(positionAlloc)
+ mobilityLan.PushReferenceMobilityModel(backbone.Get(i))
+ mobilityLan.SetMobilityModel("ns3::ConstantPositionMobilityModel")
+ mobilityLan.Install(newLanNodes);
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
# #
@@ -276,10 +293,10 @@
mobility.PushReferenceMobilityModel(backbone.Get(i))
mobility.SetPositionAllocator(subnetAlloc)
mobility.SetMobilityModel("ns3::RandomDirection2dMobilityModel",
- "Bounds", ns.mobility.RectangleValue(ns.mobility.Rectangle(-25, 25, -25, 25)),
- "Speed", ns.core.StringValue ("ns3::ConstantRandomVariable[Constant=30]"),
+ "Bounds", ns.mobility.RectangleValue(ns.mobility.Rectangle(-10, 10, -10, 10)),
+ "Speed", ns.core.StringValue ("ns3::ConstantRandomVariable[Constant=3]"),
"Pause", ns.core.StringValue ("ns3::ConstantRandomVariable[Constant=0.4]"))
- mobility.Install(infra)
+ mobility.Install(stas)
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
# #
@@ -292,25 +309,23 @@
print "Create Applications."
port = 9 # Discard port(RFC 863)
- # Let's make sure that the user does not define too few LAN nodes
- # to make this example work. We need lanNodes >= 5
- assert(lanNodes >= 5)
- appSource = ns.network.NodeList.GetNode(11)
- appSink = ns.network.NodeList.GetNode(13)
- remoteAddr = ns.network.Ipv4Address("172.16.0.5")
+ appSource = ns.network.NodeList.GetNode(backboneNodes)
+ lastNodeIndex = backboneNodes + backboneNodes*(lanNodes - 1) + backboneNodes*(infraNodes - 1) - 1
+ appSink = ns.network.NodeList.GetNode(lastNodeIndex)
+ # Let's fetch the IP address of the last node, which is on Ipv4Interface 1
+ remoteAddr = appSink.GetObject(ns.internet.Ipv4.GetTypeId()).GetAddress(1,0).GetLocal()
onoff = ns.applications.OnOffHelper("ns3::UdpSocketFactory",
ns.network.Address(ns.network.InetSocketAddress(remoteAddr, port)))
- onoff.SetConstantRate (ns.network.DataRate ("10kb/s"))
apps = onoff.Install(ns.network.NodeContainer(appSource))
- apps.Start(ns.core.Seconds(3.0))
- apps.Stop(ns.core.Seconds(20.0))
+ apps.Start(ns.core.Seconds(3))
+ apps.Stop(ns.core.Seconds(stopTime - 1))
# Create a packet sink to receive these packets
sink = ns.applications.PacketSinkHelper("ns3::UdpSocketFactory",
ns.network.InetSocketAddress(ns.network.Ipv4Address.GetAny(), port))
apps = sink.Install(ns.network.NodeContainer(appSink))
- apps.Start(ns.core.Seconds(3.0))
+ apps.Start(ns.core.Seconds(3))
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
# #
@@ -319,24 +334,21 @@
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
print "Configure Tracing."
+ csma = ns.csma.CsmaHelper()
#
# Let's set up some ns-2-like ascii traces, using another helper class
#
- #std.ofstream ascii
- #ascii = ns.core.AsciiTraceHelper();
- #stream = ascii.CreateFileStream("mixed-wireless.tr");
- #wifiPhy.EnableAsciiAll(stream);
- #csma.EnableAsciiAll(stream);
- print "(tracing not done for Python)"
- # Look at nodes 11, 13 only
- # WifiHelper.EnableAscii(ascii, 11, 0);
- # WifiHelper.EnableAscii(ascii, 13, 0);
+ ascii = ns.network.AsciiTraceHelper();
+ stream = ascii.CreateFileStream("mixed-wireless.tr");
+ wifiPhy.EnableAsciiAll(stream);
+ csma.EnableAsciiAll(stream);
+ internet.EnableAsciiIpv4All(stream);
+ # Csma captures in non-promiscuous mode
+ csma.EnablePcapAll("mixed-wireless", False)
# Let's do a pcap trace on the backbone devices
wifiPhy.EnablePcap("mixed-wireless", backboneDevices)
- # Let's additionally trace the application Sink, ifIndex 0
- csma = ns.csma.CsmaHelper()
- csma.EnablePcapAll("mixed-wireless", False)
+ wifiPhy.EnablePcap("mixed-wireless", appSink.GetId(), 0)
# #ifdef ENABLE_FOR_TRACING_EXAMPLE
# Config.Connect("/NodeList/*/$MobilityModel/CourseChange",
diff -Naur ns-3.19/examples/wireless/multirate.cc ns-3.20/examples/wireless/multirate.cc
--- ns-3.19/examples/wireless/multirate.cc 2014-06-17 10:34:00.401636947 -0700
+++ ns-3.20/examples/wireless/multirate.cc 2014-06-17 10:33:13.732997204 -0700
@@ -508,12 +508,11 @@
phy.EnableAsciiAll (ascii.CreateFileStream (GetOutputFileName () + ".tr"));
}
- Ptr flowmon;
FlowMonitorHelper flowmonHelper;
if (enableFlowMon)
{
- flowmon = flowmonHelper.InstallAll ();
+ flowmonHelper.InstallAll ();
}
Simulator::Stop (Seconds (totalTime));
@@ -521,7 +520,7 @@
if (enableFlowMon)
{
- flowmon->SerializeToXmlFile ((GetOutputFileName () + ".flomon"), false, false);
+ flowmonHelper.SerializeToXmlFile ((GetOutputFileName () + ".flomon"), false, false);
}
Simulator::Destroy ();
diff -Naur ns-3.19/examples/wireless/waf ns-3.20/examples/wireless/waf
--- ns-3.19/examples/wireless/waf 2014-06-17 10:34:00.402636940 -0700
+++ ns-3.20/examples/wireless/waf 1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-exec "`dirname "$0"`"/../../waf "$@"
diff -Naur ns-3.19/examples/wireless/wscript ns-3.20/examples/wireless/wscript
--- ns-3.19/examples/wireless/wscript 2014-06-17 10:34:00.408636893 -0700
+++ ns-3.20/examples/wireless/wscript 2014-06-17 10:33:13.739997150 -0700
@@ -2,7 +2,7 @@
def build(bld):
obj = bld.create_ns3_program('mixed-wireless', ['core', 'mobility', 'wifi', 'applications', 'point-to-point',
- 'internet', 'csma', 'olsr'])
+ 'internet', 'csma', 'olsr', 'netanim'])
obj.source = 'mixed-wireless.cc'
bld.register_ns3_script('mixed-wireless.py', ['core', 'mobility', 'wifi', 'applications', 'point-to-point',
diff -Naur ns-3.19/.hgignore ns-3.20/.hgignore
--- ns-3.19/.hgignore 2014-06-17 10:34:00.259638043 -0700
+++ ns-3.20/.hgignore 2014-06-17 10:33:13.606998177 -0700
@@ -42,5 +42,7 @@
\.plt$
\#[^\#/]+\#$
^coverity
+^(D|U)l[A-Z][a-z]*Stats.txt$
syntax: glob
TAGS
+waf
diff -Naur ns-3.19/.hgtags ns-3.20/.hgtags
--- ns-3.19/.hgtags 2014-06-17 10:34:00.261638028 -0700
+++ ns-3.20/.hgtags 2014-06-17 10:33:13.608998161 -0700
@@ -66,4 +66,5 @@
49d343e55caec257bb01e400eef6c14522f37e1b ns-3.16
b4a70b99171ade6e9628a87780994238950a1df1 ns-3.17
cfbc9491d7e7c9d346cc042fd35b8afb8836e81f ns-3.18
-a831982d3190a1ff8d4be3c36befc2abf78a6009 ns-3.19
+322102df792e2be6c74df74f776b3470fb1db795 ns-3.19
+0430f8ab48f8177999b5203700dfb0edca1e2056 ns-3.20
diff -Naur ns-3.19/RELEASE_NOTES ns-3.20/RELEASE_NOTES
--- ns-3.19/RELEASE_NOTES 2014-06-17 10:34:00.276637912 -0700
+++ ns-3.20/RELEASE_NOTES 2014-06-17 10:33:13.624998038 -0700
@@ -9,6 +9,115 @@
Consult the file CHANGES.html for more detailed information about changed
API and behavior across ns-3 releases.
+Release 3.20
+=============
+
+Availability
+------------
+This release is available from:
+http://www.nsnam.org/release/ns-allinone-3.20.tar.bz2
+
+Supported platforms
+-------------------
+- Fedora Core 20 (32/64 bit) with g++-4.8.2
+- Ubuntu 14.04 (32/64 bit) with g++-4.8.2
+- Ubuntu 12.04.4 (64 bit) with g++-4.6.3
+- Ubuntu 10.04.4 LTS (64 bit) with g++-4.4.3
+- CentOS/RHEL 6.5 (64-bit) with g++-4.4.7
+- OS X Mavericks 10.9 with Xcode 5.1.1 and clang-503.0.40
+- FreeBSD 9.2-RELEASE (64 bit) with clang-3.3
+
+New user-visible features
+-------------------------
+
+- A new LrWpan model, providing initial support for IEEE 802.15.4 networks
+- A new IPv6 routing protocol has been added: RIPng. This protocol is
+ an Interior Gateway Protocol and it is available in the Internet module.
+- A new LTE MAC downlink scheduling algorithm named Channel and QoS Aware (CQA)
+ Scheduler is provided by the new ``ns3::CqaFfMacScheduler`` object.
+- The Internet FlowMonitor can now track IPv6 packets.
+- FlowMonitor no longer tracks multicast/broadcast packets, reflecting
+ its original design.
+- FlowMonitor "SerializeToXml" functions are now directly available
+ from the helper.
+- The SixLowPan model can now use uncompressed IPv6 headers. An option to
+ define the minimum compressed packet size has been added.
+- Simplify output of Times in a specific unit; see Time::As ()
+- Ipv6Extension::m_dropTrace has been removed. Ipv6L3Protocol::m_dropTrace
+ is now fired when appropriate.
+- IPv4 identification field value is now dependent on the protocol field.
+- Fixes to support Python >= 3.3 in ns3 Python bindings
+- Enable selection of high precision int64x64_t implementation
+ at configure time, for debugging purposes.
+
+Bugs fixed
+----------
+- Bug 1276 - optimize NistErrorRateModel
+- Bug 1294 - New PeekU8 () and Read (Buffer::Iterator start, uint32_t size) methods in Buffer::Iterator
+- Bug 1443 - MinDistance replaced by MinLoss in FriisPropagationLossModel, to
+ better handle conditions outside of the assumed far field region.
+- Bug 1653 - Extension of CommandLine interface: restored operator << (CommandLine)
+- Bug 1717 - Detect unsettable attributes
+- Bug 1730 - no model library documentation for spectrum module
+- Bug 1739 - The endpoint is not deallocated for UDP sockets
+- Bug 1786 - os << int64x64_t prints un-normalized fractional values
+- Bug 1787 - Runtime error when using AnimationInterface::EnablePacketMetadata() to fetch metadata of CSMA packet
+- Bug 1792 - Parameter logger constructor
+- Bug 1808 - FlowMon relies on IPv4's Identification field to trace packets
+- Bug 1817 - IPv4 Identification field should consider protocol as well.
+- Bug 1818 - FlowMonitor needs IPv6 support
+- Bug 1820 - models library doc: make should not rm -rf figures
+- Bug 1821 - Setting an interface to Down state will cause various asserts in IPv6
+- Bug 1829 - Multiple TCP socket entries
+- Bug 1837 - AODV crashes when using multiple interfaces
+- Bug 1838 - FlowMonitorHelper must not be copied.
+- Bug 1841 - FlowMonitor fails to install if IPv4 is not installed in the node
+- Bug 1842 - FlowMonitor SerializeToXml should be called by the helper
+- Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
+- Bug 1845 - FlowMonitor should discard any broadcast/multicast packet
+- Bug 1846 - IPv6 should send Destination Unreachable if no route is available
+- Bug 1850 - TCP NewReno loss behavior
+- Bug 1852 - cairo-wideint-private.h error cannot find definitions for fixed-width integral types
+- Bug 1853 - NS_LOG_FUNCTION broken on OSX 10.9
+- Bug 1855 - SixLowPanNetDevice is not correctly indexed
+- Bug 1857 - Detect location of installed boost libraries
+- Bug 1862 - NS_LOG="Time=*|prefix_time" causes stack overflow
+- Bug 1868 - Optimized builds are sensitive to -fstrict-overflow
+- Bug 1870 - Remove unnecessary AsInt functions
+- Bug 1872 - Inside RREQ processing, in case of IP duplication, packet dropped instead of being forwarded
+- Bug 1873 - Energy source checked to be aggregated to the node
+- Bug 1874 - Ipv4L3Protocol::ProcessFragment: addressCombination and idProto identifiers not properly computed
+- Bug 1876 - enable OLSR HNA table access
+- Bug 1877 - constructors missing for PropagationLossModels
+- Bug 1882 - int64x64 tests trigger valgrind bug
+- Bug 1883 - IPv6 don't consider the prefix and network when choosing output address
+- Bug 1885 - WifiSpectrumValue5MhzFactory::CreateRfFilter does not align with the used 5Mhz SpectrumModel
+- Bug 1887 - Point-to-point traces should contain PPP headers
+- Bug 1888 - COST231 propagation loss model: corrections
+- Bug 1889 - PointToPointNetDevice: In some cases MacTxDrop trace is not called
+- Bug 1890 - UdpClientTrace: MPEG frame size is squeezed into (insufficient) 16 bit integer
+- Bug 1891 - UdpSocketImpl::GetSockName doesn't return the IPv6 address
+- Bug 1894 - CqaFfMacScheduler needs an update
+- Bug 1895 - IP header Source Address changed while forwarding RREQ
+- Bug 1900 - Avoid floating point differences across platforms in test outputs
+- Bug 1903 - Namespace usage in olsr-state.cc/h
+- Bug 1907 - Add IsSupportedMcs method in YansWifiPhy
+- Bug 1912 - Avoid multiple Wifi MacTxMiddle instances
+- Bug 1913 - Avoid crash in Wifi BlockAckManager::GetNextPacket()
+- Bug 1915 - BRITE channel delay is rounded to an integer
+- Bug 1916 - RandomWalk2dMobilityMode default "Bounds" attribute is not a rectangle
+- Bug 1919 - Strip trailing semi-colons from mobility trace files
+- Bug 1920 - Remove DSR attributes so file can be re-loaded by config-store
+- Bug 1922 - WAVE GetSsid should not be fatal
+- Bug 1923 - Setting Active Probing to false in Wifi Sta has no effect
+- Bug 1924 - sensing radius and CCA
+
+Known issues
+------------
+- Bug 1770 - The mesh module will crash if used for g++ version >= 4.8.1
+in optimized mode, on a 32-bit Linux machine. Lowering the optimization
+level to -O1 in this case can be used as a workaround.
+
Release 3.19
=============
@@ -115,6 +224,7 @@
- Bug 1814 - IPv6 Packet with length not multiple of 8 bytes are fragmented incorrectly.
- Bug 1815 - Python bindings compilation with clang compiler toolchain
- Bug 1816 - IPv4 fragmentation loses Packet tags
+- Bug 1877 - constructor missing for PropagationLossModels
Release 3.18.2
==============
diff -Naur ns-3.19/src/antenna/bindings/modulegen__gcc_ILP32.py ns-3.20/src/antenna/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/antenna/bindings/modulegen__gcc_ILP32.py 2014-06-17 10:34:00.411636870 -0700
+++ ns-3.20/src/antenna/bindings/modulegen__gcc_ILP32.py 2014-06-17 10:33:13.741997135 -0700
@@ -102,17 +102,17 @@
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::Vector3D', 'ns3::Vector')
- typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
- typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+ typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+ typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+ typehandlers.add_type_alias(u'ns3::Vector3D&', u'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&')
+ typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue')
+ typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
+ typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'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&')
+ typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
+ typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
+ typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
## Register a nested module for the namespace FatalImpl
@@ -136,12 +136,12 @@
## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter >'])
- typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
- typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
- typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
- typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
- typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
- typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+ typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+ typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+ typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+ typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+ typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+ typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
## Register a nested module for the namespace Function
diff -Naur ns-3.19/src/antenna/bindings/modulegen__gcc_LP64.py ns-3.20/src/antenna/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/antenna/bindings/modulegen__gcc_LP64.py 2014-06-17 10:34:00.412636862 -0700
+++ ns-3.20/src/antenna/bindings/modulegen__gcc_LP64.py 2014-06-17 10:33:13.742997127 -0700
@@ -102,17 +102,17 @@
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::Vector3D', 'ns3::Vector')
- typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
- typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+ typehandlers.add_type_alias(u'ns3::Vector3D', u'ns3::Vector')
+ typehandlers.add_type_alias(u'ns3::Vector3D*', u'ns3::Vector*')
+ typehandlers.add_type_alias(u'ns3::Vector3D&', u'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&')
+ typehandlers.add_type_alias(u'ns3::Vector3DValue', u'ns3::VectorValue')
+ typehandlers.add_type_alias(u'ns3::Vector3DValue*', u'ns3::VectorValue*')
+ typehandlers.add_type_alias(u'ns3::Vector3DValue&', u'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&')
+ typehandlers.add_type_alias(u'ns3::Vector3DChecker', u'ns3::VectorChecker')
+ typehandlers.add_type_alias(u'ns3::Vector3DChecker*', u'ns3::VectorChecker*')
+ typehandlers.add_type_alias(u'ns3::Vector3DChecker&', u'ns3::VectorChecker&')
module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
## Register a nested module for the namespace FatalImpl
@@ -136,12 +136,12 @@
## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter >'])
- typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
- typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
- typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
- typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
- typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
- typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
+ typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+ typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+ typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
+ typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+ typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+ typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
## Register a nested module for the namespace Function
diff -Naur ns-3.19/src/antenna/model/antenna-model.cc ns-3.20/src/antenna/model/antenna-model.cc
--- ns-3.19/src/antenna/model/antenna-model.cc 2014-06-17 10:34:00.416636831 -0700
+++ ns-3.20/src/antenna/model/antenna-model.cc 2014-06-17 10:33:13.746997096 -0700
@@ -28,8 +28,7 @@
namespace ns3 {
-NS_OBJECT_ENSURE_REGISTERED (AntennaModel)
- ;
+NS_OBJECT_ENSURE_REGISTERED (AntennaModel);
AntennaModel::AntennaModel ()
diff -Naur ns-3.19/src/antenna/model/cosine-antenna-model.cc ns-3.20/src/antenna/model/cosine-antenna-model.cc
--- ns-3.19/src/antenna/model/cosine-antenna-model.cc 2014-06-17 10:34:00.417636824 -0700
+++ ns-3.20/src/antenna/model/cosine-antenna-model.cc 2014-06-17 10:33:13.747997088 -0700
@@ -31,8 +31,7 @@
namespace ns3 {
-NS_OBJECT_ENSURE_REGISTERED (CosineAntennaModel)
- ;
+NS_OBJECT_ENSURE_REGISTERED (CosineAntennaModel);
TypeId
diff -Naur ns-3.19/src/antenna/model/isotropic-antenna-model.cc ns-3.20/src/antenna/model/isotropic-antenna-model.cc
--- ns-3.19/src/antenna/model/isotropic-antenna-model.cc 2014-06-17 10:34:00.418636816 -0700
+++ ns-3.20/src/antenna/model/isotropic-antenna-model.cc 2014-06-17 10:33:13.748997081 -0700
@@ -29,8 +29,7 @@
namespace ns3 {
-NS_OBJECT_ENSURE_REGISTERED (IsotropicAntennaModel)
- ;
+NS_OBJECT_ENSURE_REGISTERED (IsotropicAntennaModel);
TypeId
diff -Naur ns-3.19/src/antenna/model/parabolic-antenna-model.cc ns-3.20/src/antenna/model/parabolic-antenna-model.cc
--- ns-3.19/src/antenna/model/parabolic-antenna-model.cc 2014-06-17 10:34:00.419636808 -0700
+++ ns-3.20/src/antenna/model/parabolic-antenna-model.cc 2014-06-17 10:33:13.748997081 -0700
@@ -31,8 +31,7 @@
namespace ns3 {
-NS_OBJECT_ENSURE_REGISTERED (ParabolicAntennaModel)
- ;
+NS_OBJECT_ENSURE_REGISTERED (ParabolicAntennaModel);
TypeId
diff -Naur ns-3.19/src/antenna/test/test-angles.cc ns-3.20/src/antenna/test/test-angles.cc
--- ns-3.19/src/antenna/test/test-angles.cc 2014-06-17 10:34:00.419636808 -0700
+++ ns-3.20/src/antenna/test/test-angles.cc 2014-06-17 10:33:13.749997073 -0700
@@ -26,7 +26,7 @@
#include
#include
-namespace ns3 {
+using namespace ns3;
class OneVectorConstructorTestCase : public TestCase
{
@@ -209,8 +209,3 @@
};
static AnglesTestSuite staticAnglesTestSuiteInstance;
-
-
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/antenna/test/test-cosine-antenna.cc ns-3.20/src/antenna/test/test-cosine-antenna.cc
--- ns-3.19/src/antenna/test/test-cosine-antenna.cc 2014-06-17 10:34:00.420636800 -0700
+++ ns-3.20/src/antenna/test/test-cosine-antenna.cc 2014-06-17 10:33:13.750997065 -0700
@@ -31,7 +31,7 @@
NS_LOG_COMPONENT_DEFINE ("TestCosineAntennaModel");
-namespace ns3 {
+using namespace ns3;
enum CosineAntennaModelGainTestCondition {
EQUAL = 0,
@@ -204,8 +204,3 @@
};
static CosineAntennaModelTestSuite staticCosineAntennaModelTestSuiteInstance;
-
-
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/antenna/test/test-degrees-radians.cc ns-3.20/src/antenna/test/test-degrees-radians.cc
--- ns-3.19/src/antenna/test/test-degrees-radians.cc 2014-06-17 10:34:00.420636800 -0700
+++ ns-3.20/src/antenna/test/test-degrees-radians.cc 2014-06-17 10:33:13.750997065 -0700
@@ -26,7 +26,7 @@
#include
#include
-namespace ns3 {
+using namespace ns3;
class DegreesToRadiansTestCase : public TestCase
{
@@ -132,8 +132,3 @@
};
static DegreesRadiansTestSuite staticDegreesRadiansTestSuiteInstance;
-
-
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/antenna/test/test-isotropic-antenna.cc ns-3.20/src/antenna/test/test-isotropic-antenna.cc
--- ns-3.19/src/antenna/test/test-isotropic-antenna.cc 2014-06-17 10:34:00.421636793 -0700
+++ ns-3.20/src/antenna/test/test-isotropic-antenna.cc 2014-06-17 10:33:13.750997065 -0700
@@ -26,7 +26,7 @@
#include
#include
-namespace ns3 {
+using namespace ns3;
class IsotropicAntennaModelTestCase : public TestCase
{
@@ -90,8 +90,3 @@
};
static IsotropicAntennaModelTestSuite staticIsotropicAntennaModelTestSuiteInstance;
-
-
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/antenna/test/test-parabolic-antenna.cc ns-3.20/src/antenna/test/test-parabolic-antenna.cc
--- ns-3.19/src/antenna/test/test-parabolic-antenna.cc 2014-06-17 10:34:00.421636793 -0700
+++ ns-3.20/src/antenna/test/test-parabolic-antenna.cc 2014-06-17 10:33:13.751997058 -0700
@@ -31,7 +31,7 @@
NS_LOG_COMPONENT_DEFINE ("TestParabolicAntennaModel");
-namespace ns3 {
+using namespace ns3;
enum ParabolicAntennaModelGainTestCondition {
EQUAL = 0,
@@ -183,8 +183,3 @@
};
static ParabolicAntennaModelTestSuite staticParabolicAntennaModelTestSuiteInstance;
-
-
-
-
-} // namespace ns3
diff -Naur ns-3.19/src/aodv/bindings/modulegen__gcc_ILP32.py ns-3.20/src/aodv/bindings/modulegen__gcc_ILP32.py
--- ns-3.19/src/aodv/bindings/modulegen__gcc_ILP32.py 2014-06-17 10:34:00.428636739 -0700
+++ ns-3.20/src/aodv/bindings/modulegen__gcc_ILP32.py 2014-06-17 10:33:13.757997011 -0700
@@ -102,12 +102,6 @@
module.add_class('Ipv6Address', import_from_module='ns.network')
## ipv6-address.h (module 'network'): ns3::Ipv6Address [class]
root_module['ns3::Ipv6Address'].implicitly_converts_to(root_module['ns3::Address'])
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress [class]
- module.add_class('Ipv6InterfaceAddress', import_from_module='ns.internet')
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e [enumeration]
- module.add_enum('State_e', ['TENTATIVE', 'DEPRECATED', 'PREFERRED', 'PERMANENT', 'HOMEADDRESS', 'TENTATIVE_OPTIMISTIC', 'INVALID'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e [enumeration]
- module.add_enum('Scope_e', ['HOST', 'LINKLOCAL', 'GLOBAL'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
## ipv6-address.h (module 'network'): ns3::Ipv6Prefix [class]
module.add_class('Ipv6Prefix', import_from_module='ns.network')
## mac48-address.h (module 'network'): ns3::Mac48Address [class]
@@ -148,6 +142,8 @@
module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
module.add_class('TagBuffer', import_from_module='ns.network')
+ ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+ module.add_class('TimeWithUnit', import_from_module='ns.core')
## timer.h (module 'core'): ns3::Timer [class]
module.add_class('Timer', import_from_module='ns.core')
## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
@@ -168,6 +164,8 @@
module.add_class('empty', import_from_module='ns.core')
## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
module.add_class('int64x64_t', import_from_module='ns.core')
+ ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+ module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
## aodv-helper.h (module 'aodv'): ns3::AodvHelper [class]
module.add_class('AodvHelper', parent=root_module['ns3::Ipv4RoutingHelper'])
## chunk.h (module 'network'): ns3::Chunk [class]
@@ -180,10 +178,6 @@
module.add_enum('DscpType', ['DscpDefault', 'DSCP_CS1', 'DSCP_AF11', 'DSCP_AF12', 'DSCP_AF13', 'DSCP_CS2', 'DSCP_AF21', 'DSCP_AF22', 'DSCP_AF23', 'DSCP_CS3', 'DSCP_AF31', 'DSCP_AF32', 'DSCP_AF33', 'DSCP_CS4', 'DSCP_AF41', 'DSCP_AF42', 'DSCP_AF43', 'DSCP_CS5', 'DSCP_EF', 'DSCP_CS6', 'DSCP_CS7'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
## ipv4-header.h (module 'internet'): ns3::Ipv4Header::EcnType [enumeration]
module.add_enum('EcnType', ['ECN_NotECT', 'ECN_ECT1', 'ECN_ECT0', 'ECN_CE'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
- ## ipv6-header.h (module 'internet'): ns3::Ipv6Header [class]
- module.add_class('Ipv6Header', import_from_module='ns.internet', parent=root_module['ns3::Header'])
- ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::NextHeader_e [enumeration]
- module.add_enum('NextHeader_e', ['IPV6_EXT_HOP_BY_HOP', 'IPV6_IPV4', 'IPV6_TCP', 'IPV6_UDP', 'IPV6_IPV6', 'IPV6_EXT_ROUTING', 'IPV6_EXT_FRAGMENTATION', 'IPV6_EXT_CONFIDENTIALITY', 'IPV6_EXT_AUTHENTIFICATION', 'IPV6_ICMPV6', 'IPV6_EXT_END', 'IPV6_EXT_DESTINATION', 'IPV6_SCTP', 'IPV6_EXT_MOBILITY', 'IPV6_UDP_LITE'], outer_class=root_module['ns3::Ipv6Header'], import_from_module='ns.internet')
## object.h (module 'core'): ns3::Object [class]
module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -296,10 +290,6 @@
module.add_class('ExponentialRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
## random-variable-stream.h (module 'core'): ns3::GammaRandomVariable [class]
module.add_class('GammaRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
- ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
- module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
- ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
- module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
## ipv4.h (module 'internet'): ns3::Ipv4 [class]
module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -326,8 +316,6 @@
module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
- ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
- module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
module.add_class('Ipv6PrefixChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue [class]
@@ -370,8 +358,8 @@
module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
## ipv4-list-routing.h (module 'internet'): ns3::Ipv4ListRouting [class]
module.add_class('Ipv4ListRouting', import_from_module='ns.internet', parent=root_module['ns3::Ipv4RoutingProtocol'])
- module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type='list')
- module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
+ module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type=u'list')
+ module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
## Register a nested module for the namespace FatalImpl
@@ -400,12 +388,12 @@
## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter >'])
- typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
- typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
- typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
- typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
- typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
- typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
+ typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+ typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+ typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
+ typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+ typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+ typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
## Register a nested module for the namespace Function
@@ -460,8 +448,8 @@
module.add_class('RreqHeader', parent=root_module['ns3::Header'])
## aodv-packet.h (module 'aodv'): ns3::aodv::TypeHeader [class]
module.add_class('TypeHeader', parent=root_module['ns3::Header'])
- module.add_container('std::map< ns3::Ipv4Address, unsigned int >', ('ns3::Ipv4Address', 'unsigned int'), container_type='map')
- module.add_container('std::vector< ns3::Ipv4Address >', 'ns3::Ipv4Address', container_type='vector')
+ module.add_container('std::map< ns3::Ipv4Address, unsigned int >', ('ns3::Ipv4Address', 'unsigned int'), container_type=u'map')
+ module.add_container('std::vector< ns3::Ipv4Address >', 'ns3::Ipv4Address', container_type=u'vector')
def register_methods(root_module):
register_Ns3Address_methods(root_module, root_module['ns3::Address'])
@@ -491,7 +479,6 @@
register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
register_Ns3Ipv4RoutingHelper_methods(root_module, root_module['ns3::Ipv4RoutingHelper'])
register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
- register_Ns3Ipv6InterfaceAddress_methods(root_module, root_module['ns3::Ipv6InterfaceAddress'])
register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
register_Ns3Mac48Address_methods(root_module, root_module['ns3::Mac48Address'])
register_Ns3NodeContainer_methods(root_module, root_module['ns3::NodeContainer'])
@@ -509,6 +496,7 @@
register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+ register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
@@ -520,7 +508,6 @@
register_Ns3Chunk_methods(root_module, root_module['ns3::Chunk'])
register_Ns3Header_methods(root_module, root_module['ns3::Header'])
register_Ns3Ipv4Header_methods(root_module, root_module['ns3::Ipv4Header'])
- register_Ns3Ipv6Header_methods(root_module, root_module['ns3::Ipv6Header'])
register_Ns3Object_methods(root_module, root_module['ns3::Object'])
register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
register_Ns3RandomVariableStream_methods(root_module, root_module['ns3::RandomVariableStream'])
@@ -571,7 +558,6 @@
register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
register_Ns3ExponentialRandomVariable_methods(root_module, root_module['ns3::ExponentialRandomVariable'])
register_Ns3GammaRandomVariable_methods(root_module, root_module['ns3::GammaRandomVariable'])
- register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -584,7 +570,6 @@
register_Ns3Ipv4RoutingProtocol_methods(root_module, root_module['ns3::Ipv4RoutingProtocol'])
register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
- register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
register_Ns3LogNormalRandomVariable_methods(root_module, root_module['ns3::LogNormalRandomVariable'])
@@ -871,6 +856,10 @@
cls.add_method('Next',
'void',
[param('uint32_t', 'delta')])
+ ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+ cls.add_method('PeekU8',
+ 'uint8_t',
+ [])
## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
cls.add_method('Prev',
'void',
@@ -883,6 +872,10 @@
cls.add_method('Read',
'void',
[param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+ ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+ cls.add_method('Read',
+ 'void',
+ [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
cls.add_method('ReadLsbtohU16',
'uint16_t',
@@ -1781,61 +1774,6 @@
[param('uint8_t *', 'address')])
return
-def register_Ns3Ipv6InterfaceAddress_methods(root_module, cls):
- cls.add_binary_comparison_operator('!=')
- cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('==')
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress() [constructor]
- cls.add_constructor([])
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address) [constructor]
- cls.add_constructor([param('ns3::Ipv6Address', 'address')])
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address, ns3::Ipv6Prefix prefix) [constructor]
- cls.add_constructor([param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6Prefix', 'prefix')])
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6InterfaceAddress const & o) [copy constructor]
- cls.add_constructor([param('ns3::Ipv6InterfaceAddress const &', 'o')])
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6InterfaceAddress::GetAddress() const [member function]
- cls.add_method('GetAddress',
- 'ns3::Ipv6Address',
- [],
- is_const=True)
- ## ipv6-interface-address.h (module 'internet'): uint32_t ns3::Ipv6InterfaceAddress::GetNsDadUid() const [member function]
- cls.add_method('GetNsDadUid',
- 'uint32_t',
- [],
- is_const=True)
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Prefix ns3::Ipv6InterfaceAddress::GetPrefix() const [member function]
- cls.add_method('GetPrefix',
- 'ns3::Ipv6Prefix',
- [],
- is_const=True)
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e ns3::Ipv6InterfaceAddress::GetScope() const [member function]
- cls.add_method('GetScope',
- 'ns3::Ipv6InterfaceAddress::Scope_e',
- [],
- is_const=True)
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e ns3::Ipv6InterfaceAddress::GetState() const [member function]
- cls.add_method('GetState',
- 'ns3::Ipv6InterfaceAddress::State_e',
- [],
- is_const=True)
- ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
- cls.add_method('SetAddress',
- 'void',
- [param('ns3::Ipv6Address', 'address')])
- ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetNsDadUid(uint32_t uid) [member function]
- cls.add_method('SetNsDadUid',
- 'void',
- [param('uint32_t', 'uid')])
- ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetScope(ns3::Ipv6InterfaceAddress::Scope_e scope) [member function]
- cls.add_method('SetScope',
- 'void',
- [param('ns3::Ipv6InterfaceAddress::Scope_e', 'scope')])
- ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetState(ns3::Ipv6InterfaceAddress::State_e state) [member function]
- cls.add_method('SetState',
- 'void',
- [param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
- return
-
def register_Ns3Ipv6Prefix_methods(root_module, cls):
cls.add_binary_comparison_operator('!=')
cls.add_output_stream_operator()
@@ -2517,6 +2455,14 @@
[param('uint8_t', 'v')])
return
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+ cls.add_output_stream_operator()
+ ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+ ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+ cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+ return
+
def register_Ns3Timer_methods(root_module, cls):
## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
cls.add_constructor([param('ns3::Timer const &', 'arg0')])
@@ -2800,61 +2746,17 @@
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'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], 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'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], 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'))
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+ cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+ cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+ cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+ cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
cls.add_unary_numeric_operator('-')
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], 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'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+ cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
cls.add_binary_comparison_operator('<')
cls.add_binary_comparison_operator('>')
- cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
- cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
- cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+ cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+ cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+ cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
cls.add_output_stream_operator()
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
@@ -2862,6 +2764,8 @@
cls.add_constructor([])
## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
cls.add_constructor([param('double', 'v')])
+ ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+ cls.add_constructor([param('long double', 'v')])
## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
cls.add_constructor([param('int', 'v')])
## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2902,6 +2806,8 @@
cls.add_method('MulByInvert',
'void',
[param('ns3::int64x64_t const &', 'o')])
+ ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+ cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
return
def register_Ns3AodvHelper_methods(root_module, cls):
@@ -3156,106 +3062,6 @@
[param('uint8_t', 'ttl')])
return
-def register_Ns3Ipv6Header_methods(root_module, cls):
- ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header(ns3::Ipv6Header const & arg0) [copy constructor]
- cls.add_constructor([param('ns3::Ipv6Header const &', 'arg0')])
- ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header() [constructor]
- cls.add_constructor([])
- ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::Deserialize(ns3::Buffer::Iterator start) [member function]
- cls.add_method('Deserialize',
- 'uint32_t',
- [param('ns3::Buffer::Iterator', 'start')],
- is_virtual=True)
- ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetDestinationAddress() const [member function]
- cls.add_method('GetDestinationAddress',
- 'ns3::Ipv6Address',
- [],
- is_const=True)
- ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetFlowLabel() const [member function]
- cls.add_method('GetFlowLabel',
- 'uint32_t',
- [],
- is_const=True)
- ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetHopLimit() const [member function]
- cls.add_method('GetHopLimit',
- 'uint8_t',
- [],
- is_const=True)
- ## ipv6-header.h (module 'internet'): ns3::TypeId ns3::Ipv6Header::GetInstanceTypeId() const [member function]
- cls.add_method('GetInstanceTypeId',
- 'ns3::TypeId',
- [],
- is_const=True, is_virtual=True)
- ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetNextHeader() const [member function]
- cls.add_method('GetNextHeader',
- 'uint8_t',
- [],
- is_const=True)
- ## ipv6-header.h (module 'internet'): uint16_t ns3::Ipv6Header::GetPayloadLength() const [member function]
- cls.add_method('GetPayloadLength',
- 'uint16_t',
- [],
- is_const=True)
- ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetSerializedSize() const [member function]
- cls.add_method('GetSerializedSize',
- 'uint32_t',
- [],
- is_const=True, is_virtual=True)
- ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetSourceAddress() const [member function]
- cls.add_method('GetSourceAddress',
- 'ns3::Ipv6Address',
- [],
- is_const=True)
- ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetTrafficClass() const [member function]
- cls.add_method('GetTrafficClass',
- 'uint8_t',
- [],
- is_const=True)
- ## ipv6-header.h (module 'internet'): static ns3::TypeId ns3::Ipv6Header::GetTypeId() [member function]
- cls.add_method('GetTypeId',
- 'ns3::TypeId',
- [],
- is_static=True)
- ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Print(std::ostream & os) const [member function]
- cls.add_method('Print',
- 'void',
- [param('std::ostream &', 'os')],
- is_const=True, is_virtual=True)
- ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Serialize(ns3::Buffer::Iterator start) const [member function]
- cls.add_method('Serialize',
- 'void',
- [param('ns3::Buffer::Iterator', 'start')],
- is_const=True, is_virtual=True)
- ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetDestinationAddress(ns3::Ipv6Address dst) [member function]
- cls.add_method('SetDestinationAddress',
- 'void',
- [param('ns3::Ipv6Address', 'dst')])
- ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetFlowLabel(uint32_t flow) [member function]
- cls.add_method('SetFlowLabel',
- 'void',
- [param('uint32_t', 'flow')])
- ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetHopLimit(uint8_t limit) [member function]
- cls.add_method('SetHopLimit',
- 'void',
- [param('uint8_t', 'limit')])
- ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetNextHeader(uint8_t next) [member function]
- cls.add_method('SetNextHeader',
- 'void',
- [param('uint8_t', 'next')])
- ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetPayloadLength(uint16_t len) [member function]
- cls.add_method('SetPayloadLength',
- 'void',
- [param('uint16_t', 'len')])
- ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetSourceAddress(ns3::Ipv6Address src) [member function]
- cls.add_method('SetSourceAddress',
- 'void',
- [param('ns3::Ipv6Address', 'src')])
- ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetTrafficClass(uint8_t traffic) [member function]
- cls.add_method('SetTrafficClass',
- 'void',
- [param('uint8_t', 'traffic')])
- return
-
def register_Ns3Object_methods(root_module, cls):
## object.h (module 'core'): ns3::Object::Object() [constructor]
cls.add_constructor([])
@@ -4163,12 +3969,14 @@
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'))
- cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+ cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+ cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+ cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+ cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+ cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
cls.add_binary_comparison_operator('<')
cls.add_binary_comparison_operator('>')
- cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+ cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
cls.add_output_stream_operator()
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
@@ -4194,6 +4002,11 @@
cls.add_constructor([param('std::string const &', 's')])
## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+ ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+ cls.add_method('As',
+ 'ns3::TimeWithUnit',
+ [param('ns3::Time::Unit const', 'unit')],
+ is_const=True)
## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
cls.add_method('Compare',
'int',
@@ -5647,63 +5460,6 @@
is_virtual=True)
return
-def register_Ns3IpL4Protocol_methods(root_module, cls):
- ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
- cls.add_constructor([])
- ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
- cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
- ## ip-l4-protocol.h (module 'internet'): ns3::Callback,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
- cls.add_method('GetDownTarget',
- 'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >',
- [],
- is_pure_virtual=True, is_const=True, is_virtual=True)
- ## ip-l4-protocol.h (module 'internet'): ns3::Callback,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
- cls.add_method('GetDownTarget6',
- 'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >',
- [],
- is_pure_virtual=True, is_const=True, is_virtual=True)
- ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
- cls.add_method('GetProtocolNumber',
- 'int',
- [],
- is_pure_virtual=True, is_const=True, is_virtual=True)
- ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
- cls.add_method('GetTypeId',
- 'ns3::TypeId',
- [],
- is_static=True)
- ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr p, ns3::Ipv4Header const & header, ns3::Ptr incomingInterface) [member function]
- cls.add_method('Receive',
- 'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')],
- is_pure_virtual=True, is_virtual=True)
- ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr p, ns3::Ipv6Header const & header, ns3::Ptr incomingInterface) [member function]
- cls.add_method('Receive',
- 'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
- is_pure_virtual=True, is_virtual=True)
- ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
- cls.add_method('ReceiveIcmp',
- 'void',
- [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')],
- is_virtual=True)
- ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
- cls.add_method('ReceiveIcmp',
- 'void',
- [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')],
- is_virtual=True)
- ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
- cls.add_method('SetDownTarget',
- 'void',
- [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')],
- is_pure_virtual=True, is_virtual=True)
- ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
- cls.add_method('SetDownTarget6',
- 'void',
- [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')],
- is_pure_virtual=True, is_virtual=True)
- return
-
def register_Ns3Ipv4_methods(root_module, cls):
## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -6127,6 +5883,11 @@
'bool',
[param('uint32_t', 'i')],
is_const=True, is_virtual=True)
+ ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUnicast(ns3::Ipv4Address ad) const [member function]
+ cls.add_method('IsUnicast',
+ 'bool',
+ [param('ns3::Ipv4Address', 'ad')],
+ is_const=True)
## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUp(uint32_t i) const [member function]
cls.add_method('IsUp',
'bool',
@@ -6460,151 +6221,6 @@
[param('ns3::Ipv6Address const &', 'value')])
return
-def register_Ns3Ipv6Interface_methods(root_module, cls):
- ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
- cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
- ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
- cls.add_constructor([])
- ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
- cls.add_method('AddAddress',
- 'bool',
- [param('ns3::Ipv6InterfaceAddress', 'iface')])
- ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
- cls.add_method('GetAddress',
- 'ns3::Ipv6InterfaceAddress',
- [param('uint32_t', 'index')],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
- cls.add_method('GetAddressMatchingDestination',
- 'ns3::Ipv6InterfaceAddress',
- [param('ns3::Ipv6Address', 'dst')])
- ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
- cls.add_method('GetBaseReachableTime',
- 'uint16_t',
- [],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
- cls.add_method('GetCurHopLimit',
- 'uint8_t',
- [],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): ns3::Ptr ns3::Ipv6Interface::GetDevice() const [member function]
- cls.add_method('GetDevice',
- 'ns3::Ptr< ns3::NetDevice >',
- [],
- is_const=True, is_virtual=True)
- ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
- cls.add_method('GetLinkLocalAddress',
- 'ns3::Ipv6InterfaceAddress',
- [],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
- cls.add_method('GetMetric',
- 'uint16_t',
- [],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
- cls.add_method('GetNAddresses',
- 'uint32_t',
- [],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
- cls.add_method('GetReachableTime',
- 'uint16_t',
- [],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
- cls.add_method('GetRetransTimer',
- 'uint16_t',
- [],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
- cls.add_method('GetTypeId',
- 'ns3::TypeId',
- [],
- is_static=True)
- ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
- cls.add_method('IsDown',
- 'bool',
- [],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
- cls.add_method('IsForwarding',
- 'bool',
- [],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
- cls.add_method('IsUp',
- 'bool',
- [],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
- cls.add_method('RemoveAddress',
- 'ns3::Ipv6InterfaceAddress',
- [param('uint32_t', 'index')])
- ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
- cls.add_method('RemoveAddress',
- 'ns3::Ipv6InterfaceAddress',
- [param('ns3::Ipv6Address', 'address')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr p, ns3::Ipv6Address dest) [member function]
- cls.add_method('Send',
- 'void',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
- cls.add_method('SetBaseReachableTime',
- 'void',
- [param('uint16_t', 'baseReachableTime')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
- cls.add_method('SetCurHopLimit',
- 'void',
- [param('uint8_t', 'curHopLimit')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr device) [member function]
- cls.add_method('SetDevice',
- 'void',
- [param('ns3::Ptr< ns3::NetDevice >', 'device')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
- cls.add_method('SetDown',
- 'void',
- [])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
- cls.add_method('SetForwarding',
- 'void',
- [param('bool', 'forward')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
- cls.add_method('SetMetric',
- 'void',
- [param('uint16_t', 'metric')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr node) [member function]
- cls.add_method('SetNode',
- 'void',
- [param('ns3::Ptr< ns3::Node >', 'node')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
- cls.add_method('SetNsDadUid',
- 'void',
- [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
- cls.add_method('SetReachableTime',
- 'void',
- [param('uint16_t', 'reachableTime')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
- cls.add_method('SetRetransTimer',
- 'void',
- [param('uint16_t', 'retransTimer')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
- cls.add_method('SetState',
- 'void',
- [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
- cls.add_method('SetUp',
- 'void',
- [])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
- cls.add_method('DoDispose',
- 'void',
- [],
- visibility='protected', is_virtual=True)
- return
-
def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker::Ipv6PrefixChecker() [constructor]
cls.add_constructor([])
@@ -7259,10 +6875,10 @@
'uint32_t',
[param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')],
is_const=True)
- ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr arg0) [member function]
+ ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr nixVector) [member function]
cls.add_method('SetNixVector',
'void',
- [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+ [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
return
def register_Ns3ParetoRandomVariable_methods(root_module, cls):
diff -Naur ns-3.19/src/aodv/bindings/modulegen__gcc_LP64.py ns-3.20/src/aodv/bindings/modulegen__gcc_LP64.py
--- ns-3.19/src/aodv/bindings/modulegen__gcc_LP64.py 2014-06-17 10:34:00.433636700 -0700
+++ ns-3.20/src/aodv/bindings/modulegen__gcc_LP64.py 2014-06-17 10:33:13.762996973 -0700
@@ -102,12 +102,6 @@
module.add_class('Ipv6Address', import_from_module='ns.network')
## ipv6-address.h (module 'network'): ns3::Ipv6Address [class]
root_module['ns3::Ipv6Address'].implicitly_converts_to(root_module['ns3::Address'])
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress [class]
- module.add_class('Ipv6InterfaceAddress', import_from_module='ns.internet')
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e [enumeration]
- module.add_enum('State_e', ['TENTATIVE', 'DEPRECATED', 'PREFERRED', 'PERMANENT', 'HOMEADDRESS', 'TENTATIVE_OPTIMISTIC', 'INVALID'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e [enumeration]
- module.add_enum('Scope_e', ['HOST', 'LINKLOCAL', 'GLOBAL'], outer_class=root_module['ns3::Ipv6InterfaceAddress'], import_from_module='ns.internet')
## ipv6-address.h (module 'network'): ns3::Ipv6Prefix [class]
module.add_class('Ipv6Prefix', import_from_module='ns.network')
## mac48-address.h (module 'network'): ns3::Mac48Address [class]
@@ -148,6 +142,8 @@
module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
## tag-buffer.h (module 'network'): ns3::TagBuffer [class]
module.add_class('TagBuffer', import_from_module='ns.network')
+ ## nstime.h (module 'core'): ns3::TimeWithUnit [class]
+ module.add_class('TimeWithUnit', import_from_module='ns.core')
## timer.h (module 'core'): ns3::Timer [class]
module.add_class('Timer', import_from_module='ns.core')
## timer.h (module 'core'): ns3::Timer::DestroyPolicy [enumeration]
@@ -168,6 +164,8 @@
module.add_class('empty', import_from_module='ns.core')
## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
module.add_class('int64x64_t', import_from_module='ns.core')
+ ## int64x64-double.h (module 'core'): ns3::int64x64_t::impl_type [enumeration]
+ module.add_enum('impl_type', ['int128_impl', 'cairo_impl', 'ld_impl'], outer_class=root_module['ns3::int64x64_t'], import_from_module='ns.core')
## aodv-helper.h (module 'aodv'): ns3::AodvHelper [class]
module.add_class('AodvHelper', parent=root_module['ns3::Ipv4RoutingHelper'])
## chunk.h (module 'network'): ns3::Chunk [class]
@@ -180,10 +178,6 @@
module.add_enum('DscpType', ['DscpDefault', 'DSCP_CS1', 'DSCP_AF11', 'DSCP_AF12', 'DSCP_AF13', 'DSCP_CS2', 'DSCP_AF21', 'DSCP_AF22', 'DSCP_AF23', 'DSCP_CS3', 'DSCP_AF31', 'DSCP_AF32', 'DSCP_AF33', 'DSCP_CS4', 'DSCP_AF41', 'DSCP_AF42', 'DSCP_AF43', 'DSCP_CS5', 'DSCP_EF', 'DSCP_CS6', 'DSCP_CS7'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
## ipv4-header.h (module 'internet'): ns3::Ipv4Header::EcnType [enumeration]
module.add_enum('EcnType', ['ECN_NotECT', 'ECN_ECT1', 'ECN_ECT0', 'ECN_CE'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
- ## ipv6-header.h (module 'internet'): ns3::Ipv6Header [class]
- module.add_class('Ipv6Header', import_from_module='ns.internet', parent=root_module['ns3::Header'])
- ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::NextHeader_e [enumeration]
- module.add_enum('NextHeader_e', ['IPV6_EXT_HOP_BY_HOP', 'IPV6_IPV4', 'IPV6_TCP', 'IPV6_UDP', 'IPV6_IPV6', 'IPV6_EXT_ROUTING', 'IPV6_EXT_FRAGMENTATION', 'IPV6_EXT_CONFIDENTIALITY', 'IPV6_EXT_AUTHENTIFICATION', 'IPV6_ICMPV6', 'IPV6_EXT_END', 'IPV6_EXT_DESTINATION', 'IPV6_SCTP', 'IPV6_EXT_MOBILITY', 'IPV6_UDP_LITE'], outer_class=root_module['ns3::Ipv6Header'], import_from_module='ns.internet')
## object.h (module 'core'): ns3::Object [class]
module.add_class('Object', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
## object.h (module 'core'): ns3::Object::AggregateIterator [class]
@@ -296,10 +290,6 @@
module.add_class('ExponentialRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
## random-variable-stream.h (module 'core'): ns3::GammaRandomVariable [class]
module.add_class('GammaRandomVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariableStream'])
- ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol [class]
- module.add_class('IpL4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
- ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus [enumeration]
- module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::IpL4Protocol'], import_from_module='ns.internet')
## ipv4.h (module 'internet'): ns3::Ipv4 [class]
module.add_class('Ipv4', import_from_module='ns.internet', parent=root_module['ns3::Object'])
## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker [class]
@@ -326,8 +316,6 @@
module.add_class('Ipv6AddressChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
## ipv6-address.h (module 'network'): ns3::Ipv6AddressValue [class]
module.add_class('Ipv6AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
- ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface [class]
- module.add_class('Ipv6Interface', import_from_module='ns.internet', parent=root_module['ns3::Object'])
## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker [class]
module.add_class('Ipv6PrefixChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
## ipv6-address.h (module 'network'): ns3::Ipv6PrefixValue [class]
@@ -370,8 +358,8 @@
module.add_class('AddressValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
## ipv4-list-routing.h (module 'internet'): ns3::Ipv4ListRouting [class]
module.add_class('Ipv4ListRouting', import_from_module='ns.internet', parent=root_module['ns3::Ipv4RoutingProtocol'])
- module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type='list')
- module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
+ module.add_container('std::list< ns3::Ptr< ns3::Packet > >', 'ns3::Ptr< ns3::Packet >', container_type=u'list')
+ module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type=u'map')
## Register a nested module for the namespace FatalImpl
@@ -400,12 +388,12 @@
## hash-function.h (module 'core'): ns3::Hash::Implementation [class]
module.add_class('Implementation', import_from_module='ns.core', parent=root_module['ns3::SimpleRefCount< ns3::Hash::Implementation, ns3::empty, ns3::DefaultDeleter >'])
- typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash64Function_ptr')
- typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash64Function_ptr*')
- typehandlers.add_type_alias('uint64_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash64Function_ptr&')
- typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *', 'ns3::Hash::Hash32Function_ptr')
- typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) **', 'ns3::Hash::Hash32Function_ptr*')
- typehandlers.add_type_alias('uint32_t ( * ) ( char const *, size_t ) *&', 'ns3::Hash::Hash32Function_ptr&')
+ typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash64Function_ptr')
+ typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash64Function_ptr*')
+ typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash64Function_ptr&')
+ typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *', u'ns3::Hash::Hash32Function_ptr')
+ typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) **', u'ns3::Hash::Hash32Function_ptr*')
+ typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t ) *&', u'ns3::Hash::Hash32Function_ptr&')
## Register a nested module for the namespace Function
@@ -460,8 +448,8 @@
module.add_class('RreqHeader', parent=root_module['ns3::Header'])
## aodv-packet.h (module 'aodv'): ns3::aodv::TypeHeader [class]
module.add_class('TypeHeader', parent=root_module['ns3::Header'])
- module.add_container('std::map< ns3::Ipv4Address, unsigned int >', ('ns3::Ipv4Address', 'unsigned int'), container_type='map')
- module.add_container('std::vector< ns3::Ipv4Address >', 'ns3::Ipv4Address', container_type='vector')
+ module.add_container('std::map< ns3::Ipv4Address, unsigned int >', ('ns3::Ipv4Address', 'unsigned int'), container_type=u'map')
+ module.add_container('std::vector< ns3::Ipv4Address >', 'ns3::Ipv4Address', container_type=u'vector')
def register_methods(root_module):
register_Ns3Address_methods(root_module, root_module['ns3::Address'])
@@ -491,7 +479,6 @@
register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
register_Ns3Ipv4RoutingHelper_methods(root_module, root_module['ns3::Ipv4RoutingHelper'])
register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
- register_Ns3Ipv6InterfaceAddress_methods(root_module, root_module['ns3::Ipv6InterfaceAddress'])
register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
register_Ns3Mac48Address_methods(root_module, root_module['ns3::Mac48Address'])
register_Ns3NodeContainer_methods(root_module, root_module['ns3::NodeContainer'])
@@ -509,6 +496,7 @@
register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
+ register_Ns3TimeWithUnit_methods(root_module, root_module['ns3::TimeWithUnit'])
register_Ns3Timer_methods(root_module, root_module['ns3::Timer'])
register_Ns3TimerImpl_methods(root_module, root_module['ns3::TimerImpl'])
register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
@@ -520,7 +508,6 @@
register_Ns3Chunk_methods(root_module, root_module['ns3::Chunk'])
register_Ns3Header_methods(root_module, root_module['ns3::Header'])
register_Ns3Ipv4Header_methods(root_module, root_module['ns3::Ipv4Header'])
- register_Ns3Ipv6Header_methods(root_module, root_module['ns3::Ipv6Header'])
register_Ns3Object_methods(root_module, root_module['ns3::Object'])
register_Ns3ObjectAggregateIterator_methods(root_module, root_module['ns3::Object::AggregateIterator'])
register_Ns3RandomVariableStream_methods(root_module, root_module['ns3::RandomVariableStream'])
@@ -571,7 +558,6 @@
register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
register_Ns3ExponentialRandomVariable_methods(root_module, root_module['ns3::ExponentialRandomVariable'])
register_Ns3GammaRandomVariable_methods(root_module, root_module['ns3::GammaRandomVariable'])
- register_Ns3IpL4Protocol_methods(root_module, root_module['ns3::IpL4Protocol'])
register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
register_Ns3Ipv4AddressChecker_methods(root_module, root_module['ns3::Ipv4AddressChecker'])
register_Ns3Ipv4AddressValue_methods(root_module, root_module['ns3::Ipv4AddressValue'])
@@ -584,7 +570,6 @@
register_Ns3Ipv4RoutingProtocol_methods(root_module, root_module['ns3::Ipv4RoutingProtocol'])
register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
- register_Ns3Ipv6Interface_methods(root_module, root_module['ns3::Ipv6Interface'])
register_Ns3Ipv6PrefixChecker_methods(root_module, root_module['ns3::Ipv6PrefixChecker'])
register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
register_Ns3LogNormalRandomVariable_methods(root_module, root_module['ns3::LogNormalRandomVariable'])
@@ -871,6 +856,10 @@
cls.add_method('Next',
'void',
[param('uint32_t', 'delta')])
+ ## buffer.h (module 'network'): uint8_t ns3::Buffer::Iterator::PeekU8() [member function]
+ cls.add_method('PeekU8',
+ 'uint8_t',
+ [])
## buffer.h (module 'network'): void ns3::Buffer::Iterator::Prev() [member function]
cls.add_method('Prev',
'void',
@@ -883,6 +872,10 @@
cls.add_method('Read',
'void',
[param('uint8_t *', 'buffer'), param('uint32_t', 'size')])
+ ## buffer.h (module 'network'): void ns3::Buffer::Iterator::Read(ns3::Buffer::Iterator start, uint32_t size) [member function]
+ cls.add_method('Read',
+ 'void',
+ [param('ns3::Buffer::Iterator', 'start'), param('uint32_t', 'size')])
## buffer.h (module 'network'): uint16_t ns3::Buffer::Iterator::ReadLsbtohU16() [member function]
cls.add_method('ReadLsbtohU16',
'uint16_t',
@@ -1781,61 +1774,6 @@
[param('uint8_t *', 'address')])
return
-def register_Ns3Ipv6InterfaceAddress_methods(root_module, cls):
- cls.add_binary_comparison_operator('!=')
- cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('==')
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress() [constructor]
- cls.add_constructor([])
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address) [constructor]
- cls.add_constructor([param('ns3::Ipv6Address', 'address')])
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6Address address, ns3::Ipv6Prefix prefix) [constructor]
- cls.add_constructor([param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6Prefix', 'prefix')])
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Ipv6InterfaceAddress(ns3::Ipv6InterfaceAddress const & o) [copy constructor]
- cls.add_constructor([param('ns3::Ipv6InterfaceAddress const &', 'o')])
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6InterfaceAddress::GetAddress() const [member function]
- cls.add_method('GetAddress',
- 'ns3::Ipv6Address',
- [],
- is_const=True)
- ## ipv6-interface-address.h (module 'internet'): uint32_t ns3::Ipv6InterfaceAddress::GetNsDadUid() const [member function]
- cls.add_method('GetNsDadUid',
- 'uint32_t',
- [],
- is_const=True)
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6Prefix ns3::Ipv6InterfaceAddress::GetPrefix() const [member function]
- cls.add_method('GetPrefix',
- 'ns3::Ipv6Prefix',
- [],
- is_const=True)
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::Scope_e ns3::Ipv6InterfaceAddress::GetScope() const [member function]
- cls.add_method('GetScope',
- 'ns3::Ipv6InterfaceAddress::Scope_e',
- [],
- is_const=True)
- ## ipv6-interface-address.h (module 'internet'): ns3::Ipv6InterfaceAddress::State_e ns3::Ipv6InterfaceAddress::GetState() const [member function]
- cls.add_method('GetState',
- 'ns3::Ipv6InterfaceAddress::State_e',
- [],
- is_const=True)
- ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetAddress(ns3::Ipv6Address address) [member function]
- cls.add_method('SetAddress',
- 'void',
- [param('ns3::Ipv6Address', 'address')])
- ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetNsDadUid(uint32_t uid) [member function]
- cls.add_method('SetNsDadUid',
- 'void',
- [param('uint32_t', 'uid')])
- ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetScope(ns3::Ipv6InterfaceAddress::Scope_e scope) [member function]
- cls.add_method('SetScope',
- 'void',
- [param('ns3::Ipv6InterfaceAddress::Scope_e', 'scope')])
- ## ipv6-interface-address.h (module 'internet'): void ns3::Ipv6InterfaceAddress::SetState(ns3::Ipv6InterfaceAddress::State_e state) [member function]
- cls.add_method('SetState',
- 'void',
- [param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
- return
-
def register_Ns3Ipv6Prefix_methods(root_module, cls):
cls.add_binary_comparison_operator('!=')
cls.add_output_stream_operator()
@@ -2517,6 +2455,14 @@
[param('uint8_t', 'v')])
return
+def register_Ns3TimeWithUnit_methods(root_module, cls):
+ cls.add_output_stream_operator()
+ ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::TimeWithUnit const & arg0) [copy constructor]
+ cls.add_constructor([param('ns3::TimeWithUnit const &', 'arg0')])
+ ## nstime.h (module 'core'): ns3::TimeWithUnit::TimeWithUnit(ns3::Time const time, ns3::Time::Unit const unit) [constructor]
+ cls.add_constructor([param('ns3::Time const', 'time'), param('ns3::Time::Unit const', 'unit')])
+ return
+
def register_Ns3Timer_methods(root_module, cls):
## timer.h (module 'core'): ns3::Timer::Timer(ns3::Timer const & arg0) [copy constructor]
cls.add_constructor([param('ns3::Timer const &', 'arg0')])
@@ -2800,61 +2746,17 @@
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'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
- cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], 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'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
- cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], 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'))
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
+ cls.add_inplace_numeric_operator('+=', param('ns3::int64x64_t const &', u'right'))
+ cls.add_binary_numeric_operator('*', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+ cls.add_binary_numeric_operator('+', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
+ cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
cls.add_unary_numeric_operator('-')
- cls.add_binary_numeric_operator('-', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], 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'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long unsigned int const', 'right'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned int const', 'right'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short unsigned int const', 'right'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('unsigned char const', 'right'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long long int const', 'right'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('long int const', 'right'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('int const', 'right'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('short int const', 'right'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('signed char const', 'right'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('double const', 'right'))
- cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', 'right'))
+ cls.add_binary_numeric_operator('/', root_module['ns3::int64x64_t'], root_module['ns3::int64x64_t'], param('ns3::int64x64_t const &', u'right'))
cls.add_binary_comparison_operator('<')
cls.add_binary_comparison_operator('>')
- cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', 'right'))
- cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', 'right'))
- cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', 'right'))
+ cls.add_inplace_numeric_operator('*=', param('ns3::int64x64_t const &', u'right'))
+ cls.add_inplace_numeric_operator('-=', param('ns3::int64x64_t const &', u'right'))
+ cls.add_inplace_numeric_operator('/=', param('ns3::int64x64_t const &', u'right'))
cls.add_output_stream_operator()
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
@@ -2862,6 +2764,8 @@
cls.add_constructor([])
## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(double v) [constructor]
cls.add_constructor([param('double', 'v')])
+ ## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long double v) [constructor]
+ cls.add_constructor([param('long double', 'v')])
## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(int v) [constructor]
cls.add_constructor([param('int', 'v')])
## int64x64-double.h (module 'core'): ns3::int64x64_t::int64x64_t(long int v) [constructor]
@@ -2902,6 +2806,8 @@
cls.add_method('MulByInvert',
'void',
[param('ns3::int64x64_t const &', 'o')])
+ ## int64x64-double.h (module 'core'): ns3::int64x64_t::implementation [variable]
+ cls.add_static_attribute('implementation', 'ns3::int64x64_t::impl_type const', is_const=True)
return
def register_Ns3AodvHelper_methods(root_module, cls):
@@ -3156,106 +3062,6 @@
[param('uint8_t', 'ttl')])
return
-def register_Ns3Ipv6Header_methods(root_module, cls):
- ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header(ns3::Ipv6Header const & arg0) [copy constructor]
- cls.add_constructor([param('ns3::Ipv6Header const &', 'arg0')])
- ## ipv6-header.h (module 'internet'): ns3::Ipv6Header::Ipv6Header() [constructor]
- cls.add_constructor([])
- ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::Deserialize(ns3::Buffer::Iterator start) [member function]
- cls.add_method('Deserialize',
- 'uint32_t',
- [param('ns3::Buffer::Iterator', 'start')],
- is_virtual=True)
- ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetDestinationAddress() const [member function]
- cls.add_method('GetDestinationAddress',
- 'ns3::Ipv6Address',
- [],
- is_const=True)
- ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetFlowLabel() const [member function]
- cls.add_method('GetFlowLabel',
- 'uint32_t',
- [],
- is_const=True)
- ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetHopLimit() const [member function]
- cls.add_method('GetHopLimit',
- 'uint8_t',
- [],
- is_const=True)
- ## ipv6-header.h (module 'internet'): ns3::TypeId ns3::Ipv6Header::GetInstanceTypeId() const [member function]
- cls.add_method('GetInstanceTypeId',
- 'ns3::TypeId',
- [],
- is_const=True, is_virtual=True)
- ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetNextHeader() const [member function]
- cls.add_method('GetNextHeader',
- 'uint8_t',
- [],
- is_const=True)
- ## ipv6-header.h (module 'internet'): uint16_t ns3::Ipv6Header::GetPayloadLength() const [member function]
- cls.add_method('GetPayloadLength',
- 'uint16_t',
- [],
- is_const=True)
- ## ipv6-header.h (module 'internet'): uint32_t ns3::Ipv6Header::GetSerializedSize() const [member function]
- cls.add_method('GetSerializedSize',
- 'uint32_t',
- [],
- is_const=True, is_virtual=True)
- ## ipv6-header.h (module 'internet'): ns3::Ipv6Address ns3::Ipv6Header::GetSourceAddress() const [member function]
- cls.add_method('GetSourceAddress',
- 'ns3::Ipv6Address',
- [],
- is_const=True)
- ## ipv6-header.h (module 'internet'): uint8_t ns3::Ipv6Header::GetTrafficClass() const [member function]
- cls.add_method('GetTrafficClass',
- 'uint8_t',
- [],
- is_const=True)
- ## ipv6-header.h (module 'internet'): static ns3::TypeId ns3::Ipv6Header::GetTypeId() [member function]
- cls.add_method('GetTypeId',
- 'ns3::TypeId',
- [],
- is_static=True)
- ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Print(std::ostream & os) const [member function]
- cls.add_method('Print',
- 'void',
- [param('std::ostream &', 'os')],
- is_const=True, is_virtual=True)
- ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::Serialize(ns3::Buffer::Iterator start) const [member function]
- cls.add_method('Serialize',
- 'void',
- [param('ns3::Buffer::Iterator', 'start')],
- is_const=True, is_virtual=True)
- ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetDestinationAddress(ns3::Ipv6Address dst) [member function]
- cls.add_method('SetDestinationAddress',
- 'void',
- [param('ns3::Ipv6Address', 'dst')])
- ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetFlowLabel(uint32_t flow) [member function]
- cls.add_method('SetFlowLabel',
- 'void',
- [param('uint32_t', 'flow')])
- ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetHopLimit(uint8_t limit) [member function]
- cls.add_method('SetHopLimit',
- 'void',
- [param('uint8_t', 'limit')])
- ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetNextHeader(uint8_t next) [member function]
- cls.add_method('SetNextHeader',
- 'void',
- [param('uint8_t', 'next')])
- ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetPayloadLength(uint16_t len) [member function]
- cls.add_method('SetPayloadLength',
- 'void',
- [param('uint16_t', 'len')])
- ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetSourceAddress(ns3::Ipv6Address src) [member function]
- cls.add_method('SetSourceAddress',
- 'void',
- [param('ns3::Ipv6Address', 'src')])
- ## ipv6-header.h (module 'internet'): void ns3::Ipv6Header::SetTrafficClass(uint8_t traffic) [member function]
- cls.add_method('SetTrafficClass',
- 'void',
- [param('uint8_t', 'traffic')])
- return
-
def register_Ns3Object_methods(root_module, cls):
## object.h (module 'core'): ns3::Object::Object() [constructor]
cls.add_constructor([])
@@ -4163,12 +3969,14 @@
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'))
- cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', 'right'))
+ cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', u'right'))
+ cls.add_binary_numeric_operator('*', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
+ cls.add_binary_numeric_operator('+', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+ cls.add_binary_numeric_operator('-', root_module['ns3::Time'], root_module['ns3::Time'], param('ns3::Time const &', u'right'))
+ cls.add_binary_numeric_operator('/', root_module['ns3::Time'], root_module['ns3::Time'], param('int64_t const &', u'right'))
cls.add_binary_comparison_operator('<')
cls.add_binary_comparison_operator('>')
- cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', 'right'))
+ cls.add_inplace_numeric_operator('-=', param('ns3::Time const &', u'right'))
cls.add_output_stream_operator()
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>=')
@@ -4194,6 +4002,11 @@
cls.add_constructor([param('std::string const &', 's')])
## nstime.h (module 'core'): ns3::Time::Time(ns3::int64x64_t const & value) [constructor]
cls.add_constructor([param('ns3::int64x64_t const &', 'value')])
+ ## nstime.h (module 'core'): ns3::TimeWithUnit ns3::Time::As(ns3::Time::Unit const unit) const [member function]
+ cls.add_method('As',
+ 'ns3::TimeWithUnit',
+ [param('ns3::Time::Unit const', 'unit')],
+ is_const=True)
## nstime.h (module 'core'): int ns3::Time::Compare(ns3::Time const & o) const [member function]
cls.add_method('Compare',
'int',
@@ -5647,63 +5460,6 @@
is_virtual=True)
return
-def register_Ns3IpL4Protocol_methods(root_module, cls):
- ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol() [constructor]
- cls.add_constructor([])
- ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::IpL4Protocol(ns3::IpL4Protocol const & arg0) [copy constructor]
- cls.add_constructor([param('ns3::IpL4Protocol const &', 'arg0')])
- ## ip-l4-protocol.h (module 'internet'): ns3::Callback,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget() const [member function]
- cls.add_method('GetDownTarget',
- 'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >',
- [],
- is_pure_virtual=True, is_const=True, is_virtual=True)
- ## ip-l4-protocol.h (module 'internet'): ns3::Callback,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ns3::IpL4Protocol::GetDownTarget6() const [member function]
- cls.add_method('GetDownTarget6',
- 'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >',
- [],
- is_pure_virtual=True, is_const=True, is_virtual=True)
- ## ip-l4-protocol.h (module 'internet'): int ns3::IpL4Protocol::GetProtocolNumber() const [member function]
- cls.add_method('GetProtocolNumber',
- 'int',
- [],
- is_pure_virtual=True, is_const=True, is_virtual=True)
- ## ip-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::IpL4Protocol::GetTypeId() [member function]
- cls.add_method('GetTypeId',
- 'ns3::TypeId',
- [],
- is_static=True)
- ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr p, ns3::Ipv4Header const & header, ns3::Ptr incomingInterface) [member function]
- cls.add_method('Receive',
- 'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::Ipv4Interface >', 'incomingInterface')],
- is_pure_virtual=True, is_virtual=True)
- ## ip-l4-protocol.h (module 'internet'): ns3::IpL4Protocol::RxStatus ns3::IpL4Protocol::Receive(ns3::Ptr p, ns3::Ipv6Header const & header, ns3::Ptr incomingInterface) [member function]
- cls.add_method('Receive',
- 'ns3::IpL4Protocol::RxStatus',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Header const &', 'header'), param('ns3::Ptr< ns3::Ipv6Interface >', 'incomingInterface')],
- is_pure_virtual=True, is_virtual=True)
- ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv4Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv4Address payloadSource, ns3::Ipv4Address payloadDestination, uint8_t const * payload) [member function]
- cls.add_method('ReceiveIcmp',
- 'void',
- [param('ns3::Ipv4Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv4Address', 'payloadSource'), param('ns3::Ipv4Address', 'payloadDestination'), param('uint8_t const *', 'payload')],
- is_virtual=True)
- ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::ReceiveIcmp(ns3::Ipv6Address icmpSource, uint8_t icmpTtl, uint8_t icmpType, uint8_t icmpCode, uint32_t icmpInfo, ns3::Ipv6Address payloadSource, ns3::Ipv6Address payloadDestination, uint8_t const * payload) [member function]
- cls.add_method('ReceiveIcmp',
- 'void',
- [param('ns3::Ipv6Address', 'icmpSource'), param('uint8_t', 'icmpTtl'), param('uint8_t', 'icmpType'), param('uint8_t', 'icmpCode'), param('uint32_t', 'icmpInfo'), param('ns3::Ipv6Address', 'payloadSource'), param('ns3::Ipv6Address', 'payloadDestination'), param('uint8_t const *', 'payload')],
- is_virtual=True)
- ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget(ns3::Callback,ns3::Ipv4Address,ns3::Ipv4Address,unsigned char,ns3::Ptr,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
- cls.add_method('SetDownTarget',
- 'void',
- [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv4Address, ns3::Ipv4Address, unsigned char, ns3::Ptr< ns3::Ipv4Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')],
- is_pure_virtual=True, is_virtual=True)
- ## ip-l4-protocol.h (module 'internet'): void ns3::IpL4Protocol::SetDownTarget6(ns3::Callback,ns3::Ipv6Address,ns3::Ipv6Address,unsigned char,ns3::Ptr,ns3::empty,ns3::empty,ns3::empty,ns3::empty> cb) [member function]
- cls.add_method('SetDownTarget6',
- 'void',
- [param('ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::Ipv6Address, ns3::Ipv6Address, unsigned char, ns3::Ptr< ns3::Ipv6Route >, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'cb')],
- is_pure_virtual=True, is_virtual=True)
- return
-
def register_Ns3Ipv4_methods(root_module, cls):
## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
@@ -6127,6 +5883,11 @@
'bool',
[param('uint32_t', 'i')],
is_const=True, is_virtual=True)
+ ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUnicast(ns3::Ipv4Address ad) const [member function]
+ cls.add_method('IsUnicast',
+ 'bool',
+ [param('ns3::Ipv4Address', 'ad')],
+ is_const=True)
## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUp(uint32_t i) const [member function]
cls.add_method('IsUp',
'bool',
@@ -6460,151 +6221,6 @@
[param('ns3::Ipv6Address const &', 'value')])
return
-def register_Ns3Ipv6Interface_methods(root_module, cls):
- ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface(ns3::Ipv6Interface const & arg0) [copy constructor]
- cls.add_constructor([param('ns3::Ipv6Interface const &', 'arg0')])
- ## ipv6-interface.h (module 'internet'): ns3::Ipv6Interface::Ipv6Interface() [constructor]
- cls.add_constructor([])
- ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::AddAddress(ns3::Ipv6InterfaceAddress iface) [member function]
- cls.add_method('AddAddress',
- 'bool',
- [param('ns3::Ipv6InterfaceAddress', 'iface')])
- ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddress(uint32_t index) const [member function]
- cls.add_method('GetAddress',
- 'ns3::Ipv6InterfaceAddress',
- [param('uint32_t', 'index')],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetAddressMatchingDestination(ns3::Ipv6Address dst) [member function]
- cls.add_method('GetAddressMatchingDestination',
- 'ns3::Ipv6InterfaceAddress',
- [param('ns3::Ipv6Address', 'dst')])
- ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetBaseReachableTime() const [member function]
- cls.add_method('GetBaseReachableTime',
- 'uint16_t',
- [],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): uint8_t ns3::Ipv6Interface::GetCurHopLimit() const [member function]
- cls.add_method('GetCurHopLimit',
- 'uint8_t',
- [],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): ns3::Ptr ns3::Ipv6Interface::GetDevice() const [member function]
- cls.add_method('GetDevice',
- 'ns3::Ptr< ns3::NetDevice >',
- [],
- is_const=True, is_virtual=True)
- ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::GetLinkLocalAddress() const [member function]
- cls.add_method('GetLinkLocalAddress',
- 'ns3::Ipv6InterfaceAddress',
- [],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetMetric() const [member function]
- cls.add_method('GetMetric',
- 'uint16_t',
- [],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): uint32_t ns3::Ipv6Interface::GetNAddresses() const [member function]
- cls.add_method('GetNAddresses',
- 'uint32_t',
- [],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetReachableTime() const [member function]
- cls.add_method('GetReachableTime',
- 'uint16_t',
- [],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): uint16_t ns3::Ipv6Interface::GetRetransTimer() const [member function]
- cls.add_method('GetRetransTimer',
- 'uint16_t',
- [],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): static ns3::TypeId ns3::Ipv6Interface::GetTypeId() [member function]
- cls.add_method('GetTypeId',
- 'ns3::TypeId',
- [],
- is_static=True)
- ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsDown() const [member function]
- cls.add_method('IsDown',
- 'bool',
- [],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsForwarding() const [member function]
- cls.add_method('IsForwarding',
- 'bool',
- [],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): bool ns3::Ipv6Interface::IsUp() const [member function]
- cls.add_method('IsUp',
- 'bool',
- [],
- is_const=True)
- ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(uint32_t index) [member function]
- cls.add_method('RemoveAddress',
- 'ns3::Ipv6InterfaceAddress',
- [param('uint32_t', 'index')])
- ## ipv6-interface.h (module 'internet'): ns3::Ipv6InterfaceAddress ns3::Ipv6Interface::RemoveAddress(ns3::Ipv6Address address) [member function]
- cls.add_method('RemoveAddress',
- 'ns3::Ipv6InterfaceAddress',
- [param('ns3::Ipv6Address', 'address')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::Send(ns3::Ptr p, ns3::Ipv6Address dest) [member function]
- cls.add_method('Send',
- 'void',
- [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv6Address', 'dest')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetBaseReachableTime(uint16_t baseReachableTime) [member function]
- cls.add_method('SetBaseReachableTime',
- 'void',
- [param('uint16_t', 'baseReachableTime')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetCurHopLimit(uint8_t curHopLimit) [member function]
- cls.add_method('SetCurHopLimit',
- 'void',
- [param('uint8_t', 'curHopLimit')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDevice(ns3::Ptr device) [member function]
- cls.add_method('SetDevice',
- 'void',
- [param('ns3::Ptr< ns3::NetDevice >', 'device')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetDown() [member function]
- cls.add_method('SetDown',
- 'void',
- [])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetForwarding(bool forward) [member function]
- cls.add_method('SetForwarding',
- 'void',
- [param('bool', 'forward')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetMetric(uint16_t metric) [member function]
- cls.add_method('SetMetric',
- 'void',
- [param('uint16_t', 'metric')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNode(ns3::Ptr node) [member function]
- cls.add_method('SetNode',
- 'void',
- [param('ns3::Ptr< ns3::Node >', 'node')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetNsDadUid(ns3::Ipv6Address address, uint32_t uid) [member function]
- cls.add_method('SetNsDadUid',
- 'void',
- [param('ns3::Ipv6Address', 'address'), param('uint32_t', 'uid')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetReachableTime(uint16_t reachableTime) [member function]
- cls.add_method('SetReachableTime',
- 'void',
- [param('uint16_t', 'reachableTime')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetRetransTimer(uint16_t retransTimer) [member function]
- cls.add_method('SetRetransTimer',
- 'void',
- [param('uint16_t', 'retransTimer')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetState(ns3::Ipv6Address address, ns3::Ipv6InterfaceAddress::State_e state) [member function]
- cls.add_method('SetState',
- 'void',
- [param('ns3::Ipv6Address', 'address'), param('ns3::Ipv6InterfaceAddress::State_e', 'state')])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::SetUp() [member function]
- cls.add_method('SetUp',
- 'void',
- [])
- ## ipv6-interface.h (module 'internet'): void ns3::Ipv6Interface::DoDispose() [member function]
- cls.add_method('DoDispose',
- 'void',
- [],
- visibility='protected', is_virtual=True)
- return
-
def register_Ns3Ipv6PrefixChecker_methods(root_module, cls):
## ipv6-address.h (module 'network'): ns3::Ipv6PrefixChecker::Ipv6PrefixChecker() [constructor]
cls.add_constructor([])
@@ -7259,10 +6875,10 @@
'uint32_t',
[param('uint8_t *', 'buffer'), param('uint32_t', 'maxSize')],
is_const=True)
- ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr arg0) [member function]
+ ## packet.h (module 'network'): void ns3::Packet::SetNixVector(ns3::Ptr nixVector) [member function]
cls.add_method('SetNixVector',
'void',
- [param('ns3::Ptr< ns3::NixVector >', 'arg0')])
+ [param('ns3::Ptr< ns3::NixVector >', 'nixVector')])
return
def register_Ns3ParetoRandomVariable_methods(root_module, cls):
diff -Naur ns-3.19/src/aodv/model/aodv-packet.cc ns-3.20/src/aodv/model/aodv-packet.cc
--- ns-3.19/src/aodv/model/aodv-packet.cc 2014-06-17 10:34:00.438636662 -0700
+++ ns-3.20/src/aodv/model/aodv-packet.cc 2014-06-17 10:33:13.767996934 -0700
@@ -34,8 +34,7 @@
namespace aodv
{
-NS_OBJECT_ENSURE_REGISTERED (TypeHeader)
- ;
+NS_OBJECT_ENSURE_REGISTERED (TypeHeader);
TypeHeader::TypeHeader (MessageType t) :
m_type (t), m_valid (true)
@@ -147,8 +146,7 @@
{
}
-NS_OBJECT_ENSURE_REGISTERED (RreqHeader)
- ;
+NS_OBJECT_ENSURE_REGISTERED (RreqHeader);
TypeId
RreqHeader::GetTypeId ()
@@ -287,8 +285,7 @@
m_lifeTime = uint32_t (lifeTime.GetMilliSeconds ());
}
-NS_OBJECT_ENSURE_REGISTERED (RrepHeader)
- ;
+NS_OBJECT_ENSURE_REGISTERED (RrepHeader);
TypeId
RrepHeader::GetTypeId ()
@@ -430,8 +427,7 @@
{
}
-NS_OBJECT_ENSURE_REGISTERED (RrepAckHeader)
- ;
+NS_OBJECT_ENSURE_REGISTERED (RrepAckHeader);
TypeId
RrepAckHeader::GetTypeId ()
@@ -497,8 +493,7 @@
{
}
-NS_OBJECT_ENSURE_REGISTERED (RerrHeader)
- ;
+NS_OBJECT_ENSURE_REGISTERED (RerrHeader);
TypeId
RerrHeader::GetTypeId ()
diff -Naur ns-3.19/src/aodv/model/aodv-routing-protocol.cc ns-3.20/src/aodv/model/aodv-routing-protocol.cc
--- ns-3.19/src/aodv/model/aodv-routing-protocol.cc 2014-06-17 10:34:00.439636654 -0700
+++ ns-3.20/src/aodv/model/aodv-routing-protocol.cc 2014-06-17 10:33:13.769996919 -0700
@@ -48,8 +48,7 @@
{
namespace aodv
{
-NS_OBJECT_ENSURE_REGISTERED (RoutingProtocol)
- ;
+NS_OBJECT_ENSURE_REGISTERED (RoutingProtocol);
/// UDP Port for AODV control traffic
const uint32_t RoutingProtocol::AODV_PORT = 654;
@@ -112,8 +111,7 @@
int32_t m_oif;
};
-NS_OBJECT_ENSURE_REGISTERED (DeferredRouteOutputTag)
- ;
+NS_OBJECT_ENSURE_REGISTERED (DeferredRouteOutputTag);
//-----------------------------------------------------------------------------
@@ -1746,7 +1744,7 @@
{
destination = iface.GetBroadcast ();
}
- socket->SendTo (packet, 0, InetSocketAddress (destination, AODV_PORT));
+ socket->SendTo (packet->Copy (), 0, InetSocketAddress (destination, AODV_PORT));
}
}
}
diff -Naur ns-3.19/src/aodv/test/aodv-chain-regression-test-0-0.pcap ns-3.20/src/aodv/test/aodv-chain-regression-test-0-0.pcap
--- ns-3.19/src/aodv/test/aodv-chain-regression-test-0-0.pcap 2014-06-17 10:34:00.442636631 -0700
+++ ns-3.20/src/aodv/test/aodv-chain-regression-test-0-0.pcap 2014-06-17 10:33:13.772996895 -0700
@@ -1,4 +1,4 @@
-ò i X X E 4
+ò i X X E 4
(
@@ -22,73 +22,74 @@
Ԁ A x x <