File 0026-iscsiMib.c-fixes-for-strict-aliasing.patch of Package lio-utils.216
From da77229050bb604c916ffd567b58e0fed236748b Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare@suse.de>
Date: Thu, 17 Apr 2014 12:03:50 +0200
Subject: iscsiMib.c: fixes for strict aliasing
gcc is becoming more and more picky about how valid C-code should
look like, so fixup iscsiMib.c to eliminate the strict aliasing
warnings.
Signed-off-by: Hannes Reinecke <hare@suse.de>
---
mib-modules/iscsiMib.c | 46 ++++++++++++++++++++--------------------------
1 file changed, 20 insertions(+), 26 deletions(-)
diff --git a/mib-modules/iscsiMib.c b/mib-modules/iscsiMib.c
index e2e1ed4..5e5ba51 100644
--- a/mib-modules/iscsiMib.c
+++ b/mib-modules/iscsiMib.c
@@ -809,8 +809,7 @@ iscsiPortalAttributes_load(netsnmp_cache *cache, void *vmagic)
while (line == fgets(line, sizeof(line), fp)) {
memset(&tmp, 0, sizeof(tmp));
if (sscanf(line, ISCSI_PORTAL_ATTR_LINE, &tmp.iscsiInstIndex,
- &tmp.iscsiPortalIndex, roles, addrType,
- (u_int *)tmp.iscsiPortalAddr, proto,
+ &tmp.iscsiPortalIndex, roles, addrType, &addr, proto,
&tmp.iscsiPortalMaxRecvDataSegLength, hdrDigest,
dataDigest, rcvMarker) != 10)
continue;
@@ -819,8 +818,7 @@ iscsiPortalAttributes_load(netsnmp_cache *cache, void *vmagic)
tmp.iscsiPortalRoles = NODE_ROLE_TARGET;
if (!strcmp(addrType, "ipv4")) {
tmp.iscsiPortalAddrType = INET_ADDR_TYPE_IPV4;
- addr = htonl(*(uint32_t *)&tmp.iscsiPortalAddr);
- *(uint32_t *)tmp.iscsiPortalAddr = addr;
+ *tmp.iscsiPortalAddr = htonl(addr);
}
if (!strcmp(proto, "TCP"))
@@ -1733,42 +1731,41 @@ iscsiTargetAttributes_load(unsigned int clientreg, void *clientarg)
//snmp_log(LOG_DEBUG, "snmpd: cannot open %s\n", PROC_TARGET_ATTR);
return;
}
-
+
while (line == fgets(line, sizeof(line), fp)) {
memset(&tmp, 0, sizeof(tmp));
if (sscanf(line, ISCSI_TARGET_ATTR_LINE, &tmp.iscsiInstIndex,
&tmp.iscsiNodeIndex, &tmp.iscsiTgtLoginFailures,
&tmp.iscsiTgtLastFailureTime, &failType,
tmp.iscsiTgtLastIntrFailureName, addrType,
- (u_int *)tmp.iscsiTgtLastIntrFailureAddr) != 8)
+ &addr) != 8)
continue;
memcpy(tmp.iscsiTgtLastFailureType, iscsiTgtLoginStats_oid,
- sizeof(iscsiTgtLoginStats_oid));
- tmp.iscsiTgtLastFailureType[OID_LENGTH(iscsiTgtLoginStats_oid)] =
- failType;
+ sizeof(iscsiTgtLoginStats_oid));
+ tmp.iscsiTgtLastFailureType[OID_LENGTH(iscsiTgtLoginStats_oid)] =
+ failType;
tmp.iscsiTgtLastFailureType_len = OID_LENGTH(iscsiTgtLoginStats_oid)+1;
if (!strcmp(addrType, "ipv4")) {
tmp.iscsiTgtLastIntrFailureAddrType = INET_ADDR_TYPE_IPV4;
- addr = htonl(*(uint32_t *)tmp.iscsiTgtLastIntrFailureAddr);
- *(uint32_t *)tmp.iscsiTgtLastIntrFailureAddr = addr;
+ *tmp.iscsiTgtLastIntrFailureAddr = htonl(addr);
}
/* Send a trap on failures */
- if ((tmp.iscsiInstIndex <= ISCSI_NUM_INSTANCES) &&
+ if ((tmp.iscsiInstIndex <= ISCSI_NUM_INSTANCES) &&
(tmp.iscsiNodeIndex <= ISCSI_NUM_NODES) &&
- (tmp.iscsiTgtLoginFailures >
- numFailures[tmp.iscsiInstIndex][tmp.iscsiNodeIndex])) {
+ (tmp.iscsiTgtLoginFailures >
+ numFailures[tmp.iscsiInstIndex][tmp.iscsiNodeIndex])) {
if ((clientreg) && ((failType == ISCSI_LOGIN_FAIL_AUTHORIZE) ||
(failType == ISCSI_LOGIN_FAIL_AUTHENTICATE) ||
- (failType == ISCSI_LOGIN_FAIL_NEGOTIATE)))
+ (failType == ISCSI_LOGIN_FAIL_NEGOTIATE)))
send_iscsiTgtLoginFailure_trap(&tmp);
}
/* Update the counter to the current value from the stack */
- if (numFailures[tmp.iscsiInstIndex][tmp.iscsiNodeIndex] !=
+ if (numFailures[tmp.iscsiInstIndex][tmp.iscsiNodeIndex] !=
tmp.iscsiTgtLoginFailures)
- numFailures[tmp.iscsiInstIndex][tmp.iscsiNodeIndex] =
+ numFailures[tmp.iscsiInstIndex][tmp.iscsiNodeIndex] =
tmp.iscsiTgtLoginFailures;
entry = SNMP_MALLOC_TYPEDEF(struct iscsiTargetAttributes_entry);
@@ -3572,7 +3569,7 @@ iscsiCxnAttributes_load(netsnmp_cache *cache, void *vmagic)
char dataDgst[16];
char rcvMarker[4];
char sendMarker[4];
- uint32_t addr;
+ uint32_t local_addr, remote_addr;
struct iscsiCxnAttributes_entry tmp, *entry;
if (iscsiCxnAttributes_head)
@@ -3582,14 +3579,14 @@ iscsiCxnAttributes_load(netsnmp_cache *cache, void *vmagic)
//snmp_log(LOG_DEBUG, "snmpd: cannot open %s\n", PROC_CXN_ATTR);
return -1;
}
-
+
while (line == fgets(line, sizeof(line), fp)) {
memset(&tmp, 0, sizeof(tmp));
if (sscanf(line, ISCSI_CXN_ATTR_LINE, &tmp.iscsiInstIndex,
&tmp.iscsiSsnNodeIndex, &tmp.iscsiSsnIndex,
&tmp.iscsiCxnIndex, &tmp.iscsiCxnCid, cxnState, addrType,
- (u_int *)tmp.iscsiCxnLocalAddr, proto,
- &tmp.iscsiCxnLocalPort, (u_int *)tmp.iscsiCxnRemoteAddr,
+ &local_addr, proto,
+ &tmp.iscsiCxnLocalPort, &remote_addr,
&tmp.iscsiCxnRemotePort, &tmp.iscsiCxnMaxRecvDataSegLength,
&tmp.iscsiCxnMaxXmitDataSegLength, hdrDgst, dataDgst,
rcvMarker, sendMarker, &tmp.iscsiCxnVersionActive) != 19)
@@ -3605,11 +3602,8 @@ iscsiCxnAttributes_load(netsnmp_cache *cache, void *vmagic)
if (!strcmp(addrType, "ipv4")) {
tmp.iscsiCxnAddrType = INET_ADDR_TYPE_IPV4;
- addr = htonl(*(uint32_t *)tmp.iscsiCxnLocalAddr);
- *(uint32_t *)tmp.iscsiCxnLocalAddr = addr;
-
- addr = htonl(*(uint32_t *)tmp.iscsiCxnRemoteAddr);
- *(uint32_t *)tmp.iscsiCxnRemoteAddr = addr;
+ *tmp.iscsiCxnLocalAddr = htonl(local_addr);
+ *tmp.iscsiCxnRemoteAddr = htonl(remote_addr);
}
if (!strcmp(proto, "TCP"))
--
1.8.1.4