Diags/smpquery: Add support for DrSLID

Signed-off-by: Hal Rosenstock <[EMAIL PROTECTED]>

---

Index: src/smpquery.c
===================================================================
--- src/smpquery.c      (revision 9776)
+++ src/smpquery.c      (working copy)
@@ -376,7 +376,8 @@ usage(void)
        fprintf(stderr, "\n\texamples:\n");
        fprintf(stderr, "\t\t%s portinfo 3 1\t\t\t\t# portinfo by lid, with 
port modifier\n", basename);
        fprintf(stderr, "\t\t%s -G switchinfo 0x2C9000100D051 1\t# switchinfo 
by guid\n", basename);
-       fprintf(stderr, "\t\t%s -D nodeinfo 0\t\t\t# nodeinfo by direct 
route\n", basename);
+       fprintf(stderr, "\t\t%s -D nodeinfo 0\t\t\t\t# nodeinfo by direct 
route\n", basename);
+       fprintf(stderr, "\t\t%s -c nodeinfo 6 0,12\t\t\t# nodeinfo by combined 
route\n", basename);
        exit(-1);
 }
 
@@ -393,7 +394,7 @@ main(int argc, char **argv)
        char *err;
        op_fn_t *fn;
 
-       static char const str_opts[] = "C:P:t:s:devDGVhu";
+       static char const str_opts[] = "C:P:t:s:devDcGVhu";
        static const struct option long_opts[] = {
                { "C", 1, 0, 'C'},
                { "P", 1, 0, 'P'},
@@ -401,6 +402,7 @@ main(int argc, char **argv)
                { "err_show", 0, 0, 'e'},
                { "verbose", 0, 0, 'v'},
                { "Direct", 0, 0, 'D'},
+               { "combined", 0, 0, 'c'},
                { "Guid", 0, 0, 'G'},
                { "smlid", 1, 0, 's'},
                { "timeout", 1, 0, 't'},
@@ -429,6 +431,9 @@ main(int argc, char **argv)
                case 'D':
                        dest_type = IB_DEST_DRPATH;
                        break;
+               case 'c':
+                       dest_type = IB_DEST_DRSLID;
+                       break;
                case 'G':
                        dest_type = IB_DEST_GUID;
                        break;
@@ -469,11 +474,20 @@ main(int argc, char **argv)
 
        madrpc_init(ca, ca_port, mgmt_classes, 3);
 
-       if (ib_resolve_portid_str(&portid, argv[1], dest_type, sm_id) < 0)
-               IBERROR("can't resolve destination port %s", argv[1]);
-
-       if ((err = fn(&portid, argv+2, argc-2)))
-               IBERROR("operation %s: %s", argv[0], err);
-
+       if (dest_type != IB_DEST_DRSLID) {
+               if (ib_resolve_portid_str(&portid, argv[1], dest_type, sm_id) < 
0)
+                       IBERROR("can't resolve destination port %s", argv[1]);
+               if ((err = fn(&portid, argv+2, argc-2)))
+                       IBERROR("operation %s: %s", argv[0], err);
+       } else {
+               char concat[64];
+
+               memset(concat, 0, 64);
+               snprintf(concat, sizeof(concat), "%s %s", argv[1], argv[2]);
+               if (ib_resolve_portid_str(&portid, concat, dest_type, sm_id) < 
0)
+                       IBERROR("can't resolve destination port %s", concat); 
+               if ((err = fn(&portid, argv+3, argc-3)))
+                       IBERROR("operation %s: %s", argv[0], err);
+       }
        exit(0);
 }
Index: man/smpquery.8
===================================================================
--- man/smpquery.8      (revision 9776)
+++ man/smpquery.8      (working copy)
@@ -1,4 +1,4 @@
-.TH SMPQUERY 8 "July 25, 2006" "OpenIB" "OpenIB Diagnostics"
+.TH SMPQUERY 8 "October 16, 2006" "OpenIB" "OpenIB Diagnostics"
 
 .SH NAME
 smpquery \- query InfiniBand subnet management attributes 
@@ -54,6 +54,11 @@ using the util_name -h syntax.
         "0"             # self port
         "0,1,2,1,4"     # out via port 1, then 2, ...
 .PP
+\-c      use combined route address arguments. The 
+        address is a combination of a LID and a direct route path.
+        The LID specified is the DLID and the local LID is used
+        as the DrSLID.
+.PP
 \-G      use GUID address argument. In most cases, it is the Port GUID.
         Example:
         "0x08f1040023"
@@ -88,6 +93,8 @@ smpquery portinfo 3 1        # portinfo 
 smpquery -G switchinfo 0x2C9000100D051 1        # switchinfo by guid
 .PP
 smpquery -D nodeinfo 0       # nodeinfo by direct route
+.PP
+smpquery -c nodeinfo 6 0,12  # nodeinfo by combined route
 
 .SH SEE ALSO
 .BR smpdump (8)




_______________________________________________
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to