]> The Tcpdump Group git mirrors - tcpdump/commitdiff
cast result from ntohl() with u_int32_t, some platforms still mistakingly
authoritojun <itojun>
Thu, 27 Apr 2000 11:09:08 +0000 (11:09 +0000)
committeritojun <itojun>
Thu, 27 Apr 2000 11:09:08 +0000 (11:09 +0000)
use u_long for it.
use u_int{16,32}_t.
ECN support improvement (from net/openbsd).

print-tcp.c
print-udp.c

index 4cb88861a65b9b20ea613b21dfa4364c754c3f45..76da44d9b9963c94e37e0e3d63aeab564b89caed 100644 (file)
@@ -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;
index 5f716d25f6e0944d7bde73b8997ad9666aa08891..e44cabff7a07fd1cf19a2e7703d65494841c8780 100644 (file)
@@ -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: