# versie van other/static_routing-lv/walk.py die de infrastructuur hier # gebruikt en gelijk een stuk kleiner is. # # produceer een lijst met nodes in volgorde van oplopende hop count vanaf # een begin node. # # lodewijk@wirelessleiden.nl / lvoege@gmail.com from common import * import os import sys def walk(ring, nodes, start): res = [] todo = [ (ring, nodes.nodedict[ start ]) ] done = {} while todo != []: ring, node = todo.pop(0) if done.has_key(node) or node.status != 'up': continue done[node] = 1 res.append("%d %s" % (ring, node.name)) for link in node.links: todo.extend(map(lambda (n, l): (ring + 1, n), link.peers)) return res if __name__ == "__main__": if len(sys.argv) < 2: print "Usage: python walk.py " sys.exit(1) nodes = xml_to_obj_hierarchy("nodes.xml") ready_nodes_dtd_hierarchy(nodes) for node in walk(0, nodes, sys.argv[1]): print node