-
Notifications
You must be signed in to change notification settings - Fork 81
Open
Description
Hi!
I noticed that when I create filter using usbfilter
command the --product
flag is ignored.
For example, this command:
VBoxManage.exe usbfilter add 0 --target "otus-astra-docker_default_1624884966310_75575" --name "Aktiv Rutoken ECP [0100]" --product "Rutoken ECP" --revision "0100" --productid "0030" --vendorid "0a89" --manufacturer "Aktiv"
creates this filter:
Index: 0
Active: yes
Name: Any Rutoken ECP
VendorId: 0a89
ProductId: 0030
Revision: 0100
Manufacturer: Aktiv
Product:
Remote:
Serial Number:
I thik that the cause of this because you are forgot to set product field here.
vbox/src/VBox/Frontends/VBoxManage/VBoxManageUSB.cpp
Lines 404 to 516 in b9657cd
switch (cmd.mAction) | |
{ | |
case USBFilterCmd::Add: | |
{ | |
if (cmd.mGlobal) | |
{ | |
ComPtr<IHostUSBDeviceFilter> flt; | |
CHECK_ERROR_BREAK(host, CreateUSBDeviceFilter(f.mName.raw(), | |
flt.asOutParam())); | |
if (!f.mActive.isNull()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(Active)(f.mActive)); | |
if (!f.mVendorId.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(VendorId)(f.mVendorId.raw())); | |
if (!f.mProductId.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(ProductId)(f.mProductId.raw())); | |
if (!f.mRevision.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(Revision)(f.mRevision.raw())); | |
if (!f.mManufacturer.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(Manufacturer)(f.mManufacturer.raw())); | |
if (!f.mSerialNumber.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(SerialNumber)(f.mSerialNumber.raw())); | |
if (!f.mMaskedInterfaces.isNull()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(MaskedInterfaces)(f.mMaskedInterfaces)); | |
if (f.mAction != USBDeviceFilterAction_Null) | |
CHECK_ERROR_BREAK(flt, COMSETTER(Action)(f.mAction)); | |
CHECK_ERROR_BREAK(host, InsertUSBDeviceFilter(cmd.mIndex, flt)); | |
} | |
else | |
{ | |
ComPtr<IUSBDeviceFilter> flt; | |
CHECK_ERROR_BREAK(flts, CreateDeviceFilter(f.mName.raw(), | |
flt.asOutParam())); | |
if (!f.mActive.isNull()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(Active)(f.mActive)); | |
if (!f.mVendorId.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(VendorId)(f.mVendorId.raw())); | |
if (!f.mProductId.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(ProductId)(f.mProductId.raw())); | |
if (!f.mRevision.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(Revision)(f.mRevision.raw())); | |
if (!f.mManufacturer.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(Manufacturer)(f.mManufacturer.raw())); | |
if (!f.mRemote.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(Remote)(f.mRemote.raw())); | |
if (!f.mSerialNumber.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(SerialNumber)(f.mSerialNumber.raw())); | |
if (!f.mMaskedInterfaces.isNull()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(MaskedInterfaces)(f.mMaskedInterfaces)); | |
CHECK_ERROR_BREAK(flts, InsertDeviceFilter(cmd.mIndex, flt)); | |
} | |
break; | |
} | |
case USBFilterCmd::Modify: | |
{ | |
if (cmd.mGlobal) | |
{ | |
SafeIfaceArray <IHostUSBDeviceFilter> coll; | |
CHECK_ERROR_BREAK(host, COMGETTER(USBDeviceFilters)(ComSafeArrayAsOutParam(coll))); | |
ComPtr<IHostUSBDeviceFilter> flt = coll[cmd.mIndex]; | |
if (!f.mName.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(Name)(f.mName.raw())); | |
if (!f.mActive.isNull()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(Active)(f.mActive)); | |
if (!f.mVendorId.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(VendorId)(f.mVendorId.raw())); | |
if (!f.mProductId.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(ProductId)(f.mProductId.raw())); | |
if (!f.mRevision.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(Revision)(f.mRevision.raw())); | |
if (!f.mManufacturer.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(Manufacturer)(f.mManufacturer.raw())); | |
if (!f.mSerialNumber.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(SerialNumber)(f.mSerialNumber.raw())); | |
if (!f.mMaskedInterfaces.isNull()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(MaskedInterfaces)(f.mMaskedInterfaces)); | |
if (f.mAction != USBDeviceFilterAction_Null) | |
CHECK_ERROR_BREAK(flt, COMSETTER(Action)(f.mAction)); | |
} | |
else | |
{ | |
SafeIfaceArray <IUSBDeviceFilter> coll; | |
CHECK_ERROR_BREAK(flts, COMGETTER(DeviceFilters)(ComSafeArrayAsOutParam(coll))); | |
ComPtr<IUSBDeviceFilter> flt = coll[cmd.mIndex]; | |
if (!f.mName.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(Name)(f.mName.raw())); | |
if (!f.mActive.isNull()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(Active)(f.mActive)); | |
if (!f.mVendorId.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(VendorId)(f.mVendorId.raw())); | |
if (!f.mProductId.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(ProductId)(f.mProductId.raw())); | |
if (!f.mRevision.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(Revision)(f.mRevision.raw())); | |
if (!f.mManufacturer.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(Manufacturer)(f.mManufacturer.raw())); | |
if (!f.mRemote.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(Remote)(f.mRemote.raw())); | |
if (!f.mSerialNumber.isEmpty()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(SerialNumber)(f.mSerialNumber.raw())); | |
if (!f.mMaskedInterfaces.isNull()) | |
CHECK_ERROR_BREAK(flt, COMSETTER(MaskedInterfaces)(f.mMaskedInterfaces)); | |
} | |
break; |
Metadata
Metadata
Assignees
Labels
No labels