Check ifa->ifa_addr otherwise existing TUN device causes following segfault;
[util-vserver-pl.git] / python / bwlimit.py
index aeaa704..674814b 100644 (file)
@@ -50,7 +50,6 @@
 #
 
 import sys, os, re, getopt
-from sets import Set
 import pwd
 
 
@@ -125,6 +124,8 @@ cburst = None
 #          |                            |
 #   1:10 (8bit, 5mbit)           1:20 (8bit, 1gbit)
 #          |                            |
+#  1:100 (8bit, 5mbit)                  |
+#          |                            |
 # 1:1000 (8bit, 5mbit),        1:2000 (8bit, 1gbit),
 # 1:1001 (8bit, 5mbit),        1:2001 (8bit, 1gbit),
 # 1:1002 (1mbit, 5mbit),       1:2002 (1mbit, 1gbit),
@@ -367,6 +368,12 @@ def init(dev = dev, bwcap = bwmax):
     tc("class add dev %s parent 1:1 classid 1:10 htb rate %dbit ceil %dbit" % \
        (dev, bwmin, bwcap))
 
+    # Set up a subclass for DRL(Distributed Rate Limiting). 
+    # DRL will directly modify that subclass implementing the site limits.
+    tc("class add dev %s parent 1:10 classid 1:100 htb rate %dbit ceil %dbit" % \
+       (dev, bwmin, bwcap))
+
+
     # Set up a subclass that represents "exemption" from the node
     # bandwidth cap. Once the node bandwidth cap is reached, bandwidth
     # to exempt destinations can still be fairly shared up to bwmax.
@@ -557,7 +564,7 @@ def on(xid, dev = dev, share = None, minrate = None, maxrate = None, minexemptra
         minexemptrate = maxexemptrate
 
     # Set up subclasses for the slice
-    tc("class replace dev %s parent 1:10 classid 1:%x htb rate %dbit ceil %dbit quantum %d" % \
+    tc("class replace dev %s parent 1:100 classid 1:%x htb rate %dbit ceil %dbit quantum %d" % \
        (dev, default_minor | xid, minrate, maxrate, share * quantum))
 
     tc("class replace dev %s parent 1:20 classid 1:%x htb rate %dbit ceil %dbit quantum %d" % \
@@ -671,6 +678,9 @@ def main():
         elif opt == '-h':
             usage()
 
+    if bwcap == -1:
+        return 0
+
     if len(argv):
         if argv[0] == "init" or (argv[0] == "on" and len(argv) == 1):
             # (Re)initialize