[ofa-general] Re: [PATCH] infiniband-diags/src/saquery.c: convert GID prints to use inet_ntop

Sasha Khapyorsky sashak at voltaire.com
Fri Jul 4 00:11:12 PDT 2008


Hi Ira,

Some nit...

On 18:33 Tue 01 Jul     , Ira Weiny wrote:
> From 7a9131f07ffa29e509004fb9835a82eca93d3fac Mon Sep 17 00:00:00 2001
> From: Ira K. Weiny <weiny2 at llnl.gov>
> Date: Tue, 1 Jul 2008 14:31:00 -0700
> Subject: [PATCH] infiniband-diags/src/saquery.c: convert GID prints to use inet_ntop
> 
> 
> Signed-off-by: Ira K. Weiny <weiny2 at llnl.gov>
> ---
>  infiniband-diags/src/saquery.c |   97 +++++++++++++++-------------------------
>  1 files changed, 36 insertions(+), 61 deletions(-)
> 
> diff --git a/infiniband-diags/src/saquery.c b/infiniband-diags/src/saquery.c
> index 1594cad..922703f 100644
> --- a/infiniband-diags/src/saquery.c
> +++ b/infiniband-diags/src/saquery.c
> @@ -237,32 +237,11 @@ static void dump_path_record(void *data)
>  	       );
>  }
>  
> -/**
> - * str must be longer than 32 to hold the full gid.
> - * len will be checked to ensure this.
> - */
> -static char *
> -sprint_gid(ib_gid_t *gid, char *str, size_t len)
> -{
> -	int  i = 0;
> -	char tmp[16];
> -
> -	assert(str != NULL);
> -	assert(len > 32);
> -
> -	str[0] = '\0';
> -	for (i = 0; i < 16; i++) {
> -		sprintf(tmp, "%02X", gid->raw[i]);
> -		strcat(str, tmp);
> -	}
> -
> -	return (str);
> -}
> -
>  static void dump_class_port_info(void *data)
>  {
>  	size_t GID_STR_LEN = 256;
>  	char   gid_str[GID_STR_LEN];
> +	char   gid_str2[GID_STR_LEN];

We can use INET6_ADDRSTRLEN as array size.

>  	ib_class_port_info_t *class_port_info = data;
>  
>  	printf("SA ClassPortInfo:\n"
> @@ -271,13 +250,13 @@ static void dump_class_port_info(void *data)
>  	       "\t\tCapability mask..........0x%04X\n"
>  	       "\t\tCapability mask 2........0x%08X\n"
>  	       "\t\tResponse time value......0x%02X\n"
> -	       "\t\tRedirect GID.............0x%s\n"
> +	       "\t\tRedirect GID.............%s\n"
>  	       "\t\tRedirect TC/SL/FL........0x%08X\n"
>  	       "\t\tRedirect LID.............0x%04X\n"
>  	       "\t\tRedirect PKey............0x%04X\n"
>  	       "\t\tRedirect QP..............0x%08X\n"
>  	       "\t\tRedirect QKey............0x%08X\n"
> -	       "\t\tTrap GID.................0x%s\n"
> +	       "\t\tTrap GID.................%s\n"
>  	       "\t\tTrap TC/SL/FL............0x%08X\n"
>  	       "\t\tTrap LID.................0x%04X\n"
>  	       "\t\tTrap PKey................0x%04X\n"
> @@ -289,13 +268,13 @@ static void dump_class_port_info(void *data)
>  	       cl_ntoh16(class_port_info->cap_mask),
>  	       ib_class_cap_mask2(class_port_info),
>  	       ib_class_resp_time_val(class_port_info),
> -	       sprint_gid(&(class_port_info->redir_gid), gid_str, GID_STR_LEN),
> +	       inet_ntop(AF_INET6, &(class_port_info->redir_gid), gid_str, GID_STR_LEN),

and sizeof(gid_str) instead of GID_STR_LEN variable.

Sasha

>  	       cl_ntoh32(class_port_info->redir_tc_sl_fl),
>  	       cl_ntoh16(class_port_info->redir_lid),
>  	       cl_ntoh16(class_port_info->redir_pkey),
>  	       cl_ntoh32(class_port_info->redir_qp),
>  	       cl_ntoh32(class_port_info->redir_qkey),
> -	       sprint_gid(&(class_port_info->trap_gid), gid_str, GID_STR_LEN),
> +	       inet_ntop(AF_INET6, &(class_port_info->trap_gid), gid_str2, GID_STR_LEN),
>  	       cl_ntoh32(class_port_info->trap_tc_sl_fl),
>  	       cl_ntoh16(class_port_info->trap_lid),
>  	       cl_ntoh16(class_port_info->trap_pkey),
> @@ -326,20 +305,20 @@ static void dump_portinfo_record(void *data)
>  
>  static void dump_multicast_group_record(void *data)
>  {
> +	size_t GID_STR_LEN = 256;
> +	char   gid_str[GID_STR_LEN];
>  	ib_member_rec_t *p_mcmr = data;
>  	uint8_t sl;
>  	ib_member_get_sl_flow_hop(p_mcmr->sl_flow_hop, &sl, NULL, NULL);
>  	printf("MCMemberRecord group dump:\n"
> -	       "\t\tMGID....................0x%016" PRIx64 " : "
> -	       "0x%016" PRIx64 "\n"
> +	       "\t\tMGID....................%s\n"
>  	       "\t\tMlid....................0x%X\n"
>  	       "\t\tMtu.....................0x%X\n"
>  	       "\t\tpkey....................0x%X\n"
>  	       "\t\tRate....................0x%X\n"
>  	       "\t\tSL......................0x%X\n"
>  	       "",
> -	       cl_ntoh64( p_mcmr->mgid.unicast.prefix ),
> -	       cl_ntoh64( p_mcmr->mgid.unicast.interface_id ),
> +	       inet_ntop(AF_INET6, p_mcmr->mgid.raw, gid_str, GID_STR_LEN),
>  	       cl_ntoh16( p_mcmr->mlid ),
>  	       p_mcmr->mtu,
>  	       cl_ntoh16( p_mcmr->pkey ),
> @@ -350,8 +329,10 @@ static void dump_multicast_group_record(void *data)
>  
>  static void dump_multicast_member_record(void *data)
>  {
> +	size_t GID_STR_LEN = 256;
> +	char   gid_str[GID_STR_LEN];
> +	char   gid_str2[GID_STR_LEN];
>  	ib_member_rec_t *p_mcmr = data;
> -	uint64_t gid_prefix = cl_ntoh64( p_mcmr->port_gid.unicast.prefix );
>  	uint64_t gid_interface_id = cl_ntoh64( p_mcmr->port_gid.unicast.interface_id );
>  	uint16_t mlid = cl_ntoh16( p_mcmr->mlid );
>  	int      i = 0;
> @@ -371,29 +352,26 @@ static void dump_multicast_member_record(void *data)
>  
>  	if (requested_name) {
>  		if (strtol(requested_name, NULL, 0) == mlid) {
> -			printf("\t\tPortGid.................0x%016" PRIx64 " : "
> -			       "0x%016" PRIx64 " (%s)\n",
> -			       gid_prefix,
> -			       gid_interface_id,
> +			printf("\t\tPortGid.................%s (%s)\n",
> +				inet_ntop(AF_INET6, p_mcmr->port_gid.raw,
> +					gid_str, GID_STR_LEN),
>  			       node_name
>  			      );
>  		}
>  	} else {
>  		printf("MCMemberRecord member dump:\n"
> -		       "\t\tMGID....................0x%016" PRIx64 " : "
> -		       "0x%016" PRIx64 "\n"
> +		       "\t\tMGID....................%s\n"
>  		       "\t\tMlid....................0x%X\n"
> -		       "\t\tPortGid.................0x%016" PRIx64 " : "
> -		       "0x%016" PRIx64 "\n"
> +		       "\t\tPortGid.................%s\n"
>  		       "\t\tScopeState..............0x%X\n"
>  		       "\t\tProxyJoin...............0x%X\n"
>  		       "\t\tNodeDescription.........%s\n"
>  		       "",
> -		       cl_ntoh64( p_mcmr->mgid.unicast.prefix ),
> -		       cl_ntoh64( p_mcmr->mgid.unicast.interface_id ),
> +		       inet_ntop(AF_INET6, p_mcmr->mgid.raw, gid_str,
> +				GID_STR_LEN),
>  		       cl_ntoh16( p_mcmr->mlid ),
> -		       gid_prefix,
> -		       gid_interface_id,
> +		       inet_ntop(AF_INET6, p_mcmr->port_gid.raw,
> +				gid_str2, GID_STR_LEN),
>  		       p_mcmr->scope_state,
>  		       p_mcmr->proxy_join,
>  		       node_name
> @@ -403,6 +381,8 @@ static void dump_multicast_member_record(void *data)
>  
>  static void dump_service_record(void *data)
>  {
> +	size_t GID_STR_LEN = 256;
> +	char   gid_str[GID_STR_LEN];
>  	char buf_service_key[35];
>  	char buf_service_name[65];
>  	ib_service_record_t *p_sr = data;
> @@ -430,8 +410,7 @@ static void dump_service_record(void *data)
>  
>  	printf("ServiceRecord dump:\n"
>  	       "\t\tServiceID...............0x%016" PRIx64 "\n"
> -	       "\t\tServiceGID..............0x%016" PRIx64 " : "
> -	       "0x%016" PRIx64 "\n"
> +	       "\t\tServiceGID..............%s\n"
>  	       "\t\tServiceP_Key............0x%X\n"
>  	       "\t\tServiceLease............0x%X\n"
>  	       "\t\tServiceKey..............%s\n"
> @@ -468,8 +447,7 @@ static void dump_service_record(void *data)
>  	       "\t\tServiceData64.2.........0x%016" PRIx64 "\n"
>  	       "",
>  	       cl_ntoh64( p_sr->service_id ),
> -	       cl_ntoh64( p_sr->service_gid.unicast.prefix ),
> -	       cl_ntoh64( p_sr->service_gid.unicast.interface_id ),
> +	       inet_ntop(AF_INET6, p_sr->service_gid.raw, gid_str, GID_STR_LEN),
>  	       cl_ntoh16( p_sr->service_pkey ),
>  	       cl_ntoh32( p_sr->service_lease ),
>  	       buf_service_key,
> @@ -501,6 +479,9 @@ static void dump_service_record(void *data)
>  
>  static void dump_inform_info_record(void *data)
>  {
> +	size_t GID_STR_LEN = 256;
> +	char   gid_str[GID_STR_LEN];
> +	char   gid_str2[GID_STR_LEN];
>  	ib_inform_info_record_t *p_iir = data;
>  	uint32_t qpn;
>  	uint8_t  resp_time_val;
> @@ -510,11 +491,10 @@ static void dump_inform_info_record(void *data)
>  	if (p_iir->inform_info.is_generic) {
>  		printf("InformInfoRecord dump:\n"
>  		       "\t\tRID\n"
> -		       "\t\tSubscriberGID...........0x%016" PRIx64 " : "
> -		       "0x%016" PRIx64 "\n"
> +		       "\t\tSubscriberGID...........%s\n"
>  		       "\t\tSubscriberEnum..........0x%X\n"
>  		       "\t\tInformInfo dump:\n"
> -		       "\t\tgid.....................0x%016" PRIx64 " : 0x%016" PRIx64 "\n"
> +		       "\t\tgid.....................%s\n"
>  		       "\t\tlid_range_begin.........0x%X\n"
>  		       "\t\tlid_range_end...........0x%X\n"
>  		       "\t\tis_generic..............0x%X\n"
> @@ -525,11 +505,9 @@ static void dump_inform_info_record(void *data)
>  		       "\t\tresp_time_val...........0x%X\n"
>  		       "\t\tnode_type...............0x%06X\n"
>  		       "",
> -		       cl_ntoh64( p_iir->subscriber_gid.unicast.prefix ),
> -		       cl_ntoh64( p_iir->subscriber_gid.unicast.interface_id ),
> +		       inet_ntop(AF_INET6, p_iir->subscriber_gid.raw, gid_str, GID_STR_LEN),
>  		       cl_ntoh16( p_iir->subscriber_enum ),
> -		       cl_ntoh64( p_iir->inform_info.gid.unicast.prefix ),
> -		       cl_ntoh64( p_iir->inform_info.gid.unicast.interface_id ),
> +		       inet_ntop(AF_INET6, p_iir->inform_info.gid.raw, gid_str2, GID_STR_LEN),
>  		       cl_ntoh16( p_iir->inform_info.lid_range_begin ),
>  		       cl_ntoh16( p_iir->inform_info.lid_range_end ),
>  		       p_iir->inform_info.is_generic,
> @@ -543,11 +521,10 @@ static void dump_inform_info_record(void *data)
>  	} else {
>  		printf("InformInfoRecord dump:\n"
>  		       "\t\tRID\n"
> -		       "\t\tSubscriberGID...........0x%016" PRIx64 " : "
> -		       "0x%016" PRIx64 "\n"
> +		       "\t\tSubscriberGID...........%s\n"
>  		       "\t\tSubscriberEnum..........0x%X\n"
>  		       "\t\tInformInfo dump:\n"
> -		       "\t\tgid.....................0x%016" PRIx64 " : 0x%016" PRIx64 "\n"
> +		       "\t\tgid.....................%s\n"
>  		       "\t\tlid_range_begin.........0x%X\n"
>  		       "\t\tlid_range_end...........0x%X\n"
>  		       "\t\tis_generic..............0x%X\n"
> @@ -558,11 +535,9 @@ static void dump_inform_info_record(void *data)
>  		       "\t\tresp_time_val...........0x%X\n"
>  		       "\t\tvendor_id...............0x%06X\n"
>  		       "",
> -		       cl_ntoh64( p_iir->subscriber_gid.unicast.prefix ),
> -		       cl_ntoh64( p_iir->subscriber_gid.unicast.interface_id ),
> +		       inet_ntop(AF_INET6, p_iir->subscriber_gid.raw, gid_str, GID_STR_LEN),
>  		       cl_ntoh16( p_iir->subscriber_enum ),
> -		       cl_ntoh64( p_iir->inform_info.gid.unicast.prefix ),
> -		       cl_ntoh64( p_iir->inform_info.gid.unicast.interface_id ),
> +		       inet_ntop(AF_INET6, p_iir->inform_info.gid.raw, gid_str2, GID_STR_LEN),
>  		       cl_ntoh16( p_iir->inform_info.lid_range_begin ),
>  		       cl_ntoh16( p_iir->inform_info.lid_range_end ),
>  		       p_iir->inform_info.is_generic,
> -- 
> 1.5.4.5
> 



More information about the general mailing list