# Mark Huang <mlhuang@cs.princeton.edu>
# Copyright (C) 2006 The Trustees of Princeton University
#
-# $Id: bwlimit.py,v 1.11 2006/03/15 16:41:21 smuir Exp $
+# $Id: bwlimit.py,v 1.13 2006/11/27 22:32:59 mlhuang Exp $
#
import sys, os, re, getopt
return run(TC + " " + cmd)
-def init(dev, bwcap):
+def init(dev = dev, bwcap = bwmax):
"""
(Re)initialize the bandwidth limits on this node
"""
- # load the module used to manage exempt classes
+ # Load the module used to manage exempt classes
run("/sbin/modprobe ip_set_iphash")
+ # Save current settings
+ paramslist = get(None, dev)
+
# Delete root qdisc 1: if it exists. This will also automatically
# delete any child classes.
for line in tc("qdisc show dev %s" % dev):
# up here.
on(default_xid, dev, share = default_share)
+ # Restore old settings
+ for (xid, share,
+ minrate, maxrate,
+ minexemptrate, maxexemptrate,
+ bytes, exemptbytes) in paramslist:
+ if xid not in (root_xid, default_xid):
+ on(xid, dev, share, minrate, maxrate, minexemptrate, maxexemptrate)
+
def get(xid = None, dev = dev):
"""
maxexemptrate = get_tc_rate(maxexemptrate)
# Sanity checks
+ if maxrate < bwmin:
+ maxrate = bwmin
if maxrate > bwcap:
maxrate = bwcap
+ if minrate < bwmin:
+ minrate = bwmin
if minrate > maxrate:
minrate = maxrate
if maxexemptrate > bwmax: