--- a/CHANGES.html Fri Nov 20 13:06:15 2009 +0300
+++ b/CHANGES.html Fri Nov 20 13:06:46 2009 +0300
@@ -59,9 +59,10 @@
by the ns-3 logging system to report the execution context of each log line.
<li><b>Object::DoStart</b>: Users who need to complete their object setup at the start of a simulation
can override this virtual method, perform their adhoc setup, and then, must chain up to their parent.
-
<li><b>Aod hoc On-Demand Distance Vector (AODV)</b> routing model,
<a href=http://www.ietf.org/rfc/rfc3561.txt>RFC 3561</a> </li>
+<li><b>Ipv4::IsDestinationAddress (Ipv4Address address, uint32_t iif)</b> Method added to support checks of whether a destination address should be accepted
+as one of the host's own addresses. RFC 1122 Strong/Weak end system behavior can be changed with a new attribute (WeakEsModel) in class Ipv4. </li>
</ul>
--- a/bindings/python/apidefs/gcc-ILP32/ns3_module_core.py Fri Nov 20 13:06:15 2009 +0300
+++ b/bindings/python/apidefs/gcc-ILP32/ns3_module_core.py Fri Nov 20 13:06:46 2009 +0300
@@ -3372,7 +3372,7 @@
module.add_function('TypeNameGet',
'std::string',
[],
- template_parameters=['long long'])
+ template_parameters=['long'])
## type-name.h: extern std::string ns3::TypeNameGet() [free function]
module.add_function('TypeNameGet',
'std::string',
--- a/bindings/python/apidefs/gcc-ILP32/ns3_module_dot11s.py Fri Nov 20 13:06:15 2009 +0300
+++ b/bindings/python/apidefs/gcc-ILP32/ns3_module_dot11s.py Fri Nov 20 13:06:46 2009 +0300
@@ -79,12 +79,12 @@
module.add_enum('dot11sSynchronizationProtocolIdentifier', ['SYNC_NEIGHBOUR_OFFSET', 'SYNC_NULL'])
## ie-dot11s-configuration.h: ns3::dot11s::dot11sCongestionControlMode [enumeration]
module.add_enum('dot11sCongestionControlMode', ['CONGESTION_SIGNALING', 'CONGESTION_NULL'])
+ ## ie-dot11s-configuration.h: ns3::dot11s::dot11sPathSelectionMetric [enumeration]
+ module.add_enum('dot11sPathSelectionMetric', ['METRIC_AIRTIME'])
+ ## ie-dot11s-peer-management.h: ns3::dot11s::PmpReasonCode [enumeration]
+ module.add_enum('PmpReasonCode', ['REASON11S_PEERING_CANCELLED', 'REASON11S_MESH_MAX_PEERS', 'REASON11S_MESH_CAPABILITY_POLICY_VIOLATION', 'REASON11S_MESH_CLOSE_RCVD', 'REASON11S_MESH_MAX_RETRIES', 'REASON11S_MESH_CONFIRM_TIMEOUT', 'REASON11S_MESH_INVALID_GTK', 'REASON11S_MESH_INCONSISTENT_PARAMETERS', 'REASON11S_MESH_INVALID_SECURITY_CAPABILITY', 'REASON11S_RESERVED'])
## ie-dot11s-configuration.h: ns3::dot11s::dot11sAuthenticationProtocol [enumeration]
module.add_enum('dot11sAuthenticationProtocol', ['AUTH_NULL', 'AUTH_SAE'])
- ## ie-dot11s-peer-management.h: ns3::dot11s::PmpReasonCode [enumeration]
- module.add_enum('PmpReasonCode', ['REASON11S_PEERING_CANCELLED', 'REASON11S_MESH_MAX_PEERS', 'REASON11S_MESH_CAPABILITY_POLICY_VIOLATION', 'REASON11S_MESH_CLOSE_RCVD', 'REASON11S_MESH_MAX_RETRIES', 'REASON11S_MESH_CONFIRM_TIMEOUT', 'REASON11S_MESH_INVALID_GTK', 'REASON11S_MESH_INCONSISTENT_PARAMETERS', 'REASON11S_MESH_INVALID_SECURITY_CAPABILITY', 'REASON11S_RESERVED'])
- ## ie-dot11s-configuration.h: ns3::dot11s::dot11sPathSelectionMetric [enumeration]
- module.add_enum('dot11sPathSelectionMetric', ['METRIC_AIRTIME'])
## ie-dot11s-configuration.h: ns3::dot11s::Dot11sMeshCapability [class]
module.add_class('Dot11sMeshCapability')
## hwmp-protocol.h: ns3::dot11s::HwmpProtocol [class]
--- a/bindings/python/apidefs/gcc-ILP32/ns3_module_internet_stack.py Fri Nov 20 13:06:15 2009 +0300
+++ b/bindings/python/apidefs/gcc-ILP32/ns3_module_internet_stack.py Fri Nov 20 13:06:46 2009 +0300
@@ -2013,6 +2013,11 @@
'int32_t',
[param('ns3::Ptr< ns3::NetDevice const >', 'device')],
is_const=True, is_virtual=True)
+ ## ipv4-l3-protocol.h: bool ns3::Ipv4L3Protocol::IsDestinationAddress(ns3::Ipv4Address address, uint32_t iif) const [member function]
+ cls.add_method('IsDestinationAddress',
+ 'bool',
+ [param('ns3::Ipv4Address', 'address'), param('uint32_t', 'iif')],
+ is_const=True, is_virtual=True)
## ipv4-l3-protocol.h: bool ns3::Ipv4L3Protocol::AddAddress(uint32_t i, ns3::Ipv4InterfaceAddress address) [member function]
cls.add_method('AddAddress',
'bool',
@@ -2098,6 +2103,16 @@
'bool',
[],
is_const=True, visibility='private', is_virtual=True)
+ ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::SetWeakEsModel(bool model) [member function]
+ cls.add_method('SetWeakEsModel',
+ 'void',
+ [param('bool', 'model')],
+ visibility='private', is_virtual=True)
+ ## ipv4-l3-protocol.h: bool ns3::Ipv4L3Protocol::GetWeakEsModel() const [member function]
+ cls.add_method('GetWeakEsModel',
+ 'bool',
+ [],
+ is_const=True, visibility='private', is_virtual=True)
return
def register_Ns3Ipv4L4Protocol_methods(root_module, cls):
--- a/bindings/python/apidefs/gcc-ILP32/ns3_module_node.py Fri Nov 20 13:06:15 2009 +0300
+++ b/bindings/python/apidefs/gcc-ILP32/ns3_module_node.py Fri Nov 20 13:06:46 2009 +0300
@@ -2754,6 +2754,11 @@
'ns3::TypeId',
[],
is_static=True)
+ ## ipv4.h: bool ns3::Ipv4::IsDestinationAddress(ns3::Ipv4Address address, uint32_t iif) const [member function]
+ cls.add_method('IsDestinationAddress',
+ 'bool',
+ [param('ns3::Ipv4Address', 'address'), param('uint32_t', 'iif')],
+ is_pure_virtual=True, is_const=True, is_virtual=True)
## ipv4.h: bool ns3::Ipv4::IsForwarding(uint32_t interface) const [member function]
cls.add_method('IsForwarding',
'bool',
@@ -2801,11 +2806,21 @@
'bool',
[],
is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+ ## ipv4.h: bool ns3::Ipv4::GetWeakEsModel() const [member function]
+ cls.add_method('GetWeakEsModel',
+ 'bool',
+ [],
+ is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
## ipv4.h: void ns3::Ipv4::SetIpForward(bool forward) [member function]
cls.add_method('SetIpForward',
'void',
[param('bool', 'forward')],
is_pure_virtual=True, visibility='private', is_virtual=True)
+ ## ipv4.h: void ns3::Ipv4::SetWeakEsModel(bool model) [member function]
+ cls.add_method('SetWeakEsModel',
+ 'void',
+ [param('bool', 'model')],
+ is_pure_virtual=True, visibility='private', is_virtual=True)
return
def register_Ns3Ipv4AddressChecker_methods(root_module, cls):
--- a/bindings/python/apidefs/gcc-ILP32/ns3modulegen_generated.py Fri Nov 20 13:06:15 2009 +0300
+++ b/bindings/python/apidefs/gcc-ILP32/ns3modulegen_generated.py Fri Nov 20 13:06:46 2009 +0300
@@ -17,30 +17,30 @@
import ns3_module_test
import ns3_module_mobility
import ns3_module_common
+import ns3_module_contrib
import ns3_module_node
-import ns3_module_contrib
+import ns3_module_tap_bridge
+import ns3_module_v4ping
+import ns3_module_static_routing
+import ns3_module_packet_sink
+import ns3_module_stats
+import ns3_module_onoff
import ns3_module_point_to_point
import ns3_module_internet_stack
-import ns3_module_tap_bridge
import ns3_module_csma
+import ns3_module_list_routing
+import ns3_module_virtual_net_device
import ns3_module_wifi
-import ns3_module_static_routing
-import ns3_module_v4ping
-import ns3_module_virtual_net_device
-import ns3_module_packet_sink
-import ns3_module_global_routing
-import ns3_module_stats
-import ns3_module_list_routing
import ns3_module_emu
import ns3_module_bridge
-import ns3_module_onoff
+import ns3_module_global_routing
import ns3_module_udp_echo
-import ns3_module_ping6
import ns3_module_nix_vector_routing
import ns3_module_olsr
import ns3_module_aodv
+import ns3_module_radvd
+import ns3_module_ping6
import ns3_module_flow_monitor
-import ns3_module_radvd
import ns3_module_mesh
import ns3_module_helper
import ns3_module_dot11s
@@ -108,6 +108,17 @@
ns3_module_common__local.register_types(module)
root_module.end_section('ns3_module_common')
+ root_module.begin_section('ns3_module_contrib')
+ ns3_module_contrib.register_types(module)
+
+ try:
+ import ns3_module_contrib__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_contrib__local.register_types(module)
+
+ root_module.end_section('ns3_module_contrib')
root_module.begin_section('ns3_module_node')
ns3_module_node.register_types(module)
@@ -119,17 +130,72 @@
ns3_module_node__local.register_types(module)
root_module.end_section('ns3_module_node')
- root_module.begin_section('ns3_module_contrib')
- ns3_module_contrib.register_types(module)
+ root_module.begin_section('ns3_module_tap_bridge')
+ ns3_module_tap_bridge.register_types(module)
try:
- import ns3_module_contrib__local
+ import ns3_module_tap_bridge__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_tap_bridge__local.register_types(module)
+
+ root_module.end_section('ns3_module_tap_bridge')
+ root_module.begin_section('ns3_module_v4ping')
+ ns3_module_v4ping.register_types(module)
+
+ try:
+ import ns3_module_v4ping__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_v4ping__local.register_types(module)
+
+ root_module.end_section('ns3_module_v4ping')
+ root_module.begin_section('ns3_module_static_routing')
+ ns3_module_static_routing.register_types(module)
+
+ try:
+ import ns3_module_static_routing__local
except ImportError:
pass
else:
- ns3_module_contrib__local.register_types(module)
+ ns3_module_static_routing__local.register_types(module)
+
+ root_module.end_section('ns3_module_static_routing')
+ root_module.begin_section('ns3_module_packet_sink')
+ ns3_module_packet_sink.register_types(module)
+
+ try:
+ import ns3_module_packet_sink__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_packet_sink__local.register_types(module)
+
+ root_module.end_section('ns3_module_packet_sink')
+ root_module.begin_section('ns3_module_stats')
+ ns3_module_stats.register_types(module)
- root_module.end_section('ns3_module_contrib')
+ try:
+ import ns3_module_stats__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_stats__local.register_types(module)
+
+ root_module.end_section('ns3_module_stats')
+ root_module.begin_section('ns3_module_onoff')
+ ns3_module_onoff.register_types(module)
+
+ try:
+ import ns3_module_onoff__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_onoff__local.register_types(module)
+
+ root_module.end_section('ns3_module_onoff')
root_module.begin_section('ns3_module_point_to_point')
ns3_module_point_to_point.register_types(module)
@@ -152,17 +218,6 @@
ns3_module_internet_stack__local.register_types(module)
root_module.end_section('ns3_module_internet_stack')
- root_module.begin_section('ns3_module_tap_bridge')
- ns3_module_tap_bridge.register_types(module)
-
- try:
- import ns3_module_tap_bridge__local
- except ImportError:
- pass
- else:
- ns3_module_tap_bridge__local.register_types(module)
-
- root_module.end_section('ns3_module_tap_bridge')
root_module.begin_section('ns3_module_csma')
ns3_module_csma.register_types(module)
@@ -174,6 +229,28 @@
ns3_module_csma__local.register_types(module)
root_module.end_section('ns3_module_csma')
+ root_module.begin_section('ns3_module_list_routing')
+ ns3_module_list_routing.register_types(module)
+
+ try:
+ import ns3_module_list_routing__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_list_routing__local.register_types(module)
+
+ root_module.end_section('ns3_module_list_routing')
+ root_module.begin_section('ns3_module_virtual_net_device')
+ ns3_module_virtual_net_device.register_types(module)
+
+ try:
+ import ns3_module_virtual_net_device__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_virtual_net_device__local.register_types(module)
+
+ root_module.end_section('ns3_module_virtual_net_device')
root_module.begin_section('ns3_module_wifi')
ns3_module_wifi.register_types(module)
@@ -185,83 +262,6 @@
ns3_module_wifi__local.register_types(module)
root_module.end_section('ns3_module_wifi')
- root_module.begin_section('ns3_module_static_routing')
- ns3_module_static_routing.register_types(module)
-
- try:
- import ns3_module_static_routing__local
- except ImportError:
- pass
- else:
- ns3_module_static_routing__local.register_types(module)
-
- root_module.end_section('ns3_module_static_routing')
- root_module.begin_section('ns3_module_v4ping')
- ns3_module_v4ping.register_types(module)
-
- try:
- import ns3_module_v4ping__local
- except ImportError:
- pass
- else:
- ns3_module_v4ping__local.register_types(module)
-
- root_module.end_section('ns3_module_v4ping')
- root_module.begin_section('ns3_module_virtual_net_device')
- ns3_module_virtual_net_device.register_types(module)
-
- try:
- import ns3_module_virtual_net_device__local
- except ImportError:
- pass
- else:
- ns3_module_virtual_net_device__local.register_types(module)
-
- root_module.end_section('ns3_module_virtual_net_device')
- root_module.begin_section('ns3_module_packet_sink')
- ns3_module_packet_sink.register_types(module)
-
- try:
- import ns3_module_packet_sink__local
- except ImportError:
- pass
- else:
- ns3_module_packet_sink__local.register_types(module)
-
- root_module.end_section('ns3_module_packet_sink')
- root_module.begin_section('ns3_module_global_routing')
- ns3_module_global_routing.register_types(module)
-
- try:
- import ns3_module_global_routing__local
- except ImportError:
- pass
- else:
- ns3_module_global_routing__local.register_types(module)
-
- root_module.end_section('ns3_module_global_routing')
- root_module.begin_section('ns3_module_stats')
- ns3_module_stats.register_types(module)
-
- try:
- import ns3_module_stats__local
- except ImportError:
- pass
- else:
- ns3_module_stats__local.register_types(module)
-
- root_module.end_section('ns3_module_stats')
- root_module.begin_section('ns3_module_list_routing')
- ns3_module_list_routing.register_types(module)
-
- try:
- import ns3_module_list_routing__local
- except ImportError:
- pass
- else:
- ns3_module_list_routing__local.register_types(module)
-
- root_module.end_section('ns3_module_list_routing')
root_module.begin_section('ns3_module_emu')
ns3_module_emu.register_types(module)
@@ -284,17 +284,17 @@
ns3_module_bridge__local.register_types(module)
root_module.end_section('ns3_module_bridge')
- root_module.begin_section('ns3_module_onoff')
- ns3_module_onoff.register_types(module)
+ root_module.begin_section('ns3_module_global_routing')
+ ns3_module_global_routing.register_types(module)
try:
- import ns3_module_onoff__local
+ import ns3_module_global_routing__local
except ImportError:
pass
else:
- ns3_module_onoff__local.register_types(module)
+ ns3_module_global_routing__local.register_types(module)
- root_module.end_section('ns3_module_onoff')
+ root_module.end_section('ns3_module_global_routing')
root_module.begin_section('ns3_module_udp_echo')
ns3_module_udp_echo.register_types(module)
@@ -306,17 +306,6 @@
ns3_module_udp_echo__local.register_types(module)
root_module.end_section('ns3_module_udp_echo')
- root_module.begin_section('ns3_module_ping6')
- ns3_module_ping6.register_types(module)
-
- try:
- import ns3_module_ping6__local
- except ImportError:
- pass
- else:
- ns3_module_ping6__local.register_types(module)
-
- root_module.end_section('ns3_module_ping6')
root_module.begin_section('ns3_module_nix_vector_routing')
ns3_module_nix_vector_routing.register_types(module)
@@ -350,6 +339,28 @@
ns3_module_aodv__local.register_types(module)
root_module.end_section('ns3_module_aodv')
+ root_module.begin_section('ns3_module_radvd')
+ ns3_module_radvd.register_types(module)
+
+ try:
+ import ns3_module_radvd__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_radvd__local.register_types(module)
+
+ root_module.end_section('ns3_module_radvd')
+ root_module.begin_section('ns3_module_ping6')
+ ns3_module_ping6.register_types(module)
+
+ try:
+ import ns3_module_ping6__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_ping6__local.register_types(module)
+
+ root_module.end_section('ns3_module_ping6')
root_module.begin_section('ns3_module_flow_monitor')
ns3_module_flow_monitor.register_types(module)
@@ -361,17 +372,6 @@
ns3_module_flow_monitor__local.register_types(module)
root_module.end_section('ns3_module_flow_monitor')
- root_module.begin_section('ns3_module_radvd')
- ns3_module_radvd.register_types(module)
-
- try:
- import ns3_module_radvd__local
- except ImportError:
- pass
- else:
- ns3_module_radvd__local.register_types(module)
-
- root_module.end_section('ns3_module_radvd')
root_module.begin_section('ns3_module_mesh')
ns3_module_mesh.register_types(module)
@@ -572,6 +572,17 @@
ns3_module_common__local.register_methods(root_module)
root_module.end_section('ns3_module_common')
+ root_module.begin_section('ns3_module_contrib')
+ ns3_module_contrib.register_methods(root_module)
+
+ try:
+ import ns3_module_contrib__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_contrib__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_contrib')
root_module.begin_section('ns3_module_node')
ns3_module_node.register_methods(root_module)
@@ -583,17 +594,72 @@
ns3_module_node__local.register_methods(root_module)
root_module.end_section('ns3_module_node')
- root_module.begin_section('ns3_module_contrib')
- ns3_module_contrib.register_methods(root_module)
+ root_module.begin_section('ns3_module_tap_bridge')
+ ns3_module_tap_bridge.register_methods(root_module)
try:
- import ns3_module_contrib__local
+ import ns3_module_tap_bridge__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_tap_bridge__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_tap_bridge')
+ root_module.begin_section('ns3_module_v4ping')
+ ns3_module_v4ping.register_methods(root_module)
+
+ try:
+ import ns3_module_v4ping__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_v4ping__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_v4ping')
+ root_module.begin_section('ns3_module_static_routing')
+ ns3_module_static_routing.register_methods(root_module)
+
+ try:
+ import ns3_module_static_routing__local
except ImportError:
pass
else:
- ns3_module_contrib__local.register_methods(root_module)
+ ns3_module_static_routing__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_static_routing')
+ root_module.begin_section('ns3_module_packet_sink')
+ ns3_module_packet_sink.register_methods(root_module)
+
+ try:
+ import ns3_module_packet_sink__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_packet_sink__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_packet_sink')
+ root_module.begin_section('ns3_module_stats')
+ ns3_module_stats.register_methods(root_module)
- root_module.end_section('ns3_module_contrib')
+ try:
+ import ns3_module_stats__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_stats__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_stats')
+ root_module.begin_section('ns3_module_onoff')
+ ns3_module_onoff.register_methods(root_module)
+
+ try:
+ import ns3_module_onoff__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_onoff__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_onoff')
root_module.begin_section('ns3_module_point_to_point')
ns3_module_point_to_point.register_methods(root_module)
@@ -616,17 +682,6 @@
ns3_module_internet_stack__local.register_methods(root_module)
root_module.end_section('ns3_module_internet_stack')
- root_module.begin_section('ns3_module_tap_bridge')
- ns3_module_tap_bridge.register_methods(root_module)
-
- try:
- import ns3_module_tap_bridge__local
- except ImportError:
- pass
- else:
- ns3_module_tap_bridge__local.register_methods(root_module)
-
- root_module.end_section('ns3_module_tap_bridge')
root_module.begin_section('ns3_module_csma')
ns3_module_csma.register_methods(root_module)
@@ -638,6 +693,28 @@
ns3_module_csma__local.register_methods(root_module)
root_module.end_section('ns3_module_csma')
+ root_module.begin_section('ns3_module_list_routing')
+ ns3_module_list_routing.register_methods(root_module)
+
+ try:
+ import ns3_module_list_routing__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_list_routing__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_list_routing')
+ root_module.begin_section('ns3_module_virtual_net_device')
+ ns3_module_virtual_net_device.register_methods(root_module)
+
+ try:
+ import ns3_module_virtual_net_device__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_virtual_net_device__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_virtual_net_device')
root_module.begin_section('ns3_module_wifi')
ns3_module_wifi.register_methods(root_module)
@@ -649,83 +726,6 @@
ns3_module_wifi__local.register_methods(root_module)
root_module.end_section('ns3_module_wifi')
- root_module.begin_section('ns3_module_static_routing')
- ns3_module_static_routing.register_methods(root_module)
-
- try:
- import ns3_module_static_routing__local
- except ImportError:
- pass
- else:
- ns3_module_static_routing__local.register_methods(root_module)
-
- root_module.end_section('ns3_module_static_routing')
- root_module.begin_section('ns3_module_v4ping')
- ns3_module_v4ping.register_methods(root_module)
-
- try:
- import ns3_module_v4ping__local
- except ImportError:
- pass
- else:
- ns3_module_v4ping__local.register_methods(root_module)
-
- root_module.end_section('ns3_module_v4ping')
- root_module.begin_section('ns3_module_virtual_net_device')
- ns3_module_virtual_net_device.register_methods(root_module)
-
- try:
- import ns3_module_virtual_net_device__local
- except ImportError:
- pass
- else:
- ns3_module_virtual_net_device__local.register_methods(root_module)
-
- root_module.end_section('ns3_module_virtual_net_device')
- root_module.begin_section('ns3_module_packet_sink')
- ns3_module_packet_sink.register_methods(root_module)
-
- try:
- import ns3_module_packet_sink__local
- except ImportError:
- pass
- else:
- ns3_module_packet_sink__local.register_methods(root_module)
-
- root_module.end_section('ns3_module_packet_sink')
- root_module.begin_section('ns3_module_global_routing')
- ns3_module_global_routing.register_methods(root_module)
-
- try:
- import ns3_module_global_routing__local
- except ImportError:
- pass
- else:
- ns3_module_global_routing__local.register_methods(root_module)
-
- root_module.end_section('ns3_module_global_routing')
- root_module.begin_section('ns3_module_stats')
- ns3_module_stats.register_methods(root_module)
-
- try:
- import ns3_module_stats__local
- except ImportError:
- pass
- else:
- ns3_module_stats__local.register_methods(root_module)
-
- root_module.end_section('ns3_module_stats')
- root_module.begin_section('ns3_module_list_routing')
- ns3_module_list_routing.register_methods(root_module)
-
- try:
- import ns3_module_list_routing__local
- except ImportError:
- pass
- else:
- ns3_module_list_routing__local.register_methods(root_module)
-
- root_module.end_section('ns3_module_list_routing')
root_module.begin_section('ns3_module_emu')
ns3_module_emu.register_methods(root_module)
@@ -748,17 +748,17 @@
ns3_module_bridge__local.register_methods(root_module)
root_module.end_section('ns3_module_bridge')
- root_module.begin_section('ns3_module_onoff')
- ns3_module_onoff.register_methods(root_module)
+ root_module.begin_section('ns3_module_global_routing')
+ ns3_module_global_routing.register_methods(root_module)
try:
- import ns3_module_onoff__local
+ import ns3_module_global_routing__local
except ImportError:
pass
else:
- ns3_module_onoff__local.register_methods(root_module)
+ ns3_module_global_routing__local.register_methods(root_module)
- root_module.end_section('ns3_module_onoff')
+ root_module.end_section('ns3_module_global_routing')
root_module.begin_section('ns3_module_udp_echo')
ns3_module_udp_echo.register_methods(root_module)
@@ -770,17 +770,6 @@
ns3_module_udp_echo__local.register_methods(root_module)
root_module.end_section('ns3_module_udp_echo')
- root_module.begin_section('ns3_module_ping6')
- ns3_module_ping6.register_methods(root_module)
-
- try:
- import ns3_module_ping6__local
- except ImportError:
- pass
- else:
- ns3_module_ping6__local.register_methods(root_module)
-
- root_module.end_section('ns3_module_ping6')
root_module.begin_section('ns3_module_nix_vector_routing')
ns3_module_nix_vector_routing.register_methods(root_module)
@@ -814,6 +803,28 @@
ns3_module_aodv__local.register_methods(root_module)
root_module.end_section('ns3_module_aodv')
+ root_module.begin_section('ns3_module_radvd')
+ ns3_module_radvd.register_methods(root_module)
+
+ try:
+ import ns3_module_radvd__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_radvd__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_radvd')
+ root_module.begin_section('ns3_module_ping6')
+ ns3_module_ping6.register_methods(root_module)
+
+ try:
+ import ns3_module_ping6__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_ping6__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_ping6')
root_module.begin_section('ns3_module_flow_monitor')
ns3_module_flow_monitor.register_methods(root_module)
@@ -825,17 +836,6 @@
ns3_module_flow_monitor__local.register_methods(root_module)
root_module.end_section('ns3_module_flow_monitor')
- root_module.begin_section('ns3_module_radvd')
- ns3_module_radvd.register_methods(root_module)
-
- try:
- import ns3_module_radvd__local
- except ImportError:
- pass
- else:
- ns3_module_radvd__local.register_methods(root_module)
-
- root_module.end_section('ns3_module_radvd')
root_module.begin_section('ns3_module_mesh')
ns3_module_mesh.register_methods(root_module)
@@ -1073,6 +1073,17 @@
ns3_module_common__local.register_functions(root_module)
root_module.end_section('ns3_module_common')
+ root_module.begin_section('ns3_module_contrib')
+ ns3_module_contrib.register_functions(root_module)
+
+ try:
+ import ns3_module_contrib__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_contrib__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_contrib')
root_module.begin_section('ns3_module_node')
ns3_module_node.register_functions(root_module)
@@ -1084,17 +1095,72 @@
ns3_module_node__local.register_functions(root_module)
root_module.end_section('ns3_module_node')
- root_module.begin_section('ns3_module_contrib')
- ns3_module_contrib.register_functions(root_module)
+ root_module.begin_section('ns3_module_tap_bridge')
+ ns3_module_tap_bridge.register_functions(root_module)
try:
- import ns3_module_contrib__local
+ import ns3_module_tap_bridge__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_tap_bridge__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_tap_bridge')
+ root_module.begin_section('ns3_module_v4ping')
+ ns3_module_v4ping.register_functions(root_module)
+
+ try:
+ import ns3_module_v4ping__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_v4ping__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_v4ping')
+ root_module.begin_section('ns3_module_static_routing')
+ ns3_module_static_routing.register_functions(root_module)
+
+ try:
+ import ns3_module_static_routing__local
except ImportError:
pass
else:
- ns3_module_contrib__local.register_functions(root_module)
+ ns3_module_static_routing__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_static_routing')
+ root_module.begin_section('ns3_module_packet_sink')
+ ns3_module_packet_sink.register_functions(root_module)
+
+ try:
+ import ns3_module_packet_sink__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_packet_sink__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_packet_sink')
+ root_module.begin_section('ns3_module_stats')
+ ns3_module_stats.register_functions(root_module)
- root_module.end_section('ns3_module_contrib')
+ try:
+ import ns3_module_stats__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_stats__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_stats')
+ root_module.begin_section('ns3_module_onoff')
+ ns3_module_onoff.register_functions(root_module)
+
+ try:
+ import ns3_module_onoff__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_onoff__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_onoff')
root_module.begin_section('ns3_module_point_to_point')
ns3_module_point_to_point.register_functions(root_module)
@@ -1117,17 +1183,6 @@
ns3_module_internet_stack__local.register_functions(root_module)
root_module.end_section('ns3_module_internet_stack')
- root_module.begin_section('ns3_module_tap_bridge')
- ns3_module_tap_bridge.register_functions(root_module)
-
- try:
- import ns3_module_tap_bridge__local
- except ImportError:
- pass
- else:
- ns3_module_tap_bridge__local.register_functions(root_module)
-
- root_module.end_section('ns3_module_tap_bridge')
root_module.begin_section('ns3_module_csma')
ns3_module_csma.register_functions(root_module)
@@ -1139,6 +1194,28 @@
ns3_module_csma__local.register_functions(root_module)
root_module.end_section('ns3_module_csma')
+ root_module.begin_section('ns3_module_list_routing')
+ ns3_module_list_routing.register_functions(root_module)
+
+ try:
+ import ns3_module_list_routing__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_list_routing__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_list_routing')
+ root_module.begin_section('ns3_module_virtual_net_device')
+ ns3_module_virtual_net_device.register_functions(root_module)
+
+ try:
+ import ns3_module_virtual_net_device__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_virtual_net_device__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_virtual_net_device')
root_module.begin_section('ns3_module_wifi')
ns3_module_wifi.register_functions(root_module)
@@ -1150,83 +1227,6 @@
ns3_module_wifi__local.register_functions(root_module)
root_module.end_section('ns3_module_wifi')
- root_module.begin_section('ns3_module_static_routing')
- ns3_module_static_routing.register_functions(root_module)
-
- try:
- import ns3_module_static_routing__local
- except ImportError:
- pass
- else:
- ns3_module_static_routing__local.register_functions(root_module)
-
- root_module.end_section('ns3_module_static_routing')
- root_module.begin_section('ns3_module_v4ping')
- ns3_module_v4ping.register_functions(root_module)
-
- try:
- import ns3_module_v4ping__local
- except ImportError:
- pass
- else:
- ns3_module_v4ping__local.register_functions(root_module)
-
- root_module.end_section('ns3_module_v4ping')
- root_module.begin_section('ns3_module_virtual_net_device')
- ns3_module_virtual_net_device.register_functions(root_module)
-
- try:
- import ns3_module_virtual_net_device__local
- except ImportError:
- pass
- else:
- ns3_module_virtual_net_device__local.register_functions(root_module)
-
- root_module.end_section('ns3_module_virtual_net_device')
- root_module.begin_section('ns3_module_packet_sink')
- ns3_module_packet_sink.register_functions(root_module)
-
- try:
- import ns3_module_packet_sink__local
- except ImportError:
- pass
- else:
- ns3_module_packet_sink__local.register_functions(root_module)
-
- root_module.end_section('ns3_module_packet_sink')
- root_module.begin_section('ns3_module_global_routing')
- ns3_module_global_routing.register_functions(root_module)
-
- try:
- import ns3_module_global_routing__local
- except ImportError:
- pass
- else:
- ns3_module_global_routing__local.register_functions(root_module)
-
- root_module.end_section('ns3_module_global_routing')
- root_module.begin_section('ns3_module_stats')
- ns3_module_stats.register_functions(root_module)
-
- try:
- import ns3_module_stats__local
- except ImportError:
- pass
- else:
- ns3_module_stats__local.register_functions(root_module)
-
- root_module.end_section('ns3_module_stats')
- root_module.begin_section('ns3_module_list_routing')
- ns3_module_list_routing.register_functions(root_module)
-
- try:
- import ns3_module_list_routing__local
- except ImportError:
- pass
- else:
- ns3_module_list_routing__local.register_functions(root_module)
-
- root_module.end_section('ns3_module_list_routing')
root_module.begin_section('ns3_module_emu')
ns3_module_emu.register_functions(root_module)
@@ -1249,17 +1249,17 @@
ns3_module_bridge__local.register_functions(root_module)
root_module.end_section('ns3_module_bridge')
- root_module.begin_section('ns3_module_onoff')
- ns3_module_onoff.register_functions(root_module)
+ root_module.begin_section('ns3_module_global_routing')
+ ns3_module_global_routing.register_functions(root_module)
try:
- import ns3_module_onoff__local
+ import ns3_module_global_routing__local
except ImportError:
pass
else:
- ns3_module_onoff__local.register_functions(root_module)
+ ns3_module_global_routing__local.register_functions(root_module)
- root_module.end_section('ns3_module_onoff')
+ root_module.end_section('ns3_module_global_routing')
root_module.begin_section('ns3_module_udp_echo')
ns3_module_udp_echo.register_functions(root_module)
@@ -1271,17 +1271,6 @@
ns3_module_udp_echo__local.register_functions(root_module)
root_module.end_section('ns3_module_udp_echo')
- root_module.begin_section('ns3_module_ping6')
- ns3_module_ping6.register_functions(root_module)
-
- try:
- import ns3_module_ping6__local
- except ImportError:
- pass
- else:
- ns3_module_ping6__local.register_functions(root_module)
-
- root_module.end_section('ns3_module_ping6')
root_module.begin_section('ns3_module_nix_vector_routing')
ns3_module_nix_vector_routing.register_functions(root_module)
@@ -1315,6 +1304,28 @@
ns3_module_aodv__local.register_functions(root_module)
root_module.end_section('ns3_module_aodv')
+ root_module.begin_section('ns3_module_radvd')
+ ns3_module_radvd.register_functions(root_module)
+
+ try:
+ import ns3_module_radvd__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_radvd__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_radvd')
+ root_module.begin_section('ns3_module_ping6')
+ ns3_module_ping6.register_functions(root_module)
+
+ try:
+ import ns3_module_ping6__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_ping6__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_ping6')
root_module.begin_section('ns3_module_flow_monitor')
ns3_module_flow_monitor.register_functions(root_module)
@@ -1326,17 +1337,6 @@
ns3_module_flow_monitor__local.register_functions(root_module)
root_module.end_section('ns3_module_flow_monitor')
- root_module.begin_section('ns3_module_radvd')
- ns3_module_radvd.register_functions(root_module)
-
- try:
- import ns3_module_radvd__local
- except ImportError:
- pass
- else:
- ns3_module_radvd__local.register_functions(root_module)
-
- root_module.end_section('ns3_module_radvd')
root_module.begin_section('ns3_module_mesh')
ns3_module_mesh.register_functions(root_module)
--- a/bindings/python/apidefs/gcc-LP64/ns3_module_dot11s.py Fri Nov 20 13:06:15 2009 +0300
+++ b/bindings/python/apidefs/gcc-LP64/ns3_module_dot11s.py Fri Nov 20 13:06:46 2009 +0300
@@ -77,14 +77,14 @@
module.add_enum('dot11sSynchronizationProtocolIdentifier', ['SYNC_NEIGHBOUR_OFFSET', 'SYNC_NULL'])
## ie-dot11s-configuration.h: ns3::dot11s::dot11sCongestionControlMode [enumeration]
module.add_enum('dot11sCongestionControlMode', ['CONGESTION_SIGNALING', 'CONGESTION_NULL'])
- ## ie-dot11s-configuration.h: ns3::dot11s::dot11sAuthenticationProtocol [enumeration]
- module.add_enum('dot11sAuthenticationProtocol', ['AUTH_NULL', 'AUTH_SAE'])
+ ## ie-dot11s-configuration.h: ns3::dot11s::dot11sPathSelectionMetric [enumeration]
+ module.add_enum('dot11sPathSelectionMetric', ['METRIC_AIRTIME'])
## ie-dot11s-peer-management.h: ns3::dot11s::PmpReasonCode [enumeration]
module.add_enum('PmpReasonCode', ['REASON11S_PEERING_CANCELLED', 'REASON11S_MESH_MAX_PEERS', 'REASON11S_MESH_CAPABILITY_POLICY_VIOLATION', 'REASON11S_MESH_CLOSE_RCVD', 'REASON11S_MESH_MAX_RETRIES', 'REASON11S_MESH_CONFIRM_TIMEOUT', 'REASON11S_MESH_INVALID_GTK', 'REASON11S_MESH_INCONSISTENT_PARAMETERS', 'REASON11S_MESH_INVALID_SECURITY_CAPABILITY', 'REASON11S_RESERVED'])
- ## ie-dot11s-configuration.h: ns3::dot11s::dot11sPathSelectionMetric [enumeration]
- module.add_enum('dot11sPathSelectionMetric', ['METRIC_AIRTIME'])
## ie-dot11s-configuration.h: ns3::dot11s::dot11sPathSelectionProtocol [enumeration]
module.add_enum('dot11sPathSelectionProtocol', ['PROTOCOL_HWMP'])
+ ## ie-dot11s-configuration.h: ns3::dot11s::dot11sAuthenticationProtocol [enumeration]
+ module.add_enum('dot11sAuthenticationProtocol', ['AUTH_NULL', 'AUTH_SAE'])
## ie-dot11s-configuration.h: ns3::dot11s::Dot11sMeshCapability [class]
module.add_class('Dot11sMeshCapability')
## hwmp-protocol.h: ns3::dot11s::HwmpProtocol [class]
--- a/bindings/python/apidefs/gcc-LP64/ns3_module_internet_stack.py Fri Nov 20 13:06:15 2009 +0300
+++ b/bindings/python/apidefs/gcc-LP64/ns3_module_internet_stack.py Fri Nov 20 13:06:46 2009 +0300
@@ -2013,6 +2013,11 @@
'int32_t',
[param('ns3::Ptr< ns3::NetDevice const >', 'device')],
is_const=True, is_virtual=True)
+ ## ipv4-l3-protocol.h: bool ns3::Ipv4L3Protocol::IsDestinationAddress(ns3::Ipv4Address address, uint32_t iif) const [member function]
+ cls.add_method('IsDestinationAddress',
+ 'bool',
+ [param('ns3::Ipv4Address', 'address'), param('uint32_t', 'iif')],
+ is_const=True, is_virtual=True)
## ipv4-l3-protocol.h: bool ns3::Ipv4L3Protocol::AddAddress(uint32_t i, ns3::Ipv4InterfaceAddress address) [member function]
cls.add_method('AddAddress',
'bool',
@@ -2098,6 +2103,16 @@
'bool',
[],
is_const=True, visibility='private', is_virtual=True)
+ ## ipv4-l3-protocol.h: void ns3::Ipv4L3Protocol::SetWeakEsModel(bool model) [member function]
+ cls.add_method('SetWeakEsModel',
+ 'void',
+ [param('bool', 'model')],
+ visibility='private', is_virtual=True)
+ ## ipv4-l3-protocol.h: bool ns3::Ipv4L3Protocol::GetWeakEsModel() const [member function]
+ cls.add_method('GetWeakEsModel',
+ 'bool',
+ [],
+ is_const=True, visibility='private', is_virtual=True)
return
def register_Ns3Ipv4L4Protocol_methods(root_module, cls):
--- a/bindings/python/apidefs/gcc-LP64/ns3_module_node.py Fri Nov 20 13:06:15 2009 +0300
+++ b/bindings/python/apidefs/gcc-LP64/ns3_module_node.py Fri Nov 20 13:06:46 2009 +0300
@@ -2754,6 +2754,11 @@
'ns3::TypeId',
[],
is_static=True)
+ ## ipv4.h: bool ns3::Ipv4::IsDestinationAddress(ns3::Ipv4Address address, uint32_t iif) const [member function]
+ cls.add_method('IsDestinationAddress',
+ 'bool',
+ [param('ns3::Ipv4Address', 'address'), param('uint32_t', 'iif')],
+ is_pure_virtual=True, is_const=True, is_virtual=True)
## ipv4.h: bool ns3::Ipv4::IsForwarding(uint32_t interface) const [member function]
cls.add_method('IsForwarding',
'bool',
@@ -2801,11 +2806,21 @@
'bool',
[],
is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+ ## ipv4.h: bool ns3::Ipv4::GetWeakEsModel() const [member function]
+ cls.add_method('GetWeakEsModel',
+ 'bool',
+ [],
+ is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
## ipv4.h: void ns3::Ipv4::SetIpForward(bool forward) [member function]
cls.add_method('SetIpForward',
'void',
[param('bool', 'forward')],
is_pure_virtual=True, visibility='private', is_virtual=True)
+ ## ipv4.h: void ns3::Ipv4::SetWeakEsModel(bool model) [member function]
+ cls.add_method('SetWeakEsModel',
+ 'void',
+ [param('bool', 'model')],
+ is_pure_virtual=True, visibility='private', is_virtual=True)
return
def register_Ns3Ipv4AddressChecker_methods(root_module, cls):
--- a/bindings/python/apidefs/gcc-LP64/ns3modulegen_generated.py Fri Nov 20 13:06:15 2009 +0300
+++ b/bindings/python/apidefs/gcc-LP64/ns3modulegen_generated.py Fri Nov 20 13:06:46 2009 +0300
@@ -17,30 +17,30 @@
import ns3_module_test
import ns3_module_mobility
import ns3_module_common
+import ns3_module_contrib
import ns3_module_node
-import ns3_module_contrib
+import ns3_module_tap_bridge
+import ns3_module_v4ping
+import ns3_module_static_routing
+import ns3_module_packet_sink
+import ns3_module_stats
+import ns3_module_onoff
import ns3_module_point_to_point
import ns3_module_internet_stack
-import ns3_module_tap_bridge
import ns3_module_csma
+import ns3_module_list_routing
+import ns3_module_virtual_net_device
import ns3_module_wifi
-import ns3_module_static_routing
-import ns3_module_v4ping
-import ns3_module_virtual_net_device
-import ns3_module_packet_sink
-import ns3_module_global_routing
-import ns3_module_stats
-import ns3_module_list_routing
import ns3_module_emu
import ns3_module_bridge
-import ns3_module_onoff
+import ns3_module_global_routing
import ns3_module_udp_echo
-import ns3_module_ping6
import ns3_module_nix_vector_routing
import ns3_module_olsr
import ns3_module_aodv
+import ns3_module_radvd
+import ns3_module_ping6
import ns3_module_flow_monitor
-import ns3_module_radvd
import ns3_module_mesh
import ns3_module_helper
import ns3_module_dot11s
@@ -108,6 +108,17 @@
ns3_module_common__local.register_types(module)
root_module.end_section('ns3_module_common')
+ root_module.begin_section('ns3_module_contrib')
+ ns3_module_contrib.register_types(module)
+
+ try:
+ import ns3_module_contrib__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_contrib__local.register_types(module)
+
+ root_module.end_section('ns3_module_contrib')
root_module.begin_section('ns3_module_node')
ns3_module_node.register_types(module)
@@ -119,17 +130,72 @@
ns3_module_node__local.register_types(module)
root_module.end_section('ns3_module_node')
- root_module.begin_section('ns3_module_contrib')
- ns3_module_contrib.register_types(module)
+ root_module.begin_section('ns3_module_tap_bridge')
+ ns3_module_tap_bridge.register_types(module)
try:
- import ns3_module_contrib__local
+ import ns3_module_tap_bridge__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_tap_bridge__local.register_types(module)
+
+ root_module.end_section('ns3_module_tap_bridge')
+ root_module.begin_section('ns3_module_v4ping')
+ ns3_module_v4ping.register_types(module)
+
+ try:
+ import ns3_module_v4ping__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_v4ping__local.register_types(module)
+
+ root_module.end_section('ns3_module_v4ping')
+ root_module.begin_section('ns3_module_static_routing')
+ ns3_module_static_routing.register_types(module)
+
+ try:
+ import ns3_module_static_routing__local
except ImportError:
pass
else:
- ns3_module_contrib__local.register_types(module)
+ ns3_module_static_routing__local.register_types(module)
+
+ root_module.end_section('ns3_module_static_routing')
+ root_module.begin_section('ns3_module_packet_sink')
+ ns3_module_packet_sink.register_types(module)
+
+ try:
+ import ns3_module_packet_sink__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_packet_sink__local.register_types(module)
+
+ root_module.end_section('ns3_module_packet_sink')
+ root_module.begin_section('ns3_module_stats')
+ ns3_module_stats.register_types(module)
- root_module.end_section('ns3_module_contrib')
+ try:
+ import ns3_module_stats__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_stats__local.register_types(module)
+
+ root_module.end_section('ns3_module_stats')
+ root_module.begin_section('ns3_module_onoff')
+ ns3_module_onoff.register_types(module)
+
+ try:
+ import ns3_module_onoff__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_onoff__local.register_types(module)
+
+ root_module.end_section('ns3_module_onoff')
root_module.begin_section('ns3_module_point_to_point')
ns3_module_point_to_point.register_types(module)
@@ -152,17 +218,6 @@
ns3_module_internet_stack__local.register_types(module)
root_module.end_section('ns3_module_internet_stack')
- root_module.begin_section('ns3_module_tap_bridge')
- ns3_module_tap_bridge.register_types(module)
-
- try:
- import ns3_module_tap_bridge__local
- except ImportError:
- pass
- else:
- ns3_module_tap_bridge__local.register_types(module)
-
- root_module.end_section('ns3_module_tap_bridge')
root_module.begin_section('ns3_module_csma')
ns3_module_csma.register_types(module)
@@ -174,6 +229,28 @@
ns3_module_csma__local.register_types(module)
root_module.end_section('ns3_module_csma')
+ root_module.begin_section('ns3_module_list_routing')
+ ns3_module_list_routing.register_types(module)
+
+ try:
+ import ns3_module_list_routing__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_list_routing__local.register_types(module)
+
+ root_module.end_section('ns3_module_list_routing')
+ root_module.begin_section('ns3_module_virtual_net_device')
+ ns3_module_virtual_net_device.register_types(module)
+
+ try:
+ import ns3_module_virtual_net_device__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_virtual_net_device__local.register_types(module)
+
+ root_module.end_section('ns3_module_virtual_net_device')
root_module.begin_section('ns3_module_wifi')
ns3_module_wifi.register_types(module)
@@ -185,83 +262,6 @@
ns3_module_wifi__local.register_types(module)
root_module.end_section('ns3_module_wifi')
- root_module.begin_section('ns3_module_static_routing')
- ns3_module_static_routing.register_types(module)
-
- try:
- import ns3_module_static_routing__local
- except ImportError:
- pass
- else:
- ns3_module_static_routing__local.register_types(module)
-
- root_module.end_section('ns3_module_static_routing')
- root_module.begin_section('ns3_module_v4ping')
- ns3_module_v4ping.register_types(module)
-
- try:
- import ns3_module_v4ping__local
- except ImportError:
- pass
- else:
- ns3_module_v4ping__local.register_types(module)
-
- root_module.end_section('ns3_module_v4ping')
- root_module.begin_section('ns3_module_virtual_net_device')
- ns3_module_virtual_net_device.register_types(module)
-
- try:
- import ns3_module_virtual_net_device__local
- except ImportError:
- pass
- else:
- ns3_module_virtual_net_device__local.register_types(module)
-
- root_module.end_section('ns3_module_virtual_net_device')
- root_module.begin_section('ns3_module_packet_sink')
- ns3_module_packet_sink.register_types(module)
-
- try:
- import ns3_module_packet_sink__local
- except ImportError:
- pass
- else:
- ns3_module_packet_sink__local.register_types(module)
-
- root_module.end_section('ns3_module_packet_sink')
- root_module.begin_section('ns3_module_global_routing')
- ns3_module_global_routing.register_types(module)
-
- try:
- import ns3_module_global_routing__local
- except ImportError:
- pass
- else:
- ns3_module_global_routing__local.register_types(module)
-
- root_module.end_section('ns3_module_global_routing')
- root_module.begin_section('ns3_module_stats')
- ns3_module_stats.register_types(module)
-
- try:
- import ns3_module_stats__local
- except ImportError:
- pass
- else:
- ns3_module_stats__local.register_types(module)
-
- root_module.end_section('ns3_module_stats')
- root_module.begin_section('ns3_module_list_routing')
- ns3_module_list_routing.register_types(module)
-
- try:
- import ns3_module_list_routing__local
- except ImportError:
- pass
- else:
- ns3_module_list_routing__local.register_types(module)
-
- root_module.end_section('ns3_module_list_routing')
root_module.begin_section('ns3_module_emu')
ns3_module_emu.register_types(module)
@@ -284,17 +284,17 @@
ns3_module_bridge__local.register_types(module)
root_module.end_section('ns3_module_bridge')
- root_module.begin_section('ns3_module_onoff')
- ns3_module_onoff.register_types(module)
+ root_module.begin_section('ns3_module_global_routing')
+ ns3_module_global_routing.register_types(module)
try:
- import ns3_module_onoff__local
+ import ns3_module_global_routing__local
except ImportError:
pass
else:
- ns3_module_onoff__local.register_types(module)
+ ns3_module_global_routing__local.register_types(module)
- root_module.end_section('ns3_module_onoff')
+ root_module.end_section('ns3_module_global_routing')
root_module.begin_section('ns3_module_udp_echo')
ns3_module_udp_echo.register_types(module)
@@ -306,17 +306,6 @@
ns3_module_udp_echo__local.register_types(module)
root_module.end_section('ns3_module_udp_echo')
- root_module.begin_section('ns3_module_ping6')
- ns3_module_ping6.register_types(module)
-
- try:
- import ns3_module_ping6__local
- except ImportError:
- pass
- else:
- ns3_module_ping6__local.register_types(module)
-
- root_module.end_section('ns3_module_ping6')
root_module.begin_section('ns3_module_nix_vector_routing')
ns3_module_nix_vector_routing.register_types(module)
@@ -350,6 +339,28 @@
ns3_module_aodv__local.register_types(module)
root_module.end_section('ns3_module_aodv')
+ root_module.begin_section('ns3_module_radvd')
+ ns3_module_radvd.register_types(module)
+
+ try:
+ import ns3_module_radvd__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_radvd__local.register_types(module)
+
+ root_module.end_section('ns3_module_radvd')
+ root_module.begin_section('ns3_module_ping6')
+ ns3_module_ping6.register_types(module)
+
+ try:
+ import ns3_module_ping6__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_ping6__local.register_types(module)
+
+ root_module.end_section('ns3_module_ping6')
root_module.begin_section('ns3_module_flow_monitor')
ns3_module_flow_monitor.register_types(module)
@@ -361,17 +372,6 @@
ns3_module_flow_monitor__local.register_types(module)
root_module.end_section('ns3_module_flow_monitor')
- root_module.begin_section('ns3_module_radvd')
- ns3_module_radvd.register_types(module)
-
- try:
- import ns3_module_radvd__local
- except ImportError:
- pass
- else:
- ns3_module_radvd__local.register_types(module)
-
- root_module.end_section('ns3_module_radvd')
root_module.begin_section('ns3_module_mesh')
ns3_module_mesh.register_types(module)
@@ -572,6 +572,17 @@
ns3_module_common__local.register_methods(root_module)
root_module.end_section('ns3_module_common')
+ root_module.begin_section('ns3_module_contrib')
+ ns3_module_contrib.register_methods(root_module)
+
+ try:
+ import ns3_module_contrib__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_contrib__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_contrib')
root_module.begin_section('ns3_module_node')
ns3_module_node.register_methods(root_module)
@@ -583,17 +594,72 @@
ns3_module_node__local.register_methods(root_module)
root_module.end_section('ns3_module_node')
- root_module.begin_section('ns3_module_contrib')
- ns3_module_contrib.register_methods(root_module)
+ root_module.begin_section('ns3_module_tap_bridge')
+ ns3_module_tap_bridge.register_methods(root_module)
try:
- import ns3_module_contrib__local
+ import ns3_module_tap_bridge__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_tap_bridge__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_tap_bridge')
+ root_module.begin_section('ns3_module_v4ping')
+ ns3_module_v4ping.register_methods(root_module)
+
+ try:
+ import ns3_module_v4ping__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_v4ping__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_v4ping')
+ root_module.begin_section('ns3_module_static_routing')
+ ns3_module_static_routing.register_methods(root_module)
+
+ try:
+ import ns3_module_static_routing__local
except ImportError:
pass
else:
- ns3_module_contrib__local.register_methods(root_module)
+ ns3_module_static_routing__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_static_routing')
+ root_module.begin_section('ns3_module_packet_sink')
+ ns3_module_packet_sink.register_methods(root_module)
+
+ try:
+ import ns3_module_packet_sink__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_packet_sink__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_packet_sink')
+ root_module.begin_section('ns3_module_stats')
+ ns3_module_stats.register_methods(root_module)
- root_module.end_section('ns3_module_contrib')
+ try:
+ import ns3_module_stats__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_stats__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_stats')
+ root_module.begin_section('ns3_module_onoff')
+ ns3_module_onoff.register_methods(root_module)
+
+ try:
+ import ns3_module_onoff__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_onoff__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_onoff')
root_module.begin_section('ns3_module_point_to_point')
ns3_module_point_to_point.register_methods(root_module)
@@ -616,17 +682,6 @@
ns3_module_internet_stack__local.register_methods(root_module)
root_module.end_section('ns3_module_internet_stack')
- root_module.begin_section('ns3_module_tap_bridge')
- ns3_module_tap_bridge.register_methods(root_module)
-
- try:
- import ns3_module_tap_bridge__local
- except ImportError:
- pass
- else:
- ns3_module_tap_bridge__local.register_methods(root_module)
-
- root_module.end_section('ns3_module_tap_bridge')
root_module.begin_section('ns3_module_csma')
ns3_module_csma.register_methods(root_module)
@@ -638,6 +693,28 @@
ns3_module_csma__local.register_methods(root_module)
root_module.end_section('ns3_module_csma')
+ root_module.begin_section('ns3_module_list_routing')
+ ns3_module_list_routing.register_methods(root_module)
+
+ try:
+ import ns3_module_list_routing__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_list_routing__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_list_routing')
+ root_module.begin_section('ns3_module_virtual_net_device')
+ ns3_module_virtual_net_device.register_methods(root_module)
+
+ try:
+ import ns3_module_virtual_net_device__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_virtual_net_device__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_virtual_net_device')
root_module.begin_section('ns3_module_wifi')
ns3_module_wifi.register_methods(root_module)
@@ -649,83 +726,6 @@
ns3_module_wifi__local.register_methods(root_module)
root_module.end_section('ns3_module_wifi')
- root_module.begin_section('ns3_module_static_routing')
- ns3_module_static_routing.register_methods(root_module)
-
- try:
- import ns3_module_static_routing__local
- except ImportError:
- pass
- else:
- ns3_module_static_routing__local.register_methods(root_module)
-
- root_module.end_section('ns3_module_static_routing')
- root_module.begin_section('ns3_module_v4ping')
- ns3_module_v4ping.register_methods(root_module)
-
- try:
- import ns3_module_v4ping__local
- except ImportError:
- pass
- else:
- ns3_module_v4ping__local.register_methods(root_module)
-
- root_module.end_section('ns3_module_v4ping')
- root_module.begin_section('ns3_module_virtual_net_device')
- ns3_module_virtual_net_device.register_methods(root_module)
-
- try:
- import ns3_module_virtual_net_device__local
- except ImportError:
- pass
- else:
- ns3_module_virtual_net_device__local.register_methods(root_module)
-
- root_module.end_section('ns3_module_virtual_net_device')
- root_module.begin_section('ns3_module_packet_sink')
- ns3_module_packet_sink.register_methods(root_module)
-
- try:
- import ns3_module_packet_sink__local
- except ImportError:
- pass
- else:
- ns3_module_packet_sink__local.register_methods(root_module)
-
- root_module.end_section('ns3_module_packet_sink')
- root_module.begin_section('ns3_module_global_routing')
- ns3_module_global_routing.register_methods(root_module)
-
- try:
- import ns3_module_global_routing__local
- except ImportError:
- pass
- else:
- ns3_module_global_routing__local.register_methods(root_module)
-
- root_module.end_section('ns3_module_global_routing')
- root_module.begin_section('ns3_module_stats')
- ns3_module_stats.register_methods(root_module)
-
- try:
- import ns3_module_stats__local
- except ImportError:
- pass
- else:
- ns3_module_stats__local.register_methods(root_module)
-
- root_module.end_section('ns3_module_stats')
- root_module.begin_section('ns3_module_list_routing')
- ns3_module_list_routing.register_methods(root_module)
-
- try:
- import ns3_module_list_routing__local
- except ImportError:
- pass
- else:
- ns3_module_list_routing__local.register_methods(root_module)
-
- root_module.end_section('ns3_module_list_routing')
root_module.begin_section('ns3_module_emu')
ns3_module_emu.register_methods(root_module)
@@ -748,17 +748,17 @@
ns3_module_bridge__local.register_methods(root_module)
root_module.end_section('ns3_module_bridge')
- root_module.begin_section('ns3_module_onoff')
- ns3_module_onoff.register_methods(root_module)
+ root_module.begin_section('ns3_module_global_routing')
+ ns3_module_global_routing.register_methods(root_module)
try:
- import ns3_module_onoff__local
+ import ns3_module_global_routing__local
except ImportError:
pass
else:
- ns3_module_onoff__local.register_methods(root_module)
+ ns3_module_global_routing__local.register_methods(root_module)
- root_module.end_section('ns3_module_onoff')
+ root_module.end_section('ns3_module_global_routing')
root_module.begin_section('ns3_module_udp_echo')
ns3_module_udp_echo.register_methods(root_module)
@@ -770,17 +770,6 @@
ns3_module_udp_echo__local.register_methods(root_module)
root_module.end_section('ns3_module_udp_echo')
- root_module.begin_section('ns3_module_ping6')
- ns3_module_ping6.register_methods(root_module)
-
- try:
- import ns3_module_ping6__local
- except ImportError:
- pass
- else:
- ns3_module_ping6__local.register_methods(root_module)
-
- root_module.end_section('ns3_module_ping6')
root_module.begin_section('ns3_module_nix_vector_routing')
ns3_module_nix_vector_routing.register_methods(root_module)
@@ -814,6 +803,28 @@
ns3_module_aodv__local.register_methods(root_module)
root_module.end_section('ns3_module_aodv')
+ root_module.begin_section('ns3_module_radvd')
+ ns3_module_radvd.register_methods(root_module)
+
+ try:
+ import ns3_module_radvd__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_radvd__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_radvd')
+ root_module.begin_section('ns3_module_ping6')
+ ns3_module_ping6.register_methods(root_module)
+
+ try:
+ import ns3_module_ping6__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_ping6__local.register_methods(root_module)
+
+ root_module.end_section('ns3_module_ping6')
root_module.begin_section('ns3_module_flow_monitor')
ns3_module_flow_monitor.register_methods(root_module)
@@ -825,17 +836,6 @@
ns3_module_flow_monitor__local.register_methods(root_module)
root_module.end_section('ns3_module_flow_monitor')
- root_module.begin_section('ns3_module_radvd')
- ns3_module_radvd.register_methods(root_module)
-
- try:
- import ns3_module_radvd__local
- except ImportError:
- pass
- else:
- ns3_module_radvd__local.register_methods(root_module)
-
- root_module.end_section('ns3_module_radvd')
root_module.begin_section('ns3_module_mesh')
ns3_module_mesh.register_methods(root_module)
@@ -1073,6 +1073,17 @@
ns3_module_common__local.register_functions(root_module)
root_module.end_section('ns3_module_common')
+ root_module.begin_section('ns3_module_contrib')
+ ns3_module_contrib.register_functions(root_module)
+
+ try:
+ import ns3_module_contrib__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_contrib__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_contrib')
root_module.begin_section('ns3_module_node')
ns3_module_node.register_functions(root_module)
@@ -1084,17 +1095,72 @@
ns3_module_node__local.register_functions(root_module)
root_module.end_section('ns3_module_node')
- root_module.begin_section('ns3_module_contrib')
- ns3_module_contrib.register_functions(root_module)
+ root_module.begin_section('ns3_module_tap_bridge')
+ ns3_module_tap_bridge.register_functions(root_module)
try:
- import ns3_module_contrib__local
+ import ns3_module_tap_bridge__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_tap_bridge__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_tap_bridge')
+ root_module.begin_section('ns3_module_v4ping')
+ ns3_module_v4ping.register_functions(root_module)
+
+ try:
+ import ns3_module_v4ping__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_v4ping__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_v4ping')
+ root_module.begin_section('ns3_module_static_routing')
+ ns3_module_static_routing.register_functions(root_module)
+
+ try:
+ import ns3_module_static_routing__local
except ImportError:
pass
else:
- ns3_module_contrib__local.register_functions(root_module)
+ ns3_module_static_routing__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_static_routing')
+ root_module.begin_section('ns3_module_packet_sink')
+ ns3_module_packet_sink.register_functions(root_module)
+
+ try:
+ import ns3_module_packet_sink__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_packet_sink__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_packet_sink')
+ root_module.begin_section('ns3_module_stats')
+ ns3_module_stats.register_functions(root_module)
- root_module.end_section('ns3_module_contrib')
+ try:
+ import ns3_module_stats__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_stats__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_stats')
+ root_module.begin_section('ns3_module_onoff')
+ ns3_module_onoff.register_functions(root_module)
+
+ try:
+ import ns3_module_onoff__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_onoff__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_onoff')
root_module.begin_section('ns3_module_point_to_point')
ns3_module_point_to_point.register_functions(root_module)
@@ -1117,17 +1183,6 @@
ns3_module_internet_stack__local.register_functions(root_module)
root_module.end_section('ns3_module_internet_stack')
- root_module.begin_section('ns3_module_tap_bridge')
- ns3_module_tap_bridge.register_functions(root_module)
-
- try:
- import ns3_module_tap_bridge__local
- except ImportError:
- pass
- else:
- ns3_module_tap_bridge__local.register_functions(root_module)
-
- root_module.end_section('ns3_module_tap_bridge')
root_module.begin_section('ns3_module_csma')
ns3_module_csma.register_functions(root_module)
@@ -1139,6 +1194,28 @@
ns3_module_csma__local.register_functions(root_module)
root_module.end_section('ns3_module_csma')
+ root_module.begin_section('ns3_module_list_routing')
+ ns3_module_list_routing.register_functions(root_module)
+
+ try:
+ import ns3_module_list_routing__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_list_routing__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_list_routing')
+ root_module.begin_section('ns3_module_virtual_net_device')
+ ns3_module_virtual_net_device.register_functions(root_module)
+
+ try:
+ import ns3_module_virtual_net_device__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_virtual_net_device__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_virtual_net_device')
root_module.begin_section('ns3_module_wifi')
ns3_module_wifi.register_functions(root_module)
@@ -1150,83 +1227,6 @@
ns3_module_wifi__local.register_functions(root_module)
root_module.end_section('ns3_module_wifi')
- root_module.begin_section('ns3_module_static_routing')
- ns3_module_static_routing.register_functions(root_module)
-
- try:
- import ns3_module_static_routing__local
- except ImportError:
- pass
- else:
- ns3_module_static_routing__local.register_functions(root_module)
-
- root_module.end_section('ns3_module_static_routing')
- root_module.begin_section('ns3_module_v4ping')
- ns3_module_v4ping.register_functions(root_module)
-
- try:
- import ns3_module_v4ping__local
- except ImportError:
- pass
- else:
- ns3_module_v4ping__local.register_functions(root_module)
-
- root_module.end_section('ns3_module_v4ping')
- root_module.begin_section('ns3_module_virtual_net_device')
- ns3_module_virtual_net_device.register_functions(root_module)
-
- try:
- import ns3_module_virtual_net_device__local
- except ImportError:
- pass
- else:
- ns3_module_virtual_net_device__local.register_functions(root_module)
-
- root_module.end_section('ns3_module_virtual_net_device')
- root_module.begin_section('ns3_module_packet_sink')
- ns3_module_packet_sink.register_functions(root_module)
-
- try:
- import ns3_module_packet_sink__local
- except ImportError:
- pass
- else:
- ns3_module_packet_sink__local.register_functions(root_module)
-
- root_module.end_section('ns3_module_packet_sink')
- root_module.begin_section('ns3_module_global_routing')
- ns3_module_global_routing.register_functions(root_module)
-
- try:
- import ns3_module_global_routing__local
- except ImportError:
- pass
- else:
- ns3_module_global_routing__local.register_functions(root_module)
-
- root_module.end_section('ns3_module_global_routing')
- root_module.begin_section('ns3_module_stats')
- ns3_module_stats.register_functions(root_module)
-
- try:
- import ns3_module_stats__local
- except ImportError:
- pass
- else:
- ns3_module_stats__local.register_functions(root_module)
-
- root_module.end_section('ns3_module_stats')
- root_module.begin_section('ns3_module_list_routing')
- ns3_module_list_routing.register_functions(root_module)
-
- try:
- import ns3_module_list_routing__local
- except ImportError:
- pass
- else:
- ns3_module_list_routing__local.register_functions(root_module)
-
- root_module.end_section('ns3_module_list_routing')
root_module.begin_section('ns3_module_emu')
ns3_module_emu.register_functions(root_module)
@@ -1249,17 +1249,17 @@
ns3_module_bridge__local.register_functions(root_module)
root_module.end_section('ns3_module_bridge')
- root_module.begin_section('ns3_module_onoff')
- ns3_module_onoff.register_functions(root_module)
+ root_module.begin_section('ns3_module_global_routing')
+ ns3_module_global_routing.register_functions(root_module)
try:
- import ns3_module_onoff__local
+ import ns3_module_global_routing__local
except ImportError:
pass
else:
- ns3_module_onoff__local.register_functions(root_module)
+ ns3_module_global_routing__local.register_functions(root_module)
- root_module.end_section('ns3_module_onoff')
+ root_module.end_section('ns3_module_global_routing')
root_module.begin_section('ns3_module_udp_echo')
ns3_module_udp_echo.register_functions(root_module)
@@ -1271,17 +1271,6 @@
ns3_module_udp_echo__local.register_functions(root_module)
root_module.end_section('ns3_module_udp_echo')
- root_module.begin_section('ns3_module_ping6')
- ns3_module_ping6.register_functions(root_module)
-
- try:
- import ns3_module_ping6__local
- except ImportError:
- pass
- else:
- ns3_module_ping6__local.register_functions(root_module)
-
- root_module.end_section('ns3_module_ping6')
root_module.begin_section('ns3_module_nix_vector_routing')
ns3_module_nix_vector_routing.register_functions(root_module)
@@ -1315,6 +1304,28 @@
ns3_module_aodv__local.register_functions(root_module)
root_module.end_section('ns3_module_aodv')
+ root_module.begin_section('ns3_module_radvd')
+ ns3_module_radvd.register_functions(root_module)
+
+ try:
+ import ns3_module_radvd__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_radvd__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_radvd')
+ root_module.begin_section('ns3_module_ping6')
+ ns3_module_ping6.register_functions(root_module)
+
+ try:
+ import ns3_module_ping6__local
+ except ImportError:
+ pass
+ else:
+ ns3_module_ping6__local.register_functions(root_module)
+
+ root_module.end_section('ns3_module_ping6')
root_module.begin_section('ns3_module_flow_monitor')
ns3_module_flow_monitor.register_functions(root_module)
@@ -1326,17 +1337,6 @@
ns3_module_flow_monitor__local.register_functions(root_module)
root_module.end_section('ns3_module_flow_monitor')
- root_module.begin_section('ns3_module_radvd')
- ns3_module_radvd.register_functions(root_module)
-
- try:
- import ns3_module_radvd__local
- except ImportError:
- pass
- else:
- ns3_module_radvd__local.register_functions(root_module)
-
- root_module.end_section('ns3_module_radvd')
root_module.begin_section('ns3_module_mesh')
ns3_module_mesh.register_functions(root_module)
--- a/src/core/object.cc Fri Nov 20 13:06:15 2009 +0300
+++ b/src/core/object.cc Fri Nov 20 13:06:46 2009 +0300
@@ -163,24 +163,49 @@
void
Object::Start (void)
{
+ /**
+ * Note: the code here is a bit tricky because we need to protect ourselves from
+ * modifications in the aggregate array while DoStart is called. The user's
+ * implementation of the DoStart method could call GetObject (which could
+ * reorder the array) and it could call AggregateObject which would add an
+ * object at the end of the array. To be safe, we restart iteration over the
+ * array whenever we call some user code, just in case.
+ */
+ restart:
uint32_t n = m_aggregates->n;
for (uint32_t i = 0; i < n; i++)
{
Object *current = m_aggregates->buffer[i];
- current->DoStart ();
- current->m_started = true;
+ if (!current->m_started)
+ {
+ current->DoStart ();
+ current->m_started = true;
+ goto restart;
+ }
}
}
void
Object::Dispose (void)
{
+ /**
+ * Note: the code here is a bit tricky because we need to protect ourselves from
+ * modifications in the aggregate array while DoDispose is called. The user's
+ * DoDispose implementation could call GetObject (which could reorder the array)
+ * and it could call AggregateObject which would add an object at the end of the array.
+ * So, to be safe, we restart the iteration over the array whenever we call some
+ * user code.
+ */
+ restart:
uint32_t n = m_aggregates->n;
for (uint32_t i = 0; i < n; i++)
{
Object *current = m_aggregates->buffer[i];
- NS_ASSERT (!current->m_disposed);
- current->DoDispose ();
- current->m_disposed = true;
+ if (!current->m_disposed)
+ {
+ current->DoDispose ();
+ current->m_disposed = true;
+ goto restart;
+ }
}
}
void
@@ -216,21 +241,25 @@
struct Aggregates *aggregates =
(struct Aggregates *)malloc (sizeof(struct Aggregates)+(total-1)*sizeof(Object*));
aggregates->n = total;
+
+ // copy our buffer to the new buffer
memcpy (&aggregates->buffer[0],
&m_aggregates->buffer[0],
m_aggregates->n*sizeof(Object*));
- // append the other aggregates in the new buffer
+
+ // append the other buffer into the new buffer too
for (uint32_t i = 0; i < other->m_aggregates->n; i++)
{
aggregates->buffer[m_aggregates->n+i] = other->m_aggregates->buffer[i];
UpdateSortedArray (aggregates, m_aggregates->n + i);
}
- // free both aggregate buffers
- free (m_aggregates);
- free (other->m_aggregates);
+ // keep track of the old aggregate buffers for the iteration
+ // of NotifyNewAggregates
+ struct Aggregates *a = m_aggregates;
+ struct Aggregates *b = other->m_aggregates;
- // Then, assign that buffer to every object
+ // Then, assign the new aggregation buffer to every object
uint32_t n = aggregates->n;
for (uint32_t i = 0; i < n; i++)
{
@@ -241,12 +270,25 @@
// share the counts
ShareCount (other);
- // Finally, call NotifyNewAggregate in the listed chain
- for (uint32_t i = 0; i < n; i++)
+ // Finally, call NotifyNewAggregate on all the objects aggregates together.
+ // We purposedly use the old aggregate buffers to iterate over the objects
+ // because this allows us to assume that they will not change from under
+ // our feet, even if our users call AggregateObject from within their
+ // NotifyNewAggregate method.
+ for (uint32_t i = 0; i < a->n; i++)
{
- Object *current = m_aggregates->buffer[i];
+ Object *current = a->buffer[i];
current->NotifyNewAggregate ();
}
+ for (uint32_t i = 0; i < b->n; i++)
+ {
+ Object *current = b->buffer[i];
+ current->NotifyNewAggregate ();
+ }
+
+ // Now that we are done with them, we can free our old aggregate buffers
+ free (a);
+ free (b);
}
/**
* This function must be implemented in the stack that needs to notify
--- a/src/core/object.h Fri Nov 20 13:06:15 2009 +0300
+++ b/src/core/object.h Fri Nov 20 13:06:46 2009 +0300
@@ -127,6 +127,12 @@
* This method aggregates the two objects together: after this
* method returns, it becomes possible to call GetObject
* on one to get the other, and vice-versa.
+ *
+ * This method calls the virtual method NotifyNewAggregates to
+ * notify all aggregated objects that they have been aggregated
+ * together.
+ *
+ * \sa NotifyNewAggregate
*/
void AggregateObject (Ptr<Object> other);
@@ -141,26 +147,32 @@
AggregateIterator GetAggregateIterator (void) const;
/**
- * Execute starting code of an object. What this method does is really up
- * to the user.
+ * This method calls the virtual DoStart method on all the objects
+ * aggregated to this object. DoStart will be called only once over
+ * the lifetime of an object, just like DoDispose is called only
+ * once.
+ *
+ * \sa DoStart
*/
void Start (void);
protected:
/**
- * This function is called by the AggregateObject on all the objects connected in the listed chain.
- * This way the new object aggregated will be used if needed by the NotifyNewAggregate corresponding
- * to each object connected in the listed chain. It should be implemented by objects needing an
- * additional/special behavior when aggregated to another object.
+ * This method is invoked whenever two sets of objects are aggregated together.
+ * It is invoked exactly once for each object in both sets.
+ * This method can be overriden by subclasses who wish to be notified of aggregation
+ * events. These subclasses must chain up to their base class NotifyNewAggregate method.
+ * It is safe to call GetObject and AggregateObject from within this method.
*/
- virtual void NotifyNewAggregate ();
+ virtual void NotifyNewAggregate (void);
/**
* This method is called only once by Object::Start. If the user
* calls Object::Start multiple times, DoStart is called only the
* first time.
*
* Subclasses are expected to override this method and _chain up_
- * to their parent's implementation once they are done.
+ * to their parent's implementation once they are done. It is
+ * safe to call GetObject and AggregateObject from within this method.
*/
virtual void DoStart (void);
/**
@@ -173,6 +185,8 @@
* i.e., for simplicity, the destructor of every subclass should
* be empty and its content should be moved to the associated
* DoDispose method.
+ *
+ * It is safe to call GetObject from within this method.
*/
virtual void DoDispose (void);
/**
--- a/src/internet-stack/ipv4-l3-protocol.cc Fri Nov 20 13:06:15 2009 +0300
+++ b/src/internet-stack/ipv4-l3-protocol.cc Fri Nov 20 13:06:46 2009 +0300
@@ -355,6 +355,70 @@
return -1;
}
+bool
+Ipv4L3Protocol::IsDestinationAddress (Ipv4Address address, uint32_t iif) const
+{
+ NS_LOG_FUNCTION (this << address << " " << iif);
+
+ // First check the incoming interface for a unicast address match
+ for (uint32_t i = 0; i < GetNAddresses (iif); i++)
+ {
+ Ipv4InterfaceAddress iaddr = GetAddress (iif, i);
+ if (address == iaddr.GetLocal ())
+ {
+ NS_LOG_LOGIC ("For me (destination " << address << " match)");
+ return true;
+ }
+ if (address == iaddr.GetBroadcast ())
+ {
+ NS_LOG_LOGIC ("For me (interface broadcast address)");
+ return true;
+ }
+ }
+
+ if (address.IsMulticast ())
+ {
+#ifdef NOTYET
+ if (MulticastCheckGroup (iif, address ))
+#endif
+ if (true)
+ {
+ NS_LOG_LOGIC ("For me (Ipv4Addr multicast address");
+ return true;
+ }
+ }
+
+ if (address.IsBroadcast ())
+ {
+ NS_LOG_LOGIC ("For me (Ipv4Addr broadcast address)");
+ return true;
+ }
+
+ if (GetWeakEsModel ()) // Check other interfaces
+ {
+ for (uint32_t j = 0; j < GetNInterfaces (); j++)
+ {
+ if (j == uint32_t (iif)) continue;
+ for (uint32_t i = 0; i < GetNAddresses (j); i++)
+ {
+ Ipv4InterfaceAddress iaddr = GetAddress (j, i);
+ if (address == iaddr.GetLocal ())
+ {
+ NS_LOG_LOGIC ("For me (destination " << address << " match) on another interface");
+ return true;
+ }
+ // This is a small corner case: match another interface's broadcast address
+ if (address == iaddr.GetBroadcast ())
+ {
+ NS_LOG_LOGIC ("For me (interface broadcast address on another interface)");
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+}
+
void
Ipv4L3Protocol::Receive( Ptr<NetDevice> device, Ptr<const Packet> p, uint16_t protocol, const Address &from,
const Address &to, NetDevice::PacketType packetType)
@@ -901,6 +965,18 @@
return m_ipForward;
}
+void
+Ipv4L3Protocol::SetWeakEsModel (bool model)
+{
+ m_weakEsModel = model;
+}
+
+bool
+Ipv4L3Protocol::GetWeakEsModel (void) const
+{
+ return m_weakEsModel;
+}
+
void
Ipv4L3Protocol::RouteInputError (Ptr<const Packet> p, const Ipv4Header & ipHeader, Socket::SocketErrno sockErrno)
{
--- a/src/internet-stack/ipv4-l3-protocol.h Fri Nov 20 13:06:15 2009 +0300
+++ b/src/internet-stack/ipv4-l3-protocol.h Fri Nov 20 13:06:46 2009 +0300
@@ -170,6 +170,7 @@
int32_t GetInterfaceForAddress (Ipv4Address addr) const;
int32_t GetInterfaceForPrefix (Ipv4Address addr, Ipv4Mask mask) const;
int32_t GetInterfaceForDevice (Ptr<const NetDevice> device) const;
+ bool IsDestinationAddress (Ipv4Address address, uint32_t iif) const;
bool AddAddress (uint32_t i, Ipv4InterfaceAddress address);
Ipv4InterfaceAddress GetAddress (uint32_t interfaceIndex, uint32_t addressIndex) const;
@@ -200,8 +201,11 @@
Ipv4L3Protocol(const Ipv4L3Protocol &);
Ipv4L3Protocol &operator = (const Ipv4L3Protocol &);
+ // class Ipv4 attributes
virtual void SetIpForward (bool forward);
virtual bool GetIpForward (void) const;
+ virtual void SetWeakEsModel (bool model);
+ virtual bool GetWeakEsModel (void) const;
Ipv4Header BuildHeader (
Ipv4Address source,
@@ -239,6 +243,7 @@
typedef std::list<Ptr<Ipv4L4Protocol> > L4List_t;
bool m_ipForward;
+ bool m_weakEsModel;
L4List_t m_protocols;
Ipv4InterfaceList m_interfaces;
uint8_t m_defaultTtl;
--- a/src/node/ipv4.cc Fri Nov 20 13:06:15 2009 +0300
+++ b/src/node/ipv4.cc Fri Nov 20 13:06:46 2009 +0300
@@ -37,6 +37,12 @@
MakeBooleanAccessor (&Ipv4::SetIpForward,
&Ipv4::GetIpForward),
MakeBooleanChecker ())
+ .AddAttribute ("WeakEsModel",
+ "RFC1122 term for whether host accepts datagram with a dest. address on another interface",
+ BooleanValue (true),
+ MakeBooleanAccessor (&Ipv4::SetWeakEsModel,
+ &Ipv4::GetWeakEsModel),
+ MakeBooleanChecker ())
#if 0
.AddAttribute ("MtuDiscover", "If enabled, every outgoing ip packet will have the DF flag set.",
BooleanValue (false),
--- a/src/node/ipv4.h Fri Nov 20 13:06:15 2009 +0300
+++ b/src/node/ipv4.h Fri Nov 20 13:06:46 2009 +0300
@@ -123,11 +123,33 @@
* This method searches the list of interfaces for one that holds a
* particular address. This call takes an IP address as a parameter and
* returns the interface number of the first interface that has been assigned
- * that address, or -1 if not found. There must be an exact match.
+ * that address, or -1 if not found. There must be an exact match; this
+ * method will not match broadcast or multicast addresses.
*/
virtual int32_t GetInterfaceForAddress (Ipv4Address address) const = 0;
/**
+ * \brief Determine whether address and interface corresponding to
+ * received packet can be accepted for local delivery
+ *
+ * \param address The IP address being considered
+ * \param iif The incoming Ipv4 interface index
+ *
+ * This method can be used to determine whether a received packet has
+ * an acceptable address for local delivery on the host. The address
+ * may be a unicast, multicast, or broadcast address. This method will
+ * return true if address is an exact match of a unicast address on
+ * one of the host's interfaces (see below), if address corresponds to
+ * a multicast group that the host has joined (and the incoming device
+ * is acceptable), or if address corresponds to a broadcast address.
+ *
+ * If the Ipv4 attribute WeakEsModel is true, the unicast address may
+ * match any of the Ipv4 addresses on any interface. If the attribute is
+ * false, the address must match one assigned to the incoming device.
+ */
+ virtual bool IsDestinationAddress (Ipv4Address address, uint32_t iif) const = 0;
+
+ /**
* \brief Return the interface number of first interface found that
* has an Ipv4 address within the prefix specified by the input
* address and mask parameters
@@ -257,6 +279,8 @@
// Indirect the Ipv4 attributes through private pure virtual methods
virtual void SetIpForward (bool forward) = 0;
virtual bool GetIpForward (void) const = 0;
+ virtual void SetWeakEsModel (bool model) = 0;
+ virtual bool GetWeakEsModel (void) const = 0;
};
} // namespace ns3
--- a/src/routing/list-routing/ipv4-list-routing.cc Fri Nov 20 13:06:15 2009 +0300
+++ b/src/routing/list-routing/ipv4-list-routing.cc Fri Nov 20 13:06:46 2009 +0300
@@ -121,75 +121,21 @@
NS_ASSERT (m_ipv4->GetInterfaceForDevice (idev) >= 0);
uint32_t iif = m_ipv4->GetInterfaceForDevice (idev);
- // Multicast recognition; handle local delivery here
- //
- if (header.GetDestination().IsMulticast ())
- {
-#ifdef NOTYET
- if (m_ipv4->MulticastCheckGroup (iif, header.GetDestination ()))
-#endif
- if (true)
- {
- NS_LOG_LOGIC ("Multicast packet for me-- local deliver");
- Ptr<Packet> packetCopy = p->Copy();
- // Here may want to disable lcb callback in recursive RouteInput
- // call below
- lcb (packetCopy, header, iif);
- // Fall through-- we may also need to forward this
- retVal = true;
- }
- for (Ipv4RoutingProtocolList::const_iterator rprotoIter =
- m_routingProtocols.begin (); rprotoIter != m_routingProtocols.end ();
- rprotoIter++)
- {
- NS_LOG_LOGIC ("Multicast packet for me-- trying to forward");
- if ((*rprotoIter).second->RouteInput (p, header, idev, ucb, mcb, lcb, ecb))
- {
- retVal = true;
- }
- }
- return retVal;
- }
-
- if (header.GetDestination ().IsBroadcast ())
+ retVal = m_ipv4->IsDestinationAddress (header.GetDestination (), iif);
+ if (retVal == true)
{
- NS_LOG_LOGIC ("For me (Ipv4Addr broadcast address)");
- // TODO: Local Deliver for broadcast
- // TODO: Forward broadcast
- }
-
- // TODO: Configurable option to enable RFC 1222 Strong End System Model
- // Right now, we will be permissive and allow a source to send us
- // a packet to one of our other interface addresses; that is, the
- // destination unicast address does not match one of the iif addresses,
- // but we check our other interfaces. This could be an option
- // (to remove the outer loop immediately below and just check iif).
- for (uint32_t j = 0; j < m_ipv4->GetNInterfaces (); j++)
- {
- for (uint32_t i = 0; i < m_ipv4->GetNAddresses (j); i++)
+ NS_LOG_LOGIC ("Address "<< header.GetDestination () << " is a match for local delivery");
+ if (header.GetDestination ().IsMulticast ())
{
- Ipv4InterfaceAddress iaddr = m_ipv4->GetAddress (j, i);
- Ipv4Address addr = iaddr.GetLocal ();
- if (addr.IsEqual (header.GetDestination ()))
- {
- if (j == iif)
- {
- NS_LOG_LOGIC ("For me (destination " << addr << " match)");
- }
- else
- {
- NS_LOG_LOGIC ("For me (destination " << addr << " match) on another interface " << header.GetDestination ());
- }
- lcb (p, header, iif);
- return true;
- }
- if (header.GetDestination ().IsEqual (iaddr.GetBroadcast ()))
- {
- NS_LOG_LOGIC ("For me (interface broadcast address)");
- lcb (p, header, iif);
- return true;
- }
- NS_LOG_LOGIC ("Address "<< addr << " not a match");
+ Ptr<Packet> packetCopy = p->Copy();
+ lcb (packetCopy, header, iif);
+ retVal = true;
+ // Fall through
+ }
+ else
+ {
+ lcb (p, header, iif);
+ return true;
}
}
// Check if input device supports IP forwarding
@@ -200,13 +146,21 @@
return false;
}
// Next, try to find a route
+ // If we have already delivered a packet locally (e.g. multicast)
+ // we suppress further downstream local delivery by nulling the callback
+ LocalDeliverCallback downstreamLcb = lcb;
+ if (retVal == true)
+ {
+ downstreamLcb = MakeNullCallback<void, Ptr<const Packet>, const Ipv4Header &, uint32_t > ();
+ }
for (Ipv4RoutingProtocolList::const_iterator rprotoIter =
m_routingProtocols.begin ();
rprotoIter != m_routingProtocols.end ();
rprotoIter++)
{
- if ((*rprotoIter).second->RouteInput (p, header, idev, ucb, mcb, lcb, ecb))
+ if ((*rprotoIter).second->RouteInput (p, header, idev, ucb, mcb, downstreamLcb, ecb))
{
+ NS_LOG_LOGIC ("Route found to forward packet in protocol " << (*rprotoIter).second->GetInstanceTypeId ().GetName ());
return true;
}
}
--- a/src/routing/olsr/olsr-routing-protocol.cc Fri Nov 20 13:06:15 2009 +0300
+++ b/src/routing/olsr/olsr-routing-protocol.cc Fri Nov 20 13:06:46 2009 +0300
@@ -219,7 +219,7 @@
{
m_ipv4 = 0;
- for (std::map< Ptr<Socket>, Ipv4Address >::iterator iter = m_socketAddresses.begin ();
+ for (std::map< Ptr<Socket>, Ipv4InterfaceAddress >::iterator iter = m_socketAddresses.begin ();
iter != m_socketAddresses.end (); iter++)
{
iter->first->Close ();
@@ -278,7 +278,7 @@
NS_FATAL_ERROR ("Failed to bind() OLSR receive socket");
}
socket->Connect (InetSocketAddress (Ipv4Address (0xffffffff), OLSR_PORT_NUMBER));
- m_socketAddresses[socket] = addr;
+ m_socketAddresses[socket] = m_ipv4->GetAddress (i, 0);
}
HelloTimerExpire ();
@@ -305,7 +305,7 @@
InetSocketAddress inetSourceAddr = InetSocketAddress::ConvertFrom (sourceAddress);
Ipv4Address senderIfaceAddr = inetSourceAddr.GetIpv4 ();
- Ipv4Address receiverIfaceAddr = m_socketAddresses[socket];
+ Ipv4Address receiverIfaceAddr = m_socketAddresses[socket].GetLocal ();
NS_ASSERT (receiverIfaceAddr != Ipv4Address ());
NS_LOG_DEBUG ("OLSR node " << m_mainAddress << " received a OLSR packet from "
<< senderIfaceAddr << " to " << receiverIfaceAddr);
@@ -2653,11 +2653,32 @@
}
bool RoutingProtocol::RouteInput (Ptr<const Packet> p,
- const Ipv4Header &header, Ptr<const NetDevice> idev, UnicastForwardCallback ucb, MulticastForwardCallback mcb,
+ const Ipv4Header &header, Ptr<const NetDevice> idev,
+ UnicastForwardCallback ucb, MulticastForwardCallback mcb,
LocalDeliverCallback lcb, ErrorCallback ecb)
{
NS_LOG_FUNCTION (this << " " << m_ipv4->GetObject<Node> ()->GetId() << " " << header.GetDestination ());
+ Ipv4Address dst = header.GetDestination ();
+ Ipv4Address origin = header.GetSource ();
+
+ // Consume self-originated packets
+ if (IsMyOwnAddress (origin) == true)
+ {
+ return true;
+ }
+
+ // Local delivery
+ NS_ASSERT (m_ipv4->GetInterfaceForDevice (idev) >= 0);
+ uint32_t iif = m_ipv4->GetInterfaceForDevice (idev);
+ if (m_ipv4->IsDestinationAddress (dst, iif))
+ {
+ NS_LOG_LOGIC ("Local delivery to " << dst);
+ lcb (p, header, iif);
+ return true;
+ }
+
+ // Forwarding
Ptr<Ipv4Route> rtentry;
RoutingTableEntry entry1, entry2;
if (Lookup (header.GetDestination (), entry1))
@@ -2920,6 +2941,21 @@
AddTestCase (new OlsrMprTestCase ());
}
+bool
+RoutingProtocol::IsMyOwnAddress (const Ipv4Address & a) const
+{
+ for (std::map<Ptr<Socket> , Ipv4InterfaceAddress>::const_iterator j =
+ m_socketAddresses.begin (); j != m_socketAddresses.end (); ++j)
+ {
+ Ipv4InterfaceAddress iface = j->second;
+ if (a == iface.GetLocal ())
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
}} // namespace olsr, ns3
--- a/src/routing/olsr/olsr-routing-protocol.h Fri Nov 20 13:06:15 2009 +0300
+++ b/src/routing/olsr/olsr-routing-protocol.h Fri Nov 20 13:06:46 2009 +0300
@@ -229,13 +229,15 @@
const olsr::MessageHeader::Hello &hello);
int Degree (NeighborTuple const &tuple);
+ /// Check that address is one of my interfaces
+ bool IsMyOwnAddress (const Ipv4Address & a) const;
Ipv4Address m_mainAddress;
// One socket per interface, each bound to that interface's address
// (reason: for OLSR Link Sensing we need to know on which interface
// HELLO messages arrive)
- std::map< Ptr<Socket>, Ipv4Address > m_socketAddresses;
+ std::map< Ptr<Socket>, Ipv4InterfaceAddress > m_socketAddresses;
TracedCallback <const PacketHeader &,
const MessageList &> m_rxPacketTrace;