1.1 --- a/CHANGES.html Sat May 30 17:36:50 2009 +0100
1.2 +++ b/CHANGES.html Sat May 30 17:37:38 2009 +0100
1.3 @@ -52,11 +52,94 @@
1.4
1.5 <h2>New API:</h2>
1.6 <ul>
1.7 +<li> <b>attributes for class Ipv4</b>
1.8 +<p> class Ipv4 now contains attributes in ipv4.cc; the first one
1.9 +is called "IpForward" that will enable/disable Ipv4 forwarding.
1.10 +</li>
1.11 </ul>
1.12
1.13 <h2>Changes to existing API:</h2>
1.14 <ul>
1.15
1.16 +<li><b> Routing decoupled from class Ipv4</b>
1.17 +<p> All calls of the form "Ipv4::AddHostRouteTo ()" etc. (i.e. to
1.18 +add static routes, both unicast and multicast) have been moved to a new
1.19 +class Ipv4StaticRouting. In addition, class Ipv4 now holds only
1.20 +one possible routing protocol; the previous way to add routing protocols
1.21 +(by ordered list of priority) has been moved to a new class Ipv4ListRouting.
1.22 +Class Ipv4 has a new minimal routing API (just to set and get the routing
1.23 +protocol):
1.24 +<pre>
1.25 +- virtual void AddRoutingProtocol (Ptr<Ipv4RoutingProtocol> routingProtocol, int16_t priority) = 0;
1.26 ++ virtual void SetRoutingProtocol (Ptr<Ipv4RoutingProtocol> routingProtocol) = 0;
1.27 ++ virtual Ptr<Ipv4RoutingProtocol> GetRoutingProtocol (void) const = 0;
1.28 +</pre>
1.29 +</li>
1.30 +
1.31 +<li><b> class Ipv4RoutingProtocol is refactored</b>
1.32 +<p> The abstract base class Ipv4RoutingProtocol has been refactored to
1.33 +align with corresponding Linux Ipv4 routing architecture, and has been
1.34 +moved from ipv4.h to a new file ipv4-routing-protocol.h. The new
1.35 +methods (RouteOutput () and RouteInput ()) are aligned with Linux
1.36 +ip_route_output() and ip_route_input(). However,
1.37 +the general nature of these calls (synchronous routing lookup for
1.38 +locally originated packets, and an asynchronous, callback-based lookup
1.39 +for forwarded packets) is still the same.
1.40 +<pre>
1.41 +- typedef Callback<void, bool, const Ipv4Route&, Ptr<Packet>, const Ipv4Header&> RouteReplyCallback;
1.42 ++ typedef Callback<void, Ptr<Ipv4Route>, Ptr<const Packet>, const Ipv4Header &> UnicastForwardCallback;
1.43 ++ typedef Callback<void, Ptr<Ipv4MulticastRoute>, Ptr<const Packet>, const Ipv4Header &> MulticastForwardCallback;
1.44 ++ typedef Callback<void, Ptr<const Packet>, const Ipv4Header &, uint32_t > LocalDeliverCallback;
1.45 ++ typedef Callback<void, Ptr<const Packet>, const Ipv4Header &> ErrorCallback;
1.46 +- virtual bool RequestInterface (Ipv4Address destination, uint32_t& interface) = 0;
1.47 ++ virtual Ptr<Ipv4Route> RouteOutput (const Ipv4Header &header, uint32_t oif, Socket::SocketErrno &errno) = 0;
1.48 +- virtual bool RequestRoute (uint32_t interface,
1.49 +- const Ipv4Header &ipHeader,
1.50 +- Ptr<Packet> packet,
1.51 +- RouteReplyCallback routeReply) = 0;
1.52 ++ virtual bool RouteInput (Ptr<const Packet> p, const Ipv4Header &header, Ptr<const NetDevice> idev,
1.53 ++ UnicastForwardCallback ucb, MulticastForwardCallback mcb,
1.54 ++ LocalDeliverCallback lcb, ErrorCallback ecb) = 0;
1.55 +</pre>
1.56 +
1.57 +</li>
1.58 +<li><b> previous class Ipv4Route, Ipv4MulticastRoute renamed; new classes with
1.59 +those same names added</b>
1.60 +<p> The previous class Ipv4Route and Ipv4MulticastRoute are used by
1.61 +Ipv4StaticRouting and Ipv4GlobalRouting to record internal routing table
1.62 +entries, so they were renamed to class Ipv4RoutingTableEntry and
1.63 +Ipv4MulticastRoutingTableEntry, respectively. In their place, new
1.64 +class Ipv4Route and class Ipv4MulticastRoute have been added. These
1.65 +are reference-counted objects that are analogous to Linux struct
1.66 +rtable and struct mfc_cache, respectively, to achieve better compatibility
1.67 +with Linux routing architecture in the future.
1.68 +
1.69 +<li><b> class Ipv4 address-to-interface mapping functions changed</b>
1.70 +<p> There was some general cleanup of functions that involve mappings
1.71 +from Ipv4Address to either NetDevice or Ipv4 interface index.
1.72 +<pre>
1.73 +- virtual uint32_t FindInterfaceForAddr (Ipv4Address addr) const = 0;
1.74 +- virtual uint32_t FindInterfaceForAddr (Ipv4Address addr, Ipv4Mask mask) const = 0;
1.75 ++ virtual int32_t GetInterfaceForAddress (Ipv4Address address) const = 0;
1.76 ++ virtual int32_t GetInterfaceForPrefix (Ipv4Address address, Ipv4Mask mask) const = 0;
1.77 +- virtual int32_t FindInterfaceForDevice(Ptr<NetDevice> nd) const = 0;
1.78 ++ virtual int32_t GetInterfaceForDevice (Ptr<const NetDevice> device) const = 0;
1.79 +- virtual Ipv4Address GetSourceAddress (Ipv4Address destination) const = 0;
1.80 +- virtual bool GetInterfaceForDestination (Ipv4Address dest,
1.81 +- virtual uint32_t GetInterfaceByAddress (Ipv4Address addr, Ipv4Mask mask = Ipv4Mask("255.255.255.255"));
1.82 +</pre>
1.83 +
1.84 +<li><b> class Ipv4 multicast join API deleted</b>
1.85 +<p> The following methods are not really used in present form since IGMP
1.86 +is not being generated, so they have been removed (planned to be replaced
1.87 +by multicast socket-based calls in the future):
1.88 +
1.89 +<pre>
1.90 +- virtual void JoinMulticastGroup (Ipv4Address origin, Ipv4Address group) = 0;
1.91 +- virtual void LeaveMulticastGroup (Ipv4Address origin, Ipv4Address group) = 0;
1.92 +</pre>
1.93 +
1.94 +
1.95 <li><b>Deconflict NetDevice::ifIndex and Ipv4::ifIndex (bug 85).</b>
1.96 <p>All function parameters named "ifIndex" that refer
1.97 to an Ipv4 interface are instead named "interface".
2.1 --- a/RELEASE_NOTES Sat May 30 17:36:50 2009 +0100
2.2 +++ b/RELEASE_NOTES Sat May 30 17:37:38 2009 +0100
2.3 @@ -17,13 +17,21 @@
2.4
2.5 New user-visible features
2.6 -------------------------
2.7 - a) 802.11e EDCA support: Has been added possibilty to manage QoS traffic on wifi stations.
2.8
2.9 - b) 802.11n initial support: Has been added support for A-MSDU frame aggregation feature.
2.10 + a) 802.11 MAC:
2.11 + - EDCA multi-qos-class support (Mirko Banchi)
2.12 + - 802.11n initial support for A-MSDU frame aggregation (Mirko Banchi)
2.13 + - aarf-cd and cara rate control algorithms (Federico Maguolo)
2.14 + b) 802.11 PHY:
2.15 + - 802.11b PHY support (Gary Pei)
2.16 + - Nakagami propagation loss model (Timo Bingmann)
2.17 + c) GammaVariable and ErlangVariable (Timo Bingmann)
2.18
2.19 API changes from ns-3.4
2.20 -----------------------
2.21 -API changes for this release are documented in the file CHANGES.html
2.22 +API changes for this release are documented in the file CHANGES.html. The
2.23 +internal API and composition of the IPv4 stack underwent significant
2.24 +refactoring in this release cycle.
2.25
2.26 Release 3.4
2.27 ===========
3.1 --- a/bindings/python/ns3_module_bridge.py Sat May 30 17:36:50 2009 +0100
3.2 +++ b/bindings/python/ns3_module_bridge.py Sat May 30 17:37:38 2009 +0100
3.3 @@ -1,4 +1,4 @@
3.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
3.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
3.6
3.7 def register_types(module):
3.8 root_module = module.get_root()
3.9 @@ -20,6 +20,12 @@
3.10 register_types_ns3_TimeStepPrecision(nested_module)
3.11
3.12
3.13 + ## Register a nested module for the namespace addressUtils
3.14 +
3.15 + nested_module = module.add_cpp_namespace('addressUtils')
3.16 + register_types_ns3_addressUtils(nested_module)
3.17 +
3.18 +
3.19 ## Register a nested module for the namespace internal
3.20
3.21 nested_module = module.add_cpp_namespace('internal')
3.22 @@ -40,6 +46,10 @@
3.23 root_module = module.get_root()
3.24
3.25
3.26 +def register_types_ns3_addressUtils(module):
3.27 + root_module = module.get_root()
3.28 +
3.29 +
3.30 def register_types_ns3_internal(module):
3.31 root_module = module.get_root()
3.32
3.33 @@ -254,6 +264,7 @@
3.34 module = root_module
3.35 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
3.36 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
3.37 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
3.38 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
3.39 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
3.40 return
3.41 @@ -264,6 +275,9 @@
3.42 def register_functions_ns3_TimeStepPrecision(module, root_module):
3.43 return
3.44
3.45 +def register_functions_ns3_addressUtils(module, root_module):
3.46 + return
3.47 +
3.48 def register_functions_ns3_internal(module, root_module):
3.49 return
3.50
4.1 --- a/bindings/python/ns3_module_common.py Sat May 30 17:36:50 2009 +0100
4.2 +++ b/bindings/python/ns3_module_common.py Sat May 30 17:37:38 2009 +0100
4.3 @@ -1,4 +1,4 @@
4.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
4.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
4.6
4.7 def register_types(module):
4.8 root_module = module.get_root()
4.9 @@ -66,6 +66,12 @@
4.10 register_types_ns3_TimeStepPrecision(nested_module)
4.11
4.12
4.13 + ## Register a nested module for the namespace addressUtils
4.14 +
4.15 + nested_module = module.add_cpp_namespace('addressUtils')
4.16 + register_types_ns3_addressUtils(nested_module)
4.17 +
4.18 +
4.19 ## Register a nested module for the namespace internal
4.20
4.21 nested_module = module.add_cpp_namespace('internal')
4.22 @@ -86,6 +92,10 @@
4.23 root_module = module.get_root()
4.24
4.25
4.26 +def register_types_ns3_addressUtils(module):
4.27 + root_module = module.get_root()
4.28 +
4.29 +
4.30 def register_types_ns3_internal(module):
4.31 root_module = module.get_root()
4.32
4.33 @@ -1115,6 +1125,7 @@
4.34 [])
4.35 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
4.36 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
4.37 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
4.38 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
4.39 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
4.40 return
4.41 @@ -1125,6 +1136,9 @@
4.42 def register_functions_ns3_TimeStepPrecision(module, root_module):
4.43 return
4.44
4.45 +def register_functions_ns3_addressUtils(module, root_module):
4.46 + return
4.47 +
4.48 def register_functions_ns3_internal(module, root_module):
4.49 return
4.50
5.1 --- a/bindings/python/ns3_module_contrib.py Sat May 30 17:36:50 2009 +0100
5.2 +++ b/bindings/python/ns3_module_contrib.py Sat May 30 17:37:38 2009 +0100
5.3 @@ -1,4 +1,4 @@
5.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
5.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
5.6
5.7 def register_types(module):
5.8 root_module = module.get_root()
5.9 @@ -52,6 +52,12 @@
5.10 register_types_ns3_TimeStepPrecision(nested_module)
5.11
5.12
5.13 + ## Register a nested module for the namespace addressUtils
5.14 +
5.15 + nested_module = module.add_cpp_namespace('addressUtils')
5.16 + register_types_ns3_addressUtils(nested_module)
5.17 +
5.18 +
5.19 ## Register a nested module for the namespace internal
5.20
5.21 nested_module = module.add_cpp_namespace('internal')
5.22 @@ -72,6 +78,10 @@
5.23 root_module = module.get_root()
5.24
5.25
5.26 +def register_types_ns3_addressUtils(module):
5.27 + root_module = module.get_root()
5.28 +
5.29 +
5.30 def register_types_ns3_internal(module):
5.31 root_module = module.get_root()
5.32
5.33 @@ -470,6 +480,7 @@
5.34 module = root_module
5.35 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
5.36 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
5.37 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
5.38 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
5.39 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
5.40 return
5.41 @@ -480,6 +491,9 @@
5.42 def register_functions_ns3_TimeStepPrecision(module, root_module):
5.43 return
5.44
5.45 +def register_functions_ns3_addressUtils(module, root_module):
5.46 + return
5.47 +
5.48 def register_functions_ns3_internal(module, root_module):
5.49 return
5.50
6.1 --- a/bindings/python/ns3_module_core.py Sat May 30 17:36:50 2009 +0100
6.2 +++ b/bindings/python/ns3_module_core.py Sat May 30 17:37:38 2009 +0100
6.3 @@ -1,4 +1,4 @@
6.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
6.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
6.6
6.7 def register_types(module):
6.8 root_module = module.get_root()
6.9 @@ -186,6 +186,12 @@
6.10 register_types_ns3_TimeStepPrecision(nested_module)
6.11
6.12
6.13 + ## Register a nested module for the namespace addressUtils
6.14 +
6.15 + nested_module = module.add_cpp_namespace('addressUtils')
6.16 + register_types_ns3_addressUtils(nested_module)
6.17 +
6.18 +
6.19 ## Register a nested module for the namespace internal
6.20
6.21 nested_module = module.add_cpp_namespace('internal')
6.22 @@ -209,6 +215,10 @@
6.23 root_module = module.get_root()
6.24
6.25
6.26 +def register_types_ns3_addressUtils(module):
6.27 + root_module = module.get_root()
6.28 +
6.29 +
6.30 def register_types_ns3_internal(module):
6.31 root_module = module.get_root()
6.32
6.33 @@ -1641,6 +1651,11 @@
6.34 'ns3::Object::AggregateIterator',
6.35 [],
6.36 is_const=True)
6.37 + ## object.h: void ns3::Object::NotifyNewAggregate() [member function]
6.38 + cls.add_method('NotifyNewAggregate',
6.39 + 'void',
6.40 + [],
6.41 + visibility='protected', is_virtual=True)
6.42 ## object.h: void ns3::Object::DoDispose() [member function]
6.43 cls.add_method('DoDispose',
6.44 'void',
6.45 @@ -2222,6 +2237,7 @@
6.46 template_parameters=['unsigned char'])
6.47 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
6.48 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
6.49 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
6.50 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
6.51 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
6.52 return
6.53 @@ -2288,6 +2304,9 @@
6.54 def register_functions_ns3_TimeStepPrecision(module, root_module):
6.55 return
6.56
6.57 +def register_functions_ns3_addressUtils(module, root_module):
6.58 + return
6.59 +
6.60 def register_functions_ns3_internal(module, root_module):
6.61 ## double.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::internal::MakeDoubleChecker(double min, double max, std::string name) [free function]
6.62 module.add_function('MakeDoubleChecker',
7.1 --- a/bindings/python/ns3_module_csma.py Sat May 30 17:36:50 2009 +0100
7.2 +++ b/bindings/python/ns3_module_csma.py Sat May 30 17:37:38 2009 +0100
7.3 @@ -1,4 +1,4 @@
7.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
7.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
7.6
7.7 def register_types(module):
7.8 root_module = module.get_root()
7.9 @@ -28,6 +28,12 @@
7.10 register_types_ns3_TimeStepPrecision(nested_module)
7.11
7.12
7.13 + ## Register a nested module for the namespace addressUtils
7.14 +
7.15 + nested_module = module.add_cpp_namespace('addressUtils')
7.16 + register_types_ns3_addressUtils(nested_module)
7.17 +
7.18 +
7.19 ## Register a nested module for the namespace internal
7.20
7.21 nested_module = module.add_cpp_namespace('internal')
7.22 @@ -48,6 +54,10 @@
7.23 root_module = module.get_root()
7.24
7.25
7.26 +def register_types_ns3_addressUtils(module):
7.27 + root_module = module.get_root()
7.28 +
7.29 +
7.30 def register_types_ns3_internal(module):
7.31 root_module = module.get_root()
7.32
7.33 @@ -414,6 +424,7 @@
7.34 module = root_module
7.35 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
7.36 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
7.37 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
7.38 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
7.39 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
7.40 return
7.41 @@ -424,6 +435,9 @@
7.42 def register_functions_ns3_TimeStepPrecision(module, root_module):
7.43 return
7.44
7.45 +def register_functions_ns3_addressUtils(module, root_module):
7.46 + return
7.47 +
7.48 def register_functions_ns3_internal(module, root_module):
7.49 return
7.50
8.1 --- a/bindings/python/ns3_module_emu.py Sat May 30 17:36:50 2009 +0100
8.2 +++ b/bindings/python/ns3_module_emu.py Sat May 30 17:37:38 2009 +0100
8.3 @@ -1,4 +1,4 @@
8.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
8.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
8.6
8.7 def register_types(module):
8.8 root_module = module.get_root()
8.9 @@ -18,6 +18,12 @@
8.10 register_types_ns3_TimeStepPrecision(nested_module)
8.11
8.12
8.13 + ## Register a nested module for the namespace addressUtils
8.14 +
8.15 + nested_module = module.add_cpp_namespace('addressUtils')
8.16 + register_types_ns3_addressUtils(nested_module)
8.17 +
8.18 +
8.19 ## Register a nested module for the namespace internal
8.20
8.21 nested_module = module.add_cpp_namespace('internal')
8.22 @@ -38,6 +44,10 @@
8.23 root_module = module.get_root()
8.24
8.25
8.26 +def register_types_ns3_addressUtils(module):
8.27 + root_module = module.get_root()
8.28 +
8.29 +
8.30 def register_types_ns3_internal(module):
8.31 root_module = module.get_root()
8.32
8.33 @@ -206,6 +216,7 @@
8.34 module = root_module
8.35 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
8.36 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
8.37 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
8.38 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
8.39 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
8.40 return
8.41 @@ -216,6 +227,9 @@
8.42 def register_functions_ns3_TimeStepPrecision(module, root_module):
8.43 return
8.44
8.45 +def register_functions_ns3_addressUtils(module, root_module):
8.46 + return
8.47 +
8.48 def register_functions_ns3_internal(module, root_module):
8.49 return
8.50
9.1 --- a/bindings/python/ns3_module_global_routing.py Sat May 30 17:36:50 2009 +0100
9.2 +++ b/bindings/python/ns3_module_global_routing.py Sat May 30 17:37:38 2009 +0100
9.3 @@ -1,4 +1,4 @@
9.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
9.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
9.6
9.7 def register_types(module):
9.8 root_module = module.get_root()
9.9 @@ -30,6 +30,12 @@
9.10 register_types_ns3_TimeStepPrecision(nested_module)
9.11
9.12
9.13 + ## Register a nested module for the namespace addressUtils
9.14 +
9.15 + nested_module = module.add_cpp_namespace('addressUtils')
9.16 + register_types_ns3_addressUtils(nested_module)
9.17 +
9.18 +
9.19 ## Register a nested module for the namespace internal
9.20
9.21 nested_module = module.add_cpp_namespace('internal')
9.22 @@ -50,6 +56,10 @@
9.23 root_module = module.get_root()
9.24
9.25
9.26 +def register_types_ns3_addressUtils(module):
9.27 + root_module = module.get_root()
9.28 +
9.29 +
9.30 def register_types_ns3_internal(module):
9.31 root_module = module.get_root()
9.32
9.33 @@ -287,6 +297,7 @@
9.34 module = root_module
9.35 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
9.36 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
9.37 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
9.38 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
9.39 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
9.40 return
9.41 @@ -297,6 +308,9 @@
9.42 def register_functions_ns3_TimeStepPrecision(module, root_module):
9.43 return
9.44
9.45 +def register_functions_ns3_addressUtils(module, root_module):
9.46 + return
9.47 +
9.48 def register_functions_ns3_internal(module, root_module):
9.49 return
9.50
10.1 --- a/bindings/python/ns3_module_helper.py Sat May 30 17:36:50 2009 +0100
10.2 +++ b/bindings/python/ns3_module_helper.py Sat May 30 17:37:38 2009 +0100
10.3 @@ -1,4 +1,4 @@
10.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
10.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
10.6
10.7 def register_types(module):
10.8 root_module = module.get_root()
10.9 @@ -17,6 +17,8 @@
10.10 module.add_class('Ipv4AddressHelper', allow_subclassing=False)
10.11 ## ipv4-interface-container.h: ns3::Ipv4InterfaceContainer [class]
10.12 module.add_class('Ipv4InterfaceContainer')
10.13 + ## ipv4-static-routing-helper.h: ns3::Ipv4StaticRoutingHelper [class]
10.14 + module.add_class('Ipv4StaticRoutingHelper', allow_subclassing=False)
10.15 ## mobility-helper.h: ns3::MobilityHelper [class]
10.16 module.add_class('MobilityHelper', allow_subclassing=False)
10.17 ## net-device-container.h: ns3::NetDeviceContainer [class]
10.18 @@ -35,8 +37,6 @@
10.19 module.add_class('PacketSocketHelper', allow_subclassing=False)
10.20 ## point-to-point-helper.h: ns3::PointToPointHelper [class]
10.21 module.add_class('PointToPointHelper', allow_subclassing=False)
10.22 - ## static-multicast-route-helper.h: ns3::StaticMulticastRouteHelper [class]
10.23 - module.add_class('StaticMulticastRouteHelper', allow_subclassing=False)
10.24 ## tap-bridge-helper.h: ns3::TapBridgeHelper [class]
10.25 module.add_class('TapBridgeHelper', allow_subclassing=False)
10.26 ## udp-echo-helper.h: ns3::UdpEchoClientHelper [class]
10.27 @@ -72,6 +72,12 @@
10.28 register_types_ns3_TimeStepPrecision(nested_module)
10.29
10.30
10.31 + ## Register a nested module for the namespace addressUtils
10.32 +
10.33 + nested_module = module.add_cpp_namespace('addressUtils')
10.34 + register_types_ns3_addressUtils(nested_module)
10.35 +
10.36 +
10.37 ## Register a nested module for the namespace internal
10.38
10.39 nested_module = module.add_cpp_namespace('internal')
10.40 @@ -92,6 +98,10 @@
10.41 root_module = module.get_root()
10.42
10.43
10.44 +def register_types_ns3_addressUtils(module):
10.45 + root_module = module.get_root()
10.46 +
10.47 +
10.48 def register_types_ns3_internal(module):
10.49 root_module = module.get_root()
10.50
10.51 @@ -108,6 +118,7 @@
10.52 register_Ns3InternetStackHelper_methods(root_module, root_module['ns3::InternetStackHelper'])
10.53 register_Ns3Ipv4AddressHelper_methods(root_module, root_module['ns3::Ipv4AddressHelper'])
10.54 register_Ns3Ipv4InterfaceContainer_methods(root_module, root_module['ns3::Ipv4InterfaceContainer'])
10.55 + register_Ns3Ipv4StaticRoutingHelper_methods(root_module, root_module['ns3::Ipv4StaticRoutingHelper'])
10.56 register_Ns3MobilityHelper_methods(root_module, root_module['ns3::MobilityHelper'])
10.57 register_Ns3NetDeviceContainer_methods(root_module, root_module['ns3::NetDeviceContainer'])
10.58 register_Ns3NodeContainer_methods(root_module, root_module['ns3::NodeContainer'])
10.59 @@ -117,7 +128,6 @@
10.60 register_Ns3PacketSinkHelper_methods(root_module, root_module['ns3::PacketSinkHelper'])
10.61 register_Ns3PacketSocketHelper_methods(root_module, root_module['ns3::PacketSocketHelper'])
10.62 register_Ns3PointToPointHelper_methods(root_module, root_module['ns3::PointToPointHelper'])
10.63 - register_Ns3StaticMulticastRouteHelper_methods(root_module, root_module['ns3::StaticMulticastRouteHelper'])
10.64 register_Ns3TapBridgeHelper_methods(root_module, root_module['ns3::TapBridgeHelper'])
10.65 register_Ns3UdpEchoClientHelper_methods(root_module, root_module['ns3::UdpEchoClientHelper'])
10.66 register_Ns3UdpEchoServerHelper_methods(root_module, root_module['ns3::UdpEchoServerHelper'])
10.67 @@ -423,10 +433,14 @@
10.68 'void',
10.69 [param('ns3::NodeContainer', 'c')],
10.70 is_const=True)
10.71 - ## internet-stack-helper.h: void ns3::InternetStackHelper::SetNscStack(std::string soname) [member function]
10.72 - cls.add_method('SetNscStack',
10.73 + ## internet-stack-helper.h: void ns3::InternetStackHelper::SetTcp(std::string tid) [member function]
10.74 + cls.add_method('SetTcp',
10.75 'void',
10.76 - [param('std::string', 'soname')])
10.77 + [param('std::string', 'tid')])
10.78 + ## internet-stack-helper.h: void ns3::InternetStackHelper::SetTcp(std::string tid, std::string attr, ns3::AttributeValue const & val) [member function]
10.79 + cls.add_method('SetTcp',
10.80 + 'void',
10.81 + [param('std::string', 'tid'), param('std::string', 'attr'), param('ns3::AttributeValue const &', 'val')])
10.82 ## internet-stack-helper.h: static void ns3::InternetStackHelper::EnableAscii(std::ostream & os, ns3::NodeContainer n) [member function]
10.83 cls.add_method('EnableAscii',
10.84 'void',
10.85 @@ -500,6 +514,50 @@
10.86 [param('std::string', 'ipv4Name'), param('uint32_t', 'interface')])
10.87 return
10.88
10.89 +def register_Ns3Ipv4StaticRoutingHelper_methods(root_module, cls):
10.90 + ## ipv4-static-routing-helper.h: ns3::Ipv4StaticRoutingHelper::Ipv4StaticRoutingHelper(ns3::Ipv4StaticRoutingHelper const & arg0) [copy constructor]
10.91 + cls.add_constructor([param('ns3::Ipv4StaticRoutingHelper const &', 'arg0')])
10.92 + ## ipv4-static-routing-helper.h: ns3::Ipv4StaticRoutingHelper::Ipv4StaticRoutingHelper() [constructor]
10.93 + cls.add_constructor([])
10.94 + ## ipv4-static-routing-helper.h: ns3::Ptr<ns3::Ipv4StaticRouting> ns3::Ipv4StaticRoutingHelper::GetStaticRouting(ns3::Ptr<ns3::Ipv4> ipv4) const [member function]
10.95 + cls.add_method('GetStaticRouting',
10.96 + 'ns3::Ptr< ns3::Ipv4StaticRouting >',
10.97 + [param('ns3::Ptr< ns3::Ipv4 >', 'ipv4')],
10.98 + is_const=True)
10.99 + ## ipv4-static-routing-helper.h: void ns3::Ipv4StaticRoutingHelper::AddMulticastRoute(ns3::Ptr<ns3::Node> n, ns3::Ipv4Address source, ns3::Ipv4Address group, ns3::Ptr<ns3::NetDevice> input, ns3::NetDeviceContainer output) [member function]
10.100 + cls.add_method('AddMulticastRoute',
10.101 + 'void',
10.102 + [param('ns3::Ptr< ns3::Node >', 'n'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'group'), param('ns3::Ptr< ns3::NetDevice >', 'input'), param('ns3::NetDeviceContainer', 'output')])
10.103 + ## ipv4-static-routing-helper.h: void ns3::Ipv4StaticRoutingHelper::AddMulticastRoute(std::string n, ns3::Ipv4Address source, ns3::Ipv4Address group, ns3::Ptr<ns3::NetDevice> input, ns3::NetDeviceContainer output) [member function]
10.104 + cls.add_method('AddMulticastRoute',
10.105 + 'void',
10.106 + [param('std::string', 'n'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'group'), param('ns3::Ptr< ns3::NetDevice >', 'input'), param('ns3::NetDeviceContainer', 'output')])
10.107 + ## ipv4-static-routing-helper.h: void ns3::Ipv4StaticRoutingHelper::AddMulticastRoute(ns3::Ptr<ns3::Node> n, ns3::Ipv4Address source, ns3::Ipv4Address group, std::string inputName, ns3::NetDeviceContainer output) [member function]
10.108 + cls.add_method('AddMulticastRoute',
10.109 + 'void',
10.110 + [param('ns3::Ptr< ns3::Node >', 'n'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'group'), param('std::string', 'inputName'), param('ns3::NetDeviceContainer', 'output')])
10.111 + ## ipv4-static-routing-helper.h: void ns3::Ipv4StaticRoutingHelper::AddMulticastRoute(std::string nName, ns3::Ipv4Address source, ns3::Ipv4Address group, std::string inputName, ns3::NetDeviceContainer output) [member function]
10.112 + cls.add_method('AddMulticastRoute',
10.113 + 'void',
10.114 + [param('std::string', 'nName'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'group'), param('std::string', 'inputName'), param('ns3::NetDeviceContainer', 'output')])
10.115 + ## ipv4-static-routing-helper.h: void ns3::Ipv4StaticRoutingHelper::SetDefaultMulticastRoute(ns3::Ptr<ns3::Node> n, ns3::Ptr<ns3::NetDevice> nd) [member function]
10.116 + cls.add_method('SetDefaultMulticastRoute',
10.117 + 'void',
10.118 + [param('ns3::Ptr< ns3::Node >', 'n'), param('ns3::Ptr< ns3::NetDevice >', 'nd')])
10.119 + ## ipv4-static-routing-helper.h: void ns3::Ipv4StaticRoutingHelper::SetDefaultMulticastRoute(ns3::Ptr<ns3::Node> n, std::string ndName) [member function]
10.120 + cls.add_method('SetDefaultMulticastRoute',
10.121 + 'void',
10.122 + [param('ns3::Ptr< ns3::Node >', 'n'), param('std::string', 'ndName')])
10.123 + ## ipv4-static-routing-helper.h: void ns3::Ipv4StaticRoutingHelper::SetDefaultMulticastRoute(std::string nName, ns3::Ptr<ns3::NetDevice> nd) [member function]
10.124 + cls.add_method('SetDefaultMulticastRoute',
10.125 + 'void',
10.126 + [param('std::string', 'nName'), param('ns3::Ptr< ns3::NetDevice >', 'nd')])
10.127 + ## ipv4-static-routing-helper.h: void ns3::Ipv4StaticRoutingHelper::SetDefaultMulticastRoute(std::string nName, std::string ndName) [member function]
10.128 + cls.add_method('SetDefaultMulticastRoute',
10.129 + 'void',
10.130 + [param('std::string', 'nName'), param('std::string', 'ndName')])
10.131 + return
10.132 +
10.133 def register_Ns3MobilityHelper_methods(root_module, cls):
10.134 ## mobility-helper.h: ns3::MobilityHelper::MobilityHelper(ns3::MobilityHelper const & arg0) [copy constructor]
10.135 cls.add_constructor([param('ns3::MobilityHelper const &', 'arg0')])
10.136 @@ -885,53 +943,6 @@
10.137 [param('std::string', 'hubName'), param('ns3::NodeContainer', 'spokes'), param('ns3::NetDeviceContainer &', 'hubDevices'), param('ns3::NetDeviceContainer &', 'spokeDevices')])
10.138 return
10.139
10.140 -def register_Ns3StaticMulticastRouteHelper_methods(root_module, cls):
10.141 - ## static-multicast-route-helper.h: ns3::StaticMulticastRouteHelper::StaticMulticastRouteHelper(ns3::StaticMulticastRouteHelper const & arg0) [copy constructor]
10.142 - cls.add_constructor([param('ns3::StaticMulticastRouteHelper const &', 'arg0')])
10.143 - ## static-multicast-route-helper.h: ns3::StaticMulticastRouteHelper::StaticMulticastRouteHelper() [constructor]
10.144 - cls.add_constructor([])
10.145 - ## static-multicast-route-helper.h: void ns3::StaticMulticastRouteHelper::AddMulticastRoute(ns3::Ptr<ns3::Node> n, ns3::Ipv4Address source, ns3::Ipv4Address group, ns3::Ptr<ns3::NetDevice> input, ns3::NetDeviceContainer output) [member function]
10.146 - cls.add_method('AddMulticastRoute',
10.147 - 'void',
10.148 - [param('ns3::Ptr< ns3::Node >', 'n'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'group'), param('ns3::Ptr< ns3::NetDevice >', 'input'), param('ns3::NetDeviceContainer', 'output')])
10.149 - ## static-multicast-route-helper.h: void ns3::StaticMulticastRouteHelper::AddMulticastRoute(std::string n, ns3::Ipv4Address source, ns3::Ipv4Address group, ns3::Ptr<ns3::NetDevice> input, ns3::NetDeviceContainer output) [member function]
10.150 - cls.add_method('AddMulticastRoute',
10.151 - 'void',
10.152 - [param('std::string', 'n'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'group'), param('ns3::Ptr< ns3::NetDevice >', 'input'), param('ns3::NetDeviceContainer', 'output')])
10.153 - ## static-multicast-route-helper.h: void ns3::StaticMulticastRouteHelper::AddMulticastRoute(ns3::Ptr<ns3::Node> n, ns3::Ipv4Address source, ns3::Ipv4Address group, std::string inputName, ns3::NetDeviceContainer output) [member function]
10.154 - cls.add_method('AddMulticastRoute',
10.155 - 'void',
10.156 - [param('ns3::Ptr< ns3::Node >', 'n'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'group'), param('std::string', 'inputName'), param('ns3::NetDeviceContainer', 'output')])
10.157 - ## static-multicast-route-helper.h: void ns3::StaticMulticastRouteHelper::AddMulticastRoute(std::string nName, ns3::Ipv4Address source, ns3::Ipv4Address group, std::string inputName, ns3::NetDeviceContainer output) [member function]
10.158 - cls.add_method('AddMulticastRoute',
10.159 - 'void',
10.160 - [param('std::string', 'nName'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'group'), param('std::string', 'inputName'), param('ns3::NetDeviceContainer', 'output')])
10.161 - ## static-multicast-route-helper.h: void ns3::StaticMulticastRouteHelper::SetDefaultMulticastRoute(ns3::Ptr<ns3::Node> n, ns3::Ptr<ns3::NetDevice> nd) [member function]
10.162 - cls.add_method('SetDefaultMulticastRoute',
10.163 - 'void',
10.164 - [param('ns3::Ptr< ns3::Node >', 'n'), param('ns3::Ptr< ns3::NetDevice >', 'nd')])
10.165 - ## static-multicast-route-helper.h: void ns3::StaticMulticastRouteHelper::SetDefaultMulticastRoute(ns3::Ptr<ns3::Node> n, std::string ndName) [member function]
10.166 - cls.add_method('SetDefaultMulticastRoute',
10.167 - 'void',
10.168 - [param('ns3::Ptr< ns3::Node >', 'n'), param('std::string', 'ndName')])
10.169 - ## static-multicast-route-helper.h: void ns3::StaticMulticastRouteHelper::SetDefaultMulticastRoute(std::string nName, ns3::Ptr<ns3::NetDevice> nd) [member function]
10.170 - cls.add_method('SetDefaultMulticastRoute',
10.171 - 'void',
10.172 - [param('std::string', 'nName'), param('ns3::Ptr< ns3::NetDevice >', 'nd')])
10.173 - ## static-multicast-route-helper.h: void ns3::StaticMulticastRouteHelper::SetDefaultMulticastRoute(std::string nName, std::string ndName) [member function]
10.174 - cls.add_method('SetDefaultMulticastRoute',
10.175 - 'void',
10.176 - [param('std::string', 'nName'), param('std::string', 'ndName')])
10.177 - ## static-multicast-route-helper.h: void ns3::StaticMulticastRouteHelper::JoinMulticastGroup(ns3::Ptr<ns3::Node> n, ns3::Ipv4Address source, ns3::Ipv4Address group) [member function]
10.178 - cls.add_method('JoinMulticastGroup',
10.179 - 'void',
10.180 - [param('ns3::Ptr< ns3::Node >', 'n'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'group')])
10.181 - ## static-multicast-route-helper.h: void ns3::StaticMulticastRouteHelper::JoinMulticastGroup(std::string nName, ns3::Ipv4Address source, ns3::Ipv4Address group) [member function]
10.182 - cls.add_method('JoinMulticastGroup',
10.183 - 'void',
10.184 - [param('std::string', 'nName'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'group')])
10.185 - return
10.186 -
10.187 def register_Ns3TapBridgeHelper_methods(root_module, cls):
10.188 ## tap-bridge-helper.h: ns3::TapBridgeHelper::TapBridgeHelper(ns3::TapBridgeHelper const & arg0) [copy constructor]
10.189 cls.add_constructor([param('ns3::TapBridgeHelper const &', 'arg0')])
10.190 @@ -1264,6 +1275,7 @@
10.191 module = root_module
10.192 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
10.193 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
10.194 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
10.195 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
10.196 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
10.197 return
10.198 @@ -1274,6 +1286,9 @@
10.199 def register_functions_ns3_TimeStepPrecision(module, root_module):
10.200 return
10.201
10.202 +def register_functions_ns3_addressUtils(module, root_module):
10.203 + return
10.204 +
10.205 def register_functions_ns3_internal(module, root_module):
10.206 return
10.207
11.1 --- a/bindings/python/ns3_module_internet_stack.py Sat May 30 17:36:50 2009 +0100
11.2 +++ b/bindings/python/ns3_module_internet_stack.py Sat May 30 17:37:38 2009 +0100
11.3 @@ -1,4 +1,4 @@
11.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
11.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
11.6
11.7 def register_types(module):
11.8 root_module = module.get_root()
11.9 @@ -23,8 +23,12 @@
11.10 module.add_enum('Flags_t', ['NONE', 'FIN', 'SYN', 'RST', 'PSH', 'ACK', 'URG'], outer_class=root_module['ns3::TcpHeader'])
11.11 ## udp-header.h: ns3::UdpHeader [class]
11.12 module.add_class('UdpHeader', parent=root_module['ns3::Header'])
11.13 + ## ipv4-static-routing-impl.h: ns3::Ipv4StaticRoutingImpl [class]
11.14 + module.add_class('Ipv4StaticRoutingImpl', parent=root_module['ns3::Ipv4StaticRouting'])
11.15 ## ipv4-global-routing.h: ns3::Ipv4GlobalRouting [class]
11.16 module.add_class('Ipv4GlobalRouting', parent=root_module['ns3::Ipv4RoutingProtocol'])
11.17 + ## ipv4-list-routing-impl.h: ns3::Ipv4ListRoutingImpl [class]
11.18 + module.add_class('Ipv4ListRoutingImpl', parent=root_module['ns3::Ipv4ListRouting'])
11.19
11.20 ## Register a nested module for the namespace Config
11.21
11.22 @@ -38,6 +42,12 @@
11.23 register_types_ns3_TimeStepPrecision(nested_module)
11.24
11.25
11.26 + ## Register a nested module for the namespace addressUtils
11.27 +
11.28 + nested_module = module.add_cpp_namespace('addressUtils')
11.29 + register_types_ns3_addressUtils(nested_module)
11.30 +
11.31 +
11.32 ## Register a nested module for the namespace internal
11.33
11.34 nested_module = module.add_cpp_namespace('internal')
11.35 @@ -58,6 +68,10 @@
11.36 root_module = module.get_root()
11.37
11.38
11.39 +def register_types_ns3_addressUtils(module):
11.40 + root_module = module.get_root()
11.41 +
11.42 +
11.43 def register_types_ns3_internal(module):
11.44 root_module = module.get_root()
11.45
11.46 @@ -73,7 +87,9 @@
11.47 register_Ns3Icmpv4TimeExceeded_methods(root_module, root_module['ns3::Icmpv4TimeExceeded'])
11.48 register_Ns3TcpHeader_methods(root_module, root_module['ns3::TcpHeader'])
11.49 register_Ns3UdpHeader_methods(root_module, root_module['ns3::UdpHeader'])
11.50 + register_Ns3Ipv4StaticRoutingImpl_methods(root_module, root_module['ns3::Ipv4StaticRoutingImpl'])
11.51 register_Ns3Ipv4GlobalRouting_methods(root_module, root_module['ns3::Ipv4GlobalRouting'])
11.52 + register_Ns3Ipv4ListRoutingImpl_methods(root_module, root_module['ns3::Ipv4ListRoutingImpl'])
11.53 return
11.54
11.55 def register_Ns3Icmpv4DestinationUnreachable_methods(root_module, cls):
11.56 @@ -508,6 +524,118 @@
11.57 is_const=True)
11.58 return
11.59
11.60 +def register_Ns3Ipv4StaticRoutingImpl_methods(root_module, cls):
11.61 + ## ipv4-static-routing-impl.h: ns3::Ipv4StaticRoutingImpl::Ipv4StaticRoutingImpl(ns3::Ipv4StaticRoutingImpl const & arg0) [copy constructor]
11.62 + cls.add_constructor([param('ns3::Ipv4StaticRoutingImpl const &', 'arg0')])
11.63 + ## ipv4-static-routing-impl.h: static ns3::TypeId ns3::Ipv4StaticRoutingImpl::GetTypeId() [member function]
11.64 + cls.add_method('GetTypeId',
11.65 + 'ns3::TypeId',
11.66 + [],
11.67 + is_static=True)
11.68 + ## ipv4-static-routing-impl.h: ns3::Ipv4StaticRoutingImpl::Ipv4StaticRoutingImpl() [constructor]
11.69 + cls.add_constructor([])
11.70 + ## ipv4-static-routing-impl.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4StaticRoutingImpl::RouteOutput(ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
11.71 + cls.add_method('RouteOutput',
11.72 + 'ns3::Ptr< ns3::Ipv4Route >',
11.73 + [param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')],
11.74 + is_virtual=True)
11.75 + ## ipv4-static-routing-impl.h: bool ns3::Ipv4StaticRoutingImpl::RouteInput(ns3::Ptr<ns3::Packet const> p, ns3::Ipv4Header const & header, ns3::Ptr<const ns3::NetDevice> idev, ns3::Callback<void,ns3::Ptr<ns3::Ipv4Route>,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ucb, ns3::Callback<void,ns3::Ptr<ns3::Ipv4MulticastRoute>,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> mcb, ns3::Callback<void,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,unsigned int,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> lcb, ns3::Callback<void,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ecb) [member function]
11.76 + cls.add_method('RouteInput',
11.77 + 'bool',
11.78 + [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')],
11.79 + is_virtual=True)
11.80 + ## ipv4-static-routing-impl.h: void ns3::Ipv4StaticRoutingImpl::AddHostRouteTo(ns3::Ipv4Address dest, ns3::Ipv4Address nextHop, uint32_t interface) [member function]
11.81 + cls.add_method('AddHostRouteTo',
11.82 + 'void',
11.83 + [param('ns3::Ipv4Address', 'dest'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')],
11.84 + is_virtual=True)
11.85 + ## ipv4-static-routing-impl.h: void ns3::Ipv4StaticRoutingImpl::AddHostRouteTo(ns3::Ipv4Address dest, uint32_t interface) [member function]
11.86 + cls.add_method('AddHostRouteTo',
11.87 + 'void',
11.88 + [param('ns3::Ipv4Address', 'dest'), param('uint32_t', 'interface')],
11.89 + is_virtual=True)
11.90 + ## ipv4-static-routing-impl.h: void ns3::Ipv4StaticRoutingImpl::AddNetworkRouteTo(ns3::Ipv4Address network, ns3::Ipv4Mask networkMask, ns3::Ipv4Address nextHop, uint32_t interface) [member function]
11.91 + cls.add_method('AddNetworkRouteTo',
11.92 + 'void',
11.93 + [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')],
11.94 + is_virtual=True)
11.95 + ## ipv4-static-routing-impl.h: void ns3::Ipv4StaticRoutingImpl::AddNetworkRouteTo(ns3::Ipv4Address network, ns3::Ipv4Mask networkMask, uint32_t interface) [member function]
11.96 + cls.add_method('AddNetworkRouteTo',
11.97 + 'void',
11.98 + [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('uint32_t', 'interface')],
11.99 + is_virtual=True)
11.100 + ## ipv4-static-routing-impl.h: void ns3::Ipv4StaticRoutingImpl::SetDefaultRoute(ns3::Ipv4Address nextHop, uint32_t interface) [member function]
11.101 + cls.add_method('SetDefaultRoute',
11.102 + 'void',
11.103 + [param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')],
11.104 + is_virtual=True)
11.105 + ## ipv4-static-routing-impl.h: uint32_t ns3::Ipv4StaticRoutingImpl::GetNRoutes() [member function]
11.106 + cls.add_method('GetNRoutes',
11.107 + 'uint32_t',
11.108 + [],
11.109 + is_virtual=True)
11.110 + ## ipv4-static-routing-impl.h: ns3::Ipv4RoutingTableEntry ns3::Ipv4StaticRoutingImpl::GetDefaultRoute() [member function]
11.111 + cls.add_method('GetDefaultRoute',
11.112 + 'ns3::Ipv4RoutingTableEntry',
11.113 + [],
11.114 + is_virtual=True)
11.115 + ## ipv4-static-routing-impl.h: ns3::Ipv4RoutingTableEntry ns3::Ipv4StaticRoutingImpl::GetRoute(uint32_t i) [member function]
11.116 + cls.add_method('GetRoute',
11.117 + 'ns3::Ipv4RoutingTableEntry',
11.118 + [param('uint32_t', 'i')],
11.119 + is_virtual=True)
11.120 + ## ipv4-static-routing-impl.h: void ns3::Ipv4StaticRoutingImpl::RemoveRoute(uint32_t i) [member function]
11.121 + cls.add_method('RemoveRoute',
11.122 + 'void',
11.123 + [param('uint32_t', 'i')],
11.124 + is_virtual=True)
11.125 + ## ipv4-static-routing-impl.h: void ns3::Ipv4StaticRoutingImpl::AddMulticastRoute(ns3::Ipv4Address origin, ns3::Ipv4Address group, uint32_t inputInterface, std::vector<unsigned int, std::allocator<unsigned int> > outputInterfaces) [member function]
11.126 + cls.add_method('AddMulticastRoute',
11.127 + 'void',
11.128 + [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface'), param('std::vector< unsigned int >', 'outputInterfaces')],
11.129 + is_virtual=True)
11.130 + ## ipv4-static-routing-impl.h: void ns3::Ipv4StaticRoutingImpl::SetDefaultMulticastRoute(uint32_t outputInterface) [member function]
11.131 + cls.add_method('SetDefaultMulticastRoute',
11.132 + 'void',
11.133 + [param('uint32_t', 'outputInterface')],
11.134 + is_virtual=True)
11.135 + ## ipv4-static-routing-impl.h: uint32_t ns3::Ipv4StaticRoutingImpl::GetNMulticastRoutes() const [member function]
11.136 + cls.add_method('GetNMulticastRoutes',
11.137 + 'uint32_t',
11.138 + [],
11.139 + is_const=True, is_virtual=True)
11.140 + ## ipv4-static-routing-impl.h: ns3::Ipv4MulticastRoutingTableEntry ns3::Ipv4StaticRoutingImpl::GetMulticastRoute(uint32_t i) const [member function]
11.141 + cls.add_method('GetMulticastRoute',
11.142 + 'ns3::Ipv4MulticastRoutingTableEntry',
11.143 + [param('uint32_t', 'i')],
11.144 + is_const=True, is_virtual=True)
11.145 + ## ipv4-static-routing-impl.h: bool ns3::Ipv4StaticRoutingImpl::RemoveMulticastRoute(ns3::Ipv4Address origin, ns3::Ipv4Address group, uint32_t inputInterface) [member function]
11.146 + cls.add_method('RemoveMulticastRoute',
11.147 + 'bool',
11.148 + [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface')],
11.149 + is_virtual=True)
11.150 + ## ipv4-static-routing-impl.h: void ns3::Ipv4StaticRoutingImpl::RemoveMulticastRoute(uint32_t index) [member function]
11.151 + cls.add_method('RemoveMulticastRoute',
11.152 + 'void',
11.153 + [param('uint32_t', 'index')],
11.154 + is_virtual=True)
11.155 + ## ipv4-static-routing-impl.h: void ns3::Ipv4StaticRoutingImpl::SetNode(ns3::Ptr<ns3::Node> node) [member function]
11.156 + cls.add_method('SetNode',
11.157 + 'void',
11.158 + [param('ns3::Ptr< ns3::Node >', 'node')],
11.159 + is_virtual=True)
11.160 + ## ipv4-static-routing-impl.h: ns3::Ptr<ns3::Node> ns3::Ipv4StaticRoutingImpl::GetNode() const [member function]
11.161 + cls.add_method('GetNode',
11.162 + 'ns3::Ptr< ns3::Node >',
11.163 + [],
11.164 + is_const=True, is_virtual=True)
11.165 + ## ipv4-static-routing-impl.h: void ns3::Ipv4StaticRoutingImpl::DoDispose() [member function]
11.166 + cls.add_method('DoDispose',
11.167 + 'void',
11.168 + [],
11.169 + visibility='protected', is_virtual=True)
11.170 + return
11.171 +
11.172 def register_Ns3Ipv4GlobalRouting_methods(root_module, cls):
11.173 ## ipv4-global-routing.h: ns3::Ipv4GlobalRouting::Ipv4GlobalRouting(ns3::Ipv4GlobalRouting const & arg0) [copy constructor]
11.174 cls.add_constructor([param('ns3::Ipv4GlobalRouting const &', 'arg0')])
11.175 @@ -518,15 +646,15 @@
11.176 is_static=True)
11.177 ## ipv4-global-routing.h: ns3::Ipv4GlobalRouting::Ipv4GlobalRouting() [constructor]
11.178 cls.add_constructor([])
11.179 - ## ipv4-global-routing.h: bool ns3::Ipv4GlobalRouting::RequestRoute(uint32_t interface, ns3::Ipv4Header const & ipHeader, ns3::Ptr<ns3::Packet> packet, ns3::Callback<void,bool,const ns3::Ipv4Route&,ns3::Ptr<ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> routeReply) [member function]
11.180 - cls.add_method('RequestRoute',
11.181 + ## ipv4-global-routing.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4GlobalRouting::RouteOutput(ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
11.182 + cls.add_method('RouteOutput',
11.183 + 'ns3::Ptr< ns3::Ipv4Route >',
11.184 + [param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')],
11.185 + is_virtual=True)
11.186 + ## ipv4-global-routing.h: bool ns3::Ipv4GlobalRouting::RouteInput(ns3::Ptr<ns3::Packet const> p, ns3::Ipv4Header const & header, ns3::Ptr<const ns3::NetDevice> idev, ns3::Callback<void,ns3::Ptr<ns3::Ipv4Route>,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ucb, ns3::Callback<void,ns3::Ptr<ns3::Ipv4MulticastRoute>,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> mcb, ns3::Callback<void,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,unsigned int,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> lcb, ns3::Callback<void,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ecb) [member function]
11.187 + cls.add_method('RouteInput',
11.188 'bool',
11.189 - [param('uint32_t', 'interface'), param('ns3::Ipv4Header const &', 'ipHeader'), param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Callback< void, bool, ns3::Ipv4Route const &, ns3::Ptr< ns3::Packet >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'routeReply')],
11.190 - is_virtual=True)
11.191 - ## ipv4-global-routing.h: bool ns3::Ipv4GlobalRouting::RequestInterface(ns3::Ipv4Address destination, uint32_t & interface) [member function]
11.192 - cls.add_method('RequestInterface',
11.193 - 'bool',
11.194 - [param('ns3::Ipv4Address', 'destination'), param('uint32_t &', 'interface')],
11.195 + [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')],
11.196 is_virtual=True)
11.197 ## ipv4-global-routing.h: void ns3::Ipv4GlobalRouting::AddHostRouteTo(ns3::Ipv4Address dest, ns3::Ipv4Address nextHop, uint32_t interface) [member function]
11.198 cls.add_method('AddHostRouteTo',
11.199 @@ -548,14 +676,23 @@
11.200 cls.add_method('GetNRoutes',
11.201 'uint32_t',
11.202 [])
11.203 - ## ipv4-global-routing.h: ns3::Ipv4Route * ns3::Ipv4GlobalRouting::GetRoute(uint32_t i) [member function]
11.204 + ## ipv4-global-routing.h: ns3::Ipv4RoutingTableEntry * ns3::Ipv4GlobalRouting::GetRoute(uint32_t i) [member function]
11.205 cls.add_method('GetRoute',
11.206 - 'ns3::Ipv4Route *',
11.207 + 'ns3::Ipv4RoutingTableEntry *',
11.208 [param('uint32_t', 'i')])
11.209 ## ipv4-global-routing.h: void ns3::Ipv4GlobalRouting::RemoveRoute(uint32_t i) [member function]
11.210 cls.add_method('RemoveRoute',
11.211 'void',
11.212 [param('uint32_t', 'i')])
11.213 + ## ipv4-global-routing.h: void ns3::Ipv4GlobalRouting::SetNode(ns3::Ptr<ns3::Node> node) [member function]
11.214 + cls.add_method('SetNode',
11.215 + 'void',
11.216 + [param('ns3::Ptr< ns3::Node >', 'node')])
11.217 + ## ipv4-global-routing.h: ns3::Ptr<ns3::Node> ns3::Ipv4GlobalRouting::GetNode() const [member function]
11.218 + cls.add_method('GetNode',
11.219 + 'ns3::Ptr< ns3::Node >',
11.220 + [],
11.221 + is_const=True)
11.222 ## ipv4-global-routing.h: void ns3::Ipv4GlobalRouting::DoDispose() [member function]
11.223 cls.add_method('DoDispose',
11.224 'void',
11.225 @@ -563,18 +700,67 @@
11.226 visibility='protected', is_virtual=True)
11.227 return
11.228
11.229 +def register_Ns3Ipv4ListRoutingImpl_methods(root_module, cls):
11.230 + ## ipv4-list-routing-impl.h: ns3::Ipv4ListRoutingImpl::Ipv4ListRoutingImpl(ns3::Ipv4ListRoutingImpl const & arg0) [copy constructor]
11.231 + cls.add_constructor([param('ns3::Ipv4ListRoutingImpl const &', 'arg0')])
11.232 + ## ipv4-list-routing-impl.h: static ns3::TypeId ns3::Ipv4ListRoutingImpl::GetTypeId() [member function]
11.233 + cls.add_method('GetTypeId',
11.234 + 'ns3::TypeId',
11.235 + [],
11.236 + is_static=True)
11.237 + ## ipv4-list-routing-impl.h: ns3::Ipv4ListRoutingImpl::Ipv4ListRoutingImpl() [constructor]
11.238 + cls.add_constructor([])
11.239 + ## ipv4-list-routing-impl.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4ListRoutingImpl::RouteOutput(ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
11.240 + cls.add_method('RouteOutput',
11.241 + 'ns3::Ptr< ns3::Ipv4Route >',
11.242 + [param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')],
11.243 + is_virtual=True)
11.244 + ## ipv4-list-routing-impl.h: bool ns3::Ipv4ListRoutingImpl::RouteInput(ns3::Ptr<ns3::Packet const> p, ns3::Ipv4Header const & header, ns3::Ptr<const ns3::NetDevice> idev, ns3::Callback<void,ns3::Ptr<ns3::Ipv4Route>,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ucb, ns3::Callback<void,ns3::Ptr<ns3::Ipv4MulticastRoute>,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> mcb, ns3::Callback<void,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,unsigned int,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> lcb, ns3::Callback<void,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ecb) [member function]
11.245 + cls.add_method('RouteInput',
11.246 + 'bool',
11.247 + [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')],
11.248 + is_virtual=True)
11.249 + ## ipv4-list-routing-impl.h: void ns3::Ipv4ListRoutingImpl::AddRoutingProtocol(ns3::Ptr<ns3::Ipv4RoutingProtocol> routingProtocol, int16_t priority) [member function]
11.250 + cls.add_method('AddRoutingProtocol',
11.251 + 'void',
11.252 + [param('ns3::Ptr< ns3::Ipv4RoutingProtocol >', 'routingProtocol'), param('int16_t', 'priority')],
11.253 + is_virtual=True)
11.254 + ## ipv4-list-routing-impl.h: uint32_t ns3::Ipv4ListRoutingImpl::GetNRoutingProtocols() const [member function]
11.255 + cls.add_method('GetNRoutingProtocols',
11.256 + 'uint32_t',
11.257 + [],
11.258 + is_const=True, is_virtual=True)
11.259 + ## ipv4-list-routing-impl.h: ns3::Ptr<ns3::Ipv4RoutingProtocol> ns3::Ipv4ListRoutingImpl::GetRoutingProtocol(uint32_t index, int16_t & priority) const [member function]
11.260 + cls.add_method('GetRoutingProtocol',
11.261 + 'ns3::Ptr< ns3::Ipv4RoutingProtocol >',
11.262 + [param('uint32_t', 'index'), param('int16_t &', 'priority')],
11.263 + is_const=True, is_virtual=True)
11.264 + ## ipv4-list-routing-impl.h: ns3::Ptr<ns3::Ipv4StaticRouting> ns3::Ipv4ListRoutingImpl::GetStaticRouting() const [member function]
11.265 + cls.add_method('GetStaticRouting',
11.266 + 'ns3::Ptr< ns3::Ipv4StaticRouting >',
11.267 + [],
11.268 + is_const=True, is_virtual=True)
11.269 + ## ipv4-list-routing-impl.h: void ns3::Ipv4ListRoutingImpl::SetNode(ns3::Ptr<ns3::Node> node) [member function]
11.270 + cls.add_method('SetNode',
11.271 + 'void',
11.272 + [param('ns3::Ptr< ns3::Node >', 'node')])
11.273 + ## ipv4-list-routing-impl.h: ns3::Ptr<ns3::Node> ns3::Ipv4ListRoutingImpl::GetNode() const [member function]
11.274 + cls.add_method('GetNode',
11.275 + 'ns3::Ptr< ns3::Node >',
11.276 + [],
11.277 + is_const=True)
11.278 + ## ipv4-list-routing-impl.h: void ns3::Ipv4ListRoutingImpl::DoDispose() [member function]
11.279 + cls.add_method('DoDispose',
11.280 + 'void',
11.281 + [],
11.282 + visibility='protected', is_virtual=True)
11.283 + return
11.284 +
11.285 def register_functions(root_module):
11.286 module = root_module
11.287 - ## internet-stack.h: extern void ns3::AddInternetStack(ns3::Ptr<ns3::Node> node) [free function]
11.288 - module.add_function('AddInternetStack',
11.289 - 'void',
11.290 - [param('ns3::Ptr< ns3::Node >', 'node')])
11.291 - ## internet-stack.h: extern void ns3::AddNscInternetStack(ns3::Ptr<ns3::Node> node, std::string const & soname) [free function]
11.292 - module.add_function('AddNscInternetStack',
11.293 - 'void',
11.294 - [param('ns3::Ptr< ns3::Node >', 'node'), param('std::string const &', 'soname')])
11.295 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
11.296 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
11.297 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
11.298 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
11.299 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
11.300 return
11.301 @@ -585,6 +771,9 @@
11.302 def register_functions_ns3_TimeStepPrecision(module, root_module):
11.303 return
11.304
11.305 +def register_functions_ns3_addressUtils(module, root_module):
11.306 + return
11.307 +
11.308 def register_functions_ns3_internal(module, root_module):
11.309 return
11.310
12.1 --- a/bindings/python/ns3_module_mobility.py Sat May 30 17:36:50 2009 +0100
12.2 +++ b/bindings/python/ns3_module_mobility.py Sat May 30 17:37:38 2009 +0100
12.3 @@ -1,4 +1,4 @@
12.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
12.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
12.6
12.7 def register_types(module):
12.8 root_module = module.get_root()
12.9 @@ -62,6 +62,12 @@
12.10 register_types_ns3_TimeStepPrecision(nested_module)
12.11
12.12
12.13 + ## Register a nested module for the namespace addressUtils
12.14 +
12.15 + nested_module = module.add_cpp_namespace('addressUtils')
12.16 + register_types_ns3_addressUtils(nested_module)
12.17 +
12.18 +
12.19 ## Register a nested module for the namespace internal
12.20
12.21 nested_module = module.add_cpp_namespace('internal')
12.22 @@ -82,6 +88,10 @@
12.23 root_module = module.get_root()
12.24
12.25
12.26 +def register_types_ns3_addressUtils(module):
12.27 + root_module = module.get_root()
12.28 +
12.29 +
12.30 def register_types_ns3_internal(module):
12.31 root_module = module.get_root()
12.32
12.33 @@ -748,6 +758,7 @@
12.34 [])
12.35 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
12.36 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
12.37 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
12.38 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
12.39 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
12.40 return
12.41 @@ -758,6 +769,9 @@
12.42 def register_functions_ns3_TimeStepPrecision(module, root_module):
12.43 return
12.44
12.45 +def register_functions_ns3_addressUtils(module, root_module):
12.46 + return
12.47 +
12.48 def register_functions_ns3_internal(module, root_module):
12.49 return
12.50
13.1 --- a/bindings/python/ns3_module_node.py Sat May 30 17:36:50 2009 +0100
13.2 +++ b/bindings/python/ns3_module_node.py Sat May 30 17:37:38 2009 +0100
13.3 @@ -1,4 +1,4 @@
13.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
13.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
13.6
13.7 def register_types(module):
13.8 root_module = module.get_root()
13.9 @@ -29,10 +29,10 @@
13.10 module.add_enum('InterfaceAddressScope_e', ['HOST', 'LINK', 'GLOBAL'], outer_class=root_module['ns3::Ipv4InterfaceAddress'])
13.11 ## ipv4-address.h: ns3::Ipv4Mask [class]
13.12 module.add_class('Ipv4Mask')
13.13 - ## ipv4-route.h: ns3::Ipv4MulticastRoute [class]
13.14 - module.add_class('Ipv4MulticastRoute')
13.15 - ## ipv4-route.h: ns3::Ipv4Route [class]
13.16 - module.add_class('Ipv4Route')
13.17 + ## ipv4-routing-table-entry.h: ns3::Ipv4MulticastRoutingTableEntry [class]
13.18 + module.add_class('Ipv4MulticastRoutingTableEntry')
13.19 + ## ipv4-routing-table-entry.h: ns3::Ipv4RoutingTableEntry [class]
13.20 + module.add_class('Ipv4RoutingTableEntry')
13.21 ## ipv6-address.h: ns3::Ipv6Address [class]
13.22 module.add_class('Ipv6Address')
13.23 ## ipv6-address.h: ns3::Ipv6Address [class]
13.24 @@ -63,6 +63,10 @@
13.25 module.add_class('Ipv4MaskChecker', parent=root_module['ns3::AttributeChecker'])
13.26 ## ipv4-address.h: ns3::Ipv4MaskValue [class]
13.27 module.add_class('Ipv4MaskValue', parent=root_module['ns3::AttributeValue'])
13.28 + ## ipv4-route.h: ns3::Ipv4MulticastRoute [class]
13.29 + module.add_class('Ipv4MulticastRoute', parent=root_module['ns3::RefCountBase'])
13.30 + ## ipv4-route.h: ns3::Ipv4Route [class]
13.31 + module.add_class('Ipv4Route', parent=root_module['ns3::RefCountBase'])
13.32 ## ipv6-address.h: ns3::Ipv6AddressChecker [class]
13.33 module.add_class('Ipv6AddressChecker', parent=root_module['ns3::AttributeChecker'])
13.34 ## ipv6-address.h: ns3::Ipv6AddressValue [class]
13.35 @@ -123,8 +127,10 @@
13.36 module.add_class('Ipv4', parent=root_module['ns3::Object'])
13.37 ## ipv4-raw-socket-factory.h: ns3::Ipv4RawSocketFactory [class]
13.38 module.add_class('Ipv4RawSocketFactory', parent=root_module['ns3::SocketFactory'])
13.39 - ## ipv4.h: ns3::Ipv4RoutingProtocol [class]
13.40 + ## ipv4-routing-protocol.h: ns3::Ipv4RoutingProtocol [class]
13.41 module.add_class('Ipv4RoutingProtocol', parent=root_module['ns3::Object'])
13.42 + ## ipv4-static-routing.h: ns3::Ipv4StaticRouting [class]
13.43 + module.add_class('Ipv4StaticRouting', parent=root_module['ns3::Ipv4RoutingProtocol'])
13.44 ## net-device.h: ns3::NetDevice [class]
13.45 module.add_class('NetDevice', parent=root_module['ns3::Object'])
13.46 ## net-device.h: ns3::NetDevice::PacketType [enumeration]
13.47 @@ -137,6 +143,8 @@
13.48 module.add_class('SimpleChannel', parent=root_module['ns3::Channel'])
13.49 ## simple-net-device.h: ns3::SimpleNetDevice [class]
13.50 module.add_class('SimpleNetDevice', parent=root_module['ns3::NetDevice'])
13.51 + ## ipv4-list-routing.h: ns3::Ipv4ListRouting [class]
13.52 + module.add_class('Ipv4ListRouting', parent=root_module['ns3::Ipv4RoutingProtocol'])
13.53 module.add_container('ns3::olsr::MprSet', 'ns3::Ipv4Address', container_type='set')
13.54 module.add_container('std::vector< ns3::Ipv4Address >', 'ns3::Ipv4Address', container_type='vector')
13.55
13.56 @@ -152,6 +160,12 @@
13.57 register_types_ns3_TimeStepPrecision(nested_module)
13.58
13.59
13.60 + ## Register a nested module for the namespace addressUtils
13.61 +
13.62 + nested_module = module.add_cpp_namespace('addressUtils')
13.63 + register_types_ns3_addressUtils(nested_module)
13.64 +
13.65 +
13.66 ## Register a nested module for the namespace internal
13.67
13.68 nested_module = module.add_cpp_namespace('internal')
13.69 @@ -172,6 +186,10 @@
13.70 root_module = module.get_root()
13.71
13.72
13.73 +def register_types_ns3_addressUtils(module):
13.74 + root_module = module.get_root()
13.75 +
13.76 +
13.77 def register_types_ns3_internal(module):
13.78 root_module = module.get_root()
13.79
13.80 @@ -188,8 +206,8 @@
13.81 register_Ns3Ipv4AddressGenerator_methods(root_module, root_module['ns3::Ipv4AddressGenerator'])
13.82 register_Ns3Ipv4InterfaceAddress_methods(root_module, root_module['ns3::Ipv4InterfaceAddress'])
13.83 register_Ns3Ipv4Mask_methods(root_module, root_module['ns3::Ipv4Mask'])
13.84 - register_Ns3Ipv4MulticastRoute_methods(root_module, root_module['ns3::Ipv4MulticastRoute'])
13.85 - register_Ns3Ipv4Route_methods(root_module, root_module['ns3::Ipv4Route'])
13.86 + register_Ns3Ipv4MulticastRoutingTableEntry_methods(root_module, root_module['ns3::Ipv4MulticastRoutingTableEntry'])
13.87 + register_Ns3Ipv4RoutingTableEntry_methods(root_module, root_module['ns3::Ipv4RoutingTableEntry'])
13.88 register_Ns3Ipv6Address_methods(root_module, root_module['ns3::Ipv6Address'])
13.89 register_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
13.90 register_Ns3Mac48Address_methods(root_module, root_module['ns3::Mac48Address'])
13.91 @@ -201,6 +219,8 @@
13.92 register_Ns3Ipv4Header_methods(root_module, root_module['ns3::Ipv4Header'])
13.93 register_Ns3Ipv4MaskChecker_methods(root_module, root_module['ns3::Ipv4MaskChecker'])
13.94 register_Ns3Ipv4MaskValue_methods(root_module, root_module['ns3::Ipv4MaskValue'])
13.95 + register_Ns3Ipv4MulticastRoute_methods(root_module, root_module['ns3::Ipv4MulticastRoute'])
13.96 + register_Ns3Ipv4Route_methods(root_module, root_module['ns3::Ipv4Route'])
13.97 register_Ns3Ipv6AddressChecker_methods(root_module, root_module['ns3::Ipv6AddressChecker'])
13.98 register_Ns3Ipv6AddressValue_methods(root_module, root_module['ns3::Ipv6AddressValue'])
13.99 register_Ns3Ipv6Header_methods(root_module, root_module['ns3::Ipv6Header'])
13.100 @@ -229,11 +249,13 @@
13.101 register_Ns3Ipv4_methods(root_module, root_module['ns3::Ipv4'])
13.102 register_Ns3Ipv4RawSocketFactory_methods(root_module, root_module['ns3::Ipv4RawSocketFactory'])
13.103 register_Ns3Ipv4RoutingProtocol_methods(root_module, root_module['ns3::Ipv4RoutingProtocol'])
13.104 + register_Ns3Ipv4StaticRouting_methods(root_module, root_module['ns3::Ipv4StaticRouting'])
13.105 register_Ns3NetDevice_methods(root_module, root_module['ns3::NetDevice'])
13.106 register_Ns3Node_methods(root_module, root_module['ns3::Node'])
13.107 register_Ns3PacketSocketFactory_methods(root_module, root_module['ns3::PacketSocketFactory'])
13.108 register_Ns3SimpleChannel_methods(root_module, root_module['ns3::SimpleChannel'])
13.109 register_Ns3SimpleNetDevice_methods(root_module, root_module['ns3::SimpleNetDevice'])
13.110 + register_Ns3Ipv4ListRouting_methods(root_module, root_module['ns3::Ipv4ListRouting'])
13.111 return
13.112
13.113 def register_Ns3Address_methods(root_module, cls):
13.114 @@ -664,125 +686,125 @@
13.115 [param('uint32_t', 'mask')])
13.116 return
13.117
13.118 -def register_Ns3Ipv4MulticastRoute_methods(root_module, cls):
13.119 +def register_Ns3Ipv4MulticastRoutingTableEntry_methods(root_module, cls):
13.120 cls.add_output_stream_operator()
13.121 - ## ipv4-route.h: ns3::Ipv4MulticastRoute::Ipv4MulticastRoute() [constructor]
13.122 + ## ipv4-routing-table-entry.h: ns3::Ipv4MulticastRoutingTableEntry::Ipv4MulticastRoutingTableEntry() [constructor]
13.123 cls.add_constructor([])
13.124 - ## ipv4-route.h: ns3::Ipv4MulticastRoute::Ipv4MulticastRoute(ns3::Ipv4MulticastRoute const & route) [copy constructor]
13.125 - cls.add_constructor([param('ns3::Ipv4MulticastRoute const &', 'route')])
13.126 - ## ipv4-route.h: ns3::Ipv4MulticastRoute::Ipv4MulticastRoute(ns3::Ipv4MulticastRoute const * route) [constructor]
13.127 - cls.add_constructor([param('ns3::Ipv4MulticastRoute const *', 'route')])
13.128 - ## ipv4-route.h: static ns3::Ipv4MulticastRoute ns3::Ipv4MulticastRoute::CreateMulticastRoute(ns3::Ipv4Address origin, ns3::Ipv4Address group, uint32_t inputInterface, std::vector<unsigned int, std::allocator<unsigned int> > outputInterfaces) [member function]
13.129 + ## ipv4-routing-table-entry.h: ns3::Ipv4MulticastRoutingTableEntry::Ipv4MulticastRoutingTableEntry(ns3::Ipv4MulticastRoutingTableEntry const & route) [copy constructor]
13.130 + cls.add_constructor([param('ns3::Ipv4MulticastRoutingTableEntry const &', 'route')])
13.131 + ## ipv4-routing-table-entry.h: ns3::Ipv4MulticastRoutingTableEntry::Ipv4MulticastRoutingTableEntry(ns3::Ipv4MulticastRoutingTableEntry const * route) [constructor]
13.132 + cls.add_constructor([param('ns3::Ipv4MulticastRoutingTableEntry const *', 'route')])
13.133 + ## ipv4-routing-table-entry.h: static ns3::Ipv4MulticastRoutingTableEntry ns3::Ipv4MulticastRoutingTableEntry::CreateMulticastRoute(ns3::Ipv4Address origin, ns3::Ipv4Address group, uint32_t inputInterface, std::vector<unsigned int, std::allocator<unsigned int> > outputInterfaces) [member function]
13.134 cls.add_method('CreateMulticastRoute',
13.135 - 'ns3::Ipv4MulticastRoute',
13.136 + 'ns3::Ipv4MulticastRoutingTableEntry',
13.137 [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface'), param('std::vector< unsigned int >', 'outputInterfaces')],
13.138 is_static=True)
13.139 - ## ipv4-route.h: ns3::Ipv4Address ns3::Ipv4MulticastRoute::GetGroup() const [member function]
13.140 + ## ipv4-routing-table-entry.h: ns3::Ipv4Address ns3::Ipv4MulticastRoutingTableEntry::GetGroup() const [member function]
13.141 cls.add_method('GetGroup',
13.142 'ns3::Ipv4Address',
13.143 [],
13.144 is_const=True)
13.145 - ## ipv4-route.h: uint32_t ns3::Ipv4MulticastRoute::GetInputInterface() const [member function]
13.146 + ## ipv4-routing-table-entry.h: uint32_t ns3::Ipv4MulticastRoutingTableEntry::GetInputInterface() const [member function]
13.147 cls.add_method('GetInputInterface',
13.148 'uint32_t',
13.149 [],
13.150 is_const=True)
13.151 - ## ipv4-route.h: uint32_t ns3::Ipv4MulticastRoute::GetNOutputInterfaces() const [member function]
13.152 + ## ipv4-routing-table-entry.h: uint32_t ns3::Ipv4MulticastRoutingTableEntry::GetNOutputInterfaces() const [member function]
13.153 cls.add_method('GetNOutputInterfaces',
13.154 'uint32_t',
13.155 [],
13.156 is_const=True)
13.157 - ## ipv4-route.h: ns3::Ipv4Address ns3::Ipv4MulticastRoute::GetOrigin() const [member function]
13.158 + ## ipv4-routing-table-entry.h: ns3::Ipv4Address ns3::Ipv4MulticastRoutingTableEntry::GetOrigin() const [member function]
13.159 cls.add_method('GetOrigin',
13.160 'ns3::Ipv4Address',
13.161 [],
13.162 is_const=True)
13.163 - ## ipv4-route.h: uint32_t ns3::Ipv4MulticastRoute::GetOutputInterface(uint32_t n) const [member function]
13.164 + ## ipv4-routing-table-entry.h: uint32_t ns3::Ipv4MulticastRoutingTableEntry::GetOutputInterface(uint32_t n) const [member function]
13.165 cls.add_method('GetOutputInterface',
13.166 'uint32_t',
13.167 [param('uint32_t', 'n')],
13.168 is_const=True)
13.169 - ## ipv4-route.h: std::vector<unsigned int, std::allocator<unsigned int> > ns3::Ipv4MulticastRoute::GetOutputInterfaces() const [member function]
13.170 + ## ipv4-routing-table-entry.h: std::vector<unsigned int, std::allocator<unsigned int> > ns3::Ipv4MulticastRoutingTableEntry::GetOutputInterfaces() const [member function]
13.171 cls.add_method('GetOutputInterfaces',
13.172 'std::vector< unsigned int >',
13.173 [],
13.174 is_const=True)
13.175 return
13.176
13.177 -def register_Ns3Ipv4Route_methods(root_module, cls):
13.178 +def register_Ns3Ipv4RoutingTableEntry_methods(root_module, cls):
13.179 cls.add_output_stream_operator()
13.180 - ## ipv4-route.h: ns3::Ipv4Route::Ipv4Route() [constructor]
13.181 + ## ipv4-routing-table-entry.h: ns3::Ipv4RoutingTableEntry::Ipv4RoutingTableEntry() [constructor]
13.182 cls.add_constructor([])
13.183 - ## ipv4-route.h: ns3::Ipv4Route::Ipv4Route(ns3::Ipv4Route const & route) [copy constructor]
13.184 - cls.add_constructor([param('ns3::Ipv4Route const &', 'route')])
13.185 - ## ipv4-route.h: ns3::Ipv4Route::Ipv4Route(ns3::Ipv4Route const * route) [constructor]
13.186 - cls.add_constructor([param('ns3::Ipv4Route const *', 'route')])
13.187 - ## ipv4-route.h: static ns3::Ipv4Route ns3::Ipv4Route::CreateDefaultRoute(ns3::Ipv4Address nextHop, uint32_t interface) [member function]
13.188 + ## ipv4-routing-table-entry.h: ns3::Ipv4RoutingTableEntry::Ipv4RoutingTableEntry(ns3::Ipv4RoutingTableEntry const & route) [copy constructor]
13.189 + cls.add_constructor([param('ns3::Ipv4RoutingTableEntry const &', 'route')])
13.190 + ## ipv4-routing-table-entry.h: ns3::Ipv4RoutingTableEntry::Ipv4RoutingTableEntry(ns3::Ipv4RoutingTableEntry const * route) [constructor]
13.191 + cls.add_constructor([param('ns3::Ipv4RoutingTableEntry const *', 'route')])
13.192 + ## ipv4-routing-table-entry.h: static ns3::Ipv4RoutingTableEntry ns3::Ipv4RoutingTableEntry::CreateDefaultRoute(ns3::Ipv4Address nextHop, uint32_t interface) [member function]
13.193 cls.add_method('CreateDefaultRoute',
13.194 - 'ns3::Ipv4Route',
13.195 + 'ns3::Ipv4RoutingTableEntry',
13.196 [param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')],
13.197 is_static=True)
13.198 - ## ipv4-route.h: static ns3::Ipv4Route ns3::Ipv4Route::CreateHostRouteTo(ns3::Ipv4Address dest, ns3::Ipv4Address nextHop, uint32_t interface) [member function]
13.199 + ## ipv4-routing-table-entry.h: static ns3::Ipv4RoutingTableEntry ns3::Ipv4RoutingTableEntry::CreateHostRouteTo(ns3::Ipv4Address dest, ns3::Ipv4Address nextHop, uint32_t interface) [member function]
13.200 cls.add_method('CreateHostRouteTo',
13.201 - 'ns3::Ipv4Route',
13.202 + 'ns3::Ipv4RoutingTableEntry',
13.203 [param('ns3::Ipv4Address', 'dest'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')],
13.204 is_static=True)
13.205 - ## ipv4-route.h: static ns3::Ipv4Route ns3::Ipv4Route::CreateHostRouteTo(ns3::Ipv4Address dest, uint32_t interface) [member function]
13.206 + ## ipv4-routing-table-entry.h: static ns3::Ipv4RoutingTableEntry ns3::Ipv4RoutingTableEntry::CreateHostRouteTo(ns3::Ipv4Address dest, uint32_t interface) [member function]
13.207 cls.add_method('CreateHostRouteTo',
13.208 - 'ns3::Ipv4Route',
13.209 + 'ns3::Ipv4RoutingTableEntry',
13.210 [param('ns3::Ipv4Address', 'dest'), param('uint32_t', 'interface')],
13.211 is_static=True)
13.212 - ## ipv4-route.h: static ns3::Ipv4Route ns3::Ipv4Route::CreateNetworkRouteTo(ns3::Ipv4Address network, ns3::Ipv4Mask networkMask, ns3::Ipv4Address nextHop, uint32_t interface) [member function]
13.213 + ## ipv4-routing-table-entry.h: static ns3::Ipv4RoutingTableEntry ns3::Ipv4RoutingTableEntry::CreateNetworkRouteTo(ns3::Ipv4Address network, ns3::Ipv4Mask networkMask, ns3::Ipv4Address nextHop, uint32_t interface) [member function]
13.214 cls.add_method('CreateNetworkRouteTo',
13.215 - 'ns3::Ipv4Route',
13.216 + 'ns3::Ipv4RoutingTableEntry',
13.217 [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')],
13.218 is_static=True)
13.219 - ## ipv4-route.h: static ns3::Ipv4Route ns3::Ipv4Route::CreateNetworkRouteTo(ns3::Ipv4Address network, ns3::Ipv4Mask networkMask, uint32_t interface) [member function]
13.220 + ## ipv4-routing-table-entry.h: static ns3::Ipv4RoutingTableEntry ns3::Ipv4RoutingTableEntry::CreateNetworkRouteTo(ns3::Ipv4Address network, ns3::Ipv4Mask networkMask, uint32_t interface) [member function]
13.221 cls.add_method('CreateNetworkRouteTo',
13.222 - 'ns3::Ipv4Route',
13.223 + 'ns3::Ipv4RoutingTableEntry',
13.224 [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('uint32_t', 'interface')],
13.225 is_static=True)
13.226 - ## ipv4-route.h: ns3::Ipv4Address ns3::Ipv4Route::GetDest() const [member function]
13.227 + ## ipv4-routing-table-entry.h: ns3::Ipv4Address ns3::Ipv4RoutingTableEntry::GetDest() const [member function]
13.228 cls.add_method('GetDest',
13.229 'ns3::Ipv4Address',
13.230 [],
13.231 is_const=True)
13.232 - ## ipv4-route.h: ns3::Ipv4Address ns3::Ipv4Route::GetDestNetwork() const [member function]
13.233 + ## ipv4-routing-table-entry.h: ns3::Ipv4Address ns3::Ipv4RoutingTableEntry::GetDestNetwork() const [member function]
13.234 cls.add_method('GetDestNetwork',
13.235 'ns3::Ipv4Address',
13.236 [],
13.237 is_const=True)
13.238 - ## ipv4-route.h: ns3::Ipv4Mask ns3::Ipv4Route::GetDestNetworkMask() const [member function]
13.239 + ## ipv4-routing-table-entry.h: ns3::Ipv4Mask ns3::Ipv4RoutingTableEntry::GetDestNetworkMask() const [member function]
13.240 cls.add_method('GetDestNetworkMask',
13.241 'ns3::Ipv4Mask',
13.242 [],
13.243 is_const=True)
13.244 - ## ipv4-route.h: ns3::Ipv4Address ns3::Ipv4Route::GetGateway() const [member function]
13.245 + ## ipv4-routing-table-entry.h: ns3::Ipv4Address ns3::Ipv4RoutingTableEntry::GetGateway() const [member function]
13.246 cls.add_method('GetGateway',
13.247 'ns3::Ipv4Address',
13.248 [],
13.249 is_const=True)
13.250 - ## ipv4-route.h: uint32_t ns3::Ipv4Route::GetInterface() const [member function]
13.251 + ## ipv4-routing-table-entry.h: uint32_t ns3::Ipv4RoutingTableEntry::GetInterface() const [member function]
13.252 cls.add_method('GetInterface',
13.253 'uint32_t',
13.254 [],
13.255 is_const=True)
13.256 - ## ipv4-route.h: bool ns3::Ipv4Route::IsDefault() const [member function]
13.257 + ## ipv4-routing-table-entry.h: bool ns3::Ipv4RoutingTableEntry::IsDefault() const [member function]
13.258 cls.add_method('IsDefault',
13.259 'bool',
13.260 [],
13.261 is_const=True)
13.262 - ## ipv4-route.h: bool ns3::Ipv4Route::IsGateway() const [member function]
13.263 + ## ipv4-routing-table-entry.h: bool ns3::Ipv4RoutingTableEntry::IsGateway() const [member function]
13.264 cls.add_method('IsGateway',
13.265 'bool',
13.266 [],
13.267 is_const=True)
13.268 - ## ipv4-route.h: bool ns3::Ipv4Route::IsHost() const [member function]
13.269 + ## ipv4-routing-table-entry.h: bool ns3::Ipv4RoutingTableEntry::IsHost() const [member function]
13.270 cls.add_method('IsHost',
13.271 'bool',
13.272 [],
13.273 is_const=True)
13.274 - ## ipv4-route.h: bool ns3::Ipv4Route::IsNetwork() const [member function]
13.275 + ## ipv4-routing-table-entry.h: bool ns3::Ipv4RoutingTableEntry::IsNetwork() const [member function]
13.276 cls.add_method('IsNetwork',
13.277 'bool',
13.278 [],
13.279 @@ -1403,6 +1425,97 @@
13.280 is_virtual=True)
13.281 return
13.282
13.283 +def register_Ns3Ipv4MulticastRoute_methods(root_module, cls):
13.284 + ## ipv4-route.h: ns3::Ipv4MulticastRoute::MAX_INTERFACES [variable]
13.285 + cls.add_static_attribute('MAX_INTERFACES', 'uint32_t const', is_const=True)
13.286 + ## ipv4-route.h: ns3::Ipv4MulticastRoute::MAX_TTL [variable]
13.287 + cls.add_static_attribute('MAX_TTL', 'uint32_t const', is_const=True)
13.288 + ## ipv4-route.h: ns3::Ipv4MulticastRoute::Ipv4MulticastRoute(ns3::Ipv4MulticastRoute const & arg0) [copy constructor]
13.289 + cls.add_constructor([param('ns3::Ipv4MulticastRoute const &', 'arg0')])
13.290 + ## ipv4-route.h: ns3::Ipv4MulticastRoute::Ipv4MulticastRoute() [constructor]
13.291 + cls.add_constructor([])
13.292 + ## ipv4-route.h: void ns3::Ipv4MulticastRoute::SetGroup(ns3::Ipv4Address const group) [member function]
13.293 + cls.add_method('SetGroup',
13.294 + 'void',
13.295 + [param('ns3::Ipv4Address const', 'group')])
13.296 + ## ipv4-route.h: ns3::Ipv4Address ns3::Ipv4MulticastRoute::GetGroup() const [member function]
13.297 + cls.add_method('GetGroup',
13.298 + 'ns3::Ipv4Address',
13.299 + [],
13.300 + is_const=True)
13.301 + ## ipv4-route.h: void ns3::Ipv4MulticastRoute::SetOrigin(ns3::Ipv4Address const group) [member function]
13.302 + cls.add_method('SetOrigin',
13.303 + 'void',
13.304 + [param('ns3::Ipv4Address const', 'group')])
13.305 + ## ipv4-route.h: ns3::Ipv4Address ns3::Ipv4MulticastRoute::GetOrigin() const [member function]
13.306 + cls.add_method('GetOrigin',
13.307 + 'ns3::Ipv4Address',
13.308 + [],
13.309 + is_const=True)
13.310 + ## ipv4-route.h: void ns3::Ipv4MulticastRoute::SetParent(uint32_t iif) [member function]
13.311 + cls.add_method('SetParent',
13.312 + 'void',
13.313 + [param('uint32_t', 'iif')])
13.314 + ## ipv4-route.h: uint32_t ns3::Ipv4MulticastRoute::GetParent() const [member function]
13.315 + cls.add_method('GetParent',
13.316 + 'uint32_t',
13.317 + [],
13.318 + is_const=True)
13.319 + ## ipv4-route.h: void ns3::Ipv4MulticastRoute::SetOutputTtl(uint32_t oif, uint32_t ttl) [member function]
13.320 + cls.add_method('SetOutputTtl',
13.321 + 'void',
13.322 + [param('uint32_t', 'oif'), param('uint32_t', 'ttl')])
13.323 + ## ipv4-route.h: uint32_t ns3::Ipv4MulticastRoute::GetOutputTtl(uint32_t oif) const [member function]
13.324 + cls.add_method('GetOutputTtl',
13.325 + 'uint32_t',
13.326 + [param('uint32_t', 'oif')],
13.327 + is_const=True)
13.328 + return
13.329 +
13.330 +def register_Ns3Ipv4Route_methods(root_module, cls):
13.331 + cls.add_output_stream_operator()
13.332 + ## ipv4-route.h: ns3::Ipv4Route::Ipv4Route(ns3::Ipv4Route const & arg0) [copy constructor]
13.333 + cls.add_constructor([param('ns3::Ipv4Route const &', 'arg0')])
13.334 + ## ipv4-route.h: ns3::Ipv4Route::Ipv4Route() [constructor]
13.335 + cls.add_constructor([])
13.336 + ## ipv4-route.h: ns3::Ipv4Address ns3::Ipv4Route::GetDestination() const [member function]
13.337 + cls.add_method('GetDestination',
13.338 + 'ns3::Ipv4Address',
13.339 + [],
13.340 + is_const=True)
13.341 + ## ipv4-route.h: ns3::Ipv4Address ns3::Ipv4Route::GetGateway() const [member function]
13.342 + cls.add_method('GetGateway',
13.343 + 'ns3::Ipv4Address',
13.344 + [],
13.345 + is_const=True)
13.346 + ## ipv4-route.h: ns3::Ptr<ns3::NetDevice> ns3::Ipv4Route::GetOutputDevice() const [member function]
13.347 + cls.add_method('GetOutputDevice',
13.348 + 'ns3::Ptr< ns3::NetDevice >',
13.349 + [],
13.350 + is_const=True)
13.351 + ## ipv4-route.h: ns3::Ipv4Address ns3::Ipv4Route::GetSource() const [member function]
13.352 + cls.add_method('GetSource',
13.353 + 'ns3::Ipv4Address',
13.354 + [],
13.355 + is_const=True)
13.356 + ## ipv4-route.h: void ns3::Ipv4Route::SetDestination(ns3::Ipv4Address dest) [member function]
13.357 + cls.add_method('SetDestination',
13.358 + 'void',
13.359 + [param('ns3::Ipv4Address', 'dest')])
13.360 + ## ipv4-route.h: void ns3::Ipv4Route::SetGateway(ns3::Ipv4Address gw) [member function]
13.361 + cls.add_method('SetGateway',
13.362 + 'void',
13.363 + [param('ns3::Ipv4Address', 'gw')])
13.364 + ## ipv4-route.h: void ns3::Ipv4Route::SetOutputDevice(ns3::Ptr<ns3::NetDevice> outputDevice) [member function]
13.365 + cls.add_method('SetOutputDevice',
13.366 + 'void',
13.367 + [param('ns3::Ptr< ns3::NetDevice >', 'outputDevice')])
13.368 + ## ipv4-route.h: void ns3::Ipv4Route::SetSource(ns3::Ipv4Address src) [member function]
13.369 + cls.add_method('SetSource',
13.370 + 'void',
13.371 + [param('ns3::Ipv4Address', 'src')])
13.372 + return
13.373 +
13.374 def register_Ns3Ipv6AddressChecker_methods(root_module, cls):
13.375 ## ipv6-address.h: ns3::Ipv6AddressChecker::Ipv6AddressChecker(ns3::Ipv6AddressChecker const & arg0) [copy constructor]
13.376 cls.add_constructor([param('ns3::Ipv6AddressChecker const &', 'arg0')])
13.377 @@ -2219,6 +2332,16 @@
13.378 is_static=True)
13.379 ## udp-socket.h: ns3::UdpSocket::UdpSocket() [constructor]
13.380 cls.add_constructor([])
13.381 + ## udp-socket.h: int ns3::UdpSocket::MulticastJoinGroup(uint32_t interface, ns3::Address const & groupAddress) [member function]
13.382 + cls.add_method('MulticastJoinGroup',
13.383 + 'int',
13.384 + [param('uint32_t', 'interface'), param('ns3::Address const &', 'groupAddress')],
13.385 + is_pure_virtual=True, is_virtual=True)
13.386 + ## udp-socket.h: int ns3::UdpSocket::MulticastLeaveGroup(uint32_t interface, ns3::Address const & groupAddress) [member function]
13.387 + cls.add_method('MulticastLeaveGroup',
13.388 + 'int',
13.389 + [param('uint32_t', 'interface'), param('ns3::Address const &', 'groupAddress')],
13.390 + is_pure_virtual=True, is_virtual=True)
13.391 ## udp-socket.h: void ns3::UdpSocket::SetRcvBufSize(uint32_t size) [member function]
13.392 cls.add_method('SetRcvBufSize',
13.393 'void',
13.394 @@ -2229,24 +2352,44 @@
13.395 'uint32_t',
13.396 [],
13.397 is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
13.398 - ## udp-socket.h: void ns3::UdpSocket::SetIpTtl(uint32_t ipTtl) [member function]
13.399 + ## udp-socket.h: void ns3::UdpSocket::SetIpTtl(uint8_t ipTtl) [member function]
13.400 cls.add_method('SetIpTtl',
13.401 'void',
13.402 - [param('uint32_t', 'ipTtl')],
13.403 + [param('uint8_t', 'ipTtl')],
13.404 is_pure_virtual=True, visibility='private', is_virtual=True)
13.405 - ## udp-socket.h: uint32_t ns3::UdpSocket::GetIpTtl() const [member function]
13.406 + ## udp-socket.h: uint8_t ns3::UdpSocket::GetIpTtl() const [member function]
13.407 cls.add_method('GetIpTtl',
13.408 - 'uint32_t',
13.409 + 'uint8_t',
13.410 [],
13.411 is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
13.412 - ## udp-socket.h: void ns3::UdpSocket::SetIpMulticastTtl(uint32_t ipTtl) [member function]
13.413 + ## udp-socket.h: void ns3::UdpSocket::SetIpMulticastTtl(uint8_t ipTtl) [member function]
13.414 cls.add_method('SetIpMulticastTtl',
13.415 'void',
13.416 - [param('uint32_t', 'ipTtl')],
13.417 + [param('uint8_t', 'ipTtl')],
13.418 is_pure_virtual=True, visibility='private', is_virtual=True)
13.419 - ## udp-socket.h: uint32_t ns3::UdpSocket::GetIpMulticastTtl() const [member function]
13.420 + ## udp-socket.h: uint8_t ns3::UdpSocket::GetIpMulticastTtl() const [member function]
13.421 cls.add_method('GetIpMulticastTtl',
13.422 - 'uint32_t',
13.423 + 'uint8_t',
13.424 + [],
13.425 + is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
13.426 + ## udp-socket.h: void ns3::UdpSocket::SetIpMulticastIf(int32_t ipIf) [member function]
13.427 + cls.add_method('SetIpMulticastIf',
13.428 + 'void',
13.429 + [param('int32_t', 'ipIf')],
13.430 + is_pure_virtual=True, visibility='private', is_virtual=True)
13.431 + ## udp-socket.h: int32_t ns3::UdpSocket::GetIpMulticastIf() const [member function]
13.432 + cls.add_method('GetIpMulticastIf',
13.433 + 'int32_t',
13.434 + [],
13.435 + is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
13.436 + ## udp-socket.h: void ns3::UdpSocket::SetIpMulticastLoop(bool loop) [member function]
13.437 + cls.add_method('SetIpMulticastLoop',
13.438 + 'void',
13.439 + [param('bool', 'loop')],
13.440 + is_pure_virtual=True, visibility='private', is_virtual=True)
13.441 + ## udp-socket.h: bool ns3::UdpSocket::GetIpMulticastLoop() const [member function]
13.442 + cls.add_method('GetIpMulticastLoop',
13.443 + 'bool',
13.444 [],
13.445 is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
13.446 ## udp-socket.h: void ns3::UdpSocket::SetMtuDiscover(bool discover) [member function]
13.447 @@ -2572,6 +2715,8 @@
13.448 return
13.449
13.450 def register_Ns3Ipv4_methods(root_module, cls):
13.451 + ## ipv4.h: ns3::Ipv4::IF_ANY [variable]
13.452 + cls.add_static_attribute('IF_ANY', 'uint32_t const', is_const=True)
13.453 ## ipv4.h: ns3::Ipv4::Ipv4(ns3::Ipv4 const & arg0) [copy constructor]
13.454 cls.add_constructor([param('ns3::Ipv4 const &', 'arg0')])
13.455 ## ipv4.h: static ns3::TypeId ns3::Ipv4::GetTypeId() [member function]
13.456 @@ -2581,81 +2726,16 @@
13.457 is_static=True)
13.458 ## ipv4.h: ns3::Ipv4::Ipv4() [constructor]
13.459 cls.add_constructor([])
13.460 - ## ipv4.h: void ns3::Ipv4::AddRoutingProtocol(ns3::Ptr<ns3::Ipv4RoutingProtocol> routingProtocol, int16_t priority) [member function]
13.461 - cls.add_method('AddRoutingProtocol',
13.462 + ## ipv4.h: void ns3::Ipv4::SetRoutingProtocol(ns3::Ptr<ns3::Ipv4RoutingProtocol> routingProtocol) [member function]
13.463 + cls.add_method('SetRoutingProtocol',
13.464 'void',
13.465 - [param('ns3::Ptr< ns3::Ipv4RoutingProtocol >', 'routingProtocol'), param('int16_t', 'priority')],
13.466 + [param('ns3::Ptr< ns3::Ipv4RoutingProtocol >', 'routingProtocol')],
13.467 is_pure_virtual=True, is_virtual=True)
13.468 - ## ipv4.h: void ns3::Ipv4::AddHostRouteTo(ns3::Ipv4Address dest, ns3::Ipv4Address nextHop, uint32_t interface) [member function]
13.469 - cls.add_method('AddHostRouteTo',
13.470 - 'void',
13.471 - [param('ns3::Ipv4Address', 'dest'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')],
13.472 - is_pure_virtual=True, is_virtual=True)
13.473 - ## ipv4.h: void ns3::Ipv4::AddHostRouteTo(ns3::Ipv4Address dest, uint32_t interface) [member function]
13.474 - cls.add_method('AddHostRouteTo',
13.475 - 'void',
13.476 - [param('ns3::Ipv4Address', 'dest'), param('uint32_t', 'interface')],
13.477 - is_pure_virtual=True, is_virtual=True)
13.478 - ## ipv4.h: void ns3::Ipv4::AddNetworkRouteTo(ns3::Ipv4Address network, ns3::Ipv4Mask networkMask, ns3::Ipv4Address nextHop, uint32_t interface) [member function]
13.479 - cls.add_method('AddNetworkRouteTo',
13.480 - 'void',
13.481 - [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')],
13.482 - is_pure_virtual=True, is_virtual=True)
13.483 - ## ipv4.h: void ns3::Ipv4::AddNetworkRouteTo(ns3::Ipv4Address network, ns3::Ipv4Mask networkMask, uint32_t interface) [member function]
13.484 - cls.add_method('AddNetworkRouteTo',
13.485 - 'void',
13.486 - [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('uint32_t', 'interface')],
13.487 - is_pure_virtual=True, is_virtual=True)
13.488 - ## ipv4.h: void ns3::Ipv4::SetDefaultRoute(ns3::Ipv4Address nextHop, uint32_t interface) [member function]
13.489 - cls.add_method('SetDefaultRoute',
13.490 - 'void',
13.491 - [param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')],
13.492 - is_pure_virtual=True, is_virtual=True)
13.493 - ## ipv4.h: uint32_t ns3::Ipv4::GetNRoutes() [member function]
13.494 - cls.add_method('GetNRoutes',
13.495 - 'uint32_t',
13.496 - [],
13.497 - is_pure_virtual=True, is_virtual=True)
13.498 - ## ipv4.h: ns3::Ipv4Route ns3::Ipv4::GetRoute(uint32_t i) [member function]
13.499 - cls.add_method('GetRoute',
13.500 - 'ns3::Ipv4Route',
13.501 - [param('uint32_t', 'i')],
13.502 - is_pure_virtual=True, is_virtual=True)
13.503 - ## ipv4.h: void ns3::Ipv4::RemoveRoute(uint32_t i) [member function]
13.504 - cls.add_method('RemoveRoute',
13.505 - 'void',
13.506 - [param('uint32_t', 'i')],
13.507 - is_pure_virtual=True, is_virtual=True)
13.508 - ## ipv4.h: void ns3::Ipv4::AddMulticastRoute(ns3::Ipv4Address origin, ns3::Ipv4Address group, uint32_t inputInterface, std::vector<unsigned int, std::allocator<unsigned int> > outputInterfaces) [member function]
13.509 - cls.add_method('AddMulticastRoute',
13.510 - 'void',
13.511 - [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface'), param('std::vector< unsigned int >', 'outputInterfaces')],
13.512 - is_pure_virtual=True, is_virtual=True)
13.513 - ## ipv4.h: void ns3::Ipv4::RemoveMulticastRoute(ns3::Ipv4Address origin, ns3::Ipv4Address group, uint32_t inputInterface) [member function]
13.514 - cls.add_method('RemoveMulticastRoute',
13.515 - 'void',
13.516 - [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface')],
13.517 - is_pure_virtual=True, is_virtual=True)
13.518 - ## ipv4.h: void ns3::Ipv4::SetDefaultMulticastRoute(uint32_t outputInterface) [member function]
13.519 - cls.add_method('SetDefaultMulticastRoute',
13.520 - 'void',
13.521 - [param('uint32_t', 'outputInterface')],
13.522 - is_pure_virtual=True, is_virtual=True)
13.523 - ## ipv4.h: uint32_t ns3::Ipv4::GetNMulticastRoutes() const [member function]
13.524 - cls.add_method('GetNMulticastRoutes',
13.525 - 'uint32_t',
13.526 + ## ipv4.h: ns3::Ptr<ns3::Ipv4RoutingProtocol> ns3::Ipv4::GetRoutingProtocol() const [member function]
13.527 + cls.add_method('GetRoutingProtocol',
13.528 + 'ns3::Ptr< ns3::Ipv4RoutingProtocol >',
13.529 [],
13.530 is_pure_virtual=True, is_const=True, is_virtual=True)
13.531 - ## ipv4.h: ns3::Ipv4MulticastRoute ns3::Ipv4::GetMulticastRoute(uint32_t i) const [member function]
13.532 - cls.add_method('GetMulticastRoute',
13.533 - 'ns3::Ipv4MulticastRoute',
13.534 - [param('uint32_t', 'i')],
13.535 - is_pure_virtual=True, is_const=True, is_virtual=True)
13.536 - ## ipv4.h: void ns3::Ipv4::RemoveMulticastRoute(uint32_t i) [member function]
13.537 - cls.add_method('RemoveMulticastRoute',
13.538 - 'void',
13.539 - [param('uint32_t', 'i')],
13.540 - is_pure_virtual=True, is_virtual=True)
13.541 ## ipv4.h: uint32_t ns3::Ipv4::AddInterface(ns3::Ptr<ns3::NetDevice> device) [member function]
13.542 cls.add_method('AddInterface',
13.543 'uint32_t',
13.544 @@ -2666,36 +2746,26 @@
13.545 'uint32_t',
13.546 [],
13.547 is_pure_virtual=True, is_const=True, is_virtual=True)
13.548 - ## ipv4.h: uint32_t ns3::Ipv4::FindInterfaceForAddr(ns3::Ipv4Address addr) const [member function]
13.549 - cls.add_method('FindInterfaceForAddr',
13.550 - 'uint32_t',
13.551 - [param('ns3::Ipv4Address', 'addr')],
13.552 + ## ipv4.h: int32_t ns3::Ipv4::GetInterfaceForAddress(ns3::Ipv4Address address) const [member function]
13.553 + cls.add_method('GetInterfaceForAddress',
13.554 + 'int32_t',
13.555 + [param('ns3::Ipv4Address', 'address')],
13.556 is_pure_virtual=True, is_const=True, is_virtual=True)
13.557 - ## ipv4.h: uint32_t ns3::Ipv4::FindInterfaceForAddr(ns3::Ipv4Address addr, ns3::Ipv4Mask mask) const [member function]
13.558 - cls.add_method('FindInterfaceForAddr',
13.559 - 'uint32_t',
13.560 - [param('ns3::Ipv4Address', 'addr'), param('ns3::Ipv4Mask', 'mask')],
13.561 + ## ipv4.h: int32_t ns3::Ipv4::GetInterfaceForPrefix(ns3::Ipv4Address address, ns3::Ipv4Mask mask) const [member function]
13.562 + cls.add_method('GetInterfaceForPrefix',
13.563 + 'int32_t',
13.564 + [param('ns3::Ipv4Address', 'address'), param('ns3::Ipv4Mask', 'mask')],
13.565 is_pure_virtual=True, is_const=True, is_virtual=True)
13.566 - ## ipv4.h: int32_t ns3::Ipv4::FindInterfaceForDevice(ns3::Ptr<ns3::NetDevice> nd) const [member function]
13.567 - cls.add_method('FindInterfaceForDevice',
13.568 - 'int32_t',
13.569 - [param('ns3::Ptr< ns3::NetDevice >', 'nd')],
13.570 - is_pure_virtual=True, is_const=True, is_virtual=True)
13.571 - ## ipv4.h: ns3::Ptr<ns3::NetDevice> ns3::Ipv4::GetNetDevice(uint32_t i) [member function]
13.572 + ## ipv4.h: ns3::Ptr<ns3::NetDevice> ns3::Ipv4::GetNetDevice(uint32_t interface) [member function]
13.573 cls.add_method('GetNetDevice',
13.574 'ns3::Ptr< ns3::NetDevice >',
13.575 - [param('uint32_t', 'i')],
13.576 + [param('uint32_t', 'interface')],
13.577 is_pure_virtual=True, is_virtual=True)
13.578 - ## ipv4.h: void ns3::Ipv4::JoinMulticastGroup(ns3::Ipv4Address origin, ns3::Ipv4Address group) [member function]
13.579 - cls.add_method('JoinMulticastGroup',
13.580 - 'void',
13.581 - [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group')],
13.582 - is_pure_virtual=True, is_virtual=True)
13.583 - ## ipv4.h: void ns3::Ipv4::LeaveMulticastGroup(ns3::Ipv4Address origin, ns3::Ipv4Address group) [member function]
13.584 - cls.add_method('LeaveMulticastGroup',
13.585 - 'void',
13.586 - [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group')],
13.587 - is_pure_virtual=True, is_virtual=True)
13.588 + ## ipv4.h: int32_t ns3::Ipv4::GetInterfaceForDevice(ns3::Ptr<const ns3::NetDevice> device) const [member function]
13.589 + cls.add_method('GetInterfaceForDevice',
13.590 + 'int32_t',
13.591 + [param('ns3::Ptr< ns3::NetDevice const >', 'device')],
13.592 + is_pure_virtual=True, is_const=True, is_virtual=True)
13.593 ## ipv4.h: uint32_t ns3::Ipv4::AddAddress(uint32_t interface, ns3::Ipv4InterfaceAddress address) [member function]
13.594 cls.add_method('AddAddress',
13.595 'uint32_t',
13.596 @@ -2711,51 +2781,46 @@
13.597 'ns3::Ipv4InterfaceAddress',
13.598 [param('uint32_t', 'interface'), param('uint32_t', 'addressIndex')],
13.599 is_pure_virtual=True, is_const=True, is_virtual=True)
13.600 - ## ipv4.h: void ns3::Ipv4::SetMetric(uint32_t i, uint16_t metric) [member function]
13.601 + ## ipv4.h: void ns3::Ipv4::SetMetric(uint32_t interface, uint16_t metric) [member function]
13.602 cls.add_method('SetMetric',
13.603 'void',
13.604 - [param('uint32_t', 'i'), param('uint16_t', 'metric')],
13.605 + [param('uint32_t', 'interface'), param('uint16_t', 'metric')],
13.606 is_pure_virtual=True, is_virtual=True)
13.607 - ## ipv4.h: uint16_t ns3::Ipv4::GetMetric(uint32_t i) const [member function]
13.608 + ## ipv4.h: uint16_t ns3::Ipv4::GetMetric(uint32_t interface) const [member function]
13.609 cls.add_method('GetMetric',
13.610 'uint16_t',
13.611 - [param('uint32_t', 'i')],
13.612 + [param('uint32_t', 'interface')],
13.613 is_pure_virtual=True, is_const=True, is_virtual=True)
13.614 - ## ipv4.h: ns3::Ipv4Address ns3::Ipv4::GetSourceAddress(ns3::Ipv4Address destination) const [member function]
13.615 - cls.add_method('GetSourceAddress',
13.616 - 'ns3::Ipv4Address',
13.617 - [param('ns3::Ipv4Address', 'destination')],
13.618 - is_pure_virtual=True, is_const=True, is_virtual=True)
13.619 - ## ipv4.h: bool ns3::Ipv4::GetInterfaceForDestination(ns3::Ipv4Address dest, uint32_t & interface) const [member function]
13.620 - cls.add_method('GetInterfaceForDestination',
13.621 - 'bool',
13.622 - [param('ns3::Ipv4Address', 'dest'), param('uint32_t &', 'interface')],
13.623 - is_pure_virtual=True, is_const=True, is_virtual=True)
13.624 - ## ipv4.h: uint16_t ns3::Ipv4::GetMtu(uint32_t i) const [member function]
13.625 + ## ipv4.h: uint16_t ns3::Ipv4::GetMtu(uint32_t interface) const [member function]
13.626 cls.add_method('GetMtu',
13.627 'uint16_t',
13.628 - [param('uint32_t', 'i')],
13.629 + [param('uint32_t', 'interface')],
13.630 is_pure_virtual=True, is_const=True, is_virtual=True)
13.631 - ## ipv4.h: bool ns3::Ipv4::IsUp(uint32_t i) const [member function]
13.632 + ## ipv4.h: bool ns3::Ipv4::IsUp(uint32_t interface) const [member function]
13.633 cls.add_method('IsUp',
13.634 'bool',
13.635 - [param('uint32_t', 'i')],
13.636 + [param('uint32_t', 'interface')],
13.637 is_pure_virtual=True, is_const=True, is_virtual=True)
13.638 - ## ipv4.h: void ns3::Ipv4::SetUp(uint32_t i) [member function]
13.639 + ## ipv4.h: void ns3::Ipv4::SetUp(uint32_t interface) [member function]
13.640 cls.add_method('SetUp',
13.641 'void',
13.642 - [param('uint32_t', 'i')],
13.643 + [param('uint32_t', 'interface')],
13.644 is_pure_virtual=True, is_virtual=True)
13.645 - ## ipv4.h: void ns3::Ipv4::SetDown(uint32_t i) [member function]
13.646 + ## ipv4.h: void ns3::Ipv4::SetDown(uint32_t interface) [member function]
13.647 cls.add_method('SetDown',
13.648 'void',
13.649 - [param('uint32_t', 'i')],
13.650 + [param('uint32_t', 'interface')],
13.651 is_pure_virtual=True, is_virtual=True)
13.652 - ## ipv4.h: uint32_t ns3::Ipv4::GetInterfaceByAddress(ns3::Ipv4Address addr, ns3::Ipv4Mask mask=ns3::Ipv4Mask(((const char*)"255.255.255.255"))) [member function]
13.653 - cls.add_method('GetInterfaceByAddress',
13.654 - 'uint32_t',
13.655 - [param('ns3::Ipv4Address', 'addr'), param('ns3::Ipv4Mask', 'mask', default_value='ns3::Ipv4Mask(((const char*)"255.255.255.255"))')],
13.656 - is_virtual=True)
13.657 + ## ipv4.h: void ns3::Ipv4::SetIpForward(bool forward) [member function]
13.658 + cls.add_method('SetIpForward',
13.659 + 'void',
13.660 + [param('bool', 'forward')],
13.661 + is_pure_virtual=True, visibility='private', is_virtual=True)
13.662 + ## ipv4.h: bool ns3::Ipv4::GetIpForward() const [member function]
13.663 + cls.add_method('GetIpForward',
13.664 + 'bool',
13.665 + [],
13.666 + is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
13.667 return
13.668
13.669 def register_Ns3Ipv4RawSocketFactory_methods(root_module, cls):
13.670 @@ -2771,22 +2836,122 @@
13.671 return
13.672
13.673 def register_Ns3Ipv4RoutingProtocol_methods(root_module, cls):
13.674 - ## ipv4.h: ns3::Ipv4RoutingProtocol::INTERFACE_ANY [variable]
13.675 - cls.add_static_attribute('INTERFACE_ANY', 'uint32_t const', is_const=True)
13.676 - ## ipv4.h: ns3::Ipv4RoutingProtocol::Ipv4RoutingProtocol(ns3::Ipv4RoutingProtocol const & arg0) [copy constructor]
13.677 + ## ipv4-routing-protocol.h: ns3::Ipv4RoutingProtocol::Ipv4RoutingProtocol(ns3::Ipv4RoutingProtocol const & arg0) [copy constructor]
13.678 cls.add_constructor([param('ns3::Ipv4RoutingProtocol const &', 'arg0')])
13.679 - ## ipv4.h: ns3::Ipv4RoutingProtocol::Ipv4RoutingProtocol() [constructor]
13.680 + ## ipv4-routing-protocol.h: ns3::Ipv4RoutingProtocol::Ipv4RoutingProtocol() [constructor]
13.681 cls.add_constructor([])
13.682 - ## ipv4.h: bool ns3::Ipv4RoutingProtocol::RequestRoute(uint32_t interface, ns3::Ipv4Header const & ipHeader, ns3::Ptr<ns3::Packet> packet, ns3::Callback<void,bool,const ns3::Ipv4Route&,ns3::Ptr<ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> routeReply) [member function]
13.683 - cls.add_method('RequestRoute',
13.684 + ## ipv4-routing-protocol.h: static ns3::TypeId ns3::Ipv4RoutingProtocol::GetTypeId() [member function]
13.685 + cls.add_method('GetTypeId',
13.686 + 'ns3::TypeId',
13.687 + [],
13.688 + is_static=True)
13.689 + ## ipv4-routing-protocol.h: ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4RoutingProtocol::RouteOutput(ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
13.690 + cls.add_method('RouteOutput',
13.691 + 'ns3::Ptr< ns3::Ipv4Route >',
13.692 + [param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')],
13.693 + is_pure_virtual=True, is_virtual=True)
13.694 + ## ipv4-routing-protocol.h: bool ns3::Ipv4RoutingProtocol::RouteInput(ns3::Ptr<ns3::Packet const> p, ns3::Ipv4Header const & header, ns3::Ptr<const ns3::NetDevice> idev, ns3::Callback<void,ns3::Ptr<ns3::Ipv4Route>,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ucb, ns3::Callback<void,ns3::Ptr<ns3::Ipv4MulticastRoute>,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> mcb, ns3::Callback<void,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,unsigned int,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> lcb, ns3::Callback<void,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ecb) [member function]
13.695 + cls.add_method('RouteInput',
13.696 'bool',
13.697 - [param('uint32_t', 'interface'), param('ns3::Ipv4Header const &', 'ipHeader'), param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Callback< void, bool, ns3::Ipv4Route const &, ns3::Ptr< ns3::Packet >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'routeReply')],
13.698 + [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')],
13.699 is_pure_virtual=True, is_virtual=True)
13.700 - ## ipv4.h: bool ns3::Ipv4RoutingProtocol::RequestInterface(ns3::Ipv4Address destination, uint32_t & interface) [member function]
13.701 - cls.add_method('RequestInterface',
13.702 + return
13.703 +
13.704 +def register_Ns3Ipv4StaticRouting_methods(root_module, cls):
13.705 + ## ipv4-static-routing.h: ns3::Ipv4StaticRouting::Ipv4StaticRouting(ns3::Ipv4StaticRouting const & arg0) [copy constructor]
13.706 + cls.add_constructor([param('ns3::Ipv4StaticRouting const &', 'arg0')])
13.707 + ## ipv4-static-routing.h: ns3::Ipv4StaticRouting::Ipv4StaticRouting() [constructor]
13.708 + cls.add_constructor([])
13.709 + ## ipv4-static-routing.h: static ns3::TypeId ns3::Ipv4StaticRouting::GetTypeId() [member function]
13.710 + cls.add_method('GetTypeId',
13.711 + 'ns3::TypeId',
13.712 + [],
13.713 + is_static=True)
13.714 + ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::AddHostRouteTo(ns3::Ipv4Address dest, ns3::Ipv4Address nextHop, uint32_t interface) [member function]
13.715 + cls.add_method('AddHostRouteTo',
13.716 + 'void',
13.717 + [param('ns3::Ipv4Address', 'dest'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')],
13.718 + is_pure_virtual=True, is_virtual=True)
13.719 + ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::AddHostRouteTo(ns3::Ipv4Address dest, uint32_t interface) [member function]
13.720 + cls.add_method('AddHostRouteTo',
13.721 + 'void',
13.722 + [param('ns3::Ipv4Address', 'dest'), param('uint32_t', 'interface')],
13.723 + is_pure_virtual=True, is_virtual=True)
13.724 + ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::AddNetworkRouteTo(ns3::Ipv4Address network, ns3::Ipv4Mask networkMask, ns3::Ipv4Address nextHop, uint32_t interface) [member function]
13.725 + cls.add_method('AddNetworkRouteTo',
13.726 + 'void',
13.727 + [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')],
13.728 + is_pure_virtual=True, is_virtual=True)
13.729 + ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::AddNetworkRouteTo(ns3::Ipv4Address network, ns3::Ipv4Mask networkMask, uint32_t interface) [member function]
13.730 + cls.add_method('AddNetworkRouteTo',
13.731 + 'void',
13.732 + [param('ns3::Ipv4Address', 'network'), param('ns3::Ipv4Mask', 'networkMask'), param('uint32_t', 'interface')],
13.733 + is_pure_virtual=True, is_virtual=True)
13.734 + ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::SetDefaultRoute(ns3::Ipv4Address nextHop, uint32_t interface) [member function]
13.735 + cls.add_method('SetDefaultRoute',
13.736 + 'void',
13.737 + [param('ns3::Ipv4Address', 'nextHop'), param('uint32_t', 'interface')],
13.738 + is_pure_virtual=True, is_virtual=True)
13.739 + ## ipv4-static-routing.h: uint32_t ns3::Ipv4StaticRouting::GetNRoutes() [member function]
13.740 + cls.add_method('GetNRoutes',
13.741 + 'uint32_t',
13.742 + [],
13.743 + is_pure_virtual=True, is_virtual=True)
13.744 + ## ipv4-static-routing.h: ns3::Ipv4RoutingTableEntry ns3::Ipv4StaticRouting::GetDefaultRoute() [member function]
13.745 + cls.add_method('GetDefaultRoute',
13.746 + 'ns3::Ipv4RoutingTableEntry',
13.747 + [],
13.748 + is_pure_virtual=True, is_virtual=True)
13.749 + ## ipv4-static-routing.h: ns3::Ipv4RoutingTableEntry ns3::Ipv4StaticRouting::GetRoute(uint32_t i) [member function]
13.750 + cls.add_method('GetRoute',
13.751 + 'ns3::Ipv4RoutingTableEntry',
13.752 + [param('uint32_t', 'i')],
13.753 + is_pure_virtual=True, is_virtual=True)
13.754 + ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::RemoveRoute(uint32_t i) [member function]
13.755 + cls.add_method('RemoveRoute',
13.756 + 'void',
13.757 + [param('uint32_t', 'i')],
13.758 + is_pure_virtual=True, is_virtual=True)
13.759 + ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::AddMulticastRoute(ns3::Ipv4Address origin, ns3::Ipv4Address group, uint32_t inputInterface, std::vector<unsigned int, std::allocator<unsigned int> > outputInterfaces) [member function]
13.760 + cls.add_method('AddMulticastRoute',
13.761 + 'void',
13.762 + [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface'), param('std::vector< unsigned int >', 'outputInterfaces')],
13.763 + is_pure_virtual=True, is_virtual=True)
13.764 + ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::SetDefaultMulticastRoute(uint32_t outputInterface) [member function]
13.765 + cls.add_method('SetDefaultMulticastRoute',
13.766 + 'void',
13.767 + [param('uint32_t', 'outputInterface')],
13.768 + is_pure_virtual=True, is_virtual=True)
13.769 + ## ipv4-static-routing.h: uint32_t ns3::Ipv4StaticRouting::GetNMulticastRoutes() const [member function]
13.770 + cls.add_method('GetNMulticastRoutes',
13.771 + 'uint32_t',
13.772 + [],
13.773 + is_pure_virtual=True, is_const=True, is_virtual=True)
13.774 + ## ipv4-static-routing.h: ns3::Ipv4MulticastRoutingTableEntry ns3::Ipv4StaticRouting::GetMulticastRoute(uint32_t i) const [member function]
13.775 + cls.add_method('GetMulticastRoute',
13.776 + 'ns3::Ipv4MulticastRoutingTableEntry',
13.777 + [param('uint32_t', 'i')],
13.778 + is_pure_virtual=True, is_const=True, is_virtual=True)
13.779 + ## ipv4-static-routing.h: bool ns3::Ipv4StaticRouting::RemoveMulticastRoute(ns3::Ipv4Address origin, ns3::Ipv4Address group, uint32_t inputInterface) [member function]
13.780 + cls.add_method('RemoveMulticastRoute',
13.781 'bool',
13.782 - [param('ns3::Ipv4Address', 'destination'), param('uint32_t &', 'interface')],
13.783 + [param('ns3::Ipv4Address', 'origin'), param('ns3::Ipv4Address', 'group'), param('uint32_t', 'inputInterface')],
13.784 is_pure_virtual=True, is_virtual=True)
13.785 + ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::RemoveMulticastRoute(uint32_t index) [member function]
13.786 + cls.add_method('RemoveMulticastRoute',
13.787 + 'void',
13.788 + [param('uint32_t', 'index')],
13.789 + is_pure_virtual=True, is_virtual=True)
13.790 + ## ipv4-static-routing.h: void ns3::Ipv4StaticRouting::SetNode(ns3::Ptr<ns3::Node> node) [member function]
13.791 + cls.add_method('SetNode',
13.792 + 'void',
13.793 + [param('ns3::Ptr< ns3::Node >', 'node')],
13.794 + is_pure_virtual=True, is_virtual=True)
13.795 + ## ipv4-static-routing.h: ns3::Ptr<ns3::Node> ns3::Ipv4StaticRouting::GetNode() const [member function]
13.796 + cls.add_method('GetNode',
13.797 + 'ns3::Ptr< ns3::Node >',
13.798 + [],
13.799 + is_pure_virtual=True, is_const=True, is_virtual=True)
13.800 return
13.801
13.802 def register_Ns3NetDevice_methods(root_module, cls):
13.803 @@ -3177,6 +3342,33 @@
13.804 visibility='protected', is_virtual=True)
13.805 return
13.806
13.807 +def register_Ns3Ipv4ListRouting_methods(root_module, cls):
13.808 + ## ipv4-list-routing.h: ns3::Ipv4ListRouting::Ipv4ListRouting(ns3::Ipv4ListRouting const & arg0) [copy constructor]
13.809 + cls.add_constructor([param('ns3::Ipv4ListRouting const &', 'arg0')])
13.810 + ## ipv4-list-routing.h: ns3::Ipv4ListRouting::Ipv4ListRouting() [constructor]
13.811 + cls.add_constructor([])
13.812 + ## ipv4-list-routing.h: static ns3::TypeId ns3::Ipv4ListRouting::GetTypeId() [member function]
13.813 + cls.add_method('GetTypeId',
13.814 + 'ns3::TypeId',
13.815 + [],
13.816 + is_static=True)
13.817 + ## ipv4-list-routing.h: void ns3::Ipv4ListRouting::AddRoutingProtocol(ns3::Ptr<ns3::Ipv4RoutingProtocol> routingProtocol, int16_t priority) [member function]
13.818 + cls.add_method('AddRoutingProtocol',
13.819 + 'void',
13.820 + [param('ns3::Ptr< ns3::Ipv4RoutingProtocol >', 'routingProtocol'), param('int16_t', 'priority')],
13.821 + is_pure_virtual=True, is_virtual=True)
13.822 + ## ipv4-list-routing.h: uint32_t ns3::Ipv4ListRouting::GetNRoutingProtocols() const [member function]
13.823 + cls.add_method('GetNRoutingProtocols',
13.824 + 'uint32_t',
13.825 + [],
13.826 + is_pure_virtual=True, is_const=True, is_virtual=True)
13.827 + ## ipv4-list-routing.h: ns3::Ptr<ns3::Ipv4RoutingProtocol> ns3::Ipv4ListRouting::GetRoutingProtocol(uint32_t index, int16_t & priority) const [member function]
13.828 + cls.add_method('GetRoutingProtocol',
13.829 + 'ns3::Ptr< ns3::Ipv4RoutingProtocol >',
13.830 + [param('uint32_t', 'index'), param('int16_t &', 'priority')],
13.831 + is_pure_virtual=True, is_const=True, is_virtual=True)
13.832 + return
13.833 +
13.834 def register_functions(root_module):
13.835 module = root_module
13.836 ## address.h: extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeAddressChecker() [free function]
13.837 @@ -3237,6 +3429,7 @@
13.838 [param('ns3::Buffer::Iterator &', 'i'), param('ns3::Mac48Address', 'ad')])
13.839 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
13.840 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
13.841 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
13.842 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
13.843 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
13.844 return
13.845 @@ -3247,6 +3440,13 @@
13.846 def register_functions_ns3_TimeStepPrecision(module, root_module):
13.847 return
13.848
13.849 +def register_functions_ns3_addressUtils(module, root_module):
13.850 + ## address-utils.h: extern bool ns3::addressUtils::IsMulticast(ns3::Address const & ad) [free function]
13.851 + module.add_function('IsMulticast',
13.852 + 'bool',
13.853 + [param('ns3::Address const &', 'ad')])
13.854 + return
13.855 +
13.856 def register_functions_ns3_internal(module, root_module):
13.857 return
13.858
14.1 --- a/bindings/python/ns3_module_olsr.py Sat May 30 17:36:50 2009 +0100
14.2 +++ b/bindings/python/ns3_module_olsr.py Sat May 30 17:37:38 2009 +0100
14.3 @@ -1,4 +1,4 @@
14.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
14.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
14.6
14.7 def register_types(module):
14.8 root_module = module.get_root()
14.9 @@ -24,6 +24,12 @@
14.10 register_types_ns3_TimeStepPrecision(nested_module)
14.11
14.12
14.13 + ## Register a nested module for the namespace addressUtils
14.14 +
14.15 + nested_module = module.add_cpp_namespace('addressUtils')
14.16 + register_types_ns3_addressUtils(nested_module)
14.17 +
14.18 +
14.19 ## Register a nested module for the namespace internal
14.20
14.21 nested_module = module.add_cpp_namespace('internal')
14.22 @@ -44,6 +50,10 @@
14.23 root_module = module.get_root()
14.24
14.25
14.26 +def register_types_ns3_addressUtils(module):
14.27 + root_module = module.get_root()
14.28 +
14.29 +
14.30 def register_types_ns3_internal(module):
14.31 root_module = module.get_root()
14.32
14.33 @@ -91,6 +101,15 @@
14.34 module.add_class('TwoHopNeighborTuple')
14.35 module.add_container('std::vector< ns3::olsr::MessageHeader::Hello::LinkMessage >', 'ns3::olsr::MessageHeader::Hello::LinkMessage', container_type='vector')
14.36 module.add_container('std::vector< ns3::olsr::MessageHeader::Hna::Association >', 'ns3::olsr::MessageHeader::Hna::Association', container_type='vector')
14.37 + typehandlers.add_type_alias('std::vector< ns3::olsr::DuplicateTuple, std::allocator< ns3::olsr::DuplicateTuple > >', 'ns3::olsr::DuplicateSet')
14.38 + typehandlers.add_type_alias('std::vector< ns3::olsr::TopologyTuple, std::allocator< ns3::olsr::TopologyTuple > >', 'ns3::olsr::TopologySet')
14.39 + typehandlers.add_type_alias('std::set< ns3::Ipv4Address, std::less< ns3::Ipv4Address >, std::allocator< ns3::Ipv4Address > >', 'ns3::olsr::MprSet')
14.40 + typehandlers.add_type_alias('std::vector< ns3::olsr::MprSelectorTuple, std::allocator< ns3::olsr::MprSelectorTuple > >', 'ns3::olsr::MprSelectorSet')
14.41 + typehandlers.add_type_alias('std::vector< ns3::olsr::MessageHeader, std::allocator< ns3::olsr::MessageHeader > >', 'ns3::olsr::MessageList')
14.42 + typehandlers.add_type_alias('std::vector< ns3::olsr::IfaceAssocTuple, std::allocator< ns3::olsr::IfaceAssocTuple > >', 'ns3::olsr::IfaceAssocSet')
14.43 + typehandlers.add_type_alias('std::vector< ns3::olsr::NeighborTuple, std::allocator< ns3::olsr::NeighborTuple > >', 'ns3::olsr::NeighborSet')
14.44 + typehandlers.add_type_alias('std::vector< ns3::olsr::TwoHopNeighborTuple, std::allocator< ns3::olsr::TwoHopNeighborTuple > >', 'ns3::olsr::TwoHopNeighborSet')
14.45 + typehandlers.add_type_alias('std::vector< ns3::olsr::LinkTuple, std::allocator< ns3::olsr::LinkTuple > >', 'ns3::olsr::LinkSet')
14.46
14.47 def register_methods(root_module):
14.48 register_Ns3OlsrState_methods(root_module, root_module['ns3::OlsrState'])
14.49 @@ -740,15 +759,15 @@
14.50 cls.add_method('SetMainInterface',
14.51 'void',
14.52 [param('uint32_t', 'interface')])
14.53 - ## olsr-routing-protocol.h: bool ns3::olsr::RoutingProtocol::RequestRoute(uint32_t ifIndex, ns3::Ipv4Header const & ipHeader, ns3::Ptr<ns3::Packet> packet, ns3::Callback<void,bool,const ns3::Ipv4Route&,ns3::Ptr<ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> routeReply) [member function]
14.54 - cls.add_method('RequestRoute',
14.55 + ## olsr-routing-protocol.h: ns3::Ptr<ns3::Ipv4Route> ns3::olsr::RoutingProtocol::RouteOutput(ns3::Ipv4Header const & header, uint32_t oif, ns3::Socket::SocketErrno & sockerr) [member function]
14.56 + cls.add_method('RouteOutput',
14.57 + 'ns3::Ptr< ns3::Ipv4Route >',
14.58 + [param('ns3::Ipv4Header const &', 'header'), param('uint32_t', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')],
14.59 + visibility='private', is_virtual=True)
14.60 + ## olsr-routing-protocol.h: bool ns3::olsr::RoutingProtocol::RouteInput(ns3::Ptr<ns3::Packet const> p, ns3::Ipv4Header const & header, ns3::Ptr<const ns3::NetDevice> idev, ns3::Callback<void,ns3::Ptr<ns3::Ipv4Route>,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ucb, ns3::Callback<void,ns3::Ptr<ns3::Ipv4MulticastRoute>,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> mcb, ns3::Callback<void,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,unsigned int,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> lcb, ns3::Callback<void,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ecb) [member function]
14.61 + cls.add_method('RouteInput',
14.62 'bool',
14.63 - [param('uint32_t', 'ifIndex'), param('ns3::Ipv4Header const &', 'ipHeader'), param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Callback< void, bool, ns3::Ipv4Route const &, ns3::Ptr< ns3::Packet >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'routeReply')],
14.64 - visibility='private', is_virtual=True)
14.65 - ## olsr-routing-protocol.h: bool ns3::olsr::RoutingProtocol::RequestInterface(ns3::Ipv4Address destination, uint32_t & ifIndex) [member function]
14.66 - cls.add_method('RequestInterface',
14.67 - 'bool',
14.68 - [param('ns3::Ipv4Address', 'destination'), param('uint32_t &', 'ifIndex')],
14.69 + [param('ns3::Ptr< ns3::Packet const >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'lcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')],
14.70 visibility='private', is_virtual=True)
14.71 ## olsr-routing-protocol.h: void ns3::olsr::RoutingProtocol::DoDispose() [member function]
14.72 cls.add_method('DoDispose',
14.73 @@ -808,6 +827,7 @@
14.74 module = root_module
14.75 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
14.76 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
14.77 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
14.78 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
14.79 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
14.80 return
14.81 @@ -818,6 +838,9 @@
14.82 def register_functions_ns3_TimeStepPrecision(module, root_module):
14.83 return
14.84
14.85 +def register_functions_ns3_addressUtils(module, root_module):
14.86 + return
14.87 +
14.88 def register_functions_ns3_internal(module, root_module):
14.89 return
14.90
15.1 --- a/bindings/python/ns3_module_onoff.py Sat May 30 17:36:50 2009 +0100
15.2 +++ b/bindings/python/ns3_module_onoff.py Sat May 30 17:37:38 2009 +0100
15.3 @@ -1,4 +1,4 @@
15.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
15.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
15.6
15.7 def register_types(module):
15.8 root_module = module.get_root()
15.9 @@ -18,6 +18,12 @@
15.10 register_types_ns3_TimeStepPrecision(nested_module)
15.11
15.12
15.13 + ## Register a nested module for the namespace addressUtils
15.14 +
15.15 + nested_module = module.add_cpp_namespace('addressUtils')
15.16 + register_types_ns3_addressUtils(nested_module)
15.17 +
15.18 +
15.19 ## Register a nested module for the namespace internal
15.20
15.21 nested_module = module.add_cpp_namespace('internal')
15.22 @@ -38,6 +44,10 @@
15.23 root_module = module.get_root()
15.24
15.25
15.26 +def register_types_ns3_addressUtils(module):
15.27 + root_module = module.get_root()
15.28 +
15.29 +
15.30 def register_types_ns3_internal(module):
15.31 root_module = module.get_root()
15.32
15.33 @@ -85,6 +95,7 @@
15.34 module = root_module
15.35 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
15.36 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
15.37 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
15.38 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
15.39 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
15.40 return
15.41 @@ -95,6 +106,9 @@
15.42 def register_functions_ns3_TimeStepPrecision(module, root_module):
15.43 return
15.44
15.45 +def register_functions_ns3_addressUtils(module, root_module):
15.46 + return
15.47 +
15.48 def register_functions_ns3_internal(module, root_module):
15.49 return
15.50
16.1 --- a/bindings/python/ns3_module_packet_sink.py Sat May 30 17:36:50 2009 +0100
16.2 +++ b/bindings/python/ns3_module_packet_sink.py Sat May 30 17:37:38 2009 +0100
16.3 @@ -1,4 +1,4 @@
16.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
16.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
16.6
16.7 def register_types(module):
16.8 root_module = module.get_root()
16.9 @@ -18,6 +18,12 @@
16.10 register_types_ns3_TimeStepPrecision(nested_module)
16.11
16.12
16.13 + ## Register a nested module for the namespace addressUtils
16.14 +
16.15 + nested_module = module.add_cpp_namespace('addressUtils')
16.16 + register_types_ns3_addressUtils(nested_module)
16.17 +
16.18 +
16.19 ## Register a nested module for the namespace internal
16.20
16.21 nested_module = module.add_cpp_namespace('internal')
16.22 @@ -38,6 +44,10 @@
16.23 root_module = module.get_root()
16.24
16.25
16.26 +def register_types_ns3_addressUtils(module):
16.27 + root_module = module.get_root()
16.28 +
16.29 +
16.30 def register_types_ns3_internal(module):
16.31 root_module = module.get_root()
16.32
16.33 @@ -81,6 +91,7 @@
16.34 module = root_module
16.35 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
16.36 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
16.37 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
16.38 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
16.39 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
16.40 return
16.41 @@ -91,6 +102,9 @@
16.42 def register_functions_ns3_TimeStepPrecision(module, root_module):
16.43 return
16.44
16.45 +def register_functions_ns3_addressUtils(module, root_module):
16.46 + return
16.47 +
16.48 def register_functions_ns3_internal(module, root_module):
16.49 return
16.50
17.1 --- a/bindings/python/ns3_module_point_to_point.py Sat May 30 17:36:50 2009 +0100
17.2 +++ b/bindings/python/ns3_module_point_to_point.py Sat May 30 17:37:38 2009 +0100
17.3 @@ -1,4 +1,4 @@
17.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
17.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
17.6
17.7 def register_types(module):
17.8 root_module = module.get_root()
17.9 @@ -22,6 +22,12 @@
17.10 register_types_ns3_TimeStepPrecision(nested_module)
17.11
17.12
17.13 + ## Register a nested module for the namespace addressUtils
17.14 +
17.15 + nested_module = module.add_cpp_namespace('addressUtils')
17.16 + register_types_ns3_addressUtils(nested_module)
17.17 +
17.18 +
17.19 ## Register a nested module for the namespace internal
17.20
17.21 nested_module = module.add_cpp_namespace('internal')
17.22 @@ -42,6 +48,10 @@
17.23 root_module = module.get_root()
17.24
17.25
17.26 +def register_types_ns3_addressUtils(module):
17.27 + root_module = module.get_root()
17.28 +
17.29 +
17.30 def register_types_ns3_internal(module):
17.31 root_module = module.get_root()
17.32
17.33 @@ -301,6 +311,7 @@
17.34 module = root_module
17.35 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
17.36 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
17.37 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
17.38 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
17.39 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
17.40 return
17.41 @@ -311,6 +322,9 @@
17.42 def register_functions_ns3_TimeStepPrecision(module, root_module):
17.43 return
17.44
17.45 +def register_functions_ns3_addressUtils(module, root_module):
17.46 + return
17.47 +
17.48 def register_functions_ns3_internal(module, root_module):
17.49 return
17.50
18.1 --- a/bindings/python/ns3_module_simulator.py Sat May 30 17:36:50 2009 +0100
18.2 +++ b/bindings/python/ns3_module_simulator.py Sat May 30 17:37:38 2009 +0100
18.3 @@ -1,4 +1,4 @@
18.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
18.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
18.6
18.7 def register_types(module):
18.8 root_module = module.get_root()
18.9 @@ -61,6 +61,10 @@
18.10 module.add_class('RealtimeSimulatorImpl', parent=root_module['ns3::SimulatorImpl'])
18.11 ## realtime-simulator-impl.h: ns3::RealtimeSimulatorImpl::SynchronizationMode [enumeration]
18.12 module.add_enum('SynchronizationMode', ['SYNC_BEST_EFFORT', 'SYNC_HARD_LIMIT'], outer_class=root_module['ns3::RealtimeSimulatorImpl'])
18.13 + typehandlers.add_type_alias('ns3::TimeUnit< 2 >', 'ns3::TimeSquare')
18.14 + typehandlers.add_type_alias('ns3::TimeUnit< - 1 >', 'ns3::TimeInvert')
18.15 + typehandlers.add_type_alias('ns3::TimeUnit< 0 >', 'ns3::Scalar')
18.16 + typehandlers.add_type_alias('ns3::TimeUnit< 1 >', 'ns3::Time')
18.17
18.18 ## Register a nested module for the namespace Config
18.19
18.20 @@ -74,6 +78,12 @@
18.21 register_types_ns3_TimeStepPrecision(nested_module)
18.22
18.23
18.24 + ## Register a nested module for the namespace addressUtils
18.25 +
18.26 + nested_module = module.add_cpp_namespace('addressUtils')
18.27 + register_types_ns3_addressUtils(nested_module)
18.28 +
18.29 +
18.30 ## Register a nested module for the namespace internal
18.31
18.32 nested_module = module.add_cpp_namespace('internal')
18.33 @@ -96,6 +106,10 @@
18.34 ## nstime.h: ns3::TimeStepPrecision::precision_t [enumeration]
18.35 module.add_enum('precision_t', ['S', 'MS', 'US', 'NS', 'PS', 'FS'])
18.36
18.37 +def register_types_ns3_addressUtils(module):
18.38 + root_module = module.get_root()
18.39 +
18.40 +
18.41 def register_types_ns3_internal(module):
18.42 root_module = module.get_root()
18.43
18.44 @@ -1530,6 +1544,7 @@
18.45 [param('uint64_t', 'ts')])
18.46 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
18.47 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
18.48 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
18.49 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
18.50 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
18.51 return
18.52 @@ -1548,6 +1563,9 @@
18.53 [param('ns3::TimeStepPrecision::precision_t', 'precision')])
18.54 return
18.55
18.56 +def register_functions_ns3_addressUtils(module, root_module):
18.57 + return
18.58 +
18.59 def register_functions_ns3_internal(module, root_module):
18.60 return
18.61
19.1 --- a/bindings/python/ns3_module_stats.py Sat May 30 17:36:50 2009 +0100
19.2 +++ b/bindings/python/ns3_module_stats.py Sat May 30 17:37:38 2009 +0100
19.3 @@ -1,4 +1,4 @@
19.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
19.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
19.6
19.7 def register_types(module):
19.8 root_module = module.get_root()
19.9 @@ -25,6 +25,8 @@
19.10 module.add_class('CounterCalculator', template_parameters=['unsigned int'], parent=root_module['ns3::DataCalculator'])
19.11 ## packet-data-calculators.h: ns3::PacketCounterCalculator [class]
19.12 module.add_class('PacketCounterCalculator', parent=root_module['ns3::CounterCalculator< unsigned int >'])
19.13 + typehandlers.add_type_alias('std::list< ns3::Ptr< ns3::DataCalculator >, std::allocator< ns3::Ptr< ns3::DataCalculator > > >', 'ns3::DataCalculatorList')
19.14 + typehandlers.add_type_alias('std::list< std::pair< std::string, std::string >, std::allocator< std::pair< std::string, std::string > > >', 'ns3::MetadataList')
19.15
19.16 ## Register a nested module for the namespace Config
19.17
19.18 @@ -38,6 +40,12 @@
19.19 register_types_ns3_TimeStepPrecision(nested_module)
19.20
19.21
19.22 + ## Register a nested module for the namespace addressUtils
19.23 +
19.24 + nested_module = module.add_cpp_namespace('addressUtils')
19.25 + register_types_ns3_addressUtils(nested_module)
19.26 +
19.27 +
19.28 ## Register a nested module for the namespace internal
19.29
19.30 nested_module = module.add_cpp_namespace('internal')
19.31 @@ -58,6 +66,10 @@
19.32 root_module = module.get_root()
19.33
19.34
19.35 +def register_types_ns3_addressUtils(module):
19.36 + root_module = module.get_root()
19.37 +
19.38 +
19.39 def register_types_ns3_internal(module):
19.40 root_module = module.get_root()
19.41
19.42 @@ -419,6 +431,7 @@
19.43 module = root_module
19.44 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
19.45 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
19.46 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
19.47 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
19.48 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
19.49 return
19.50 @@ -429,6 +442,9 @@
19.51 def register_functions_ns3_TimeStepPrecision(module, root_module):
19.52 return
19.53
19.54 +def register_functions_ns3_addressUtils(module, root_module):
19.55 + return
19.56 +
19.57 def register_functions_ns3_internal(module, root_module):
19.58 return
19.59
20.1 --- a/bindings/python/ns3_module_tap_bridge.py Sat May 30 17:36:50 2009 +0100
20.2 +++ b/bindings/python/ns3_module_tap_bridge.py Sat May 30 17:37:38 2009 +0100
20.3 @@ -1,4 +1,4 @@
20.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
20.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
20.6
20.7 def register_types(module):
20.8 root_module = module.get_root()
20.9 @@ -20,6 +20,12 @@
20.10 register_types_ns3_TimeStepPrecision(nested_module)
20.11
20.12
20.13 + ## Register a nested module for the namespace addressUtils
20.14 +
20.15 + nested_module = module.add_cpp_namespace('addressUtils')
20.16 + register_types_ns3_addressUtils(nested_module)
20.17 +
20.18 +
20.19 ## Register a nested module for the namespace internal
20.20
20.21 nested_module = module.add_cpp_namespace('internal')
20.22 @@ -40,6 +46,10 @@
20.23 root_module = module.get_root()
20.24
20.25
20.26 +def register_types_ns3_addressUtils(module):
20.27 + root_module = module.get_root()
20.28 +
20.29 +
20.30 def register_types_ns3_internal(module):
20.31 root_module = module.get_root()
20.32
20.33 @@ -217,6 +227,7 @@
20.34 module = root_module
20.35 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
20.36 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
20.37 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
20.38 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
20.39 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
20.40 return
20.41 @@ -227,6 +238,9 @@
20.42 def register_functions_ns3_TimeStepPrecision(module, root_module):
20.43 return
20.44
20.45 +def register_functions_ns3_addressUtils(module, root_module):
20.46 + return
20.47 +
20.48 def register_functions_ns3_internal(module, root_module):
20.49 return
20.50
21.1 --- a/bindings/python/ns3_module_udp_echo.py Sat May 30 17:36:50 2009 +0100
21.2 +++ b/bindings/python/ns3_module_udp_echo.py Sat May 30 17:37:38 2009 +0100
21.3 @@ -1,4 +1,4 @@
21.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
21.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
21.6
21.7 def register_types(module):
21.8 root_module = module.get_root()
21.9 @@ -20,6 +20,12 @@
21.10 register_types_ns3_TimeStepPrecision(nested_module)
21.11
21.12
21.13 + ## Register a nested module for the namespace addressUtils
21.14 +
21.15 + nested_module = module.add_cpp_namespace('addressUtils')
21.16 + register_types_ns3_addressUtils(nested_module)
21.17 +
21.18 +
21.19 ## Register a nested module for the namespace internal
21.20
21.21 nested_module = module.add_cpp_namespace('internal')
21.22 @@ -40,6 +46,10 @@
21.23 root_module = module.get_root()
21.24
21.25
21.26 +def register_types_ns3_addressUtils(module):
21.27 + root_module = module.get_root()
21.28 +
21.29 +
21.30 def register_types_ns3_internal(module):
21.31 root_module = module.get_root()
21.32
21.33 @@ -115,6 +125,7 @@
21.34 module = root_module
21.35 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
21.36 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
21.37 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
21.38 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
21.39 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
21.40 return
21.41 @@ -125,6 +136,9 @@
21.42 def register_functions_ns3_TimeStepPrecision(module, root_module):
21.43 return
21.44
21.45 +def register_functions_ns3_addressUtils(module, root_module):
21.46 + return
21.47 +
21.48 def register_functions_ns3_internal(module, root_module):
21.49 return
21.50
22.1 --- a/bindings/python/ns3_module_v4ping.py Sat May 30 17:36:50 2009 +0100
22.2 +++ b/bindings/python/ns3_module_v4ping.py Sat May 30 17:37:38 2009 +0100
22.3 @@ -1,4 +1,4 @@
22.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
22.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
22.6
22.7 def register_types(module):
22.8 root_module = module.get_root()
22.9 @@ -18,6 +18,12 @@
22.10 register_types_ns3_TimeStepPrecision(nested_module)
22.11
22.12
22.13 + ## Register a nested module for the namespace addressUtils
22.14 +
22.15 + nested_module = module.add_cpp_namespace('addressUtils')
22.16 + register_types_ns3_addressUtils(nested_module)
22.17 +
22.18 +
22.19 ## Register a nested module for the namespace internal
22.20
22.21 nested_module = module.add_cpp_namespace('internal')
22.22 @@ -38,6 +44,10 @@
22.23 root_module = module.get_root()
22.24
22.25
22.26 +def register_types_ns3_addressUtils(module):
22.27 + root_module = module.get_root()
22.28 +
22.29 +
22.30 def register_types_ns3_internal(module):
22.31 root_module = module.get_root()
22.32
22.33 @@ -81,6 +91,7 @@
22.34 module = root_module
22.35 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
22.36 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
22.37 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
22.38 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
22.39 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
22.40 return
22.41 @@ -91,6 +102,9 @@
22.42 def register_functions_ns3_TimeStepPrecision(module, root_module):
22.43 return
22.44
22.45 +def register_functions_ns3_addressUtils(module, root_module):
22.46 + return
22.47 +
22.48 def register_functions_ns3_internal(module, root_module):
22.49 return
22.50
23.1 --- a/bindings/python/ns3_module_wifi.py Sat May 30 17:36:50 2009 +0100
23.2 +++ b/bindings/python/ns3_module_wifi.py Sat May 30 17:37:38 2009 +0100
23.3 @@ -1,4 +1,4 @@
23.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
23.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
23.6
23.7 def register_types(module):
23.8 root_module = module.get_root()
23.9 @@ -135,6 +135,7 @@
23.10 module.add_class('YansWifiChannel', parent=root_module['ns3::WifiChannel'])
23.11 ## aarf-wifi-manager.h: ns3::AarfWifiManager [class]
23.12 module.add_class('AarfWifiManager', parent=root_module['ns3::ArfWifiManager'])
23.13 + typehandlers.add_type_alias('std::vector< ns3::ThresholdsItem, std::allocator< ns3::ThresholdsItem > >', 'ns3::Thresholds')
23.14
23.15 ## Register a nested module for the namespace Config
23.16
23.17 @@ -148,6 +149,12 @@
23.18 register_types_ns3_TimeStepPrecision(nested_module)
23.19
23.20
23.21 + ## Register a nested module for the namespace addressUtils
23.22 +
23.23 + nested_module = module.add_cpp_namespace('addressUtils')
23.24 + register_types_ns3_addressUtils(nested_module)
23.25 +
23.26 +
23.27 ## Register a nested module for the namespace internal
23.28
23.29 nested_module = module.add_cpp_namespace('internal')
23.30 @@ -168,6 +175,10 @@
23.31 root_module = module.get_root()
23.32
23.33
23.34 +def register_types_ns3_addressUtils(module):
23.35 + root_module = module.get_root()
23.36 +
23.37 +
23.38 def register_types_ns3_internal(module):
23.39 root_module = module.get_root()
23.40
23.41 @@ -4181,6 +4192,7 @@
23.42 [param('uint8_t', 'tid')])
23.43 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
23.44 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
23.45 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
23.46 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
23.47 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
23.48 return
23.49 @@ -4191,6 +4203,9 @@
23.50 def register_functions_ns3_TimeStepPrecision(module, root_module):
23.51 return
23.52
23.53 +def register_functions_ns3_addressUtils(module, root_module):
23.54 + return
23.55 +
23.56 def register_functions_ns3_internal(module, root_module):
23.57 return
23.58
24.1 --- a/bindings/python/ns3modulegen_generated.py Sat May 30 17:36:50 2009 +0100
24.2 +++ b/bindings/python/ns3modulegen_generated.py Sat May 30 17:37:38 2009 +0100
24.3 @@ -1,4 +1,4 @@
24.4 -from pybindgen import Module, FileCodeSink, param, retval, cppclass
24.5 +from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandlers
24.6
24.7
24.8 import pybindgen.settings
24.9 @@ -288,6 +288,12 @@
24.10 register_types_ns3_TimeStepPrecision(nested_module)
24.11
24.12
24.13 + ## Register a nested module for the namespace addressUtils
24.14 +
24.15 + nested_module = module.add_cpp_namespace('addressUtils')
24.16 + register_types_ns3_addressUtils(nested_module)
24.17 +
24.18 +
24.19 ## Register a nested module for the namespace internal
24.20
24.21 nested_module = module.add_cpp_namespace('internal')
24.22 @@ -309,6 +315,10 @@
24.23 root_module = module.get_root()
24.24
24.25
24.26 +def register_types_ns3_addressUtils(module):
24.27 + root_module = module.get_root()
24.28 +
24.29 +
24.30 def register_types_ns3_internal(module):
24.31 root_module = module.get_root()
24.32
24.33 @@ -786,6 +796,7 @@
24.34 root_module.end_section('ns3_module_helper')
24.35 register_functions_ns3_Config(module.get_submodule('Config'), root_module)
24.36 register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module)
24.37 + register_functions_ns3_addressUtils(module.get_submodule('addressUtils'), root_module)
24.38 register_functions_ns3_internal(module.get_submodule('internal'), root_module)
24.39 register_functions_ns3_olsr(module.get_submodule('olsr'), root_module)
24.40 return
24.41 @@ -796,6 +807,9 @@
24.42 def register_functions_ns3_TimeStepPrecision(module, root_module):
24.43 return
24.44
24.45 +def register_functions_ns3_addressUtils(module, root_module):
24.46 + return
24.47 +
24.48 def register_functions_ns3_internal(module, root_module):
24.49 return
24.50
25.1 --- a/bindings/python/wscript Sat May 30 17:36:50 2009 +0100
25.2 +++ b/bindings/python/wscript Sat May 30 17:37:38 2009 +0100
25.3 @@ -15,7 +15,7 @@
25.4 import Utils
25.5
25.6 ## https://launchpad.net/pybindgen/
25.7 -REQUIRED_PYBINDGEN_VERSION = (0, 10, 0, 630)
25.8 +REQUIRED_PYBINDGEN_VERSION = (0, 10, 0, 640)
25.9 REQUIRED_PYGCCXML_VERSION = (0, 9, 5)
25.10
25.11
26.1 --- a/doc/manual/attributes.texi Sat May 30 17:36:50 2009 +0100
26.2 +++ b/doc/manual/attributes.texi Sat May 30 17:37:38 2009 +0100
26.3 @@ -207,6 +207,8 @@
26.4 In the ns-3 attribute system, these value definitions and accessor
26.5 functions are moved into the TypeId class; e.g.:
26.6 @verbatim
26.7 +NS_OBJECT_ENSURE_REGISTERED (DropTailQueue);
26.8 +
26.9 TypeId DropTailQueue::GetTypeId (void)
26.10 {
26.11 static TypeId tid = TypeId ("ns3::DropTailQueue")
26.12 @@ -239,6 +241,11 @@
26.13 section, we will provide an example script that shows how users
26.14 may manipulate these values.
26.15
26.16 +Note that initialization of the attribute relies on the macro
26.17 +NS_OBJECT_ENSURE_REGISTERED (DropTailQueue) being called; if you leave
26.18 +this out of your new class implementation, your attributes will not be
26.19 +initialized corretly.
26.20 +
26.21 @subsection Basic usage
26.22
26.23 Let's look at how a user script might access these values.
27.1 --- a/examples/csma-multicast.cc Sat May 30 17:36:50 2009 +0100
27.2 +++ b/examples/csma-multicast.cc Sat May 30 17:37:38 2009 +0100
27.3 @@ -105,7 +105,7 @@
27.4 // 2) Set up a default multicast route on the sender n0
27.5 // 3) Have node n4 join the multicast group
27.6 // We have a helper that can help us with static multicast
27.7 - StaticMulticastRouteHelper multicast;
27.8 + Ipv4StaticRoutingHelper multicast;
27.9
27.10 // 1) Configure a (static) multicast route on node n2 (multicastRouter)
27.11 Ptr<Node> multicastRouter = c.Get (2); // The node in question
27.12 @@ -121,10 +121,6 @@
27.13 Ptr<NetDevice> senderIf = nd0.Get(0);
27.14 multicast.SetDefaultMulticastRoute (sender, senderIf);
27.15
27.16 - // 3) Have node n4 join the multicast group
27.17 - Ptr<Node> receiver = c.Get (4);
27.18 - multicast.JoinMulticastGroup (receiver, multicastSource, multicastGroup);
27.19 -
27.20 //
27.21 // Create an OnOff application to send UDP datagrams from node zero to the
27.22 // multicast group (node four will be listening).
28.1 --- a/examples/emu-ping.cc Sat May 30 17:36:50 2009 +0100
28.2 +++ b/examples/emu-ping.cc Sat May 30 17:37:38 2009 +0100
28.3 @@ -55,7 +55,6 @@
28.4 #include "ns3/core-module.h"
28.5 #include "ns3/simulator-module.h"
28.6 #include "ns3/node-module.h"
28.7 -#include "ns3/internet-stack-module.h"
28.8 #include "ns3/emu-module.h"
28.9 #include "ns3/v4ping-module.h"
28.10 #include "ns3/helper-module.h"
28.11 @@ -149,7 +148,8 @@
28.12 // of ARP, IPv4, ICMP, UDP and TCP.
28.13 //
28.14 NS_LOG_INFO ("Add Internet Stack");
28.15 - AddInternetStack (node);
28.16 + InternetStackHelper internetStackHelper;
28.17 + internetStackHelper.Install (node);
28.18
28.19 NS_LOG_INFO ("Create IPv4 Interface");
28.20 Ptr<Ipv4> ipv4 = node->GetObject<Ipv4> ();
28.21 @@ -175,7 +175,9 @@
28.22 Ipv4Address gateway ("1.2.3.4");
28.23 NS_ABORT_MSG_IF (gateway == "1.2.3.4", "You must change the gateway IP address before running this example");
28.24
28.25 - ipv4->SetDefaultRoute (gateway, interface);
28.26 + Ipv4StaticRoutingHelper ipv4RoutingHelper;
28.27 + Ptr<Ipv4StaticRouting> staticRouting = ipv4RoutingHelper.GetStaticRouting (ipv4);
28.28 + staticRouting->SetDefaultRoute (gateway, interface);
28.29
28.30 //
28.31 // Create the ping application. This application knows how to send
29.1 --- a/examples/static-routing-slash32.cc Sat May 30 17:36:50 2009 +0100
29.2 +++ b/examples/static-routing-slash32.cc Sat May 30 17:37:38 2009 +0100
29.3 @@ -97,12 +97,14 @@
29.4 ipv4C->SetMetric (ifIndexC, 1);
29.5 ipv4C->SetUp (ifIndexC);
29.6
29.7 + Ipv4StaticRoutingHelper ipv4RoutingHelper;
29.8 // Create static routes from A to C
29.9 + Ptr<Ipv4StaticRouting> staticRoutingA = ipv4RoutingHelper.GetStaticRouting (ipv4A);
29.10 // The ifIndex for this outbound route is 1; the first p2p link added
29.11 - ipv4A->AddHostRouteTo (Ipv4Address ("192.168.1.1"), Ipv4Address ("10.1.1.2"), 1);
29.12 + staticRoutingA->AddHostRouteTo (Ipv4Address ("192.168.1.1"), Ipv4Address ("10.1.1.2"), 1);
29.13 + Ptr<Ipv4StaticRouting> staticRoutingB = ipv4RoutingHelper.GetStaticRouting (ipv4B);
29.14 // The ifIndex we want on node B is 2; 0 corresponds to loopback, and 1 to the first point to point link
29.15 - ipv4B->AddHostRouteTo (Ipv4Address ("192.168.1.1"), Ipv4Address ("10.1.1.6"), 2);
29.16 -
29.17 + staticRoutingB->AddHostRouteTo (Ipv4Address ("192.168.1.1"), Ipv4Address ("10.1.1.6"), 2);
29.18 // Create the OnOff application to send UDP datagrams of size
29.19 // 210 bytes at a rate of 448 Kb/s
29.20 uint16_t port = 9; // Discard port (RFC 863)
30.1 --- a/examples/tcp-nsc-lfn.cc Sat May 30 17:36:50 2009 +0100
30.2 +++ b/examples/tcp-nsc-lfn.cc Sat May 30 17:37:38 2009 +0100
30.3 @@ -91,7 +91,7 @@
30.4 InternetStackHelper internet;
30.5 // The next statement switches the nodes to 'NSC'-Mode.
30.6 // It disables the native ns-3 TCP model and loads the NSC library.
30.7 - internet.SetNscStack (nscStack);
30.8 + internet.SetTcp ("ns3::NscTcpL4Protocol","Library",StringValue(nscStack));
30.9 internet.Install (n);
30.10
30.11 if (tcpCong != "cubic") // make sure we only fail if both --nscstack and --TCP_CONGESTION are used
31.1 --- a/examples/tcp-nsc-zoo.cc Sat May 30 17:36:50 2009 +0100
31.2 +++ b/examples/tcp-nsc-zoo.cc Sat May 30 17:37:38 2009 +0100
31.3 @@ -69,7 +69,7 @@
31.4
31.5 InternetStackHelper internetStack;
31.6
31.7 - internetStack.SetNscStack ("liblinux2.6.26.so");
31.8 + internetStack.SetTcp ("ns3::NscTcpL4Protocol","Library",StringValue("liblinux2.6.26.so"));
31.9 // this switches nodes 0 and 1 to NSCs Linux 2.6.26 stack.
31.10 internetStack.Install (n.Get(0));
31.11 internetStack.Install (n.Get(1));
31.12 @@ -87,7 +87,7 @@
31.13 {
31.14 // the next statement doesn't change anything for the nodes 0, 1, and 2; since they
31.15 // already have a stack assigned.
31.16 - internetStack.SetNscStack ("liblinux2.6.18.so");
31.17 + internetStack.SetTcp ("ns3::NscTcpL4Protocol","Library",StringValue("liblinux2.6.18.so"));
31.18 // this switches node 3 to NSCs Linux 2.6.18 stack.
31.19 internetStack.Install (n.Get(3));
31.20 // and then agains disables sack/timestamps/wscale on node 3.
32.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
32.2 +++ b/examples/wifi-clear-channel-cmu.cc Sat May 30 17:37:38 2009 +0100
32.3 @@ -0,0 +1,229 @@
32.4 +/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
32.5 +/*
32.6 + * Copyright (c) 2009 The Boeing Company
32.7 + *
32.8 + * This program is free software; you can redistribute it and/or modify
32.9 + * it under the terms of the GNU General Public License version 2 as
32.10 + * published by the Free Software Foundation;
32.11 + *
32.12 + * This program is distributed in the hope that it will be useful,
32.13 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
32.14 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32.15 + * GNU General Public License for more details.
32.16 + *
32.17 + * You should have received a copy of the GNU General Public License
32.18 + * along with this program; if not, write to the Free Software
32.19 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
32.20 + *
32.21 + * Author: Guangyu Pei <guangyu.pei@boeing.com>
32.22 + */
32.23 +
32.24 +#include "ns3/core-module.h"
32.25 +#include "ns3/common-module.h"
32.26 +#include "ns3/node-module.h"
32.27 +#include "ns3/helper-module.h"
32.28 +#include "ns3/mobility-module.h"
32.29 +#include "ns3/contrib-module.h"
32.30 +
32.31 +#include <iostream>
32.32 +#include <fstream>
32.33 +#include <vector>
32.34 +#include <string>
32.35 +
32.36 +NS_LOG_COMPONENT_DEFINE ("Main");
32.37 +
32.38 +using namespace ns3;
32.39 +
32.40 +class Experiment
32.41 +{
32.42 +public:
32.43 + Experiment ();
32.44 + Experiment (std::string name);
32.45 + uint32_t Run (const WifiHelper &wifi, const YansWifiPhyHelper &wifiPhy,
32.46 + const NqosWifiMacHelper &wifiMac, const YansWifiChannelHelper &wifiChannel);
32.47 +private:
32.48 + void ReceivePacket (Ptr<Socket> socket);
32.49 + void SetPosition (Ptr<Node> node, Vector position);
32.50 + Vector GetPosition (Ptr<Node> node);
32.51 + Ptr<Socket> SetupPacketReceive (Ptr<Node> node);
32.52 + void GenerateTraffic (Ptr<Socket> socket, uint32_t pktSize,
32.53 + uint32_t pktCount, Time pktInterval );
32.54 +
32.55 + uint32_t m_pktsTotal;
32.56 + Gnuplot2dDataset m_output;
32.57 +};
32.58 +
32.59 +Experiment::Experiment ()
32.60 +{}
32.61 +
32.62 +Experiment::Experiment (std::string name)
32.63 + : m_output (name)
32.64 +{
32.65 + m_output.SetStyle (Gnuplot2dDataset::LINES);
32.66 +}
32.67 +
32.68 +void
32.69 +Experiment::SetPosition (Ptr<Node> node, Vector position)
32.70 +{
32.71 + Ptr<MobilityModel> mobility = node->GetObject<MobilityModel> ();
32.72 + mobility->SetPosition (position);
32.73 +}
32.74 +
32.75 +Vector
32.76 +Experiment::GetPosition (Ptr<Node> node)
32.77 +{
32.78 + Ptr<MobilityModel> mobility = node->GetObject<MobilityModel> ();
32.79 + return mobility->GetPosition ();
32.80 +}
32.81 +
32.82 +void
32.83 +Experiment::ReceivePacket (Ptr<Socket> socket)
32.84 +{
32.85 + Ptr<Packet> packet;
32.86 + while (packet = socket->Recv ())
32.87 + {
32.88 + m_pktsTotal ++;
32.89 + }
32.90 +}
32.91 +
32.92 +Ptr<Socket>
32.93 +Experiment::SetupPacketReceive (Ptr<Node> node)
32.94 +{
32.95 + TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory");
32.96 + Ptr<Socket> sink = Socket::CreateSocket (node, tid);
32.97 + InetSocketAddress local = InetSocketAddress (Ipv4Address::GetAny (), 80);
32.98 + sink->Bind (local);
32.99 + sink->SetRecvCallback (MakeCallback (&Experiment::ReceivePacket, this));
32.100 + return sink;
32.101 +}
32.102 +
32.103 +void
32.104 +Experiment::GenerateTraffic (Ptr<Socket> socket, uint32_t pktSize,
32.105 + uint32_t pktCount, Time pktInterval )
32.106 +{
32.107 + if (pktCount > 0)
32.108 + {
32.109 + socket->Send (Create<Packet> (pktSize));
32.110 + Simulator::Schedule (pktInterval, &Experiment::GenerateTraffic, this,
32.111 + socket, pktSize,pktCount-1, pktInterval);
32.112 + }
32.113 + else
32.114 + {
32.115 + socket->Close ();
32.116 + }
32.117 +}
32.118 +
32.119 +uint32_t
32.120 +Experiment::Run (const WifiHelper &wifi, const YansWifiPhyHelper &wifiPhy,
32.121 + const NqosWifiMacHelper &wifiMac, const YansWifiChannelHelper &wifiChannel)
32.122 +{
32.123 + m_pktsTotal = 0;
32.124 +
32.125 + NodeContainer c;
32.126 + c.Create (2);
32.127 +
32.128 + InternetStackHelper internet;
32.129 + internet.Install (c);
32.130 +
32.131 + YansWifiPhyHelper phy = wifiPhy;
32.132 + phy.SetChannel (wifiChannel.Create ());
32.133 +
32.134 + NqosWifiMacHelper mac = wifiMac;
32.135 + NetDeviceContainer devices = wifi.Install (phy, mac, c);
32.136 +
32.137 + MobilityHelper mobility;
32.138 + Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
32.139 + positionAlloc->Add (Vector (0.0, 0.0, 0.0));
32.140 + positionAlloc->Add (Vector (5.0, 0.0, 0.0));
32.141 + mobility.SetPositionAllocator (positionAlloc);
32.142 + mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
32.143 + mobility.Install (c);
32.144 +
32.145 + Ipv4AddressHelper ipv4;
32.146 + NS_LOG_INFO ("Assign IP Addresses.");
32.147 + ipv4.SetBase ("10.1.1.0", "255.255.255.0");
32.148 + Ipv4InterfaceContainer i = ipv4.Assign (devices);
32.149 +
32.150 + Ptr<Socket> recvSink = SetupPacketReceive (c.Get (0));
32.151 +
32.152 + TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory");
32.153 + Ptr<Socket> source = Socket::CreateSocket (c.Get (1), tid);
32.154 + InetSocketAddress remote = InetSocketAddress (Ipv4Address ("255.255.255.255"), 80);
32.155 + source->Connect (remote);
32.156 + uint32_t packetSize = 1014;
32.157 + uint32_t maxPacketCount = 200;
32.158 + Time interPacketInterval = Seconds (1.);
32.159 + Simulator::Schedule (Seconds (1.0), &Experiment::GenerateTraffic,
32.160 + this, source, packetSize, maxPacketCount,interPacketInterval);
32.161 + Simulator::Run ();
32.162 +
32.163 + Simulator::Destroy ();
32.164 +
32.165 + return m_pktsTotal;
32.166 +}
32.167 +
32.168 +int main (int argc, char *argv[])
32.169 +{
32.170 + std::ofstream outfile ("clear-channel.plt");
32.171 + std::vector <std::string> modes;
32.172 +
32.173 + modes.push_back ("wifib-1mbs");
32.174 + modes.push_back ("wifib-2mbs");
32.175 + modes.push_back ("wifib-5.5mbs");
32.176 + modes.push_back ("wifib-11mbs");
32.177 + // disable fragmentation
32.178 + Config::SetDefault ("ns3::WifiRemoteStationManager::FragmentationThreshold", StringValue ("2200"));
32.179 + Config::SetDefault ("ns3::WifiRemoteStationManager::RtsCtsThreshold", StringValue ("2200"));
32.180 +
32.181 + CommandLine cmd;
32.182 + cmd.Parse (argc, argv);
32.183 +
32.184 + Gnuplot gnuplot = Gnuplot ("clear-channel.eps");
32.185 +
32.186 + for (uint32_t i = 0; i < modes.size(); i++)
32.187 + {
32.188 + std::cout << modes[i] << std::endl;
32.189 + Gnuplot2dDataset dataset (modes[i]);
32.190 +
32.191 + for (double rss = -102.0; rss <= -80.0; rss += 0.5)
32.192 + {
32.193 + Experiment experiment;
32.194 + dataset.SetStyle (Gnuplot2dDataset::LINES);
32.195 +
32.196 + WifiHelper wifi;
32.197 + NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default ();
32.198 + Config::SetDefault ("ns3::WifiRemoteStationManager::NonUnicastMode",
32.199 + StringValue (modes[i]));
32.200 + wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",
32.201 + "DataMode",StringValue(modes[i]),
32.202 + "ControlMode",StringValue(modes[i]));
32.203 + wifiMac.SetType ("ns3::AdhocWifiMac");
32.204 +
32.205 + YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
32.206 + YansWifiChannelHelper wifiChannel ;
32.207 + wifiChannel.SetPropagationDelay ("ns3::ConstantSpeedPropagationDelayModel");
32.208 + wifiChannel.AddPropagationLoss ("ns3::FixedRssLossModel","Rss",DoubleValue(rss));
32.209 +
32.210 +
32.211 + NS_LOG_DEBUG (modes[i]);
32.212 + experiment = Experiment (modes[i]);
32.213 + wifiPhy.Set ("Standard", StringValue ("802.11b") );
32.214 + wifiPhy.Set ("EnergyDetectionThreshold", DoubleValue (-110.0) );
32.215 + wifiPhy.Set ("CcaMode1Threshold", DoubleValue (-110.0) );
32.216 + wifiPhy.Set ("TxPowerStart", DoubleValue (15.0) );
32.217 + wifiPhy.Set ("RxGain", DoubleValue (0) );
32.218 + wifiPhy.Set ("RxNoiseFigure", DoubleValue (7) );
32.219 + uint32_t pktsRecvd = experiment.Run (wifi, wifiPhy, wifiMac, wifiChannel);
32.220 + dataset.Add (rss, pktsRecvd);
32.221 + }
32.222 +
32.223 + gnuplot.AddDataset (dataset);
32.224 + }
32.225 + gnuplot.SetTerminal ("postscript eps color enh \"Times-BoldItalic\"");
32.226 + gnuplot.SetLegend ("RSS(dBm)", "Number of packets received");
32.227 + gnuplot.SetExtra ("set xrange [-102:-83]");
32.228 + gnuplot.GenerateOutput (outfile);
32.229 + outfile.close ();
32.230 +
32.231 + return 0;
32.232 +}
33.1 --- a/examples/wscript Sat May 30 17:36:50 2009 +0100
33.2 +++ b/examples/wscript Sat May 30 17:37:38 2009 +0100
33.3 @@ -120,6 +120,10 @@
33.4 ['core', 'simulator', 'mobility', 'wifi'])
33.5 obj.source = 'wifi-adhoc.cc'
33.6
33.7 + obj = bld.create_ns3_program('wifi-clear-channel-cmu',
33.8 + ['core', 'simulator', 'mobility', 'wifi'])
33.9 + obj.source = 'wifi-clear-channel-cmu.cc'
33.10 +
33.11 obj = bld.create_ns3_program('wifi-ap',
33.12 ['core', 'simulator', 'mobility', 'wifi'])
33.13 obj.source = 'wifi-ap.cc'
34.1 --- a/samples/main-propagation-loss.cc Sat May 30 17:36:50 2009 +0100
34.2 +++ b/samples/main-propagation-loss.cc Sat May 30 17:37:38 2009 +0100
34.3 @@ -1,6 +1,6 @@
34.4 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
34.5 /*
34.6 - * Copyright (c) 2007 INRIA
34.7 + * Copyright (c) 2008 Timo Bingmann
34.8 *
34.9 * This program is free software; you can redistribute it and/or modify
34.10 * it under the terms of the GNU General Public License version 2 as
34.11 @@ -15,45 +15,298 @@
34.12 * along with this program; if not, write to the Free Software
34.13 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
34.14 *
34.15 - * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
34.16 + * Author: Timo Bingmann <timo.bingmann@student.kit.edu>
34.17 */
34.18 +
34.19 #include "ns3/propagation-loss-model.h"
34.20 +#include "ns3/jakes-propagation-loss-model.h"
34.21 #include "ns3/constant-position-mobility-model.h"
34.22 +
34.23 #include "ns3/config.h"
34.24 #include "ns3/string.h"
34.25 +#include "ns3/boolean.h"
34.26 +#include "ns3/double.h"
34.27 +#include "ns3/gnuplot.h"
34.28 +#include "ns3/simulator.h"
34.29 +
34.30 +#include <map>
34.31
34.32 using namespace ns3;
34.33
34.34 -static void
34.35 -PrintOne (double minTxpower, double maxTxpower, double stepTxpower, double min, double max, double step)
34.36 +/// Round a double number to the given precision. e.g. dround(0.234, 0.1) = 0.2
34.37 +/// and dround(0.257, 0.1) = 0.3
34.38 +static double dround(double number, double precision)
34.39 +{
34.40 + number /= precision;
34.41 + if (number >= 0)
34.42 + {
34.43 + number = floor(number + 0.5);
34.44 + }
34.45 + else
34.46 + {
34.47 + number = ceil(number - 0.5);
34.48 + }
34.49 + number *= precision;
34.50 + return number;
34.51 +}
34.52 +
34.53 +static Gnuplot
34.54 +TestDeterministic (Ptr<PropagationLossModel> model)
34.55 {
34.56 Ptr<ConstantPositionMobilityModel> a = CreateObject<ConstantPositionMobilityModel> ();
34.57 Ptr<ConstantPositionMobilityModel> b = CreateObject<ConstantPositionMobilityModel> ();
34.58 - Ptr<LogDistancePropagationLossModel> log = CreateObject<LogDistancePropagationLossModel> ();
34.59
34.60 - Ptr<PropagationLossModel> model = log;
34.61 + Gnuplot plot;
34.62
34.63 - a->SetPosition (Vector (0.0, 0.0, 0.0));
34.64 - for (double x = min; x < max; x+= step)
34.65 - {
34.66 - b->SetPosition (Vector (x, 0.0, 0.0));
34.67 - std::cout << x << " ";
34.68 - for (double txpower = minTxpower; txpower < maxTxpower; txpower += stepTxpower)
34.69 - {
34.70 - double rxPowerDbm = model->CalcRxPower (txpower, a, b);
34.71 - std::cout << rxPowerDbm << " ";
34.72 - }
34.73 - std::cout << std::endl;
34.74 - }
34.75 + plot.AppendExtra("set xlabel 'Distance'");
34.76 + plot.AppendExtra("set ylabel 'rxPower (dBm)'");
34.77 + plot.AppendExtra("set key top right");
34.78 +
34.79 + double txPowerDbm = +20; // dBm
34.80 +
34.81 + Gnuplot2dDataset dataset;
34.82 +
34.83 + dataset.SetStyle(Gnuplot2dDataset::LINES);
34.84 +
34.85 + {
34.86 + a->SetPosition (Vector (0.0, 0.0, 0.0));
34.87 +
34.88 + for (double distance = 0.0; distance < 2500.0; distance += 10.0)
34.89 + {
34.90 + b->SetPosition (Vector (distance, 0.0, 0.0));
34.91 +
34.92 + // CalcRxPower() returns dBm.
34.93 + double rxPowerDbm = model->CalcRxPower (txPowerDbm, a, b);
34.94 +
34.95 + dataset.Add(distance, rxPowerDbm);
34.96 +
34.97 + Simulator::Stop (Seconds (1.0));
34.98 + Simulator::Run ();
34.99 + }
34.100 + }
34.101 +
34.102 + std::ostringstream os;
34.103 + os << "txPower " << txPowerDbm << "dBm";
34.104 + dataset.SetTitle(os.str());
34.105 +
34.106 + plot.AddDataset(dataset);
34.107 +
34.108 + plot.AddDataset( Gnuplot2dFunction("-94 dBm CSThreshold", "-94.0") );
34.109 +
34.110 + return plot;
34.111 +}
34.112 +
34.113 +static Gnuplot
34.114 +TestProbabilistic (Ptr<PropagationLossModel> model, unsigned int samples = 100000)
34.115 +{
34.116 + Ptr<ConstantPositionMobilityModel> a = CreateObject<ConstantPositionMobilityModel> ();
34.117 + Ptr<ConstantPositionMobilityModel> b = CreateObject<ConstantPositionMobilityModel> ();
34.118 +
34.119 + Gnuplot plot;
34.120 +
34.121 + plot.AppendExtra("set xlabel 'Distance'");
34.122 + plot.AppendExtra("set ylabel 'rxPower (dBm)'");
34.123 + plot.AppendExtra("set zlabel 'Probability' offset 0,+10");
34.124 + plot.AppendExtra("set view 50, 120, 1.0, 1.0");
34.125 + plot.AppendExtra("set key top right");
34.126 +
34.127 + plot.AppendExtra("set ticslevel 0");
34.128 + plot.AppendExtra("set xtics offset -0.5,0");
34.129 + plot.AppendExtra("set ytics offset 0,-0.5");
34.130 + plot.AppendExtra("set xrange [100:]");
34.131 +
34.132 + double txPowerDbm = +20; // dBm
34.133 +
34.134 + Gnuplot3dDataset dataset;
34.135 +
34.136 + dataset.SetStyle("with linespoints");
34.137 + dataset.SetExtra("pointtype 3 pointsize 0.5");
34.138 +
34.139 + typedef std::map<double, unsigned int> rxPowerMapType;
34.140 +
34.141 + // Take given number of samples from CalcRxPower() and show probability
34.142 + // density for discrete distances.
34.143 + {
34.144 + a->SetPosition (Vector (0.0, 0.0, 0.0));
34.145 +
34.146 + for (double distance = 100.0; distance < 2500.0; distance += 100.0)
34.147 + {
34.148 + b->SetPosition (Vector (distance, 0.0, 0.0));
34.149 +
34.150 + rxPowerMapType rxPowerMap;
34.151 +
34.152 + for (unsigned int samp = 0; samp < samples; ++samp)
34.153 + {
34.154 + // CalcRxPower() returns dBm.
34.155 + double rxPowerDbm = model->CalcRxPower (txPowerDbm, a, b);
34.156 + rxPowerDbm = dround(rxPowerDbm, 1.0);
34.157 +
34.158 + rxPowerMap[ rxPowerDbm ] ++;
34.159 +
34.160 + Simulator::Stop (Seconds (0.01));
34.161 + Simulator::Run ();
34.162 + }
34.163 +
34.164 + for (rxPowerMapType::const_iterator i = rxPowerMap.begin();
34.165 + i != rxPowerMap.end(); ++i)
34.166 + {
34.167 + dataset.Add(distance, i->first, (double)i->second / (double)samples);
34.168 + }
34.169 + dataset.AddEmptyLine();
34.170 + }
34.171 + }
34.172 +
34.173 + std::ostringstream os;
34.174 + os << "txPower " << txPowerDbm << "dBm";
34.175 + dataset.SetTitle(os.str());
34.176 +
34.177 + plot.AddDataset(dataset);
34.178 +
34.179 + return plot;
34.180 +}
34.181 +
34.182 +static Gnuplot
34.183 +TestDeterministicByTime (Ptr<PropagationLossModel> model,
34.184 + Time timeStep = Seconds(0.001),
34.185 + Time timeTotal = Seconds(1.0),
34.186 + double distance = 100.0)
34.187 +{
34.188 + Ptr<ConstantPositionMobilityModel> a = CreateObject<ConstantPositionMobilityModel> ();
34.189 + Ptr<ConstantPositionMobilityModel> b = CreateObject<ConstantPositionMobilityModel> ();
34.190 +
34.191 + Gnuplot plot;
34.192 +
34.193 + plot.AppendExtra("set xlabel 'Time (s)'");
34.194 + plot.AppendExtra("set ylabel 'rxPower (dBm)'");
34.195 + plot.AppendExtra("set key center right");
34.196 +
34.197 + double txPowerDbm = +20; // dBm
34.198 +
34.199 + Gnuplot2dDataset dataset;
34.200 +
34.201 + dataset.SetStyle(Gnuplot2dDataset::LINES);
34.202 +
34.203 + {
34.204 + a->SetPosition (Vector (0.0, 0.0, 0.0));
34.205 + b->SetPosition (Vector (distance, 0.0, 0.0));
34.206 +
34.207 + Time start = Simulator::Now();
34.208 + while( Simulator::Now() < start + timeTotal )
34.209 + {
34.210 + // CalcRxPower() returns dBm.
34.211 + double rxPowerDbm = model->CalcRxPower (txPowerDbm, a, b);
34.212 +
34.213 + Time elapsed = Simulator::Now() - start;
34.214 + dataset.Add(elapsed.GetSeconds(), rxPowerDbm);
34.215 +
34.216 + Simulator::Stop (timeStep);
34.217 + Simulator::Run ();
34.218 + }
34.219 + }
34.220 +
34.221 + std::ostringstream os;
34.222 + os << "txPower " << txPowerDbm << "dBm";
34.223 + dataset.SetTitle(os.str());
34.224 +
34.225 + plot.AddDataset(dataset);
34.226 +
34.227 + plot.AddDataset( Gnuplot2dFunction("-94 dBm CSThreshold", "-94.0") );
34.228 +
34.229 + return plot;
34.230 }
34.231
34.232 int main (int argc, char *argv[])
34.233 {
34.234 + GnuplotCollection gnuplots("main-propagation-loss.pdf");
34.235
34.236 - Config::SetDefault ("ns3::LogDistancePropagationLossModel::ReferenceDistance", StringValue ("1.0"));
34.237 - Config::SetDefault ("ns3::LogDistancePropagationLossModel::Exponent", StringValue ("4"));
34.238 + {
34.239 + Ptr<FriisPropagationLossModel> friis = CreateObject<FriisPropagationLossModel> ();
34.240
34.241 - PrintOne (-10, 20, 5, 0, 10000, 2);
34.242 + Gnuplot plot = TestDeterministic(friis);
34.243 + plot.SetTitle("ns3::FriisPropagationLossModel (Default Parameters)");
34.244 + gnuplots.AddPlot(plot);
34.245 + }
34.246 +
34.247 + {
34.248 + Ptr<LogDistancePropagationLossModel> log = CreateObject<LogDistancePropagationLossModel> ();
34.249 + log->SetAttribute("Exponent", DoubleValue (2.5));
34.250 +
34.251 + Gnuplot plot = TestDeterministic(log);
34.252 + plot.SetTitle("ns3::LogDistancePropagationLossModel (Exponent = 2.5)");
34.253 + gnuplots.AddPlot(plot);
34.254 + }
34.255 +
34.256 + {
34.257 + Ptr<RandomPropagationLossModel> random = CreateObject<RandomPropagationLossModel> ();
34.258 + random->SetAttribute("Variable", RandomVariableValue(ExponentialVariable(50.0)));
34.259 +
34.260 + Gnuplot plot = TestDeterministic(random);
34.261 + plot.SetTitle("ns3::RandomPropagationLossModel with Exponential Distribution");
34.262 + gnuplots.AddPlot(plot);
34.263 + }
34.264 +
34.265 + {
34.266 + Ptr<JakesPropagationLossModel> jakes = CreateObject<JakesPropagationLossModel> ();
34.267 +
34.268 + // doppler frequency shift for 5.15 GHz at 100 km/h
34.269 + jakes->SetAttribute("DopplerFreq", DoubleValue(477.9));
34.270 +
34.271 + Gnuplot plot = TestDeterministicByTime (jakes, Seconds(0.001), Seconds(1.0));
34.272 + plot.SetTitle("ns3::JakesPropagationLossModel (with 477.9 Hz shift and 1 millisec resolution)");
34.273 + gnuplots.AddPlot(plot);
34.274 + }
34.275 +
34.276 + {
34.277 + Ptr<JakesPropagationLossModel> jakes = CreateObject<JakesPropagationLossModel> ();
34.278 +
34.279 + // doppler frequency shift for 5.15 GHz at 100 km/h
34.280 + jakes->SetAttribute("DopplerFreq", DoubleValue(477.9));
34.281 +
34.282 + Gnuplot plot = TestDeterministicByTime (jakes, Seconds(0.0001), Seconds(0.1));
34.283 + plot.SetTitle("ns3::JakesPropagationLossModel (with 477.9 Hz shift and 0.1 millisec resolution)");
34.284 + gnuplots.AddPlot(plot);
34.285 + }
34.286 +
34.287 + {
34.288 + Ptr<ThreeLogDistancePropagationLossModel> log3 = CreateObject<ThreeLogDistancePropagationLossModel> ();
34.289 +
34.290 + Gnuplot plot = TestDeterministic(log3);
34.291 + plot.SetTitle("ns3::ThreeLogDistancePropagationLossModel (Defaults)");
34.292 + gnuplots.AddPlot(plot);
34.293 + }
34.294 +
34.295 + {
34.296 + Ptr<ThreeLogDistancePropagationLossModel> log3 = CreateObject<ThreeLogDistancePropagationLossModel> ();
34.297 + // more prominent example values:
34.298 + log3->SetAttribute("Exponent0", DoubleValue(1.0));
34.299 + log3->SetAttribute("Exponent1", DoubleValue(3.0));
34.300 + log3->SetAttribute("Exponent2", DoubleValue(10.0));
34.301 +
34.302 + Gnuplot plot = TestDeterministic(log3);
34.303 + plot.SetTitle("ns3::ThreeLogDistancePropagationLossModel (Exponents 1.0, 3.0 and 10.0)");
34.304 + gnuplots.AddPlot(plot);
34.305 + }
34.306 +
34.307 + {
34.308 + Ptr<NakagamiPropagationLossModel> nak = CreateObject<NakagamiPropagationLossModel> ();
34.309 +
34.310 + Gnuplot plot = TestProbabilistic(nak);
34.311 + plot.SetTitle("ns3::NakagamiPropagationLossModel (Default Parameters)");
34.312 + gnuplots.AddPlot(plot);
34.313 + }
34.314 +
34.315 + {
34.316 + Ptr<ThreeLogDistancePropagationLossModel> log3 = CreateObject<ThreeLogDistancePropagationLossModel> ();
34.317 +
34.318 + Ptr<NakagamiPropagationLossModel> nak = CreateObject<NakagamiPropagationLossModel> ();
34.319 + log3->SetNext(nak);
34.320 +
34.321 + Gnuplot plot = TestProbabilistic(log3);
34.322 + plot.SetTitle("ns3::ThreeLogDistancePropagationLossModel and ns3::NakagamiPropagationLossModel (Default Parameters)");
34.323 + gnuplots.AddPlot(plot);
34.324 + }
34.325 +
34.326 + gnuplots.GenerateOutput(std::cout);
34.327
34.328 return 0;
34.329 }
35.1 --- a/src/applications/packet-sink/packet-sink.cc Sat May 30 17:36:50 2009 +0100
35.2 +++ b/src/applications/packet-sink/packet-sink.cc Sat May 30 17:37:38 2009 +0100
35.3 @@ -18,10 +18,12 @@
35.4 * Author: Tom Henderson (tomhend@u.washington.edu)
35.5 */
35.6 #include "ns3/address.h"
35.7 +#include "ns3/address-utils.h"
35.8 #include "ns3/log.h"
35.9 #include "ns3/inet-socket-address.h"
35.10 #include "ns3/node.h"
35.11 #include "ns3/socket.h"
35.12 +#include "ns3/udp-socket.h"
35.13 #include "ns3/simulator.h"
35.14 #include "ns3/socket-factory.h"
35.15 #include "ns3/packet.h"
35.16 @@ -88,6 +90,19 @@
35.17 m_socket = Socket::CreateSocket (GetNode(), m_tid);
35.18 m_socket->Bind (m_local);
35.19 m_socket->Listen ();
35.20 + if (addressUtils::IsMulticast (m_local))
35.21 + {
35.22 + Ptr<UdpSocket> udpSocket = DynamicCast<UdpSocket> (m_socket);
35.23 + if (udpSocket)
35.24 + {
35.25 + // equivalent to setsockopt (MCAST_JOIN_GROUP)
35.26 + udpSocket->MulticastJoinGroup (0, m_local);
35.27 + }
35.28 + else
35.29 + {
35.30 + NS_FATAL_ERROR ("Error: joining multicast on a non-UDP socket");
35.31 + }
35.32 + }
35.33 }
35.34
35.35 m_socket->SetRecvCallback (MakeCallback(&PacketSink::HandleRead, this));
36.1 --- a/src/applications/udp-echo/udp-echo-server.cc Sat May 30 17:36:50 2009 +0100
36.2 +++ b/src/applications/udp-echo/udp-echo-server.cc Sat May 30 17:37:38 2009 +0100
36.3 @@ -18,9 +18,11 @@
36.4
36.5 #include "ns3/log.h"
36.6 #include "ns3/ipv4-address.h"
36.7 +#include "ns3/address-utils.h"
36.8 #include "ns3/nstime.h"
36.9 #include "ns3/inet-socket-address.h"
36.10 #include "ns3/socket.h"
36.11 +#include "ns3/udp-socket.h"
36.12 #include "ns3/simulator.h"
36.13 #include "ns3/socket-factory.h"
36.14 #include "ns3/packet.h"
36.15 @@ -76,6 +78,19 @@
36.16 m_socket = Socket::CreateSocket (GetNode(), tid);
36.17 InetSocketAddress local = InetSocketAddress (Ipv4Address::GetAny (), m_port);
36.18 m_socket->Bind (local);
36.19 + if (addressUtils::IsMulticast (m_local))
36.20 + {
36.21 + Ptr<UdpSocket> udpSocket = DynamicCast<UdpSocket> (m_socket);
36.22 + if (udpSocket)
36.23 + {
36.24 + // equivalent to setsockopt (MCAST_JOIN_GROUP)
36.25 + udpSocket->MulticastJoinGroup (0, m_local);
36.26 + }
36.27 + else
36.28 + {
36.29 + NS_FATAL_ERROR ("Error: joining multicast on a non-UDP socket");
36.30 + }
36.31 + }
36.32 }
36.33
36.34 m_socket->SetRecvCallback(MakeCallback(&UdpEchoServer::HandleRead, this));
37.1 --- a/src/core/object.cc Sat May 30 17:36:50 2009 +0100
37.2 +++ b/src/core/object.cc Sat May 30 17:37:38 2009 +0100
37.3 @@ -160,6 +160,24 @@
37.4 other->m_next = next;
37.5 NS_ASSERT (CheckLoose ());
37.6 NS_ASSERT (o->CheckLoose ());
37.7 + // call NotifyNewAggregate in the listed chain
37.8 + Object *currentObject = this;
37.9 + do
37.10 + {
37.11 + // the NotifyNewAggregate of the current object implementation
37.12 + // should be called on the next object in the linked chain
37.13 + currentObject->NotifyNewAggregate ();
37.14 + currentObject = currentObject->m_next;
37.15 + } while (currentObject != this);
37.16 +}
37.17 +/**
37.18 + * This function must be implemented in the stack that needs to notify
37.19 + * other stacks connected to the node of their presence in the node.
37.20 + */
37.21 +void
37.22 +Object::NotifyNewAggregate ()
37.23 +{
37.24 +
37.25 }
37.26
37.27 Object::AggregateIterator
38.1 --- a/src/core/object.h Sat May 30 17:36:50 2009 +0100
38.2 +++ b/src/core/object.h Sat May 30 17:37:38 2009 +0100
38.3 @@ -160,6 +160,13 @@
38.4 AggregateIterator GetAggregateIterator (void) const;
38.5
38.6 protected:
38.7 + /**
38.8 + * This function is called by the AggregateObject on all the objects connected in the listed chain.
38.9 + * This way the new object aggregated will be used if needed by the NotifyNewAggregate corresponding
38.10 + * to each object connected in the listed chain. It should be implemented by objects needing an
38.11 + * additional/special behavior when aggregated to another object.
38.12 + */
38.13 + virtual void NotifyNewAggregate ();
38.14 /**
38.15 * This method is called by Object::Dispose or by the object's
38.16 * destructor, whichever comes first.
39.1 --- a/src/devices/emu/emu-net-device.cc Sat May 30 17:36:50 2009 +0100
39.2 +++ b/src/devices/emu/emu-net-device.cc Sat May 30 17:37:38 2009 +0100
39.3 @@ -173,7 +173,9 @@
39.4 m_sock (-1),
39.5 m_readThread (0),
39.6 m_ifIndex (std::numeric_limits<uint32_t>::max ()), // absurdly large value
39.7 - m_sll_ifindex (-1)
39.8 + m_sll_ifindex (-1),
39.9 + m_isBroadcast (true),
39.10 + m_isMulticast (false)
39.11 {
39.12 NS_LOG_FUNCTION (this);
39.13 Start (m_tStart);
39.14 @@ -293,7 +295,19 @@
39.15 {
39.16 NS_FATAL_ERROR ("EmuNetDevice::StartDevice(): " << m_deviceName << " is not in promiscuous mode");
39.17 }
39.18 -
39.19 + if ((ifr.ifr_flags & IFF_BROADCAST) != IFF_BROADCAST)
39.20 + {
39.21 + // We default m_isBroadcast to true but turn it off here if not
39.22 + // supported, because in the common case, overlying IP code will
39.23 + // assert during configuration time if this is false, before this
39.24 + // method has a chance to set it during runtime
39.25 + m_isBroadcast = false;
39.26 + }
39.27 + if ((ifr.ifr_flags & IFF_MULTICAST) == IFF_MULTICAST)
39.28 + {
39.29 + // This one is OK to enable at runtime
39.30 + m_isMulticast = true;
39.31 + }
39.32 //
39.33 // Now spin up a read thread to read packets.
39.34 //
39.35 @@ -918,7 +932,7 @@
39.36 bool
39.37 EmuNetDevice::IsBroadcast (void) const
39.38 {
39.39 - return true;
39.40 + return m_isBroadcast;
39.41 }
39.42
39.43 Address
39.44 @@ -930,7 +944,7 @@
39.45 bool
39.46 EmuNetDevice::IsMulticast (void) const
39.47 {
39.48 - return false;
39.49 + return m_isMulticast;
39.50 }
39.51
39.52 Address
40.1 --- a/src/devices/emu/emu-net-device.h Sat May 30 17:36:50 2009 +0100
40.2 +++ b/src/devices/emu/emu-net-device.h Sat May 30 17:37:38 2009 +0100
40.3 @@ -453,6 +453,18 @@
40.4 bool m_linkUp;
40.5
40.6 /**
40.7 + * Flag indicating whether or not the underlying net device supports
40.8 + * broadcast.
40.9 + */
40.10 + bool m_isBroadcast;
40.11 +
40.12 + /**
40.13 + * Flag indicating whether or not the underlying net device supports
40.14 + * multicast.
40.15 + */
40.16 + bool m_isMulticast;
40.17 +
40.18 + /**
40.19 * Callback to fire if the link changes state (up or down).
40.20 */
40.21 Callback<void> m_linkChangeCallback;
41.1 --- a/src/devices/tap-bridge/tap-bridge.cc Sat May 30 17:36:50 2009 +0100
41.2 +++ b/src/devices/tap-bridge/tap-bridge.cc Sat May 30 17:37:38 2009 +0100
41.3 @@ -342,7 +342,7 @@
41.4 Ptr<NetDevice> nd = GetBridgedNetDevice ();
41.5 Ptr<Node> n = nd->GetNode ();
41.6 Ptr<Ipv4> ipv4 = n->GetObject<Ipv4> ();
41.7 - uint32_t index = ipv4->FindInterfaceForDevice (nd);
41.8 + uint32_t index = ipv4->GetInterfaceForDevice (nd);
41.9 if (ipv4->GetNAddresses (index) > 1)
41.10 {
41.11 NS_LOG_WARN ("Underlying bridged NetDevice has multiple IP addresses; using first one.");
42.1 --- a/src/devices/wifi/adhoc-wifi-mac.cc Sat May 30 17:36:50 2009 +0100
42.2 +++ b/src/devices/wifi/adhoc-wifi-mac.cc Sat May 30 17:37:38 2009 +0100
42.3 @@ -98,7 +98,6 @@
42.4 AdhocWifiMac::SetEifsNoDifs (Time eifsNoDifs)
42.5 {
42.6 m_dcfManager->SetEifsNoDifs (eifsNoDifs);
42.7 - m_eifsNoDifs = eifsNoDifs;
42.8 }
42.9 void
42.10 AdhocWifiMac::SetAckTimeout (Time ackTimeout)
42.11 @@ -128,7 +127,7 @@
42.12 Time
42.13 AdhocWifiMac::GetEifsNoDifs (void) const
42.14 {
42.15 - return m_eifsNoDifs;
42.16 + return m_dcfManager->GetEifsNoDifs ();
42.17 }
42.18 Time
42.19 AdhocWifiMac::GetAckTimeout (void) const
42.20 @@ -241,7 +240,7 @@
42.21 }
42.22
42.23 void
42.24 -AdhocWifiMac::ForwardUp (Ptr<Packet> packet, WifiMacHeader const *hdr)
42.25 +AdhocWifiMac::ForwardUp (Ptr<Packet> packet, const WifiMacHeader *hdr)
42.26 {
42.27 NS_LOG_DEBUG ("received size="<<packet->GetSize ()<<", from="<<hdr->GetAddr2 ());
42.28 m_upCallback (packet, hdr->GetAddr2 (), hdr->GetAddr1 ());
43.1 --- a/src/devices/wifi/adhoc-wifi-mac.h Sat May 30 17:36:50 2009 +0100
43.2 +++ b/src/devices/wifi/adhoc-wifi-mac.h Sat May 30 17:37:38 2009 +0100
43.3 @@ -83,7 +83,7 @@
43.4 // inherited from Object base class.
43.5 virtual void DoDispose (void);
43.6 /* invoked by the MacLows. */
43.7 - void ForwardUp (Ptr<Packet> packet, WifiMacHeader const*hdr);
43.8 + void ForwardUp (Ptr<Packet> packet, const WifiMacHeader *hdr);
43.9 AdhocWifiMac (const AdhocWifiMac & ctor_arg);
43.10 AdhocWifiMac &operator = (const AdhocWifiMac &o);
43.11 Ptr<DcaTxop> GetDcaTxop(void) const;
43.12 @@ -97,7 +97,6 @@
43.13 MacRxMiddle *m_rxMiddle;
43.14 Ptr<MacLow> m_low;
43.15 Ssid m_ssid;
43.16 - Time m_eifsNoDifs;
43.17 };
43.18
43.19 } // namespace ns3
44.1 --- a/src/devices/wifi/dca-txop.cc Sat May 30 17:36:50 2009 +0100
44.2 +++ b/src/devices/wifi/dca-txop.cc Sat May 30 17:37:38 2009 +0100
44.3 @@ -232,7 +232,7 @@
44.4 }
44.5
44.6 void
44.7 -DcaTxop::Queue (Ptr<const Packet> packet, WifiMacHeader const &hdr)
44.8 +DcaTxop::Queue (Ptr<const Packet> packet, const WifiMacHeader &hdr)
44.9 {
44.10 NS_LOG_FUNCTION (this << packet << &hdr);
44.11 WifiMacTrailer fcs;
45.1 --- a/src/devices/wifi/dca-txop.h Sat May 30 17:36:50 2009 +0100
45.2 +++ b/src/devices/wifi/dca-txop.h Sat May 30 17:37:38 2009 +0100
45.3 @@ -67,8 +67,8 @@
45.4 public:
45.5 static TypeId GetTypeId (void);
45.6
45.7 - typedef Callback <void, WifiMacHeader const&> TxOk;
45.8 - typedef Callback <void, WifiMacHeader const&> TxFailed;
45.9 + typedef Callback <void, const WifiMacHeader&> TxOk;
45.10 + typedef Callback <void, const WifiMacHeader&> TxFailed;
45.11
45.12 DcaTxop ();
45.13 ~DcaTxop ();
45.14 @@ -104,7 +104,7 @@
45.15 * Store the packet in the internal queue until it
45.16 * can be sent safely.
45.17 */
45.18 - void Queue (Ptr<const Packet> packet, WifiMacHeader const &hdr);
45.19 + void Queue (Ptr<const Packet> packet, const WifiMacHeader &hdr);
45.20
45.21 private:
45.22 class TransmissionListener;
46.1 --- a/src/devices/wifi/dcf-manager.cc Sat May 30 17:36:50 2009 +0100
46.2 +++ b/src/devices/wifi/dcf-manager.cc Sat May 30 17:37:38 2009 +0100
46.3 @@ -261,6 +261,11 @@
46.4 {
46.5 m_eifsNoDifs = eifsNoDifs;
46.6 }
46.7 +Time
46.8 +DcfManager::GetEifsNoDifs () const
46.9 +{
46.10 + return m_eifsNoDifs;
46.11 +}
46.12
46.13 void
46.14 DcfManager::Add (DcfState *dcf)
47.1 --- a/src/devices/wifi/dcf-manager.h Sat May 30 17:36:50 2009 +0100
47.2 +++ b/src/devices/wifi/dcf-manager.h Sat May 30 17:37:38 2009 +0100
47.3 @@ -169,6 +169,11 @@
47.4 void SetEifsNoDifs (Time eifsNoDifs);
47.5
47.6 /**
47.7 + * \return value set previously using SetEifsNoDifs.
47.8 + */
47.9 + Time GetEifsNoDifs () const;
47.10 +
47.11 + /**
47.12 * \param dcf a new DcfState.
47.13 *
47.14 * The DcfManager does not take ownership of this pointer so, the callee
48.1 --- a/src/devices/wifi/interference-helper.cc Sat May 30 17:36:50 2009 +0100
48.2 +++ b/src/devices/wifi/interference-helper.cc Sat May 30 17:37:38 2009 +0100
48.3 @@ -123,7 +123,7 @@
48.4 ****************************************************************/
48.5
48.6 InterferenceHelper::InterferenceHelper ()
48.7 - : m_80211a (false),
48.8 + : m_80211_standard (WIFI_PHY_STANDARD_80211a),
48.9 m_errorRateModel (0)
48.10 {}
48.11 InterferenceHelper::~InterferenceHelper ()
48.12 @@ -227,12 +227,25 @@
48.13 Time
48.14 InterferenceHelper::CalculateTxDuration (uint32_t size, WifiMode payloadMode, WifiPreamble preamble) const
48.15 {
48.16 - NS_ASSERT (m_80211a);
48.17 uint64_t delay = 0;
48.18 - delay += m_plcpLongPreambleDelayUs;
48.19 - // symbol duration is 4us
48.20 - delay += 4;
48.21 - delay += lrint (ceil ((size * 8.0 + 16.0 + 6.0) / payloadMode.GetDataRate () / 4e-6) * 4);
48.22 + switch (m_80211_standard)
48.23 + {
48.24 + case WIFI_PHY_STANDARD_80211a:
48.25 + case WIFI_PHY_STANDARD_holland:
48.26 + delay += m_plcpLongPreambleDelayUs;
48.27 + // symbol duration is 4us
48.28 + delay += 4;
48.29 + delay += lrint (ceil ((size * 8.0 + 16.0 + 6.0) / payloadMode.GetDataRate () / 4e-6) * 4);
48.30 + break;
48.31 + case WIFI_PHY_STANDARD_80211b:
48.32 + delay += m_plcpLongPreambleDelayUs;
48.33 + delay += lrint (ceil ((size * 8.0 + 48.0) / payloadMode.GetDataRate () / 4e-6) * 4);
48.34 + break;
48.35 + default:
48.36 + NS_ASSERT (false);
48.37 + break;
48.38 + }
48.39 +
48.40 return MicroSeconds (delay);
48.41 }
48.42
48.43 @@ -240,7 +253,7 @@
48.44 InterferenceHelper::Configure80211aParameters (void)
48.45 {
48.46 NS_LOG_FUNCTION (this);
48.47 - m_80211a = true;
48.48 + m_80211_standard = WIFI_PHY_STANDARD_80211a;
48.49 m_plcpLongPreambleDelayUs = 16;
48.50 m_plcpShortPreambleDelayUs = 16;
48.51 m_longPlcpHeaderMode = WifiPhy::Get6mba ();
48.52 @@ -250,6 +263,20 @@
48.53 m_maxPacketDuration = CalculateTxDuration (4095, WifiPhy::Get6mba (), WIFI_PREAMBLE_LONG);
48.54 }
48.55
48.56 +void
48.57 +InterferenceHelper::Configure80211bParameters (void)
48.58 +{
48.59 + NS_LOG_FUNCTION (this);
48.60 + m_80211_standard = WIFI_PHY_STANDARD_80211b;
48.61 + m_plcpLongPreambleDelayUs = 144;
48.62 + m_plcpShortPreambleDelayUs = 144; // fixed preamable for 802.11b
48.63 + m_longPlcpHeaderMode = WifiPhy::Get1mbb ();
48.64 + m_shortPlcpHeaderMode = WifiPhy::Get1mbb ();
48.65 + // PLCP Header: signal 8, service 8, length 16, CRC 16 bits
48.66 + m_plcpHeaderLength = 8 + 8 + 16 + 16;
48.67 + m_maxPacketDuration = CalculateTxDuration (4095, WifiPhy::Get1mbb (), WIFI_PREAMBLE_LONG);
48.68 +}
48.69 +
48.70 void
48.71 InterferenceHelper::AppendEvent (Ptr<InterferenceHelper::Event> event)
48.72 {
49.1 --- a/src/devices/wifi/interference-helper.h Sat May 30 17:36:50 2009 +0100
49.2 +++ b/src/devices/wifi/interference-helper.h Sat May 30 17:37:38 2009 +0100
49.3 @@ -25,6 +25,7 @@
49.4 #include <list>
49.5 #include "wifi-mode.h"
49.6 #include "wifi-preamble.h"
49.7 +#include "wifi-phy-standard.h"
49.8 #include "ns3/nstime.h"
49.9 #include "ns3/ref-count-base.h"
49.10
49.11 @@ -69,6 +70,7 @@
49.12 ~InterferenceHelper ();
49.13
49.14 void Configure80211aParameters (void);
49.15 + void Configure80211bParameters (void);
49.16 void SetNoiseFigure (double value);
49.17 void SetErrorRateModel (Ptr<ErrorRateModel> rate);
49.18
49.19 @@ -120,7 +122,7 @@
49.20 Time m_maxPacketDuration;
49.21 double m_noiseFigure; /**< noise figure (linear) */
49.22 Events m_events;
49.23 - bool m_80211a;
49.24 + enum WifiPhyStandard m_80211_standard;
49.25 Ptr<ErrorRateModel> m_errorRateModel;
49.26 };
49.27
50.1 --- a/src/devices/wifi/jakes-propagation-loss-model.cc Sat May 30 17:36:50 2009 +0100
50.2 +++ b/src/devices/wifi/jakes-propagation-loss-model.cc Sat May 30 17:37:38 2009 +0100
50.3 @@ -127,7 +127,7 @@
50.4
50.5 NS_OBJECT_ENSURE_REGISTERED (JakesPropagationLossModel);
50.6
50.7 -const double JakesPropagationLossModel::PI = 3.1415;
50.8 +const double JakesPropagationLossModel::PI = 3.14159265358979323846;
50.9
50.10 TypeId
50.11 JakesPropagationLossModel::GetTypeId (void)
51.1 --- a/src/devices/wifi/msdu-aggregator.cc Sat May 30 17:36:50 2009 +0100
51.2 +++ b/src/devices/wifi/msdu-aggregator.cc Sat May 30 17:37:38 2009 +0100
51.3 @@ -59,7 +59,7 @@
51.4
51.5 padding = (4 - ((hdr.GetLength () + 14) %4 )) % 4;
51.6
51.7 - if (padding > 0)
51.8 + if (padding > 0 && deserialized < maxSize)
51.9 {
51.10 aggregatedPacket->RemoveAtStart (padding);
51.11 deserialized += padding;
52.1 --- a/src/devices/wifi/msdu-standard-aggregator.cc Sat May 30 17:36:50 2009 +0100
52.2 +++ b/src/devices/wifi/msdu-standard-aggregator.cc Sat May 30 17:37:38 2009 +0100
52.3 @@ -57,19 +57,20 @@
52.4 Ptr<Packet> currentPacket;
52.5 AmsduSubframeHeader currentHdr;
52.6
52.7 - uint32_t padding = CalculatePadding (packet);
52.8 + uint32_t padding = CalculatePadding (aggregatedPacket);
52.9 uint32_t actualSize = aggregatedPacket->GetSize ();
52.10
52.11 if ((14 + packet->GetSize () + actualSize + padding) <= m_maxAmsduLength)
52.12 {
52.13 + if (padding)
52.14 + {
52.15 + aggregatedPacket->AddPaddingAtEnd (padding);
52.16 + }
52.17 currentHdr.SetDestinationAddr (dest);
52.18 currentHdr.SetSourceAddr (src);
52.19 currentHdr.SetLength (packet->GetSize ());
52.20 currentPacket = packet->Copy ();
52.21 - if (padding)
52.22 - {
52.23 - currentPacket->AddPaddingAtEnd (padding);
52.24 - }
52.25 +
52.26 currentPacket->AddHeader (currentHdr);
52.27 aggregatedPacket->AddAtEnd (currentPacket);
52.28 return true;
52.29 @@ -80,7 +81,7 @@
52.30 uint32_t
52.31 MsduStandardAggregator::CalculatePadding (Ptr<const Packet> packet)
52.32 {
52.33 - return (4 - ((packet->GetSize() + 14) %4 )) % 4;
52.34 + return (4 - (packet->GetSize() %4 )) % 4;
52.35 }
52.36
52.37 } //namespace ns3
53.1 --- a/src/devices/wifi/msdu-standard-aggregator.h Sat May 30 17:36:50 2009 +0100
53.2 +++ b/src/devices/wifi/msdu-standard-aggregator.h Sat May 30 17:37:38 2009 +0100
53.3 @@ -43,7 +43,8 @@
53.4 virtual bool Aggregate (Ptr<const Packet> packet, Ptr<Packet> aggregatedPacket,
53.5 Mac48Address src, Mac48Address dest);
53.6 private:
53.7 - /* Calculates how much padding must be added to the end of packet.
53.8 + /* Calculates how much padding must be added to the end of aggregated packet,
53.9 + after that a new packet is added.
53.10 Each A-MSDU subframe is padded so that its length is multiple of 4 octects.
53.11 */
53.12 uint32_t CalculatePadding (Ptr<const Packet> packet);
54.1 --- a/src/devices/wifi/nqap-wifi-mac.cc Sat May 30 17:36:50 2009 +0100
54.2 +++ b/src/devices/wifi/nqap-wifi-mac.cc Sat May 30 17:37:38 2009 +0100
54.3 @@ -152,7 +152,6 @@
54.4 {
54.5 NS_LOG_FUNCTION (this << eifsNoDifs);
54.6 m_dcfManager->SetEifsNoDifs (eifsNoDifs);
54.7 - m_eifsNoDifs = eifsNoDifs;
54.8 }
54.9 void
54.10 NqapWifiMac::SetAckTimeout (Time ackTimeout)
54.11 @@ -182,7 +181,7 @@
54.12 Time
54.13 NqapWifiMac::GetEifsNoDifs (void) const
54.14 {
54.15 - return m_eifsNoDifs;
54.16 + return m_dcfManager->GetEifsNoDifs ();
54.17 }
54.18 Time
54.19 NqapWifiMac::GetAckTimeout (void) const
55.1 --- a/src/devices/wifi/nqap-wifi-mac.h Sat May 30 17:36:50 2009 +0100
55.2 +++ b/src/devices/wifi/nqap-wifi-mac.h Sat May 30 17:37:38 2009 +0100
55.3 @@ -129,7 +129,6 @@
55.4 Ptr<MacLow> m_low;
55.5 Ssid m_ssid;
55.6 EventId m_beaconEvent;
55.7 - Time m_eifsNoDifs;
55.8 };
55.9
55.10 } // namespace ns3
56.1 --- a/src/devices/wifi/nqsta-wifi-mac.cc Sat May 30 17:36:50 2009 +0100
56.2 +++ b/src/devices/wifi/nqsta-wifi-mac.cc Sat May 30 17:37:38 2009 +0100
56.3 @@ -156,7 +156,6 @@
56.4 {
56.5 NS_LOG_FUNCTION (this << eifsNoDifs);
56.6 m_dcfManager->SetEifsNoDifs (eifsNoDifs);
56.7 - m_eifsNoDifs = eifsNoDifs;
56.8 }
56.9 void
56.10 NqstaWifiMac::SetAckTimeout (Time ackTimeout)
56.11 @@ -186,7 +185,7 @@
56.12 Time
56.13 NqstaWifiMac::GetEifsNoDifs (void) const
56.