From: Dan Ben Yosef <[email protected]>

Add the option to display the InformInfoRecord by SubscriberGid

Signed-off-by: Dan Ben Yosef <[email protected]>
---
 src/saquery.c |   30 ++++++++++++++++++++++++++----
 1 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/src/saquery.c b/src/saquery.c
index 60c78ed..f13def9 100644
--- a/src/saquery.c
+++ b/src/saquery.c
@@ -841,6 +841,16 @@ static uint16_t get_lid(struct sa_handle * h, const char 
*name)
        return rc_lid;
 }
 
+static int parse_iir_subscriber_gid(char *str, ib_inform_info_record_t *ir)
+{
+       int rc = inet_pton(AF_INET6,str,&(ir->subscriber_gid.raw));
+       if(rc < 1){
+          fprintf(stderr, "Failed to find InformInfoRecord SubscriberGID for 
\"%s\"\n",str);
+          exit(EINVAL);
+       }
+       return rc;
+}
+
 static int parse_lid_and_ports(struct sa_handle * h,
                               char *str, int *lid, int *port1, int *port2)
 {
@@ -1140,12 +1150,24 @@ static int query_service_records(const struct query_cmd 
*q, struct sa_handle * h
                                        dump_service_record);
 }
 
-static int query_informinfo_records(const struct query_cmd *q,
+static int query_inform_info_records(const struct query_cmd *q,
                                    struct sa_handle * h, struct query_params 
*p,
                                    int argc, char *argv[])
 {
-       return get_and_dump_all_records(h, IB_SA_ATTR_INFORMINFORECORD,
-                                       dump_inform_info_record);
+       int rc = 0;
+       ib_inform_info_record_t ir;
+       ib_net64_t comp_mask = 0;
+       memset(&ir, 0, sizeof(ir));
+
+       if (argc > 0) {
+           comp_mask = IB_IIR_COMPMASK_SUBSCRIBERGID;
+           if(rc = parse_iir_subscriber_gid(argv[0], &ir) < 1)
+                 return rc;
+       }
+
+       return get_and_dump_any_records(h, IB_SA_ATTR_INFORMINFORECORD, 0, 
comp_mask,
+                                      &ir, sizeof(ir), 
dump_inform_info_record);
+
 }
 
 static int query_link_records(const struct query_cmd *q, struct sa_handle * h,
@@ -1305,7 +1327,7 @@ static const struct query_cmd query_cmds[] = {
        {"VLArbitrationTableRecord", "VLAR", IB_SA_ATTR_VLARBTABLERECORD,
         "[[lid]/[port]/[block]]", query_vlarb_records},
        {"InformInfoRecord", "IIR", IB_SA_ATTR_INFORMINFORECORD,
-        NULL, query_informinfo_records},
+        "[subscriber_gid]", query_inform_info_records},
        {"LinkRecord", "LR", IB_SA_ATTR_LINKRECORD,
         "[[from_lid]/[from_port]] [[to_lid]/[to_port]]", query_link_records},
        {"ServiceRecord", "SR", IB_SA_ATTR_SERVICERECORD,
-- 
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to