A Discrete-Event Network Simulator
API
olsr.py
Go to the documentation of this file.
1 import gtk
2 
3 import ns.core
4 import ns.network
5 import ns.internet
6 import ns.olsr
7 
8 from visualizer.base import InformationWindow
9 
10 ## ShowOlsrRoutingTable class
12  ## @var win
13  # window
14  ## @var visualizer
15  # visualizer
16  ## @var node_index
17  # node index
18  ## @var table_model
19  # table model
20  (
21  COLUMN_DESTINATION,
22  COLUMN_NEXT_HOP,
23  COLUMN_INTERFACE,
24  COLUMN_NUM_HOPS,
25  ) = range(4)
26 
27  def __init__(self, visualizer, node_index):
28  """!
29  Initializer
30  @param self this object
31  @param visualizer visualizer object
32  @param node_index the node index
33  @return none
34  """
35  InformationWindow.__init__(self)
36  self.win = gtk.Dialog(parent=visualizer.window,
37  flags=gtk.DIALOG_DESTROY_WITH_PARENT|gtk.DIALOG_NO_SEPARATOR,
38  buttons=(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE))
39  self.win.set_default_size(gtk.gdk.screen_width()/2, gtk.gdk.screen_height()/2)
40  self.win.connect("response", self._response_cb)
41  self.win.set_title("OLSR routing table for node %i" % node_index)
42  self.visualizer = visualizer
43  self.node_index = node_index
44 
45  self.table_model = gtk.ListStore(str, str, str, int)
46 
47  treeview = gtk.TreeView(self.table_model)
48  treeview.show()
49  sw = gtk.ScrolledWindow()
50  sw.set_properties(hscrollbar_policy=gtk.POLICY_AUTOMATIC,
51  vscrollbar_policy=gtk.POLICY_AUTOMATIC)
52  sw.show()
53  sw.add(treeview)
54  self.win.vbox.add(sw)
55 
56  # Dest.
57  column = gtk.TreeViewColumn('Destination', gtk.CellRendererText(),
58  text=self.COLUMN_DESTINATION)
59  treeview.append_column(column)
60 
61  # Next hop
62  column = gtk.TreeViewColumn('Next hop', gtk.CellRendererText(),
63  text=self.COLUMN_NEXT_HOP)
64  treeview.append_column(column)
65 
66  # Interface
67  column = gtk.TreeViewColumn('Interface', gtk.CellRendererText(),
68  text=self.COLUMN_INTERFACE)
69  treeview.append_column(column)
70 
71  # Num. Hops
72  column = gtk.TreeViewColumn('Num. Hops', gtk.CellRendererText(),
73  text=self.COLUMN_NUM_HOPS)
74  treeview.append_column(column)
75 
76  self.visualizer.add_information_window(self)
77  self.win.show()
78 
79  def _response_cb(self, win, response):
80  """!
81  Initializer
82  @param self this object
83  @param win the window
84  @param response the response
85  @return none
86  """
87  self.win.destroy()
88  self.visualizer.remove_information_window(self)
89 
90  def update(self):
91  """!
92  Update function
93  @param self this object
94  @return none
95  """
96  node = ns.network.NodeList.GetNode(self.node_index)
97  olsr = node.GetObject(ns.olsr.olsr.RoutingProtocol.GetTypeId())
98  ipv4 = node.GetObject(ns.internet.Ipv4.GetTypeId())
99  if olsr is None:
100  return
101  self.table_model.clear()
102  for route in olsr.GetRoutingTableEntries():
103  tree_iter = self.table_model.append()
104  netdevice = ipv4.GetNetDevice(route.interface)
105  if netdevice is None:
106  interface_name = 'lo'
107  else:
108  interface_name = ns.core.Names.FindName(netdevice)
109  if not interface_name:
110  interface_name = "(interface %i)" % route.interface
111  self.table_model.set(tree_iter,
112  self.COLUMN_DESTINATION, str(route.destAddr),
113  self.COLUMN_NEXT_HOP, str(route.nextAddr),
114  self.COLUMN_INTERFACE, interface_name,
115  self.COLUMN_NUM_HOPS, route.distance)
116 
117 
118 def populate_node_menu(viz, node, menu):
119  ns3_node = ns.network.NodeList.GetNode(node.node_index)
120  olsr = ns3_node.GetObject(ns.olsr.olsr.RoutingProtocol.GetTypeId())
121  if olsr is None:
122  print "No OLSR"
123  return
124 
125  menu_item = gtk.MenuItem("Show OLSR Routing Table")
126  menu_item.show()
127 
128  def _show_ipv4_routing_table(dummy_menu_item):
129  ShowOlsrRoutingTable(viz, node.node_index)
130 
131  menu_item.connect("activate", _show_ipv4_routing_table)
132  menu.add(menu_item)
133 
134 def register(viz):
135  viz.connect("populate-node-menu", populate_node_menu)
def update(self)
Update function.
Definition: olsr.py:90
def register(viz)
Definition: olsr.py:134
table_model
table model
Definition: olsr.py:45
visualizer
visualizer
Definition: olsr.py:42
def __init__(self, visualizer, node_index)
Initializer.
Definition: olsr.py:27
node_index
node index
Definition: olsr.py:43
def _response_cb(self, win, response)
Initializer.
Definition: olsr.py:79
ShowOlsrRoutingTable class.
Definition: olsr.py:11
InformationWindow class.
Definition: base.py:35
def populate_node_menu(viz, node, menu)
Definition: olsr.py:118