._site

(Arne Babenhauserheide)
2012-07-27: Added the possibility to not calculate the full route when routing,

Added the possibility to not calculate the full route when routing, but stop at maxhtl. Should speed up random networks (flat) quite a bit.

diff --git a/sim.py b/sim.py
--- a/sim.py
+++ b/sim.py
@@ -442,9 +442,13 @@ def checkfold(target, prev, net, probabi
     if strategy == "connectsimple":
         return checksimpleconnect(target, prev, net)
 
-def fold(net, num=100, strategy="jumphalf", maxhtl=20):
+def fold(net, num=100, strategy="jumphalf", maxhtl=20, fullroutes=True):
     """do num path foldings.
 
+    :param fullroutes: Calculate the full route, regardless of
+        maxhtl. Only use the HTL for deciding whether to try to fold
+        the route.
+
     :return: the lengths of all used routes."""
     routelengths = []
     for i in range(num):
@@ -453,8 +457,16 @@ def fold(net, num=100, strategy="jumphal
         target = choice(nodes)
         while target == start:
             target = choice(nodes)
-        route = findroute(target, start, net)
+        if fullroute:
+            route = findroute(target, start, net, maxhtl=9999)
+        else:
+            route = findroute(target, start, net, maxhtl=maxhtl)
         if not route:
+            # in case we break the route at maxhtl, we just add the
+            # HTL+1 to be able to do the simplistic success stats
+            # later.
+            if not fullroute:
+                routelengths.append(maxhtl+1)
             continue
         routelen = len(route)
         routelengths.append(routelen)