[ofa-general] [PATCH] [ib-diag] saquery: add support for WinOF
Sean Hefty
sean.hefty at intel.com
Mon Feb 23 17:34:51 PST 2009
A lot of type casting with include fix-ups. Luckily, because
the macro CHECK_AND_SET_VAL() was added, I could add type casts
into the macro and avoid sprinkling even more throughout the code.
Signed-off-by: Sean Hefty <sean.hefty at intel.com>
---
infiniband-diags/src/saquery.c | 80 ++++++++++++++++++++++------------------
1 files changed, 44 insertions(+), 36 deletions(-)
diff --git a/infiniband-diags/src/saquery.c b/infiniband-diags/src/saquery.c
index 9726d22..9d5f475 100644
--- a/infiniband-diags/src/saquery.c
+++ b/infiniband-diags/src/saquery.c
@@ -37,20 +37,25 @@
*
*/
+#if HAVE_CONFIG_H
+# include <config.h>
+#endif /* HAVE_CONFIG_H */
+
#include <unistd.h>
#include <stdio.h>
#include <arpa/inet.h>
#include <ctype.h>
#include <string.h>
#include <errno.h>
+#include <assert.h>
#define _GNU_SOURCE
#include <getopt.h>
#include <infiniband/umad.h>
#include <infiniband/mad.h>
-#include <infiniband/iba/ib_types.h>
-#include <infiniband/complib/cl_nodenamemap.h>
+#include <iba/ib_types.h>
+#include <complib/cl_nodenamemap.h>
#include "ibdiag_common.h"
@@ -170,7 +175,7 @@ recv_mad:
if (ibdebug > 1)
xdump(stdout, "SA Response:\n", mad, len);
- method = mad_get_field(mad, 0, IB_MAD_METHOD_F);
+ method = (uint8_t) mad_get_field(mad, 0, IB_MAD_METHOD_F);
offset = mad_get_field(mad, 0, IB_SA_ATTROFFS_F);
result.status = mad_get_field(mad, 0, IB_MAD_STATUS_F);
result.p_result_madw = mad;
@@ -189,12 +194,12 @@ recv_mad:
static void *get_query_rec(void *mad, unsigned i)
{
int offset = mad_get_field(mad, 0, IB_SA_ATTROFFS_F);
- return mad + IB_SA_DATA_OFFS + i * (offset << 3);
+ return (char *) mad + IB_SA_DATA_OFFS + i * (offset << 3);
}
static unsigned valid_gid(ib_gid_t *gid)
{
- ib_gid_t zero_gid = { };
+ ib_gid_t zero_gid = { 0 };
return memcmp(&zero_gid, gid, sizeof(*gid));
}
@@ -442,7 +447,7 @@ static void dump_multicast_member_record(void *data)
char gid_str2[INET6_ADDRSTRLEN];
ib_member_rec_t *p_mcmr = data;
uint16_t mlid = cl_ntoh16(p_mcmr->mlid);
- int i = 0;
+ unsigned i = 0;
char *node_name = "<unknown>";
/* go through the node records searching for a port guid which matches
@@ -758,7 +763,7 @@ static void dump_one_mft_record(void *data)
static void dump_results(struct query_res *r, void (*dump_func) (void *))
{
- int i;
+ unsigned i;
for (i = 0; i < r->result_cnt; i++) {
void *data = get_query_rec(r->p_result_madw, i);
dump_func(data);
@@ -768,7 +773,7 @@ static void dump_results(struct query_res *r, void (*dump_func) (void *))
static void return_mad(void)
{
if (result.p_result_madw) {
- free(result.p_result_madw - umad_size());
+ free((char *) result.p_result_madw - umad_size());
result.p_result_madw = NULL;
}
}
@@ -839,7 +844,8 @@ get_lid_from_name(bind_handle_t h, const char *name, uint16_t* lid)
{
ib_node_record_t *node_record = NULL;
ib_node_info_t *p_ni = NULL;
- int i = 0, ret;
+ unsigned i;
+ int ret;
ret = get_all_records(h, IB_SA_ATTR_NODERECORD, 0);
if (ret)
@@ -869,7 +875,7 @@ static uint16_t get_lid(bind_handle_t h, const char *name)
if (isalpha(name[0]))
assert(get_lid_from_name(h, name, &rc_lid) == IB_SUCCESS);
else
- rc_lid = atoi(name);
+ rc_lid = (uint16_t) atoi(name);
if (rc_lid == 0)
fprintf(stderr, "Failed to find lid for \"%s\"\n", name);
return rc_lid;
@@ -917,8 +923,8 @@ static int parse_lid_and_ports(bind_handle_t h,
#define cl_hton8(x) (x)
#define CHECK_AND_SET_VAL(val, size, comp_with, target, name, mask) \
- if (val > comp_with) { \
- target = cl_hton##size(val); \
+ if ((uint##size##_t) val > (uint##size##_t) comp_with) { \
+ target = cl_hton##size((uint##size##_t) val); \
comp_mask |= IB_##name##_COMPMASK_##mask; \
}
@@ -951,7 +957,8 @@ static int get_issm_records(bind_handle_t h, ib_net32_t capability_mask)
static int print_node_records(bind_handle_t h)
{
- int i = 0, ret;
+ unsigned i;
+ int ret;
ret = get_all_records(h, IB_SA_ATTR_NODERECORD, 0);
if (ret)
@@ -1027,7 +1034,7 @@ static int query_path_records(const struct query_cmd *q, bind_handle_t h,
CHECK_AND_SET_VAL(p->dlid, 16, 0, pr.dlid, PR, DLID);
CHECK_AND_SET_VAL(p->hop_limit, 32, -1, pr.hop_flow_raw, PR, HOPLIMIT);
CHECK_AND_SET_VAL(p->flow_label, 8, 0, flow, PR, FLOWLABEL);
- pr.hop_flow_raw |= cl_hton32(flow << 8);
+ pr.hop_flow_raw |= (uint8_t) cl_hton32(flow << 8);
CHECK_AND_SET_VAL(p->tclass, 8, 0, pr.tclass, PR, TCLASS);
CHECK_AND_SET_VAL(p->reversible, 8, -1, reversible, PR, REVERSIBLE);
CHECK_AND_SET_VAL(p->numb_path, 8, -1, pr.num_path, PR, NUMBPATH);
@@ -1089,7 +1096,7 @@ static int print_multicast_member_records(bind_handle_t h)
return_mc:
if (mc_group_result.p_result_madw)
- free(mc_group_result.p_result_madw - umad_size());
+ free((char *) mc_group_result.p_result_madw - umad_size());
return ret;
}
@@ -1267,7 +1274,7 @@ static int query_pkey_tbl_records(const struct query_cmd *q,
memset(&pktr, 0, sizeof(pktr));
CHECK_AND_SET_VAL(lid, 16, 0, pktr.lid, PKEY, LID);
CHECK_AND_SET_VAL(port, 8, -1, pktr.port_num, PKEY, PORT);
- CHECK_AND_SET_VAL(block, 16, -1, pktr.port_num, PKEY, BLOCK);
+ CHECK_AND_SET_VAL(block, 16, -1, pktr.block_num, PKEY, BLOCK);
return get_and_dump_any_records(h, IB_SA_ATTR_PKEYTABLERECORD, 0,
comp_mask, &pktr, smkey,
@@ -1503,13 +1510,13 @@ static int process_opt(void *context, int ch, char *optarg)
query_type = IB_SA_ATTR_LINKRECORD;
break;
case 5:
- p->slid = strtoul(optarg, NULL, 0);
+ p->slid = (uint16_t) strtoul(optarg, NULL, 0);
break;
case 6:
- p->dlid = strtoul(optarg, NULL, 0);
+ p->dlid = (uint16_t) strtoul(optarg, NULL, 0);
break;
case 7:
- p->mlid = strtoul(optarg, NULL, 0);
+ p->mlid = (uint16_t) strtoul(optarg, NULL, 0);
break;
case 14:
if (inet_pton(AF_INET6, optarg, &p->sgid) <= 0)
@@ -1534,7 +1541,7 @@ static int process_opt(void *context, int ch, char *optarg)
p->numb_path = strtoul(optarg, NULL, 0);
break;
case 18:
- p->pkey = strtoul(optarg, NULL, 0);
+ p->pkey = (uint16_t) strtoul(optarg, NULL, 0);
break;
case 'Q':
p->qos_class = strtoul(optarg, NULL, 0);
@@ -1543,19 +1550,19 @@ static int process_opt(void *context, int ch, char *optarg)
p->sl = strtoul(optarg, NULL, 0);
break;
case 'M':
- p->mtu = strtoul(optarg, NULL, 0);
+ p->mtu = (uint8_t) strtoul(optarg, NULL, 0);
break;
case 'R':
- p->rate = strtoul(optarg, NULL, 0);
+ p->rate = (uint8_t) strtoul(optarg, NULL, 0);
break;
case 20:
- p->pkt_life = strtoul(optarg, NULL, 0);
+ p->pkt_life = (uint8_t) strtoul(optarg, NULL, 0);
break;
case 'q':
p->qkey = strtoul(optarg, NULL, 0);
break;
case 'T':
- p->tclass = strtoul(optarg, NULL, 0);
+ p->tclass = (uint8_t) strtoul(optarg, NULL, 0);
break;
case 'F':
p->flow_label = strtoul(optarg, NULL, 0);
@@ -1564,10 +1571,10 @@ static int process_opt(void *context, int ch, char *optarg)
p->hop_limit = strtoul(optarg, NULL, 0);
break;
case 21:
- p->scope = strtoul(optarg, NULL, 0);
+ p->scope = (uint8_t) strtoul(optarg, NULL, 0);
break;
case 'J':
- p->join_state = strtoul(optarg, NULL, 0);
+ p->join_state = (uint8_t) strtoul(optarg, NULL, 0);
break;
case 'X':
p->proxy_join = strtoul(optarg, NULL, 0);
@@ -1582,14 +1589,7 @@ int main(int argc, char **argv)
{
char usage_args[1024];
bind_handle_t h;
- struct query_params params = {
- .hop_limit = -1,
- .reversible = -1,
- .numb_path = -1,
- .qos_class = -1,
- .sl = -1,
- .proxy_join = -1,
- };
+ struct query_params params;
const struct query_cmd *q;
ib_api_status_t status;
int n;
@@ -1643,9 +1643,17 @@ int main(int argc, char **argv)
{ "scope", 21, 1, NULL, "Scope (MCMemberRecord)" },
{ "join_state", 'J', 1, NULL, "Join state (MCMemberRecord)" },
{ "proxy_join", 'X', 1, NULL, "Proxy join (MCMemberRecord)" },
- {}
+ { 0 }
};
+ memset(¶ms, 0, sizeof params);
+ params.hop_limit = -1;
+ params.reversible = -1;
+ params.numb_path = -1;
+ params.qos_class = -1;
+ params.sl = -1;
+ params.proxy_join = -1;
+
n = sprintf(usage_args, "[query-name] [<name> | <lid> | <guid>]\n"
"\nSupported query names (and aliases):\n");
for (q = query_cmds; q->name; q++) {
@@ -1680,7 +1688,7 @@ int main(int argc, char **argv)
if (argc) {
if (node_print_desc == NAME_OF_LID) {
- requested_lid = strtoul(argv[0], NULL, 0);
+ requested_lid = (uint16_t) strtoul(argv[0], NULL, 0);
requested_lid_flag++;
} else if (node_print_desc == NAME_OF_GUID) {
requested_guid = strtoul(argv[0], NULL, 0);
More information about the general
mailing list