diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/AUTHORS ns-3.28/AUTHORS
--- ns-3.27/AUTHORS 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/AUTHORS 2018-03-22 09:33:19.000000000 -0700
@@ -45,6 +45,7 @@
Christoph Döpmann (doepmanc@informatik.hu-berlin.de)
Craig Dowell (craigdo@ee.washington.edu)
Gilaras Drakeson (gilaras@gmail.com)
+Mathias Ettinger (mettinger@toulouse.viveris.com)
Christian Facchini (c.facchini@gmail.com)
Denis Fakhriev (fakhriev@iitp.ru)
Jahanzeb Farooq (Jahanzeb.Farooq@inria.fr, Jahanzeb.Farooq@gmail.com)
@@ -84,9 +85,10 @@
Jared Ivey (j.ivey@gatech.edu)
Atishay Jain (atishayjain25@gmail.com)
Sourabh Jain (jainsourabh679@gmail.com)
-Sascha Alexander Jopen (jopen@informatik.uni-bonn.de)
+Vivek Jain (jain.vivek.anand@gmail.com)
Sam Jansen (sam.jansen@gmail.com)
Liu Jian (liujatp@gmail.com)
+Sascha Alexander Jopen (jopen@informatik.uni-bonn.de)
Piotr Jurkiewicz (piotr.jerzy.jurkiewicz@gmail.com)
Evgeny Kalishenko (ydginster@gmail.com)
Tanmay Kathpalia (tanmay.kathpalia@landisgyr.com)
@@ -114,6 +116,7 @@
Antti Makela (zarhan@cc.hut.fi)
Francesco Malandrino (francesco.malandrino@gmail.com)
Rubén Martínez (rmartinez@deic.uab.cat)
+Ryan Mast (mast9@llnl.gov)
Fabian Mauchle (f1mauchl@hsr.ch)
Andrey Mazo (mazo@iitp.ru)
Jonathan McCrohan (jmccroha@tcd.ie)
@@ -122,6 +125,7 @@
Vedran Miletić (rivanvx@gmail.com)
Saswat Mishra (clicksaswat@gmail.com)
Jens Mittag (jens.mittag@kit.edu)
+Viyom Mittal (viyommittal@gmail.com)
Marco Miozzo (mmiozzo@cttc.es)
Faker Moatamri (faker.moatamri@inria.fr)
Edvin Močibob (edvin.mocibob@gmail.com)
@@ -155,13 +159,15 @@
Michele Polese (michele.polese@gmail.com)
Ovidiu Poncea (ovidiu.poncea@cs.pub.ro)
Vikas Pushkar (vikaskupushkar@gmail.com)
+Manoj Kumar Rana (manoj24.rana@gmail.com)
Andrea Ranieri (andreran@uno.it)
Bruno Ranieri (Yrrsinn@googlemail.com)
Deepti Rajagopal (deeptir96@gmail.com)
Varun Reddy (varunamarreddy@gmail.com)
Ken Renard (kenneth.renard@arl.army.mil)
-Getachew Redieteab (redieteab.orange@gmail.com)
+Getachew Redieteab (getachew.redieteab@orange.com)
Manuel Requena (mrequena@cttc.es)
+Jakub Rewienski (jrewienski@gmail.com)
Matias Richart (mrichart@fing.edu.uy)
George F. Riley (riley@ece.gatech.edu)
Juergen Rinas (jrinas@gmx.de)
@@ -174,10 +180,12 @@
Lynne Salameh (l.salameh@cs.ucl.ac.uk)
Providence Salumu Munga (Providence.Salumu@gmail.com, Providence.Salumu_Munga@it-sudparis.eu)
Francisco Javier Sánchez-Roselly (fnavarro@ujaen.es)
+Charitha Sangaraju (charitha29193@gmail.com)
Siddharth Santurkar (siddharth.santurkar@ieee.org)
Gaurav Sathe (gaurav.sathe@tcs.com)
Robert R. Schmidt (rschmi@gmx.net)
Florian Schmidt (Florian.Schmidt@cs.rwth-aachen.de)
+Surya Seetharaman (suryaseetharaman.9@gmail.com)
Guillaume Seguin (guillaume.seguin@inria.fr)
Ioannis Selinis (selinis.g@gmail.com)
Tomasz Seweryn (tomasz.seweryn7@gmail.com)
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/bindings/python/ns3modulegen_core_customizations.py ns-3.28/bindings/python/ns3modulegen_core_customizations.py
--- ns-3.27/bindings/python/ns3modulegen_core_customizations.py 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/bindings/python/ns3modulegen_core_customizations.py 2018-03-22 09:33:19.000000000 -0700
@@ -412,7 +412,7 @@
class IosOpenmodeParam(Parameter):
DIRECTIONS = [Parameter.DIRECTION_IN]
- CTYPES = ['std::ios::openmode', 'std::_Ios_Openmode']
+ CTYPES = ['std::ios_base::openmode', 'std::_Ios_Openmode']
def convert_c_to_python(self, wrapper):
assert isinstance(wrapper, ReverseWrapperBase)
@@ -420,7 +420,7 @@
def convert_python_to_c(self, wrapper):
assert isinstance(wrapper, ForwardWrapperBase)
- name = wrapper.declarations.declare_variable("std::ios::openmode", self.name, self.default_value)
+ name = wrapper.declarations.declare_variable("std::ios_base::openmode", self.name, self.default_value)
wrapper.parse_params.add_parameter('i', ['&'+name], self.name, optional=bool(self.default_value))
wrapper.call_params.append(name)
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/bindings/python/wscript ns-3.28/bindings/python/wscript
--- ns-3.27/bindings/python/wscript 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/bindings/python/wscript 2018-03-22 09:33:19.000000000 -0700
@@ -273,10 +273,15 @@
"Missing 'pygccxml' Python module")
return
- out = subprocess.Popen([conf.env['PYTHON'][0], "-c",
- "import pygccxml; print pygccxml.__version__"],
- stdout=subprocess.PIPE).communicate()[0]
- pygccxml_version_str = out.strip()
+ try:
+ import pygccxml as pygccxml_imported
+ pygccxml_version_str = pygccxml_imported.__version__
+ except (ImportError, AttributeError):
+ Logs.warn("pygccxml version cannot be determined")
+ conf.report_optional_feature("castxml", "Python API Scanning Support", False,
+ "pygccxml Python module version is unknown")
+ return
+
# Bug 2013: pygccxml versions > 1.0.0 prepend a 'v' to version number
pygccxml_version_str = pygccxml_version_str.lstrip('v')
pygccxml_version = tuple([int(x) for x in pygccxml_version_str.split('.')])
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/CHANGES.html ns-3.28/CHANGES.html
--- ns-3.27/CHANGES.html 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/CHANGES.html 2018-03-22 09:33:19.000000000 -0700
@@ -51,6 +51,38 @@
us a note on ns-developers mailing list.
+Changes from ns-3.27 to ns-3.28
+New API:
+
+ - When deserializing Packet contents, Header::Deserialize (Buffer::Iterator start) and Trailer::Deserialize (Buffer::Iterator start) can not successfully deserialize variable-length headers and trailers. New variants of these methods that also include an 'end' parameter are now provided.
+ - Ipv[4,6]AddressGenerator can now check if an address is allocated (Ipv[4,6]AddressGenerator::IsAddressAllocated) or a network has some allocated address (Ipv[4,6]AddressGenerator::IsNetworkAllocated).
+ - LTE UEs can now use IPv6 to send and receive traffic.
+ - UAN module now supports an IP stack.
+ - Class TcpSocketBase trace source CongestionWindowInflated shows the values with the in-recovery inflation and the post-recovery deflation.
+
- Added a FIFO queue disc (FifoQueueDisc) and the Token Bucket Filter (TbfQueueDisc).
+
+Changes to existing API:
+
+ - Class LrWpanMac now supports extended addressing mode. Both McpsDataRequest and PdDataIndication methods will now use extended addressing if McpsDataRequestParams::m_srcAddrMode or McpsDataRequestParams::m_dstAddrMode are set to EXT_ADDR.
+ - Class LteUeNetDevice MAC address is now a 64-bit address and can be set during construction.
+ - Class TcpSocketBase trace source CongestionWindow shows the values without the in-recovery inflation and the post-recovery deflation; the old behavior has been moved to the new trace source CongestionWindowInflated.
+
+Changes to build system:
+
+ - The C++ standard used during compilation (default std=c++11) can be now be changed via the CXXFLAGS variable.
+
+Changed behavior:
+
+ - The Mode, MaxPackets and MaxBytes attributes of the Queue class have been deprecated in favor of the MaxSize attribute. Old attributes can still be used, but using them will be no longer possible in one of the next releases. The methods to get/set the old attributes will be removed as well.
+ - The attributes of the QueueDisc subclasses that separately determine the mode and the limit of the QueueDisc have been deprecated in favor of the single MaxSize attribute.
+ - The GetQueueSize method of some QueueDisc subclasses (e.g., RED) has been removed and replaced by the GetCurrentSize method of the QueueDisc base class.
+ - All Wi-Fi management frames are now transmitted using the lowest basic rate.
+ - The Wi-Fi spectrum model now takes into account adjacent channels through OFDM transmit spectrum masks.
+ - The CsmaNetDevice::PhyTxBeginTrace will trace all attempts to transmit, even those that result in drops. Previously, eventual channel drops were excluded from this trace.
+
- The TCP congestion window trace now does not report on window inflation during fast recovery phase because it is no longer internally maintained as an inflated value (a separate trace called CongestionWindowInflated can be used to recover the old trace behavior).
+
+
+
Changes from ns-3.26 to ns-3.27
New API:
@@ -1496,6 +1528,8 @@
Changed behavior:
+ - If the data inside the TCP buffer is less than the available window, TCP tries to ask for more data to the application, in the hope of filling the usable transmission window. In some cases, this change allows sending bigger packets than the previous versions, optimizing the transmission.
+ - In TCP, the ACK is now processed before invoking any routine that deals with the segment sending, except in case of retransmissions.
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/contrib/wscript ns-3.28/contrib/wscript
--- ns-3.27/contrib/wscript 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/contrib/wscript 2018-03-22 09:33:19.000000000 -0700
@@ -1,4 +1,3 @@
-
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
from __future__ import print_function
import os, os.path
@@ -16,9 +15,7 @@
except NameError:
from sets import Set as set # Python 2.3 fallback
-
-
-all_modules = []
+all_contrib_modules = []
for dirname in os.listdir('contrib'):
if dirname.startswith('.') or dirname == 'CVS':
continue
@@ -26,64 +23,23 @@
if not os.path.isdir(path):
continue
if os.path.exists(os.path.join(path, 'wscript')):
- all_modules.append(dirname)
-all_modules.sort()
-
-
+ all_contrib_modules.append(dirname)
+all_contrib_modules.sort()
def options(opt):
- opt.add_option('--enable-rpath',
- help=("Link programs with rpath"
- " (normally not needed, see "
- " --run and --shell; moreover, only works in some"
- " specific platforms, such as Linux and Solaris)"),
- action="store_true", dest='enable_rpath', default=False)
-
- opt.add_option('--enable-modules',
- help=("Build only these modules (and dependencies)"),
- dest='enable_modules')
-
- opt.load('boost', tooldir=['waf-tools'])
-
- for module in all_modules:
+ for module in all_contrib_modules:
opt.recurse(module, mandatory=False)
def configure(conf):
- conf.env['REQUIRED_BOOST_LIBS'] = []
- for module in all_modules:
- conf.recurse (module, name="required_boost_libs", mandatory=False)
-
- if conf.env['REQUIRED_BOOST_LIBS'] is not []:
- conf.load('boost')
- conf.check_boost(lib=' '.join (conf.env['REQUIRED_BOOST_LIBS']), mandatory=False)
- if not conf.env['LIB_BOOST']:
- conf.check_boost(lib=' '.join (conf.env['REQUIRED_BOOST_LIBS']), libpath="/usr/lib64", mandatory=False)
- if not conf.env['LIB_BOOST']:
- conf.env['LIB_BOOST'] = []
-
- # Append blddir to the module path before recursing into modules
- blddir = os.path.abspath(os.path.join(conf.bldnode.abspath(), conf.variant))
- conf.env.append_value('NS3_MODULE_PATH', blddir)
-
- for module in all_modules:
+ for module in all_contrib_modules:
conf.recurse(module, mandatory=False)
- # Remove duplicate path items
- conf.env['NS3_MODULE_PATH'] = wutils.uniquify_list(conf.env['NS3_MODULE_PATH'])
-
- if Options.options.enable_rpath:
- conf.env.append_value('RPATH', '-Wl,-rpath,%s' % (os.path.join(blddir),))
-
## Used to link the 'test-runner' program with all of ns-3 code
- conf.env['NS3_CONTRIBUTED_MODULES'] = ['ns3-' + module.split('/')[-1] for module in all_modules]
-
+ conf.env['NS3_CONTRIBUTED_MODULES'] = ['ns3-' + module.split('/')[-1] for module in all_contrib_modules]
# we need the 'ns3module' waf "feature" to be created because code
# elsewhere looks for it to find the ns3 module objects.
-@TaskGen.feature('ns3module')
-def _add_test_code(module):
- pass
def create_ns3_module(bld, name, dependencies=(), test=False):
static = bool(bld.env.ENABLE_STATIC_NS3)
@@ -142,15 +98,6 @@
return module
-@TaskGen.feature("ns3testlib")
-@TaskGen.before_method("apply_incpaths")
-def apply_incpaths_ns3testlib(self):
- if not self.source:
- return
- testdir = self.source[-1].parent.path_from(self.bld.srcnode)
- self.env.append_value("DEFINES", 'NS_TEST_SOURCEDIR="%s"' % (testdir,))
-
-
def create_ns3_module_test_library(bld, name):
# Create an ns3 module for the test library that depends only on
# the module being tested.
@@ -182,7 +129,6 @@
def ns3_python_bindings(bld):
-
# this method is called from a module wscript, so remember bld.path is not bindings/python!
module_abs_src_path = bld.path.abspath()
module = os.path.basename(module_abs_src_path)
@@ -304,7 +250,6 @@
return pymod
-
def build(bld):
bld.create_ns3_module = types.MethodType(create_ns3_module, bld)
bld.create_ns3_module_test_library = types.MethodType(create_ns3_module_test_library, bld)
@@ -314,439 +259,12 @@
# Remove these modules from the list of all modules.
for not_built in bld.env['MODULES_NOT_BUILT']:
- # XXX Because these modules are located in subdirectories of
- # test, their names in the all_modules list include the extra
- # relative path "test/". If these modules are moved into the
- # src directory, then this if block should be removed.
- if not_built == 'ns3tcp' or not_built == 'ns3wifi':
- not_built = 'test/' + not_built
-
- if not_built in all_modules:
- all_modules.remove(not_built)
+ if not_built in all_contrib_modules:
+ all_contrib_modules.remove(not_built)
- bld.recurse(list(all_modules))
+ bld.recurse(list(all_contrib_modules))
- for module in all_modules:
+ for module in all_contrib_modules:
modheader = bld(features='ns3moduleheader')
modheader.module = module.split('/')[-1]
-class ns3pcfile_task(Task.Task):
- after = 'cxx'
-
- def __str__(self):
- "string to display to the user"
- tgt_str = ' '.join([a.bldpath() for a in self.outputs])
- return 'pcfile: %s\n' % (tgt_str)
-
- def runnable_status(self):
- return super(ns3pcfile_task, self).runnable_status()
-
- def _self_libs(self, env, name, libdir):
- if env['ENABLE_STATIC_NS3']:
- path_st = 'STLIBPATH_ST'
- lib_st = 'STLIB_ST'
- lib_marker = 'STLIB_MARKER'
- else:
- path_st = 'LIBPATH_ST'
- lib_st = 'LIB_ST'
- lib_marker = 'SHLIB_MARKER'
- retval = [env[path_st] % libdir]
- if env[lib_marker]:
- retval.append(env[lib_marker])
- retval.append(env[lib_st] % name)
- return retval
-
- def _lib(self, env, dep):
- libpath = env['LIBPATH_%s' % dep]
- linkflags = env['LINKFLAGS_%s' % dep]
- libs = env['LIB_%s' % dep]
- retval = []
- for path in libpath:
- retval.append(env['LIBPATH_ST'] % path)
- retval = retval + linkflags
- for lib in libs:
- retval.append(env['LIB_ST'] % lib)
- return retval
-
- def _listify(self, v):
- if isinstance(v, list):
- return v
- else:
- return [v]
-
- def _cflags(self, dep):
- flags = self.env['CFLAGS_%s' % dep]
- return self._listify(flags)
-
- def _cxxflags(self, dep):
- return self._listify(self.env['CXXFLAGS_%s' % dep])
-
- def _defines(self, dep):
- return [self.env['DEFINES_ST'] % define for define in self.env['DEFINES_%s' % dep]]
-
- def _includes(self, dep):
- includes = self.env['INCLUDES_%s' % dep]
- return [self.env['CPPPATH_ST'] % include for include in includes]
-
- def _generate_pcfile(self, name, use, env, outfilename):
- outfile = open(outfilename, 'wt')
- prefix = env.PREFIX
- includedir = Utils.subst_vars('${INCLUDEDIR}/%s%s' % (wutils.APPNAME, wutils.VERSION), env)
- libdir = env.LIBDIR
- libs = self._self_libs(env, "%s%s-%s%s" % (wutils.APPNAME, wutils.VERSION, name[4:], env.BUILD_SUFFIX), '${libdir}')
- for dep in use:
- libs += self._lib(env, dep)
- for dep in env.LIBS:
- libs += self.env['LIB_ST'] % dep
- cflags = [self.env['CPPPATH_ST'] % '${includedir}']
- requires = []
- for dep in use:
- cflags = cflags + self._cflags(dep) + self._cxxflags(dep) + \
- self._defines(dep) + self._includes(dep)
- if dep.startswith('ns3-'):
- dep_name = dep[4:]
- requires.append("libns%s-%s%s" % (wutils.VERSION, dep_name, env.BUILD_SUFFIX))
- print("""\
-prefix=%s
-libdir=%s
-includedir=%s
-
-Name: lib%s
-Description: ns-3 module %s
-Version: %s
-Libs: %s
-Cflags: %s
-Requires: %s\
-""" % (prefix, libdir, includedir,
- name, name, wutils.VERSION, ' '.join(libs), ' '.join(cflags), ' '.join(requires)), file=outfile)
- outfile.close()
-
- def run(self):
- output_filename = self.outputs[0].abspath()
- self._generate_pcfile(self.module.name,
- self.module.to_list(self.module.use),
- self.env, output_filename)
-
-
-@TaskGen.feature('ns3pcfile')
-@TaskGen.after_method('process_rule')
-def apply(self):
- module = self.bld.find_ns3_module(self.module)
- output_filename = 'lib%s.pc' % os.path.basename(module.target)
- output_node = self.path.find_or_declare(output_filename)
- assert output_node is not None, str(self)
- task = self.create_task('ns3pcfile')
- self.bld.install_files('${LIBDIR}/pkgconfig', output_node)
- task.set_outputs([output_node])
- task.module = module
-
-
-
-@TaskGen.feature('ns3header')
-@TaskGen.after_method('process_rule')
-def apply_ns3header(self):
- if self.module is None:
- raise WafError("'module' missing on ns3headers object %s" % self)
- ns3_dir_node = self.bld.path.find_or_declare("ns3")
- for filename in set(self.to_list(self.source)):
- src_node = self.path.find_resource(filename)
- if src_node is None:
- raise WafError("source ns3 header file %s not found" % (filename,))
- dst_node = ns3_dir_node.find_or_declare(src_node.name)
- assert dst_node is not None
- task = self.create_task('ns3header')
- task.mode = getattr(self, 'mode', 'install')
- if task.mode == 'install':
- self.bld.install_files('${INCLUDEDIR}/%s%s/ns3' % (wutils.APPNAME, wutils.VERSION), [src_node])
- task.set_inputs([src_node])
- task.set_outputs([dst_node])
- else:
- task.header_to_remove = dst_node
- self.headers = set(self.to_list(self.source))
- self.source = '' # tell WAF not to process these files further
-
-
-class ns3header_task(Task.Task):
- before = 'cxx gen_ns3_module_header'
- color = 'BLUE'
-
- def __str__(self):
- "string to display to the user"
- env = self.env
- src_str = ' '.join([a.bldpath() for a in self.inputs])
- tgt_str = ' '.join([a.bldpath() for a in self.outputs])
- if self.outputs: sep = ' -> '
- else: sep = ''
- if self.mode == 'remove':
- return 'rm-ns3-header %s' % (self.header_to_remove.abspath(),)
- return 'install-ns3-header: %s' % (tgt_str)
-
- def __repr__(self):
- return str(self)
-
- def uid(self):
- try:
- return self.uid_
- except AttributeError:
- m = Utils.md5()
- up = m.update
- up(self.__class__.__name__.encode())
- for x in self.inputs + self.outputs:
- up(x.abspath().encode())
- up(self.mode.encode())
- if self.mode == 'remove':
- up(self.header_to_remove.abspath().encode())
- self.uid_ = m.digest()
- return self.uid_
-
- def runnable_status(self):
- if self.mode == 'remove':
- if os.path.exists(self.header_to_remove.abspath()):
- return Task.RUN_ME
- else:
- return Task.SKIP_ME
- else:
- return super(ns3header_task, self).runnable_status()
-
- def run(self):
- if self.mode == 'install':
- assert len(self.inputs) == len(self.outputs)
- inputs = [node.abspath() for node in self.inputs]
- outputs = [node.abspath() for node in self.outputs]
- for src, dst in zip(inputs, outputs):
- try:
- os.chmod(dst, 0o600)
- except OSError:
- pass
- shutil.copy2(src, dst)
- ## make the headers in builddir read-only, to prevent
- ## accidental modification
- os.chmod(dst, 0o400)
- return 0
- else:
- assert len(self.inputs) == 0
- assert len(self.outputs) == 0
- out_file_name = self.header_to_remove.abspath()
- try:
- os.unlink(out_file_name)
- except OSError as ex:
- if ex.errno != 2:
- raise
- return 0
-
-
-@TaskGen.feature('ns3privateheader')
-@TaskGen.after_method('process_rule')
-def apply_ns3privateheader(self):
- if self.module is None:
- raise WafError("'module' missing on ns3headers object %s" % self)
- ns3_dir_node = self.bld.path.find_or_declare("ns3/private")
- for filename in set(self.to_list(self.source)):
- src_node = self.path.find_resource(filename)
- if src_node is None:
- raise WafError("source ns3 header file %s not found" % (filename,))
- dst_node = ns3_dir_node.find_or_declare(src_node.name)
- assert dst_node is not None
- task = self.create_task('ns3privateheader')
- task.mode = getattr(self, 'mode', 'install')
- if task.mode == 'install':
- task.set_inputs([src_node])
- task.set_outputs([dst_node])
- else:
- task.header_to_remove = dst_node
- self.headers = set(self.to_list(self.source))
- self.source = '' # tell WAF not to process these files further
-
-class ns3privateheader_task(Task.Task):
- before = 'cxx gen_ns3_module_header'
- after = 'ns3header'
- color = 'BLUE'
-
- def __str__(self):
- "string to display to the user"
- env = self.env
- src_str = ' '.join([a.bldpath() for a in self.inputs])
- tgt_str = ' '.join([a.bldpath() for a in self.outputs])
- if self.outputs: sep = ' -> '
- else: sep = ''
- if self.mode == 'remove':
- return 'rm-ns3-header %s' % (self.header_to_remove.abspath(),)
- return 'install-ns3-header: %s' % (tgt_str)
-
- def __repr__(self):
- return str(self)
-
- def uid(self):
- try:
- return self.uid_
- except AttributeError:
- m = Utils.md5()
- up = m.update
- up(self.__class__.__name__.encode())
- for x in self.inputs + self.outputs:
- up(x.abspath().encode())
- up(self.mode.encode())
- if self.mode == 'remove':
- up(self.header_to_remove.abspath().encode())
- self.uid_ = m.digest()
- return self.uid_
-
- def runnable_status(self):
- if self.mode == 'remove':
- if os.path.exists(self.header_to_remove.abspath()):
- return Task.RUN_ME
- else:
- return Task.SKIP_ME
- else:
- return super(ns3privateheader_task, self).runnable_status()
-
- def run(self):
- if self.mode == 'install':
- assert len(self.inputs) == len(self.outputs)
- inputs = [node.abspath() for node in self.inputs]
- outputs = [node.abspath() for node in self.outputs]
- for src, dst in zip(inputs, outputs):
- try:
- os.chmod(dst, 0o600)
- except OSError:
- pass
- shutil.copy2(src, dst)
- ## make the headers in builddir read-only, to prevent
- ## accidental modification
- os.chmod(dst, 0o400)
- return 0
- else:
- assert len(self.inputs) == 0
- assert len(self.outputs) == 0
- out_file_name = self.header_to_remove.abspath()
- try:
- os.unlink(out_file_name)
- except OSError as ex:
- if ex.errno != 2:
- raise
- return 0
-
-
-class gen_ns3_module_header_task(Task.Task):
- before = 'cxx'
- after = 'ns3header'
- color = 'BLUE'
-
- def runnable_status(self):
- if self.mode == 'remove':
- if os.path.exists(self.header_to_remove.abspath()):
- return Task.RUN_ME
- else:
- return Task.SKIP_ME
- else:
- return super(gen_ns3_module_header_task, self).runnable_status()
-
- def __str__(self):
- "string to display to the user"
- env = self.env
- src_str = ' '.join([a.bldpath() for a in self.inputs])
- tgt_str = ' '.join([a.bldpath() for a in self.outputs])
- if self.outputs: sep = ' -> '
- else: sep = ''
- if self.mode == 'remove':
- return 'rm-module-header %s' % (self.header_to_remove.abspath(),)
- return 'gen-module-header: %s' % (tgt_str)
-
- def run(self):
- if self.mode == 'remove':
- assert len(self.inputs) == 0
- assert len(self.outputs) == 0
- out_file_name = self.header_to_remove.abspath()
- try:
- os.unlink(out_file_name)
- except OSError as ex:
- if ex.errno != 2:
- raise
- return 0
- assert len(self.outputs) == 1
- out_file_name = self.outputs[0].get_bld().abspath()#self.env)
- header_files = [os.path.basename(node.abspath()) for node in self.inputs]
- outfile = open(out_file_name, "w")
- header_files.sort()
-
- print("""
-#ifdef NS3_MODULE_COMPILATION
-# error "Do not include ns3 module aggregator headers from other modules; these are meant only for end user scripts."
-#endif
-
-#ifndef NS3_MODULE_%s
- """ % (self.module.upper().replace('-', '_'),), file=outfile)
-
- # if self.module_deps:
- # print >> outfile, "// Module dependencies:"
- # for dep in self.module_deps:
- # print >> outfile, "#include \"%s-module.h\"" % dep
-
- print(file=outfile)
- print("// Module headers:", file=outfile)
- for header in header_files:
- print("#include \"%s\"" % (header,), file=outfile)
-
- print("#endif", file=outfile)
-
- outfile.close()
- return 0
-
- def sig_explicit_deps(self):
- self.m.update('\n'.join(sorted([node.abspath() for node in self.inputs])).encode('utf-8'))
- return self.m.digest()
-
- def unique_id(self):
- try:
- return self.uid
- except AttributeError:
- "this is not a real hot zone, but we want to avoid surprizes here"
- m = Utils.md5()
- m.update("ns-3-module-header-%s" % self.module)
- self.uid = m.digest()
- return self.uid
-
-
-# Generates a 'ns3/foo-module.h' header file that includes all public
-# ns3 headers of a certain module.
-@TaskGen.feature('ns3moduleheader')
-@TaskGen.after_method('process_rule')
-def apply_ns3moduleheader(self):
- ## get all of the ns3 headers
- ns3_dir_node = self.bld.path.find_or_declare("ns3")
- all_headers_inputs = []
- found_the_module = False
- for ns3headers in self.bld.all_task_gen:
- if 'ns3header' in getattr(ns3headers, "features", []):
- if ns3headers.module != self.module:
- continue
- found_the_module = True
- for source in sorted(ns3headers.headers):
- source = os.path.basename(source)
- node = ns3_dir_node.find_or_declare(os.path.basename(source))
- if node is None:
- fatal("missing header file %s" % (source,))
- all_headers_inputs.append(node)
- if not found_the_module:
- raise WafError("error finding headers for module %s" % self.module)
- if not all_headers_inputs:
- return
-
- try:
- module_obj = self.bld.get_tgen_by_name("ns3-" + self.module)
- except WafError: # maybe the module was disabled, and therefore removed
- return
-
- all_headers_outputs = [ns3_dir_node.find_or_declare("%s-module.h" % self.module)]
- task = self.create_task('gen_ns3_module_header')
- task.module = self.module
- task.mode = getattr(self, "mode", "install")
- if task.mode == 'install':
- assert module_obj is not None, self.module
- self.bld.install_files('${INCLUDEDIR}/%s%s/ns3' % (wutils.APPNAME, wutils.VERSION),
- ns3_dir_node.find_or_declare("%s-module.h" % self.module))
- task.set_inputs(all_headers_inputs)
- task.set_outputs(all_headers_outputs)
- task.module_deps = module_obj.module_deps
- else:
- task.header_to_remove = all_headers_outputs[0]
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/doc/doxygen.conf ns-3.28/doc/doxygen.conf
--- ns-3.27/doc/doxygen.conf 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/doc/doxygen.conf 2018-03-22 09:33:19.000000000 -0700
@@ -2180,7 +2180,7 @@
# set to NO
# The default value is: NO.
-HAVE_DOT = yes
+HAVE_DOT = YES
# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
# to run in parallel. When set to 0 doxygen will base this on the number of
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/doc/doxygen.warnings.report.sh ns-3.28/doc/doxygen.warnings.report.sh
--- ns-3.27/doc/doxygen.warnings.report.sh 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/doc/doxygen.warnings.report.sh 2018-03-22 09:33:19.000000000 -0700
@@ -213,7 +213,7 @@
conf=$DIR/doxygen.conf
- sed -i.bak -E '/^(EXTRACT_ALL|HAVE_DOT|CLASS_DIAGRAMS|WARNINGS|SOURCE_BROWSER) /s/YES/no/;/^HTML_OUTPUT /s/html/html-warn/' $conf
+ sed -i.bak -E '/^(EXTRACT_ALL|HAVE_DOT|CLASS_DIAGRAMS|WARNINGS|SOURCE_BROWSER) /s/(YES|yes)/no/;/^HTML_OUTPUT /s/html/html-warn/' $conf
verbose -n "Rebuilding doxygen (v$(doxygen --version)) docs with full errors..."
(cd "$ROOT" && ./waf --doxygen-no-build >&6 2>&6 )
@@ -263,6 +263,9 @@
REappend filter_blacklistRE "ScheduleWithContext(uint32_t"
REappend filter_blacklistRE "Schedule\\(Now\\|Destroy\\)(\\(MEM\\|void\\)"
+# ATTRIBUTE_HELPER_CPP( and _HEADER(
+REappend filter_blacklistRE "ATTRIBUTE_HELPER_\\(CPP\\|HEADER\\)("
+
filter_outRE=""
if [ $filter_blacklist -eq 1 ]; then
echo "Filtering out blacklist: \"$filter_blacklistRE\""
@@ -280,6 +283,8 @@
fi
# Show the resulting filters
+echo
+echo "Net result of all filters:"
if [ "${filter_inRE:-}" != "" ] ; then
echo "Filtering in \"$filter_inRE\""
fi
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/doc/manual/source/conf.py ns-3.28/doc/manual/source/conf.py
--- ns-3.27/doc/manual/source/conf.py 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/doc/manual/source/conf.py 2018-03-22 09:33:19.000000000 -0700
@@ -48,9 +48,9 @@
# built documents.
#
# The short X.Y version.
-version = 'ns-3.27'
+version = 'ns-3.28'
# The full version, including alpha/beta/rc tags.
-release = 'ns-3.27'
+release = 'ns-3.28'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/doc/manual/source/documentation.rst ns-3.28/doc/manual/source/documentation.rst
--- ns-3.27/doc/manual/source/documentation.rst 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/doc/manual/source/documentation.rst 2018-03-22 09:33:19.000000000 -0700
@@ -39,7 +39,7 @@
the design and usage of each module. Right now you are reading the
:doc:`Documentation ` Chapter.
If you are reading the html version, the
-`Show Source <_sources/documentation.rst>`_ link in the sidebar
+`Show Source <_sources/documentation.txt>`_ link in the sidebar
will show you the reStructuredText source for this chapter.
Adding New Chapters
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/doc/manual/source/python.rst ns-3.28/doc/manual/source/python.rst
--- ns-3.27/doc/manual/source/python.rst 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/doc/manual/source/python.rst 2018-03-22 09:33:19.000000000 -0700
@@ -1,6 +1,13 @@
.. include:: replace.txt
.. highlight:: python
+.. heading hierarchy:
+ ------------- Chapter
+ ************* Section (#.#)
+ ============= Subsection (#.#.#)
+ ############# Paragraph (no number)
+
+
Using Python to Run |ns3|
-------------------------
@@ -122,7 +129,7 @@
Python bindings for |ns3| are a work in progress, and some limitations are known by developers. Some of these limitations (not all) are listed here.
Incomplete Coverage
-+++++++++++++++++++
+===================
First of all, keep in mind that not 100% of the API is supported in Python. Some of the reasons are:
@@ -133,7 +140,7 @@
Most of the missing APIs can be wrapped, given enough time, patience, and expertise, and will likely be wrapped if bug reports are submitted. However, don't file a bug report saying "bindings are incomplete", because we do not have manpower to complete 100% of the bindings.
Conversion Constructors
-+++++++++++++++++++++++
+=======================
`Conversion constructors `_ are not fully supported yet by PyBindGen, and they always act as explicit constructors when translating an API into Python. For example, in C++ you can do this:
@@ -152,7 +159,7 @@
ipAddrs.Assign(backboneDevices)
CommandLine
-+++++++++++
+===========
:cpp:func:`CommandLine::AddValue` works differently in Python than it does in |ns3|. In Python, the first parameter is a string that represents the command-line option name. When the option is set, an attribute with the same name as the option name is set on the :cpp:func:`CommandLine` object. Example:
@@ -175,7 +182,7 @@
num_nodes_side = int(cmd.NumNodesSide)
Tracing
-+++++++
+=======
Callback based tracing is not yet properly supported for Python, as new |ns3| API needs to be provided for this to be supported.
@@ -198,28 +205,8 @@
Python bindings are built on a module-by-module basis, and can be found in each module's ``bindings`` directory.
-Python Bindings Workflow
-++++++++++++++++++++++++
-
-The process by which Python bindings are handled is the following:
-
-#. Periodically a developer uses a CastXML (https://github.com/CastXML/CastXML) based API scanning script, which saves the scanned API definition as ``bindings/python/ns3_module_*.py`` files or as Python files in each modules' ``bindings`` directory. These files are kept under version control in the main |ns3| repository;
-#. Other developers clone the repository and use the already scanned API definitions;
-#. When configuring |ns3|, pybindgen will be automatically downloaded if not already installed. Released |ns3| tarballs will ship a copy of pybindgen.
-
-If something goes wrong with compiling Python bindings and you just want to ignore them and move on with C++, you can disable Python with:
-
-.. sourcecode:: bash
-
- $ ./waf --disable-python
-
-Instructions for Handling New Files or Changed API's
-****************************************************
-
-So you have been changing existing |ns3| APIs and Python bindings no longer compile? Do not despair, you can rescan the bindings to create new bindings that reflect the changes to the |ns3| API.
-
Overview
-++++++++
+========
The python bindings are generated into an 'ns' namespace. Examples:
@@ -241,75 +228,178 @@
like there is Doxygen for the C++ API, but the Doxygen can be consulted
to understand how the C++ API works.
-Scanning the Modular Python Bindings
-++++++++++++++++++++++++++++++++++++
+Python Bindings Workflow
+========================
-Scanning of the C++ API is only necessary if a user is using Python and
-is changing the C++ API to introduce new methods (that he or she wishes
-to be accessible from Python) or is changing the C++ API in a way that
-breaks the compilation of the existing Python bindings.
-
-There are two steps. First, the bindings toolchain must be enabled in
-the |ns3| build. This requires that the castxml and pygccxml tools be
-installed on the system or using the bake build tool. Second, Waf
-can be used to update the bindings.
+The process by which Python bindings are handled is the following:
-The output of './waf configure' can be inspected to see if Python API scanning
-support is enabled:
+#. Periodically a developer uses a CastXML (https://github.com/CastXML/CastXML) based API scanning script, which saves the scanned API definition as ``bindings/python/ns3_module_*.py`` files or as Python files in each modules' ``bindings`` directory. These files are kept under version control in the main |ns3| repository;
+#. Other developers clone the repository and use the already scanned API definitions;
+#. When configuring |ns3|, pybindgen will be automatically downloaded if not already installed. Released |ns3| tarballs will ship a copy of pybindgen.
+
+If something goes wrong with compiling Python bindings and you just want to ignore them and move on with C++, you can disable Python with:
+
+.. sourcecode:: bash
+
+ $ ./waf configure --disable-python ...
+
+To add support for modular bindings to an existing or new |ns3| module, simply add the following line to its wscript build() function:
::
- Python API Scanning Support : enabled
+ bld.ns3_python_bindings()
-It may say something like this, if the support is not active:
+One must also provide the bindings files (usually by running the scanning
+framework).
+
+Regenerating the Python bindings
+================================
+
+|ns3| will fail to successfully compile the Python bindings if the C++
+headers are changed and no longer align with the stored Python bindings.
+In this case, the developer has two main choices: 1) disable Python
+as described above, or 2) update the bindings to align with the new C++
+API.
+
+Process Overview
+################
+
+|ns3| has an automated process to regenerate Python bindings from the C++
+header files. The automated process is only semi-automated at the moment
+(ns-3.27) because we are in the midst of transition to new tools. The
+current process is outlined below. In short, the process currently
+requires the following steps.
+
+1. Prepare the system for scanning by installing the prerequisites,
+ including a development version of ``clang``, the ``CastXML`` package,
+ and ``pygccxml``.
+2. Perform a 64-bit scan of the module or modules of interest
+3. Create the 32-bit bindings file from the 64-bit scan output
+
+Installing a clang development environment
+##########################################
+
+Make sure you have a development version of the clang compiler installed
+on your system. This can take a long time to build from source. Linux
+distributions provide binary library packages such as ``clang-dev`` or
+``clang-devel``. The version should not be too important; version 3.8 is
+known to work. Note that there is a problem with the Ubuntu
+package installation of ``clang-dev``; see the Installation wiki page for
+details on how to fix using some symlinks.
+
+Installing other prerequisites
+##############################
+
+``cxxfilt`` is a new requirement, typically installed using ``pip``; e.g.
::
- Python API Scanning Support : not enabled (Missing 'pygccxml' Python module)
+ sudo pip install cxxfilt
-In this case, the user must take steps to install castxml and pygccxml;
-castxml binary must be in the shell's path, and pygccxml must be in the
-Python path.
+See also the wiki for installation notes for your system.
+
+Set up a ``bake`` build environment
+###################################
+
+Try the following commands::
+
+ $ cd bake
+ $ export BAKE_HOME=`pwd`
+ $ export PATH=$PATH:$BAKE_HOME/build/bin
+ $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$BAKE_HOME/build/lib
+ $ export PYTHONPATH=$PYTHONPATH:$BAKE_HOME/build/lib
+ $ mkdir -p build/lib
+
+Configure
+#########
-An automated setup for this is provided by the `bake` build system, if the
-user selects the 'ns-allinone-3.nn' configuration target (where 'nn' is the
-release number. For example:
+Perform a configuration at the bake level::
+ $ ./bake.py configure -e ns-3-dev -e pygccxml-1.9.1
+
+The output of ``bake show`` should show something like this:
::
- ./bake.py configure -e ns-allinone-3.27
- ./bake.py download
- ./bake.py build
+ $ ./bake.py show
-Once API scanning support is enabled, to scan the modular Python bindings
-for the core module, for example, do the following:
+Should say::
-.. sourcecode:: bash
+ -- System Dependencies --
+ > clang-dev - OK
+ > g++ - OK
+ > libxml2-dev - OK
+ > pygoocanvas - OK
+ > pygraphviz - OK
+ > python-dev - OK
+ > qt - OK
+ > setuptools - OK
- $ ./waf --apiscan=core --no32bit-scan
-To scan the modular Python bindings for all of the modules, do the following:
+Download
+########
-.. sourcecode:: bash
+Try the following command::
- $ ./waf --apiscan=all --no32bit-scan
+ $ ./bake.py download
+ >> Searching for system dependency python-dev - OK
+ >> Searching for system dependency clang-dev - OK
+ >> Searching for system dependency g++ - OK
+ >> Searching for system dependency setuptools - OK
+ >> Searching for system dependency pygoocanvas - OK
+ >> Searching for system dependency pygraphviz - OK
+ >> Searching for system dependency qt - OK
+ >> Downloading castxml - OK
+ >> Downloading netanim - OK
+ >> Downloading pygccxml-1.9.1 - OK
+ >> Downloading pygccxml - OK
+ >> Downloading pybindgen - OK
+ >> Downloading ns-3-dev - OK
+
+Build
+#####
-The ``--no32bit-scan`` flag is described below.
+Try the following commands::
-Adding Modular Bindings To A Existing or New Module
-+++++++++++++++++++++++++++++++++++++++++++++++++++
+ $ mkdir -p build/lib
+ $ ./bake.py build
-To add support for modular bindings to an existing or new |ns3| module, simply add the following line to its wscript build() function:
+It should fail on the |ns3| bindings complilation.
+
+The output of './waf configure' can be inspected to see if Python API scanning
+support is enabled:
::
- bld.ns3_python_bindings()
+ Python API Scanning Support : enabled
-One must also provide the bindings files (usually by running the scanning
-framework).
+It may say something like this, if the support is not active:
+
+::
+
+ Python API Scanning Support : not enabled (Missing 'pygccxml' Python module)
+
+In this case, the user must take steps to install castxml and pygccxml;
+castxml binary must be in the shell's path, and pygccxml must be in the
+Python path.
+
+Rescan 64-bit
+#############
+
+It is important that you scan the failing module with '--no32bit-scan'; e.g.:
+
+::
-Differences between MacOS and Linux bindings
-++++++++++++++++++++++++++++++++++++++++++++
+ $ cd source/ns-3-dev
+ $ ./waf --apiscan=wifi --no32bit-scan
+
+Generate 32-bit
+###############
+
+Once the 64-bit bindings are fixed, if you are a maintainer and need to
+generate the 32-bit equivalent:
+
+1. copy the newly scanned LP64.py file(s) to the ILP32.py filename
+2. on the ILP32.py file(s), perform global substitition of ``unsigned long`` with ``unsigned long long``
Linux (64-bit, as most modern installations use) and MacOS use different
data models, as explained here: https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.cbcpx01/datatypesize64.htm
@@ -333,7 +423,7 @@
+ cls.add_instance_attribute('nMarkedBytes', 'std::map< std::string, unsigned long long >', is_const=False)
In summary, to generate LP64 bindings for Linux 64-bit systems, it is
-sufficient to call:
+sufficient to call (e.g. for the ``core`` module):
::
@@ -345,8 +435,15 @@
'unsigned long long'. |ns3| maintainers are working to better automate
this process for future releases.
+Generating bindings on MacOS
+############################
+
+In principle, this should work (and should generate the 32-bit bindings).
+However, it is untested and we are not sure what instructions to offer.
+We would welcome suggestions on how to enable scanning for MacOS.
+
Organization of the Modular Python Bindings
-+++++++++++++++++++++++++++++++++++++++++++
+===========================================
The ``src//bindings`` directory may contain the following files, some of them optional:
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/doc/models/Makefile ns-3.28/doc/models/Makefile
--- ns-3.27/doc/models/Makefile 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/doc/models/Makefile 2018-03-22 09:33:19.000000000 -0700
@@ -64,6 +64,7 @@
$(SRC)/internet/doc/ipv6.rst \
$(SRC)/internet/doc/routing-overview.rst \
$(SRC)/internet/doc/tcp.rst \
+ $(SRC)/internet/doc/udp.rst \
$(SRC)/internet-apps/doc/internet-apps.rst \
$(SRC)/mobility/doc/mobility.rst \
$(SRC)/olsr/doc/olsr.rst \
@@ -80,20 +81,14 @@
$(SRC)/traffic-control/doc/traffic-control-layer.rst \
$(SRC)/traffic-control/doc/queue-discs.rst \
$(SRC)/traffic-control/doc/pfifo-fast.rst \
+ $(SRC)/traffic-control/doc/fifo.rst \
+ $(SRC)/traffic-control/doc/tbf.rst \
$(SRC)/traffic-control/doc/red.rst \
$(SRC)/traffic-control/doc/codel.rst \
$(SRC)/traffic-control/doc/fq-codel.rst \
$(SRC)/traffic-control/doc/pie.rst \
$(SRC)/traffic-control/doc/mq.rst \
$(SRC)/spectrum/doc/spectrum.rst \
- $(SRC)/stats/doc/adaptor.rst \
- $(SRC)/stats/doc/aggregator.rst \
- $(SRC)/stats/doc/collector.rst \
- $(SRC)/stats/doc/data-collection-helpers.rst \
- $(SRC)/stats/doc/data-collection-overview.rst \
- $(SRC)/stats/doc/data-collection.rst \
- $(SRC)/stats/doc/probe.rst \
- $(SRC)/stats/doc/scope-and-limitations.rst \
$(SRC)/netanim/doc/animation.rst \
$(SRC)/flow-monitor/doc/flow-monitor.rst \
$(SRC)/wave/doc/wave.rst \
@@ -270,15 +265,6 @@
$(SRC)/lte/doc/source/figures/lte-legacy-handover-algorithm.pdf \
$(SRC)/lte/doc/source/figures/lte-legacy-handover-algorithm.png \
$(SRC)/uan/doc/auvmobility-classes.dia \
- $(SRC)/stats/doc/Stat-framework-arch.png \
- $(SRC)/stats/doc/Wifi-default.png \
- $(SRC)/stats/doc/dcf-overview.dia \
- $(SRC)/stats/doc/dcf-overview-with-aggregation.dia \
- $(SRC)/stats/doc/file-example.png \
- $(SRC)/stats/doc/gnuplot-aggregator.png \
- $(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/PacketStatistics.png \
$(SRC)/netanim/doc/figures/PacketStatistics.pdf \
$(SRC)/netanim/doc/figures/NetAnim_3_105.png \
@@ -325,8 +311,6 @@
$(FIGURES)/WifiArchitecture.eps \
$(FIGURES)/snir.eps \
$(FIGURES)/WimaxArchitecture.eps \
- $(FIGURES)/dcf-overview.eps \
- $(FIGURES)/dcf-overview-with-aggregation.eps \
$(FIGURES)/epc-ctrl-arch.eps \
$(FIGURES)/epc-data-flow-dl.eps \
$(FIGURES)/epc-data-flow-ul.eps \
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/doc/models/source/conf.py ns-3.28/doc/models/source/conf.py
--- ns-3.27/doc/models/source/conf.py 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/doc/models/source/conf.py 2018-03-22 09:33:19.000000000 -0700
@@ -48,9 +48,9 @@
# built documents.
#
# The short X.Y version.
-version = 'ns-3.27'
+version = 'ns-3.28'
# The full version, including alpha/beta/rc tags.
-release = 'ns-3.27'
+release = 'ns-3.28'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/doc/models/source/index.rst ns-3.28/doc/models/source/index.rst
--- ns-3.27/doc/models/source/index.rst 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/doc/models/source/index.rst 2018-03-22 09:33:19.000000000 -0700
@@ -26,7 +26,6 @@
buildings
click
csma
- data-collection
dsdv
dsr
emulation-overview
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/doc/models/source/internet-models.rst ns-3.28/doc/models/source/internet-models.rst
--- ns-3.27/doc/models/source/internet-models.rst 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/doc/models/source/internet-models.rst 2018-03-22 09:33:19.000000000 -0700
@@ -8,4 +8,5 @@
ipv6
routing-overview
tcp
+ udp
internet-apps
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/doc/models/source/traffic-control.rst ns-3.28/doc/models/source/traffic-control.rst
--- ns-3.27/doc/models/source/traffic-control.rst 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/doc/models/source/traffic-control.rst 2018-03-22 09:33:19.000000000 -0700
@@ -5,7 +5,9 @@
traffic-control-layer
queue-discs
+ fifo
pfifo-fast
+ tbf
red
codel
fq-codel
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/doc/tutorial/source/building-topologies.rst ns-3.28/doc/tutorial/source/building-topologies.rst
--- ns-3.27/doc/tutorial/source/building-topologies.rst 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/doc/tutorial/source/building-topologies.rst 2018-03-22 09:33:19.000000000 -0700
@@ -1424,3 +1424,128 @@
/NodeList/7/$ns3::MobilityModel/CourseChange x = 6.71414, y = 6.84456
/NodeList/7/$ns3::MobilityModel/CourseChange x = 6.42489, y = 7.80181
+
+Queues in ns-3
+**************
+
+The selection of queueing disciplines in |ns3| can have a large impact
+on performance, and it is important for users to understand what is installed
+by default and how to change the defaults and observe the performance.
+
+Architecturally, |ns3| separates the device layer from the IP layers
+or traffic control layers of an Internet host. Since recent releases
+of |ns3|, outgoing packets traverse two queueing layers before reaching
+the channel object. The first queueing layer encountered is what is
+called the 'traffic control layer' in |ns3|; here, active queue management
+(RFC7567) and prioritization due to quality-of-service (QoS) takes place
+in a device-independent manner through the use of queueing disciplines.
+The second queueing layer is typically found in the NetDevice objects.
+Different devices (e.g. LTE, Wi-Fi) have different implementations of these queues.
+This two-layer approach mirrors what is found in practice, (software queues
+providing prioritization, and hardware queues specific to a link type).
+In practice, it may be even more complex than this. For instance, address
+resolution protocols have a small queue. Wi-Fi in Linux has four layers
+of queueing (https://lwn.net/Articles/705884/).
+
+The traffic control layer is effective only if it is notified by the
+NetDevice when the device queue is full, so that the traffic control layer
+can stop sending packets to the NetDevice. Otherwise, the backlog of the
+queueing disciplines is always null and they are ineffective. Currently,
+flow control, i.e., the ability of notifying the traffic control layer,
+is supported by the following NetDevices, which use Queue objects (or objects
+of Queue subclasses) to store their packets:
+
+* Point-To-Point
+* Csma
+* Wi-Fi
+* SimpleNetDevice
+
+The performance of queueing disciplines is highly impacted by the size
+of the queues used by the NetDevices. Currently, queues by default in |ns3|
+are not autotuned for the configured link properties (bandwidth, delay), and
+are typically the simplest variants (e.g. FIFO scheduling with drop-tail behavior).
+However, the size of the queues can be dynamically adjusted by enabling BQL
+(Byte Queue Limits), the algorithm implemented in the Linux kernel to adjust
+the size of the device queues to fight bufferbloat while avoiding starvation.
+Currently, BQL is supported by the NetDevices that support flow control.
+An analysis of the impact of the size of the device queues on the effectiveness
+of the queueing disciplines conducted by means of |ns3| simulations and real
+experiments is reported in:
+
+P. Imputato and S. Avallone. An analysis of the impact of network device buffers
+on packet schedulers through experiments and simulations. Simulation Modelling
+Practice and Theory, 80(Supplement C):1--18, January 2018.
+DOI: 10.1016/j.simpat.2017.09.008
+
+Available queueing models in |ns3|
+++++++++++++++++++++++++++++++++++
+
+At the traffic-control layer, these are the options:
+
+* PFifoFastQueueDisc: The default maximum size is 1000 packets
+* FifoQueueDisc: The default maximum size is 1000 packets
+* RedQueueDisc: The default maximum size is 25 packets
+* CoDelQueueDisc: The default maximum size is 1500 kilobytes
+* FqCoDelQueueDisc: The default maximum size is 10024 packets
+* PieQueueDisc: The default maximum size is 25 packets
+* MqQueueDisc: This queue disc has no limits on its capacity
+* TbfQueueDisc: The default maximum size is 1000 packets
+
+By default, a pfifo_fast queueing discipline is installed on a NetDevice when
+an IPv4 or IPv6 address is assigned to an interface associated with the NetDevice,
+unless a queueing discipline has been already installed on the NetDevice.
+
+At the device layer, there are device specific queues:
+
+* PointToPointNetDevice: The default configuration (as set by the helper) is to install
+ a DropTail queue of default size (100 packets)
+* CsmaNetDevice: The default configuration (as set by the helper) is to install
+ a DropTail queue of default size (100 packets)
+* WiFiNetDevice: The default configuration is to install a DropTail queue of default size
+ (100 packets) for non-QoS stations and four DropTail queues of default size (100
+ packets) for QoS stations
+* SimpleNetDevice: The default configuration is to install a DropTail queue of default
+ size (100 packets)
+* LTENetDevice: Queueing occurs at the RLC layer (RLC UM default buffer is 10 * 1024 bytes, RLC AM does not have a buffer limit).
+* UanNetDevice: There is a default 10 packet queue at the MAC layer
+
+
+Changing from the defaults
+++++++++++++++++++++++++++
+
+* The type of queue used by a NetDevice can be usually modified through the device helper:
+
+.. sourcecode:: cpp
+
+ NodeContainer nodes;
+ nodes.Create (2);
+
+ PointToPointHelper p2p;
+ p2p.SetQueue ("ns3::DropTailQueue", "MaxSize", StringValue ("50p"));
+
+ NetDeviceContainer devices = p2p.Install (nodes);
+
+* The type of queue disc installed on a NetDevice can be modified through the
+ traffic control helper
+
+.. sourcecode:: cpp
+
+ InternetStackHelper stack;
+ stack.Install (nodes);
+
+ TrafficControlHelper tch;
+ tch.SetRootQueueDisc ("ns3::CoDelQueueDisc", "MaxSize", StringValue ("1000p"));
+ tch.Install (devices);
+
+* BQL can be enabled on a device that supports it through the traffic control helper
+
+.. sourcecode:: cpp
+
+ InternetStackHelper stack;
+ stack.Install (nodes);
+
+ TrafficControlHelper tch;
+ tch.SetRootQueueDisc ("ns3::CoDelQueueDisc", "MaxSize", StringValue ("1000p"));
+ tch.SetQueueLimits ("ns3::DynamicQueueLimits", "HoldTime", StringValue ("4ms"));
+ tch.Install (devices);
+
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/doc/tutorial/source/conf.py ns-3.28/doc/tutorial/source/conf.py
--- ns-3.27/doc/tutorial/source/conf.py 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/doc/tutorial/source/conf.py 2018-03-22 09:33:19.000000000 -0700
@@ -48,9 +48,9 @@
# built documents.
#
# The short X.Y version.
-version = 'ns-3.27'
+version = 'ns-3.28'
# The full version, including alpha/beta/rc tags.
-release = 'ns-3.27'
+release = 'ns-3.28'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/doc/tutorial-pt-br/source/conf.py ns-3.28/doc/tutorial-pt-br/source/conf.py
--- ns-3.27/doc/tutorial-pt-br/source/conf.py 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/doc/tutorial-pt-br/source/conf.py 2018-03-22 09:33:19.000000000 -0700
@@ -50,9 +50,9 @@
# built documents.
#
# The short X.Y version.
-version = 'ns-3.27'
+version = 'ns-3.28'
# The full version, including alpha/beta/rc tags.
-release = 'ns-3.27'
+release = 'ns-3.28'
# The language for content autogenerated by . Refer to babel documentation
# for a list of supported languages.
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/energy/energy-model-example.cc ns-3.28/examples/energy/energy-model-example.cc
--- ns-3.27/examples/energy/energy-model-example.cc 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/examples/energy/energy-model-example.cc 2018-03-22 09:33:19.000000000 -0700
@@ -119,6 +119,8 @@
LogComponentEnable ("WifiRadioEnergyModel", LOG_LEVEL_DEBUG);
*/
+ LogComponentEnable ("EnergyExample", LogLevel (LOG_PREFIX_TIME | LOG_PREFIX_NODE | LOG_LEVEL_INFO));
+
std::string phyMode ("DsssRate1Mbps");
double Prss = -80; // dBm
uint32_t PpacketSize = 200; // bytes
@@ -266,6 +268,15 @@
Simulator::Stop (Seconds (10.0));
Simulator::Run ();
+
+ for (DeviceEnergyModelContainer::Iterator iter = deviceModels.Begin (); iter != deviceModels.End (); iter ++)
+ {
+ double energyConsumed = (*iter)->GetTotalEnergyConsumption ();
+ NS_LOG_UNCOND ("End of simulation (" << Simulator::Now ().GetSeconds ()
+ << "s) Total energy consumed by radio = " << energyConsumed << "J");
+ NS_ASSERT (energyConsumed <= 0.1);
+ }
+
Simulator::Destroy ();
return 0;
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/energy/energy-model-with-harvesting-example.cc ns-3.28/examples/energy/energy-model-with-harvesting-example.cc
--- ns-3.27/examples/energy/energy-model-with-harvesting-example.cc 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/examples/energy/energy-model-with-harvesting-example.cc 2018-03-22 09:33:19.000000000 -0700
@@ -26,7 +26,7 @@
*
* The example considers a simple communication link between a source and a
* destination node, where the source node sends a packet to the destination
- * every 1 second. Each node is powered by a BasiEnergySource, which is recharged
+ * every 1 second. Each node is powered by a BasicEnergySource, which is recharged
* by a BasicEnergyHarvester, and the WiFi radio consumes energy for the transmission/
* reception of the packets.
*
@@ -126,51 +126,42 @@
void
RemainingEnergy (double oldValue, double remainingEnergy)
{
- std::cout << Simulator::Now ().GetSeconds ()
- << "s Current remaining energy = " << remainingEnergy << "J" << std::endl;
+ NS_LOG_UNCOND (Simulator::Now ().GetSeconds ()
+ << "s Current remaining energy = " << remainingEnergy << "J");
}
/// Trace function for total energy consumption at node.
void
TotalEnergy (double oldValue, double totalEnergy)
{
- std::cout << Simulator::Now ().GetSeconds ()
- << "s Total energy consumed by radio = " << totalEnergy << "J" << std::endl;
+ NS_LOG_UNCOND (Simulator::Now ().GetSeconds ()
+ << "s Total energy consumed by radio = " << totalEnergy << "J");
}
/// Trace function for the power harvested by the energy harvester.
void
HarvestedPower (double oldValue, double harvestedPower)
{
- std::cout << Simulator::Now ().GetSeconds ()
- << "s Current harvested power = " << harvestedPower << " W" << std::endl;
+ NS_LOG_UNCOND (Simulator::Now ().GetSeconds ()
+ << "s Current harvested power = " << harvestedPower << " W");
}
/// Trace function for the total energy harvested by the node.
void
TotalEnergyHarvested (double oldValue, double TotalEnergyHarvested)
{
- std::cout << Simulator::Now ().GetSeconds ()
- << "s Total energy harvested by harvester = "
- << TotalEnergyHarvested << " J" << std::endl;
+ NS_LOG_UNCOND (Simulator::Now ().GetSeconds ()
+ << "s Total energy harvested by harvester = "
+ << TotalEnergyHarvested << " J");
}
int
main (int argc, char *argv[])
{
- /*
- LogComponentEnable ("EnergySource", LOG_LEVEL_DEBUG);
- LogComponentEnable ("BasicEnergySource", LOG_LEVEL_DEBUG);
- LogComponentEnable ("DeviceEnergyModel", LOG_LEVEL_DEBUG);
- LogComponentEnable ("WifiRadioEnergyModel", LOG_LEVEL_DEBUG);
- LogComponentEnable ("EnergyHarvester", LOG_LEVEL_DEBUG);
- LogComponentEnable ("BasicEnergyHarvester", LOG_LEVEL_DEBUG);
- */
-
std::string phyMode ("DsssRate1Mbps");
double Prss = -80; // dBm
- uint32_t PpacketSize = 200; // bytes
+ uint32_t PacketSize = 200; // bytes
bool verbose = false;
// simulation parameters
@@ -190,7 +181,7 @@
CommandLine cmd;
cmd.AddValue ("phyMode", "Wifi Phy mode", phyMode);
cmd.AddValue ("Prss", "Intended primary RSS (dBm)", Prss);
- cmd.AddValue ("PpacketSize", "size of application packet sent", PpacketSize);
+ cmd.AddValue ("PacketSize", "size of application packet sent", PacketSize);
cmd.AddValue ("numPackets", "Total number of packets to send", numPackets);
cmd.AddValue ("startTime", "Simulation start time", startTime);
cmd.AddValue ("distanceToRx", "X-Axis distance between nodes", distanceToRx);
@@ -326,11 +317,20 @@
/** simulation setup **/
// start traffic
- Simulator::Schedule (Seconds (startTime), &GenerateTraffic, source, PpacketSize,
+ Simulator::Schedule (Seconds (startTime), &GenerateTraffic, source, PacketSize,
networkNodes.Get (0), numPackets, interPacketInterval);
Simulator::Stop (Seconds (10.0));
Simulator::Run ();
+
+ for (DeviceEnergyModelContainer::Iterator iter = deviceModels.Begin (); iter != deviceModels.End (); iter ++)
+ {
+ double energyConsumed = (*iter)->GetTotalEnergyConsumption ();
+ NS_LOG_UNCOND ("End of simulation (" << Simulator::Now ().GetSeconds ()
+ << "s) Total energy consumed by radio = " << energyConsumed << "J");
+ NS_ASSERT (energyConsumed <= 1.0);
+ }
+
Simulator::Destroy ();
return 0;
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/energy/examples-to-run.py ns-3.28/examples/energy/examples-to-run.py
--- ns-3.27/examples/energy/examples-to-run.py 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/examples/energy/examples-to-run.py 2018-03-22 09:33:19.000000000 -0700
@@ -9,6 +9,7 @@
# See test.py for more information.
cpp_examples = [
("energy-model-example", "True", "True"),
+ ("energy-model-with-harvesting-example", "True", "True"),
]
# A list of Python examples to run in order to ensure that they remain
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/ipv6/radvd-two-prefix.cc ns-3.28/examples/ipv6/radvd-two-prefix.cc
--- ns-3.27/examples/ipv6/radvd-two-prefix.cc 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/examples/ipv6/radvd-two-prefix.cc 2018-03-22 09:33:19.000000000 -0700
@@ -135,7 +135,7 @@
iic1.Add (iicr1);
/* add another IPv6 address for second prefix advertised on first subnet */
- ipv6.SetBase (Ipv6Address ("2001:ABCD::2"), Ipv6Prefix (64));
+ ipv6.SetBase (Ipv6Address ("2001:ABCD::"), Ipv6Prefix (64));
ipv6.Assign (tmp2);
/* second subnet R - n1 */
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/realtime/realtime-udp-echo.py ns-3.28/examples/realtime/realtime-udp-echo.py
--- ns-3.27/examples/realtime/realtime-udp-echo.py 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/examples/realtime/realtime-udp-echo.py 2018-03-22 09:33:19.000000000 -0700
@@ -46,7 +46,7 @@
#
# Explicitly create the nodes required by the topology (shown above).
#
- print "Create nodes."
+ print ("Create nodes.")
n = ns.network.NodeContainer()
n.Create(4)
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/routing/simple-routing-ping6.py ns-3.28/examples/routing/simple-routing-ping6.py
--- ns-3.27/examples/routing/simple-routing-ping6.py 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/examples/routing/simple-routing-ping6.py 2018-03-22 09:33:19.000000000 -0700
@@ -40,7 +40,7 @@
cmd.Parse(argv);
# Create nodes
- print "Create nodes"
+ print ("Create nodes")
n0 = ns.network.Node();
r = ns.network.Node();
n1 = ns.network.Node();
@@ -68,7 +68,7 @@
d2 = csma.Install(net2);
# Create networks and assign IPv6 Addresses
- print "Addressing"
+ print ("Addressing")
ipv6 = ns.internet.Ipv6AddressHelper();
ipv6.SetBase(ns.network.Ipv6Address("2001:1::"), ns.network.Ipv6Prefix(64));
i1 = ipv6.Assign(d1);
@@ -80,7 +80,7 @@
i2.SetDefaultRouteInAllNodes(0);
# Create a Ping6 application to send ICMPv6 echo request from n0 to n1 via r
- print "Application"
+ print ("Application")
packetSize = 1024;
maxPacketCount = 5;
interPacketInterval = ns.core.Seconds(1.);
@@ -97,7 +97,7 @@
apps.Start(ns.core.Seconds(2.0));
apps.Stop(ns.core.Seconds(20.0));
- print "Tracing"
+ print ("Tracing")
ascii = ns.network.AsciiTraceHelper()
csma.EnableAsciiAll(ascii.CreateFileStream("simple-routing-ping6.tr"))
csma.EnablePcapAll("simple-routing-ping6", True)
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/tcp/tcp-pacing.cc ns-3.28/examples/tcp/tcp-pacing.cc
--- ns-3.27/examples/tcp/tcp-pacing.cc 1969-12-31 16:00:00.000000000 -0800
+++ ns-3.28/examples/tcp/tcp-pacing.cc 2018-03-22 09:33:19.000000000 -0700
@@ -0,0 +1,155 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * 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
+ */
+
+// Network topology
+//
+// n0 ----------- n1
+// 40 Gbps
+// 0.01 ms
+
+// This programs illustrates how TCP pacing can be used and how user can set
+// pacing rate. The program gives information about each flow like transmitted
+// and received bytes (packets) and throughput of that flow. Currently, it is
+// using TCP NewReno but in future after having congestion control algorithms
+// which can change pacing rate can be used.
+
+#include
+#include
+#include "ns3/core-module.h"
+#include "ns3/point-to-point-module.h"
+#include "ns3/internet-module.h"
+#include "ns3/applications-module.h"
+#include "ns3/network-module.h"
+#include "ns3/packet-sink.h"
+#include "ns3/flow-monitor-module.h"
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("TcpPacingExample");
+
+int
+main (int argc, char *argv[])
+{
+
+ bool tracing = false;
+ uint32_t maxBytes = 0;
+ uint32_t TCPFlows = 1;
+ bool isPacingEnabled = true;
+ std::string pacingRate = "4Gbps";
+ bool isSack = false;
+ uint32_t maxPackets = 0;
+
+ CommandLine cmd;
+ cmd.AddValue ("tracing", "Flag to enable/disable tracing", tracing);
+ cmd.AddValue ("maxBytes",
+ "Total number of bytes for application to send", maxBytes);
+ cmd.AddValue ("maxPackets",
+ "Total number of bytes for application to send", maxPackets);
+ cmd.AddValue ("TCPFlows", "Number of application flows between sender and receiver", TCPFlows);
+ cmd.AddValue ("Pacing", "Flag to enable/disable pacing in TCP", isPacingEnabled);
+ cmd.AddValue ("Sack", "Flag to enable/disable sack in TCP", isSack);
+ cmd.AddValue ("PacingRate", "Max Pacing Rate in bps", pacingRate);
+ cmd.Parse (argc, argv);
+
+ if (maxPackets != 0 )
+ {
+ maxBytes = 500 * maxPackets;
+ }
+
+ Config::SetDefault ("ns3::TcpSocketState::MaxPacingRate", StringValue (pacingRate));
+ Config::SetDefault ("ns3::TcpSocketState::EnablePacing", BooleanValue (isPacingEnabled));
+ Config::SetDefault ("ns3::TcpSocketBase::Sack", BooleanValue (isSack));
+
+ NS_LOG_INFO ("Create nodes.");
+ NodeContainer nodes;
+ nodes.Create (2);
+
+ NS_LOG_INFO ("Create channels.");
+ PointToPointHelper pointToPoint;
+ pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("40Gbps"));
+ pointToPoint.SetChannelAttribute ("Delay", StringValue ("0.01ms"));
+
+ NetDeviceContainer devices;
+ devices = pointToPoint.Install (nodes);
+
+ InternetStackHelper internet;
+ internet.Install (nodes);
+
+ NS_LOG_INFO ("Assign IP Addresses.");
+ Ipv4AddressHelper ipv4;
+ ipv4.SetBase ("10.1.1.0", "255.255.255.0");
+ Ipv4InterfaceContainer i = ipv4.Assign (devices);
+
+ NS_LOG_INFO ("Create Applications.");
+
+ ApplicationContainer sourceApps;
+ ApplicationContainer sinkApps;
+ for (uint32_t iterator = 0; iterator < TCPFlows; iterator++)
+ {
+ uint16_t port = 10000 + iterator;
+
+ BulkSendHelper source ("ns3::TcpSocketFactory",
+ InetSocketAddress (i.GetAddress (1), port));
+ // Set the amount of data to send in bytes. Zero is unlimited.
+ source.SetAttribute ("MaxBytes", UintegerValue (maxBytes));
+ sourceApps.Add (source.Install (nodes.Get (0)));
+
+ PacketSinkHelper sink ("ns3::TcpSocketFactory",
+ InetSocketAddress (Ipv4Address::GetAny (), port));
+ sinkApps.Add (sink.Install (nodes.Get (1)));
+ }
+
+ sinkApps.Start (Seconds (0.0));
+ sinkApps.Stop (Seconds (5));
+ sourceApps.Start (Seconds (1));
+ sourceApps.Stop (Seconds (5));
+
+ if (tracing)
+ {
+ AsciiTraceHelper ascii;
+ pointToPoint.EnableAsciiAll (ascii.CreateFileStream ("tcp-pacing.tr"));
+ pointToPoint.EnablePcapAll ("tcp-pacing", false);
+ }
+
+ FlowMonitorHelper flowmon;
+ Ptr monitor = flowmon.InstallAll ();
+
+ NS_LOG_INFO ("Run Simulation.");
+ Simulator::Stop (Seconds (5));
+ Simulator::Run ();
+
+ monitor->CheckForLostPackets ();
+ Ptr classifier = DynamicCast (flowmon.GetClassifier ());
+ FlowMonitor::FlowStatsContainer stats = monitor->GetFlowStats ();
+ for (std::map::const_iterator i = stats.begin (); i != stats.end (); ++i)
+ {
+ Ipv4FlowClassifier::FiveTuple t = classifier->FindFlow (i->first);
+ if (t.sourceAddress == "10.1.1.2")
+ {
+ continue;
+ }
+ std::cout << "Flow " << i->first << " (" << t.sourceAddress << " -> " << t.destinationAddress << ")\n";
+ std::cout << " Tx Packets: " << i->second.txPackets << "\n";
+ std::cout << " Tx Bytes: " << i->second.txBytes << "\n";
+ std::cout << " TxOffered: " << i->second.txBytes * 8.0 / 9.0 / 1000 / 1000 << " Mbps\n";
+ std::cout << " Rx Packets: " << i->second.rxPackets << "\n";
+ std::cout << " Rx Bytes: " << i->second.rxBytes << "\n";
+ std::cout << " Throughput: " << i->second.rxBytes * 8.0 / 9.0 / 1000 / 1000 << " Mbps\n";
+ }
+
+ Simulator::Destroy ();
+ NS_LOG_INFO ("Done.");
+}
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/tcp/tcp-variants-comparison.cc ns-3.28/examples/tcp/tcp-variants-comparison.cc
--- ns-3.27/examples/tcp/tcp-variants-comparison.cc 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/examples/tcp/tcp-variants-comparison.cc 2018-03-22 09:33:19.000000000 -0700
@@ -55,19 +55,19 @@
NS_LOG_COMPONENT_DEFINE ("TcpVariantsComparison");
-bool firstCwnd = true;
-bool firstSshThr = true;
-bool firstRtt = true;
-bool firstRto = true;
-Ptr cWndStream;
-Ptr ssThreshStream;
-Ptr rttStream;
-Ptr rtoStream;
-Ptr nextTxStream;
-Ptr nextRxStream;
-Ptr inFlightStream;
-uint32_t cWndValue;
-uint32_t ssThreshValue;
+static bool firstCwnd = true;
+static bool firstSshThr = true;
+static bool firstRtt = true;
+static bool firstRto = true;
+static Ptr cWndStream;
+static Ptr ssThreshStream;
+static Ptr rttStream;
+static Ptr rtoStream;
+static Ptr nextTxStream;
+static Ptr nextRxStream;
+static Ptr inFlightStream;
+static uint32_t cWndValue;
+static uint32_t ssThreshValue;
static void
@@ -129,18 +129,21 @@
static void
NextTxTracer (SequenceNumber32 old, SequenceNumber32 nextTx)
{
+ NS_UNUSED (old);
*nextTxStream->GetStream () << Simulator::Now ().GetSeconds () << " " << nextTx << std::endl;
}
static void
InFlightTracer (uint32_t old, uint32_t inFlight)
{
+ NS_UNUSED (old);
*inFlightStream->GetStream () << Simulator::Now ().GetSeconds () << " " << inFlight << std::endl;
}
static void
NextRxTracer (SequenceNumber32 old, SequenceNumber32 nextRx)
{
+ NS_UNUSED (old);
*nextRxStream->GetStream () << Simulator::Now ().GetSeconds () << " " << nextRx << std::endl;
}
@@ -211,10 +214,10 @@
std::string access_delay = "45ms";
bool tracing = false;
std::string prefix_file_name = "TcpVariantsComparison";
- double data_mbytes = 0;
+ uint64_t data_mbytes = 0;
uint32_t mtu_bytes = 400;
uint16_t num_flows = 1;
- float duration = 100;
+ double duration = 100.0;
uint32_t run = 0;
bool flow_monitor = false;
bool pcap = false;
@@ -225,7 +228,8 @@
CommandLine cmd;
cmd.AddValue ("transport_prot", "Transport protocol to use: TcpNewReno, "
"TcpHybla, TcpHighSpeed, TcpHtcp, TcpVegas, TcpScalable, TcpVeno, "
- "TcpBic, TcpYeah, TcpIllinois, TcpWestwood, TcpWestwoodPlus, TcpLedbat ", transport_prot);
+ "TcpBic, TcpYeah, TcpIllinois, TcpWestwood, TcpWestwoodPlus, TcpLedbat, "
+ "TcpLp", transport_prot);
cmd.AddValue ("error_p", "Packet error rate", error_p);
cmd.AddValue ("bandwidth", "Bottleneck bandwidth", bandwidth);
cmd.AddValue ("delay", "Bottleneck delay", delay);
@@ -267,8 +271,8 @@
NS_LOG_LOGIC ("TCP ADU size is: " << tcp_adu_size);
// Set the simulation start and stop time
- float start_time = 0.1;
- float stop_time = start_time + duration;
+ double start_time = 0.1;
+ double stop_time = start_time + duration;
// 4 MB of TCP buffer
Config::SetDefault ("ns3::TcpSocket::RcvBufSize", UintegerValue (1 << 21));
@@ -340,13 +344,13 @@
Config::SetDefault ("ns3::CoDelQueueDisc::Mode", EnumValue (CoDelQueueDisc::QUEUE_DISC_MODE_BYTES));
- uint32_t size = (std::min (access_b, bottle_b).GetBitRate () / 8) *
- ((access_d + bottle_d) * 2).GetSeconds ();
+ uint32_t size = static_cast((std::min (access_b, bottle_b).GetBitRate () / 8) *
+ ((access_d + bottle_d) * 2).GetSeconds ());
Config::SetDefault ("ns3::PfifoFastQueueDisc::Limit", UintegerValue (size / mtu_bytes));
Config::SetDefault ("ns3::CoDelQueueDisc::MaxBytes", UintegerValue (size));
- for (int i = 0; i < num_flows; i++)
+ for (uint32_t i = 0; i < num_flows; i++)
{
NetDeviceContainer devices;
devices = LocalLink.Install (sources.Get (i), gateways.Get (0));
@@ -386,14 +390,14 @@
BulkSendHelper ftp ("ns3::TcpSocketFactory", Address ());
ftp.SetAttribute ("Remote", remoteAddress);
ftp.SetAttribute ("SendSize", UintegerValue (tcp_adu_size));
- ftp.SetAttribute ("MaxBytes", UintegerValue (int(data_mbytes * 1000000)));
+ ftp.SetAttribute ("MaxBytes", UintegerValue (data_mbytes * 1000000));
ApplicationContainer sourceApp = ftp.Install (sources.Get (i));
sourceApp.Start (Seconds (start_time * i));
sourceApp.Stop (Seconds (stop_time - 3));
sinkHelper.SetAttribute ("Protocol", TypeIdValue (TcpSocketFactory::GetTypeId ()));
- ApplicationContainer sinkApp = sinkHelper.Install (sinks);
+ ApplicationContainer sinkApp = sinkHelper.Install (sinks.Get (i));
sinkApp.Start (Seconds (start_time * i));
sinkApp.Stop (Seconds (stop_time));
}
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/tcp/wscript ns-3.28/examples/tcp/wscript
--- ns-3.27/examples/tcp/wscript 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/examples/tcp/wscript 2018-03-22 09:33:19.000000000 -0700
@@ -33,9 +33,13 @@
['point-to-point', 'internet', 'applications', 'flow-monitor'])
obj.source = 'tcp-nsc-comparison.cc'
-
+
obj = bld.create_ns3_program('tcp-variants-comparison',
['point-to-point', 'internet', 'applications', 'flow-monitor'])
obj.source = 'tcp-variants-comparison.cc'
-
+
+ obj = bld.create_ns3_program('tcp-pacing',
+ ['point-to-point', 'internet', 'applications', 'flow-monitor'])
+
+ obj.source = 'tcp-pacing.cc'
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/traffic-control/queue-discs-benchmark.cc ns-3.28/examples/traffic-control/queue-discs-benchmark.cc
--- ns-3.27/examples/traffic-control/queue-discs-benchmark.cc 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/examples/traffic-control/queue-discs-benchmark.cc 2018-03-22 09:33:19.000000000 -0700
@@ -145,40 +145,42 @@
// Access link traffic control configuration
TrafficControlHelper tchPfifoFastAccess;
- tchPfifoFastAccess.SetRootQueueDisc ("ns3::PfifoFastQueueDisc", "Limit", UintegerValue (1000));
+ tchPfifoFastAccess.SetRootQueueDisc ("ns3::PfifoFastQueueDisc", "MaxSize", StringValue ("1000p"));
// Bottleneck link traffic control configuration
TrafficControlHelper tchBottleneck;
if (queueDiscType.compare ("PfifoFast") == 0)
{
- tchBottleneck.SetRootQueueDisc ("ns3::PfifoFastQueueDisc", "Limit", UintegerValue (queueDiscSize));
+ tchBottleneck.SetRootQueueDisc ("ns3::PfifoFastQueueDisc", "MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, queueDiscSize)));
}
else if (queueDiscType.compare ("ARED") == 0)
{
tchBottleneck.SetRootQueueDisc ("ns3::RedQueueDisc");
Config::SetDefault ("ns3::RedQueueDisc::ARED", BooleanValue (true));
- Config::SetDefault ("ns3::RedQueueDisc::Mode", EnumValue (RedQueueDisc::QUEUE_DISC_MODE_PACKETS));
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (queueDiscSize));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, queueDiscSize)));
}
else if (queueDiscType.compare ("CoDel") == 0)
{
tchBottleneck.SetRootQueueDisc ("ns3::CoDelQueueDisc");
- Config::SetDefault ("ns3::CoDelQueueDisc::Mode", EnumValue (CoDelQueueDisc::QUEUE_DISC_MODE_PACKETS));
- Config::SetDefault ("ns3::CoDelQueueDisc::MaxPackets", UintegerValue (queueDiscSize));
+ Config::SetDefault ("ns3::CoDelQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, queueDiscSize)));
}
else if (queueDiscType.compare ("FqCoDel") == 0)
{
uint32_t handle = tchBottleneck.SetRootQueueDisc ("ns3::FqCoDelQueueDisc");
- Config::SetDefault ("ns3::FqCoDelQueueDisc::PacketLimit", UintegerValue (queueDiscSize));
+ Config::SetDefault ("ns3::FqCoDelQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, queueDiscSize)));
tchBottleneck.AddPacketFilter (handle, "ns3::FqCoDelIpv4PacketFilter");
tchBottleneck.AddPacketFilter (handle, "ns3::FqCoDelIpv6PacketFilter");
}
else if (queueDiscType.compare ("PIE") == 0)
{
tchBottleneck.SetRootQueueDisc ("ns3::PieQueueDisc");
- Config::SetDefault ("ns3::PieQueueDisc::Mode", EnumValue (PieQueueDisc::QUEUE_DISC_MODE_PACKETS));
- Config::SetDefault ("ns3::PieQueueDisc::QueueLimit", UintegerValue (queueDiscSize));
+ Config::SetDefault ("ns3::PieQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, queueDiscSize)));
}
else
{
@@ -190,8 +192,7 @@
tchBottleneck.SetQueueLimits ("ns3::DynamicQueueLimits");
}
- Config::SetDefault ("ns3::QueueBase::Mode", StringValue ("QUEUE_MODE_PACKETS"));
- Config::SetDefault ("ns3::QueueBase::MaxPackets", UintegerValue (100));
+ Config::SetDefault ("ns3::QueueBase::MaxSize", StringValue ("100p"));
NetDeviceContainer devicesAccessLink = accessLink.Install (n1.Get (0), n2.Get (0));
tchPfifoFastAccess.Install (devicesAccessLink);
@@ -200,7 +201,7 @@
address.NewNetwork ();
Ipv4InterfaceContainer interfacesAccess = address.Assign (devicesAccessLink);
- Config::SetDefault ("ns3::QueueBase::MaxPackets", UintegerValue (netdevicesQueueSize));
+ Config::SetDefault ("ns3::QueueBase::MaxSize", StringValue (std::to_string (netdevicesQueueSize) + "p"));
NetDeviceContainer devicesBottleneckLink = bottleneckLink.Install (n2.Get (0), n3.Get (0));
QueueDiscContainer qdiscs;
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/traffic-control/red-vs-fengadaptive.cc ns-3.28/examples/traffic-control/red-vs-fengadaptive.cc
--- ns-3.27/examples/traffic-control/red-vs-fengadaptive.cc 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/examples/traffic-control/red-vs-fengadaptive.cc 2018-03-22 09:33:19.000000000 -0700
@@ -70,18 +70,18 @@
Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (pktSize));
Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue (appDataRate));
- Config::SetDefault ("ns3::QueueBase::Mode", StringValue ("QUEUE_MODE_PACKETS"));
- Config::SetDefault ("ns3::QueueBase::MaxPackets", UintegerValue (maxPackets));
+ Config::SetDefault ("ns3::QueueBase::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, maxPackets)));
if (!modeBytes)
{
- Config::SetDefault ("ns3::RedQueueDisc::Mode", StringValue ("QUEUE_DISC_MODE_PACKETS"));
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (queueDiscLimitPackets));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, queueDiscLimitPackets)));
}
else
{
- Config::SetDefault ("ns3::RedQueueDisc::Mode", StringValue ("QUEUE_DISC_MODE_BYTES"));
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (queueDiscLimitPackets * pktSize));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::BYTES, queueDiscLimitPackets * pktSize)));
minTh *= pktSize;
maxTh *= pktSize;
}
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/traffic-control/red-vs-nlred.cc ns-3.28/examples/traffic-control/red-vs-nlred.cc
--- ns-3.27/examples/traffic-control/red-vs-nlred.cc 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/examples/traffic-control/red-vs-nlred.cc 2018-03-22 09:33:19.000000000 -0700
@@ -72,18 +72,18 @@
Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (pktSize));
Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue (appDataRate));
- Config::SetDefault ("ns3::QueueBase::Mode", StringValue ("QUEUE_MODE_PACKETS"));
- Config::SetDefault ("ns3::QueueBase::MaxPackets", UintegerValue (maxPackets));
+ Config::SetDefault ("ns3::QueueBase::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, maxPackets)));
if (!modeBytes)
{
- Config::SetDefault ("ns3::RedQueueDisc::Mode", StringValue ("QUEUE_DISC_MODE_PACKETS"));
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (queueDiscLimitPackets));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::PACKETS, queueDiscLimitPackets)));
}
else
{
- Config::SetDefault ("ns3::RedQueueDisc::Mode", StringValue ("QUEUE_DISC_MODE_BYTES"));
- Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (queueDiscLimitPackets * pktSize));
+ Config::SetDefault ("ns3::RedQueueDisc::MaxSize",
+ QueueSizeValue (QueueSize (QueueSizeUnit::BYTES, queueDiscLimitPackets * pktSize)));
minTh *= pktSize;
maxTh *= pktSize;
}
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/traffic-control/tbf-example.cc ns-3.28/examples/traffic-control/tbf-example.cc
--- ns-3.27/examples/traffic-control/tbf-example.cc 1969-12-31 16:00:00.000000000 -0800
+++ ns-3.28/examples/traffic-control/tbf-example.cc 2018-03-22 09:33:19.000000000 -0700
@@ -0,0 +1,149 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2015 Universita' degli Studi di Napoli "Federico II"
+ * 2017 Kungliga Tekniska Högskolan
+ *
+ * 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: Pasquale Imputato
+ * Author: Stefano Avallone
+ * Author: Surya Seetharaman - ported from ns-3
+ * RedQueueDisc traffic-control example to accommodate TbfQueueDisc example.
+ */
+
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/internet-module.h"
+#include "ns3/point-to-point-module.h"
+#include "ns3/applications-module.h"
+#include "ns3/traffic-control-module.h"
+
+// This simple example shows how to use TrafficControlHelper to install a
+// QueueDisc on a device.
+//
+// Network topology
+//
+// 10.1.1.0
+// n0 -------------- n1
+// point-to-point
+//
+// The output will consist of all the traced changes in
+// the number of tokens in TBF's first and second buckets:
+//
+// FirstBucketTokens 0 to x
+// SecondBucketTokens 0 to x
+// FirstBucketTokens x to 0
+// SecondBucketTokens x to 0
+//
+
+using namespace ns3;
+
+NS_LOG_COMPONENT_DEFINE ("TbfExample");
+
+void
+FirstBucketTokensTrace (uint32_t oldValue, uint32_t newValue)
+{
+ std::cout << "FirstBucketTokens " << oldValue << " to " << newValue << std::endl;
+}
+
+void
+SecondBucketTokensTrace (uint32_t oldValue, uint32_t newValue)
+{
+ std::cout << "SecondBucketTokens " << oldValue << " to " << newValue << std::endl;
+}
+
+int
+main (int argc, char *argv[])
+{
+
+ double simulationTime = 10; //seconds
+ uint32_t burst = 10000;
+ uint32_t mtu = 0;
+ DataRate rate = DataRate ("1Mbps");
+ DataRate peakRate = DataRate ("0bps");
+
+ CommandLine cmd;
+ cmd.AddValue ("burst", "Size of first bucket in bytes", burst);
+ cmd.AddValue ("mtu", "Size of second bucket in bytes", mtu);
+ cmd.AddValue ("rate", "Rate of tokens arriving in first bucket", rate);
+ cmd.AddValue ("peakRate", "Rate of tokens arriving in second bucket", peakRate);
+
+ cmd.Parse (argc, argv);
+
+ NodeContainer nodes;
+ nodes.Create (2);
+
+ PointToPointHelper pointToPoint;
+ pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("2Mb/s"));
+ pointToPoint.SetChannelAttribute ("Delay", StringValue ("0ms"));
+
+ NetDeviceContainer devices;
+ devices = pointToPoint.Install (nodes);
+
+ InternetStackHelper stack;
+ stack.Install (nodes);
+
+ TrafficControlHelper tch;
+ tch.SetRootQueueDisc ("ns3::TbfQueueDisc",
+ "Burst", UintegerValue (burst),
+ "Mtu", UintegerValue (mtu),
+ "Rate", DataRateValue (DataRate (rate)),
+ "PeakRate", DataRateValue (DataRate (peakRate)));
+ QueueDiscContainer qdiscs = tch.Install (devices);
+
+ Ptr q = qdiscs.Get (1);
+ q->TraceConnectWithoutContext ("TokensInFirstBucket", MakeCallback (&FirstBucketTokensTrace));
+ q->TraceConnectWithoutContext ("TokensInSecondBucket", MakeCallback (&SecondBucketTokensTrace));
+
+ Ipv4AddressHelper address;
+ address.SetBase ("10.1.1.0", "255.255.255.0");
+
+ Ipv4InterfaceContainer interfaces = address.Assign (devices);
+
+ //Flow
+ uint16_t port = 7;
+ Address localAddress (InetSocketAddress (Ipv4Address::GetAny (), port));
+ PacketSinkHelper packetSinkHelper ("ns3::TcpSocketFactory", localAddress);
+ ApplicationContainer sinkApp = packetSinkHelper.Install (nodes.Get (0));
+
+ sinkApp.Start (Seconds (0.0));
+ sinkApp.Stop (Seconds (simulationTime + 0.1));
+
+ uint32_t payloadSize = 1448;
+ Config::SetDefault ("ns3::TcpSocket::SegmentSize", UintegerValue (payloadSize));
+
+ OnOffHelper onoff ("ns3::TcpSocketFactory", Ipv4Address::GetAny ());
+ onoff.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));
+ onoff.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0.2]"));
+ onoff.SetAttribute ("PacketSize", UintegerValue (payloadSize));
+ onoff.SetAttribute ("DataRate", StringValue ("1.1Mb/s")); //bit/s
+ ApplicationContainer apps;
+
+ InetSocketAddress rmt (interfaces.GetAddress (0), port);
+ rmt.SetTos (0xb8);
+ AddressValue remoteAddress (rmt);
+ onoff.SetAttribute ("Remote", remoteAddress);
+ apps.Add (onoff.Install (nodes.Get (1)));
+ apps.Start (Seconds (1.0));
+ apps.Stop (Seconds (simulationTime + 0.1));
+
+ Simulator::Stop (Seconds (simulationTime + 5));
+ Simulator::Run ();
+
+ Simulator::Destroy ();
+
+ std::cout << std::endl << "*** TC Layer statistics ***" << std::endl;
+ std::cout << q->GetStats () << std::endl;
+ return 0;
+}
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/traffic-control/traffic-control.cc ns-3.28/examples/traffic-control/traffic-control.cc
--- ns-3.27/examples/traffic-control/traffic-control.cc 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/examples/traffic-control/traffic-control.cc 2018-03-22 09:33:19.000000000 -0700
@@ -110,7 +110,7 @@
PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("10Mbps"));
pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
- pointToPoint.SetQueue ("ns3::DropTailQueue", "Mode", StringValue ("QUEUE_MODE_PACKETS"), "MaxPackets", UintegerValue (1));
+ pointToPoint.SetQueue ("ns3::DropTailQueue", "MaxSize", StringValue ("1p"));
NetDeviceContainer devices;
devices = pointToPoint.Install (nodes);
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/traffic-control/wscript ns-3.28/examples/traffic-control/wscript
--- ns-3.27/examples/traffic-control/wscript 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/examples/traffic-control/wscript 2018-03-22 09:33:19.000000000 -0700
@@ -14,3 +14,7 @@
obj = bld.create_ns3_program('red-vs-nlred', ['point-to-point', 'point-to-point-layout', 'internet', 'applications', 'traffic-control'])
obj.source = 'red-vs-nlred.cc'
+
+ obj = bld.create_ns3_program('tbf-example',
+ ['internet', 'point-to-point', 'applications', 'traffic-control'])
+ obj.source = 'tbf-example.cc'
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/tutorial/third.py ns-3.28/examples/tutorial/third.py
--- ns-3.27/examples/tutorial/third.py 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/examples/tutorial/third.py 2018-03-22 09:33:19.000000000 -0700
@@ -52,7 +52,7 @@
nWifi = int(cmd.nWifi)
if nWifi > 18:
- print "Number of wifi nodes "+ str(nWifi)+ " specified exceeds the mobility bounding box"
+ print ("Number of wifi nodes "+ str(nWifi)+ " specified exceeds the mobility bounding box")
sys.exit(1)
if verbose == "True":
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/udp-client-server/udp-client-server.cc ns-3.28/examples/udp-client-server/udp-client-server.cc
--- ns-3.27/examples/udp-client-server/udp-client-server.cc 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/examples/udp-client-server/udp-client-server.cc 2018-03-22 09:33:19.000000000 -0700
@@ -25,7 +25,6 @@
#include
#include "ns3/core-module.h"
-#include "ns3/core-module.h"
#include "ns3/csma-module.h"
#include "ns3/applications-module.h"
#include "ns3/internet-module.h"
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/wireless/80211e-txop.cc ns-3.28/examples/wireless/80211e-txop.cc
--- ns-3.27/examples/wireless/80211e-txop.cc 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/examples/wireless/80211e-txop.cc 2018-03-22 09:33:19.000000000 -0700
@@ -79,7 +79,7 @@
YansWifiChannelHelper channel = YansWifiChannelHelper::Default ();
YansWifiPhyHelper phy = YansWifiPhyHelper::Default ();
- phy.SetPcapDataLinkType (YansWifiPhyHelper::DLT_IEEE802_11_RADIO);
+ phy.SetPcapDataLinkType (WifiPhyHelper::DLT_IEEE802_11_RADIO);
phy.SetChannel (channel.Create ());
WifiHelper wifi; //the default standard of 802.11a will be selected by this helper since the program doesn't specify another one
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/wireless/80211n-mimo.cc ns-3.28/examples/wireless/80211n-mimo.cc
--- ns-3.27/examples/wireless/80211n-mimo.cc 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/examples/wireless/80211n-mimo.cc 2018-03-22 09:33:19.000000000 -0700
@@ -87,6 +87,7 @@
CommandLine cmd;
cmd.AddValue ("step", "Granularity of the results to be plotted in meters", step);
+ cmd.AddValue ("simulationTime", "Simulation time per step (in seconds)", simulationTime);
cmd.AddValue ("channelBonding", "Enable/disable channel bonding (channel width = 20 MHz if false, channel width = 40 MHz if true)", channelBonding);
cmd.AddValue ("shortGuardInterval", "Enable/disable short guard interval", shortGuardInterval);
cmd.AddValue ("frequency", "Whether working in the 2.4 or 5.0 GHz band (other values gets rejected)", frequency);
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/wireless/examples-to-run.py ns-3.28/examples/wireless/examples-to-run.py
--- ns-3.27/examples/wireless/examples-to-run.py 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/examples/wireless/examples-to-run.py 2018-03-22 09:33:19.000000000 -0700
@@ -24,22 +24,43 @@
("wifi-simple-infra", "True", "True"),
("wifi-simple-interference", "True", "True"),
("wifi-wired-bridging", "True", "True"),
+ ("wifi-sleep", "True", "True"),
+ ("wifi-blockack", "True", "True"),
+ ("wifi-timing-attributes --simulationTime=1", "True", "True"),
("power-adaptation-distance --manager=ns3::ParfWifiManager --outputFileName=parf --steps=5 --stepsSize=10", "True", "True"),
("power-adaptation-distance --manager=ns3::AparfWifiManager --outputFileName=aparf --steps=5 --stepsSize=10", "True", "False"),
("power-adaptation-distance --manager=ns3::RrpaaWifiManager --outputFileName=rrpaa --steps=5 --stepsSize=10", "True", "False"),
+ ("power-adaptation-interference --simuTime=5", "True", "False"),
("ofdm-ht-validation", "True", "True"),
("ofdm-validation", "True", "True"),
("ofdm-vht-validation", "True", "True"),
("ofdm-he-validation", "True", "True"),
- ("ht-wifi-network --simulationTime=0.1 --minExpectedThroughput=5 --maxExpectedThroughput=134", "True", "True"),
- ("vht-wifi-network --simulationTime=0.1 --minExpectedThroughput=5 --maxExpectedThroughput=555", "True", "True"),
- ("he-wifi-network --simulationTime=0.25 --minExpectedThroughput=6.35 --maxExpectedThroughput=754", "True", "True"),
- ("simple-ht-hidden-stations --simulationTime=1 --minExpectedThroughput=16.7 --maxExpectedThroughput=16.8", "True", "True"),
+ ("80211n-mimo --simulationTime=0.1 --step=10", "True", "True"),
+ ("ht-wifi-network --simulationTime=0.1 --frequency=5 --useRts=0 --minExpectedThroughput=5 --maxExpectedThroughput=134", "True", "True"),
+ ("ht-wifi-network --simulationTime=0.1 --frequency=5 --useRts=1 --minExpectedThroughput=5 --maxExpectedThroughput=130", "True", "True"),
+ ("ht-wifi-network --simulationTime=0.1 --frequency=2.4 --useRts=0 --minExpectedThroughput=5 --maxExpectedThroughput=132", "True", "True"),
+ ("ht-wifi-network --simulationTime=0.1 --frequency=2.4 --useRts=1 --minExpectedThroughput=4.5 --maxExpectedThroughput=128", "True", "True"),
+ ("vht-wifi-network --simulationTime=0.1 --useRts=0 --minExpectedThroughput=5 --maxExpectedThroughput=555", "True", "True"),
+ ("vht-wifi-network --simulationTime=0.2 --useRts=1", "True", "True"),
+ ("he-wifi-network --simulationTime=0.25 --frequency=5 --useRts=0 --minExpectedThroughput=6 --maxExpectedThroughput=754", "True", "True"),
+ ("he-wifi-network --simulationTime=0.3 --frequency=5 --useRts=1 --minExpectedThroughput=6 --maxExpectedThroughput=639", "True", "True"),
+ ("he-wifi-network --simulationTime=0.25 --frequency=2.4 --useRts=0 --minExpectedThroughput=6 --maxExpectedThroughput=238", "True", "True"),
+ ("he-wifi-network --simulationTime=0.3 --frequency=2.4 --useRts=1 --minExpectedThroughput=6 --maxExpectedThroughput=224", "True", "True"),
+ ("simple-ht-hidden-stations --simulationTime=1 --minExpectedThroughput=22 --maxExpectedThroughput=22.5", "True", "True"),
("mixed-network --simulationTime=1", "True", "True"),
("wifi-aggregation --simulationTime=1 --verifyResults=1", "True", "True"),
("80211e-txop --simulationTime=1 --verifyResults=1", "True", "True"),
("wifi-multi-tos --simulationTime=1 --nWifi=16 --useRts=1 --useShortGuardInterval=1", "True", "True"),
("wifi-tcp", "True", "True"),
+ ("wifi-hidden-terminal --wifiManager=Arf", "True", "True"),
+ ("wifi-hidden-terminal --wifiManager=Aarf", "True", "True"),
+ ("wifi-hidden-terminal --wifiManager=Aarfcd", "True", "True"),
+ ("wifi-hidden-terminal --wifiManager=Onoe", "True", "True"),
+ ("wifi-hidden-terminal --wifiManager=Amrr", "True", "True"),
+ ("wifi-hidden-terminal --wifiManager=Minstrel", "True", "True"),
+ ("wifi-hidden-terminal --wifiManager=Cara", "True", "True"),
+ ("wifi-hidden-terminal --wifiManager=Rraa", "True", "True"),
+ ("wifi-hidden-terminal --wifiManager=Rrpaa", "True", "True"),
("wifi-spectrum-per-example --distance=52 --index=3 --wifiType=ns3::SpectrumWifiPhy --simulationTime=1", "True", "True"),
("wifi-spectrum-per-example --distance=24 --index=31 --wifiType=ns3::YansWifiPhy --simulationTime=1", "True", "False"),
("wifi-spectrum-per-interference --distance=24 --index=31 --simulationTime=1 --waveformPower=0.1", "True", "True"),
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/wireless/he-wifi-network.cc ns-3.28/examples/wireless/he-wifi-network.cc
--- ns-3.27/examples/wireless/he-wifi-network.cc 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/examples/wireless/he-wifi-network.cc 2018-03-22 09:33:19.000000000 -0700
@@ -48,21 +48,30 @@
int main (int argc, char *argv[])
{
bool udp = true;
+ bool useRts = false;
double simulationTime = 10; //seconds
double distance = 1.0; //meters
+ double frequency = 5.0; //whether 2.4 or 5.0 GHz
int mcs = -1; // -1 indicates an unset value
double minExpectedThroughput = 0;
double maxExpectedThroughput = 0;
CommandLine cmd;
+ cmd.AddValue ("frequency", "Whether working in the 2.4 or 5.0 GHz band (other values gets rejected)", frequency);
cmd.AddValue ("distance", "Distance in meters between the station and the access point", distance);
cmd.AddValue ("simulationTime", "Simulation time in seconds", simulationTime);
cmd.AddValue ("udp", "UDP if set to 1, TCP otherwise", udp);
+ cmd.AddValue ("useRts", "Enable/disable RTS/CTS", useRts);
cmd.AddValue ("mcs", "if set, limit testing to a specific MCS (0-7)", mcs);
cmd.AddValue ("minExpectedThroughput", "if set, simulation fails if the lowest throughput is below this value", minExpectedThroughput);
cmd.AddValue ("maxExpectedThroughput", "if set, simulation fails if the highest throughput is above this value", maxExpectedThroughput);
cmd.Parse (argc,argv);
+ if (useRts)
+ {
+ Config::SetDefault ("ns3::WifiRemoteStationManager::RtsCtsThreshold", StringValue ("0"));
+ }
+
double prevThroughput [12];
for (uint32_t l = 0; l < 12; l++)
{
@@ -80,7 +89,8 @@
{
uint8_t index = 0;
double previous = 0;
- for (int channelWidth = 20; channelWidth <= 160; ) //MHz
+ uint8_t maxChannelWidth = frequency == 2.4 ? 40 : 160;
+ for (int channelWidth = 20; channelWidth <= maxChannelWidth; ) //MHz
{
for (int gi = 3200; gi >= 800; ) //Nanoseconds
{
@@ -107,9 +117,22 @@
// Set guard interval
phy.Set ("GuardInterval", TimeValue (NanoSeconds (gi)));
- WifiHelper wifi;
- wifi.SetStandard (WIFI_PHY_STANDARD_80211ax_5GHZ);
WifiMacHelper mac;
+ WifiHelper wifi;
+ if (frequency == 5.0)
+ {
+ wifi.SetStandard (WIFI_PHY_STANDARD_80211ax_5GHZ);
+ }
+ else if (frequency == 2.4)
+ {
+ wifi.SetStandard (WIFI_PHY_STANDARD_80211ax_2_4GHZ);
+ Config::SetDefault ("ns3::LogDistancePropagationLossModel::ReferenceLoss", DoubleValue (40.046));
+ }
+ else
+ {
+ std::cout << "Wrong frequency value!" << std::endl;
+ return 0;
+ }
std::ostringstream oss;
oss << "HeMcs" << mcs;
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/wireless/ht-wifi-network.cc ns-3.28/examples/wireless/ht-wifi-network.cc
--- ns-3.27/examples/wireless/ht-wifi-network.cc 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/examples/wireless/ht-wifi-network.cc 2018-03-22 09:33:19.000000000 -0700
@@ -49,6 +49,7 @@
int main (int argc, char *argv[])
{
bool udp = true;
+ bool useRts = false;
double simulationTime = 10; //seconds
double distance = 1.0; //meters
double frequency = 5.0; //whether 2.4 or 5.0 GHz
@@ -61,11 +62,17 @@
cmd.AddValue ("distance", "Distance in meters between the station and the access point", distance);
cmd.AddValue ("simulationTime", "Simulation time in seconds", simulationTime);
cmd.AddValue ("udp", "UDP if set to 1, TCP otherwise", udp);
+ cmd.AddValue ("useRts", "Enable/disable RTS/CTS", useRts);
cmd.AddValue ("mcs", "if set, limit testing to a specific MCS (0-7)", mcs);
cmd.AddValue ("minExpectedThroughput", "if set, simulation fails if the lowest throughput is below this value", minExpectedThroughput);
cmd.AddValue ("maxExpectedThroughput", "if set, simulation fails if the highest throughput is above this value", maxExpectedThroughput);
cmd.Parse (argc,argv);
+ if (useRts)
+ {
+ Config::SetDefault ("ns3::WifiRemoteStationManager::RtsCtsThreshold", StringValue ("0"));
+ }
+
double prevThroughput [8];
for (uint32_t l = 0; l < 8; l++)
{
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/wireless/mixed-network.cc ns-3.28/examples/wireless/mixed-network.cc
--- ns-3.27/examples/wireless/mixed-network.cc 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/examples/wireless/mixed-network.cc 2018-03-22 09:33:19.000000000 -0700
@@ -147,7 +147,7 @@
channel.AddPropagationLoss ("ns3::RangePropagationLossModel");
YansWifiPhyHelper phy = YansWifiPhyHelper::Default ();
- phy.SetPcapDataLinkType (YansWifiPhyHelper::DLT_IEEE802_11_RADIO);
+ phy.SetPcapDataLinkType (WifiPhyHelper::DLT_IEEE802_11_RADIO);
phy.SetChannel (channel.Create ());
WifiHelper wifi;
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/wireless/mixed-wired-wireless.py ns-3.28/examples/wireless/mixed-wired-wireless.py
--- ns-3.27/examples/wireless/mixed-wired-wireless.py 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/examples/wireless/mixed-wired-wireless.py 2018-03-22 09:33:19.000000000 -0700
@@ -112,7 +112,7 @@
stopTime = int(cmd.stopTime)
if (stopTime < 10):
- print "Use a simulation stop time >= 10 seconds"
+ print ("Use a simulation stop time >= 10 seconds")
exit(1)
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
# #
@@ -142,7 +142,7 @@
#
# Add the IPv4 protocol stack to the nodes in our container
#
- print "Enabling OLSR routing on all backbone nodes"
+ print ("Enabling OLSR routing on all backbone nodes")
internet = ns.internet.InternetStackHelper()
olsr = ns.olsr.OlsrHelper()
internet.SetRoutingHelper(olsr); # has effect on the next Install ()
@@ -186,7 +186,7 @@
ipAddrs.SetBase(ns.network.Ipv4Address("172.16.0.0"), ns.network.Ipv4Mask("255.255.255.0"))
for i in range(backboneNodes):
- print "Configuring local area network for backbone node ", i
+ print ("Configuring local area network for backbone node ", i)
#
# Create a container to manage the nodes of the LAN. We need
# two containers here; one with all of the new nodes, and one
@@ -243,7 +243,7 @@
ipAddrs.SetBase(ns.network.Ipv4Address("10.0.0.0"), ns.network.Ipv4Mask("255.255.255.0"))
for i in range(backboneNodes):
- print "Configuring wireless network for backbone node ", i
+ print ("Configuring wireless network for backbone node ", i)
#
# Create a container to manage the nodes of the LAN. We need
# two containers here; one with all of the new nodes, and one
@@ -257,20 +257,18 @@
# Create another ad hoc network and devices
#
ssid = ns.wifi.Ssid('wifi-infra' + str(i))
- wifiInfra = ns.wifi.WifiHelper.Default()
+ wifiInfra = ns.wifi.WifiHelper()
wifiPhy.SetChannel(wifiChannel.Create())
wifiInfra.SetRemoteStationManager('ns3::ArfWifiManager')
macInfra = ns.wifi.WifiMacHelper();
macInfra.SetType("ns3::StaWifiMac",
- "Ssid", ns.wifi.SsidValue(ssid),
- "ActiveProbing", ns.core.BooleanValue(False))
+ "Ssid", ns.wifi.SsidValue(ssid))
# setup stas
staDevices = wifiInfra.Install(wifiPhy, macInfra, stas)
# setup ap.
macInfra.SetType("ns3::ApWifiMac",
"Ssid", ns.wifi.SsidValue(ssid),
- "BeaconGeneration", ns.core.BooleanValue(True),
"BeaconInterval", ns.core.TimeValue(ns.core.Seconds(2.5)))
apDevices = wifiInfra.Install(wifiPhy, macInfra, backbone.Get(i))
# Collect all of these new devices
@@ -313,7 +311,7 @@
# Create the OnOff application to send UDP datagrams of size
# 210 bytes at a rate of 448 Kb/s, between two nodes
- print "Create Applications."
+ print ("Create Applications.")
port = 9 # Discard port(RFC 863)
appSource = ns.network.NodeList.GetNode(backboneNodes)
@@ -340,7 +338,7 @@
# #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
- print "Configure Tracing."
+ print ("Configure Tracing.")
csma = ns.csma.CsmaHelper()
#
# Let's set up some ns-2-like ascii traces, using another helper class
@@ -369,7 +367,7 @@
# #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
- print "Run Simulation."
+ print ("Run Simulation.")
ns.core.Simulator.Stop(ns.core.Seconds(stopTime))
ns.core.Simulator.Run()
ns.core.Simulator.Destroy()
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/wireless/multirate.cc ns-3.28/examples/wireless/multirate.cc
--- ns-3.27/examples/wireless/multirate.cc 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/examples/wireless/multirate.cc 2018-03-22 09:33:19.000000000 -0700
@@ -447,10 +447,6 @@
}
mobil.Install (c);
-
-// NS_LOG_INFO ("Enabling global routing on all nodes");
-// Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
-
if ( scenario == 1 && enableRouting)
{
SelectSrcDest (c);
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/wireless/power-adaptation-interference.cc ns-3.28/examples/wireless/power-adaptation-interference.cc
--- ns-3.27/examples/wireless/power-adaptation-interference.cc 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/examples/wireless/power-adaptation-interference.cc 2018-03-22 09:33:19.000000000 -0700
@@ -82,7 +82,7 @@
void RxCallback (std::string path, Ptr packet, const Address &from);
void PowerCallback (std::string path, double oldPower, double newPower, Mac48Address dest);
void RateCallback (std::string path, DataRate oldRate, DataRate newRate, Mac48Address dest);
- void StateCallback (std::string path, Time init, Time duration, enum WifiPhy::State state);
+ void StateCallback (std::string path, Time init, Time duration, WifiPhyState state);
Gnuplot2dDataset GetDatafile ();
Gnuplot2dDataset GetPowerDatafile ();
@@ -216,24 +216,24 @@
}
void
-NodeStatistics::StateCallback (std::string path, Time init, Time duration, enum WifiPhy::State state)
+NodeStatistics::StateCallback (std::string path, Time init, Time duration, WifiPhyState state)
{
- if (state == WifiPhy::CCA_BUSY)
+ if (state == WifiPhyState::CCA_BUSY)
{
busyTime += duration.GetSeconds ();
totalBusyTime += duration.GetSeconds ();
}
- else if (state == WifiPhy::IDLE)
+ else if (state == WifiPhyState::IDLE)
{
idleTime += duration.GetSeconds ();
totalIdleTime += duration.GetSeconds ();
}
- else if (state == WifiPhy::TX)
+ else if (state == WifiPhyState::TX)
{
txTime += duration.GetSeconds ();
totalTxTime += duration.GetSeconds ();
}
- else if (state == WifiPhy::RX)
+ else if (state == WifiPhyState::RX)
{
rxTime += duration.GetSeconds ();
totalRxTime += duration.GetSeconds ();
@@ -383,7 +383,6 @@
//Configure the STA nodes
wifi.SetRemoteStationManager ("ns3::AarfWifiManager", "RtsCtsThreshold", UintegerValue (rtsThreshold));
- //wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", "DataMode",StringValue ("ErpOfdmRate6Mbps"),"ControlMode",StringValue ("ErpOfdmRate6Mbps"));
wifiPhy.Set ("TxPowerStart", DoubleValue (maxPower));
wifiPhy.Set ("TxPowerEnd", DoubleValue (maxPower));
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/wireless/simple-ht-hidden-stations.cc ns-3.28/examples/wireless/simple-ht-hidden-stations.cc
--- ns-3.27/examples/wireless/simple-ht-hidden-stations.cc 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/examples/wireless/simple-ht-hidden-stations.cc 2018-03-22 09:33:19.000000000 -0700
@@ -88,7 +88,7 @@
channel.AddPropagationLoss ("ns3::RangePropagationLossModel"); //wireless range limited to 5 meters!
YansWifiPhyHelper phy = YansWifiPhyHelper::Default ();
- phy.SetPcapDataLinkType (YansWifiPhyHelper::DLT_IEEE802_11_RADIO);
+ phy.SetPcapDataLinkType (WifiPhyHelper::DLT_IEEE802_11_RADIO);
phy.SetChannel (channel.Create ());
WifiHelper wifi;
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/wireless/vht-wifi-network.cc ns-3.28/examples/wireless/vht-wifi-network.cc
--- ns-3.27/examples/wireless/vht-wifi-network.cc 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/examples/wireless/vht-wifi-network.cc 2018-03-22 09:33:19.000000000 -0700
@@ -48,6 +48,7 @@
int main (int argc, char *argv[])
{
bool udp = true;
+ bool useRts = false;
double simulationTime = 10; //seconds
double distance = 1.0; //meters
int mcs = -1; // -1 indicates an unset value
@@ -58,11 +59,17 @@
cmd.AddValue ("distance", "Distance in meters between the station and the access point", distance);
cmd.AddValue ("simulationTime", "Simulation time in seconds", simulationTime);
cmd.AddValue ("udp", "UDP if set to 1, TCP otherwise", udp);
+ cmd.AddValue ("useRts", "Enable/disable RTS/CTS", useRts);
cmd.AddValue ("mcs", "if set, limit testing to a specific MCS (0-9)", mcs);
cmd.AddValue ("minExpectedThroughput", "if set, simulation fails if the lowest throughput is below this value", minExpectedThroughput);
cmd.AddValue ("maxExpectedThroughput", "if set, simulation fails if the highest throughput is above this value", maxExpectedThroughput);
cmd.Parse (argc,argv);
+ if (useRts)
+ {
+ Config::SetDefault ("ns3::WifiRemoteStationManager::RtsCtsThreshold", StringValue ("0"));
+ }
+
double prevThroughput [8];
for (uint32_t l = 0; l < 8; l++)
{
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/wireless/wifi-adhoc.cc ns-3.28/examples/wireless/wifi-adhoc.cc
--- ns-3.27/examples/wireless/wifi-adhoc.cc 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/examples/wireless/wifi-adhoc.cc 2018-03-22 09:33:19.000000000 -0700
@@ -84,7 +84,6 @@
return;
}
SetPosition (node, pos);
- //std::cout << "x="< packet, double snr, WifiMode mode, enum WifiPreamble preamble)
+PhyRxOkTrace (std::string context, Ptr packet, double snr, WifiMode mode, WifiPreamble preamble)
{
if (g_verbose)
{
@@ -70,7 +70,7 @@
}
}
void
-PhyStateTrace (std::string context, Time start, Time duration, enum WifiPhy::State state)
+PhyStateTrace (std::string context, Time start, Time duration, WifiPhyState state)
{
if (g_verbose)
{
@@ -103,10 +103,6 @@
}
SetPosition (node, pos);
- if (g_verbose)
- {
- //std::cout << "x="<
-void PhyStateTrace (std::string context, Time start, Time duration, enum WifiPhy::State state)
+void PhyStateTrace (std::string context, Time start, Time duration, WifiPhyState state)
{
std::stringstream ss;
ss << "state_" << node << ".log";
@@ -119,9 +119,9 @@
}
wifi.SetStandard (WIFI_PHY_STANDARD_80211b);
- YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
+ YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
// ns-3 supports RadioTap and Prism tracing extensions for 802.11b
- wifiPhy.SetPcapDataLinkType (YansWifiPhyHelper::DLT_IEEE802_11_RADIO);
+ wifiPhy.SetPcapDataLinkType (WifiPhyHelper::DLT_IEEE802_11_RADIO);
wifiPhy.Set ("TxPowerStart", DoubleValue (txPowerStart));
wifiPhy.Set ("TxPowerEnd", DoubleValue (txPowerEnd));
@@ -219,8 +219,6 @@
Config::Connect ("/NodeList/0/DeviceList/*/Phy/State/State", MakeCallback (&PhyStateTrace<0>));
Config::Connect ("/NodeList/1/DeviceList/*/Phy/State/State", MakeCallback (&PhyStateTrace<1>));
-// wifiPhy.EnablePcap ("wifi-sleep", devices);
-
Simulator::Stop (Seconds (duration + 1));
Simulator::Run ();
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/wireless/wifi-spectrum-per-example.cc ns-3.28/examples/wireless/wifi-spectrum-per-example.cc
--- ns-3.27/examples/wireless/wifi-spectrum-per-example.cc 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/examples/wireless/wifi-spectrum-per-example.cc 2018-03-22 09:33:19.000000000 -0700
@@ -415,8 +415,7 @@
if (wifiType == "ns3::YansWifiPhy")
{
mac.SetType ("ns3::StaWifiMac",
- "Ssid", SsidValue (ssid),
- "ActiveProbing", BooleanValue (false));
+ "Ssid", SsidValue (ssid));
staDevice = wifi.Install (phy, mac, wifiStaNode);
mac.SetType ("ns3::ApWifiMac",
"Ssid", SsidValue (ssid));
@@ -426,8 +425,7 @@
else if (wifiType == "ns3::SpectrumWifiPhy")
{
mac.SetType ("ns3::StaWifiMac",
- "Ssid", SsidValue (ssid),
- "ActiveProbing", BooleanValue (false));
+ "Ssid", SsidValue (ssid));
staDevice = wifi.Install (spectrumPhy, mac, wifiStaNode);
mac.SetType ("ns3::ApWifiMac",
"Ssid", SsidValue (ssid));
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/wireless/wifi-spectrum-per-interference.cc ns-3.28/examples/wireless/wifi-spectrum-per-interference.cc
--- ns-3.27/examples/wireless/wifi-spectrum-per-interference.cc 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/examples/wireless/wifi-spectrum-per-interference.cc 2018-03-22 09:33:19.000000000 -0700
@@ -441,8 +441,7 @@
if (wifiType == "ns3::YansWifiPhy")
{
mac.SetType ("ns3::StaWifiMac",
- "Ssid", SsidValue (ssid),
- "ActiveProbing", BooleanValue (false));
+ "Ssid", SsidValue (ssid));
staDevice = wifi.Install (phy, mac, wifiStaNode);
mac.SetType ("ns3::ApWifiMac",
"Ssid", SsidValue (ssid));
@@ -452,8 +451,7 @@
else if (wifiType == "ns3::SpectrumWifiPhy")
{
mac.SetType ("ns3::StaWifiMac",
- "Ssid", SsidValue (ssid),
- "ActiveProbing", BooleanValue (false));
+ "Ssid", SsidValue (ssid));
staDevice = wifi.Install (spectrumPhy, mac, wifiStaNode);
mac.SetType ("ns3::ApWifiMac",
"Ssid", SsidValue (ssid));
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/wireless/wifi-spectrum-saturation-example.cc ns-3.28/examples/wireless/wifi-spectrum-saturation-example.cc
--- ns-3.27/examples/wireless/wifi-spectrum-saturation-example.cc 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/examples/wireless/wifi-spectrum-saturation-example.cc 2018-03-22 09:33:19.000000000 -0700
@@ -198,8 +198,8 @@
//Bug 2460: CcaMode1Threshold default should be set to -62 dBm when using Spectrum
Config::SetDefault ("ns3::WifiPhy::CcaMode1Threshold", DoubleValue (-62.0));
- Ptr spectrumChannel
- = CreateObject ();
+ Ptr spectrumChannel
+ = CreateObject ();
Ptr lossModel
= CreateObject ();
spectrumChannel->AddPropagationLossModel (lossModel);
@@ -614,8 +614,7 @@
if (wifiType == "ns3::YansWifiPhy")
{
mac.SetType ("ns3::StaWifiMac",
- "Ssid", SsidValue (ssid),
- "ActiveProbing", BooleanValue (false));
+ "Ssid", SsidValue (ssid));
staDevice = wifi.Install (phy, mac, wifiStaNode);
mac.SetType ("ns3::ApWifiMac",
"Ssid", SsidValue (ssid));
@@ -625,8 +624,7 @@
else if (wifiType == "ns3::SpectrumWifiPhy")
{
mac.SetType ("ns3::StaWifiMac",
- "Ssid", SsidValue (ssid),
- "ActiveProbing", BooleanValue (false));
+ "Ssid", SsidValue (ssid));
staDevice = wifi.Install (spectrumPhy, mac, wifiStaNode);
mac.SetType ("ns3::ApWifiMac",
"Ssid", SsidValue (ssid));
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/wireless/wifi-tcp.cc ns-3.28/examples/wireless/wifi-tcp.cc
--- ns-3.27/examples/wireless/wifi-tcp.cc 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/examples/wireless/wifi-tcp.cc 2018-03-22 09:33:19.000000000 -0700
@@ -192,7 +192,7 @@
/* Enable Traces */
if (pcapTracing)
{
- wifiPhy.SetPcapDataLinkType (YansWifiPhyHelper::DLT_IEEE802_11_RADIO);
+ wifiPhy.SetPcapDataLinkType (WifiPhyHelper::DLT_IEEE802_11_RADIO);
wifiPhy.EnablePcap ("AccessPoint", apDevice);
wifiPhy.EnablePcap ("Station", staDevices);
}
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/wireless/wifi-timing-attributes.cc ns-3.28/examples/wireless/wifi-timing-attributes.cc
--- ns-3.27/examples/wireless/wifi-timing-attributes.cc 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/examples/wireless/wifi-timing-attributes.cc 2018-03-22 09:33:19.000000000 -0700
@@ -83,8 +83,8 @@
WifiHelper wifi;
wifi.SetStandard (WIFI_PHY_STANDARD_80211n_2_4GHZ);
wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
- "DataMode", StringValue ("OfdmRate65MbpsBW20MHz"),
- "ControlMode", StringValue ("OfdmRate6_5MbpsBW20MHz"));
+ "DataMode", StringValue ("HtMcs7"),
+ "ControlMode", StringValue ("HtMcs0"));
WifiMacHelper mac;
//Install PHY and MAC
@@ -142,7 +142,7 @@
UdpServerHelper server (port);
ApplicationContainer serverApp = server.Install (wifiStaNode.Get (0));
serverApp.Start (Seconds (0.0));
- serverApp.Stop (Seconds (simulationTime));
+ serverApp.Stop (Seconds (simulationTime + 1));
UdpClientHelper client (staNodeInterface.GetAddress (0), port);
client.SetAttribute ("MaxPackets", UintegerValue (4294967295u));
@@ -151,19 +151,19 @@
ApplicationContainer clientApp = client.Install (wifiApNode.Get (0));
clientApp.Start (Seconds (1.0));
- clientApp.Stop (Seconds (simulationTime));
+ clientApp.Stop (Seconds (simulationTime + 1));
//Populate routing table
Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
//Set simulation time and launch simulation
- Simulator::Stop (Seconds (simulationTime));
+ Simulator::Stop (Seconds (simulationTime + 1));
Simulator::Run ();
Simulator::Destroy ();
//Get and print results
uint32_t totalPacketsThrough = DynamicCast (serverApp.Get (0))->GetReceived ();
- double throughput = totalPacketsThrough * 1472 * 8 / ((simulationTime - 1) * 1000000.0); //Mbit/s
+ double throughput = totalPacketsThrough * 1472 * 8 / (simulationTime * 1000000.0); //Mbit/s
std::cout << "Throughput: " << throughput << " Mbit/s" << std::endl;
return 0;
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/examples/wireless/wifi-wired-bridging.cc ns-3.28/examples/wireless/wifi-wired-bridging.cc
--- ns-3.27/examples/wireless/wifi-wired-bridging.cc 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/examples/wireless/wifi-wired-bridging.cc 2018-03-22 09:33:19.000000000 -0700
@@ -88,7 +88,7 @@
double wifiX = 0.0;
YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
- wifiPhy.SetPcapDataLinkType (YansWifiPhyHelper::DLT_IEEE802_11_RADIO);
+ wifiPhy.SetPcapDataLinkType (WifiPhyHelper::DLT_IEEE802_11_RADIO);
for (uint32_t i = 0; i < nWifis; ++i)
{
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/RELEASE_NOTES ns-3.28/RELEASE_NOTES
--- ns-3.27/RELEASE_NOTES 2017-10-11 13:38:59.000000000 -0700
+++ ns-3.28/RELEASE_NOTES 2018-03-22 09:33:19.000000000 -0700
@@ -9,6 +9,106 @@
Consult the file CHANGES.html for more detailed information about changed
API and behavior across ns-3 releases.
+Release 3.28
+============
+
+Availability
+------------
+This release is available from:
+https://www.nsnam.org/release/ns-allinone-3.28.tar.bz2
+
+Supported platforms
+-------------------
+This release is intended to work on systems with the following minimal
+compiler requirements (other compilers supporting C++11 may also work):
+- g++-4.9 or later
+- Apple LLVM version 7.0.2 or later
+- clang-3.3 or later
+In addition, a Python 2.7 (Python 2 series) or Python 3.4 (Python 3 series)
+or later is required.
+
+This release has been tested on the following platforms:
+- Ubuntu 17.10 (64 bit) with g++-7.2.0 and Python 2.7.14
+- Ubuntu 16.04 (64 bit) with g++-5.4.0 and Python 2.7.12
+- Fedora Core 27 (64 bit) with g++-7.3.1 and Python 2.7.14
+- Fedora Core 26 (64 bit) with g++-7.3.1 and g++-7.1.1, and Python 2.7.14
+- CentOS/RHEL 7.4 (64-bit) with g++-6.3.1 and Python 3.5.1
+ - Note: the default g++ version (4.8) must be upgraded
+- CentOS/RHEL 6.8 (64-bit) with g++-4.9.2 and Python 2.7.13
+ - Note: the default g++ version (4.4) must be upgraded
+ - Note: the default Python version (2.6) must be upgraded
+- OS X Sierra 10.12.6 with Xcode 9.2, Apple LLVM version 9.0.0, Python 2.7.13
+- OS X Yosemite 10.10.5 with Xcode 7.2.1, Apple LLVM vers. 7.0.2, Python 2.7.10
+
+New user-visible features
+-------------------------
+- (tcp) Added TCP-LP as a congestion control module
+- (tcp) When TCP SACK is enabled, the third rule defined in RFC 6675 regarding the next segment to transmit is followed
+- (tcp) Separated the CongestionWindow trace into a CongestionWindow trace and a CongestionWindowInflated trace, where the latter tracks window inflation during loss recovery as defined by the Reno algorithm
+- (tcp) Implemented the core functionality of TCP Pacing.
+- (lr-wpan) Extended addressing mode is now supported.
+- (internet) Ipv[4,6]AddressGenerator can now check if an address or a network is already allocated.
+- (internet) Ipv6AddressHelper has more pedantic checks, but more than one such helper can now be used in a program.
+- (lte) UEs can now use IPv6 to send and receive traffic.
+- (uan) The UAN module now supports an IP stack
+- (uan) Added some examples for running raw, IPv4, IPv6, and 6LoWPAN over UAN
+- (traffic-control) Added a FIFO queue disc (FifoQueueDisc) and the Token Bucket Filter (TbfQueueDisc).
+
+Bugs fixed
+----------
+- Bug 1745 - There can be only one Ipv6AddressHelper in a script
+- Bug 1783 - tcp: Experiencing drops during fast recovery causes TCP's congestion window to blow up. Not anymore.
+- Bug 2107 - lte: Enable PCAP for S1 and X2 point-to-point links
+- Bug 2152 - lte: Fix uplink HARQ retx. out of synch at the MAC layer
+- Bug 2151 - lte: Generate correct redundancy version in uplink HARQ
+- Bug 2277 - lte: EpcTftClassifier::Classify blindly assumes that a packet has a L4 header
+- Bug 2505 - network: Avoid asserts in Header/Trailer deserialization
+- Bug 2653 - tcp: Avoid saving smaller TS in case of packet reordering
+- Bug 2656 - wifi: Minstrel and MinstrelHt provide different results for 802.11a/b/g
+- Bug 2754 - lte: Incorrect arguments passed to Asn1Header::SerializeInteger
+- Bug 2764 - wifi: WifiSpectrumModelId doesn't distinguish 11ax from legacy
+- Bug 2766 - core: Modify logging for int64x64 to avoid stack overflow
+- Bug 2768 - lte: LteUeNetDevice has a null MAC address
+- Bug 2774 - wifi: Wifi Transmitter Sends ADDBA Request Continuously Even After Transmitting Delba Frame
+- Bug 2791 - wifi: Interference Helper gives negative trace value for Interference Power
+- Bug 2807 - energy: GetTotalEnergyConsumption is not updated correctly
+- Bug 2809 - wifi: Wifi doesn't fully stop when energy is depleted
+- Bug 2813 - wifi: OFDM 10 MHz and 5 MHz PHYs do not have correct subcarrier frequency spacings
+- Bug 2820 - wifi: segmentation fault when Rrpaa wifi manager is used
+- Bug 2821 - lte: Set correct limit for UL retx. in Round Robin scheduler
+- Bug 2824 - ICMP opcode fr fragment timeout drop is wrong
+- Bug 2826 - wifi: Management frames should be sent using the lowest basic rate
+- Bug 2827 - wifi: Active scanning not working with 802.11n/ac/ax
+- Bug 2828 - OLSR simple P2P example produces wrong results
+- Bug 2831 - wifi: runtime channel width switch has no effect
+- Bug 2832 - tcp: Partial ACK triggering repeated retransmission
+- Bug 2836 - wifi: Missing VHT information in radiotap header when A-MPDU is used
+- Bug 2838 - wifi: ht-wifi-network crashes with RTS/CTS enabled and frequency set to 2.4GHz
+- Bug 2840 - lte: Wrong configuration of eNBs and UEs
+- Bug 2843 - spectrum, wifi: Incorrect channel width and center frequency provided for non-HT PPDUs when building SpectralDensity
+- Bug 2848 - wifi: Association ID not correctly set upon association
+- Bug 2849 - lte: Received RLC and PDCP PDUs are missing in the stats files
+- Bug 2854 - wifi: Fix 802.11ax channel width capabilities
+- Bug 2856 - wifi: Correct bugs and improve logging in MinstrelHt
+- Bug 2859 - tcp: calculation of BytesInFlight during partial recovery is fixed
+- Bug 2866 - tcp: Removed VS warnings on TcpSocketBase
+- Bug 2872 - csma: Packet copy in CsmaChannel breaks netanim tracing
+- Bug 2873 - tcp: Potential SIGFPE in TcpYeah
+- Bug 2874 - tcp: Corrected interpretation of RFC 6675 for IsLost check
+- Bug 2875 - tcp: Use Rule3 of RFC6675 only with SACK enabled
+- Bug 2876 - tcp: Do not shrink adv window after we send the FIN
+- Bug 2877 - wifi: Wrong data types for CWmin and CWmax
+- Bug 2885 - lte: Tests fail for CQA and PSS testsuites
+- Bug 2890 - internet: Icmpv4 "ECHO" is defined in system-wide headers
+- Bug 2898 - lte: Coding issue in function RrcAsn1Header::DeserializeRachConfigCommon
+- Bug 2899 - lte: Inconsistent type for variable cellForWhichToReportCGI
+- wifi: Fix wrong guard band for SpectrumWifiPhy DSSS/HR-DSSS
+
+Known issues
+------------
+In general, known issues are tracked on the project tracker available
+at http://www.nsnam.org/bugzilla/
+
Release 3.27
============
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/src/antenna/bindings/modulegen__gcc_ILP32.py ns-3.28/src/antenna/bindings/modulegen__gcc_ILP32.py
--- ns-3.27/src/antenna/bindings/modulegen__gcc_ILP32.py 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/src/antenna/bindings/modulegen__gcc_ILP32.py 2018-03-22 09:33:19.000000000 -0700
@@ -513,7 +513,8 @@
## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::AddTraceSource(std::string name, std::string help, ns3::Ptr accessor) [member function]
cls.add_method('AddTraceSource',
'ns3::TypeId',
- [param('std::string', 'name'), param('std::string', 'help'), param('ns3::Ptr< ns3::TraceSourceAccessor const >', 'accessor')])
+ [param('std::string', 'name'), param('std::string', 'help'), param('ns3::Ptr< ns3::TraceSourceAccessor const >', 'accessor')],
+ deprecated=True)
## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::AddTraceSource(std::string name, std::string help, ns3::Ptr accessor, std::string callback, ns3::TypeId::SupportLevel supportLevel=::ns3::TypeId::SupportLevel::SUPPORTED, std::string const & supportMsg="") [member function]
cls.add_method('AddTraceSource',
'ns3::TypeId',
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/src/antenna/bindings/modulegen__gcc_LP64.py ns-3.28/src/antenna/bindings/modulegen__gcc_LP64.py
--- ns-3.27/src/antenna/bindings/modulegen__gcc_LP64.py 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/src/antenna/bindings/modulegen__gcc_LP64.py 2018-03-22 09:33:19.000000000 -0700
@@ -513,7 +513,8 @@
## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::AddTraceSource(std::string name, std::string help, ns3::Ptr accessor) [member function]
cls.add_method('AddTraceSource',
'ns3::TypeId',
- [param('std::string', 'name'), param('std::string', 'help'), param('ns3::Ptr< ns3::TraceSourceAccessor const >', 'accessor')])
+ [param('std::string', 'name'), param('std::string', 'help'), param('ns3::Ptr< ns3::TraceSourceAccessor const >', 'accessor')],
+ deprecated=True)
## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::AddTraceSource(std::string name, std::string help, ns3::Ptr accessor, std::string callback, ns3::TypeId::SupportLevel supportLevel=::ns3::TypeId::SupportLevel::SUPPORTED, std::string const & supportMsg="") [member function]
cls.add_method('AddTraceSource',
'ns3::TypeId',
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/src/aodv/bindings/modulegen__gcc_ILP32.py ns-3.28/src/aodv/bindings/modulegen__gcc_ILP32.py
--- ns-3.27/src/aodv/bindings/modulegen__gcc_ILP32.py 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/src/aodv/bindings/modulegen__gcc_ILP32.py 2018-03-22 09:33:19.000000000 -0700
@@ -128,6 +128,10 @@
module.add_class('Mac48Address', import_from_module='ns.network')
## mac48-address.h (module 'network'): ns3::Mac48Address [class]
root_module['ns3::Mac48Address'].implicitly_converts_to(root_module['ns3::Address'])
+ ## mac8-address.h (module 'network'): ns3::Mac8Address [class]
+ module.add_class('Mac8Address', import_from_module='ns.network')
+ ## mac8-address.h (module 'network'): ns3::Mac8Address [class]
+ root_module['ns3::Mac8Address'].implicitly_converts_to(root_module['ns3::Address'])
## node-container.h (module 'network'): ns3::NodeContainer [class]
module.add_class('NodeContainer', import_from_module='ns.network')
## object-base.h (module 'core'): ns3::ObjectBase [class]
@@ -566,6 +570,7 @@
register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
register_Ns3Mac48Address_methods(root_module, root_module['ns3::Mac48Address'])
+ register_Ns3Mac8Address_methods(root_module, root_module['ns3::Mac8Address'])
register_Ns3NodeContainer_methods(root_module, root_module['ns3::NodeContainer'])
register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter'])
@@ -1904,7 +1909,7 @@
cls.add_method('IsAllHostsMulticast',
'bool',
[],
- is_const=True)
+ deprecated=True, is_const=True)
## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsAllNodesMulticast() const [member function]
cls.add_method('IsAllNodesMulticast',
'bool',
@@ -1980,6 +1985,11 @@
'ns3::Ipv6Address',
[param('ns3::Mac64Address', 'addr'), param('ns3::Ipv6Address', 'prefix')],
is_static=True)
+ ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredAddress(ns3::Mac8Address addr, ns3::Ipv6Address prefix) [member function]
+ cls.add_method('MakeAutoconfiguredAddress',
+ 'ns3::Ipv6Address',
+ [param('ns3::Mac8Address', 'addr'), param('ns3::Ipv6Address', 'prefix')],
+ is_static=True)
## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredLinkLocalAddress(ns3::Mac16Address mac) [member function]
cls.add_method('MakeAutoconfiguredLinkLocalAddress',
'ns3::Ipv6Address',
@@ -1995,6 +2005,11 @@
'ns3::Ipv6Address',
[param('ns3::Mac64Address', 'mac')],
is_static=True)
+ ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredLinkLocalAddress(ns3::Mac8Address mac) [member function]
+ cls.add_method('MakeAutoconfiguredLinkLocalAddress',
+ 'ns3::Ipv6Address',
+ [param('ns3::Mac8Address', 'mac')],
+ is_static=True)
## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeIpv4MappedAddress(ns3::Ipv4Address addr) [member function]
cls.add_method('MakeIpv4MappedAddress',
'ns3::Ipv6Address',
@@ -2155,6 +2170,48 @@
is_static=True)
return
+def register_Ns3Mac8Address_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<')
+ cls.add_binary_comparison_operator('==')
+ cls.add_binary_comparison_operator('!=')
+ cls.add_output_stream_operator()
+ ## mac8-address.h (module 'network'): ns3::Mac8Address::Mac8Address(ns3::Mac8Address const & arg0) [constructor]
+ cls.add_constructor([param('ns3::Mac8Address const &', 'arg0')])
+ ## mac8-address.h (module 'network'): ns3::Mac8Address::Mac8Address() [constructor]
+ cls.add_constructor([])
+ ## mac8-address.h (module 'network'): ns3::Mac8Address::Mac8Address(uint8_t addr) [constructor]
+ cls.add_constructor([param('uint8_t', 'addr')])
+ ## mac8-address.h (module 'network'): static ns3::Mac8Address ns3::Mac8Address::Allocate() [member function]
+ cls.add_method('Allocate',
+ 'ns3::Mac8Address',
+ [],
+ is_static=True)
+ ## mac8-address.h (module 'network'): static ns3::Mac8Address ns3::Mac8Address::ConvertFrom(ns3::Address const & address) [member function]
+ cls.add_method('ConvertFrom',
+ 'ns3::Mac8Address',
+ [param('ns3::Address const &', 'address')],
+ is_static=True)
+ ## mac8-address.h (module 'network'): void ns3::Mac8Address::CopyFrom(uint8_t const * pBuffer) [member function]
+ cls.add_method('CopyFrom',
+ 'void',
+ [param('uint8_t const *', 'pBuffer')])
+ ## mac8-address.h (module 'network'): void ns3::Mac8Address::CopyTo(uint8_t * pBuffer) const [member function]
+ cls.add_method('CopyTo',
+ 'void',
+ [param('uint8_t *', 'pBuffer')],
+ is_const=True)
+ ## mac8-address.h (module 'network'): static ns3::Mac8Address ns3::Mac8Address::GetBroadcast() [member function]
+ cls.add_method('GetBroadcast',
+ 'ns3::Mac8Address',
+ [],
+ is_static=True)
+ ## mac8-address.h (module 'network'): static bool ns3::Mac8Address::IsMatchingType(ns3::Address const & address) [member function]
+ cls.add_method('IsMatchingType',
+ 'bool',
+ [param('ns3::Address const &', 'address')],
+ is_static=True)
+ return
+
def register_Ns3NodeContainer_methods(root_module, cls):
## node-container.h (module 'network'): ns3::NodeContainer::NodeContainer(ns3::NodeContainer const & arg0) [constructor]
cls.add_constructor([param('ns3::NodeContainer const &', 'arg0')])
@@ -2819,7 +2876,8 @@
## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::AddTraceSource(std::string name, std::string help, ns3::Ptr accessor) [member function]
cls.add_method('AddTraceSource',
'ns3::TypeId',
- [param('std::string', 'name'), param('std::string', 'help'), param('ns3::Ptr< ns3::TraceSourceAccessor const >', 'accessor')])
+ [param('std::string', 'name'), param('std::string', 'help'), param('ns3::Ptr< ns3::TraceSourceAccessor const >', 'accessor')],
+ deprecated=True)
## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::AddTraceSource(std::string name, std::string help, ns3::Ptr accessor, std::string callback, ns3::TypeId::SupportLevel supportLevel=::ns3::TypeId::SupportLevel::SUPPORTED, std::string const & supportMsg="") [member function]
cls.add_method('AddTraceSource',
'ns3::TypeId',
@@ -3122,6 +3180,11 @@
'uint32_t',
[param('ns3::Buffer::Iterator', 'start')],
is_pure_virtual=True, is_virtual=True)
+ ## chunk.h (module 'network'): uint32_t ns3::Chunk::Deserialize(ns3::Buffer::Iterator start, ns3::Buffer::Iterator end) [member function]
+ cls.add_method('Deserialize',
+ 'uint32_t',
+ [param('ns3::Buffer::Iterator', 'start'), param('ns3::Buffer::Iterator', 'end')],
+ is_virtual=True)
## chunk.h (module 'network'): static ns3::TypeId ns3::Chunk::GetTypeId() [member function]
cls.add_method('GetTypeId',
'ns3::TypeId',
@@ -4453,6 +4516,11 @@
'uint32_t',
[param('ns3::Buffer::Iterator', 'end')],
is_pure_virtual=True, is_virtual=True)
+ ## trailer.h (module 'network'): uint32_t ns3::Trailer::Deserialize(ns3::Buffer::Iterator start, ns3::Buffer::Iterator end) [member function]
+ cls.add_method('Deserialize',
+ 'uint32_t',
+ [param('ns3::Buffer::Iterator', 'start'), param('ns3::Buffer::Iterator', 'end')],
+ is_virtual=True)
## trailer.h (module 'network'): uint32_t ns3::Trailer::GetSerializedSize() const [member function]
cls.add_method('GetSerializedSize',
'uint32_t',
@@ -4634,9 +4702,9 @@
'ns3::Time',
[],
is_const=True)
- ## wifi-mac-header.h (module 'wifi'): uint16_t ns3::WifiMacHeader::GetFragmentNumber() const [member function]
+ ## wifi-mac-header.h (module 'wifi'): uint8_t ns3::WifiMacHeader::GetFragmentNumber() const [member function]
cls.add_method('GetFragmentNumber',
- 'uint16_t',
+ 'uint8_t',
[],
is_const=True)
## wifi-mac-header.h (module 'wifi'): ns3::TypeId ns3::WifiMacHeader::GetInstanceTypeId() const [member function]
@@ -4644,11 +4712,6 @@
'ns3::TypeId',
[],
is_const=True, is_virtual=True)
- ## wifi-mac-header.h (module 'wifi'): ns3::WifiMacHeader::QosAckPolicy ns3::WifiMacHeader::GetQosAckPolicy() const [member function]
- cls.add_method('GetQosAckPolicy',
- 'ns3::WifiMacHeader::QosAckPolicy',
- [],
- is_const=True)
## wifi-mac-header.h (module 'wifi'): uint8_t ns3::WifiMacHeader::GetQosTid() const [member function]
cls.add_method('GetQosTid',
'uint8_t',
@@ -4659,11 +4722,6 @@
'uint8_t',
[],
is_const=True)
- ## wifi-mac-header.h (module 'wifi'): uint16_t ns3::WifiMacHeader::GetRawDuration() const [member function]
- cls.add_method('GetRawDuration',
- 'uint16_t',
- [],
- is_const=True)
## wifi-mac-header.h (module 'wifi'): uint16_t ns3::WifiMacHeader::GetSequenceControl() const [member function]
cls.add_method('GetSequenceControl',
'uint16_t',
@@ -4864,10 +4922,6 @@
'void',
[param('ns3::Buffer::Iterator', 'start')],
is_const=True, is_virtual=True)
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetAction() [member function]
- cls.add_method('SetAction',
- 'void',
- [])
## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetAddr1(ns3::Mac48Address address) [member function]
cls.add_method('SetAddr1',
'void',
@@ -4884,26 +4938,6 @@
cls.add_method('SetAddr4',
'void',
[param('ns3::Mac48Address', 'address')])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetAssocReq() [member function]
- cls.add_method('SetAssocReq',
- 'void',
- [])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetAssocResp() [member function]
- cls.add_method('SetAssocResp',
- 'void',
- [])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetBeacon() [member function]
- cls.add_method('SetBeacon',
- 'void',
- [])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetBlockAck() [member function]
- cls.add_method('SetBlockAck',
- 'void',
- [])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetBlockAckReq() [member function]
- cls.add_method('SetBlockAckReq',
- 'void',
- [])
## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetDsFrom() [member function]
cls.add_method('SetDsFrom',
'void',
@@ -4936,10 +4970,6 @@
cls.add_method('SetMoreFragments',
'void',
[])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetMultihopAction() [member function]
- cls.add_method('SetMultihopAction',
- 'void',
- [])
## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetNoMoreFragments() [member function]
cls.add_method('SetNoMoreFragments',
'void',
@@ -4956,14 +4986,6 @@
cls.add_method('SetOrder',
'void',
[])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetProbeReq() [member function]
- cls.add_method('SetProbeReq',
- 'void',
- [])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetProbeResp() [member function]
- cls.add_method('SetProbeResp',
- 'void',
- [])
## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetQosAckPolicy(ns3::WifiMacHeader::QosAckPolicy policy) [member function]
cls.add_method('SetQosAckPolicy',
'void',
@@ -4972,10 +4994,6 @@
cls.add_method('SetQosAmsdu',
'void',
[])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetQosBlockAck() [member function]
- cls.add_method('SetQosBlockAck',
- 'void',
- [])
## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetQosEosp() [member function]
cls.add_method('SetQosEosp',
'void',
@@ -4984,10 +5002,6 @@
cls.add_method('SetQosMeshControlPresent',
'void',
[])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetQosNoAck() [member function]
- cls.add_method('SetQosNoAck',
- 'void',
- [])
## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetQosNoAmsdu() [member function]
cls.add_method('SetQosNoAmsdu',
'void',
@@ -5000,10 +5014,6 @@
cls.add_method('SetQosNoMeshControlPresent',
'void',
[])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetQosNormalAck() [member function]
- cls.add_method('SetQosNormalAck',
- 'void',
- [])
## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetQosTid(uint8_t tid) [member function]
cls.add_method('SetQosTid',
'void',
@@ -5012,10 +5022,6 @@
cls.add_method('SetQosTxopLimit',
'void',
[param('uint8_t', 'txop')])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetRawDuration(uint16_t duration) [member function]
- cls.add_method('SetRawDuration',
- 'void',
- [param('uint16_t', 'duration')])
## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetRetry() [member function]
cls.add_method('SetRetry',
'void',
@@ -5028,10 +5034,6 @@
cls.add_method('SetType',
'void',
[param('ns3::WifiMacType', 'type')])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetTypeData() [member function]
- cls.add_method('SetTypeData',
- 'void',
- [])
return
def register_Ns3ZetaRandomVariable_methods(root_module, cls):
@@ -5277,7 +5279,8 @@
## arp-cache.h (module 'internet'): void ns3::ArpCache::Entry::SetMacAddresss(ns3::Address macAddress) [member function]
cls.add_method('SetMacAddresss',
'void',
- [param('ns3::Address', 'macAddress')])
+ [param('ns3::Address', 'macAddress')],
+ deprecated=True)
## arp-cache.h (module 'internet'): void ns3::ArpCache::Entry::UpdateSeen() [member function]
cls.add_method('UpdateSeen',
'void',
@@ -7311,6 +7314,11 @@
'uint32_t',
[param('ns3::Header &', 'header')],
is_const=True)
+ ## packet.h (module 'network'): uint32_t ns3::Packet::PeekHeader(ns3::Header & header, uint32_t size) const [member function]
+ cls.add_method('PeekHeader',
+ 'uint32_t',
+ [param('ns3::Header &', 'header'), param('uint32_t', 'size')],
+ is_const=True)
## packet.h (module 'network'): bool ns3::Packet::PeekPacketTag(ns3::Tag & tag) const [member function]
cls.add_method('PeekPacketTag',
'bool',
@@ -7355,6 +7363,10 @@
cls.add_method('RemoveHeader',
'uint32_t',
[param('ns3::Header &', 'header')])
+ ## packet.h (module 'network'): uint32_t ns3::Packet::RemoveHeader(ns3::Header & header, uint32_t size) [member function]
+ cls.add_method('RemoveHeader',
+ 'uint32_t',
+ [param('ns3::Header &', 'header'), param('uint32_t', 'size')])
## packet.h (module 'network'): bool ns3::Packet::RemovePacketTag(ns3::Tag & tag) [member function]
cls.add_method('RemovePacketTag',
'bool',
@@ -7395,7 +7407,7 @@
cls.add_method('GetMean',
'double',
[],
- is_const=True)
+ deprecated=True, is_const=True)
## random-variable-stream.h (module 'core'): double ns3::ParetoRandomVariable::GetScale() const [member function]
cls.add_method('GetScale',
'double',
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/src/aodv/bindings/modulegen__gcc_LP64.py ns-3.28/src/aodv/bindings/modulegen__gcc_LP64.py
--- ns-3.27/src/aodv/bindings/modulegen__gcc_LP64.py 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/src/aodv/bindings/modulegen__gcc_LP64.py 2018-03-22 09:33:19.000000000 -0700
@@ -128,6 +128,10 @@
module.add_class('Mac48Address', import_from_module='ns.network')
## mac48-address.h (module 'network'): ns3::Mac48Address [class]
root_module['ns3::Mac48Address'].implicitly_converts_to(root_module['ns3::Address'])
+ ## mac8-address.h (module 'network'): ns3::Mac8Address [class]
+ module.add_class('Mac8Address', import_from_module='ns.network')
+ ## mac8-address.h (module 'network'): ns3::Mac8Address [class]
+ root_module['ns3::Mac8Address'].implicitly_converts_to(root_module['ns3::Address'])
## node-container.h (module 'network'): ns3::NodeContainer [class]
module.add_class('NodeContainer', import_from_module='ns.network')
## object-base.h (module 'core'): ns3::ObjectBase [class]
@@ -566,6 +570,7 @@
register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
register_Ns3Mac48Address_methods(root_module, root_module['ns3::Mac48Address'])
+ register_Ns3Mac8Address_methods(root_module, root_module['ns3::Mac8Address'])
register_Ns3NodeContainer_methods(root_module, root_module['ns3::NodeContainer'])
register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter'])
@@ -1904,7 +1909,7 @@
cls.add_method('IsAllHostsMulticast',
'bool',
[],
- is_const=True)
+ deprecated=True, is_const=True)
## ipv6-address.h (module 'network'): bool ns3::Ipv6Address::IsAllNodesMulticast() const [member function]
cls.add_method('IsAllNodesMulticast',
'bool',
@@ -1980,6 +1985,11 @@
'ns3::Ipv6Address',
[param('ns3::Mac64Address', 'addr'), param('ns3::Ipv6Address', 'prefix')],
is_static=True)
+ ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredAddress(ns3::Mac8Address addr, ns3::Ipv6Address prefix) [member function]
+ cls.add_method('MakeAutoconfiguredAddress',
+ 'ns3::Ipv6Address',
+ [param('ns3::Mac8Address', 'addr'), param('ns3::Ipv6Address', 'prefix')],
+ is_static=True)
## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredLinkLocalAddress(ns3::Mac16Address mac) [member function]
cls.add_method('MakeAutoconfiguredLinkLocalAddress',
'ns3::Ipv6Address',
@@ -1995,6 +2005,11 @@
'ns3::Ipv6Address',
[param('ns3::Mac64Address', 'mac')],
is_static=True)
+ ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredLinkLocalAddress(ns3::Mac8Address mac) [member function]
+ cls.add_method('MakeAutoconfiguredLinkLocalAddress',
+ 'ns3::Ipv6Address',
+ [param('ns3::Mac8Address', 'mac')],
+ is_static=True)
## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeIpv4MappedAddress(ns3::Ipv4Address addr) [member function]
cls.add_method('MakeIpv4MappedAddress',
'ns3::Ipv6Address',
@@ -2155,6 +2170,48 @@
is_static=True)
return
+def register_Ns3Mac8Address_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<')
+ cls.add_binary_comparison_operator('==')
+ cls.add_binary_comparison_operator('!=')
+ cls.add_output_stream_operator()
+ ## mac8-address.h (module 'network'): ns3::Mac8Address::Mac8Address(ns3::Mac8Address const & arg0) [constructor]
+ cls.add_constructor([param('ns3::Mac8Address const &', 'arg0')])
+ ## mac8-address.h (module 'network'): ns3::Mac8Address::Mac8Address() [constructor]
+ cls.add_constructor([])
+ ## mac8-address.h (module 'network'): ns3::Mac8Address::Mac8Address(uint8_t addr) [constructor]
+ cls.add_constructor([param('uint8_t', 'addr')])
+ ## mac8-address.h (module 'network'): static ns3::Mac8Address ns3::Mac8Address::Allocate() [member function]
+ cls.add_method('Allocate',
+ 'ns3::Mac8Address',
+ [],
+ is_static=True)
+ ## mac8-address.h (module 'network'): static ns3::Mac8Address ns3::Mac8Address::ConvertFrom(ns3::Address const & address) [member function]
+ cls.add_method('ConvertFrom',
+ 'ns3::Mac8Address',
+ [param('ns3::Address const &', 'address')],
+ is_static=True)
+ ## mac8-address.h (module 'network'): void ns3::Mac8Address::CopyFrom(uint8_t const * pBuffer) [member function]
+ cls.add_method('CopyFrom',
+ 'void',
+ [param('uint8_t const *', 'pBuffer')])
+ ## mac8-address.h (module 'network'): void ns3::Mac8Address::CopyTo(uint8_t * pBuffer) const [member function]
+ cls.add_method('CopyTo',
+ 'void',
+ [param('uint8_t *', 'pBuffer')],
+ is_const=True)
+ ## mac8-address.h (module 'network'): static ns3::Mac8Address ns3::Mac8Address::GetBroadcast() [member function]
+ cls.add_method('GetBroadcast',
+ 'ns3::Mac8Address',
+ [],
+ is_static=True)
+ ## mac8-address.h (module 'network'): static bool ns3::Mac8Address::IsMatchingType(ns3::Address const & address) [member function]
+ cls.add_method('IsMatchingType',
+ 'bool',
+ [param('ns3::Address const &', 'address')],
+ is_static=True)
+ return
+
def register_Ns3NodeContainer_methods(root_module, cls):
## node-container.h (module 'network'): ns3::NodeContainer::NodeContainer(ns3::NodeContainer const & arg0) [constructor]
cls.add_constructor([param('ns3::NodeContainer const &', 'arg0')])
@@ -2819,7 +2876,8 @@
## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::AddTraceSource(std::string name, std::string help, ns3::Ptr accessor) [member function]
cls.add_method('AddTraceSource',
'ns3::TypeId',
- [param('std::string', 'name'), param('std::string', 'help'), param('ns3::Ptr< ns3::TraceSourceAccessor const >', 'accessor')])
+ [param('std::string', 'name'), param('std::string', 'help'), param('ns3::Ptr< ns3::TraceSourceAccessor const >', 'accessor')],
+ deprecated=True)
## type-id.h (module 'core'): ns3::TypeId ns3::TypeId::AddTraceSource(std::string name, std::string help, ns3::Ptr accessor, std::string callback, ns3::TypeId::SupportLevel supportLevel=::ns3::TypeId::SupportLevel::SUPPORTED, std::string const & supportMsg="") [member function]
cls.add_method('AddTraceSource',
'ns3::TypeId',
@@ -3122,6 +3180,11 @@
'uint32_t',
[param('ns3::Buffer::Iterator', 'start')],
is_pure_virtual=True, is_virtual=True)
+ ## chunk.h (module 'network'): uint32_t ns3::Chunk::Deserialize(ns3::Buffer::Iterator start, ns3::Buffer::Iterator end) [member function]
+ cls.add_method('Deserialize',
+ 'uint32_t',
+ [param('ns3::Buffer::Iterator', 'start'), param('ns3::Buffer::Iterator', 'end')],
+ is_virtual=True)
## chunk.h (module 'network'): static ns3::TypeId ns3::Chunk::GetTypeId() [member function]
cls.add_method('GetTypeId',
'ns3::TypeId',
@@ -4453,6 +4516,11 @@
'uint32_t',
[param('ns3::Buffer::Iterator', 'end')],
is_pure_virtual=True, is_virtual=True)
+ ## trailer.h (module 'network'): uint32_t ns3::Trailer::Deserialize(ns3::Buffer::Iterator start, ns3::Buffer::Iterator end) [member function]
+ cls.add_method('Deserialize',
+ 'uint32_t',
+ [param('ns3::Buffer::Iterator', 'start'), param('ns3::Buffer::Iterator', 'end')],
+ is_virtual=True)
## trailer.h (module 'network'): uint32_t ns3::Trailer::GetSerializedSize() const [member function]
cls.add_method('GetSerializedSize',
'uint32_t',
@@ -4634,9 +4702,9 @@
'ns3::Time',
[],
is_const=True)
- ## wifi-mac-header.h (module 'wifi'): uint16_t ns3::WifiMacHeader::GetFragmentNumber() const [member function]
+ ## wifi-mac-header.h (module 'wifi'): uint8_t ns3::WifiMacHeader::GetFragmentNumber() const [member function]
cls.add_method('GetFragmentNumber',
- 'uint16_t',
+ 'uint8_t',
[],
is_const=True)
## wifi-mac-header.h (module 'wifi'): ns3::TypeId ns3::WifiMacHeader::GetInstanceTypeId() const [member function]
@@ -4644,11 +4712,6 @@
'ns3::TypeId',
[],
is_const=True, is_virtual=True)
- ## wifi-mac-header.h (module 'wifi'): ns3::WifiMacHeader::QosAckPolicy ns3::WifiMacHeader::GetQosAckPolicy() const [member function]
- cls.add_method('GetQosAckPolicy',
- 'ns3::WifiMacHeader::QosAckPolicy',
- [],
- is_const=True)
## wifi-mac-header.h (module 'wifi'): uint8_t ns3::WifiMacHeader::GetQosTid() const [member function]
cls.add_method('GetQosTid',
'uint8_t',
@@ -4659,11 +4722,6 @@
'uint8_t',
[],
is_const=True)
- ## wifi-mac-header.h (module 'wifi'): uint16_t ns3::WifiMacHeader::GetRawDuration() const [member function]
- cls.add_method('GetRawDuration',
- 'uint16_t',
- [],
- is_const=True)
## wifi-mac-header.h (module 'wifi'): uint16_t ns3::WifiMacHeader::GetSequenceControl() const [member function]
cls.add_method('GetSequenceControl',
'uint16_t',
@@ -4864,10 +4922,6 @@
'void',
[param('ns3::Buffer::Iterator', 'start')],
is_const=True, is_virtual=True)
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetAction() [member function]
- cls.add_method('SetAction',
- 'void',
- [])
## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetAddr1(ns3::Mac48Address address) [member function]
cls.add_method('SetAddr1',
'void',
@@ -4884,26 +4938,6 @@
cls.add_method('SetAddr4',
'void',
[param('ns3::Mac48Address', 'address')])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetAssocReq() [member function]
- cls.add_method('SetAssocReq',
- 'void',
- [])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetAssocResp() [member function]
- cls.add_method('SetAssocResp',
- 'void',
- [])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetBeacon() [member function]
- cls.add_method('SetBeacon',
- 'void',
- [])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetBlockAck() [member function]
- cls.add_method('SetBlockAck',
- 'void',
- [])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetBlockAckReq() [member function]
- cls.add_method('SetBlockAckReq',
- 'void',
- [])
## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetDsFrom() [member function]
cls.add_method('SetDsFrom',
'void',
@@ -4936,10 +4970,6 @@
cls.add_method('SetMoreFragments',
'void',
[])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetMultihopAction() [member function]
- cls.add_method('SetMultihopAction',
- 'void',
- [])
## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetNoMoreFragments() [member function]
cls.add_method('SetNoMoreFragments',
'void',
@@ -4956,14 +4986,6 @@
cls.add_method('SetOrder',
'void',
[])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetProbeReq() [member function]
- cls.add_method('SetProbeReq',
- 'void',
- [])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetProbeResp() [member function]
- cls.add_method('SetProbeResp',
- 'void',
- [])
## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetQosAckPolicy(ns3::WifiMacHeader::QosAckPolicy policy) [member function]
cls.add_method('SetQosAckPolicy',
'void',
@@ -4972,10 +4994,6 @@
cls.add_method('SetQosAmsdu',
'void',
[])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetQosBlockAck() [member function]
- cls.add_method('SetQosBlockAck',
- 'void',
- [])
## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetQosEosp() [member function]
cls.add_method('SetQosEosp',
'void',
@@ -4984,10 +5002,6 @@
cls.add_method('SetQosMeshControlPresent',
'void',
[])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetQosNoAck() [member function]
- cls.add_method('SetQosNoAck',
- 'void',
- [])
## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetQosNoAmsdu() [member function]
cls.add_method('SetQosNoAmsdu',
'void',
@@ -5000,10 +5014,6 @@
cls.add_method('SetQosNoMeshControlPresent',
'void',
[])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetQosNormalAck() [member function]
- cls.add_method('SetQosNormalAck',
- 'void',
- [])
## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetQosTid(uint8_t tid) [member function]
cls.add_method('SetQosTid',
'void',
@@ -5012,10 +5022,6 @@
cls.add_method('SetQosTxopLimit',
'void',
[param('uint8_t', 'txop')])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetRawDuration(uint16_t duration) [member function]
- cls.add_method('SetRawDuration',
- 'void',
- [param('uint16_t', 'duration')])
## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetRetry() [member function]
cls.add_method('SetRetry',
'void',
@@ -5028,10 +5034,6 @@
cls.add_method('SetType',
'void',
[param('ns3::WifiMacType', 'type')])
- ## wifi-mac-header.h (module 'wifi'): void ns3::WifiMacHeader::SetTypeData() [member function]
- cls.add_method('SetTypeData',
- 'void',
- [])
return
def register_Ns3ZetaRandomVariable_methods(root_module, cls):
@@ -5277,7 +5279,8 @@
## arp-cache.h (module 'internet'): void ns3::ArpCache::Entry::SetMacAddresss(ns3::Address macAddress) [member function]
cls.add_method('SetMacAddresss',
'void',
- [param('ns3::Address', 'macAddress')])
+ [param('ns3::Address', 'macAddress')],
+ deprecated=True)
## arp-cache.h (module 'internet'): void ns3::ArpCache::Entry::UpdateSeen() [member function]
cls.add_method('UpdateSeen',
'void',
@@ -7311,6 +7314,11 @@
'uint32_t',
[param('ns3::Header &', 'header')],
is_const=True)
+ ## packet.h (module 'network'): uint32_t ns3::Packet::PeekHeader(ns3::Header & header, uint32_t size) const [member function]
+ cls.add_method('PeekHeader',
+ 'uint32_t',
+ [param('ns3::Header &', 'header'), param('uint32_t', 'size')],
+ is_const=True)
## packet.h (module 'network'): bool ns3::Packet::PeekPacketTag(ns3::Tag & tag) const [member function]
cls.add_method('PeekPacketTag',
'bool',
@@ -7355,6 +7363,10 @@
cls.add_method('RemoveHeader',
'uint32_t',
[param('ns3::Header &', 'header')])
+ ## packet.h (module 'network'): uint32_t ns3::Packet::RemoveHeader(ns3::Header & header, uint32_t size) [member function]
+ cls.add_method('RemoveHeader',
+ 'uint32_t',
+ [param('ns3::Header &', 'header'), param('uint32_t', 'size')])
## packet.h (module 'network'): bool ns3::Packet::RemovePacketTag(ns3::Tag & tag) [member function]
cls.add_method('RemovePacketTag',
'bool',
@@ -7395,7 +7407,7 @@
cls.add_method('GetMean',
'double',
[],
- is_const=True)
+ deprecated=True, is_const=True)
## random-variable-stream.h (module 'core'): double ns3::ParetoRandomVariable::GetScale() const [member function]
cls.add_method('GetScale',
'double',
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/src/aodv/examples/aodv.cc ns-3.28/src/aodv/examples/aodv.cc
--- ns-3.27/src/aodv/examples/aodv.cc 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/src/aodv/examples/aodv.cc 2018-03-22 09:33:19.000000000 -0700
@@ -111,7 +111,7 @@
AodvExample::AodvExample () :
size (10),
step (100),
- totalTime (10),
+ totalTime (100),
pcap (true),
printRoutes (true)
{
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/src/aodv/model/aodv-routing-protocol.h ns-3.28/src/aodv/model/aodv-routing-protocol.h
--- ns-3.27/src/aodv/model/aodv-routing-protocol.h 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/src/aodv/model/aodv-routing-protocol.h 2018-03-22 09:33:19.000000000 -0700
@@ -370,7 +370,7 @@
/// @}
/**
- * Send packet to desitnation scoket
+ * Send packet to destination scoket
* \param socket - destination node socket
* \param packet - packet to send
* \param destination - destination node IP address
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/src/aodv/test/aodv-regression.cc ns-3.28/src/aodv/test/aodv-regression.cc
--- ns-3.27/src/aodv/test/aodv-regression.cc 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/src/aodv/test/aodv-regression.cc 2018-03-22 09:33:19.000000000 -0700
@@ -105,7 +105,7 @@
echo.SetData (dataPacket);
p->AddHeader (echo);
Icmpv4Header header;
- header.SetType (Icmpv4Header::ECHO);
+ header.SetType (Icmpv4Header::ICMPV4_ECHO);
header.SetCode (0);
if (Node::ChecksumEnabled ())
{
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/src/aodv/test/bug-772.cc ns-3.28/src/aodv/test/bug-772.cc
--- ns-3.27/src/aodv/test/bug-772.cc 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/src/aodv/test/bug-772.cc 2018-03-22 09:33:19.000000000 -0700
@@ -19,7 +19,6 @@
*/
#include "bug-772.h"
-
#include "ns3/simulator.h"
#include "ns3/random-variable-stream.h"
#include "ns3/rng-seed-manager.h"
@@ -27,7 +26,6 @@
#include "ns3/mobility-helper.h"
#include "ns3/double.h"
#include "ns3/uinteger.h"
-#include "ns3/string.h"
#include "ns3/boolean.h"
#include "ns3/yans-wifi-helper.h"
#include "ns3/internet-stack-helper.h"
diff -Naur -x '*.dia' -x '*.pcap' ns-3.27/src/applications/bindings/modulegen__gcc_ILP32.py ns-3.28/src/applications/bindings/modulegen__gcc_ILP32.py
--- ns-3.27/src/applications/bindings/modulegen__gcc_ILP32.py 2017-10-11 13:39:00.000000000 -0700
+++ ns-3.28/src/applications/bindings/modulegen__gcc_ILP32.py 2018-03-22 09:33:19.000000000 -0700
@@ -22,10 +22,12 @@
## packetbb.h (module 'network'): ns3::PbbAddressLength [enumeration]
module.add_enum('PbbAddressLength', ['IPV4', 'IPV6'], import_from_module='ns.network')
- ## log.h (module 'core'): ns3::LogLevel [enumeration]
- module.add_enum('LogLevel', ['LOG_NONE', 'LOG_ERROR', 'LOG_LEVEL_ERROR', 'LOG_WARN', 'LOG_LEVEL_WARN', 'LOG_DEBUG', 'LOG_LEVEL_DEBUG', 'LOG_INFO', 'LOG_LEVEL_INFO', 'LOG_FUNCTION', 'LOG_LEVEL_FUNCTION', 'LOG_LOGIC', 'LOG_LEVEL_LOGIC', 'LOG_ALL', 'LOG_LEVEL_ALL', 'LOG_PREFIX_FUNC', 'LOG_PREFIX_TIME', 'LOG_PREFIX_NODE', 'LOG_PREFIX_LEVEL', 'LOG_PREFIX_ALL'], import_from_module='ns.core')
## ethernet-header.h (module 'network'): ns3::ethernet_header_t [enumeration]
module.add_enum('ethernet_header_t', ['LENGTH', 'VLAN', 'QINQ'], import_from_module='ns.network')
+ ## queue-size.h (module 'network'): ns3::QueueSizeUnit [enumeration]
+ module.add_enum('QueueSizeUnit', ['PACKETS', 'BYTES'], import_from_module='ns.network')
+ ## log.h (module 'core'): ns3::LogLevel [enumeration]
+ module.add_enum('LogLevel', ['LOG_NONE', 'LOG_ERROR', 'LOG_LEVEL_ERROR', 'LOG_WARN', 'LOG_LEVEL_WARN', 'LOG_DEBUG', 'LOG_LEVEL_DEBUG', 'LOG_INFO', 'LOG_LEVEL_INFO', 'LOG_FUNCTION', 'LOG_LEVEL_FUNCTION', 'LOG_LOGIC', 'LOG_LEVEL_LOGIC', 'LOG_ALL', 'LOG_LEVEL_ALL', 'LOG_PREFIX_FUNC', 'LOG_PREFIX_TIME', 'LOG_PREFIX_NODE', 'LOG_PREFIX_LEVEL', 'LOG_PREFIX_ALL'], import_from_module='ns.core')
## address.h (module 'network'): ns3::Address [class]
module.add_class('Address', import_from_module='ns.network')
## address.h (module 'network'): ns3::Address::MaxSize_e [enumeration]
@@ -66,6 +68,36 @@
module.add_class('DataOutputCallback', allow_subclassing=True, import_from_module='ns.stats')
## data-rate.h (module 'network'): ns3::DataRate [class]
module.add_class('DataRate', import_from_module='ns.network')
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter [struct]
+ module.add_class('DefaultDeleter', import_from_module='ns.core', template_parameters=['ns3::AttributeAccessor'])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter [struct]
+ module.add_class('DefaultDeleter', import_from_module='ns.core', template_parameters=['ns3::AttributeChecker'])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter [struct]
+ module.add_class('DefaultDeleter', import_from_module='ns.core', template_parameters=['ns3::AttributeValue'])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter [struct]
+ module.add_class('DefaultDeleter', import_from_module='ns.core', template_parameters=['ns3::CallbackImplBase'])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter [struct]
+ module.add_class('DefaultDeleter', import_from_module='ns.core', template_parameters=['ns3::EventImpl'])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter [struct]
+ module.add_class('DefaultDeleter', import_from_module='ns.core', template_parameters=['ns3::Hash::Implementation'])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter [struct]
+ module.add_class('DefaultDeleter', import_from_module='ns.core', template_parameters=['ns3::NetDeviceQueue'])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter [struct]
+ module.add_class('DefaultDeleter', import_from_module='ns.core', template_parameters=['ns3::NixVector'])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter [struct]
+ module.add_class('DefaultDeleter', import_from_module='ns.core', template_parameters=['ns3::OutputStreamWrapper'])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter [struct]
+ module.add_class('DefaultDeleter', import_from_module='ns.core', template_parameters=['ns3::Packet'])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter [struct]
+ module.add_class('DefaultDeleter', import_from_module='ns.core', template_parameters=['ns3::PbbAddressBlock'])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter [struct]
+ module.add_class('DefaultDeleter', import_from_module='ns.core', template_parameters=['ns3::PbbMessage'])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter [struct]
+ module.add_class('DefaultDeleter', import_from_module='ns.core', template_parameters=['ns3::PbbTlv'])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter [struct]
+ module.add_class('DefaultDeleter', import_from_module='ns.core', template_parameters=['ns3::QueueItem'])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter [struct]
+ module.add_class('DefaultDeleter', import_from_module='ns.core', template_parameters=['ns3::TraceSourceAccessor'])
## delay-jitter-estimation.h (module 'network'): ns3::DelayJitterEstimation [class]
module.add_class('DelayJitterEstimation', import_from_module='ns.network')
## event-id.h (module 'core'): ns3::EventId [class]
@@ -106,6 +138,10 @@
module.add_class('Mac64Address', import_from_module='ns.network')
## mac64-address.h (module 'network'): ns3::Mac64Address [class]
root_module['ns3::Mac64Address'].implicitly_converts_to(root_module['ns3::Address'])
+ ## mac8-address.h (module 'network'): ns3::Mac8Address [class]
+ module.add_class('Mac8Address', import_from_module='ns.network')
+ ## mac8-address.h (module 'network'): ns3::Mac8Address [class]
+ root_module['ns3::Mac8Address'].implicitly_converts_to(root_module['ns3::Address'])
## net-device-container.h (module 'network'): ns3::NetDeviceContainer [class]
module.add_class('NetDeviceContainer', import_from_module='ns.network')
## node-container.h (module 'network'): ns3::NodeContainer [class]
@@ -128,8 +164,8 @@
module.add_class('PacketMetadata', import_from_module='ns.network')
## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item [struct]
module.add_class('Item', import_from_module='ns.network', outer_class=root_module['ns3::PacketMetadata'])
- ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item [enumeration]
- module.add_enum('', ['PAYLOAD', 'HEADER', 'TRAILER'], outer_class=root_module['ns3::PacketMetadata::Item'], import_from_module='ns.network')
+ ## packet-metadata.h (module 'network'): ns3::PacketMetadata::Item::ItemType [enumeration]
+ module.add_enum('ItemType', ['PAYLOAD', 'HEADER', 'TRAILER'], outer_class=root_module['ns3::PacketMetadata::Item'], import_from_module='ns.network')
## packet-metadata.h (module 'network'): ns3::PacketMetadata::ItemIterator [class]
module.add_class('ItemIterator', import_from_module='ns.network', outer_class=root_module['ns3::PacketMetadata'])
## packet-sink-helper.h (module 'applications'): ns3::PacketSinkHelper [class]
@@ -162,6 +198,8 @@
module.add_enum('DataLinkType', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_LINUX_SLL', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO', 'DLT_IEEE802_15_4', 'DLT_NETLINK'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
+ ## queue-size.h (module 'network'): ns3::QueueSize [class]
+ module.add_class('QueueSize', import_from_module='ns.network')
## simple-net-device-helper.h (module 'network'): ns3::SimpleNetDeviceHelper [class]
module.add_class('SimpleNetDeviceHelper', import_from_module='ns.network')
## simple-ref-count.h (module 'core'): ns3::SimpleRefCount [class]
@@ -204,9 +242,9 @@
module.add_class('UdpTraceClientHelper')
## empty.h (module 'core'): ns3::empty [class]
module.add_class('empty', import_from_module='ns.core')
- ## int64x64-double.h (module 'core'): ns3::int64x64_t [class]
+ ## int64x64-128.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]
+ ## int64x64-128.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')
## chunk.h (module 'network'): ns3::Chunk [class]
module.add_class('Chunk', import_from_module='ns.network', parent=root_module['ns3::ObjectBase'])
@@ -494,14 +532,18 @@
module.add_class('PbbTlv', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::PbbTlv, ns3::empty, ns3::DefaultDeleter >'])
## probe.h (module 'stats'): ns3::Probe [class]
module.add_class('Probe', import_from_module='ns.stats', parent=root_module['ns3::DataCollectionObject'])
- ## queue.h (module 'network'): ns3::Queue [class]
+ ## net-device-queue-interface.h (module 'network'): ns3::Queue [class]
module.add_class('Queue', import_from_module='ns.network', template_parameters=['ns3::Packet'], parent=root_module['ns3::QueueBase'])
- ## queue.h (module 'network'): ns3::Queue [class]
+ ## net-device-queue-interface.h (module 'network'): ns3::Queue [class]
module.add_class('Queue', import_from_module='ns.network', template_parameters=['ns3::QueueDiscItem'], parent=root_module['ns3::QueueBase'])
## queue-item.h (module 'network'): ns3::QueueItem [class]
module.add_class('QueueItem', import_from_module='ns.network', parent=root_module['ns3::SimpleRefCount< ns3::QueueItem, ns3::empty, ns3::DefaultDeleter >'])
## queue-item.h (module 'network'): ns3::QueueItem::Uint8Values [enumeration]
module.add_enum('Uint8Values', ['IP_DSFIELD'], outer_class=root_module['ns3::QueueItem'], import_from_module='ns.network')
+ ## queue-size.h (module 'network'): ns3::QueueSizeChecker [class]
+ module.add_class('QueueSizeChecker', import_from_module='ns.network', parent=root_module['ns3::AttributeChecker'])
+ ## queue-size.h (module 'network'): ns3::QueueSizeValue [class]
+ module.add_class('QueueSizeValue', import_from_module='ns.network', parent=root_module['ns3::AttributeValue'])
## error-model.h (module 'network'): ns3::RateErrorModel [class]
module.add_class('RateErrorModel', import_from_module='ns.network', parent=root_module['ns3::ErrorModel'])
## error-model.h (module 'network'): ns3::RateErrorModel::ErrorUnit [enumeration]
@@ -540,6 +582,36 @@
module.add_class('BinaryErrorModel', import_from_module='ns.network', parent=root_module['ns3::ErrorModel'])
## error-model.h (module 'network'): ns3::BurstErrorModel [class]
module.add_class('BurstErrorModel', import_from_module='ns.network', parent=root_module['ns3::ErrorModel'])
+ ## callback.h (module 'core'): ns3::CallbackImpl, ns3::Ptr, unsigned short, const ns3::Address &, const ns3::Address &, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty> [class]
+ module.add_class('CallbackImpl', import_from_module='ns.core', template_parameters=['bool', 'ns3::Ptr', 'ns3::Ptr', 'unsigned short', 'const ns3::Address &', 'const ns3::Address &', 'ns3::NetDevice::PacketType', 'ns3::empty', 'ns3::empty', 'ns3::empty'], parent=root_module['ns3::CallbackImplBase'])
+ ## callback.h (module 'core'): ns3::CallbackImpl, ns3::Ptr, unsigned short, const ns3::Address &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> [class]
+ module.add_class('CallbackImpl', import_from_module='ns.core', template_parameters=['bool', 'ns3::Ptr', 'ns3::Ptr', 'unsigned short', 'const ns3::Address &', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], parent=root_module['ns3::CallbackImplBase'])
+ ## callback.h (module 'core'): ns3::CallbackImpl, const ns3::Address &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> [class]
+ module.add_class('CallbackImpl', import_from_module='ns.core', template_parameters=['bool', 'ns3::Ptr', 'const ns3::Address &', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], parent=root_module['ns3::CallbackImplBase'])
+ ## callback.h (module 'core'): ns3::CallbackImpl [class]
+ module.add_class('CallbackImpl', import_from_module='ns.core', template_parameters=['ns3::ObjectBase *', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], parent=root_module['ns3::CallbackImplBase'])
+ ## callback.h (module 'core'): ns3::CallbackImpl, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> [class]
+ module.add_class('CallbackImpl', import_from_module='ns.core', template_parameters=['unsigned char', 'ns3::Ptr', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], parent=root_module['ns3::CallbackImplBase'])
+ ## callback.h (module 'core'): ns3::CallbackImpl, const ns3::Address &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> [class]
+ module.add_class('CallbackImpl', import_from_module='ns.core', template_parameters=['void', 'ns3::Ptr', 'const ns3::Address &', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], parent=root_module['ns3::CallbackImplBase'])
+ ## callback.h (module 'core'): ns3::CallbackImpl, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> [class]
+ module.add_class('CallbackImpl', import_from_module='ns.core', template_parameters=['void', 'ns3::Ptr', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], parent=root_module['ns3::CallbackImplBase'])
+ ## callback.h (module 'core'): ns3::CallbackImpl, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> [class]
+ module.add_class('CallbackImpl', import_from_module='ns.core', template_parameters=['void', 'ns3::Ptr', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], parent=root_module['ns3::CallbackImplBase'])
+ ## callback.h (module 'core'): ns3::CallbackImpl, ns3::Ptr, unsigned short, const ns3::Address &, const ns3::Address &, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty> [class]
+ module.add_class('CallbackImpl', import_from_module='ns.core', template_parameters=['void', 'ns3::Ptr', 'ns3::Ptr', 'unsigned short', 'const ns3::Address &', 'const ns3::Address &', 'ns3::NetDevice::PacketType', 'ns3::empty', 'ns3::empty', 'ns3::empty'], parent=root_module['ns3::CallbackImplBase'])
+ ## callback.h (module 'core'): ns3::CallbackImpl, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> [class]
+ module.add_class('CallbackImpl', import_from_module='ns.core', template_parameters=['void', 'ns3::Ptr', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], parent=root_module['ns3::CallbackImplBase'])
+ ## callback.h (module 'core'): ns3::CallbackImpl, const ns3::Address &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> [class]
+ module.add_class('CallbackImpl', import_from_module='ns.core', template_parameters=['void', 'ns3::Ptr', 'const ns3::Address &', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], parent=root_module['ns3::CallbackImplBase'])
+ ## callback.h (module 'core'): ns3::CallbackImpl, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> [class]
+ module.add_class('CallbackImpl', import_from_module='ns.core', template_parameters=['void', 'ns3::Ptr', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], parent=root_module['ns3::CallbackImplBase'])
+ ## callback.h (module 'core'): ns3::CallbackImpl, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> [class]
+ module.add_class('CallbackImpl', import_from_module='ns.core', template_parameters=['void', 'ns3::Ptr', 'unsigned int', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], parent=root_module['ns3::CallbackImplBase'])
+ ## callback.h (module 'core'): ns3::CallbackImpl [class]
+ module.add_class('CallbackImpl', import_from_module='ns.core', template_parameters=['void', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], parent=root_module['ns3::CallbackImplBase'])
+ ## callback.h (module 'core'): ns3::CallbackImpl [class]
+ module.add_class('CallbackImpl', import_from_module='ns.core', template_parameters=['void', 'unsigned int', 'unsigned int', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'], parent=root_module['ns3::CallbackImplBase'])
## basic-data-calculators.h (module 'stats'): ns3::CounterCalculator [class]
module.add_class('CounterCalculator', import_from_module='ns.stats', template_parameters=['unsigned int'], parent=root_module['ns3::DataCalculator'])
## error-channel.h (module 'network'): ns3::ErrorChannel [class]
@@ -557,36 +629,36 @@
module.add_container('std::vector< ns3::Ipv6Address >', 'ns3::Ipv6Address', container_type=u'vector')
module.add_container('std::list< unsigned int >', 'unsigned int', container_type=u'list')
module.add_container('std::list< ns3::Ptr< ns3::Socket > >', 'ns3::Ptr< ns3::Socket >', container_type=u'list')
- typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxEndCallback')
- typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxEndCallback*')
- typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxEndCallback&')
- typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >', u'ns3::SequenceNumber16')
- typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >*', u'ns3::SequenceNumber16*')
- typehandlers.add_type_alias(u'ns3::SequenceNumber< short unsigned int, short int >&', u'ns3::SequenceNumber16&')
typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >', u'ns3::SequenceNumber32')
typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >*', u'ns3::SequenceNumber32*')
typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned int, int >&', u'ns3::SequenceNumber32&')
- typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *', u'ns3::LogNodePrinter')
- typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) **', u'ns3::LogNodePrinter*')
- typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *&', u'ns3::LogNodePrinter&')
- typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxStartCallback')
- typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxStartCallback*')
- typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxStartCallback&')
+ typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned short, short >', u'ns3::SequenceNumber16')
+ typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned short, short >*', u'ns3::SequenceNumber16*')
+ typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned short, short >&', u'ns3::SequenceNumber16&')
typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >', u'ns3::SequenceNumber8')
typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >*', u'ns3::SequenceNumber8*')
typehandlers.add_type_alias(u'ns3::SequenceNumber< unsigned char, signed char >&', u'ns3::SequenceNumber8&')
- typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndErrorCallback')
- typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndErrorCallback*')
- typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndErrorCallback&')
typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxStartCallback')
typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxStartCallback*')
typehandlers.add_type_alias(u'ns3::Callback< bool, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxStartCallback&')
- typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *', u'ns3::LogTimePrinter')
- typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) **', u'ns3::LogTimePrinter*')
- typehandlers.add_type_alias(u'void ( * ) ( std::ostream & ) *&', u'ns3::LogTimePrinter&')
+ typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyTxEndCallback')
+ typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyTxEndCallback*')
+ typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyTxEndCallback&')
+ typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxStartCallback')
+ typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxStartCallback*')
+ typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxStartCallback&')
+ typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndErrorCallback')
+ typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndErrorCallback*')
+ typehandlers.add_type_alias(u'ns3::Callback< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndErrorCallback&')
typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', u'ns3::GenericPhyRxEndOkCallback')
typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >*', u'ns3::GenericPhyRxEndOkCallback*')
typehandlers.add_type_alias(u'ns3::Callback< void, ns3::Ptr< ns3::Packet >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >&', u'ns3::GenericPhyRxEndOkCallback&')
+ typehandlers.add_type_alias(u'void ( * ) ( std::ostream & )', u'ns3::LogTimePrinter')
+ typehandlers.add_type_alias(u'void ( * ) ( std::ostream & )*', u'ns3::LogTimePrinter*')
+ typehandlers.add_type_alias(u'void ( * ) ( std::ostream & )&', u'ns3::LogTimePrinter&')
+ typehandlers.add_type_alias(u'void ( * ) ( std::ostream & )', u'ns3::LogNodePrinter')
+ typehandlers.add_type_alias(u'void ( * ) ( std::ostream & )*', u'ns3::LogNodePrinter*')
+ typehandlers.add_type_alias(u'void ( * ) ( std::ostream & )&', u'ns3::LogNodePrinter&')
## Register a nested module for the namespace FatalImpl
@@ -617,6 +689,12 @@
nested_module = module.add_cpp_namespace('internal')
register_types_ns3_internal(nested_module)
+
+ ## Register a nested module for the namespace tests
+
+ nested_module = module.add_cpp_namespace('tests')
+ register_types_ns3_tests(nested_module)
+
def register_types_ns3_FatalImpl(module):
root_module = module.get_root()
@@ -627,12 +705,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(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&')
+ typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t const )', u'ns3::Hash::Hash32Function_ptr')
+ typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t const )*', u'ns3::Hash::Hash32Function_ptr*')
+ typehandlers.add_type_alias(u'uint32_t ( * ) ( char const *, size_t const )&', u'ns3::Hash::Hash32Function_ptr&')
+ typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t const )', u'ns3::Hash::Hash64Function_ptr')
+ typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t const )*', u'ns3::Hash::Hash64Function_ptr*')
+ typehandlers.add_type_alias(u'uint64_t ( * ) ( char const *, size_t const )&', u'ns3::Hash::Hash64Function_ptr&')
## Register a nested module for the namespace Function
@@ -655,39 +733,39 @@
def register_types_ns3_TracedValueCallback(module):
root_module = module.get_root()
- typehandlers.add_type_alias(u'void ( * ) ( double, double ) *', u'ns3::TracedValueCallback::Double')
- typehandlers.add_type_alias(u'void ( * ) ( double, double ) **', u'ns3::TracedValueCallback::Double*')
- typehandlers.add_type_alias(u'void ( * ) ( double, double ) *&', u'ns3::TracedValueCallback::Double&')
- typehandlers.add_type_alias(u'void ( * ) ( ns3::SequenceNumber32, ns3::SequenceNumber32 ) *', u'ns3::TracedValueCallback::SequenceNumber32')
- typehandlers.add_type_alias(u'void ( * ) ( ns3::SequenceNumber32, ns3::SequenceNumber32 ) **', u'ns3::TracedValueCallback::SequenceNumber32*')
- typehandlers.add_type_alias(u'void ( * ) ( ns3::SequenceNumber32, ns3::SequenceNumber32 ) *&', u'ns3::TracedValueCallback::SequenceNumber32&')
- typehandlers.add_type_alias(u'void ( * ) ( int8_t, int8_t ) *', u'ns3::TracedValueCallback::Int8')
- typehandlers.add_type_alias(u'void ( * ) ( int8_t, int8_t ) **', u'ns3::TracedValueCallback::Int8*')
- typehandlers.add_type_alias(u'void ( * ) ( int8_t, int8_t ) *&', u'ns3::TracedValueCallback::Int8&')
- typehandlers.add_type_alias(u'void ( * ) ( uint8_t, uint8_t ) *', u'ns3::TracedValueCallback::Uint8')
- typehandlers.add_type_alias(u'void ( * ) ( uint8_t, uint8_t ) **', u'ns3::TracedValueCallback::Uint8*')
- typehandlers.add_type_alias(u'void ( * ) ( uint8_t, uint8_t ) *&', u'ns3::TracedValueCallback::Uint8&')
- typehandlers.add_type_alias(u'void ( * ) ( int32_t, int32_t ) *', u'ns3::TracedValueCallback::Int32')
- typehandlers.add_type_alias(u'void ( * ) ( int32_t, int32_t ) **', u'ns3::TracedValueCallback::Int32*')
- typehandlers.add_type_alias(u'void ( * ) ( int32_t, int32_t ) *&', u'ns3::TracedValueCallback::Int32&')
- typehandlers.add_type_alias(u'void ( * ) ( bool, bool ) *', u'ns3::TracedValueCallback::Bool')
- typehandlers.add_type_alias(u'void ( * ) ( bool, bool ) **', u'ns3::TracedValueCallback::Bool*')
- typehandlers.add_type_alias(u'void ( * ) ( bool, bool ) *&', u'ns3::TracedValueCallback::Bool&')
- typehandlers.add_type_alias(u'void ( * ) ( uint16_t, uint16_t ) *', u'ns3::TracedValueCallback::Uint16')
- typehandlers.add_type_alias(u'void ( * ) ( uint16_t, uint16_t ) **', u'ns3::TracedValueCallback::Uint16*')
- typehandlers.add_type_alias(u'void ( * ) ( uint16_t, uint16_t ) *&', u'ns3::TracedValueCallback::Uint16&')
- typehandlers.add_type_alias(u'void ( * ) ( uint32_t, uint32_t ) *', u'ns3::TracedValueCallback::Uint32')
- typehandlers.add_type_alias(u'void ( * ) ( uint32_t, uint32_t ) **', u'ns3::TracedValueCallback::Uint32*')
- typehandlers.add_type_alias(u'void ( * ) ( uint32_t, uint32_t ) *&', u'ns3::TracedValueCallback::Uint32&')
- typehandlers.add_type_alias(u'void ( * ) ( int16_t, int16_t ) *', u'ns3::TracedValueCallback::Int16')
- typehandlers.add_type_alias(u'void ( * ) ( int16_t, int16_t ) **', u'ns3::TracedValueCallback::Int16*')
- typehandlers.add_type_alias(u'void ( * ) ( int16_t, int16_t ) *&', u'ns3::TracedValueCallback::Int16&')
- typehandlers.add_type_alias(u'void ( * ) ( ns3::Time, ns3::Time ) *', u'ns3::TracedValueCallback::Time')
- typehandlers.add_type_alias(u'void ( * ) ( ns3::Time, ns3::Time ) **', u'ns3::TracedValueCallback::Time*')
- typehandlers.add_type_alias(u'void ( * ) ( ns3::Time, ns3::Time ) *&', u'ns3::TracedValueCallback::Time&')
- typehandlers.add_type_alias(u'void ( * ) ( ) *', u'ns3::TracedValueCallback::Void')
- typehandlers.add_type_alias(u'void ( * ) ( ) **', u'ns3::TracedValueCallback::Void*')
- typehandlers.add_type_alias(u'void ( * ) ( ) *&', u'ns3::TracedValueCallback::Void&')
+ typehandlers.add_type_alias(u'void ( * ) ( ns3::Time, ns3::Time )', u'ns3::TracedValueCallback::Time')
+ typehandlers.add_type_alias(u'void ( * ) ( ns3::Time, ns3::Time )*', u'ns3::TracedValueCallback::Time*')
+ typehandlers.add_type_alias(u'void ( * ) ( ns3::Time, ns3::Time )&', u'ns3::TracedValueCallback::Time&')
+ typehandlers.add_type_alias(u'void ( * ) ( ns3::SequenceNumber32, ns3::SequenceNumber32 )', u'ns3::TracedValueCallback::SequenceNumber32')
+ typehandlers.add_type_alias(u'void ( * ) ( ns3::SequenceNumber32, ns3::SequenceNumber32 )*', u'ns3::TracedValueCallback::SequenceNumber32*')
+ typehandlers.add_type_alias(u'void ( * ) ( ns3::SequenceNumber32, ns3::SequenceNumber32 )&', u'ns3::TracedValueCallback::SequenceNumber32&')
+ typehandlers.add_type_alias(u'void ( * ) ( bool, bool )', u'ns3::TracedValueCallback::Bool')
+ typehandlers.add_type_alias(u'void ( * ) ( bool, bool )*', u'ns3::TracedValueCallback::Bool*')
+ typehandlers.add_type_alias(u'void ( * ) ( bool, bool )&', u'ns3::TracedValueCallback::Bool&')
+ typehandlers.add_type_alias(u'void ( * ) ( int8_t, int8_t )', u'ns3::TracedValueCallback::Int8')
+ typehandlers.add_type_alias(u'void ( * ) ( int8_t, int8_t )*', u'ns3::TracedValueCallback::Int8*')
+ typehandlers.add_type_alias(u'void ( * ) ( int8_t, int8_t )&', u'ns3::TracedValueCallback::Int8&')
+ typehandlers.add_type_alias(u'void ( * ) ( uint8_t, uint8_t )', u'ns3::TracedValueCallback::Uint8')
+ typehandlers.add_type_alias(u'void ( * ) ( uint8_t, uint8_t )*', u'ns3::TracedValueCallback::Uint8*')
+ typehandlers.add_type_alias(u'void ( * ) ( uint8_t, uint8_t )&', u'ns3::TracedValueCallback::Uint8&')
+ typehandlers.add_type_alias(u'void ( * ) ( int16_t, int16_t )', u'ns3::TracedValueCallback::Int16')
+ typehandlers.add_type_alias(u'void ( * ) ( int16_t, int16_t )*', u'ns3::TracedValueCallback::Int16*')
+ typehandlers.add_type_alias(u'void ( * ) ( int16_t, int16_t )&', u'ns3::TracedValueCallback::Int16&')
+ typehandlers.add_type_alias(u'void ( * ) ( uint16_t, uint16_t )', u'ns3::TracedValueCallback::Uint16')
+ typehandlers.add_type_alias(u'void ( * ) ( uint16_t, uint16_t )*', u'ns3::TracedValueCallback::Uint16*')
+ typehandlers.add_type_alias(u'void ( * ) ( uint16_t, uint16_t )&', u'ns3::TracedValueCallback::Uint16&')
+ typehandlers.add_type_alias(u'void ( * ) ( int32_t, int32_t )', u'ns3::TracedValueCallback::Int32')
+ typehandlers.add_type_alias(u'void ( * ) ( int32_t, int32_t )*', u'ns3::TracedValueCallback::Int32*')
+ typehandlers.add_type_alias(u'void ( * ) ( int32_t, int32_t )&', u'ns3::TracedValueCallback::Int32&')
+ typehandlers.add_type_alias(u'void ( * ) ( uint32_t, uint32_t )', u'ns3::TracedValueCallback::Uint32')
+ typehandlers.add_type_alias(u'void ( * ) ( uint32_t, uint32_t )*', u'ns3::TracedValueCallback::Uint32*')
+ typehandlers.add_type_alias(u'void ( * ) ( uint32_t, uint32_t )&', u'ns3::TracedValueCallback::Uint32&')
+ typehandlers.add_type_alias(u'void ( * ) ( double, double )', u'ns3::TracedValueCallback::Double')
+ typehandlers.add_type_alias(u'void ( * ) ( double, double )*', u'ns3::TracedValueCallback::Double*')
+ typehandlers.add_type_alias(u'void ( * ) ( double, double )&', u'ns3::TracedValueCallback::Double&')
+ typehandlers.add_type_alias(u'void ( * ) ( )', u'ns3::TracedValueCallback::Void')
+ typehandlers.add_type_alias(u'void ( * ) ( )*', u'ns3::TracedValueCallback::Void*')
+ typehandlers.add_type_alias(u'void ( * ) ( )&', u'ns3::TracedValueCallback::Void&')
def register_types_ns3_addressUtils(module):
root_module = module.get_root()
@@ -697,6 +775,10 @@
root_module = module.get_root()
+def register_types_ns3_tests(module):
+ root_module = module.get_root()
+
+
def register_methods(root_module):
register_Ns3Address_methods(root_module, root_module['ns3::Address'])
register_Ns3ApplicationContainer_methods(root_module, root_module['ns3::ApplicationContainer'])
@@ -717,6 +799,21 @@
register_Ns3ChannelList_methods(root_module, root_module['ns3::ChannelList'])
register_Ns3DataOutputCallback_methods(root_module, root_module['ns3::DataOutputCallback'])
register_Ns3DataRate_methods(root_module, root_module['ns3::DataRate'])
+ register_Ns3DefaultDeleter__Ns3AttributeAccessor_methods(root_module, root_module['ns3::DefaultDeleter< ns3::AttributeAccessor >'])
+ register_Ns3DefaultDeleter__Ns3AttributeChecker_methods(root_module, root_module['ns3::DefaultDeleter< ns3::AttributeChecker >'])
+ register_Ns3DefaultDeleter__Ns3AttributeValue_methods(root_module, root_module['ns3::DefaultDeleter< ns3::AttributeValue >'])
+ register_Ns3DefaultDeleter__Ns3CallbackImplBase_methods(root_module, root_module['ns3::DefaultDeleter< ns3::CallbackImplBase >'])
+ register_Ns3DefaultDeleter__Ns3EventImpl_methods(root_module, root_module['ns3::DefaultDeleter< ns3::EventImpl >'])
+ register_Ns3DefaultDeleter__Ns3HashImplementation_methods(root_module, root_module['ns3::DefaultDeleter< ns3::Hash::Implementation >'])
+ register_Ns3DefaultDeleter__Ns3NetDeviceQueue_methods(root_module, root_module['ns3::DefaultDeleter< ns3::NetDeviceQueue >'])
+ register_Ns3DefaultDeleter__Ns3NixVector_methods(root_module, root_module['ns3::DefaultDeleter< ns3::NixVector >'])
+ register_Ns3DefaultDeleter__Ns3OutputStreamWrapper_methods(root_module, root_module['ns3::DefaultDeleter< ns3::OutputStreamWrapper >'])
+ register_Ns3DefaultDeleter__Ns3Packet_methods(root_module, root_module['ns3::DefaultDeleter< ns3::Packet >'])
+ register_Ns3DefaultDeleter__Ns3PbbAddressBlock_methods(root_module, root_module['ns3::DefaultDeleter< ns3::PbbAddressBlock >'])
+ register_Ns3DefaultDeleter__Ns3PbbMessage_methods(root_module, root_module['ns3::DefaultDeleter< ns3::PbbMessage >'])
+ register_Ns3DefaultDeleter__Ns3PbbTlv_methods(root_module, root_module['ns3::DefaultDeleter< ns3::PbbTlv >'])
+ register_Ns3DefaultDeleter__Ns3QueueItem_methods(root_module, root_module['ns3::DefaultDeleter< ns3::QueueItem >'])
+ register_Ns3DefaultDeleter__Ns3TraceSourceAccessor_methods(root_module, root_module['ns3::DefaultDeleter< ns3::TraceSourceAccessor >'])
register_Ns3DelayJitterEstimation_methods(root_module, root_module['ns3::DelayJitterEstimation'])
register_Ns3EventId_methods(root_module, root_module['ns3::EventId'])
register_Ns3Hasher_methods(root_module, root_module['ns3::Hasher'])
@@ -730,6 +827,7 @@
register_Ns3Mac16Address_methods(root_module, root_module['ns3::Mac16Address'])
register_Ns3Mac48Address_methods(root_module, root_module['ns3::Mac48Address'])
register_Ns3Mac64Address_methods(root_module, root_module['ns3::Mac64Address'])
+ register_Ns3Mac8Address_methods(root_module, root_module['ns3::Mac8Address'])
register_Ns3NetDeviceContainer_methods(root_module, root_module['ns3::NetDeviceContainer'])
register_Ns3NodeContainer_methods(root_module, root_module['ns3::NodeContainer'])
register_Ns3NodeList_methods(root_module, root_module['ns3::NodeList'])
@@ -755,6 +853,7 @@
register_Ns3PcapFile_methods(root_module, root_module['ns3::PcapFile'])
register_Ns3PcapHelper_methods(root_module, root_module['ns3::PcapHelper'])
register_Ns3PcapHelperForDevice_methods(root_module, root_module['ns3::PcapHelperForDevice'])
+ register_Ns3QueueSize_methods(root_module, root_module['ns3::QueueSize'])
register_Ns3SimpleNetDeviceHelper_methods(root_module, root_module['ns3::SimpleNetDeviceHelper'])
register_Ns3SimpleRefCount__Ns3Object_Ns3ObjectBase_Ns3ObjectDeleter_methods(root_module, root_module['ns3::SimpleRefCount< ns3::Object, ns3::ObjectBase, ns3::ObjectDeleter >'])
register_Ns3Simulator_methods(root_module, root_module['ns3::Simulator'])
@@ -904,6 +1003,8 @@
register_Ns3Queue__Ns3Packet_methods(root_module, root_module['ns3::Queue< ns3::Packet >'])
register_Ns3Queue__Ns3QueueDiscItem_methods(root_module, root_module['ns3::Queue< ns3::QueueDiscItem >'])
register_Ns3QueueItem_methods(root_module, root_module['ns3::QueueItem'])
+ register_Ns3QueueSizeChecker_methods(root_module, root_module['ns3::QueueSizeChecker'])
+ register_Ns3QueueSizeValue_methods(root_module, root_module['ns3::QueueSizeValue'])
register_Ns3RateErrorModel_methods(root_module, root_module['ns3::RateErrorModel'])
register_Ns3ReceiveListErrorModel_methods(root_module, root_module['ns3::ReceiveListErrorModel'])
register_Ns3SimpleChannel_methods(root_module, root_module['ns3::SimpleChannel'])
@@ -922,6 +1023,21 @@
register_Ns3ApplicationPacketProbe_methods(root_module, root_module['ns3::ApplicationPacketProbe'])
register_Ns3BinaryErrorModel_methods(root_module, root_module['ns3::BinaryErrorModel'])
register_Ns3BurstErrorModel_methods(root_module, root_module['ns3::BurstErrorModel'])
+ register_Ns3CallbackImpl__Bool_Ns3Ptr__lt__ns3NetDevice__gt___Ns3Ptr__lt__const_ns3Packet__gt___Unsigned_short_Const_ns3Address___amp___Const_ns3Address___amp___Ns3NetDevicePacketType_Ns3Empty_Ns3Empty_Ns3Empty_methods(root_module, root_module['ns3::CallbackImpl< bool, ns3::Ptr, ns3::Ptr, unsigned short, const ns3::Address &, const ns3::Address &, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty >'])
+ register_Ns3CallbackImpl__Bool_Ns3Ptr__lt__ns3NetDevice__gt___Ns3Ptr__lt__const_ns3Packet__gt___Unsigned_short_Const_ns3Address___amp___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_methods(root_module, root_module['ns3::CallbackImpl< bool, ns3::Ptr, ns3::Ptr, unsigned short, const ns3::Address &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >'])
+ register_Ns3CallbackImpl__Bool_Ns3Ptr__lt__ns3Socket__gt___Const_ns3Address___amp___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_methods(root_module, root_module['ns3::CallbackImpl< bool, ns3::Ptr, const ns3::Address &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >'])
+ register_Ns3CallbackImpl__Ns3ObjectBase___star___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_methods(root_module, root_module['ns3::CallbackImpl< ns3::ObjectBase *, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >'])
+ register_Ns3CallbackImpl__Unsigned_char_Ns3Ptr__lt__ns3QueueItem__gt___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_methods(root_module, root_module['ns3::CallbackImpl< unsigned char, ns3::Ptr, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >'])
+ register_Ns3CallbackImpl__Void_Ns3Ptr__lt__const_ns3Packet__gt___Const_ns3Address___amp___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_methods(root_module, root_module['ns3::CallbackImpl< void, ns3::Ptr, const ns3::Address &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >'])
+ register_Ns3CallbackImpl__Void_Ns3Ptr__lt__const_ns3Packet__gt___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_methods(root_module, root_module['ns3::CallbackImpl< void, ns3::Ptr, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >'])
+ register_Ns3CallbackImpl__Void_Ns3Ptr__lt__const_ns3QueueDiscItem__gt___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_methods(root_module, root_module['ns3::CallbackImpl< void, ns3::Ptr, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >'])
+ register_Ns3CallbackImpl__Void_Ns3Ptr__lt__ns3NetDevice__gt___Ns3Ptr__lt__const_ns3Packet__gt___Unsigned_short_Const_ns3Address___amp___Const_ns3Address___amp___Ns3NetDevicePacketType_Ns3Empty_Ns3Empty_Ns3Empty_methods(root_module, root_module['ns3::CallbackImpl< void, ns3::Ptr, ns3::Ptr, unsigned short, const ns3::Address &, const ns3::Address &, ns3::NetDevice::PacketType, ns3::empty, ns3::empty, ns3::empty >'])
+ register_Ns3CallbackImpl__Void_Ns3Ptr__lt__ns3NetDevice__gt___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_methods(root_module, root_module['ns3::CallbackImpl< void, ns3::Ptr, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >'])
+ register_Ns3CallbackImpl__Void_Ns3Ptr__lt__ns3Socket__gt___Const_ns3Address___amp___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_methods(root_module, root_module['ns3::CallbackImpl< void, ns3::Ptr, const ns3::Address &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >'])
+ register_Ns3CallbackImpl__Void_Ns3Ptr__lt__ns3Socket__gt___Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_methods(root_module, root_module['ns3::CallbackImpl< void, ns3::Ptr, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >'])
+ register_Ns3CallbackImpl__Void_Ns3Ptr__lt__ns3Socket__gt___Unsigned_int_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_methods(root_module, root_module['ns3::CallbackImpl< void, ns3::Ptr, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >'])
+ register_Ns3CallbackImpl__Void_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_methods(root_module, root_module['ns3::CallbackImpl< void, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >'])
+ register_Ns3CallbackImpl__Void_Unsigned_int_Unsigned_int_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_Ns3Empty_methods(root_module, root_module['ns3::CallbackImpl< void, unsigned int, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >'])
register_Ns3CounterCalculator__Unsigned_int_methods(root_module, root_module['ns3::CounterCalculator< unsigned int >'])
register_Ns3ErrorChannel_methods(root_module, root_module['ns3::ErrorChannel'])
register_Ns3PacketCounterCalculator_methods(root_module, root_module['ns3::PacketCounterCalculator'])
@@ -936,15 +1052,15 @@
return
def register_Ns3Address_methods(root_module, cls):
+ cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('!=')
cls.add_binary_comparison_operator('<')
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('==')
## address.h (module 'network'): ns3::Address::Address() [constructor]
cls.add_constructor([])
## address.h (module 'network'): ns3::Address::Address(uint8_t type, uint8_t const * buffer, uint8_t len) [constructor]
cls.add_constructor([param('uint8_t', 'type'), param('uint8_t const *', 'buffer'), param('uint8_t', 'len')])
- ## address.h (module 'network'): ns3::Address::Address(ns3::Address const & address) [copy constructor]
+ ## address.h (module 'network'): ns3::Address::Address(ns3::Address const & address) [constructor]
cls.add_constructor([param('ns3::Address const &', 'address')])
## address.h (module 'network'): bool ns3::Address::CheckCompatible(uint8_t type, uint8_t len) const [member function]
cls.add_method('CheckCompatible',
@@ -1006,7 +1122,7 @@
return
def register_Ns3ApplicationContainer_methods(root_module, cls):
- ## application-container.h (module 'network'): ns3::ApplicationContainer::ApplicationContainer(ns3::ApplicationContainer const & arg0) [copy constructor]
+ ## application-container.h (module 'network'): ns3::ApplicationContainer::ApplicationContainer(ns3::ApplicationContainer const & arg0) [constructor]
cls.add_constructor([param('ns3::ApplicationContainer const &', 'arg0')])
## application-container.h (module 'network'): ns3::ApplicationContainer::ApplicationContainer() [constructor]
cls.add_constructor([])
@@ -1026,14 +1142,14 @@
cls.add_method('Add',
'void',
[param('std::string', 'name')])
- ## application-container.h (module 'network'): __gnu_cxx::__normal_iterator*,std::vector, std::allocator > > > ns3::ApplicationContainer::Begin() const [member function]
+ ## application-container.h (module 'network'): ns3::ApplicationContainer::Iterator ns3::ApplicationContainer::Begin() const [member function]
cls.add_method('Begin',
- '__gnu_cxx::__normal_iterator< ns3::Ptr< ns3::Application > const, std::vector< ns3::Ptr< ns3::Application > > >',
+ 'ns3::ApplicationContainer::Iterator',
[],
is_const=True)
- ## application-container.h (module 'network'): __gnu_cxx::__normal_iterator*,std::vector, std::allocator > > > ns3::ApplicationContainer::End() const [member function]
+ ## application-container.h (module 'network'): ns3::ApplicationContainer::Iterator ns3::ApplicationContainer::End() const [member function]
cls.add_method('End',
- '__gnu_cxx::__normal_iterator< ns3::Ptr< ns3::Application > const, std::vector< ns3::Ptr< ns3::Application > > >',
+ 'ns3::ApplicationContainer::Iterator',
[],
is_const=True)
## application-container.h (module 'network'): ns3::Ptr ns3::ApplicationContainer::Get(uint32_t i) const [member function]
@@ -1069,10 +1185,10 @@
'bool',
[],
is_const=True)
- ## ascii-file.h (module 'network'): void ns3::AsciiFile::Open(std::string const & filename, std::_Ios_Openmode mode) [member function]
+ ## ascii-file.h (module 'network'): void ns3::AsciiFile::Open(std::string const & filename, std::ios_base::openmode mode) [member function]
cls.add_method('Open',
'void',
- [param('std::string const &', 'filename'), param('std::_Ios_Openmode', 'mode')])
+ [param('std::string const &', 'filename'), param('std::ios_base::openmode', 'mode')])
## ascii-file.h (module 'network'): void ns3::AsciiFile::Close() [member function]
cls.add_method('Close',
'void',
@@ -1089,50 +1205,50 @@
return
def register_Ns3AsciiTraceHelper_methods(root_module, cls):
- ## trace-helper.h (module 'network'): ns3::AsciiTraceHelper::AsciiTraceHelper(ns3::AsciiTraceHelper const & arg0) [copy constructor]
+ ## trace-helper.h (module 'network'): ns3::AsciiTraceHelper::AsciiTraceHelper(ns3::AsciiTraceHelper const & arg0) [constructor]
cls.add_constructor([param('ns3::AsciiTraceHelper const &', 'arg0')])
## trace-helper.h (module 'network'): ns3::AsciiTraceHelper::AsciiTraceHelper() [constructor]
cls.add_constructor([])
- ## trace-helper.h (module 'network'): ns3::Ptr ns3::AsciiTraceHelper::CreateFileStream(std::string filename, std::_Ios_Openmode filemode=std::ios_base::out) [member function]
+ ## trace-helper.h (module 'network'): ns3::Ptr ns3::AsciiTraceHelper::CreateFileStream(std::string filename, std::ios_base::openmode filemode=std::ios_base::out) [member function]
cls.add_method('CreateFileStream',
'ns3::Ptr< ns3::OutputStreamWrapper >',
- [param('std::string', 'filename'), param('std::_Ios_Openmode', 'filemode', default_value='std::ios_base::out')])
- ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultDequeueSinkWithContext(ns3::Ptr file, std::string context, ns3::Ptr p) [member function]
+ [param('std::string', 'filename'), param('std::ios_base::openmode', 'filemode', default_value='std::ios_base::out')])
+ ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultDequeueSinkWithContext(ns3::Ptr file, std::string context, ns3::Ptr p) [member function]
cls.add_method('DefaultDequeueSinkWithContext',
'void',
[param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('std::string', 'context'), param('ns3::Ptr< ns3::Packet const >', 'p')],
is_static=True)
- ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultDequeueSinkWithoutContext(ns3::Ptr file, ns3::Ptr p) [member function]
+ ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultDequeueSinkWithoutContext(ns3::Ptr file, ns3::Ptr p) [member function]
cls.add_method('DefaultDequeueSinkWithoutContext',
'void',
[param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('ns3::Ptr< ns3::Packet const >', 'p')],
is_static=True)
- ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultDropSinkWithContext(ns3::Ptr file, std::string context, ns3::Ptr p) [member function]
+ ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultDropSinkWithContext(ns3::Ptr file, std::string context, ns3::Ptr p) [member function]
cls.add_method('DefaultDropSinkWithContext',
'void',
[param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('std::string', 'context'), param('ns3::Ptr< ns3::Packet const >', 'p')],
is_static=True)
- ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultDropSinkWithoutContext(ns3::Ptr file, ns3::Ptr p) [member function]
+ ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultDropSinkWithoutContext(ns3::Ptr file, ns3::Ptr p) [member function]
cls.add_method('DefaultDropSinkWithoutContext',
'void',
[param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('ns3::Ptr< ns3::Packet const >', 'p')],
is_static=True)
- ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultEnqueueSinkWithContext(ns3::Ptr file, std::string context, ns3::Ptr p) [member function]
+ ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultEnqueueSinkWithContext(ns3::Ptr file, std::string context, ns3::Ptr p) [member function]
cls.add_method('DefaultEnqueueSinkWithContext',
'void',
[param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('std::string', 'context'), param('ns3::Ptr< ns3::Packet const >', 'p')],
is_static=True)
- ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultEnqueueSinkWithoutContext(ns3::Ptr file, ns3::Ptr p) [member function]
+ ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultEnqueueSinkWithoutContext(ns3::Ptr file, ns3::Ptr p) [member function]
cls.add_method('DefaultEnqueueSinkWithoutContext',
'void',
[param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('ns3::Ptr< ns3::Packet const >', 'p')],
is_static=True)
- ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultReceiveSinkWithContext(ns3::Ptr file, std::string context, ns3::Ptr p) [member function]
+ ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultReceiveSinkWithContext(ns3::Ptr file, std::string context, ns3::Ptr p) [member function]
cls.add_method('DefaultReceiveSinkWithContext',
'void',
[param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('std::string', 'context'), param('ns3::Ptr< ns3::Packet const >', 'p')],
is_static=True)
- ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultReceiveSinkWithoutContext(ns3::Ptr file, ns3::Ptr p) [member function]
+ ## trace-helper.h (module 'network'): static void ns3::AsciiTraceHelper::DefaultReceiveSinkWithoutContext(ns3::Ptr file, ns3::Ptr p) [member function]
cls.add_method('DefaultReceiveSinkWithoutContext',
'void',
[param('ns3::Ptr< ns3::OutputStreamWrapper >', 'file'), param('ns3::Ptr< ns3::Packet const >', 'p')],
@@ -1148,7 +1264,7 @@
return
def register_Ns3AsciiTraceHelperForDevice_methods(root_module, cls):
- ## trace-helper.h (module 'network'): ns3::AsciiTraceHelperForDevice::AsciiTraceHelperForDevice(ns3::AsciiTraceHelperForDevice const & arg0) [copy constructor]
+ ## trace-helper.h (module 'network'): ns3::AsciiTraceHelperForDevice::AsciiTraceHelperForDevice(ns3::AsciiTraceHelperForDevice const & arg0) [constructor]
cls.add_constructor([param('ns3::AsciiTraceHelperForDevice const &', 'arg0')])
## trace-helper.h (module 'network'): ns3::AsciiTraceHelperForDevice::AsciiTraceHelperForDevice() [constructor]
cls.add_constructor([])
@@ -1208,25 +1324,25 @@
return
def register_Ns3AttributeConstructionList_methods(root_module, cls):
- ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::AttributeConstructionList(ns3::AttributeConstructionList const & arg0) [copy constructor]
+ ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::AttributeConstructionList(ns3::AttributeConstructionList const & arg0) [constructor]
cls.add_constructor([param('ns3::AttributeConstructionList const &', 'arg0')])
## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::AttributeConstructionList() [constructor]
cls.add_constructor([])
- ## attribute-construction-list.h (module 'core'): void ns3::AttributeConstructionList::Add(std::string name, ns3::Ptr checker, ns3::Ptr value) [member function]
+ ## attribute-construction-list.h (module 'core'): void ns3::AttributeConstructionList::Add(std::string name, ns3::Ptr checker, ns3::Ptr value) [member function]
cls.add_method('Add',
'void',
[param('std::string', 'name'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker'), param('ns3::Ptr< ns3::AttributeValue >', 'value')])
- ## attribute-construction-list.h (module 'core'): std::_List_const_iterator ns3::AttributeConstructionList::Begin() const [member function]
+ ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::CIterator ns3::AttributeConstructionList::Begin() const [member function]
cls.add_method('Begin',
- 'std::_List_const_iterator< ns3::AttributeConstructionList::Item >',
+ 'ns3::AttributeConstructionList::CIterator',
[],
is_const=True)
- ## attribute-construction-list.h (module 'core'): std::_List_const_iterator ns3::AttributeConstructionList::End() const [member function]
+ ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::CIterator ns3::AttributeConstructionList::End() const [member function]
cls.add_method('End',
- 'std::_List_const_iterator< ns3::AttributeConstructionList::Item >',
+ 'ns3::AttributeConstructionList::CIterator',
[],
is_const=True)
- ## attribute-construction-list.h (module 'core'): ns3::Ptr ns3::AttributeConstructionList::Find(ns3::Ptr checker) const [member function]
+ ## attribute-construction-list.h (module 'core'): ns3::Ptr ns3::AttributeConstructionList::Find(ns3::Ptr checker) const [member function]
cls.add_method('Find',
'ns3::Ptr< ns3::AttributeValue >',
[param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')],
@@ -1236,7 +1352,7 @@
def register_Ns3AttributeConstructionListItem_methods(root_module, cls):
## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::Item::Item() [constructor]
cls.add_constructor([])
- ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::Item::Item(ns3::AttributeConstructionList::Item const & arg0) [copy constructor]
+ ## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::Item::Item(ns3::AttributeConstructionList::Item const & arg0) [constructor]
cls.add_constructor([param('ns3::AttributeConstructionList::Item const &', 'arg0')])
## attribute-construction-list.h (module 'core'): ns3::AttributeConstructionList::Item::checker [variable]
cls.add_instance_attribute('checker', 'ns3::Ptr< ns3::AttributeChecker const >', is_const=False)
@@ -1247,14 +1363,14 @@
return
def register_Ns3Buffer_methods(root_module, cls):
+ ## buffer.h (module 'network'): ns3::Buffer::Buffer(ns3::Buffer const & o) [constructor]
+ cls.add_constructor([param('ns3::Buffer const &', 'o')])
## buffer.h (module 'network'): ns3::Buffer::Buffer() [constructor]
cls.add_constructor([])
## buffer.h (module 'network'): ns3::Buffer::Buffer(uint32_t dataSize) [constructor]
cls.add_constructor([param('uint32_t', 'dataSize')])
## buffer.h (module 'network'): ns3::Buffer::Buffer(uint32_t dataSize, bool initialize) [constructor]
cls.add_constructor([param('uint32_t', 'dataSize'), param('bool', 'initialize')])
- ## buffer.h (module 'network'): ns3::Buffer::Buffer(ns3::Buffer const & o) [copy constructor]
- cls.add_constructor([param('ns3::Buffer const &', 'o')])
## buffer.h (module 'network'): void ns3::Buffer::AddAtEnd(uint32_t end) [member function]
cls.add_method('AddAtEnd',
'void',
@@ -1327,7 +1443,7 @@
return
def register_Ns3BufferIterator_methods(root_module, cls):
- ## buffer.h (module 'network'): ns3::Buffer::Iterator::Iterator(ns3::Buffer::Iterator const & arg0) [copy constructor]
+ ## buffer.h (module 'network'): ns3::Buffer::Iterator::Iterator(ns3::Buffer::Iterator const & arg0) [constructor]
cls.add_constructor([param('ns3::Buffer::Iterator const &', 'arg0')])
## buffer.h (module 'network'): ns3::Buffer::Iterator::Iterator() [constructor]
cls.add_constructor([])
@@ -1487,7 +1603,7 @@
return
def register_Ns3BulkSendHelper_methods(root_module, cls):
- ## bulk-send-helper.h (module 'applications'): ns3::BulkSendHelper::BulkSendHelper(ns3::BulkSendHelper const & arg0) [copy constructor]
+ ## bulk-send-helper.h (module 'applications'): ns3::BulkSendHelper::BulkSendHelper(ns3::BulkSendHelper const & arg0) [constructor]
cls.add_constructor([param('ns3::BulkSendHelper const &', 'arg0')])
## bulk-send-helper.h (module 'applications'): ns3::BulkSendHelper::BulkSendHelper(std::string protocol, ns3::Address address) [constructor]
cls.add_constructor([param('std::string', 'protocol'), param('ns3::Address', 'address')])
@@ -1513,7 +1629,7 @@
return
def register_Ns3ByteTagIterator_methods(root_module, cls):
- ## packet.h (module 'network'): ns3::ByteTagIterator::ByteTagIterator(ns3::ByteTagIterator const & arg0) [copy constructor]
+ ## packet.h (module 'network'): ns3::ByteTagIterator::ByteTagIterator(ns3::ByteTagIterator const & arg0) [constructor]
cls.add_constructor([param('ns3::ByteTagIterator const &', 'arg0')])
## packet.h (module 'network'): bool ns3::ByteTagIterator::HasNext() const [member function]
cls.add_method('HasNext',
@@ -1527,7 +1643,7 @@
return
def register_Ns3ByteTagIteratorItem_methods(root_module, cls):
- ## packet.h (module 'network'): ns3::ByteTagIterator::Item::Item(ns3::ByteTagIterator::Item const & arg0) [copy constructor]
+ ## packet.h (module 'network'): ns3::ByteTagIterator::Item::Item(ns3::ByteTagIterator::Item const & arg0) [constructor]
cls.add_constructor([param('ns3::ByteTagIterator::Item const &', 'arg0')])
## packet.h (module 'network'): uint32_t ns3::ByteTagIterator::Item::GetEnd() const [member function]
cls.add_method('GetEnd',
@@ -1554,7 +1670,7 @@
def register_Ns3ByteTagList_methods(root_module, cls):
## byte-tag-list.h (module 'network'): ns3::ByteTagList::ByteTagList() [constructor]
cls.add_constructor([])
- ## byte-tag-list.h (module 'network'): ns3::ByteTagList::ByteTagList(ns3::ByteTagList const & o) [copy constructor]
+ ## byte-tag-list.h (module 'network'): ns3::ByteTagList::ByteTagList(ns3::ByteTagList const & o) [constructor]
cls.add_constructor([param('ns3::ByteTagList const &', 'o')])
## byte-tag-list.h (module 'network'): ns3::TagBuffer ns3::ByteTagList::Add(ns3::TypeId tid, uint32_t bufferSize, int32_t start, int32_t end) [member function]
cls.add_method('Add',
@@ -1588,7 +1704,7 @@
return
def register_Ns3ByteTagListIterator_methods(root_module, cls):
- ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Iterator(ns3::ByteTagList::Iterator const & arg0) [copy constructor]
+ ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Iterator(ns3::ByteTagList::Iterator const & arg0) [constructor]
cls.add_constructor([param('ns3::ByteTagList::Iterator const &', 'arg0')])
## byte-tag-list.h (module 'network'): uint32_t ns3::ByteTagList::Iterator::GetOffsetStart() const [member function]
cls.add_method('GetOffsetStart',
@@ -1607,7 +1723,7 @@
return
def register_Ns3ByteTagListIteratorItem_methods(root_module, cls):
- ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::Item(ns3::ByteTagList::Iterator::Item const & arg0) [copy constructor]
+ ## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::Item(ns3::ByteTagList::Iterator::Item const & arg0) [constructor]
cls.add_constructor([param('ns3::ByteTagList::Iterator::Item const &', 'arg0')])
## byte-tag-list.h (module 'network'): ns3::ByteTagList::Iterator::Item::Item(ns3::TagBuffer buf) [constructor]
cls.add_constructor([param('ns3::TagBuffer', 'buf')])
@@ -1624,7 +1740,7 @@
return
def register_Ns3CallbackBase_methods(root_module, cls):
- ## callback.h (module 'core'): ns3::CallbackBase::CallbackBase(ns3::CallbackBase const & arg0) [copy constructor]
+ ## callback.h (module 'core'): ns3::CallbackBase::CallbackBase(ns3::CallbackBase const & arg0) [constructor]
cls.add_constructor([param('ns3::CallbackBase const &', 'arg0')])
## callback.h (module 'core'): ns3::CallbackBase::CallbackBase() [constructor]
cls.add_constructor([])
@@ -1641,21 +1757,21 @@
def register_Ns3ChannelList_methods(root_module, cls):
## channel-list.h (module 'network'): ns3::ChannelList::ChannelList() [constructor]
cls.add_constructor([])
- ## channel-list.h (module 'network'): ns3::ChannelList::ChannelList(ns3::ChannelList const & arg0) [copy constructor]
+ ## channel-list.h (module 'network'): ns3::ChannelList::ChannelList(ns3::ChannelList const & arg0) [constructor]
cls.add_constructor([param('ns3::ChannelList const &', 'arg0')])
## channel-list.h (module 'network'): static uint32_t ns3::ChannelList::Add(ns3::Ptr channel) [member function]
cls.add_method('Add',
'uint32_t',
[param('ns3::Ptr< ns3::Channel >', 'channel')],
is_static=True)
- ## channel-list.h (module 'network'): static __gnu_cxx::__normal_iterator*,std::vector, std::allocator > > > ns3::ChannelList::Begin() [member function]
+ ## channel-list.h (module 'network'): static ns3::ChannelList::Iterator ns3::ChannelList::Begin() [member function]
cls.add_method('Begin',
- '__gnu_cxx::__normal_iterator< ns3::Ptr< ns3::Channel > const, std::vector< ns3::Ptr< ns3::Channel > > >',
+ 'ns3::ChannelList::Iterator',
[],
is_static=True)
- ## channel-list.h (module 'network'): static __gnu_cxx::__normal_iterator*,std::vector, std::allocator > > > ns3::ChannelList::End() [member function]
+ ## channel-list.h (module 'network'): static ns3::ChannelList::Iterator ns3::ChannelList::End() [member function]
cls.add_method('End',
- '__gnu_cxx::__normal_iterator< ns3::Ptr< ns3::Channel > const, std::vector< ns3::Ptr< ns3::Channel > > >',
+ 'ns3::ChannelList::Iterator',
[],
is_static=True)
## channel-list.h (module 'network'): static ns3::Ptr ns3::ChannelList::GetChannel(uint32_t n) [member function]
@@ -1673,7 +1789,7 @@
def register_Ns3DataOutputCallback_methods(root_module, cls):
## data-output-interface.h (module 'stats'): ns3::DataOutputCallback::DataOutputCallback() [constructor]
cls.add_constructor([])
- ## data-output-interface.h (module 'stats'): ns3::DataOutputCallback::DataOutputCallback(ns3::DataOutputCallback const & arg0) [copy constructor]
+ ## data-output-interface.h (module 'stats'): ns3::DataOutputCallback::DataOutputCallback(ns3::DataOutputCallback const & arg0) [constructor]
cls.add_constructor([param('ns3::DataOutputCallback const &', 'arg0')])
## data-output-interface.h (module 'stats'): void ns3::DataOutputCallback::OutputSingleton(std::string key, std::string variable, int val) [member function]
cls.add_method('OutputSingleton',
@@ -1715,7 +1831,7 @@
cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('>')
cls.add_binary_comparison_operator('>=')
- ## data-rate.h (module 'network'): ns3::DataRate::DataRate(ns3::DataRate const & arg0) [copy constructor]
+ ## data-rate.h (module 'network'): ns3::DataRate::DataRate(ns3::DataRate const & arg0) [constructor]
cls.add_constructor([param('ns3::DataRate const &', 'arg0')])
## data-rate.h (module 'network'): ns3::DataRate::DataRate() [constructor]
cls.add_constructor([])
@@ -1745,8 +1861,188 @@
is_const=True)
return
+def register_Ns3DefaultDeleter__Ns3AttributeAccessor_methods(root_module, cls):
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter() [constructor]
+ cls.add_constructor([])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter(ns3::DefaultDeleter const & arg0) [constructor]
+ cls.add_constructor([param('ns3::DefaultDeleter< ns3::AttributeAccessor > const &', 'arg0')])
+ ## default-deleter.h (module 'core'): static void ns3::DefaultDeleter::Delete(ns3::AttributeAccessor * object) [member function]
+ cls.add_method('Delete',
+ 'void',
+ [param('ns3::AttributeAccessor *', 'object')],
+ is_static=True)
+ return
+
+def register_Ns3DefaultDeleter__Ns3AttributeChecker_methods(root_module, cls):
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter() [constructor]
+ cls.add_constructor([])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter(ns3::DefaultDeleter const & arg0) [constructor]
+ cls.add_constructor([param('ns3::DefaultDeleter< ns3::AttributeChecker > const &', 'arg0')])
+ ## default-deleter.h (module 'core'): static void ns3::DefaultDeleter::Delete(ns3::AttributeChecker * object) [member function]
+ cls.add_method('Delete',
+ 'void',
+ [param('ns3::AttributeChecker *', 'object')],
+ is_static=True)
+ return
+
+def register_Ns3DefaultDeleter__Ns3AttributeValue_methods(root_module, cls):
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter() [constructor]
+ cls.add_constructor([])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter(ns3::DefaultDeleter const & arg0) [constructor]
+ cls.add_constructor([param('ns3::DefaultDeleter< ns3::AttributeValue > const &', 'arg0')])
+ ## default-deleter.h (module 'core'): static void ns3::DefaultDeleter::Delete(ns3::AttributeValue * object) [member function]
+ cls.add_method('Delete',
+ 'void',
+ [param('ns3::AttributeValue *', 'object')],
+ is_static=True)
+ return
+
+def register_Ns3DefaultDeleter__Ns3CallbackImplBase_methods(root_module, cls):
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter() [constructor]
+ cls.add_constructor([])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter(ns3::DefaultDeleter const & arg0) [constructor]
+ cls.add_constructor([param('ns3::DefaultDeleter< ns3::CallbackImplBase > const &', 'arg0')])
+ ## default-deleter.h (module 'core'): static void ns3::DefaultDeleter::Delete(ns3::CallbackImplBase * object) [member function]
+ cls.add_method('Delete',
+ 'void',
+ [param('ns3::CallbackImplBase *', 'object')],
+ is_static=True)
+ return
+
+def register_Ns3DefaultDeleter__Ns3EventImpl_methods(root_module, cls):
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter() [constructor]
+ cls.add_constructor([])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter(ns3::DefaultDeleter const & arg0) [constructor]
+ cls.add_constructor([param('ns3::DefaultDeleter< ns3::EventImpl > const &', 'arg0')])
+ ## default-deleter.h (module 'core'): static void ns3::DefaultDeleter::Delete(ns3::EventImpl * object) [member function]
+ cls.add_method('Delete',
+ 'void',
+ [param('ns3::EventImpl *', 'object')],
+ is_static=True)
+ return
+
+def register_Ns3DefaultDeleter__Ns3HashImplementation_methods(root_module, cls):
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter() [constructor]
+ cls.add_constructor([])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter(ns3::DefaultDeleter const & arg0) [constructor]
+ cls.add_constructor([param('ns3::DefaultDeleter< ns3::Hash::Implementation > const &', 'arg0')])
+ ## default-deleter.h (module 'core'): static void ns3::DefaultDeleter::Delete(ns3::Hash::Implementation * object) [member function]
+ cls.add_method('Delete',
+ 'void',
+ [param('ns3::Hash::Implementation *', 'object')],
+ is_static=True)
+ return
+
+def register_Ns3DefaultDeleter__Ns3NetDeviceQueue_methods(root_module, cls):
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter() [constructor]
+ cls.add_constructor([])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter(ns3::DefaultDeleter const & arg0) [constructor]
+ cls.add_constructor([param('ns3::DefaultDeleter< ns3::NetDeviceQueue > const &', 'arg0')])
+ ## default-deleter.h (module 'core'): static void ns3::DefaultDeleter::Delete(ns3::NetDeviceQueue * object) [member function]
+ cls.add_method('Delete',
+ 'void',
+ [param('ns3::NetDeviceQueue *', 'object')],
+ is_static=True)
+ return
+
+def register_Ns3DefaultDeleter__Ns3NixVector_methods(root_module, cls):
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter() [constructor]
+ cls.add_constructor([])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter(ns3::DefaultDeleter const & arg0) [constructor]
+ cls.add_constructor([param('ns3::DefaultDeleter< ns3::NixVector > const &', 'arg0')])
+ ## default-deleter.h (module 'core'): static void ns3::DefaultDeleter::Delete(ns3::NixVector * object) [member function]
+ cls.add_method('Delete',
+ 'void',
+ [param('ns3::NixVector *', 'object')],
+ is_static=True)
+ return
+
+def register_Ns3DefaultDeleter__Ns3OutputStreamWrapper_methods(root_module, cls):
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter() [constructor]
+ cls.add_constructor([])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter(ns3::DefaultDeleter const & arg0) [constructor]
+ cls.add_constructor([param('ns3::DefaultDeleter< ns3::OutputStreamWrapper > const &', 'arg0')])
+ ## default-deleter.h (module 'core'): static void ns3::DefaultDeleter::Delete(ns3::OutputStreamWrapper * object) [member function]
+ cls.add_method('Delete',
+ 'void',
+ [param('ns3::OutputStreamWrapper *', 'object')],
+ is_static=True)
+ return
+
+def register_Ns3DefaultDeleter__Ns3Packet_methods(root_module, cls):
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter() [constructor]
+ cls.add_constructor([])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter(ns3::DefaultDeleter const & arg0) [constructor]
+ cls.add_constructor([param('ns3::DefaultDeleter< ns3::Packet > const &', 'arg0')])
+ ## default-deleter.h (module 'core'): static void ns3::DefaultDeleter::Delete(ns3::Packet * object) [member function]
+ cls.add_method('Delete',
+ 'void',
+ [param('ns3::Packet *', 'object')],
+ is_static=True)
+ return
+
+def register_Ns3DefaultDeleter__Ns3PbbAddressBlock_methods(root_module, cls):
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter() [constructor]
+ cls.add_constructor([])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter(ns3::DefaultDeleter const & arg0) [constructor]
+ cls.add_constructor([param('ns3::DefaultDeleter< ns3::PbbAddressBlock > const &', 'arg0')])
+ ## default-deleter.h (module 'core'): static void ns3::DefaultDeleter::Delete(ns3::PbbAddressBlock * object) [member function]
+ cls.add_method('Delete',
+ 'void',
+ [param('ns3::PbbAddressBlock *', 'object')],
+ is_static=True)
+ return
+
+def register_Ns3DefaultDeleter__Ns3PbbMessage_methods(root_module, cls):
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter() [constructor]
+ cls.add_constructor([])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter(ns3::DefaultDeleter const & arg0) [constructor]
+ cls.add_constructor([param('ns3::DefaultDeleter< ns3::PbbMessage > const &', 'arg0')])
+ ## default-deleter.h (module 'core'): static void ns3::DefaultDeleter::Delete(ns3::PbbMessage * object) [member function]
+ cls.add_method('Delete',
+ 'void',
+ [param('ns3::PbbMessage *', 'object')],
+ is_static=True)
+ return
+
+def register_Ns3DefaultDeleter__Ns3PbbTlv_methods(root_module, cls):
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter() [constructor]
+ cls.add_constructor([])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter(ns3::DefaultDeleter const & arg0) [constructor]
+ cls.add_constructor([param('ns3::DefaultDeleter< ns3::PbbTlv > const &', 'arg0')])
+ ## default-deleter.h (module 'core'): static void ns3::DefaultDeleter::Delete(ns3::PbbTlv * object) [member function]
+ cls.add_method('Delete',
+ 'void',
+ [param('ns3::PbbTlv *', 'object')],
+ is_static=True)
+ return
+
+def register_Ns3DefaultDeleter__Ns3QueueItem_methods(root_module, cls):
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter() [constructor]
+ cls.add_constructor([])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter(ns3::DefaultDeleter const & arg0) [constructor]
+ cls.add_constructor([param('ns3::DefaultDeleter< ns3::QueueItem > const &', 'arg0')])
+ ## default-deleter.h (module 'core'): static void ns3::DefaultDeleter::Delete(ns3::QueueItem * object) [member function]
+ cls.add_method('Delete',
+ 'void',
+ [param('ns3::QueueItem *', 'object')],
+ is_static=True)
+ return
+
+def register_Ns3DefaultDeleter__Ns3TraceSourceAccessor_methods(root_module, cls):
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter() [constructor]
+ cls.add_constructor([])
+ ## default-deleter.h (module 'core'): ns3::DefaultDeleter::DefaultDeleter(ns3::DefaultDeleter const & arg0) [constructor]
+ cls.add_constructor([param('ns3::DefaultDeleter< ns3::TraceSourceAccessor > const &', 'arg0')])
+ ## default-deleter.h (module 'core'): static void ns3::DefaultDeleter::Delete(ns3::TraceSourceAccessor * object) [member function]
+ cls.add_method('Delete',
+ 'void',
+ [param('ns3::TraceSourceAccessor *', 'object')],
+ is_static=True)
+ return
+
def register_Ns3DelayJitterEstimation_methods(root_module, cls):
- ## delay-jitter-estimation.h (module 'network'): ns3::DelayJitterEstimation::DelayJitterEstimation(ns3::DelayJitterEstimation const & arg0) [copy constructor]
+ ## delay-jitter-estimation.h (module 'network'): ns3::DelayJitterEstimation::DelayJitterEstimation(ns3::DelayJitterEstimation const & arg0) [constructor]
cls.add_constructor([param('ns3::DelayJitterEstimation const &', 'arg0')])
## delay-jitter-estimation.h (module 'network'): ns3::DelayJitterEstimation::DelayJitterEstimation() [constructor]
cls.add_constructor([])
@@ -1760,21 +2056,22 @@
'uint64_t',
[],
is_const=True)
- ## delay-jitter-estimation.h (module 'network'): static void ns3::DelayJitterEstimation::PrepareTx(ns3::Ptr packet) [member function]
+ ## delay-jitter-estimation.h (module 'network'): static void ns3::DelayJitterEstimation::PrepareTx(ns3::Ptr packet) [member function]
cls.add_method('PrepareTx',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet')],
is_static=True)
- ## delay-jitter-estimation.h (module 'network'): void ns3::DelayJitterEstimation::RecordRx(ns3::Ptr packet) [member function]
+ ## delay-jitter-estimation.h (module 'network'): void ns3::DelayJitterEstimation::RecordRx(ns3::Ptr packet) [member function]
cls.add_method('RecordRx',
'void',
[param('ns3::Ptr< ns3::Packet const >', 'packet')])
return
def register_Ns3EventId_methods(root_module, cls):
- cls.add_binary_comparison_operator('!=')
cls.add_binary_comparison_operator('==')
- ## event-id.h (module 'core'): ns3::EventId::EventId(ns3::EventId const & arg0) [copy constructor]
+ cls.add_binary_comparison_operator('!=')
+ cls.add_binary_comparison_operator('<')
+ ## event-id.h (module 'core'): ns3::EventId::EventId(ns3::EventId const & arg0) [constructor]
cls.add_constructor([param('ns3::EventId const &', 'arg0')])
## event-id.h (module 'core'): ns3::EventId::EventId() [constructor]
cls.add_constructor([])
@@ -1817,7 +2114,7 @@
return
def register_Ns3Hasher_methods(root_module, cls):
- ## hash.h (module 'core'): ns3::Hasher::Hasher(ns3::Hasher const & arg0) [copy constructor]
+ ## hash.h (module 'core'): ns3::Hasher::Hasher(ns3::Hasher const & arg0) [constructor]
cls.add_constructor([param('ns3::Hasher const &', 'arg0')])
## hash.h (module 'core'): ns3::Hasher::Hasher() [constructor]
cls.add_constructor([])
@@ -1846,7 +2143,7 @@
return
def register_Ns3Inet6SocketAddress_methods(root_module, cls):
- ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(ns3::Inet6SocketAddress const & arg0) [copy constructor]
+ ## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(ns3::Inet6SocketAddress const & arg0) [constructor]
cls.add_constructor([param('ns3::Inet6SocketAddress const &', 'arg0')])
## inet6-socket-address.h (module 'network'): ns3::Inet6SocketAddress::Inet6SocketAddress(ns3::Ipv6Address ipv6, uint16_t port) [constructor]
cls.add_constructor([param('ns3::Ipv6Address', 'ipv6'), param('uint16_t', 'port')])
@@ -1889,7 +2186,7 @@
return
def register_Ns3InetSocketAddress_methods(root_module, cls):
- ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(ns3::InetSocketAddress const & arg0) [copy constructor]
+ ## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(ns3::InetSocketAddress const & arg0) [constructor]
cls.add_constructor([param('ns3::InetSocketAddress const &', 'arg0')])
## inet-socket-address.h (module 'network'): ns3::InetSocketAddress::InetSocketAddress(ns3::Ipv4Address ipv4, uint16_t port) [constructor]
cls.add_constructor([param('ns3::Ipv4Address', 'ipv4'), param('uint16_t', 'port')])
@@ -1941,11 +2238,11 @@
return
def register_Ns3Ipv4Address_methods(root_module, cls):
- cls.add_binary_comparison_operator('!=')
- cls.add_binary_comparison_operator('<')
cls.add_output_stream_operator()
cls.add_binary_comparison_operator('==')
- ## ipv4-address.h (module 'network'): ns3::Ipv4Address::Ipv4Address(ns3::Ipv4Address const & arg0) [copy constructor]
+ cls.add_binary_comparison_operator('!=')
+ cls.add_binary_comparison_operator('<')
+ ## ipv4-address.h (module 'network'): ns3::Ipv4Address::Ipv4Address(ns3::Ipv4Address const & arg0) [constructor]
cls.add_constructor([param('ns3::Ipv4Address const &', 'arg0')])
## ipv4-address.h (module 'network'): ns3::Ipv4Address::Ipv4Address() [constructor]
cls.add_constructor([])
@@ -2059,10 +2356,10 @@
return
def register_Ns3Ipv4Mask_methods(root_module, cls):
- cls.add_binary_comparison_operator('!=')
cls.add_output_stream_operator()
cls.add_binary_comparison_operator('==')
- ## ipv4-address.h (module 'network'): ns3::Ipv4Mask::Ipv4Mask(ns3::Ipv4Mask const & arg0) [copy constructor]
+ cls.add_binary_comparison_operator('!=')
+ ## ipv4-address.h (module 'network'): ns3::Ipv4Mask::Ipv4Mask(ns3::Ipv4Mask const & arg0) [constructor]
cls.add_constructor([param('ns3::Ipv4Mask const &', 'arg0')])
## ipv4-address.h (module 'network'): ns3::Ipv4Mask::Ipv4Mask() [constructor]
cls.add_constructor([])
@@ -2122,17 +2419,17 @@
return
def register_Ns3Ipv6Address_methods(root_module, cls):
- cls.add_binary_comparison_operator('!=')
- cls.add_binary_comparison_operator('<')
cls.add_output_stream_operator()
cls.add_binary_comparison_operator('==')
+ cls.add_binary_comparison_operator('!=')
+ cls.add_binary_comparison_operator('<')
## ipv6-address.h (module 'network'): ns3::Ipv6Address::Ipv6Address() [constructor]
cls.add_constructor([])
## ipv6-address.h (module 'network'): ns3::Ipv6Address::Ipv6Address(char const * address) [constructor]
cls.add_constructor([param('char const *', 'address')])
## ipv6-address.h (module 'network'): ns3::Ipv6Address::Ipv6Address(uint8_t * address) [constructor]
cls.add_constructor([param('uint8_t *', 'address')])
- ## ipv6-address.h (module 'network'): ns3::Ipv6Address::Ipv6Address(ns3::Ipv6Address const & addr) [copy constructor]
+ ## ipv6-address.h (module 'network'): ns3::Ipv6Address::Ipv6Address(ns3::Ipv6Address const & addr) [constructor]
cls.add_constructor([param('ns3::Ipv6Address const &', 'addr')])
## ipv6-address.h (module 'network'): ns3::Ipv6Address::Ipv6Address(ns3::Ipv6Address const * addr) [constructor]
cls.add_constructor([param('ns3::Ipv6Address const *', 'addr')])
@@ -2275,6 +2572,11 @@
'ns3::Ipv6Address',
[param('ns3::Mac64Address', 'addr'), param('ns3::Ipv6Address', 'prefix')],
is_static=True)
+ ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredAddress(ns3::Mac8Address addr, ns3::Ipv6Address prefix) [member function]
+ cls.add_method('MakeAutoconfiguredAddress',
+ 'ns3::Ipv6Address',
+ [param('ns3::Mac8Address', 'addr'), param('ns3::Ipv6Address', 'prefix')],
+ is_static=True)
## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredLinkLocalAddress(ns3::Mac16Address mac) [member function]
cls.add_method('MakeAutoconfiguredLinkLocalAddress',
'ns3::Ipv6Address',
@@ -2290,6 +2592,11 @@
'ns3::Ipv6Address',
[param('ns3::Mac64Address', 'mac')],
is_static=True)
+ ## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeAutoconfiguredLinkLocalAddress(ns3::Mac8Address mac) [member function]
+ cls.add_method('MakeAutoconfiguredLinkLocalAddress',
+ 'ns3::Ipv6Address',
+ [param('ns3::Mac8Address', 'mac')],
+ is_static=True)
## ipv6-address.h (module 'network'): static ns3::Ipv6Address ns3::Ipv6Address::MakeIpv4MappedAddress(ns3::Ipv4Address addr) [member function]
cls.add_method('MakeIpv4MappedAddress',
'ns3::Ipv6Address',
@@ -2321,9 +2628,9 @@
return
def register_Ns3Ipv6Prefix_methods(root_module, cls):
- cls.add_binary_comparison_operator('!=')
cls.add_output_stream_operator()
cls.add_binary_comparison_operator('==')
+ cls.add_binary_comparison_operator('!=')
## ipv6-address.h (module 'network'): ns3::Ipv6Prefix::Ipv6Prefix() [constructor]
cls.add_constructor([])
## ipv6-address.h (module 'network'): ns3::Ipv6Prefix::Ipv6Prefix(uint8_t * prefix) [constructor]
@@ -2332,7 +2639,7 @@
cls.add_constructor([param('char const *', 'prefix')])
## ipv6-address.h (module 'network'): ns3::Ipv6Prefix::Ipv6Prefix(uint8_t prefix) [constructor]
cls.add_constructor([param('uint8_t', 'prefix')])
- ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix::Ipv6Prefix(ns3::Ipv6Prefix const & prefix) [copy constructor]
+ ## ipv6-address.h (module 'network'): ns3::Ipv6Prefix::Ipv6Prefix(ns3::Ipv6Prefix const & prefix) [constructor]
cls.add_constructor([param('ns3::Ipv6Prefix const &', 'prefix')])
## ipv6-address.h (module 'network'): ns3::Ipv6Prefix::Ipv6Prefix(ns3::Ipv6Prefix const * prefix) [constructor]
cls.add_constructor([param('ns3::Ipv6Prefix const *', 'prefix')])
@@ -2379,10 +2686,10 @@
return
def register_Ns3LogComponent_methods(root_module, cls):
- ## log.h (module 'core'): ns3::LogComponent::LogComponent(ns3::LogComponent const & arg0) [copy constructor]
+ ## log.h (module 'core'): ns3::LogComponent::LogComponent(ns3::LogComponent const & arg0) [constructor]
cls.add_constructor([param('ns3::LogComponent const &', 'arg0')])
- ## log.h (module 'core'): ns3::LogComponent::LogComponent(std::string const & name, std::string const & file, ns3::LogLevel const mask=::ns3::LOG_NONE) [constructor]
- cls.add_constructor([param('std::string const &', 'name'), param('std::string const &', 'file'), param('ns3::LogLevel const', 'mask', default_value='::ns3::LOG_NONE')])
+ ## log.h (module 'core'): ns3::LogComponent::LogComponent(std::string const & name, std::string const & file, ns3::LogLevel const mask=::ns3::LogLevel::LOG_NONE) [constructor]
+ cls.add_constructor([param('std::string const &', 'name'), param('std::string const &', 'file'), param('ns3::LogLevel const', 'mask', default_value='::ns3::LogLevel::LOG_NONE')])
## log.h (module 'core'): void ns3::LogComponent::Disable(ns3::LogLevel const level) [member function]
cls.add_method('Disable',
'void',
@@ -2396,9 +2703,9 @@
'std::string',
[],
is_const=True)
- ## log.h (module 'core'): static std::map, std::allocator >,ns3::LogComponent*,std::less, std::allocator > >,std::allocator, std::allocator >, ns3::LogComponent*> > > * ns3::LogComponent::GetComponentList() [member function]
+ ## log.h (module 'core'): static ns3::LogComponent::ComponentList * ns3::LogComponent::GetComponentList() [member function]
cls.add_method('GetComponentList',
- 'std::map< std::string, ns3::LogComponent * > *',
+ 'ns3::LogComponent::ComponentList *',
[],
is_static=True)
## log.h (module 'core'): static std::string ns3::LogComponent::GetLevelLabel(ns3::LogLevel const level) [member function]
@@ -2428,11 +2735,11 @@
return
def register_Ns3Mac16Address_methods(root_module, cls):
+ cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('!=')
cls.add_binary_comparison_operator('<')
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('==')
- ## mac16-address.h (module 'network'): ns3::Mac16Address::Mac16Address(ns3::Mac16Address const & arg0) [copy constructor]
+ ## mac16-address.h (module 'network'): ns3::Mac16Address::Mac16Address(ns3::Mac16Address const & arg0) [constructor]
cls.add_constructor([param('ns3::Mac16Address const &', 'arg0')])
## mac16-address.h (module 'network'): ns3::Mac16Address::Mac16Address() [constructor]
cls.add_constructor([])
@@ -2465,11 +2772,11 @@
return
def register_Ns3Mac48Address_methods(root_module, cls):
+ cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('!=')
cls.add_binary_comparison_operator('<')
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('==')
- ## mac48-address.h (module 'network'): ns3::Mac48Address::Mac48Address(ns3::Mac48Address const & arg0) [copy constructor]
+ ## mac48-address.h (module 'network'): ns3::Mac48Address::Mac48Address(ns3::Mac48Address const & arg0) [constructor]
cls.add_constructor([param('ns3::Mac48Address const &', 'arg0')])
## mac48-address.h (module 'network'): ns3::Mac48Address::Mac48Address() [constructor]
cls.add_constructor([])
@@ -2537,11 +2844,11 @@
return
def register_Ns3Mac64Address_methods(root_module, cls):
+ cls.add_binary_comparison_operator('==')
cls.add_binary_comparison_operator('!=')
cls.add_binary_comparison_operator('<')
cls.add_output_stream_operator()
- cls.add_binary_comparison_operator('==')
- ## mac64-address.h (module 'network'): ns3::Mac64Address::Mac64Address(ns3::Mac64Address const & arg0) [copy constructor]
+ ## mac64-address.h (module 'network'): ns3::Mac64Address::Mac64Address(ns3::Mac64Address const & arg0) [constructor]
cls.add_constructor([param('ns3::Mac64Address const &', 'arg0')])
## mac64-address.h (module 'network'): ns3::Mac64Address::Mac64Address() [constructor]
cls.add_constructor([])
@@ -2573,8 +2880,50 @@
is_static=True)
return
+def register_Ns3Mac8Address_methods(root_module, cls):
+ cls.add_binary_comparison_operator('<')
+ cls.add_binary_comparison_operator('==')
+ cls.add_binary_comparison_operator('!=')
+ cls.add_output_stream_operator()
+ ## mac8-address.h (module 'network'): ns3::Mac8Address::Mac8Address(ns3::Mac8Address const & arg0) [constructor]
+ cls.add_constructor([param('ns3::Mac8Address const &', 'arg0')])
+ ## mac8-address.h (module 'network'): ns3::Mac8Address::Mac8Address() [constructor]
+ cls.add_constructor([])
+ ## mac8-address.h (module 'network'): ns3::Mac8Address::Mac8Address(uint8_t addr) [constructor]
+ cls.add_constructor([param('uint8_t', 'addr')])
+ ## mac8-address.h (module 'network'): static ns3::Mac8Address ns3::Mac8Address::Allocate() [member function]
+ cls.add_method('Allocate',
+ 'ns3::Mac8Address',
+ [],
+ is_static=True)
+ ## mac8-address.h (module 'network'): static ns3::Mac8Address ns3::Mac8Address::ConvertFrom(ns3::Address const & address) [member function]
+ cls.add_method('ConvertFrom',
+ 'ns3::Mac8Address',
+ [param('ns3::Address const &', 'address')],
+ is_static=True)
+ ## mac8-address.h (module 'network'): void ns3::Mac8Address::CopyFrom(uint8_t const * pBuffer) [member function]
+ cls.add_method('CopyFrom',
+ 'void',
+ [param('uint8_t const *', 'pBuffer')])
+ ## mac8-address.h (module 'network'): void ns3::Mac8Address::CopyTo(uint8_t * pBuffer) const [member function]
+ cls.add_method('CopyTo',
+ 'void',
+ [param('uint8_t *', 'pBuffer')],
+ is_const=True)
+ ## mac8-address.h (module 'network'): static ns3::Mac8Address ns3::Mac8Address::GetBroadcast() [member function]
+ cls.add_method('GetBroadcast',
+ 'ns3::Mac8Address',
+ [],
+ is_static=True)
+ ## mac8-address.h (module 'network'): static bool ns3::Mac8Address::IsMatchingType(ns3::Address const & address) [member function]
+ cls.add_method('IsMatchingType',
+ 'bool',
+ [param('ns3::Address const &', 'address')],
+ is_static=True)
+ return
+
def register_Ns3NetDeviceContainer_methods(root_module, cls):
- ## net-device-container.h (module 'network'): ns3::NetDeviceContainer::NetDeviceContainer(ns3::NetDeviceContainer const & arg0) [copy constructor]
+ ## net-device-container.h (module 'network'): ns3::NetDeviceContainer::NetDeviceContainer(ns3::NetDeviceContainer const & arg0) [constructor]
cls.add_constructor([param('ns3::NetDeviceContainer const &', 'arg0')])
## net-device-container.h (module 'network'): ns3::NetDeviceContainer::NetDeviceContainer() [constructor]
cls.add_constructor([])
@@ -2596,14 +2945,14 @@
cls.add_method('Add',
'void',
[param('std::string', 'deviceName')])
- ## net-device-container.h (module 'network'): __gnu_cxx::__normal_iterator*,std::vector, std::allocator > > > ns3::NetDeviceContainer::Begin() const [member function]
+ ## net-device-container.h (module 'network'): ns3::NetDeviceContainer::Iterator ns3::NetDeviceContainer::Begin() const [member function]
cls.add_method('Begin',
- '__gnu_cxx::__normal_iterator< ns3::Ptr< ns3::NetDevice > const, std::vector< ns3::Ptr< ns3::NetDevice > > >',
+ 'ns3::NetDeviceContainer::Iterator',
[],
is_const=True)
- ## net-device-container.h (module 'network'): __gnu_cxx::__normal_iterator