From: itojun Date: Thu, 27 Apr 2000 11:09:08 +0000 (+0000) Subject: cast result from ntohl() with u_int32_t, some platforms still mistakingly X-Git-Tag: tcpdump-3.5.1~322 X-Git-Url: https://git.tcpdump.org/tcpdump/commitdiff_plain/a09002d6a85b63a5a56624c3a1c7ffa43be1183a cast result from ntohl() with u_int32_t, some platforms still mistakingly use u_long for it. use u_int{16,32}_t. ECN support improvement (from net/openbsd). --- diff --git a/print-tcp.c b/print-tcp.c index 4cb88861..76da44d9 100644 --- a/print-tcp.c +++ b/print-tcp.c @@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: /tcpdump/master/tcpdump/print-tcp.c,v 1.63 1999-12-22 15:44:10 itojun Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/tcpdump/print-tcp.c,v 1.64 2000-04-27 11:09:08 itojun Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -82,6 +82,17 @@ static const char rcsid[] = #define TCPOPT_CCECHO 13 /* T/TCP CC options (rfc1644) */ #endif +/* + * Definitions required for ECN + * for use if the OS running tcpdump does not have ECN + */ +#ifndef TH_ECNECHO +#define TH_ECNECHO 0x40 /* ECN Echo in tcp header */ +#endif +#ifndef TH_CWR +#define TH_CWR 0x80 /* ECN Cwnd Reduced in tcp header*/ +#endif + struct tha { #ifndef INET6 struct in_addr src; @@ -125,7 +136,7 @@ tcp_print(register const u_char *bp, register u_int length, register u_char flags; register int hlen; register char ch; - u_short sport, dport, win, urp; + u_int16_t sport, dport, win, urp; u_int32_t seq, ack, thseq, thack; int threv; #ifdef INET6 @@ -180,8 +191,8 @@ tcp_print(register const u_char *bp, register u_int length, TCHECK(*tp); - seq = ntohl(tp->th_seq); - ack = ntohl(tp->th_ack); + seq = (u_int32_t)ntohl(tp->th_seq); + ack = (u_int32_t)ntohl(tp->th_ack); win = ntohs(tp->th_win); urp = ntohs(tp->th_urp); @@ -189,12 +200,8 @@ tcp_print(register const u_char *bp, register u_int length, (void)printf("tcp %d", length - tp->th_off * 4); return; } -#ifdef TH_ECN - if ((flags = tp->th_flags) & (TH_SYN|TH_FIN|TH_RST|TH_PUSH|TH_ECN)) -#else - if ((flags = tp->th_flags) & (TH_SYN|TH_FIN|TH_RST|TH_PUSH)) -#endif - { + if ((flags = tp->th_flags) & (TH_SYN|TH_FIN|TH_RST|TH_PUSH| + TH_ECNECHO|TH_CWR)) { if (flags & TH_SYN) putchar('S'); if (flags & TH_FIN) @@ -203,22 +210,13 @@ tcp_print(register const u_char *bp, register u_int length, putchar('R'); if (flags & TH_PUSH) putchar('P'); -#ifdef TH_ECN - if (flags & TH_ECN) - putchar('C'); -#endif + if (flags & TH_CWR) + putchar('W'); /* congestion _W_indow reduced (ECN) */ + if (flags & TH_ECNECHO) + putchar('E'); /* ecn _E_cho sent (ECN) */ } else putchar('.'); - if (flags&0xc0) { - printf(" ["); - if (flags&0x40) - printf("ECN-Echo"); - if (flags&0x80) - printf("%sCWR", (flags&0x40) ? "," : ""); - printf("]"); - } - if (!Sflag && (flags & TH_ACK)) { register struct tcp_seq_hash *th; register int rev; diff --git a/print-udp.c b/print-udp.c index 5f716d25..e44cabff 100644 --- a/print-udp.c +++ b/print-udp.c @@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: /tcpdump/master/tcpdump/print-udp.c,v 1.72 2000-04-27 10:57:07 itojun Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/tcpdump/print-udp.c,v 1.73 2000-04-27 11:09:08 itojun Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -127,8 +127,8 @@ vat_print(const void *hdr, u_int len, register const struct udphdr *up) ts & 0x3ff, ts >> 10); } else { /* probably vat */ - u_int i0 = ntohl(((u_int *)hdr)[0]); - u_int i1 = ntohl(((u_int *)hdr)[1]); + u_int32_t i0 = (u_int32_t)ntohl(((u_int *)hdr)[0]); + u_int32_t i1 = (u_int32_t)ntohl(((u_int *)hdr)[1]); printf(" udp/vat %u c%d %u%s", (u_int32_t)(ntohs(up->uh_ulen) - sizeof(*up) - 8), i0 & 0xffff, @@ -147,8 +147,8 @@ rtp_print(const void *hdr, u_int len, register const struct udphdr *up) /* rtp v1 or v2 */ u_int *ip = (u_int *)hdr; u_int hasopt, hasext, contype, hasmarker; - u_int i0 = ntohl(((u_int *)hdr)[0]); - u_int i1 = ntohl(((u_int *)hdr)[1]); + u_int32_t i0 = (u_int32_t)ntohl(((u_int *)hdr)[0]); + u_int32_t i1 = (u_int32_t)ntohl(((u_int *)hdr)[1]); u_int dlen = ntohs(up->uh_ulen) - sizeof(*up) - 8; const char * ptype; @@ -236,7 +236,7 @@ rtcp_print(const u_char *hdr, const u_char *ep) if (len != cnt * sizeof(*rr) + sizeof(*sr) + sizeof(*rh)) printf(" [%d]", len); if (vflag) - printf(" %u", (u_int32_t)ntohl(rh->rh_ssrc)); + printf(" %u", (u_int32_t)ntohl(rh->rh_ssrc)); if ((u_char *)(sr + 1) > ep) { printf(" [|rtcp]"); return (ep); @@ -254,18 +254,18 @@ rtcp_print(const u_char *hdr, const u_char *ep) printf(" [%d]", len); rr = (struct rtcp_rr *)(rh + 1); if (vflag) - printf(" %u", (u_int32_t)ntohl(rh->rh_ssrc)); + printf(" %u", (u_int32_t)ntohl(rh->rh_ssrc)); break; case RTCP_PT_SDES: printf(" sdes %d", len); if (vflag) - printf(" %u", (u_int32_t)ntohl(rh->rh_ssrc)); + printf(" %u", (u_int32_t)ntohl(rh->rh_ssrc)); cnt = 0; break; case RTCP_PT_BYE: printf(" bye %d", len); if (vflag) - printf(" %u", (u_int32_t)ntohl(rh->rh_ssrc)); + printf(" %u", (u_int32_t)ntohl(rh->rh_ssrc)); cnt = 0; break; default: