else:
return -1
+def format_bytes(bytes, si = True):
+ """
+ Formats bytes into a string
+ """
+ if si:
+ kilo = 1000.
+ else:
+ # Officially, a kibibyte
+ kilo = 1024.
+
+ if bytes >= (kilo * kilo * kilo):
+ return "%.1f GB" % (bytes / (kilo * kilo * kilo))
+ elif bytes >= 1000000:
+ return "%.1f MB" % (bytes / (kilo * kilo))
+ elif bytes >= 1000:
+ return "%.1f KB" % (bytes / kilo)
+ else:
+ return "%.0f bytes" % bytes
def format_tc_rate(rate):
"""
def set(xid, share = None, minrate = None, maxrate = None, minexemptrate = None, maxexemptrate = None):
- # Get defaults from current state if available
- # get(xid,dev) = ( xid, share, minrate, maxrate, minexemptrate, maxexemptrate, bytes, i2bytes )
- current = get(xid, dev)
- if current == None: current = () # must be a new slice if returned nothing.
- new = ( share, minrate, maxrate, minexemptrate, maxexemptrate )
- if current[1:6] != new:
- on(xid = xid, share = share,
- minrate = minrate, maxrate = maxrate,
- minexemptrate = minexemptrate, maxexemptrate = maxexemptrate)
+ on(xid = xid, share = share,
+ minrate = minrate, maxrate = maxrate,
+ minexemptrate = minexemptrate, maxexemptrate = maxexemptrate)
# Remove class associated with specified slice xid. If further packets
minexemptrate, maxexemptrate,
bytes, exemptbytes)
else:
- print "%s %d %s %s %s %s %d %d" % \
+ print "%s %d %s %s %s %s %s %s" % \
(slice, share,
format_tc_rate(minrate), format_tc_rate(maxrate),
format_tc_rate(minexemptrate), format_tc_rate(maxexemptrate),
- bytes, exemptbytes)
+ format_bytes(bytes), format_bytes(exemptbytes))
elif len(argv) >= 2:
# slice, ...