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