Module Name:    othersrc
Committed By:   agc
Date:           Sat Oct 22 19:09:37 UTC 2011

Modified Files:
        othersrc/external/bsd/iscsi/sbin/iscsictl: iscsic_daemonif.c
            iscsic_driverif.c iscsic_globals.h

Log Message:
make this compile with gcc 4.5


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 \
    othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_daemonif.c \
    othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_driverif.c \
    othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_globals.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_daemonif.c
diff -u othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_daemonif.c:1.3 othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_daemonif.c:1.4
--- othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_daemonif.c:1.3	Mon Aug 15 17:46:36 2011
+++ othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_daemonif.c	Sat Oct 22 19:09:37 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: iscsic_daemonif.c,v 1.3 2011/08/15 17:46:36 riz Exp $	*/
+/*	$NetBSD: iscsic_daemonif.c,v 1.4 2011/10/22 19:09:37 agc Exp $	*/
 
 /*-
  * Copyright (c) 2005,2006,2011 The NetBSD Foundation, Inc.
@@ -148,7 +148,7 @@ do_remove_target(int argc, char **argv, 
 		if (rsp->status) {
 			status_error_slist(rsp->status);
 		}
-		req.id.id = ((iscsid_sym_id_t *) & rsp->parameter)->id;
+		GET_SYM_ID(req.id.id, rsp->parameter);
 		free_response(rsp);
 	} else {
 		check_extra_args(argc, argv);
@@ -201,7 +201,7 @@ do_refresh(int argc, char **argv, iscsid
 			if (rsp->status) {
 				status_error_slist(rsp->status);
 			}
-			req.id[0] = ((iscsid_sym_id_t *) & rsp->parameter)->id;
+			GET_SYM_ID(req.id[0], rsp->parameter);
 			free_response(rsp);
 		} else {
 			req.id[0] = id.id;
@@ -568,7 +568,7 @@ remove_isns_server(int argc, char **argv
 		if (rsp->status) {
 			status_error_slist(rsp->status);
 		}
-		req.id = ((iscsid_sym_id_t *) & rsp->parameter)->id;
+		GET_SYM_ID(req.id, rsp->parameter);
 		free_response(rsp);
 	} else {
 		check_extra_args(argc, argv);
@@ -799,6 +799,7 @@ STATIC void
 login_or_add(iscsid_login_req_t * loginp, int argc, char **argv)
 {
 	iscsid_add_target_req_t *targ = NULL;
+	iscsid_add_target_rsp_t	*tgtrsp;
 	iscsid_set_target_authentication_req_t auth;
 	iscsid_get_set_target_options_t opt;
 	iscsid_search_list_req_t srch;
@@ -832,8 +833,9 @@ login_or_add(iscsid_login_req_t * loginp
 				if (rsp->status) {
 					status_error(rsp->status);
 				}
-				loginp->portal_id.id =
-					((iscsid_add_target_rsp_t *)&rsp->parameter)->target_id;
+				tgtrsp = (iscsid_add_target_rsp_t *)(void *)(rsp->parameter);
+				(void) memcpy(&loginp->portal_id.id, &tgtrsp->target_id,
+					sizeof(loginp->portal_id.id));
 			} else {
 				/* else find the target by its TargetName */
 				srch.search_kind = FIND_TARGET_NAME;
@@ -846,7 +848,7 @@ login_or_add(iscsid_login_req_t * loginp
 				if (rsp->status) {
 					status_error_slist(rsp->status);
 				}
-				loginp->portal_id.id = ((iscsid_sym_id_t *)&rsp->parameter)->id;
+				GET_SYM_ID(loginp->portal_id.id, rsp->parameter);
 			}
 			free_response(rsp);
 		}
@@ -960,6 +962,7 @@ int
 add_connection(int argc, char **argv)
 {
 	iscsid_login_req_t loginp;
+	iscsid_login_rsp_t	*loginrsp;
 	iscsid_response_t *rsp;
 
 	memset(&loginp, 0x0, sizeof(loginp));
@@ -974,8 +977,8 @@ add_connection(int argc, char **argv)
 	if (rsp->status) {
 		status_error(rsp->status);
 	}
-	printf("Added Connection %d\n",
-		((iscsid_login_rsp_t *) rsp->parameter)->connection_id.id);
+	loginrsp = (iscsid_login_rsp_t *)(void *)(rsp->parameter);
+	printf("Added Connection %d\n", loginrsp->connection_id.id);
 
 	free_response(rsp);
 	return 0;
Index: othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_driverif.c
diff -u othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_driverif.c:1.3 othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_driverif.c:1.4
--- othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_driverif.c:1.3	Mon Aug 15 17:46:36 2011
+++ othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_driverif.c	Sat Oct 22 19:09:37 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: iscsic_driverif.c,v 1.3 2011/08/15 17:46:36 riz Exp $	*/
+/*	$NetBSD: iscsic_driverif.c,v 1.4 2011/10/22 19:09:37 agc Exp $	*/
 
 /*-
  * Copyright (c) 2005,2006,2011 The NetBSD Foundation, Inc.
@@ -268,7 +268,7 @@ get_sessid(int argc, char **argv, int op
 		if (rsp->status)
 			status_error_slist(rsp->status);
 
-		sid.id = ((iscsid_sym_id_t *) & rsp->parameter)->id;
+		GET_SYM_ID(sid.id, rsp->parameter);
 		free_response(rsp);
 	}
 	return sid.id;
@@ -503,6 +503,7 @@ read_capacity(int argc, char **argv)
 	int rc;
 	uint32_t bsz;
 	uint64_t lbn, cap;
+	uint32_t n;
 
 	(void) memset(&io, 0x0, sizeof(io));
 	if ((io.session_id = get_sessid(argc, argv, FALSE)) == 0) {
@@ -519,8 +520,10 @@ read_capacity(int argc, char **argv)
 	if ((rc = do_ioctl(&io, TRUE)) != 0) {
 		return rc;
 	}
-	lbn = (uint64_t) ntohl(*((long *) buf)) + 1;
-	bsz = ntohl(*((long *) &buf[4]));
+	(void) memcpy(&n, buf, sizeof(n));
+	lbn = (uint64_t)(n + 1);
+	(void) memcpy(&n, &buf[4], sizeof(n));
+	bsz = ntohl(n);
 	cap = lbn * bsz;
 	printf("Total Blocks: %" PRIu64 ", Block Size: %u, Capacity: %" PRIu64 " Bytes\n",
 		lbn, bsz, cap);
@@ -579,6 +582,8 @@ report_luns(int argc, char **argv)
 	iscsi_iocommand_parameters_t io;
 	int rc;
 	uint32_t llen;
+	uint32_t n;
+	uint16_t n2;
 	uint64_t *lp;
 
 	(void) memset(&io, 0x0, sizeof(io));
@@ -589,14 +594,16 @@ report_luns(int argc, char **argv)
 
 	io.req.cmdlen = 12;
 	io.req.cmd[0] = 0xa0;
-	*((long *) &io.req.cmd[6]) = htonl(sizeof(buf));
+	n = htonl(sizeof(buf));
+	(void) memcpy(&io.req.cmd[6], &n, sizeof(n));
 
 	io.req.datalen = sizeof(buf);
 
 	if ((rc = do_ioctl(&io, TRUE)) != 0) {
 		return rc;
 	}
-	llen = ntohs(*((u_short *) buf));
+	(void) memcpy(&n2, buf, sizeof(n2));
+	llen = ntohs(n2);
 	if (!llen) {
 		printf("No LUNs!\n");
 		return 1;
Index: othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_globals.h
diff -u othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_globals.h:1.3 othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_globals.h:1.4
--- othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_globals.h:1.3	Mon Aug  8 16:23:43 2011
+++ othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_globals.h	Sat Oct 22 19:09:37 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: iscsic_globals.h,v 1.3 2011/08/08 16:23:43 riz Exp $	*/
+/*	$NetBSD: iscsic_globals.h,v 1.4 2011/10/22 19:09:37 agc Exp $	*/
 
 /*-
  * Copyright (c) 2005,2006,2011 The NetBSD Foundation, Inc.
@@ -138,6 +138,15 @@ ntohq(uint64_t x)
 
 #define htonq(x)  ntohq(x)
 
+
+/* we usually have to get the id out of a message */
+#define GET_SYM_ID(x, y)	do {					\
+	iscsid_sym_id_t	*__param;					\
+	__param = (iscsid_sym_id_t *)(void *)(y);			\
+	(void) memcpy(&x, &__param->id, sizeof(x));			\
+} while (/*CONSTCOND*/0)
+
+
 /* Check whether ID is present */
 #define NO_ID(sid) (!(sid)->id && !(sid)->name[0])
 

Reply via email to