forked from osmocom/wireshark
USB MSC: Dissect subclass and protocol codes
Change-Id: I7a818a11352e437a9492f896557c3348abe33c95 Reviewed-on: https://code.wireshark.org/review/35668 Petri-Dish: Tomasz Moń <desowin@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
This commit is contained in:
parent
13703434da
commit
05d772ce7b
|
@ -52,7 +52,49 @@ static const value_string status_vals[] = {
|
|||
{0, NULL}
|
||||
};
|
||||
|
||||
#define MSC_SUBCLASS_SCSI_COMMAND_SET_NOT_REPORTED 0x00
|
||||
#define MSC_SUBCLASS_RBC 0x01
|
||||
#define MSC_SUBCLASS_MMC_5_ATAPI 0x02
|
||||
#define MSC_SUBCLASS_OBSOLETE_QIC_157 0x03
|
||||
#define MSC_SUBCLASS_UFI 0x04
|
||||
#define MSC_SUBCLASS_OBSOLETE_SFF_8070I 0x05
|
||||
#define MSC_SUBCLASS_SCSI_TRANSPARENT_COMMAND_SET 0x06
|
||||
#define MSC_SUBCLASS_LSD_FS 0x07
|
||||
#define MSC_SUBCLASS_IEEE_1667 0x08
|
||||
#define MSC_SUBCLASS_VENDOR 0xFF
|
||||
|
||||
static const value_string usb_massstorage_subclass_vals[] = {
|
||||
{MSC_SUBCLASS_SCSI_COMMAND_SET_NOT_REPORTED, "SCSI command set not reported"},
|
||||
{MSC_SUBCLASS_RBC, "RBC"},
|
||||
{MSC_SUBCLASS_MMC_5_ATAPI, "MMC-5 (ATAPI)"},
|
||||
{MSC_SUBCLASS_OBSOLETE_QIC_157, "Obsolete (was QIC-157)"},
|
||||
{MSC_SUBCLASS_UFI, "UFI"},
|
||||
{MSC_SUBCLASS_OBSOLETE_SFF_8070I, "Obsolete (was SFF-8070i)"},
|
||||
{MSC_SUBCLASS_SCSI_TRANSPARENT_COMMAND_SET, "SCSI transparent command set"},
|
||||
{MSC_SUBCLASS_LSD_FS, "LSD FS"},
|
||||
{MSC_SUBCLASS_IEEE_1667, "IEEE 1667"},
|
||||
{MSC_SUBCLASS_VENDOR, "Specific to device vendor"},
|
||||
{0, NULL}
|
||||
};
|
||||
value_string_ext ext_usb_massstorage_subclass_vals = VALUE_STRING_EXT_INIT(usb_massstorage_subclass_vals);
|
||||
|
||||
#define MSC_PROTOCOL_CBI_NO_INTERRUPT 0x00
|
||||
#define MSC_PROTOCOL_CBI_WITH_INTERRUPT 0x01
|
||||
#define MSC_PROTOCOL_OBSOLETE 0x02
|
||||
#define MSC_PROTOCOL_BULK_ONLY 0x50
|
||||
#define MSC_PROTOCOL_UAS 0x62
|
||||
#define MSC_PROTOCOL_VENDOR 0xFF
|
||||
|
||||
static const value_string usb_massstorage_protocol_vals[] = {
|
||||
{MSC_PROTOCOL_CBI_NO_INTERRUPT, "Control/Bulk/Interrupt (CBI) Transport with command completion interrupt"},
|
||||
{MSC_PROTOCOL_CBI_WITH_INTERRUPT, "Control/Bulk/Interrupt (CBI) Transport with no command completion interrupt"},
|
||||
{MSC_PROTOCOL_OBSOLETE, "Obsolete"},
|
||||
{MSC_PROTOCOL_BULK_ONLY, "Bulk-Only (BBB) Transport"},
|
||||
{MSC_PROTOCOL_UAS, "UAS"},
|
||||
{MSC_PROTOCOL_VENDOR, "Specific to device vendor"},
|
||||
{0, NULL}
|
||||
};
|
||||
value_string_ext usb_massstorage_protocol_vals_ext = VALUE_STRING_EXT_INIT(usb_massstorage_protocol_vals);
|
||||
|
||||
|
||||
static void
|
||||
|
|
|
@ -220,11 +220,13 @@ static int hf_usb_bInterfaceClass = -1;
|
|||
static int hf_usb_bInterfaceSubClass = -1;
|
||||
static int hf_usb_bInterfaceSubClass_audio = -1;
|
||||
static int hf_usb_bInterfaceSubClass_cdc = -1;
|
||||
static int hf_usb_bInterfaceSubClass_massstorage = -1;
|
||||
static int hf_usb_bInterfaceSubClass_hid = -1;
|
||||
static int hf_usb_bInterfaceSubClass_misc = -1;
|
||||
static int hf_usb_bInterfaceSubClass_app = -1;
|
||||
static int hf_usb_bInterfaceProtocol = -1;
|
||||
static int hf_usb_bInterfaceProtocol_cdc = -1;
|
||||
static int hf_usb_bInterfaceProtocol_massstorage = -1;
|
||||
static int hf_usb_bInterfaceProtocol_cdc_data = -1;
|
||||
static int hf_usb_bInterfaceProtocol_hid_boot = -1;
|
||||
static int hf_usb_bInterfaceProtocol_app_dfu = -1;
|
||||
|
@ -877,6 +879,7 @@ extern value_string_ext ext_usb_vendors_vals;
|
|||
extern value_string_ext ext_usb_products_vals;
|
||||
extern value_string_ext ext_usb_audio_subclass_vals;
|
||||
extern value_string_ext ext_usb_com_subclass_vals;
|
||||
extern value_string_ext ext_usb_massstorage_subclass_vals;
|
||||
extern value_string_ext linux_negative_errno_vals_ext;
|
||||
|
||||
/*
|
||||
|
@ -1199,6 +1202,8 @@ static const value_string usb_cdc_protocol_vals[] = {
|
|||
};
|
||||
static value_string_ext usb_cdc_protocol_vals_ext = VALUE_STRING_EXT_INIT(usb_cdc_protocol_vals);
|
||||
|
||||
extern value_string_ext usb_massstorage_protocol_vals_ext;
|
||||
|
||||
static const value_string usb_cdc_data_protocol_vals[] = {
|
||||
{0x00, "No class specific protocol required"},
|
||||
{0x01, "Network Transfer Block"},
|
||||
|
@ -2336,6 +2341,9 @@ dissect_usb_interface_descriptor(packet_info *pinfo, proto_tree *parent_tree,
|
|||
case IF_CLASS_COMMUNICATIONS:
|
||||
proto_tree_add_item(tree, hf_usb_bInterfaceSubClass_cdc, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
break;
|
||||
case IF_CLASS_MASS_STORAGE:
|
||||
proto_tree_add_item(tree, hf_usb_bInterfaceSubClass_massstorage, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
break;
|
||||
case IF_CLASS_HID:
|
||||
proto_tree_add_item(tree, hf_usb_bInterfaceSubClass_hid, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
break;
|
||||
|
@ -2358,6 +2366,9 @@ dissect_usb_interface_descriptor(packet_info *pinfo, proto_tree *parent_tree,
|
|||
case IF_CLASS_COMMUNICATIONS:
|
||||
proto_tree_add_item(tree, hf_usb_bInterfaceProtocol_cdc, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
break;
|
||||
case IF_CLASS_MASS_STORAGE:
|
||||
proto_tree_add_item(tree, hf_usb_bInterfaceProtocol_massstorage, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
break;
|
||||
case IF_CLASS_CDC_DATA:
|
||||
proto_tree_add_item(tree, hf_usb_bInterfaceProtocol_cdc_data, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
break;
|
||||
|
@ -6157,6 +6168,11 @@ proto_register_usb(void)
|
|||
FT_UINT8, BASE_HEX | BASE_EXT_STRING, &ext_usb_com_subclass_vals, 0x0,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_usb_bInterfaceSubClass_massstorage ,
|
||||
{ "bInterfaceSubClass", "usb.bInterfaceSubClass",
|
||||
FT_UINT8, BASE_HEX | BASE_EXT_STRING, &ext_usb_massstorage_subclass_vals, 0x0,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_usb_bInterfaceSubClass_hid,
|
||||
{ "bInterfaceSubClass", "usb.bInterfaceSubClass",
|
||||
FT_UINT8, BASE_HEX | BASE_EXT_STRING, &usb_hid_subclass_vals_ext, 0x0,
|
||||
|
@ -6182,6 +6198,11 @@ proto_register_usb(void)
|
|||
FT_UINT8, BASE_HEX | BASE_EXT_STRING, &usb_cdc_protocol_vals_ext, 0x0,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_usb_bInterfaceProtocol_massstorage,
|
||||
{ "bInterfaceProtocol", "usb.bInterfaceProtocol",
|
||||
FT_UINT8, BASE_HEX | BASE_EXT_STRING, &usb_massstorage_protocol_vals_ext, 0x0,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_usb_bInterfaceProtocol_cdc_data,
|
||||
{ "bInterfaceProtocol", "usb.bInterfaceProtocol",
|
||||
FT_UINT8, BASE_HEX | BASE_EXT_STRING, &usb_cdc_data_protocol_vals_ext, 0x0,
|
||||
|
|
Loading…
Reference in New Issue