diff options
Diffstat (limited to 'tools/python')
-rw-r--r-- | tools/python/xen/remus/device.py | 4 | ||||
-rw-r--r-- | tools/python/xen/remus/qdisc.py | 23 |
2 files changed, 19 insertions, 8 deletions
diff --git a/tools/python/xen/remus/device.py b/tools/python/xen/remus/device.py index debfaedb07..970e1ead5f 100644 --- a/tools/python/xen/remus/device.py +++ b/tools/python/xen/remus/device.py @@ -332,12 +332,12 @@ class BufferedNIC(CheckpointedDevice): if not self.installed: self.install() - self._sendqmsg(qdisc.TC_PLUG_CHECKPOINT) + self._sendqmsg(qdisc.TC_PLUG_BUFFER) def commit(self): '''Called when checkpoint has been acknowledged by the backup''' - self._sendqmsg(qdisc.TC_PLUG_RELEASE) + self._sendqmsg(qdisc.TC_PLUG_RELEASE_ONE) # private def _sendqmsg(self, action): diff --git a/tools/python/xen/remus/qdisc.py b/tools/python/xen/remus/qdisc.py index e7d3b706a5..4d54e015c3 100644 --- a/tools/python/xen/remus/qdisc.py +++ b/tools/python/xen/remus/qdisc.py @@ -1,6 +1,9 @@ import socket, struct import netlink +import platform + +kernelversion = platform.platform(terse=True).split("-")[1].split(".") qdisc_kinds = {} @@ -146,13 +149,18 @@ class CfifoQdisc(Qdisc): qdisc_kinds['cfifo'] = CfifoQdisc -TC_PLUG_CHECKPOINT = 0 -TC_PLUG_RELEASE = 1 +TC_PLUG_BUFFER = 0 +TC_PLUG_RELEASE_ONE = 1 class PlugQdisc(Qdisc): - fmt = 'I' def __init__(self, qdict=None): + if int(kernelversion[0]) >= 3 and int(kernelversion[1]) >= 4: + self.fmt = 'iI' + self.limit = 10000 + else: + self.fmt = 'I' + if not qdict: qdict = {'kind': 'plug', 'handle': TC_H_ROOT} @@ -161,7 +169,10 @@ class PlugQdisc(Qdisc): self.action = 0 def pack(self): - return struct.pack(self.fmt, self.action) + if int(kernelversion[0]) >= 3 and int(kernelversion[1]) >= 4: + return struct.pack(self.fmt, self.action, self.limit) + else: + return struct.pack(self.fmt, self.action) def parse(self, args): if not args: @@ -169,9 +180,9 @@ class PlugQdisc(Qdisc): arg = args[0] if arg == 'checkpoint': - self.action = TC_PLUG_CHECKPOINT + self.action = TC_PLUG_BUFFER elif arg == 'release': - self.action = TC_PLUG_RELEASE + self.action = TC_PLUG_RELEASE_ONE else: raise QdiscException('unknown action') |