svc/conntrack.in (strmask): Consistently return a string object.
[tripe] / svc / conntrack.in
index 79b47d8..a55e4c3 100644 (file)
@@ -171,11 +171,11 @@ class Config (object):
         ## a mask with N leading ones followed by trailing zeroes.
         slash = net.index('/')
         addr, = unpack('>L', S.inet_aton(net[:slash]))
-        if net.find('.', slash + 1) >= 0:
-          mask, = unpack('>L', S.inet_aton(net[:slash]))
-        else:
+        if net[slash + 1:].isdigit():
           n = int(net[slash + 1:], 10)
           mask = (1 << 32) - (1 << 32 - n)
+        else:
+          mask, = unpack('>L', S.inet_aton(net[slash + 1:]))
         pats.append((tag, peer, addr & mask, mask))
 
       ## Annoyingly, RawConfigParser doesn't preserve the order of options.
@@ -197,7 +197,7 @@ CF = None
 def straddr(a): return a is None and '#<none>' or S.inet_ntoa(pack('>L', a))
 def strmask(m):
   for i in xrange(33):
-    if m == 0xffffffff ^ ((1 << (32 - i)) - 1): return i
+    if m == 0xffffffff ^ ((1 << (32 - i)) - 1): return str(i)
   return straddr(m)
 
 def cmd_showconfig():