Index: /nodes/get-network-status.py
===================================================================
--- /nodes/get-network-status.py	(revision 8445)
+++ /nodes/get-network-status.py	(revision 8447)
@@ -18,5 +18,5 @@
 
 # When force is used as argument, use this range
-DEFAULT_SCAN_RANGE= ['172.16.0.0/21']
+DEFAULT_SCAN_RANGE= ['172.16.0.0/12']
 
 # Default node status output
Index: /nodes/nodemap.html
===================================================================
--- /nodes/nodemap.html	(revision 8445)
+++ /nodes/nodemap.html	(revision 8447)
@@ -112,8 +112,13 @@
         //alert(OpenLayers.loadURL("./kmlfile.kml", "", null, parseKML));
 
+        strategy = new OpenLayers.Strategy.Cluster();
+        strategy.distance = 2;
+        strategy.threshold = 3;
+
         // Hack to get around all kind of caching fails
         var epoch = new Date().getTime();
         var kml = new OpenLayers.Layer.GML("KML", "./kmlfile.kml?time=" + epoch,
-            { format: OpenLayers.Format.KML,
+            { strategies: [strategy],
+              format: OpenLayers.Format.KML,
               formatOptions: {
                 extractStyles: true, 
@@ -242,5 +247,13 @@
       function onKMLFeatureSelect(event) {
         var feature = event.feature;
-        var content = "<h2>"+feature.attributes.name + "</h2>" + feature.attributes.description;
+        var content = "";
+        if (feature.cluster) {
+           for (var i = 0; i < feature.cluster.length; i++) {
+             var node = feature.cluster[i];
+             var content = content + "<h2>" + node.attributes.name + "</h2>" + node.attributes.description + "<br />";
+           }
+        } else {
+           var content = "<h2>" + feature.attributes.name + "</h2>" + feature.attributes.description;
+        }
         popup = new OpenLayers.Popup.FramedCloud("chicken", 
                                  feature.geometry.getBounds().getCenterLonLat(),
