1from gi.repository
import Gtk
2from gi.repository
import Gdk
5 from nsnam.visualizer.base
import InformationWindow
6except ModuleNotFoundError:
29 @param self this object
30 @param visualizer visualizer object
31 @param node_index the node index
33 InformationWindow.__init__(self)
34 self.win = Gtk.Dialog(parent=visualizer.window,
35 flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
36 buttons=("_Close", Gtk.ResponseType.CLOSE))
37 self.
win.set_default_size(Gdk.Screen.width()/2, Gdk.Screen.height()/2)
39 self.
win.set_title(
"OLSR routing table for node %i" % node_index)
47 sw = Gtk.ScrolledWindow()
48 sw.set_properties(hscrollbar_policy=Gtk.PolicyType.AUTOMATIC,
49 vscrollbar_policy=Gtk.PolicyType.AUTOMATIC)
55 column = Gtk.TreeViewColumn(
'Destination', Gtk.CellRendererText(),
56 text=self.COLUMN_DESTINATION)
57 treeview.append_column(column)
60 column = Gtk.TreeViewColumn(
'Next hop', Gtk.CellRendererText(),
61 text=self.COLUMN_NEXT_HOP)
62 treeview.append_column(column)
65 column = Gtk.TreeViewColumn(
'Interface', Gtk.CellRendererText(),
66 text=self.COLUMN_INTERFACE)
67 treeview.append_column(column)
70 column = Gtk.TreeViewColumn(
'Num. Hops', Gtk.CellRendererText(),
71 text=self.COLUMN_NUM_HOPS)
72 treeview.append_column(column)
80 @param self this object
82 @param response the response
86 self.visualizer.remove_information_window(self)
91 @param self this object
95 ipv4 = node.GetObject(ns.Ipv4.GetTypeId())
96 if not ns.cppyy.gbl.hasOlsr(ns3_node):
98 olsr = ns.cppyy.gbl.getNodeOlsr(node)
101 for route
in olsr.GetRoutingTableEntries():
103 netdevice = ipv4.GetNetDevice(route.interface)
104 if netdevice
is None:
105 interface_name =
'lo'
107 interface_name = ns.Names.FindName(netdevice)
108 if not interface_name:
109 interface_name =
"(interface %i)" % route.interface
111 self.COLUMN_DESTINATION, str(route.destAddr),
112 self.COLUMN_NEXT_HOP, str(route.nextAddr),
113 self.COLUMN_INTERFACE, interface_name,
114 self.COLUMN_NUM_HOPS, route.distance)
118 ns3_node = ns.NodeList.GetNode(node.node_index)
119 if not ns.cppyy.gbl.hasOlsr(ns3_node):
123 menu_item = Gtk.MenuItem(
"Show OLSR Routing Table")
126 def _show_ipv4_routing_table(dummy_menu_item):
129 menu_item.connect(
"activate", _show_ipv4_routing_table)
133 viz.connect(
"populate-node-menu", populate_node_menu)
ShowOlsrRoutingTable class.
def __init__(self, visualizer, node_index)
Initializer.
def update(self)
Update function.
def _response_cb(self, win, response)
Initializer.
def populate_node_menu(viz, node, menu)