Changeset 8227 in genesis for nodes/getrange.py


Ignore:
Timestamp:
Aug 4, 2010, 6:51:22 PM (14 years ago)
Author:
rick
Message:

Functional changes:

  • Allow number of ranges to be requested

Cosmetic changes:

  • Instead of the binary foo, use simple IP display addresses in code


  • Big ranges are now only first 3 and last 3 printed
  • Examples a bit cooler formatted
  • Some documentation lines
File:
1 edited

Legend:

Unmodified
Added
Removed
  • nodes/getrange.py

    r8188 r8227  
    99size = 30
    1010if len(sys.argv) < 2:
    11         print "Gebruik: python getrange.py <interlink|subnet> <size>"
    12         print "\tdus voor een /28 interlink is het 'python getrange.py interlink 28'"
    13         print "\ten voor een /25 subnet is het 'python getrange.py subnet 25'"
     11        print "Gebruik: %s <interlink|subnet> <grootte> [aantal]" % sys.argv[0]
     12        print "Voorbeelden:"
     13        print "\tVoor drie /29 interlinks - '%s interlink 29 3'" % sys.argv[0]
     14        print "\tVoor een (1) /24 subnet  - '%s subnet 24'" % sys.argv[0]
    1415        exit(1)
    1516
    1617interlink = sys.argv[1] == 'interlink'
    1718size = int(sys.argv[2])
     19try:
     20        aantal = int(sys.argv[3])
     21except (KeyError,IndexError):
     22    aantal = 1
    1823numaddrs = 1 << (32 - size)
    1924
     
    5964                                print "[FOUT] in bestand '%s' regel '%i': %s" % (fname, lineNr, l)
    6065
    61 i = 0xffffffffL
     66# Fetching smallest in use IP
     67# XXX: Currently not used for anything
     68i = parseaddr("255.255.255.255")
    6269for k in bezet.keys():
    6370        if k < i:
    6471                i = k
    6572
    66 i = 0xac100300
    67 if not interlink:
    68         i = 0xac110000
    69 while 1:
    70         while bezet.has_key(i):
    71                 i = i + numaddrs
    72         okay = 1
    73         for j in range(numaddrs):
    74                 if bezet.has_key(i + j):
     73# Interlinks are living in special ranges usually
     74if interlink:
     75        i = parseaddr("172.16.3.0")
     76else:
     77        i = parseaddr("172.17.0.0")
     78
     79for n in xrange(aantal):
     80        okay = False
     81        while not okay:
     82                while bezet.has_key(i):
    7583                        i = i + numaddrs
    76                         okay = 0
    77                         break
    78         if okay:
    79                 break
     84               
     85                # Assume Ok, till we find a already used IP
     86                okay = True
     87                for j in range(numaddrs):
     88                        if bezet.has_key(i + j):
     89                                i = i + numaddrs
     90                                okay = False
     91                                break
    8092
    81 print "%s/%d:" % (showaddr(i), size),
    82 print " en ".join([showaddr(i) for i in range(i + 1, i + numaddrs - 1)])
     93        print "%s/%d:" % (showaddr(i), size),
     94        if size > 28:
     95                print " en ".join([showaddr(i) for i in range(i + 1, i + numaddrs - 1)])
     96        else:
     97                print " en ".join([showaddr(i) for i in range(i + 1, i + 4)]),
     98                print "...",
     99                print " en ".join([showaddr(i) for i in range(i + numaddrs - 7, i + numaddrs - 4)])
     100        bezet[i] = 1
Note: See TracChangeset for help on using the changeset viewer.