From owner-p4-projects@FreeBSD.ORG Thu May 6 17:29:42 2010 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 45E7F1065679; Thu, 6 May 2010 17:29:42 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 0A3BE1065673 for ; Thu, 6 May 2010 17:29:42 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id EC4CD8FC22 for ; Thu, 6 May 2010 17:29:41 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id o46HTfLr046368 for ; Thu, 6 May 2010 17:29:41 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id o46HTf01046366 for perforce@freebsd.org; Thu, 6 May 2010 17:29:41 GMT (envelope-from pgj@FreeBSD.org) Date: Thu, 6 May 2010 17:29:41 GMT Message-Id: <201005061729.o46HTf01046366@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 177839 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 06 May 2010 17:29:42 -0000 http://p4web.freebsd.org/@@177839?ac=10 Change 177839 by pgj@csupor on 2010/05/06 17:28:48 Use and move timestamp_type there to remove the temporary hack that I introduced to fix strict-aliasing issues. Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_internal.h#65 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_stat.c#29 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#74 edit .. //depot/projects/soc2009/pgj_libstat/src/sys/net/stat.h#2 edit .. //depot/projects/soc2009/pgj_libstat/src/sys/netinet/sctp_constants.h#4 edit .. //depot/projects/soc2009/pgj_libstat/src/sys/netinet/sctp_pcb.c#5 edit .. //depot/projects/soc2009/pgj_libstat/src/sys/netinet/sctp_sysctl.c#6 edit .. //depot/projects/soc2009/pgj_libstat/src/sys/netinet/sctp_uio.h#6 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_internal.h#65 (text+ko) ==== @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include @@ -319,12 +320,6 @@ struct bpf_type *bpti_next; }; -/* Timestamp type. */ -struct timestamp_type { - u_int32_t ts_sec; - u_int32_t ts_usec; -}; - /* General statistics type. */ struct stat_type { enum stat stt_type; @@ -366,8 +361,7 @@ #ifdef SCTP struct sctp_stat { - struct timestamp_type discontinuitytime; - struct sctpstat *s; + struct sctpstat s; }; #endif ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_stat.c#29 (text+ko) ==== @@ -29,7 +29,6 @@ #include #include -#include #include #include #include @@ -205,24 +204,6 @@ break; #endif /* !IPSEC */ - /* - * XXX : Try to avoid breaking strict aliasing rules, but it might not be - * the best solution. - */ - -#ifdef SCTP - case stat_SCTP: - sttp->stt_data = malloc(sizeof(struct sctp_stat)); - if (sttp->stt_data == NULL) { - sttp->stt_error = NETSTAT_ERROR_NOMEMORY; - free(buffer); - return(-1); - } - ((struct sctp_stat *)sttp->stt_data)->discontinuitytime.ts_sec = ((struct sctpstat *)buffer)->sctps_discontinuitytime.tv_sec; - ((struct sctp_stat *)sttp->stt_data)->discontinuitytime.ts_usec = ((struct sctpstat *)buffer)->sctps_discontinuitytime.tv_usec; - ((struct sctp_stat *)sttp->stt_data)->s = (struct sctpstat *)buffer; - break; -#endif /* !SCTP */ default: sttp->stt_data = buffer; } ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#74 (text+ko) ==== @@ -1656,12 +1656,12 @@ #ifdef SCTP #define SCTP_ACC(field) \ - STATS_ACCP(u_int32_t,sctp,field) + STATS_ACC(u_int32_t,sctp,field) const struct timestamp_type * -netstat_sctps_get_discontinuitytime(const struct sctp_stat *ssp) +netstat_sctps_get_discontinuitytime(const struct sctp_stat *a) { - return &ssp->discontinuitytime; + return &a->s.sctps_discontinuitytime; } STATS_GET(sctp,SCTP); ==== //depot/projects/soc2009/pgj_libstat/src/sys/net/stat.h#2 (text+ko) ==== @@ -34,4 +34,10 @@ const u_int32_t sth_len; }; +/* Timestamp type. */ +struct timestamp_type { + u_int32_t ts_sec; + u_int32_t ts_usec; +}; + #endif /* !_NET_STAT_H_ */ ==== //depot/projects/soc2009/pgj_libstat/src/sys/netinet/sctp_constants.h#4 (text+ko) ==== @@ -1009,8 +1009,8 @@ #endif /*#if defined(__FreeBSD__) || defined(__APPLE__)*/ /*#define SCTP_GETTIME_TIMEVAL(x) { \*/ -/* (x)->tv_sec = ticks / 1000; \*/ -/* (x)->tv_usec = (ticks % 1000) * 1000; \*/ +/* (x)->ts_sec = ticks / 1000; \*/ +/* (x)->ts_usec = (ticks % 1000) * 1000; \*/ /*}*/ /*#else*/ ==== //depot/projects/soc2009/pgj_libstat/src/sys/netinet/sctp_pcb.c#5 (text+ko) ==== @@ -5426,11 +5426,11 @@ #endif (void)SCTP_GETTIME_TIMEVAL(&tv); #if defined(__FreeBSD__) && defined(SMP) && defined(SCTP_USE_PERCPU_STAT) - SCTP_BASE_STATS[PCPU_GET(cpuid)].sctps_discontinuitytime.tv_sec = (uint32_t) tv.tv_sec; - SCTP_BASE_STATS[PCPU_GET(cpuid)].sctps_discontinuitytime.tv_usec = (uint32_t) tv.tv_usec; + SCTP_BASE_STATS[PCPU_GET(cpuid)].sctps_discontinuitytime.ts_sec = (u_int32_t) tv.tv_sec; + SCTP_BASE_STATS[PCPU_GET(cpuid)].sctps_discontinuitytime.ts_usec = (u_int32_t) tv.tv_usec; #else - SCTP_BASE_STAT(sctps_discontinuitytime).tv_sec = (uint32_t) tv.tv_sec; - SCTP_BASE_STAT(sctps_discontinuitytime).tv_usec = (uint32_t) tv.tv_usec; + SCTP_BASE_STAT(sctps_discontinuitytime).ts_sec = (u_int32_t) tv.tv_sec; + SCTP_BASE_STAT(sctps_discontinuitytime).ts_usec = (u_int32_t) tv.tv_usec; #endif /* init the empty list of (All) Endpoints */ LIST_INIT(&SCTP_BASE_INFO(listhead)); ==== //depot/projects/soc2009/pgj_libstat/src/sys/netinet/sctp_sysctl.c#6 (text+ko) ==== @@ -286,8 +286,8 @@ continue; memset((void *)&xladdr, 0, sizeof(struct xsctp_laddr)); memcpy((void *)&xladdr.address, (const void *)&laddr->ifa->address, sizeof(union sctp_sockstore)); - xladdr.start_time.tv_sec = (uint32_t) laddr->start_time.tv_sec; - xladdr.start_time.tv_usec = (uint32_t) laddr->start_time.tv_usec; + xladdr.start_time.ts_sec = (u_int32_t) laddr->start_time.tv_sec; + xladdr.start_time.ts_usec = (u_int32_t) laddr->start_time.tv_usec; SCTP_INP_RUNLOCK(inp); SCTP_INP_INFO_RUNLOCK(); error = SYSCTL_OUT(req, &xladdr, sizeof(struct xsctp_laddr)); @@ -423,10 +423,10 @@ xstcb.T1_expireries = stcb->asoc.timoinit + stcb->asoc.timocookie; xstcb.T2_expireries = stcb->asoc.timoshutdown + stcb->asoc.timoshutdownack; xstcb.retransmitted_tsns = stcb->asoc.marked_retrans; - xstcb.start_time.tv_sec = (uint32_t) stcb->asoc.start_time.tv_sec; - xstcb.start_time.tv_usec = (uint32_t) stcb->asoc.start_time.tv_usec; - xstcb.discontinuity_time.tv_sec = (uint32_t) stcb->asoc.discontinuity_time.tv_sec; - xstcb.discontinuity_time.tv_usec = (uint32_t) stcb->asoc.discontinuity_time.tv_usec; + xstcb.start_time.ts_sec = (u_int32_t) stcb->asoc.start_time.tv_sec; + xstcb.start_time.ts_usec = (u_int32_t) stcb->asoc.start_time.tv_usec; + xstcb.discontinuity_time.ts_sec = (u_int32_t) stcb->asoc.discontinuity_time.tv_sec; + xstcb.discontinuity_time.ts_usec = (u_int32_t) stcb->asoc.discontinuity_time.tv_usec; xstcb.total_sends = stcb->total_sends; xstcb.total_recvs = stcb->total_recvs; xstcb.local_tag = stcb->asoc.my_vtag; @@ -467,8 +467,8 @@ xraddr.flight_size = net->flight_size; xraddr.mtu = net->mtu; xraddr.rtt = net->rtt; - xraddr.start_time.tv_sec = (uint32_t) net->start_time.tv_sec; - xraddr.start_time.tv_usec = (uint32_t) net->start_time.tv_usec; + xraddr.start_time.ts_sec = (u_int32_t) net->start_time.tv_sec; + xraddr.start_time.ts_usec = (u_int32_t) net->start_time.tv_usec; SCTP_INP_RUNLOCK(inp); SCTP_INP_INFO_RUNLOCK(); error = SYSCTL_OUT(req, &xraddr, sizeof(struct xsctp_raddr)); @@ -639,9 +639,9 @@ memset(&sb, 0, sizeof(sb)); for (cpu = 0; cpu < mp_ncpus; cpu++) { sarry = &SCTP_BASE_STATS[cpu]; - if (sarry->sctps_discontinuitytime.tv_sec > sb.sctps_discontinuitytime.tv_sec) { - sb.sctps_discontinuitytime.tv_sec = sarry->sctps_discontinuitytime.tv_sec; - sb.sctps_discontinuitytime.tv_usec = sarry->sctps_discontinuitytime.tv_usec; + if (sarry->sctps_discontinuitytime.ts_sec > sb.sctps_discontinuitytime.ts_sec) { + sb.sctps_discontinuitytime.ts_sec = sarry->sctps_discontinuitytime.ts_sec; + sb.sctps_discontinuitytime.ts_usec = sarry->sctps_discontinuitytime.ts_usec; } sb.sctps_currestab += sarry->sctps_currestab; sb.sctps_activeestab += sarry->sctps_activeestab; ==== //depot/projects/soc2009/pgj_libstat/src/sys/netinet/sctp_uio.h#6 (text+ko) ==== @@ -41,6 +41,7 @@ #endif #include #include +#include #include typedef uint32_t sctp_assoc_t; @@ -759,15 +760,10 @@ struct sctp_cwnd_log log[]; }; -struct sctp_timeval { - uint32_t tv_sec; - uint32_t tv_usec; -}; - #define SCTPSTAT_VERSION 0x00000001 struct sctpstat { - struct sctp_timeval sctps_discontinuitytime; /* sctpStats 18 + struct timestamp_type sctps_discontinuitytime; /* sctpStats 18 * (TimeStamp) */ /* MIB according to RFC 3873 */ uint32_t sctps_currestab; /* sctpStats 1 (Gauge32) */ @@ -1022,8 +1018,8 @@ uint32_t refcnt; uint16_t local_port; /* sctpAssocEntry 3 */ uint16_t remote_port; /* sctpAssocEntry 4 */ - struct sctp_timeval start_time; /* sctpAssocEntry 16 */ - struct sctp_timeval discontinuity_time; /* sctpAssocEntry 17 */ + struct timestamp_type start_time; /* sctpAssocEntry 16 */ + struct timestamp_type discontinuity_time; /* sctpAssocEntry 17 */ uint32_t peers_rwnd; sctp_assoc_t assoc_id; /* sctpAssocEntry 1 */ uint32_t extra_padding[32]; /* future */ @@ -1032,7 +1028,7 @@ struct xsctp_laddr { union sctp_sockstore address; /* sctpAssocLocalAddrEntry 1/2 */ uint32_t last; - struct sctp_timeval start_time; /* sctpAssocLocalAddrEntry 3 */ + struct timestamp_type start_time; /* sctpAssocLocalAddrEntry 3 */ uint32_t extra_padding[32]; /* future */ }; @@ -1049,7 +1045,7 @@ uint8_t active; /* sctpAssocLocalRemEntry 3 */ uint8_t confirmed; /* */ uint8_t heartbeat_enabled; /* sctpAssocLocalRemEntry 4 */ - struct sctp_timeval start_time; /* sctpAssocLocalRemEntry 8 */ + struct timestamp_type start_time; /* sctpAssocLocalRemEntry 8 */ uint32_t rtt; uint32_t extra_padding[32]; /* future */ };