diff options
Diffstat (limited to 'usr/src/cmd/flowstat/flowstat.c')
| -rw-r--r-- | usr/src/cmd/flowstat/flowstat.c | 21 | 
1 files changed, 15 insertions, 6 deletions
| diff --git a/usr/src/cmd/flowstat/flowstat.c b/usr/src/cmd/flowstat/flowstat.c index 3ddff9e34f..781ce6b0f0 100644 --- a/usr/src/cmd/flowstat/flowstat.c +++ b/usr/src/cmd/flowstat/flowstat.c @@ -21,6 +21,7 @@  /*   * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms. + * Copyright 2011 Joyent, Inc.  All rights reserved.   */  #include <stdio.h> @@ -190,9 +191,9 @@ static char *progname;  static dladm_handle_t handle = NULL;  const char *usage_ermsg = "flowstat [-r | -t] [-i interval] " -	    "[-l link] [flow]\n" +	    "[-l link] [-z zonename] [flow]\n"  	    "       flowstat [-S] [-A] [-i interval] [-p] [ -o field[,...]]\n" -	    "                [-u R|K|M|G|T|P] [-l link] [flow]\n" +	    "                [-u R|K|M|G|T|P] [-l link] [-z zonename] [flow]\n"  	    "       flowstat -h [-a] [-d] [-F format]"  	    " [-s <DD/MM/YYYY,HH:MM:SS>]\n"  	    "                [-e <DD/MM/YYYY,HH:MM:SS>] -f <logfile> " @@ -556,6 +557,7 @@ main(int argc, char *argv[])  	show_flow_state_t	state;  	char			*fields_str = NULL;  	char			*o_fields_str = NULL; +	char			*zonename = NULL;  	char			*total_stat_fields =  	    "flow,ipkts,rbytes,ierrs,opkts,obytes,oerrs"; @@ -582,10 +584,11 @@ main(int argc, char *argv[])  	if ((status = dladm_open(&handle)) != DLADM_STATUS_OK)  		die_dlerr(status, "could not open /dev/dld"); +	linkname[0] = '\0';  	bzero(&state, sizeof (state));  	opterr = 0; -	while ((option = getopt_long(argc, argv, ":rtApSi:o:u:l:h", +	while ((option = getopt_long(argc, argv, ":rtApSi:o:u:l:hz:",  	    NULL, NULL)) != -1) {  		switch (option) {  		case 'r': @@ -642,9 +645,6 @@ main(int argc, char *argv[])  			if (strlcpy(linkname, optarg, MAXLINKNAMELEN)  			    >= MAXLINKNAMELEN)  				die("link name too long\n"); -			if (dladm_name2info(handle, linkname, &linkid, NULL, -			    NULL, NULL) != DLADM_STATUS_OK) -				die("invalid link '%s'", linkname);  			break;  		case 'h':  			if (r_arg || t_arg || p_arg || o_arg || u_arg || @@ -655,6 +655,9 @@ main(int argc, char *argv[])  			do_show_history(argc, argv);  			return (0);  			break; +		case 'z': +			zonename = optarg; +			break;  		default:  			die_opterr(optopt, option, usage_ermsg);  			break; @@ -683,6 +686,12 @@ main(int argc, char *argv[])  		die("the option -A is not compatible with "  		    "-r, -t, -p, -o, -u, -i"); +	if (linkname[0] != '\0') { +		if (dladm_zname2info(handle, zonename, linkname, &linkid, NULL, +		    NULL, NULL) != DLADM_STATUS_OK) +			die("invalid link '%s'", linkname); +	} +  	/* get flow name (optional last argument) */  	if (optind == (argc-1)) {  		if (strlcpy(flowname, argv[optind], MAXFLOWNAMELEN) | 
