Version: 1
-Previous: f946271afad4d3d50a42f6325c6c6c2e34316759
-Head: f8bcd15243ff9e8f8464ab640aabc9f1e9d9c7f6
+Previous: 2b9c72ac6a71ee97e7e954ee3526f6a28d816c2a
+Head: 13a8d72b3561752c93542665692f2a1c22c564b5
Applied:
logging: 549692c49922dce3911d97dcc6d0a2fc583ab5f7
acm_snoop: dd5542fbaa1c5a92367d0552ef3525d5ea0a4638
nodelay: 90b41e985e1f478cda3e4821709cb2ed5e27ee7f
acme_dest: b7ec8fce4adac1b6e970529e41ff1c936f4be27b
show_err: 47d8e33e2f36df1e3b163fcf7e8b0b56604fb944
- mult_dest: 9780f2a4e828d158b7869e4e294e1422a0d54046
- refresh-temp: f8bcd15243ff9e8f8464ab640aabc9f1e9d9c7f6
+ mult_dest: 13a8d72b3561752c93542665692f2a1c22c564b5
Unapplied:
1.0.4: dc3f68d964641c9ffea14558d6a236c4216a89ae
Hidden:
Bottom: 32a7b8b2ffc23b410dc19c50a9bf68e149662635
-Top: 32a7b8b2ffc23b410dc19c50a9bf68e149662635
+Top: 8badc8cdc48b346f15c359b9df5fabc6da645bbd
Author: Sean Hefty <sean.hefty@intel.com>
Date: 2010-12-07 09:39:52 -0800
---
-
+diff --git a/man/ib_acme.1 b/man/ib_acme.1
+index 56c49f0..de212fb 100644
+--- a/man/ib_acme.1
++++ b/man/ib_acme.1
+@@ -31,6 +31,12 @@ the addr_format option.
+ Specifies the destination address of the path to resolve. The destination\r
+ address can be an IP address, system network name, or LID, as indicated by\r
+ the addr_format option.\r
++.P\r
++Multiple, numerical destinations can be specified by adding brackets [] to\r
++the end of a base destination name or address. Users may specify a list of\r
++numerical ranges inside the brackets using the following example as a\r
++guide: node[1-3,5,7-8]. This will result in testing node1, node2, node3,\r
++node5, node7, and node8. \r
+ .TP\r
+ \-v\r
+ Indicates that the resolved path information should be verified with the\r
+diff --git a/src/acme.c b/src/acme.c
+index 7e1ca5e..5ef05d3 100644
+--- a/src/acme.c
++++ b/src/acme.c
+@@ -60,6 +60,7 @@ struct ibv_context **verbs;
+ int dev_cnt;
+
+ extern int gen_addr_ip(FILE *f);
++extern char **parse(char *args, int *count);
+
+ #define VPRINT(format, ...) do { if (verbose) printf(format, ## __VA_ARGS__ ); } while (0)
+
+@@ -512,10 +513,11 @@ static int verify_resolve(struct ibv_path_record *path)
+ return ret;
+ }
+
+-static int resolve(char *program)
++static int resolve(char *program, char *dest_arg)
+ {
++ char *dest_list;
+ struct ibv_path_record path;
+- int ret;
++ int ret, i;
+
+ ret = libacm_init();
+ if (ret) {
+@@ -523,28 +525,37 @@ static int resolve(char *program)
+ return ret;
+ }
+
+- switch (addr_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;
+- default:
+- show_usage(program);
+- exit(1);
++ dest_list = parse(dest_arg, NULL);
++ if (!dest_list) {
++ printf("Unable to parse destination argument\n");
++ return -1;
+ }
+
+- if (!ret)
+- show_path(&path);
++ for (dest_addr = dest_list[i]; dest_addr; i++) {
++ switch (addr_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;
++ default:
++ show_usage(program);
++ exit(1);
++ }
+
+- if (verify)
+- ret = verify_resolve(&path);
++ if (!ret)
++ show_path(&path);
++
++ if (verify)
++ ret = verify_resolve(&path);
++ }
+
++ free(dest_list);
+ libacm_cleanup();
+ return ret;
+ }
+@@ -562,6 +573,7 @@ char *opt_arg(int argc, char **argv)
+
+ int CDECL_FUNC main(int argc, char **argv)
+ {
++ char *dest_arg;
+ int op, ret;
+
+ ret = osd_init();
+@@ -577,7 +589,7 @@ int CDECL_FUNC main(int argc, char **argv)
+ src_addr = optarg;
+ break;
+ case 'd':
+- dest_addr = optarg;
++ dest_arg = optarg;
+ break;
+ case 'v':
+ verify = 1;
+@@ -607,14 +619,14 @@ int CDECL_FUNC main(int argc, char **argv)
+ }
+ }
+
+- if ((src_addr && !dest_addr) ||
+- (!src_addr && !dest_addr && !make_addr && !make_opts)) {
++ if ((src_addr && !dest_arg) ||
++ (!src_addr && !dest_arg && !make_addr && !make_opts)) {
+ show_usage(argv[0]);
+ exit(1);
+ }
+
+- if (dest_addr)
+- ret = resolve(argv[0]);
++ if (dest_arg)
++ ret = resolve(argv[0], dest_arg);
+
+ if (!ret && make_addr)
+ ret = gen_addr();
+++ /dev/null
-Bottom: 32a7b8b2ffc23b410dc19c50a9bf68e149662635
-Top: 8badc8cdc48b346f15c359b9df5fabc6da645bbd
-Author: Sean Hefty <sean.hefty@intel.com>
-Date: 2010-12-07 10:50:36 -0800
-
-Refresh of mult_dest
-
----
-
-diff --git a/man/ib_acme.1 b/man/ib_acme.1
-index 56c49f0..de212fb 100644
---- a/man/ib_acme.1
-+++ b/man/ib_acme.1
-@@ -31,6 +31,12 @@ the addr_format option.
- Specifies the destination address of the path to resolve. The destination\r
- address can be an IP address, system network name, or LID, as indicated by\r
- the addr_format option.\r
-+.P\r
-+Multiple, numerical destinations can be specified by adding brackets [] to\r
-+the end of a base destination name or address. Users may specify a list of\r
-+numerical ranges inside the brackets using the following example as a\r
-+guide: node[1-3,5,7-8]. This will result in testing node1, node2, node3,\r
-+node5, node7, and node8. \r
- .TP\r
- \-v\r
- Indicates that the resolved path information should be verified with the\r
-diff --git a/src/acme.c b/src/acme.c
-index 7e1ca5e..5ef05d3 100644
---- a/src/acme.c
-+++ b/src/acme.c
-@@ -60,6 +60,7 @@ struct ibv_context **verbs;
- int dev_cnt;
-
- extern int gen_addr_ip(FILE *f);
-+extern char **parse(char *args, int *count);
-
- #define VPRINT(format, ...) do { if (verbose) printf(format, ## __VA_ARGS__ ); } while (0)
-
-@@ -512,10 +513,11 @@ static int verify_resolve(struct ibv_path_record *path)
- return ret;
- }
-
--static int resolve(char *program)
-+static int resolve(char *program, char *dest_arg)
- {
-+ char *dest_list;
- struct ibv_path_record path;
-- int ret;
-+ int ret, i;
-
- ret = libacm_init();
- if (ret) {
-@@ -523,28 +525,37 @@ static int resolve(char *program)
- return ret;
- }
-
-- switch (addr_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;
-- default:
-- show_usage(program);
-- exit(1);
-+ dest_list = parse(dest_arg, NULL);
-+ if (!dest_list) {
-+ printf("Unable to parse destination argument\n");
-+ return -1;
- }
-
-- if (!ret)
-- show_path(&path);
-+ for (dest_addr = dest_list[i]; dest_addr; i++) {
-+ switch (addr_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;
-+ default:
-+ show_usage(program);
-+ exit(1);
-+ }
-
-- if (verify)
-- ret = verify_resolve(&path);
-+ if (!ret)
-+ show_path(&path);
-+
-+ if (verify)
-+ ret = verify_resolve(&path);
-+ }
-
-+ free(dest_list);
- libacm_cleanup();
- return ret;
- }
-@@ -562,6 +573,7 @@ char *opt_arg(int argc, char **argv)
-
- int CDECL_FUNC main(int argc, char **argv)
- {
-+ char *dest_arg;
- int op, ret;
-
- ret = osd_init();
-@@ -577,7 +589,7 @@ int CDECL_FUNC main(int argc, char **argv)
- src_addr = optarg;
- break;
- case 'd':
-- dest_addr = optarg;
-+ dest_arg = optarg;
- break;
- case 'v':
- verify = 1;
-@@ -607,14 +619,14 @@ int CDECL_FUNC main(int argc, char **argv)
- }
- }
-
-- if ((src_addr && !dest_addr) ||
-- (!src_addr && !dest_addr && !make_addr && !make_opts)) {
-+ if ((src_addr && !dest_arg) ||
-+ (!src_addr && !dest_arg && !make_addr && !make_opts)) {
- show_usage(argv[0]);
- exit(1);
- }
-
-- if (dest_addr)
-- ret = resolve(argv[0]);
-+ if (dest_arg)
-+ ret = resolve(argv[0], dest_arg);
-
- if (!ret && make_addr)
- ret = gen_addr();