Bottom: c1a3265ecb373be6114f838a6a7b82453aafd16e
-Top: 70fb93d64e9ecf38abaca2ab5496df0a03517a96
+Top: 18f2719edc4036be333ec659de94958283145b33
Author: Sean Hefty <sean.hefty@intel.com>
Date: 2011-06-27 10:29:36 -0700
if (acm_open_devices()) {
acm_log(0, "ERROR - unable to open any devices\n");
diff --git a/src/acme.c b/src/acme.c
-index d42ba81..3030991 100644
+index d42ba81..9bb6791 100644
--- a/src/acme.c
+++ b/src/acme.c
@@ -49,11 +49,13 @@ static char *opts_file = ACM_OPTS_FILE;
printf(" -A [addr_file] - generate local address configuration file\n");
printf(" (default is %s)\n", ACM_ADDR_FILE);
printf(" -O [opt_file] - generate local acm_opts.cfg options file\n");
-@@ -580,25 +586,24 @@ static char *get_dest(char *arg, char *format)
+@@ -580,58 +586,118 @@ static char *get_dest(char *arg, char *format)
}
}
- char **dest_list;
+ char **dest_list, **src_list;
struct ibv_path_record path;
- int ret, i = 0;
+- int ret, i = 0;
++ int ret, d = 0, s = 0;
char dest_type;
- ret = libacm_init();
dest_list = parse(dest_arg, NULL);
if (!dest_list) {
printf("Unable to parse destination argument\n");
-- return -1;
+ return;
- }
-
++ }
++
+ if (src_arg) {
+ src_list = parse(src_arg, NULL);
+ }
+
+ printf("Service: %s\n", svc);
- for (dest_addr = get_dest(dest_list[i], &dest_type); dest_addr;
- dest_addr = get_dest(dest_list[++i], &dest_type)) {
- printf("Destination: %s\n", dest_addr);
-@@ -618,8 +623,7 @@ static int resolve(char *program, char *dest_arg)
- ret = resolve_gid(&path);
- break;
- default:
-- show_usage(program);
-- exit(1);
-+ break;
- }
-
- if (!ret)
-@@ -631,7 +635,62 @@ static int resolve(char *program, char *dest_arg)
- }
-
- free(dest_list);
-- libacm_cleanup();
++ for (dest_addr = get_dest(dest_list[d], &dest_type); dest_addr;
++ dest_addr = get_dest(dest_list[++d], &dest_type)) {
++ s = 0;
++ src_addr = src_list ? src_list[s] : NULL;
++ do {
++ printf("Destination: %s\n", dest_addr);
++ switch (dest_type) {
++ case 'i':
++ ret = resolve_ip(&path);
++ break;
++ case 'n':
++ ret = resolve_name(&path);
++ break;
++ case 'l':
++ memset(&path, 0, sizeof path);
++ ret = resolve_lid(&path);
++ break;
++ case 'g':
++ memset(&path, 0, sizeof path);
++ ret = resolve_gid(&path);
++ break;
++ default:
++ break;
++ }
++
++ if (!ret)
++ show_path(&path);
++
++ if (verify)
++ ret = verify_resolve(&path);
++ printf("\n");
++
++ if (src_list)
++ src_addr = src_list[++s];
++ } while (src_addr);
++ }
++
++ free(dest_list);
+ return ret;
+}
+
+ svc_list = parse(svc_arg, NULL);
+ if (!svc_list) {
+ printf("Unable to parse service list argument\n");
-+ return -1;
-+ }
-+
+ return -1;
+ }
+
+- for (dest_addr = get_dest(dest_list[i], &dest_type); dest_addr;
+- dest_addr = get_dest(dest_list[++i], &dest_type)) {
+- printf("Destination: %s\n", dest_addr);
+- switch (dest_type) {
+- case 'i':
+- ret = resolve_ip(&path);
+- break;
+- case 'n':
+- ret = resolve_name(&path);
+- break;
+- case 'l':
+- memset(&path, 0, sizeof path);
+- ret = resolve_lid(&path);
+- break;
+- case 'g':
+- memset(&path, 0, sizeof path);
+- ret = resolve_gid(&path);
+- break;
+- default:
+- show_usage(program);
+- exit(1);
+ if (perf_query) {
+ printf("Destination,Error Count,Resolve Count,No Data,Addr Query Count,"
+ "Addr Cache Count,Route Query Count,Route Cache Count\n");
+ ret = resolve(svc_list[i]);
+ if (ret)
+ break;
-+ }
-+
+ }
+
+- if (!ret)
+- show_path(&path);
+ if (perf_query)
+ query_perf(svc_list[i]);
-+
+
+- if (verify)
+- ret = verify_resolve(&path);
+- printf("\n");
+ ib_acm_disconnect();
-+ }
-+
+ }
+
+- free(dest_list);
+- libacm_cleanup();
+ free(svc_list);
return ret;
}
-@@ -648,20 +707,24 @@ char *opt_arg(int argc, char **argv)
+@@ -648,20 +714,24 @@ char *opt_arg(int argc, char **argv)
int CDECL_FUNC main(int argc, char **argv)
{
break;
case 'd':
dest_arg = optarg;
-@@ -685,23 +748,26 @@ int CDECL_FUNC main(int argc, char **argv)
+@@ -685,23 +755,26 @@ int CDECL_FUNC main(int argc, char **argv)
case 'D':
dest_dir = optarg;
break;
if (!ret && make_addr)
ret = gen_addr();
-@@ -709,8 +775,13 @@ int CDECL_FUNC main(int argc, char **argv)
+@@ -709,8 +782,13 @@ int CDECL_FUNC main(int argc, char **argv)
if (!ret && make_opts)
ret = gen_opts();
+++ /dev/null
-Bottom: 70fb93d64e9ecf38abaca2ab5496df0a03517a96
-Top: 18f2719edc4036be333ec659de94958283145b33
-Author: Sean Hefty <sean.hefty@intel.com>
-Date: 2011-06-30 17:04:46 -0700
-
-Refresh of counters
-
----
-
-diff --git a/src/acme.c b/src/acme.c
-index 3030991..9bb6791 100644
---- a/src/acme.c
-+++ b/src/acme.c
-@@ -590,7 +590,7 @@ static int resolve(char *svc)
- {
- char **dest_list, **src_list;
- struct ibv_path_record path;
-- int ret, i = 0;
-+ int ret, d = 0, s = 0;
- char dest_type;
-
- dest_list = parse(dest_arg, NULL);
-@@ -604,34 +604,41 @@ static int resolve(char *svc)
- }
-
- printf("Service: %s\n", svc);
-- for (dest_addr = get_dest(dest_list[i], &dest_type); dest_addr;
-- dest_addr = get_dest(dest_list[++i], &dest_type)) {
-- printf("Destination: %s\n", dest_addr);
-- switch (dest_type) {
-- case 'i':
-- ret = resolve_ip(&path);
-- break;
-- case 'n':
-- ret = resolve_name(&path);
-- break;
-- case 'l':
-- memset(&path, 0, sizeof path);
-- ret = resolve_lid(&path);
-- break;
-- case 'g':
-- memset(&path, 0, sizeof path);
-- ret = resolve_gid(&path);
-- break;
-- default:
-- break;
-- }
-+ for (dest_addr = get_dest(dest_list[d], &dest_type); dest_addr;
-+ dest_addr = get_dest(dest_list[++d], &dest_type)) {
-+ s = 0;
-+ src_addr = src_list ? src_list[s] : NULL;
-+ do {
-+ printf("Destination: %s\n", dest_addr);
-+ switch (dest_type) {
-+ case 'i':
-+ ret = resolve_ip(&path);
-+ break;
-+ case 'n':
-+ ret = resolve_name(&path);
-+ break;
-+ case 'l':
-+ memset(&path, 0, sizeof path);
-+ ret = resolve_lid(&path);
-+ break;
-+ case 'g':
-+ memset(&path, 0, sizeof path);
-+ ret = resolve_gid(&path);
-+ break;
-+ default:
-+ break;
-+ }
-+
-+ if (!ret)
-+ show_path(&path);
-
-- if (!ret)
-- show_path(&path);
-+ if (verify)
-+ ret = verify_resolve(&path);
-+ printf("\n");
-
-- if (verify)
-- ret = verify_resolve(&path);
-- printf("\n");
-+ if (src_list)
-+ src_addr = src_list[++s];
-+ } while (src_addr);
- }
-
- free(dest_list);