diff options
| author | acoul <acoul@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2011-01-03 16:37:07 +0000 | 
|---|---|---|
| committer | acoul <acoul@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2011-01-03 16:37:07 +0000 | 
| commit | 441ac131a24f5fcee50a56d1477b880d92b69ca5 (patch) | |
| tree | c00aae20e0d63f58e70b160ff466f1db4adbe010 | |
| parent | 25b18586e6f81b5c9ea99a8961a0f65e3e736ea6 (diff) | |
package/wprobe: {enhancement} make printing attributes optional. A delay interval (-d option) of 0 (zero) dumps the data once then exit. (closes #8107)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@24892 3c298f89-4303-0410-b956-a3cf2f4a3e73
| -rw-r--r-- | package/wprobe/src/user/wprobe-util.c | 27 | 
1 files changed, 18 insertions, 9 deletions
| diff --git a/package/wprobe/src/user/wprobe-util.c b/package/wprobe/src/user/wprobe-util.c index 6a9868ed0..654442f9c 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 <interface>|<host>:<device>|-P [options]\n"  #else  		"Usage: %s <host>:<device> [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 <file>:     Apply layer 2 filters from <file>\n"  		"  -h:            This help text\n"  		"  -i <interval>: 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); | 
