1 # Taken from bwlimit.py
3 # See tc_util.c and http://physics.nist.gov/cuu/Units/binary.html. Be
4 # warned that older versions of tc interpret "kbps", "mbps", "mbit",
5 # and "kbit" to mean (in this system) "kibps", "mibps", "mibit", and
6 # "kibit" and that if an older version is installed, all rates will
7 # be off by a small fraction.
15 "gibit": 1024*1024*1024,
17 "tibit": 1024*1024*1024*1024,
18 "tbit": 1000000000000,
24 "gibps": 8*1024*1024*1024,
26 "tibps": 8*1024*1024*1024*1024,
32 Parses an integer or a tc rate string (e.g., 1.5mbit) into bits/second
37 m = re.match(r"([0-9.]+)(\D*)", s)
40 suffix = m.group(2).lower()
41 if suffixes.has_key(suffix):
42 return int(float(m.group(1)) * suffixes[suffix])
46 def format_tc_rate(rate):
48 Formats a bits/second rate into a tc rate string
51 if rate >= 1000000000 and (rate % 1000000000) == 0:
52 return "%.0fgbit" % (rate / 1000000000.)
53 elif rate >= 1000000 and (rate % 1000000) == 0:
54 return "%.0fmbit" % (rate / 1000000.)
56 return "%.0fkbit" % (rate / 1000.)
58 return "%.0fbit" % rate