Add a framework to register and lookup netdevice traits (is it wirelss, is it virtual?...)
authorGustavo J. A. M. Carneiro <gjc@inescporto.pt>
Sun, 19 Oct 2008 14:53:12 +0100
changeset 3886 cba7dabc1ca0
parent 3885 c01151be5067
child 3887 7809ce96af0d
Add a framework to register and lookup netdevice traits (is it wirelss, is it virtual?...)
src/contrib/visualizer/base.py
src/contrib/visualizer/core.py
--- a/src/contrib/visualizer/base.py	Thu Oct 16 15:22:53 2008 +0100
+++ b/src/contrib/visualizer/base.py	Sun Oct 19 14:53:12 2008 +0100
@@ -1,3 +1,4 @@
+import ns3
 import gobject
 
 class PyVizObject(gobject.GObject):
@@ -14,3 +15,18 @@
     def update(self):
         raise NotImplementedError
 
+class NetDeviceTraits(object):
+    def __init__(self, is_wireless=None, is_virtual=False):
+        self.is_wireless = is_wireless
+        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),
+}
+
+def lookup_netdevice_traits(class_type):
+    return netdevice_traits[class_type]
+
--- a/src/contrib/visualizer/core.py	Thu Oct 16 15:22:53 2008 +0100
+++ b/src/contrib/visualizer/core.py	Sun Oct 19 14:53:12 2008 +0100
@@ -40,7 +40,7 @@
     _import_error = None
 
 
-from base import InformationWindow, PyVizObject, Link
+from base import InformationWindow, PyVizObject, Link, lookup_netdevice_traits
 
 
 plugins = []
@@ -724,9 +724,12 @@
 
             for devI in range(node.GetNDevices()):
                 device = node.GetDevice(devI)
+                device_traits = lookup_netdevice_traits(type(device))
+                if device_traits.is_wireless:
+                    continue
+                if device_traits.is_virtual:
+                    continue
                 channel = device.GetChannel()
-                if isinstance(channel, (ns3.BridgeChannel, ns3.WifiChannel)):
-                    continue
                 if channel.GetNDevices() > 2:
                     if REPRESENT_CHANNELS_AS_NODES:
                         # represent channels as white nodes