diff --git a/examples/wireless/wifi-ap.py b/examples/wireless/wifi-ap.py
index fe67d460b..271c2ff53 100644
--- a/examples/wireless/wifi-ap.py
+++ b/examples/wireless/wifi-ap.py
@@ -95,6 +95,8 @@ def AdvancePosition(node):
def main(argv):
+ ns.core.CommandLine().Parse(argv)
+
ns.network.Packet.EnablePrinting();
# enable rts cts all the time.
diff --git a/src/visualizer/visualizer/base.py b/src/visualizer/visualizer/base.py
index acbe3e28b..9e81ebdbd 100644
--- a/src/visualizer/visualizer/base.py
+++ b/src/visualizer/visualizer/base.py
@@ -1,4 +1,12 @@
-import ns3
+import ns.point_to_point
+import ns.csma
+import ns.wifi
+import ns.bridge
+import ns.internet
+import ns.mesh
+import ns.wimax
+import ns.wimax
+
import gobject
import os.path
import sys
@@ -26,14 +34,14 @@ class NetDeviceTraits(object):
self.is_virtual = is_virtual
netdevice_traits = {
- ns3.PointToPointNetDevice: NetDeviceTraits(is_wireless=False),
- ns3.CsmaNetDevice: NetDeviceTraits(is_wireless=False),
- ns3.WifiNetDevice: NetDeviceTraits(is_wireless=True),
- ns3.BridgeNetDevice: NetDeviceTraits(is_virtual=True),
- ns3.LoopbackNetDevice: NetDeviceTraits(is_virtual=True, is_wireless=False),
- ns3.MeshPointDevice: NetDeviceTraits(is_virtual=True),
- ns3.SubscriberStationNetDevice: NetDeviceTraits(is_wireless=True),
- ns3.BaseStationNetDevice: NetDeviceTraits(is_wireless=True),
+ ns.point_to_point.PointToPointNetDevice: NetDeviceTraits(is_wireless=False),
+ ns.csma.CsmaNetDevice: NetDeviceTraits(is_wireless=False),
+ ns.wifi.WifiNetDevice: NetDeviceTraits(is_wireless=True),
+ ns.bridge.BridgeNetDevice: NetDeviceTraits(is_virtual=True),
+ ns.internet.LoopbackNetDevice: NetDeviceTraits(is_virtual=True, is_wireless=False),
+ ns.mesh.MeshPointDevice: NetDeviceTraits(is_virtual=True),
+ ns.wimax.SubscriberStationNetDevice: NetDeviceTraits(is_wireless=True),
+ ns.wimax.BaseStationNetDevice: NetDeviceTraits(is_wireless=True),
}
def lookup_netdevice_traits(class_type):
diff --git a/src/visualizer/visualizer/core.py b/src/visualizer/visualizer/core.py
index 63a91444f..2eed9bd4c 100644
--- a/src/visualizer/visualizer/core.py
+++ b/src/visualizer/visualizer/core.py
@@ -20,7 +20,12 @@ else:
SHELL_FONT = "Luxi Mono 10"
-import ns3
+import ns.core
+import ns.network
+import ns.visualizer
+import ns.internet
+import ns.mobility
+
import math
import os
import sys
@@ -154,15 +159,15 @@ class Node(PyVizObject):
def tooltip_query(self, tooltip):
self.visualizer.simulation.lock.acquire()
try:
- ns3_node = ns3.NodeList.GetNode(self.node_index)
- ipv4 = ns3_node.GetObject(ns3.Ipv4.GetTypeId())
- ipv6 = ns3_node.GetObject(ns3.Ipv6.GetTypeId())
+ ns3_node = ns.network.NodeList.GetNode(self.node_index)
+ ipv4 = ns3_node.GetObject(ns.internet.Ipv4.GetTypeId())
+ ipv6 = ns3_node.GetObject(ns.internet.Ipv6.GetTypeId())
lines = ['Node %i' % self.node_index]
lines.append('')
self.emit("query-extra-tooltip-info", lines)
- mob = ns3_node.GetObject(ns3.MobilityModel.GetTypeId())
+ mob = ns3_node.GetObject(ns.mobility.MobilityModel.GetTypeId())
if mob is not None:
lines.append(' Mobility Model: %s' % mob.GetInstanceTypeId().GetName())
@@ -170,7 +175,7 @@ class Node(PyVizObject):
lines.append('')
lines.append(' NetDevice %i:' % devI)
dev = ns3_node.GetDevice(devI)
- name = ns3.Names.FindName(dev)
+ name = ns.core.Names.FindName(dev)
if name:
lines.append(' Name: %s' % name)
devname = dev.GetInstanceTypeId().GetName()
@@ -296,8 +301,8 @@ class Node(PyVizObject):
@property
def has_mobility(self):
if self._has_mobility is None:
- node = ns3.NodeList.GetNode(self.node_index)
- mobility = node.GetObject(ns3.MobilityModel.GetTypeId())
+ node = ns.network.NodeList.GetNode(self.node_index)
+ mobility = node.GetObject(ns.mobility.MobilityModel.GetTypeId())
self._has_mobility = (mobility is not None)
return self._has_mobility
@@ -352,7 +357,7 @@ class SimulationThread(threading.Thread):
self.go.clear()
self.target_time = 0 # in seconds
self.quit = False
- self.sim_helper = ns3.PyViz()
+ self.sim_helper = ns.visualizer.PyViz()
self.pause_messages = []
def set_nodes_of_interest(self, nodes):
@@ -374,13 +379,13 @@ class SimulationThread(threading.Thread):
self.lock.acquire()
try:
if 0:
- if ns3.Simulator.IsFinished():
+ if ns3.core.Simulator.IsFinished():
self.viz.play_button.set_sensitive(False)
break
#print "sim: Current time is %f; Run until: %f" % (ns3.Simulator.Now ().GetSeconds (), self.target_time)
#if ns3.Simulator.Now ().GetSeconds () > self.target_time:
# print "skipping, model is ahead of view!"
- self.sim_helper.SimulatorRunUntil(ns3.Seconds(self.target_time))
+ self.sim_helper.SimulatorRunUntil(ns.core.Seconds(self.target_time))
#print "sim: Run until ended at current time: ", ns3.Simulator.Now ().GetSeconds ()
self.pause_messages.extend(self.sim_helper.GetPauseMessages())
gobject.idle_add(self.viz.update_model, priority=PRIORITY_UPDATE_MODEL)
@@ -462,7 +467,7 @@ class Visualizer(gobject.GObject):
assert isinstance(mode, ShowTransmissionsMode)
self._show_transmissions_mode = mode
if self._show_transmissions_mode == ShowTransmissionsMode.ALL:
- self.simulation.set_nodes_of_interest(range(ns3.NodeList.GetNNodes()))
+ self.simulation.set_nodes_of_interest(range(ns.network.NodeList.GetNNodes()))
elif self._show_transmissions_mode == ShowTransmissionsMode.NONE:
self.simulation.set_nodes_of_interest([])
elif self._show_transmissions_mode == ShowTransmissionsMode.SELECTED:
@@ -738,19 +743,19 @@ class Visualizer(gobject.GObject):
self.window.show()
def scan_topology(self):
- print "scanning topology: %i nodes..." % (ns3.NodeList.GetNNodes(),)
+ print "scanning topology: %i nodes..." % (ns.network.NodeList.GetNNodes(),)
graph = pygraphviz.AGraph()
seen_nodes = 0
- for nodeI in range(ns3.NodeList.GetNNodes()):
+ for nodeI in range(ns.network.NodeList.GetNNodes()):
seen_nodes += 1
if seen_nodes == 100:
- print "scan topology... %i nodes visited (%.1f%%)" % (nodeI, 100*nodeI/ns3.NodeList.GetNNodes())
+ print "scan topology... %i nodes visited (%.1f%%)" % (nodeI, 100*nodeI/ns.network.NodeList.GetNNodes())
seen_nodes = 0
- node = ns3.NodeList.GetNode(nodeI)
+ node = ns.network.NodeList.GetNode(nodeI)
node_name = "Node %i" % nodeI
node_view = self.get_node(nodeI)
- mobility = node.GetObject(ns3.MobilityModel.GetTypeId())
+ mobility = node.GetObject(ns.mobility.MobilityModel.GetTypeId())
if mobility is not None:
node_view.set_color("red")
pos = mobility.GetPosition()
@@ -840,7 +845,7 @@ class Visualizer(gobject.GObject):
def update_view(self):
#print "update_view"
- self.time_label.set_text("Time: %f s" % ns3.Simulator.Now().GetSeconds())
+ self.time_label.set_text("Time: %f s" % ns.core.Simulator.Now().GetSeconds())
self._update_node_positions()
@@ -856,8 +861,8 @@ class Visualizer(gobject.GObject):
def _update_node_positions(self):
for node in self.nodes.itervalues():
if node.has_mobility:
- ns3_node = ns3.NodeList.GetNode(node.node_index)
- mobility = ns3_node.GetObject(ns3.MobilityModel.GetTypeId())
+ ns3_node = ns.network.NodeList.GetNode(node.node_index)
+ mobility = ns3_node.GetObject(ns.mobility.MobilityModel.GetTypeId())
if mobility is not None:
pos = mobility.GetPosition()
x, y = transform_point_simulation_to_canvas(pos.x, pos.y)
@@ -870,14 +875,14 @@ class Visualizer(gobject.GObject):
vadj.value = py - vadj.page_size/2
def center_on_node(self, node):
- if isinstance(node, ns3.Node):
+ if isinstance(node, ns.network.Node):
node = self.nodes[node.GetId()]
elif isinstance(node, (int, long)):
node = self.nodes[node]
elif isinstance(node, Node):
pass
else:
- raise TypeError("expected int, viz.Node or ns3.Node, not %r" % node)
+ raise TypeError("expected int, viz.Node or ns.network.Node, not %r" % node)
x, y = node.get_position()
hadj = self._scrolled_window.get_hadjustment()
@@ -913,7 +918,7 @@ class Visualizer(gobject.GObject):
bounds_x1, bounds_y1 = self.canvas.convert_from_pixels(hadj.value, vadj.value)
bounds_x2, bounds_y2 = self.canvas.convert_from_pixels(hadj.value + hadj.page_size,
vadj.value + vadj.page_size)
- pos1_x, pos1_y, pos2_x, pos2_y = ns3.PyViz.LineClipping(bounds_x1, bounds_y1,
+ pos1_x, pos1_y, pos2_x, pos2_y = ns.visualizer.PyViz.LineClipping(bounds_x1, bounds_y1,
bounds_x2, bounds_y2,
pos1_x, pos1_y,
pos2_x, pos2_y)
@@ -1059,7 +1064,7 @@ class Visualizer(gobject.GObject):
self.simulation.pause_messages = []
try:
self.update_view()
- self.simulation.target_time = ns3.Simulator.Now ().GetSeconds () + self.sample_period
+ self.simulation.target_time = ns.core.Simulator.Now ().GetSeconds () + self.sample_period
#print "view: target time set to %f" % self.simulation.target_time
finally:
self.simulation.lock.release()
@@ -1209,8 +1214,8 @@ class Visualizer(gobject.GObject):
def begin_node_drag(self, node):
self.simulation.lock.acquire()
try:
- ns3_node = ns3.NodeList.GetNode(node.node_index)
- mob = ns3_node.GetObject(ns3.MobilityModel.GetTypeId())
+ ns3_node = ns.network.NodeList.GetNode(node.node_index)
+ mob = ns3_node.GetObject(ns.mobility.MobilityModel.GetTypeId())
if mob is None:
return
if self.node_drag_state is not None:
@@ -1226,8 +1231,8 @@ class Visualizer(gobject.GObject):
def node_drag_motion(self, item, targe_item, event, node):
self.simulation.lock.acquire()
try:
- ns3_node = ns3.NodeList.GetNode(node.node_index)
- mob = ns3_node.GetObject(ns3.MobilityModel.GetTypeId())
+ ns3_node = ns.network.NodeList.GetNode(node.node_index)
+ mob = ns3_node.GetObject(ns.mobility.MobilityModel.GetTypeId())
if mob is None:
return False
if self.node_drag_state is None:
@@ -1271,14 +1276,14 @@ class Visualizer(gobject.GObject):
else:
self.simulation.lock.acquire()
try:
- ns3_node = ns3.NodeList.GetNode(self.selected_node.node_index)
+ ns3_node = ns.network.NodeList.GetNode(self.selected_node.node_index)
finally:
self.simulation.lock.release()
__IPYTHON__.user_ns['selected_node'] = ns3_node
def select_node(self, node):
- if isinstance(node, ns3.Node):
+ if isinstance(node, ns.network.Node):
node = self.nodes[node.GetId()]
elif isinstance(node, (int, long)):
node = self.nodes[node]
@@ -1287,7 +1292,7 @@ class Visualizer(gobject.GObject):
elif node is None:
pass
else:
- raise TypeError("expected None, int, viz.Node or ns3.Node, not %r" % node)
+ raise TypeError("expected None, int, viz.Node or ns.network.Node, not %r" % node)
if node is self.selected_node:
return
@@ -1414,7 +1419,7 @@ class Visualizer(gobject.GObject):
surface.finish()
def set_follow_node(self, node):
- if isinstance(node, ns3.Node):
+ if isinstance(node, ns.network.Node):
node = self.nodes[node.GetId()]
self.follow_node = node
@@ -1473,11 +1478,11 @@ def start():
if _import_error is not None:
import sys
print >> sys.stderr, "No visualization support (%s)." % (str(_import_error),)
- ns3.Simulator.Run()
+ ns.core.Simulator.Run()
return
load_plugins()
viz = Visualizer()
for hook, args in initialization_hooks:
gobject.idle_add(hook, viz, *args)
- ns3.Packet.EnablePrinting()
+ ns.network.Packet.EnablePrinting()
viz.start()
diff --git a/src/visualizer/visualizer/plugins/interface_statistics.py b/src/visualizer/visualizer/plugins/interface_statistics.py
index 0124ab8c3..1cb0ef573 100644
--- a/src/visualizer/visualizer/plugins/interface_statistics.py
+++ b/src/visualizer/visualizer/plugins/interface_statistics.py
@@ -1,5 +1,6 @@
import gtk
-import ns3
+import ns.core
+import ns.network
from visualizer.base import InformationWindow
NODE_STATISTICS_MEMORY = 10
@@ -125,13 +126,13 @@ class ShowInterfaceStatistics(InformationWindow):
self.visualizer.remove_information_window(self)
def update(self):
- node = ns3.NodeList.GetNode(self.node_index)
+ node = ns.network.NodeList.GetNode(self.node_index)
stats_list = self.statistics_collector.get_interface_statistics(self.node_index)
self.table_model.clear()
for iface, stats in enumerate(stats_list):
tree_iter = self.table_model.append()
netdevice = node.GetDevice(iface)
- interface_name = ns3.Names.FindName(netdevice)
+ interface_name = ns.core.Names.FindName(netdevice)
if not interface_name:
interface_name = "(interface %i)" % iface
self.table_model.set(tree_iter,
diff --git a/src/visualizer/visualizer/plugins/ipv4_routing_table.py b/src/visualizer/visualizer/plugins/ipv4_routing_table.py
index 91ed41f5e..134e7d795 100644
--- a/src/visualizer/visualizer/plugins/ipv4_routing_table.py
+++ b/src/visualizer/visualizer/plugins/ipv4_routing_table.py
@@ -1,5 +1,9 @@
import gtk
-import ns3
+
+import ns.core
+import ns.network
+import ns.internet
+
from visualizer.base import InformationWindow
class ShowIpv4RoutingTable(InformationWindow):
@@ -66,23 +70,23 @@ class ShowIpv4RoutingTable(InformationWindow):
self.visualizer.remove_information_window(self)
def update(self):
- node = ns3.NodeList.GetNode(self.node_index)
- ipv4 = node.GetObject(ns3.Ipv4.GetTypeId())
+ node = ns.network.NodeList.GetNode(self.node_index)
+ ipv4 = node.GetObject(ns.internet.Ipv4.GetTypeId())
routing = ipv4.GetRoutingProtocol()
if routing is None:
return
routing_protocols = [] # list of (protocol, type_string, priority)
- if isinstance(routing, ns3.Ipv4StaticRouting):
+ if isinstance(routing, ns.internet.Ipv4StaticRouting):
ipv4_routing = routing_protocols.append((routing, "static", 0))
- elif isinstance(routing, ns3.Ipv4ListRouting):
+ elif isinstance(routing, ns.internet.Ipv4ListRouting):
list_routing = routing
for rI in range(list_routing.GetNRoutingProtocols()):
routing, prio = list_routing.GetRoutingProtocol(rI)
- if isinstance(routing, ns3.Ipv4StaticRouting):
+ if isinstance(routing, ns.internet.Ipv4StaticRouting):
routing_protocols.append((routing, "static", prio))
- elif isinstance(routing, ns3.Ipv4GlobalRouting):
+ elif isinstance(routing, ns.internet.Ipv4GlobalRouting):
routing_protocols.append((routing, "global", prio))
if not routing_protocols:
return
@@ -96,7 +100,7 @@ class ShowIpv4RoutingTable(InformationWindow):
if netdevice is None:
interface_name = 'lo'
else:
- interface_name = ns3.Names.FindName(netdevice)
+ interface_name = ns.core.Names.FindName(netdevice)
if not interface_name:
interface_name = "(interface %i)" % route.GetInterface()
self.table_model.set(tree_iter,
diff --git a/src/visualizer/visualizer/plugins/olsr.py b/src/visualizer/visualizer/plugins/olsr.py
index f74023417..b5752c8f3 100644
--- a/src/visualizer/visualizer/plugins/olsr.py
+++ b/src/visualizer/visualizer/plugins/olsr.py
@@ -1,5 +1,10 @@
import gtk
-import ns3
+
+import ns.core
+import ns.network
+import ns.internet
+import ns.olsr
+
from visualizer.base import InformationWindow
class ShowOlsrRoutingTable(InformationWindow):
@@ -60,9 +65,9 @@ class ShowOlsrRoutingTable(InformationWindow):
self.visualizer.remove_information_window(self)
def update(self):
- node = ns3.NodeList.GetNode(self.node_index)
- olsr = node.GetObject(ns3.olsr.RoutingProtocol.GetTypeId())
- ipv4 = node.GetObject(ns3.Ipv4.GetTypeId())
+ node = ns.network.NodeList.GetNode(self.node_index)
+ olsr = node.GetObject(ns.olsr.olsr.RoutingProtocol.GetTypeId())
+ ipv4 = node.GetObject(ns.internet.Ipv4.GetTypeId())
if olsr is None:
return
self.table_model.clear()
@@ -72,7 +77,7 @@ class ShowOlsrRoutingTable(InformationWindow):
if netdevice is None:
interface_name = 'lo'
else:
- interface_name = ns3.Names.FindName(netdevice)
+ interface_name = ns.core.Names.FindName(netdevice)
if not interface_name:
interface_name = "(interface %i)" % route.interface
self.table_model.set(tree_iter,
@@ -83,8 +88,8 @@ class ShowOlsrRoutingTable(InformationWindow):
def populate_node_menu(viz, node, menu):
- ns3_node = ns3.NodeList.GetNode(node.node_index)
- olsr = ns3_node.GetObject(ns3.olsr.RoutingProtocol.GetTypeId())
+ ns3_node = ns.network.NodeList.GetNode(node.node_index)
+ olsr = ns3_node.GetObject(ns.olsr.olsr.RoutingProtocol.GetTypeId())
if olsr is None:
print "No OLSR"
return
diff --git a/src/visualizer/visualizer/plugins/show_last_packets.py b/src/visualizer/visualizer/plugins/show_last_packets.py
index 78ae288cd..8971dfc18 100644
--- a/src/visualizer/visualizer/plugins/show_last_packets.py
+++ b/src/visualizer/visualizer/plugins/show_last_packets.py
@@ -1,6 +1,10 @@
import gobject
import gtk
-import ns3
+
+import ns.core
+import ns.network
+import ns.visualizer
+
from visualizer.base import InformationWindow
from visualizer.higcontainer import HIGContainer
from kiwi.ui.objectlist import ObjectList, Column
@@ -39,7 +43,7 @@ class ShowLastPackets(InformationWindow):
if sample.device is None:
interface_name = "(unknown)"
else:
- interface_name = ns3.Names.FindName(sample.device)
+ interface_name = ns.core.Names.FindName(sample.device)
if not interface_name:
interface_name = "(interface %i)" % sample.device.GetIfIndex()
self.table_model.set(tree_iter,
@@ -59,7 +63,7 @@ class ShowLastPackets(InformationWindow):
self.win.set_title("Last packets for node %i" % node_index)
self.visualizer = visualizer
self.viz_node = visualizer.get_node(node_index)
- self.node = ns3.NodeList.GetNode(node_index)
+ self.node = ns.network.NodeList.GetNode(node_index)
def smart_expand(expander, vbox):
if expander.get_expanded():
@@ -102,7 +106,7 @@ class ShowLastPackets(InformationWindow):
# Packet Filter
# - options
- self.packet_capture_options = ns3.PyViz.PacketCaptureOptions()
+ self.packet_capture_options = ns.visualizer.PyViz.PacketCaptureOptions()
self.packet_capture_options.numLastPackets = 100
packet_filter_vbox = gtk.VBox(False, 4)
@@ -129,10 +133,10 @@ class ShowLastPackets(InformationWindow):
self.packet_filter_list = [] # list of TypeIdConfig instances
- Header = ns3.TypeId.LookupByName("ns3::Header")
- Trailer = ns3.TypeId.LookupByName("ns3::Trailer")
- for typeid_i in range(ns3.TypeId.GetRegisteredN()):
- typeid = ns3.TypeId.GetRegistered(typeid_i)
+ Header = ns.core.TypeId.LookupByName("ns3::Header")
+ Trailer = ns.core.TypeId.LookupByName("ns3::Trailer")
+ for typeid_i in range(ns.core.TypeId.GetRegisteredN()):
+ typeid = ns.core.TypeId.GetRegistered(typeid_i)
# check if this is a header or trailer subtype
typeid_tmp = typeid
type_is_good = False
@@ -157,9 +161,9 @@ class ShowLastPackets(InformationWindow):
def update_capture_options():
if self.op_AND_button.props.active:
- self.packet_capture_options.mode = ns3.PyViz.PACKET_CAPTURE_FILTER_HEADERS_AND
+ self.packet_capture_options.mode = ns.visualizer.PyViz.PACKET_CAPTURE_FILTER_HEADERS_AND
else:
- self.packet_capture_options.mode = ns3.PyViz.PACKET_CAPTURE_FILTER_HEADERS_OR
+ self.packet_capture_options.mode = ns.visualizer.PyViz.PACKET_CAPTURE_FILTER_HEADERS_OR
self.packet_capture_options.numLastPackets = 100
self.packet_capture_options.headers = [c.typeid for c in self.packet_filter_list if c.selected]
self.visualizer.simulation.lock.acquire()
diff --git a/src/visualizer/visualizer/plugins/wifi_intrastructure_link.py b/src/visualizer/visualizer/plugins/wifi_intrastructure_link.py
index 866803af1..f48df8e8c 100644
--- a/src/visualizer/visualizer/plugins/wifi_intrastructure_link.py
+++ b/src/visualizer/visualizer/plugins/wifi_intrastructure_link.py
@@ -1,5 +1,6 @@
import math
-import ns3
+import ns.wifi
+import ns.network
import goocanvas
from visualizer.base import Link, transform_distance_canvas_to_simulation
@@ -77,17 +78,17 @@ class WifiLinkMonitor(object):
self.stations = []
for node in viz.nodes.itervalues():
- ns3_node = ns3.NodeList.GetNode(node.node_index)
+ ns3_node = ns.network.NodeList.GetNode(node.node_index)
for devI in range(ns3_node.GetNDevices()):
dev = ns3_node.GetDevice(devI)
- if not isinstance(dev, ns3.WifiNetDevice):
+ if not isinstance(dev, ns.wifi.WifiNetDevice):
continue
wifi_mac = dev.GetMac()
- if isinstance(wifi_mac, ns3.StaWifiMac):
+ if isinstance(wifi_mac, ns.wifi.StaWifiMac):
wifi_link = WifiLink(viz.links_group, node, dev)
self.stations.append((dev, node, wifi_link))
- elif isinstance(wifi_mac, ns3.ApWifiMac):
- bssid = ns3.Mac48Address.ConvertFrom(dev.GetAddress())
+ elif isinstance(wifi_mac, ns.wifi.ApWifiMac):
+ bssid = ns.network.Mac48Address.ConvertFrom(dev.GetAddress())
self.access_points[str(bssid)] = node
#print "APs: ", self.access_points
#print "STAs: ", self.stations