From owner-svn-src-head@FreeBSD.ORG Wed Feb 18 19:59:28 2009 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 49C261065670; Wed, 18 Feb 2009 19:59:28 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 37E218FC0C; Wed, 18 Feb 2009 19:59:28 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n1IJxS11073306; Wed, 18 Feb 2009 19:59:28 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n1IJxSJV073305; Wed, 18 Feb 2009 19:59:28 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <200902181959.n1IJxSJV073305@svn.freebsd.org> From: Warner Losh Date: Wed, 18 Feb 2009 19:59:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r188760 - head/contrib/bsnmp/snmp_mibII X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Feb 2009 19:59:28 -0000 Author: imp Date: Wed Feb 18 19:59:27 2009 New Revision: 188760 URL: http://svn.freebsd.org/changeset/base/188760 Log: Add an extra (void *) cast. The struct if_msghdr has an 8 byte alignment requirement, while rt_msghdr has a 4 byte alignment requirement. The root cause is that if_msghdr has an struct if_data which has an 8-byte alignment requirement due to a time_t that's embedded in it. On MIPS, time_t is a 64-bit number, so must be 64-bit aligned. Since we don't access ifm_data.ifi_epoch, a simple cast is all that's necessary here. It is likely the case that ifi_epoch should *NOT* be a time_t because it is an uptime (time delta) an not an absolute time since 1970. u_long is likely sufficient there since that gives an uptime of 136 years will suffice for the foreseeable future. Modified: head/contrib/bsnmp/snmp_mibII/mibII.c Modified: head/contrib/bsnmp/snmp_mibII/mibII.c ============================================================================== --- head/contrib/bsnmp/snmp_mibII/mibII.c Wed Feb 18 19:05:27 2009 (r188759) +++ head/contrib/bsnmp/snmp_mibII/mibII.c Wed Feb 18 19:59:27 2009 (r188760) @@ -1013,7 +1013,7 @@ handle_rtmsg(struct rt_msghdr *rtm) break; case RTM_IFINFO: - ifm = (struct if_msghdr *)rtm; + ifm = (struct if_msghdr *)(void *)rtm; mib_extract_addrs(ifm->ifm_addrs, (u_char *)(ifm + 1), addrs); if ((ifp = mib_find_if_sys(ifm->ifm_index)) == NULL) break;