net: tcp: Track ipht and resets as their own class
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 12 Jul 2017 18:06:40 +0000 (14:06 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 21 Jul 2017 15:52:54 +0000 (11:52 -0400)
These pop up a lot for conversations we're not using, such as attempted
connections to closed ports.  Resets happen both for established
connections and for closed ports, but for the most part we don't need to
see them.

Logtcpwin was unused, so I just replaced it.  I also added a 'verbose'
category, which I'll use for some extremely common logs.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/include/ip.h
kern/src/net/netlog.c
kern/src/net/tcp.c

index 81d4340..2f0a0f2 100644 (file)
@@ -427,7 +427,8 @@ enum {
        Logrudp = 1 << 15,
        Logrudpmsg = 1 << 16,
        Logesp = 1 << 17,
-       Logtcpwin = 1 << 18,
+       Logtcpreset = 1 << 18,
+       Logtcpverbose = 1 << 19,
 };
 
 void netloginit(struct Fs *);
index 4b2b040..25d2cbe 100644 (file)
@@ -79,8 +79,9 @@ static Netlogflag flags[] = {
        {"compress", Logcompress,},
        {"ilmsg", Logil | Logilmsg,},
        {"gre", Loggre,},
-       {"tcpwin", Logtcp | Logtcpwin,},
+       {"tcpreset", Logtcp | Logtcpreset,},
        {"tcprxmt", Logtcp | Logtcprxmt,},
+       {"tcpall", Logtcp | Logtcpreset | Logtcprxmt | Logtcpverbose,},
        {"udpmsg", Logudp | Logudpmsg,},
        {"ipmsg", Logip | Logipmsg,},
        {"esp", Logesp,},
index 88330e0..87fa7f6 100644 (file)
@@ -1316,7 +1316,7 @@ sndrst(struct Proto *tcp, uint8_t * source, uint8_t * dest,
        Tcp4hdr ph4;
        Tcp6hdr ph6;
 
-       netlog(tcp->f, Logtcp, "sndrst: %s\n", reason);
+       netlog(tcp->f, Logtcpreset, "sndrst: %s\n", reason);
 
        tpriv = tcp->priv;
 
@@ -2184,7 +2184,7 @@ void tcpiput(struct Proto *tcp, struct Ipifc *unused, struct block *bp)
 
        /* s, the conv matching the n-tuple, was set above */
        if (s == NULL) {
-               netlog(f, Logtcp, "iphtlook failed: src %I:%u, dst %I:%u\n",
+               netlog(f, Logtcpreset, "iphtlook failed: src %I:%u, dst %I:%u\n",
                       source, seg.source, dest, seg.dest);
 reset:
                sndrst(tcp, source, dest, length, &seg, version, "no conversation");
@@ -2309,7 +2309,8 @@ reset:
 
        /* Cut the data to fit the receive window */
        if (tcptrim(tcb, &seg, &bp, &length) == -1) {
-               netlog(f, Logtcp, "tcp len < 0, %lu %d\n", seg.seq, length);
+               netlog(f, Logtcp, "%I.%d -> %I.%d: tcp len < 0, %lu %d\n",
+                      s->raddr, s->rport, s->laddr, s->lport, seg.seq, length);
                update(s, &seg);
                if (qlen(s->wq) + tcb->flgcnt == 0 && tcb->state == Closing) {
                        tcphalt(tpriv, &tcb->rtt_timer);