From 35d98b26e90e7ff5f417a36cbdb1f04b31c1826f Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sun, 22 Sep 2019 01:56:16 +0200 Subject: Add -C to omit control ack without data --- usbdump.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/usbdump.c b/usbdump.c index 4f9d1bd..8e002cf 100644 --- a/usbdump.c +++ b/usbdump.c @@ -42,6 +42,7 @@ int opt_unique_num = 0; int opt_data_limit = -1; int opt_control_only = 0; +int opt_no_control_ack = 0; int opt_ts_diff = 0; int64_t start_ts = 0; @@ -96,6 +97,10 @@ void process_packet(struct usbmon_packet *hdr, char *data) /* ack to a write packet */ return; } + } else { + if (opt_no_control_ack && hdr->type == 'C' && hdr->len_cap == 0) + /* ack with no data */ + return; } if (!start_ts && !start_ts_us) { @@ -311,7 +316,7 @@ void usage(void) { printf("usbdump Copyright (C) 2011 Bert Vermeulen \n"); - printf("usage: usbdump -d [-u ] [-l ] [-c] [-t]\n"); + printf("usage: usbdump -d [-u ] [-l ] [-c] [-C] [-t]\n"); } @@ -321,7 +326,7 @@ int main(int argc, char **argv) char *device, *entry; device = NULL; - while ((opt = getopt(argc, argv, "d:u:l:ct")) != -1) { + while ((opt = getopt(argc, argv, "d:u:l:cCt")) != -1) { switch (opt) { case 'd': if (strlen(optarg) != 9 || strspn(optarg, "01234567890abcdef:") != 9) @@ -338,6 +343,9 @@ int main(int argc, char **argv) case 'c': opt_control_only = 1; break; + case 'C': + opt_no_control_ack = 1; + break; case 't': opt_ts_diff = 1; break; -- cgit v1.2.3