diff --git a/package/wprobe/src/user/wprobe-util.c b/package/wprobe/src/user/wprobe-util.c index 6a9868ed0b..654442f9cf 100644 --- a/package/wprobe/src/user/wprobe-util.c +++ b/package/wprobe/src/user/wprobe-util.c @@ -106,7 +106,7 @@ wprobe_dump_data(struct wprobe_iface *dev) list_for_each_entry(attr, &dev->link_attr, list) { if (first) { fprintf(stdout, - (simple_mode ? + (simple_mode ? "[%02x:%02x:%02x:%02x:%02x:%02x]\n%s=%s\n" : "%02x:%02x:%02x:%02x:%02x:%02x: %s=%s\n"), link->addr[0], link->addr[1], link->addr[2], @@ -142,22 +142,24 @@ static const char *attr_typestr[] = { static int usage(const char *prog) { fprintf(stderr, -#ifndef NO_LOCAL_ACCESS +#ifndef NO_LOCAL_ACCESS "Usage: %s |:|-P [options]\n" #else "Usage: %s : [options]\n" #endif "\n" "Options:\n" + " -a: Print attributes\n" " -c: Only apply configuration\n" " -d: Delay between measurement dumps (in milliseconds, default: 1000)\n" + " A value of 0 (zero) prints once and exits; useful for scripts\n" " -f: Dump contents of layer 2 filter counters during measurement\n" " -F : Apply layer 2 filters from \n" " -h: This help text\n" " -i : Set measurement interval\n" " -m: Run measurement loop\n" " -p: Set the TCP port for server/client (default: 17990)\n" -#ifndef NO_LOCAL_ACCESS +#ifndef NO_LOCAL_ACCESS " -P: Run in proxy mode (listen on network)\n" #endif "\n" @@ -205,13 +207,14 @@ static void show_filter(void *arg, const char *group, struct wprobe_filter_item static void loop_measurement(struct wprobe_iface *dev, bool print_filters, unsigned long delay) { - while (1) { - usleep(delay * 1000); + do { wprobe_update_links(dev); wprobe_dump_data(dev); if (print_filters) wprobe_dump_filters(dev, simple_mode ? show_filter_simple : show_filter, NULL); + usleep(delay * 1000); } + while (delay); } static void set_filter(struct wprobe_iface *dev, const char *filename) @@ -342,6 +345,7 @@ int main(int argc, char **argv) CMD_PROXY, } cmd = CMD_NONE; const char *filter = NULL; + bool print_attributes = false; bool print_filters = false; unsigned long delay = 1000; int interval = -1; @@ -350,7 +354,7 @@ int main(int argc, char **argv) if (argc < 2) return usage(prog); -#ifndef NO_LOCAL_ACCESS +#ifndef NO_LOCAL_ACCESS if (!strcmp(argv[1], "-P")) { while ((ch = getopt(argc - 1, argv + 1, "p:")) != -1) { switch(ch) { @@ -373,8 +377,11 @@ int main(int argc, char **argv) argv++; argc--; - while ((ch = getopt(argc, argv, "cd:fF:hi:msp:")) != -1) { + while ((ch = getopt(argc, argv, "acd:fF:hi:msp:")) != -1) { switch(ch) { + case 'a': + print_attributes = true; + break; case 'c': cmd = CMD_CONFIG; break; @@ -430,8 +437,10 @@ int main(int argc, char **argv) wprobe_apply_config(dev); } - if (cmd != CMD_CONFIG) - show_attributes(dev); + if (cmd != CMD_CONFIG) { + if (print_attributes) + show_attributes(dev); + } if (cmd == CMD_MEASURE) loop_measurement(dev, print_filters, delay);