From 14fff45ddd5093d29589fdde356a42be2ed8ddd6 Mon Sep 17 00:00:00 2001 From: Alexandre Bezroutchko Date: Fri, 26 Oct 2012 23:09:36 +0200 Subject: [PATCH] dom0+vm/usb: add USB version to device list displayed by qvm-usb -l' --- dom0/qvm-core/qubesutils.py | 9 ++++++++- dom0/qvm-tools/qvm-usb | 2 +- misc/usb_add_change | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/dom0/qvm-core/qubesutils.py b/dom0/qvm-core/qubesutils.py index dc8c26da..f659633e 100644 --- a/dom0/qvm-core/qubesutils.py +++ b/dom0/qvm-core/qubesutils.py @@ -466,6 +466,7 @@ def usb_list(): device_re = re.compile(r"^[0-9]+-[0-9]+(_[0-9]+)?$") # FIXME: any better idea of desc_re? desc_re = re.compile(r"^.{1,255}$") + usb_ver_re = re.compile(r"^(1|2)$") devices_list = {} @@ -489,9 +490,15 @@ def usb_list(): # xenstore doesn't allow dot in key names - was translated to underscore device = device.replace('_', '.') visible_name = "%s:%s" % (vm_name, device) + # grab version + usb_ver = xs.read(xs_trans, '/local/domain/%s/qubes-usb-devices/%s/usb-ver' % (xid, device)) + if usb_ver is None or not usb_ver_re.match(usb_ver): + print >> sys.stderr, "Invalid %s device USB version in VM '%s'" % (device, vm_name) + continue devices_list[visible_name] = {"name": visible_name, "xid":int(xid), "vm": vm_name, "device":device, - "desc":device_desc} + "desc":device_desc, + "usb_ver":usb_ver} xs.transaction_end(xs_trans) return devices_list diff --git a/dom0/qvm-tools/qvm-usb b/dom0/qvm-tools/qvm-usb index 8b041b19..7b062a67 100755 --- a/dom0/qvm-tools/qvm-usb +++ b/dom0/qvm-tools/qvm-usb @@ -131,7 +131,7 @@ def main(): attached_to_str = "" if attached_to: attached_to_str = " (attached to %s:%s)" % (attached_to['vm'], attached_to['frontend']) - print "%s\t%s%s" % (dev['name'], dev['desc'], attached_to_str) + print "%s\t%s%s (USBv%s)" % (dev['name'], dev['desc'], attached_to_str, dev['usb_ver']) exit (0) main() diff --git a/misc/usb_add_change b/misc/usb_add_change index be756733..24dd2ac5 100755 --- a/misc/usb_add_change +++ b/misc/usb_add_change @@ -35,7 +35,7 @@ fi XS_KEY="qubes-usb-devices/$XSNAME" xenstore-write "$XS_KEY/desc" "$DESC" -xenstore-write "$XS_KEY/version" "$VERSION" +xenstore-write "$XS_KEY/usb-ver" "$VERSION" # Make sure PVUSB backend driver is loaded. /sbin/modprobe xen-usbback 2> /dev/null || /sbin/modprobe usbbk