Index: sys/net/if.h =================================================================== RCS file: /cvsroot/src/sys/net/if.h,v retrieving revision 1.140 retrieving revision 1.140.8.2 diff -u -r1.140 -r1.140.8.2 --- sys/net/if.h 24 Oct 2008 17:07:33 -0000 1.140 +++ sys/net/if.h 13 May 2010 05:51:47 -0000 1.140.8.2 @@ -1,4 +1,4 @@ -/* $NetBSD: if.h,v 1.140 2008/10/24 17:07:33 dyoung Exp $ */ +/* $NetBSD: if.h,v 1.140.8.2 2010/05/13 05:51:47 matt Exp $ */ /*- * Copyright (c) 1999, 2000, 2001 The NetBSD Foundation, Inc. @@ -179,7 +179,11 @@ u_quad_t ifi_omcasts; /* packets sent via multicast */ u_quad_t ifi_iqdrops; /* dropped on input, this interface */ u_quad_t ifi_noproto; /* destined for unsupported protocol */ - struct timeval ifi_lastchange; /* last operational state change */ + union { + struct timeval ifi_un_lastchange; /* last operational state change */ + u_quad_t ifi_un_pad[2]; + } ifi_un; +#define ifi_lastchange ifi_un.ifi_un_lastchange }; /* @@ -510,6 +514,7 @@ int ifam_flags; /* value of ifa_flags */ u_short ifam_index; /* index for associated ifp */ int ifam_metric; /* value of ifa_metric */ + int ifam_spare; /* pad to multiple of 64 bits */ }; /* +/* $NetBSD: if_arcsubr.c,v 1.59.24.1 2010/04/21 00:28:21 matt Exp $ */ /* * Copyright (c) 1994, 1995 Ignatios Souvatzis @@ -35,7 +35,7 @@ */ Index: sys/net/route.h =================================================================== RCS file: /cvsroot/src/sys/net/route.h,v retrieving revision 1.70.16.1 retrieving revision 1.70.16.1.4.2 diff -u -r1.70.16.1 -r1.70.16.1.4.2 --- sys/net/route.h 3 Apr 2009 17:59:03 -0000 1.70.16.1 +++ sys/net/route.h 13 May 2010 05:34:58 -0000 1.70.16.1.4.2 @@ -67,16 +67,16 @@ * retransmission behavior and are included in the routing structure. */ struct rt_metrics { - u_long rmx_locks; /* Kernel must leave these values alone */ - u_long rmx_mtu; /* MTU for this path */ - u_long rmx_hopcount; /* max hops expected */ - u_long rmx_expire; /* lifetime for route, e.g. redirect */ - u_long rmx_recvpipe; /* inbound delay-bandwidth product */ - u_long rmx_sendpipe; /* outbound delay-bandwidth product */ - u_long rmx_ssthresh; /* outbound gateway buffer limit */ - u_long rmx_rtt; /* estimated round trip time */ - u_long rmx_rttvar; /* estimated rtt variance */ - u_long rmx_pksent; /* packets sent using this route */ + u_quad_t rmx_locks; /* Kernel must leave these values alone */ + u_quad_t rmx_mtu; /* MTU for this path */ + u_quad_t rmx_hopcount; /* max hops expected */ + u_quad_t rmx_expire; /* lifetime for route, e.g. redirect */ + u_quad_t rmx_recvpipe; /* inbound delay-bandwidth product */ + u_quad_t rmx_sendpipe; /* outbound delay-bandwidth product */ + u_quad_t rmx_ssthresh; /* outbound gateway buffer limit */ + u_quad_t rmx_rtt; /* estimated round trip time */ + u_quad_t rmx_rttvar; /* estimated rtt variance */ + u_quad_t rmx_pksent; /* packets sent using this route */ }; /* @@ -179,11 +179,11 @@ int rtm_seq; /* for sender to identify action */ int rtm_errno; /* why failed */ int rtm_use; /* from rtentry */ - u_long rtm_inits; /* which metrics we are initializing */ + u_quad_t rtm_inits; /* which metrics we are initializing */ struct rt_metrics rtm_rmx; /* metrics themselves */ }; -#define RTM_VERSION 3 /* Up the ante and ignore older versions */ +#define RTM_VERSION 4 /* Up the ante and ignore older versions */ #define RTM_ADD 0x1 /* Add Route */ #define RTM_DELETE 0x2 /* Delete Route */ @@ -240,8 +240,11 @@ #define RTAX_BRD 7 /* for NEWADDR, broadcast or p-p dest addr */ #define RTAX_MAX 8 /* size of array to allocate */ +#define RTAX_NAMES { "dst", "gateway", "netmask", "genmask", \ + "ifp", "ifa", "author", "brd" } + #define RT_ROUNDUP(a) \ - ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long)) + ((a) > 0 ? (1 + (((a) - 1) | (sizeof(u_quad_t) - 1))) : sizeof(u_quad_t)) #define RT_ADVANCE(x, n) (x += RT_ROUNDUP((n)->sa_len)) struct rt_addrinfo { Index: sys/net/rtsock.c =================================================================== RCS file: /cvsroot/src/sys/net/rtsock.c,v retrieving revision 1.115.2.4 retrieving revision 1.115.2.4.4.2 diff -u -r1.115.2.4 -r1.115.2.4.4.2 --- sys/net/rtsock.c 3 Apr 2009 17:59:03 -0000 1.115.2.4 +++ sys/net/rtsock.c 13 May 2010 05:36:49 -0000 1.115.2.4.4.2 @@ -249,6 +249,7 @@ rtm->rtm_pid = curproc->p_pid; memset(&info, 0, sizeof(info)); info.rti_addrs = rtm->rtm_addrs; + KASSERT(sizeof(*rtm) == RT_ROUNDUP(sizeof(*rtm))); if (rt_xaddrs(rtm->rtm_type, (const char *)(rtm + 1), len + (char *)rtm, &info)) senderr(EINVAL); @@ -583,6 +584,7 @@ default: len = sizeof(struct rt_msghdr); } + len = RT_ROUNDUP(len); if (len > MHLEN + MLEN) panic("rt_msg1: message too long"); else if (len > MHLEN) { @@ -611,6 +613,7 @@ m_copyback(m, len, dlen, sa); len += dlen; } + KASSERT(len == RT_ROUNDUP(len)); if (m->m_pkthdr.len != len) { m_freem(m); return NULL; @@ -663,6 +666,7 @@ default: len = sizeof(struct rt_msghdr); } + len = RT_ROUNDUP(len); if ((cp0 = cp) != NULL) cp += len; for (i = 0; i < RTAX_MAX; i++) { @@ -702,6 +706,7 @@ } } } + KASSERT(len == RT_ROUNDUP(len)); if (cp) { struct rt_msghdr *rtm = (struct rt_msghdr *)cp0; Index: lib/libc/net/getifaddrs.c =================================================================== RCS file: /cvsroot/src/lib/libc/net/getifaddrs.c,v retrieving revision 1.11.12.1 retrieving revision 1.11.20.3 diff -u -r1.11.12.1 -r1.11.20.3 --- lib/libc/net/getifaddrs.c 3 May 2009 13:17:52 -0000 1.11.12.1 +++ lib/libc/net/getifaddrs.c 13 May 2010 05:38:16 -0000 1.11.20.3 @@ -45,14 +45,17 @@ #include #include #include + +#ifdef RTDEBUG +#include +#endif #ifdef __weak_alias __weak_alias(getifaddrs,_getifaddrs) __weak_alias(freeifaddrs,_freeifaddrs) #endif -#define SALIGN (sizeof(long) - 1) -#define SA_RLEN(sa) ((sa)->sa_len ? (((sa)->sa_len + SALIGN) & ~SALIGN) : (SALIGN + 1)) +#define SA_RLEN(sa) RT_ROUNDUP((sa)->sa_len) int getifaddrs(struct ifaddrs **pif) @@ -77,6 +80,10 @@ char *data; char *names; +#ifdef RTDEBUG + static const char rtax_names[][8] = RTAX_NAMES; +#endif + _DIAGASSERT(pif != NULL); mib[0] = CTL_NET; @@ -98,6 +105,11 @@ rtm = (struct rt_msghdr *)(void *)next; if (rtm->rtm_version != RTM_VERSION) continue; +#ifdef RTDEBUG + printf("%d: %zd rtm len=%d type=%d\n", __LINE__, + (char *)rtm - buf, + rtm->rtm_msglen, rtm->rtm_type); +#endif switch (rtm->rtm_type) { case RTM_IFINFO: ifm = (struct if_msghdr *)(void *)rtm; @@ -106,11 +118,18 @@ idx = ifm->ifm_index; ++icnt; - dl = (struct sockaddr_dl *)(void *)(ifm + 1); - dcnt += SA_RLEN((const struct sockaddr *)(const void *)dl) + - ALIGNBYTES; - dcnt += sizeof(ifm->ifm_data); + dl = (struct sockaddr_dl *) + ((uintptr_t)ifm + RT_ROUNDUP(sizeof(*ifm))); + dcnt += SA_RLEN((const struct sockaddr *)(const void *)dl); + dcnt += RT_ROUNDUP(sizeof(ifm->ifm_data)); ncnt += dl->sdl_nlen + 1; +#ifdef RTDEBUG + printf("%d: %zd sdl idx=%d dcnt=%#x flags=%#x name=", + __LINE__, (const char *)dl - buf, idx, + dcnt, ifm->ifm_flags); + fwrite(dl->sdl_data, 1, dl->sdl_nlen, stdout); + putchar('\n'); +#endif } else idx = 0; break; @@ -123,8 +142,14 @@ #define RTA_MASKS (RTA_NETMASK | RTA_IFA | RTA_BRD) if (idx == 0 || (ifam->ifam_addrs & RTA_MASKS) == 0) break; - p = (char *)(void *)(ifam + 1); + p = (char *) + ((uintptr_t)ifam + RT_ROUNDUP(sizeof(*ifam))); ++icnt; +#ifdef RTDEBUG + printf("%d: %zd sa index=%d addrs=%#x\n", + __LINE__, p - buf, + ifam->ifam_index, ifam->ifam_addrs); +#endif /* Scan to look for length of address */ alen = 0; for (p0 = p, i = 0; i < RTAX_MAX; i++) { @@ -133,6 +158,11 @@ continue; sa = (struct sockaddr *)(void *)p; len = SA_RLEN(sa); +#ifdef RTDEBUG + printf("%d: %zd sa %s len=%d family=%d\n", + __LINE__, p - buf, rtax_names[i], + sa->sa_len, sa->sa_family); +#endif if (i == RTAX_IFA) { alen = len; break; @@ -149,6 +179,11 @@ dcnt += alen; else dcnt += len; +#ifdef RTDEBUG + printf("%d: %zd sa %s dcnt=%#x, len=%d family=%d\n", + __LINE__, p - buf, rtax_names[i], dcnt, + sa->sa_len, sa->sa_family); +#endif p += len; } break; @@ -160,24 +195,33 @@ free(buf); return (0); } - data = malloc(sizeof(struct ifaddrs) * icnt + dcnt + ncnt); + data = malloc(RT_ROUNDUP(sizeof(struct ifaddrs) * icnt) + dcnt + ncnt); if (data == NULL) { free(buf); return(-1); } ifa = (struct ifaddrs *)(void *)data; - data += sizeof(struct ifaddrs) * icnt; + data += RT_ROUNDUP(sizeof(struct ifaddrs) * icnt); names = data + dcnt; memset(ifa, 0, sizeof(struct ifaddrs) * icnt); ift = ifa; +#ifdef RTDEBUG + printf("ifa=%p data=%p names=%p end=%p\n", + ifa, data, names, names + ncnt); +#endif idx = 0; for (next = buf; next < buf + needed; next += rtm->rtm_msglen) { rtm = (struct rt_msghdr *)(void *)next; if (rtm->rtm_version != RTM_VERSION) continue; +#ifdef RTDEBUG + printf("%d: %zd rtm len=%d type=%d\n", __LINE__, + (char *)rtm - buf, + rtm->rtm_msglen, rtm->rtm_type); +#endif switch (rtm->rtm_type) { case RTM_IFINFO: ifm = (struct if_msghdr *)(void *)rtm; @@ -185,7 +229,8 @@ const struct sockaddr_dl *dl; idx = ifm->ifm_index; - dl = (struct sockaddr_dl *)(void *)(ifm + 1); + dl = (struct sockaddr_dl *) + ((uintptr_t)ifm + RT_ROUNDUP(sizeof(*ifm))); memset(&cif, 0, sizeof(cif)); @@ -194,6 +239,12 @@ memcpy(names, dl->sdl_data, (size_t)dl->sdl_nlen); names[dl->sdl_nlen] = 0; + +#ifdef RTDEBUG + printf("%d: %zd sdl idx=%d flags=%#x name=%s\n", + __LINE__, (const char *)dl - buf, idx, + ifm->ifm_flags, names); +#endif names += dl->sdl_nlen + 1; cif.ifa_addr = (struct sockaddr *)(void *)data; @@ -218,7 +269,13 @@ ift->ifa_name = cif.ifa_name; ift->ifa_flags = cif.ifa_flags; ift->ifa_data = NULL; - p = (char *)(void *)(ifam + 1); + p = (char *) + ((uintptr_t)ifam + RT_ROUNDUP(sizeof(*ifam))); +#ifdef RTDEBUG + printf("%d: %zd sa index=%d addrs=%#x name=%s\n", + __LINE__, p - buf, + ifam->ifam_index, ifam->ifam_addrs, ifa->ifa_name); +#endif /* Scan to look for length of address */ alen = 0; for (p0 = p, i = 0; i < RTAX_MAX; i++) { @@ -227,6 +284,11 @@ continue; sa = (struct sockaddr *)(void *)p; len = SA_RLEN(sa); +#ifdef RTDEBUG + printf("%d: %zd sa %s len=%d family=%d\n", + __LINE__, p - buf, rtax_names[i], + sa->sa_len, sa->sa_family); +#endif if (i == RTAX_IFA) { alen = len; break; @@ -239,6 +301,11 @@ continue; sa = (struct sockaddr *)(void *)p; len = SA_RLEN(sa); +#ifdef RTDEBUG + printf("%d: %zd sa %s len=%d family=%d\n", + __LINE__, p - buf, rtax_names[i], + sa->sa_len, sa->sa_family); +#endif switch (i) { case RTAX_IFA: ift->ifa_addr = @@ -271,12 +338,22 @@ p += len; } - +#ifdef RTDEBUG + if (ift->ifa_name == NULL || ift->ifa_name[0] == 0) + printf("%p: ifa_name == NULL!\n", ift); + else + printf("%p: ifa_name=%s\n", ift, ift->ifa_name); +#endif ift = (ift->ifa_next = ift + 1); break; } } +#ifdef RTDEBUG + printf("ifa=%p data=%p names=%p\n", + ifa, data, names); +#endif + free(buf); if (--ift >= ifa) { ift->ifa_next = NULL; Index: sbin/routed/if.c =================================================================== RCS file: /cvsroot/src/sbin/routed/if.c,v retrieving revision 1.26 diff -u -r1.26 if.c --- sbin/routed/if.c 14 Aug 2007 03:39:19 -0000 1.26 +++ sbin/routed/if.c 5 Jul 2010 05:54:29 -0000 @@ -84,6 +84,19 @@ int have_ripv1_out; /* have a RIPv1 interface */ int have_ripv1_in; +#ifdef sgi +#define ROUNDUP(a) ((a) > 0 ? (1 + (((a) - 1) | (sizeof(__uint64_t) - 1))) \ + : sizeof(__uint64_t)) +#define ROUNDUPMSG(a) (a) +#elif defined(__NetBSD__) +#define ROUNDUP(a) RT_ROUNDUP(a) +#define ROUNDUPMSG(a) RT_ROUNDUP(a) +#else +#define ROUNDUP(a) ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) \ + : sizeof(long)) +#define ROUNDUPMSG(a) (a) +#endif + static struct interface** nhash(char *p) @@ -641,14 +654,6 @@ #ifdef _HAVE_SA_LEN static struct sockaddr sa_zero; #endif -#ifdef sgi -#define ROUNDUP(a) ((a) > 0 ? (1 + (((a) - 1) | (sizeof(__uint64_t) - 1))) \ - : sizeof(__uint64_t)) -#else -#define ROUNDUP(a) ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) \ - : sizeof(long)) -#endif - memset(info, 0, sizeof(*info)); info->rti_addrs = addrs; @@ -742,7 +747,7 @@ ifam < ifam_lim; ifam = ifam2) { - ifam2 = (struct ifa_msghdr*)((char*)ifam + ifam->ifam_msglen); + ifam2 = (struct ifa_msghdr*)((uintptr_t)ifam + ROUNDUPMSG(ifam->ifam_msglen)); #ifdef RTM_OIFINFO if (ifam->ifam_type == RTM_OIFINFO) @@ -769,7 +774,8 @@ #ifdef sgi ifs0.int_data.odrops = ifm->ifm_data.ifi_odrops; #endif - sdl = (const struct sockaddr_dl *)(ifm + 1); + sdl = (const struct sockaddr_dl *) + ((uintptr_t)ifm + ROUNDUP(sizeof(*ifm))); /* NUL-termination by memset, above. */ memcpy(ifs0.int_name, sdl->sdl_data, MIN(sizeof(ifs0.int_name) - 1, sdl->sdl_nlen)); Index: sbin/routed/table.c =================================================================== RCS file: /cvsroot/src/sbin/routed/table.c,v retrieving revision 1.22 diff -u -r1.22 table.c --- sbin/routed/table.c 6 Jul 2004 23:36:24 -0000 1.22 +++ sbin/routed/table.c 5 Jul 2010 05:54:29 -0000 @@ -1092,8 +1092,8 @@ rtm = (struct rt_msghdr *)next; if (rtm->rtm_msglen == 0) { msglog("zero length kernel route at " - " %#lx in buffer %#lx before %#lx", - (u_long)rtm, (u_long)sysctl_buf, (u_long)lim); + " %p in buffer %p before %p", + rtm, sysctl_buf, lim); break; } Index: sbin/route/route.c =================================================================== RCS file: /cvsroot/src/sbin/route/route.c,v retrieving revision 1.118 retrieving revision 1.118.6.1 diff -u -r1.118 -r1.118.6.1 --- sbin/route/route.c 10 Sep 2008 01:56:22 -0000 1.118 +++ sbin/route/route.c 11 May 2010 21:02:43 -0000 1.118.6.1 @@ -744,7 +744,7 @@ set_metric(const char *value, int key) { int flag = 0; - u_long noval, *valp = &noval; + u_quad_t noval, *valp = &noval; switch (key) { #define caseof(x, y, z) case x: valp = &rt_metrics.z; flag = y; break @@ -1422,7 +1422,7 @@ #define NEXTADDR(w, u) \ if (rtm_addrs & (w)) {\ - l = ROUNDUP(u.sa.sa_len); memmove(cp, &(u), l); cp += l;\ + l = RT_ROUNDUP(u.sa.sa_len); memmove(cp, &(u), l); cp += l;\ if (verbose && ! shortoutput) sodump(&(u),#u);\ } @@ -1539,7 +1539,7 @@ #endif /* SMALL */ } -const char *msgtypes[] = { +const char * const msgtypes[] = { "", "RTM_ADD: Add Route", "RTM_DELETE: Delete Route", @@ -1823,16 +1823,16 @@ if (! shortoutput) { (void)printf("\n%s\n", "\ recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire"); - printf("%8ld%c ", rtm->rtm_rmx.rmx_recvpipe, lock(RPIPE)); - printf("%8ld%c ", rtm->rtm_rmx.rmx_sendpipe, lock(SPIPE)); - printf("%8ld%c ", rtm->rtm_rmx.rmx_ssthresh, lock(SSTHRESH)); - printf("%8ld%c ", msec(rtm->rtm_rmx.rmx_rtt), lock(RTT)); - printf("%8ld%c ", msec(rtm->rtm_rmx.rmx_rttvar), lock(RTTVAR)); - printf("%8ld%c ", rtm->rtm_rmx.rmx_hopcount, lock(HOPCOUNT)); - printf("%8ld%c ", rtm->rtm_rmx.rmx_mtu, lock(MTU)); + printf("%8qd%c ", rtm->rtm_rmx.rmx_recvpipe, lock(RPIPE)); + printf("%8qd%c ", rtm->rtm_rmx.rmx_sendpipe, lock(SPIPE)); + printf("%8qd%c ", rtm->rtm_rmx.rmx_ssthresh, lock(SSTHRESH)); + printf("%8qd%c ", msec(rtm->rtm_rmx.rmx_rtt), lock(RTT)); + printf("%8qd%c ", msec(rtm->rtm_rmx.rmx_rttvar), lock(RTTVAR)); + printf("%8qd%c ", rtm->rtm_rmx.rmx_hopcount, lock(HOPCOUNT)); + printf("%8qd%c ", rtm->rtm_rmx.rmx_mtu, lock(MTU)); if (rtm->rtm_rmx.rmx_expire) rtm->rtm_rmx.rmx_expire -= time(0); - printf("%8ld%c\n", rtm->rtm_rmx.rmx_expire, lock(EXPIRE)); + printf("%8qd%c\n", rtm->rtm_rmx.rmx_expire, lock(EXPIRE)); } #undef lock #undef msec Index: usr.bin/netstat/netstat.1 =================================================================== RCS file: /cvsroot/src/usr.bin/netstat/netstat.1,v retrieving revision 1.48.12.2 retrieving revision 1.48.12.1.4.1 diff -u -r1.48.12.2 -r1.48.12.1.4.1 --- usr.bin/netstat/netstat.1 5 Sep 2009 13:05:35 -0000 1.48.12.2 +++ usr.bin/netstat/netstat.1 21 Apr 2010 05:27:11 -0000 1.48.12.1.4.1 @@ -1,4 +1,4 @@ -.\" $NetBSD: netstat.1,v 1.48.12.2 2009/09/05 13:05:35 bouyer Exp $ +.\" $NetBSD: netstat.1,v 1.48.12.1.4.1 2010/04/21 05:27:11 matt Exp $ .\" .\" Copyright (c) 1983, 1990, 1992, 1993 .\" The Regents of the University of California. All rights reserved. Index: usr.bin/netstat/route.c =================================================================== RCS file: /cvsroot/src/usr.bin/netstat/route.c,v retrieving revision 1.71 retrieving revision 1.71.10.1 diff -u -r1.71 -r1.71.10.1 --- usr.bin/netstat/route.c 23 Apr 2008 15:35:37 -0000 1.71 +++ usr.bin/netstat/route.c 11 May 2010 21:03:20 -0000 1.71.10.1 @@ -272,7 +272,7 @@ p_flags(rt->rt_flags, "%-6.6s "); printf("%6d %8lu ", rt->rt_refcnt, rt->rt_use); if (rt->rt_rmx.rmx_mtu) - printf("%6lu", rt->rt_rmx.rmx_mtu); + printf("%6"PRIu64, rt->rt_rmx.rmx_mtu); else printf("%6s", "-"); putchar((rt->rt_rmx.rmx_locks & RTV_MTU) ? 'L' : ' '); @@ -286,23 +286,23 @@ } putchar('\n'); if (vflag) { - printf("\texpire %10lu%c recvpipe %10ld%c " - "sendpipe %10ld%c\n", + printf("\texpire %10"PRIu64"%c recvpipe %10"PRId64"%c " + "sendpipe %10"PRId64"%c\n", rt->rt_rmx.rmx_expire, (rt->rt_rmx.rmx_locks & RTV_EXPIRE) ? 'L' : ' ', rt->rt_rmx.rmx_recvpipe, (rt->rt_rmx.rmx_locks & RTV_RPIPE) ? 'L' : ' ', rt->rt_rmx.rmx_sendpipe, (rt->rt_rmx.rmx_locks & RTV_SPIPE) ? 'L' : ' '); - printf("\tssthresh %10lu%c rtt %10ld%c " - "rttvar %10ld%c\n", + printf("\tssthresh %10"PRIu64"%c rtt %10"PRId64"%c " + "rttvar %10"PRId64"%c\n", rt->rt_rmx.rmx_ssthresh, (rt->rt_rmx.rmx_locks & RTV_SSTHRESH) ? 'L' : ' ', rt->rt_rmx.rmx_rtt, (rt->rt_rmx.rmx_locks & RTV_RTT) ? 'L' : ' ', rt->rt_rmx.rmx_rttvar, (rt->rt_rmx.rmx_locks & RTV_RTTVAR) ? 'L' : ' '); - printf("\thopcount %10lu%c\n", + printf("\thopcount %10"PRIu64"%c\n", rt->rt_rmx.rmx_hopcount, (rt->rt_rmx.rmx_locks & RTV_HOPCOUNT) ? 'L' : ' '); } Index: usr.bin/netstat/show.c =================================================================== RCS file: /cvsroot/src/usr.bin/netstat/show.c,v retrieving revision 1.6 retrieving revision 1.6.24.1 diff -u -r1.6 -r1.6.24.1 --- usr.bin/netstat/show.c 23 Dec 2006 11:05:14 -0000 1.6 +++ usr.bin/netstat/show.c 11 May 2010 21:03:20 -0000 1.6.24.1 @@ -254,13 +254,13 @@ WID_GW(sa->sa_family)); p_flags(rtm->rtm_flags, "%-6.6s "); #ifdef notyet /* XXX: elad */ - printf("%6d %8ld ", (int)rtm->rtm_rmx.rmx_refcnt, + printf("%6d %8"PRId64" ", (int)rtm->rtm_rmx.rmx_refcnt, rtm->rtm_rmx.rmx_pksent); #else printf("%6s %8s ", "-", "-"); #endif if (rtm->rtm_rmx.rmx_mtu) - printf("%6ld", rtm->rtm_rmx.rmx_mtu); + printf("%6"PRId64, rtm->rtm_rmx.rmx_mtu); else printf("%6s", "-"); putchar((rtm->rtm_rmx.rmx_locks & RTV_MTU) ? 'L' : ' ');