qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 17/41] slirp: Drop statistic code


From: Jan Kiszka
Subject: [Qemu-devel] [PATCH 17/41] slirp: Drop statistic code
Date: Wed, 24 Jun 2009 14:42:29 +0200
User-agent: StGIT/0.14.3

As agreed on the mailing list, there is no interest in keeping the
usually disabled slirp statistics in the tree. So this patch removes
them.

Signed-off-by: Jan Kiszka <address@hidden>
---

 monitor.c          |    2 -
 net.c              |    5 --
 qemu-monitor.hx    |    2 -
 slirp/debug.c      |  154 ----------------------------------------------------
 slirp/icmp_var.h   |   18 ------
 slirp/if.h         |   20 -------
 slirp/ip.h         |   37 ------------
 slirp/ip_icmp.c    |   14 -----
 slirp/ip_input.c   |   21 -------
 slirp/ip_output.c  |    7 --
 slirp/libslirp.h   |    1 
 slirp/mbuf.c       |    5 --
 slirp/mbuf.h       |   12 ----
 slirp/slirp.h      |    9 ---
 slirp/tcp_input.c  |   49 +----------------
 slirp/tcp_output.c |   23 --------
 slirp/tcp_subr.c   |    7 --
 slirp/tcp_timer.c  |   11 ----
 slirp/tcp_var.h    |   63 ---------------------
 slirp/udp.c        |   11 ----
 slirp/udp.h        |   20 -------
 21 files changed, 6 insertions(+), 485 deletions(-)

diff --git a/monitor.c b/monitor.c
index 47fc9de..7fdd3a0 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1733,8 +1733,6 @@ static const mon_cmd_t info_cmds[] = {
       "", "show CPU statistics", },
 #endif
 #if defined(CONFIG_SLIRP)
-    { "slirp", "", do_info_slirp,
-      "", "show SLIRP statistics", },
     { "usernet", "", do_info_usernet,
       "", "show user network stack connection states", },
 #endif
diff --git a/net.c b/net.c
index 8bd3b25..99726cd 100644
--- a/net.c
+++ b/net.c
@@ -1112,11 +1112,6 @@ void net_slirp_smb(const char *exported_dir)
 
 #endif /* !defined(_WIN32) */
 
-void do_info_slirp(Monitor *mon)
-{
-    slirp_stats();
-}
-
 struct GuestFwd {
     CharDriverState *hd;
     struct in_addr server;
diff --git a/qemu-monitor.hx b/qemu-monitor.hx
index 359bdc6..e320f9f 100644
--- a/qemu-monitor.hx
+++ b/qemu-monitor.hx
@@ -85,8 +85,6 @@ show the current VM name
 show the current VM UUID
 @item info cpustats
 show CPU statistics
address@hidden info slirp
-show SLIRP statistics (if available)
 @item info usernet
 show user network stack connection states
 @item info migrate
diff --git a/slirp/debug.c b/slirp/debug.c
index 6462c88..ad02df7 100644
--- a/slirp/debug.c
+++ b/slirp/debug.c
@@ -10,157 +10,3 @@
 
 FILE *dfd = NULL;
 int slirp_debug = 0;
-
-#ifdef LOG_ENABLED
-static void
-ipstats(void)
-{
-       lprint(" \r\n");
-
-       lprint("IP stats:\r\n");
-       lprint("  %6d total packets received (%d were unaligned)\r\n",
-                       ipstat.ips_total, ipstat.ips_unaligned);
-       lprint("  %6d with incorrect version\r\n", ipstat.ips_badvers);
-       lprint("  %6d with bad header checksum\r\n", ipstat.ips_badsum);
-       lprint("  %6d with length too short (len < sizeof(iphdr))\r\n", 
ipstat.ips_tooshort);
-       lprint("  %6d with length too small (len < ip->len)\r\n", 
ipstat.ips_toosmall);
-       lprint("  %6d with bad header length\r\n", ipstat.ips_badhlen);
-       lprint("  %6d with bad packet length\r\n", ipstat.ips_badlen);
-       lprint("  %6d fragments received\r\n", ipstat.ips_fragments);
-       lprint("  %6d fragments dropped\r\n", ipstat.ips_fragdropped);
-       lprint("  %6d fragments timed out\r\n", ipstat.ips_fragtimeout);
-       lprint("  %6d packets reassembled ok\r\n", ipstat.ips_reassembled);
-       lprint("  %6d outgoing packets fragmented\r\n", ipstat.ips_fragmented);
-       lprint("  %6d total outgoing fragments\r\n", ipstat.ips_ofragments);
-       lprint("  %6d with bad protocol field\r\n", ipstat.ips_noproto);
-       lprint("  %6d total packets delivered\r\n", ipstat.ips_delivered);
-}
-
-static void
-tcpstats(void)
-{
-       lprint(" \r\n");
-
-       lprint("TCP stats:\r\n");
-
-       lprint("  %6d packets sent\r\n", tcpstat.tcps_sndtotal);
-       lprint("          %6d data packets (%d bytes)\r\n",
-                       tcpstat.tcps_sndpack, tcpstat.tcps_sndbyte);
-       lprint("          %6d data packets retransmitted (%d bytes)\r\n",
-                       tcpstat.tcps_sndrexmitpack, tcpstat.tcps_sndrexmitbyte);
-       lprint("          %6d ack-only packets (%d delayed)\r\n",
-                       tcpstat.tcps_sndacks, tcpstat.tcps_delack);
-       lprint("          %6d URG only packets\r\n", tcpstat.tcps_sndurg);
-       lprint("          %6d window probe packets\r\n", tcpstat.tcps_sndprobe);
-       lprint("          %6d window update packets\r\n", 
tcpstat.tcps_sndwinup);
-       lprint("          %6d control (SYN/FIN/RST) packets\r\n", 
tcpstat.tcps_sndctrl);
-       lprint("          %6d times tcp_output did nothing\r\n", 
tcpstat.tcps_didnuttin);
-
-       lprint("  %6d packets received\r\n", tcpstat.tcps_rcvtotal);
-       lprint("          %6d acks (for %d bytes)\r\n",
-                       tcpstat.tcps_rcvackpack, tcpstat.tcps_rcvackbyte);
-       lprint("          %6d duplicate acks\r\n", tcpstat.tcps_rcvdupack);
-       lprint("          %6d acks for unsent data\r\n", 
tcpstat.tcps_rcvacktoomuch);
-       lprint("          %6d packets received in sequence (%d bytes)\r\n",
-                       tcpstat.tcps_rcvpack, tcpstat.tcps_rcvbyte);
-        lprint("          %6d completely duplicate packets (%d bytes)\r\n",
-                       tcpstat.tcps_rcvduppack, tcpstat.tcps_rcvdupbyte);
-
-       lprint("          %6d packets with some duplicate data (%d bytes 
duped)\r\n",
-                       tcpstat.tcps_rcvpartduppack, 
tcpstat.tcps_rcvpartdupbyte);
-       lprint("          %6d out-of-order packets (%d bytes)\r\n",
-                       tcpstat.tcps_rcvoopack, tcpstat.tcps_rcvoobyte);
-       lprint("          %6d packets of data after window (%d bytes)\r\n",
-                       tcpstat.tcps_rcvpackafterwin, 
tcpstat.tcps_rcvbyteafterwin);
-       lprint("          %6d window probes\r\n", tcpstat.tcps_rcvwinprobe);
-       lprint("          %6d window update packets\r\n", 
tcpstat.tcps_rcvwinupd);
-       lprint("          %6d packets received after close\r\n", 
tcpstat.tcps_rcvafterclose);
-       lprint("          %6d discarded for bad checksums\r\n", 
tcpstat.tcps_rcvbadsum);
-       lprint("          %6d discarded for bad header offset fields\r\n",
-                       tcpstat.tcps_rcvbadoff);
-
-       lprint("  %6d connection requests\r\n", tcpstat.tcps_connattempt);
-       lprint("  %6d connection accepts\r\n", tcpstat.tcps_accepts);
-       lprint("  %6d connections established (including accepts)\r\n", 
tcpstat.tcps_connects);
-       lprint("  %6d connections closed (including %d drop)\r\n",
-                       tcpstat.tcps_closed, tcpstat.tcps_drops);
-       lprint("  %6d embryonic connections dropped\r\n", 
tcpstat.tcps_conndrops);
-       lprint("  %6d segments we tried to get rtt (%d succeeded)\r\n",
-                       tcpstat.tcps_segstimed, tcpstat.tcps_rttupdated);
-       lprint("  %6d retransmit timeouts\r\n", tcpstat.tcps_rexmttimeo);
-       lprint("          %6d connections dropped by rxmt timeout\r\n",
-                       tcpstat.tcps_timeoutdrop);
-       lprint("  %6d persist timeouts\r\n", tcpstat.tcps_persisttimeo);
-       lprint("  %6d keepalive timeouts\r\n", tcpstat.tcps_keeptimeo);
-       lprint("          %6d keepalive probes sent\r\n", 
tcpstat.tcps_keepprobe);
-       lprint("          %6d connections dropped by keepalive\r\n", 
tcpstat.tcps_keepdrops);
-       lprint("  %6d correct ACK header predictions\r\n", 
tcpstat.tcps_predack);
-       lprint("  %6d correct data packet header predictions\n", 
tcpstat.tcps_preddat);
-       lprint("  %6d TCP cache misses\r\n", tcpstat.tcps_socachemiss);
-}
-
-static void
-udpstats(void)
-{
-        lprint(" \r\n");
-
-       lprint("UDP stats:\r\n");
-       lprint("  %6d datagrams received\r\n", udpstat.udps_ipackets);
-       lprint("  %6d with packets shorter than header\r\n", 
udpstat.udps_hdrops);
-       lprint("  %6d with bad checksums\r\n", udpstat.udps_badsum);
-       lprint("  %6d with data length larger than packet\r\n", 
udpstat.udps_badlen);
-       lprint("  %6d UDP socket cache misses\r\n", udpstat.udpps_pcbcachemiss);
-       lprint("  %6d datagrams sent\r\n", udpstat.udps_opackets);
-}
-
-static void
-icmpstats(void)
-{
-       lprint(" \r\n");
-       lprint("ICMP stats:\r\n");
-       lprint("  %6d ICMP packets received\r\n", icmpstat.icps_received);
-       lprint("  %6d were too short\r\n", icmpstat.icps_tooshort);
-       lprint("  %6d with bad checksums\r\n", icmpstat.icps_checksum);
-       lprint("  %6d with type not supported\r\n", icmpstat.icps_notsupp);
-       lprint("  %6d with bad type feilds\r\n", icmpstat.icps_badtype);
-       lprint("  %6d ICMP packets sent in reply\r\n", icmpstat.icps_reflect);
-}
-
-static void
-mbufstats(void)
-{
-       struct mbuf *m;
-       int i;
-
-        lprint(" \r\n");
-
-       lprint("Mbuf stats:\r\n");
-
-       lprint("  %6d mbufs allocated (%d max)\r\n", mbuf_alloced, mbuf_max);
-
-       i = 0;
-       for (m = m_freelist.m_next; m != &m_freelist; m = m->m_next)
-               i++;
-       lprint("  %6d mbufs on free list\r\n",  i);
-
-       i = 0;
-       for (m = m_usedlist.m_next; m != &m_usedlist; m = m->m_next)
-               i++;
-       lprint("  %6d mbufs on used list\r\n",  i);
-        lprint("  %6d mbufs queued as packets\r\n\r\n", if_queued);
-}
-#endif
-
-void
-slirp_stats(void)
-{
-#ifdef LOG_ENABLED
-    ipstats();
-    tcpstats();
-    udpstats();
-    icmpstats();
-    mbufstats();
-#else
-    lprint("SLIRP statistics code not compiled.\n");
-#endif
-}
diff --git a/slirp/icmp_var.h b/slirp/icmp_var.h
index 99d4c9e..edbb922 100644
--- a/slirp/icmp_var.h
+++ b/slirp/icmp_var.h
@@ -34,20 +34,6 @@
 #define _NETINET_ICMP_VAR_H_
 
 /*
- * Variables related to this implementation
- * of the internet control message protocol.
- */
-struct icmpstat {
-/* statistics related to input messages processed */
-       u_long  icps_received;          /* #ICMP packets received */
-       u_long  icps_tooshort;          /* packet < ICMP_MINLEN */
-       u_long  icps_checksum;          /* bad checksum */
-       u_long  icps_notsupp;           /* #ICMP packets not supported */
-       u_long  icps_badtype;           /* #with bad type feild */
-       u_long  icps_reflect;           /* number of responses */
-};
-
-/*
  * Names for ICMP sysctl objects
  */
 #define        ICMPCTL_MASKREPL        1       /* allow replies to netmask 
requests */
@@ -60,8 +46,4 @@ struct icmpstat {
        { "stats", CTLTYPE_STRUCT }, \
 }
 
-#ifdef LOG_ENABLED
-extern struct icmpstat icmpstat;
-#endif
-
 #endif
diff --git a/slirp/if.h b/slirp/if.h
index d49bcd5..2fdc354 100644
--- a/slirp/if.h
+++ b/slirp/if.h
@@ -28,24 +28,4 @@ extern       struct mbuf *next_m;
 
 #define ifs_init(ifm) ((ifm)->ifs_next = (ifm)->ifs_prev = (ifm))
 
-#ifdef LOG_ENABLED
-/* Interface statistics */
-struct slirp_ifstats {
-       u_int out_pkts;         /* Output packets */
-       u_int out_bytes;                /* Output bytes */
-       u_int out_errpkts;      /* Output Error Packets */
-       u_int out_errbytes;     /* Output Error Bytes */
-       u_int in_pkts;          /* Input packets */
-       u_int in_bytes;         /* Input bytes */
-       u_int in_errpkts;               /* Input Error Packets */
-       u_int in_errbytes;      /* Input Error Bytes */
-
-       u_int bytes_saved;      /* Number of bytes that compression "saved" */
-                               /* ie: number of bytes that didn't need to be 
sent over the link
-                                * because of compression */
-
-       u_int in_mbad;          /* Bad incoming packets */
-};
-#endif
-
 #endif
diff --git a/slirp/ip.h b/slirp/ip.h
index 7a7a9b9..e0d7674 100644
--- a/slirp/ip.h
+++ b/slirp/ip.h
@@ -250,43 +250,6 @@ struct ipoption {
        int8_t  ipopt_list[MAX_IPOPTLEN];       /* options proper */
 };
 
-#ifdef LOG_ENABLED
-/*
- * Structure attached to inpcb.ip_moptions and
- * passed to ip_output when IP multicast options are in use.
- */
-
-struct ipstat {
-       u_long  ips_total;              /* total packets received */
-       u_long  ips_badsum;             /* checksum bad */
-       u_long  ips_tooshort;           /* packet too short */
-       u_long  ips_toosmall;           /* not enough data */
-       u_long  ips_badhlen;            /* ip header length < data size */
-       u_long  ips_badlen;             /* ip length < ip header length */
-       u_long  ips_fragments;          /* fragments received */
-       u_long  ips_fragdropped;        /* frags dropped (dups, out of space) */
-       u_long  ips_fragtimeout;        /* fragments timed out */
-       u_long  ips_forward;            /* packets forwarded */
-       u_long  ips_cantforward;        /* packets rcvd for unreachable dest */
-       u_long  ips_redirectsent;       /* packets forwarded on same net */
-       u_long  ips_noproto;            /* unknown or unsupported protocol */
-       u_long  ips_delivered;          /* datagrams delivered to upper level*/
-       u_long  ips_localout;           /* total ip packets generated here */
-       u_long  ips_odropped;           /* lost packets due to nobufs, etc. */
-       u_long  ips_reassembled;        /* total packets reassembled ok */
-       u_long  ips_fragmented;         /* datagrams successfully fragmented */
-       u_long  ips_ofragments;         /* output fragments created */
-       u_long  ips_cantfrag;           /* don't fragment flag was set, etc. */
-       u_long  ips_badoptions;         /* error in option processing */
-       u_long  ips_noroute;            /* packets discarded due to no route */
-       u_long  ips_badvers;            /* ip version != 4 */
-       u_long  ips_rawout;             /* total raw ip packets generated */
-       u_long  ips_unaligned;          /* times the ip packet was not aligned 
*/
-};
-
-extern struct  ipstat  ipstat;
-#endif
-
 extern struct  ipq     ipq;                    /* ip reass. queue */
 extern u_int16_t       ip_id;                          /* ip packet ctr, for 
ids */
 
diff --git a/slirp/ip_icmp.c b/slirp/ip_icmp.c
index c47ab1f..66b4d23 100644
--- a/slirp/ip_icmp.c
+++ b/slirp/ip_icmp.c
@@ -33,10 +33,6 @@
 #include "slirp.h"
 #include "ip_icmp.h"
 
-#ifdef LOG_ENABLED
-struct icmpstat icmpstat;
-#endif
-
 /* The message sent when emulating PING */
 /* Be nice and tell them it's just a pseudo-ping packet */
 static const char icmp_ping_msg[] = "This is a pseudo-PING packet used by 
Slirp to emulate ICMP ECHO-REQUEST packets.\n";
@@ -78,14 +74,11 @@ icmp_input(struct mbuf *m, int hlen)
   DEBUG_ARG("m = %lx", (long )m);
   DEBUG_ARG("m_len = %d", m->m_len);
 
-  STAT(icmpstat.icps_received++);
-
   /*
    * Locate icmp structure in mbuf, and check
    * that its not corrupted and of at least minimum length.
    */
   if (icmplen < ICMP_MINLEN) {          /* min 8 bytes payload */
-    STAT(icmpstat.icps_tooshort++);
   freeit:
     m_freem(m);
     goto end_error;
@@ -95,7 +88,6 @@ icmp_input(struct mbuf *m, int hlen)
   m->m_data += hlen;
   icp = mtod(m, struct icmp *);
   if (cksum(m, icmplen)) {
-    STAT(icmpstat.icps_checksum++);
     goto freeit;
   }
   m->m_len += hlen;
@@ -159,12 +151,10 @@ icmp_input(struct mbuf *m, int hlen)
   case ICMP_TSTAMP:
   case ICMP_MASKREQ:
   case ICMP_REDIRECT:
-    STAT(icmpstat.icps_notsupp++);
     m_freem(m);
     break;
 
   default:
-    STAT(icmpstat.icps_badtype++);
     m_freem(m);
   } /* swith */
 
@@ -299,8 +289,6 @@ icmp_error(struct mbuf *msrc, u_char type, u_char code, int 
minsize,
 
   (void ) ip_output((struct socket *)NULL, m);
 
-  STAT(icmpstat.icps_reflect++);
-
 end_error:
   return;
 }
@@ -354,6 +342,4 @@ icmp_reflect(struct mbuf *m)
   }
 
   (void ) ip_output((struct socket *)NULL, m);
-
-  STAT(icmpstat.icps_reflect++);
 }
diff --git a/slirp/ip_input.c b/slirp/ip_input.c
index 1fdd8d6..0356eb5 100644
--- a/slirp/ip_input.c
+++ b/slirp/ip_input.c
@@ -42,10 +42,6 @@
 #include <osdep.h>
 #include "ip_icmp.h"
 
-#ifdef LOG_ENABLED
-struct ipstat ipstat;
-#endif
-
 struct ipq ipq;
 
 static struct ip *ip_reass(register struct ip *ip,
@@ -82,24 +78,19 @@ ip_input(struct mbuf *m)
        DEBUG_ARG("m = %lx", (long)m);
        DEBUG_ARG("m_len = %d", m->m_len);
 
-       STAT(ipstat.ips_total++);
-
        if (m->m_len < sizeof (struct ip)) {
-               STAT(ipstat.ips_toosmall++);
                return;
        }
 
        ip = mtod(m, struct ip *);
 
        if (ip->ip_v != IPVERSION) {
-               STAT(ipstat.ips_badvers++);
                goto bad;
        }
 
        hlen = ip->ip_hl << 2;
        if (hlen<sizeof(struct ip ) || hlen>m->m_len) {/* min header length */
-         STAT(ipstat.ips_badhlen++);                     /* or packet too 
short */
-         goto bad;
+         goto bad;                                  /* or packet too short */
        }
 
         /* keep ip header intact for ICMP reply
@@ -107,7 +98,6 @@ ip_input(struct mbuf *m)
         * if (ip->ip_sum) {
         */
        if(cksum(m,hlen)) {
-         STAT(ipstat.ips_badsum++);
          goto bad;
        }
 
@@ -116,7 +106,6 @@ ip_input(struct mbuf *m)
         */
        NTOHS(ip->ip_len);
        if (ip->ip_len < hlen) {
-               STAT(ipstat.ips_badlen++);
                goto bad;
        }
        NTOHS(ip->ip_id);
@@ -129,7 +118,6 @@ ip_input(struct mbuf *m)
         * Drop packet if shorter than we expect.
         */
        if (m->m_len < ip->ip_len) {
-               STAT(ipstat.ips_tooshort++);
                goto bad;
        }
 
@@ -210,11 +198,9 @@ ip_input(struct mbuf *m)
                 * attempt reassembly; if it succeeds, proceed.
                 */
                if (ip->ip_tos & 1 || ip->ip_off) {
-                       STAT(ipstat.ips_fragments++);
                        ip = ip_reass(ip, fp);
                         if (ip == NULL)
                                return;
-                       STAT(ipstat.ips_reassembled++);
                        m = dtom(ip);
                } else
                        if (fp)
@@ -226,7 +212,6 @@ ip_input(struct mbuf *m)
        /*
         * Switch out to protocol's input routine.
         */
-       STAT(ipstat.ips_delivered++);
        switch (ip->ip_p) {
         case IPPROTO_TCP:
                tcp_input(m, hlen, (struct socket *)NULL);
@@ -238,7 +223,6 @@ ip_input(struct mbuf *m)
                icmp_input(m, hlen);
                break;
         default:
-               STAT(ipstat.ips_noproto++);
                m_free(m);
        }
        return;
@@ -399,7 +383,6 @@ insert:
        return ip;
 
 dropfrag:
-       STAT(ipstat.ips_fragdropped++);
        m_freem(m);
         return NULL;
 }
@@ -468,7 +451,6 @@ ip_slowtimo(void)
         struct ipq *fp = container_of(l, struct ipq, ip_link);
         l = l->next;
                if (--fp->ipq_ttl == 0) {
-                       STAT(ipstat.ips_fragtimeout++);
                        ip_freef(fp);
                }
        }
@@ -671,7 +653,6 @@ typedef u_int32_t n_time;
 bad:
        icmp_error(m, type, code, 0, 0);
 
-       STAT(ipstat.ips_badoptions++);
        return (1);
 }
 
diff --git a/slirp/ip_output.c b/slirp/ip_output.c
index 94bb0f2..3031f4d 100644
--- a/slirp/ip_output.c
+++ b/slirp/ip_output.c
@@ -72,7 +72,6 @@ ip_output(struct socket *so, struct mbuf *m0)
        ip->ip_off &= IP_DF;
        ip->ip_id = htons(ip_id++);
        ip->ip_hl = hlen >> 2;
-       STAT(ipstat.ips_localout++);
 
        /*
         * If small enough for interface, can just send directly.
@@ -93,7 +92,6 @@ ip_output(struct socket *so, struct mbuf *m0)
         */
        if (ip->ip_off & IP_DF) {
                error = -1;
-               STAT(ipstat.ips_cantfrag++);
                goto bad;
        }
 
@@ -118,7 +116,6 @@ ip_output(struct socket *so, struct mbuf *m0)
          m = m_get();
           if (m == NULL) {
            error = -1;
-           STAT(ipstat.ips_odropped++);
            goto sendorfree;
          }
          m->m_data += IF_MAXLINKHDR;
@@ -145,7 +142,6 @@ ip_output(struct socket *so, struct mbuf *m0)
          mhip->ip_sum = cksum(m, mhlen);
          *mnext = m;
          mnext = &m->m_nextpkt;
-         STAT(ipstat.ips_ofragments++);
        }
        /*
         * Update first fragment by trimming what's been copied out
@@ -166,9 +162,6 @@ sendorfree:
                else
                        m_freem(m);
        }
-
-       if (error == 0)
-               STAT(ipstat.ips_fragmented++);
     }
 
 done:
diff --git a/slirp/libslirp.h b/slirp/libslirp.h
index c48837c..8117187 100644
--- a/slirp/libslirp.h
+++ b/slirp/libslirp.h
@@ -26,7 +26,6 @@ int slirp_remove_hostfwd(int is_udp, struct in_addr 
host_addr, int host_port);
 int slirp_add_exec(int do_pty, const void *args, struct in_addr guest_addr,
                    int guest_port);
 
-void slirp_stats(void);
 void slirp_connection_info(Monitor *mon);
 
 void slirp_socket_recv(struct in_addr guest_addr, int guest_port,
diff --git a/slirp/mbuf.c b/slirp/mbuf.c
index 7963d34..888de86 100644
--- a/slirp/mbuf.c
+++ b/slirp/mbuf.c
@@ -17,10 +17,9 @@
 
 #include <slirp.h>
 
-int mbuf_alloced = 0;
+static int mbuf_alloced;
 struct mbuf m_freelist, m_usedlist;
 #define MBUF_THRESH 30
-int mbuf_max = 0;
 
 /*
  * Find a nice value for msize
@@ -57,8 +56,6 @@ m_get(void)
                mbuf_alloced++;
                if (mbuf_alloced > MBUF_THRESH)
                        flags = M_DOFREE;
-               if (mbuf_alloced > mbuf_max)
-                       mbuf_max = mbuf_alloced;
        } else {
                m = m_freelist.m_next;
                remque(m);
diff --git a/slirp/mbuf.h b/slirp/mbuf.h
index e259441..c482753 100644
--- a/slirp/mbuf.h
+++ b/slirp/mbuf.h
@@ -114,19 +114,7 @@ struct mbuf {
 #define M_DOFREE               0x08    /* when m_free is called on the mbuf, 
free()
                                         * it rather than putting it on the 
free list */
 
-/*
- * Mbuf statistics. XXX
- */
-
-struct mbstat {
-       int mbs_alloced;                /* Number of mbufs allocated */
-
-};
-
-extern struct  mbstat mbstat;
-extern int mbuf_alloced;
 extern struct mbuf m_freelist, m_usedlist;
-extern int mbuf_max;
 
 void m_init _P((void));
 struct mbuf * m_get _P((void));
diff --git a/slirp/slirp.h b/slirp/slirp.h
index 0c62fd7..c308582 100644
--- a/slirp/slirp.h
+++ b/slirp/slirp.h
@@ -3,15 +3,6 @@
 
 //#define DEBUG 1
 
-// Uncomment the following line to enable SLIRP statistics printing in Qemu
-//#define LOG_ENABLED
-
-#ifdef LOG_ENABLED
-#define STAT(expr) expr
-#else
-#define STAT(expr) do { } while(0)
-#endif
-
 #include "config-host.h"
 #include "slirp_config.h"
 
diff --git a/slirp/tcp_input.c b/slirp/tcp_input.c
index 980ae06..b7a67e5 100644
--- a/slirp/tcp_input.c
+++ b/slirp/tcp_input.c
@@ -75,8 +75,6 @@ tcp_seq tcp_iss;                /* tcp initial send seq # */
                        tp->t_flags |= TF_DELACK; \
                (tp)->rcv_nxt += (ti)->ti_len; \
                flags = (ti)->ti_flags & TH_FIN; \
-               STAT(tcpstat.tcps_rcvpack++);         \
-               STAT(tcpstat.tcps_rcvbyte += (ti)->ti_len);   \
                if (so->so_emu) { \
                       if (tcp_emu((so),(m))) sbappend((so), (m)); \
               } else \
@@ -94,8 +92,6 @@ tcp_seq tcp_iss;                /* tcp initial send seq # */
                tp->t_flags |= TF_DELACK; \
                (tp)->rcv_nxt += (ti)->ti_len; \
                flags = (ti)->ti_flags & TH_FIN; \
-               STAT(tcpstat.tcps_rcvpack++);        \
-               STAT(tcpstat.tcps_rcvbyte += (ti)->ti_len);  \
                if (so->so_emu) { \
                        if (tcp_emu((so),(m))) sbappend(so, (m)); \
                } else \
@@ -145,8 +141,6 @@ tcp_reass(register struct tcpcb *tp, register struct 
tcpiphdr *ti,
                i = q->ti_seq + q->ti_len - ti->ti_seq;
                if (i > 0) {
                        if (i >= ti->ti_len) {
-                               STAT(tcpstat.tcps_rcvduppack++);
-                               STAT(tcpstat.tcps_rcvdupbyte += ti->ti_len);
                                m_freem(m);
                                /*
                                 * Try to present any queued data
@@ -162,8 +156,6 @@ tcp_reass(register struct tcpcb *tp, register struct 
tcpiphdr *ti,
                }
                q = tcpiphdr_next(q);
        }
-       STAT(tcpstat.tcps_rcvoopack++);
-       STAT(tcpstat.tcps_rcvoobyte += ti->ti_len);
        ti->ti_mbuf = m;
 
        /*
@@ -263,8 +255,6 @@ tcp_input(struct mbuf *m, int iphlen, struct socket *inso)
                goto cont_conn;
        }
 
-
-       STAT(tcpstat.tcps_rcvtotal++);
        /*
         * Get IP and TCP header together in first mbuf.
         * Note: IP leaves IP header in first mbuf.
@@ -295,7 +285,6 @@ tcp_input(struct mbuf *m, int iphlen, struct socket *inso)
        ti->ti_len = htons((u_int16_t)tlen);
        len = sizeof(struct ip ) + tlen;
        if(cksum(m, len)) {
-         STAT(tcpstat.tcps_rcvbadsum++);
          goto drop;
        }
 
@@ -305,7 +294,6 @@ tcp_input(struct mbuf *m, int iphlen, struct socket *inso)
         */
        off = ti->ti_off << 2;
        if (off < sizeof (struct tcphdr) || off > tlen) {
-         STAT(tcpstat.tcps_rcvbadoff++);
          goto drop;
        }
        tlen -= off;
@@ -353,7 +341,6 @@ findso:
                               ti->ti_dst, ti->ti_dport);
                if (so)
                        tcp_last_so = so;
-               STAT(tcpstat.tcps_socachemiss++);
        }
 
        /*
@@ -460,13 +447,10 @@ findso:
                                /*
                                 * this is a pure ack for outstanding data.
                                 */
-                               STAT(tcpstat.tcps_predack++);
                                if (tp->t_rtt &&
                                    SEQ_GT(ti->ti_ack, tp->t_rtseq))
                                        tcp_xmit_timer(tp, tp->t_rtt);
                                acked = ti->ti_ack - tp->snd_una;
-                               STAT(tcpstat.tcps_rcvackpack++);
-                               STAT(tcpstat.tcps_rcvackbyte += acked);
                                sbdrop(&so->so_snd, acked);
                                tp->snd_una = ti->ti_ack;
                                m_freem(m);
@@ -503,10 +487,7 @@ findso:
                         * with nothing on the reassembly queue and
                         * we have enough buffer space to take it.
                         */
-                       STAT(tcpstat.tcps_preddat++);
                        tp->rcv_nxt += ti->ti_len;
-                       STAT(tcpstat.tcps_rcvpack++);
-                       STAT(tcpstat.tcps_rcvbyte += ti->ti_len);
                        /*
                         * Add data to socket buffer.
                         */
@@ -658,7 +639,6 @@ findso:
          tp->t_flags |= TF_ACKNOW;
          tp->t_state = TCPS_SYN_RECEIVED;
          tp->t_timer[TCPT_KEEP] = TCPTV_KEEP_INIT;
-         STAT(tcpstat.tcps_accepts++);
          goto trimthenstep6;
        } /* case TCPS_LISTEN */
 
@@ -699,7 +679,6 @@ findso:
                tcp_rcvseqinit(tp);
                tp->t_flags |= TF_ACKNOW;
                if (tiflags & TH_ACK && SEQ_GT(tp->snd_una, tp->iss)) {
-                       STAT(tcpstat.tcps_connects++);
                        soisfconnected(so);
                        tp->t_state = TCPS_ESTABLISHED;
 
@@ -726,8 +705,6 @@ trimthenstep6:
                        m_adj(m, -todrop);
                        ti->ti_len = tp->rcv_wnd;
                        tiflags &= ~TH_FIN;
-                       STAT(tcpstat.tcps_rcvpackafterwin++);
-                       STAT(tcpstat.tcps_rcvbyteafterwin += todrop);
                }
                tp->snd_wl1 = ti->ti_seq - 1;
                tp->rcv_up = ti->ti_seq;
@@ -768,11 +745,6 @@ trimthenstep6:
                         */
                        tp->t_flags |= TF_ACKNOW;
                        todrop = ti->ti_len;
-                       STAT(tcpstat.tcps_rcvduppack++);
-                       STAT(tcpstat.tcps_rcvdupbyte += todrop);
-               } else {
-                       STAT(tcpstat.tcps_rcvpartduppack++);
-                       STAT(tcpstat.tcps_rcvpartdupbyte += todrop);
                }
                m_adj(m, todrop);
                ti->ti_seq += todrop;
@@ -791,7 +763,6 @@ trimthenstep6:
        if ((so->so_state & SS_NOFDREF) &&
            tp->t_state > TCPS_CLOSE_WAIT && ti->ti_len) {
                tp = tcp_close(tp);
-               STAT(tcpstat.tcps_rcvafterclose++);
                goto dropwithreset;
        }
 
@@ -801,9 +772,7 @@ trimthenstep6:
         */
        todrop = (ti->ti_seq+ti->ti_len) - (tp->rcv_nxt+tp->rcv_wnd);
        if (todrop > 0) {
-               STAT(tcpstat.tcps_rcvpackafterwin++);
                if (todrop >= ti->ti_len) {
-                       STAT(tcpstat.tcps_rcvbyteafterwin += ti->ti_len);
                        /*
                         * If a new connection request is received
                         * while in TIME_WAIT, drop the old connection
@@ -826,11 +795,10 @@ trimthenstep6:
                         */
                        if (tp->rcv_wnd == 0 && ti->ti_seq == tp->rcv_nxt) {
                                tp->t_flags |= TF_ACKNOW;
-                               STAT(tcpstat.tcps_rcvwinprobe++);
-                       } else
+                       } else {
                                goto dropafterack;
-               } else
-                       STAT(tcpstat.tcps_rcvbyteafterwin += todrop);
+                       }
+               }
                m_adj(m, -todrop);
                ti->ti_len -= todrop;
                tiflags &= ~(TH_PUSH|TH_FIN);
@@ -854,7 +822,6 @@ trimthenstep6:
        case TCPS_FIN_WAIT_2:
        case TCPS_CLOSE_WAIT:
                tp->t_state = TCPS_CLOSED;
-               STAT(tcpstat.tcps_drops++);
                tp = tcp_close(tp);
                goto drop;
 
@@ -893,7 +860,6 @@ trimthenstep6:
                if (SEQ_GT(tp->snd_una, ti->ti_ack) ||
                    SEQ_GT(ti->ti_ack, tp->snd_max))
                        goto dropwithreset;
-               STAT(tcpstat.tcps_connects++);
                tp->t_state = TCPS_ESTABLISHED;
                /*
                 * The sent SYN is ack'ed with our sequence number +1
@@ -944,7 +910,6 @@ trimthenstep6:
 
                if (SEQ_LEQ(ti->ti_ack, tp->snd_una)) {
                        if (ti->ti_len == 0 && tiwin == tp->snd_wnd) {
-                         STAT(tcpstat.tcps_rcvdupack++);
                          DEBUG_MISC((dfd," dup ack  m = %lx  so = %lx \n",
                                      (long )m, (long )so));
                                /*
@@ -1012,12 +977,9 @@ trimthenstep6:
                        tp->snd_cwnd = tp->snd_ssthresh;
                tp->t_dupacks = 0;
                if (SEQ_GT(ti->ti_ack, tp->snd_max)) {
-                       STAT(tcpstat.tcps_rcvacktoomuch++);
                        goto dropafterack;
                }
                acked = ti->ti_ack - tp->snd_una;
-               STAT(tcpstat.tcps_rcvackpack++);
-               STAT(tcpstat.tcps_rcvackbyte += acked);
 
                /*
                 * If transmit timer is running and timed sequence
@@ -1138,10 +1100,6 @@ step6:
            (SEQ_LT(tp->snd_wl1, ti->ti_seq) ||
            (tp->snd_wl1 == ti->ti_seq && (SEQ_LT(tp->snd_wl2, ti->ti_ack) ||
            (tp->snd_wl2 == ti->ti_ack && tiwin > tp->snd_wnd))))) {
-               /* keep track of pure window updates */
-               if (ti->ti_len == 0 &&
-                   tp->snd_wl2 == ti->ti_ack && tiwin > tp->snd_wnd)
-                       STAT(tcpstat.tcps_rcvwinupd++);
                tp->snd_wnd = tiwin;
                tp->snd_wl1 = ti->ti_seq;
                tp->snd_wl2 = ti->ti_ack;
@@ -1425,7 +1383,6 @@ tcp_xmit_timer(register struct tcpcb *tp, int rtt)
        DEBUG_ARG("tp = %lx", (long)tp);
        DEBUG_ARG("rtt = %d", rtt);
 
-       STAT(tcpstat.tcps_rttupdated++);
        if (tp->t_srtt != 0) {
                /*
                 * srtt is stored as fixed point with 3 bits after the
diff --git a/slirp/tcp_output.c b/slirp/tcp_output.c
index a11f3da..686e90d 100644
--- a/slirp/tcp_output.c
+++ b/slirp/tcp_output.c
@@ -247,8 +247,6 @@ again:
        /*
         * No reason to send a segment, just return.
         */
-       STAT(tcpstat.tcps_didnuttin++);
-
        return (0);
 
 send:
@@ -292,16 +290,6 @@ send:
         * the template for sends on this connection.
         */
        if (len) {
-               if (tp->t_force && len == 1)
-                       STAT(tcpstat.tcps_sndprobe++);
-               else if (SEQ_LT(tp->snd_nxt, tp->snd_max)) {
-                       STAT(tcpstat.tcps_sndrexmitpack++);
-                       STAT(tcpstat.tcps_sndrexmitbyte += len);
-               } else {
-                       STAT(tcpstat.tcps_sndpack++);
-                       STAT(tcpstat.tcps_sndbyte += len);
-               }
-
                m = m_get();
                if (m == NULL) {
                        error = 1;
@@ -322,15 +310,6 @@ send:
                if (off + len == so->so_snd.sb_cc)
                        flags |= TH_PUSH;
        } else {
-               if (tp->t_flags & TF_ACKNOW)
-                       STAT(tcpstat.tcps_sndacks++);
-               else if (flags & (TH_SYN|TH_FIN|TH_RST))
-                       STAT(tcpstat.tcps_sndctrl++);
-               else if (SEQ_GT(tp->snd_up, tp->snd_una))
-                       STAT(tcpstat.tcps_sndurg++);
-               else
-                       STAT(tcpstat.tcps_sndwinup++);
-
                m = m_get();
                if (m == NULL) {
                        error = 1;
@@ -436,7 +415,6 @@ send:
                        if (tp->t_rtt == 0) {
                                tp->t_rtt = 1;
                                tp->t_rtseq = startseq;
-                               STAT(tcpstat.tcps_segstimed++);
                        }
                }
 
@@ -481,7 +459,6 @@ send:
 out:
                return (error);
        }
-       STAT(tcpstat.tcps_sndtotal++);
 
        /*
         * Data sent (as far as we can tell).
diff --git a/slirp/tcp_subr.c b/slirp/tcp_subr.c
index 892bd83..868382a 100644
--- a/slirp/tcp_subr.c
+++ b/slirp/tcp_subr.c
@@ -222,9 +222,7 @@ struct tcpcb *tcp_drop(struct tcpcb *tp, int err)
        if (TCPS_HAVERCVDSYN(tp->t_state)) {
                tp->t_state = TCPS_CLOSED;
                (void) tcp_output(tp);
-               STAT(tcpstat.tcps_drops++);
-       } else
-               STAT(tcpstat.tcps_conndrops++);
+       }
        return (tcp_close(tp));
 }
 
@@ -261,7 +259,6 @@ tcp_close(struct tcpcb *tp)
        sbfree(&so->so_rcv);
        sbfree(&so->so_snd);
        sofree(so);
-       STAT(tcpstat.tcps_closed++);
        return ((struct tcpcb *)0);
 }
 
@@ -442,8 +439,6 @@ tcp_connect(struct socket *inso)
 
        tcp_template(tp);
 
-       STAT(tcpstat.tcps_connattempt++);
-
        tp->t_state = TCPS_SYN_SENT;
        tp->t_timer[TCPT_KEEP] = TCPTV_KEEP_INIT;
        tp->iss = tcp_iss;
diff --git a/slirp/tcp_timer.c b/slirp/tcp_timer.c
index 9cacb0f..cd71572 100644
--- a/slirp/tcp_timer.c
+++ b/slirp/tcp_timer.c
@@ -32,10 +32,6 @@
 
 #include <slirp.h>
 
-#ifdef LOG_ENABLED
-struct   tcpstat tcpstat;        /* tcp statistics */
-#endif
-
 u_int32_t        tcp_now;                /* for RFC 1323 timestamps */
 
 static struct tcpcb *tcp_timers(register struct tcpcb *tp, int timer);
@@ -58,7 +54,6 @@ tcp_fasttimo(void)
                    (tp->t_flags & TF_DELACK)) {
                        tp->t_flags &= ~TF_DELACK;
                        tp->t_flags |= TF_ACKNOW;
-                       STAT(tcpstat.tcps_delack++);
                        (void) tcp_output(tp);
                }
 }
@@ -180,7 +175,6 @@ tcp_timers(register struct tcpcb *tp, int timer)
                                 * We tried our best, now the connection must 
die!
                                 */
                                tp->t_rxtshift = TCP_MAXRXTSHIFT;
-                               STAT(tcpstat.tcps_timeoutdrop++);
                                tp = tcp_drop(tp, tp->t_softerror);
                                /* tp->t_softerror : ETIMEDOUT); */ /* XXX */
                                return (tp); /* XXX */
@@ -192,7 +186,6 @@ tcp_timers(register struct tcpcb *tp, int timer)
                         */
                        tp->t_rxtshift = 6;
                }
-               STAT(tcpstat.tcps_rexmttimeo++);
                rexmt = TCP_REXMTVAL(tp) * tcp_backoff[tp->t_rxtshift];
                TCPT_RANGESET(tp->t_rxtcur, rexmt,
                    (short)tp->t_rttmin, TCPTV_REXMTMAX); /* XXX */
@@ -254,7 +247,6 @@ tcp_timers(register struct tcpcb *tp, int timer)
         * Force a byte to be output, if possible.
         */
        case TCPT_PERSIST:
-               STAT(tcpstat.tcps_persisttimeo++);
                tcp_setpersist(tp);
                tp->t_force = 1;
                (void) tcp_output(tp);
@@ -266,7 +258,6 @@ tcp_timers(register struct tcpcb *tp, int timer)
         * or drop connection if idle for too long.
         */
        case TCPT_KEEP:
-               STAT(tcpstat.tcps_keeptimeo++);
                if (tp->t_state < TCPS_ESTABLISHED)
                        goto dropit;
 
@@ -285,7 +276,6 @@ tcp_timers(register struct tcpcb *tp, int timer)
                         * by the protocol spec, this requires the
                         * correspondent TCP to respond.
                         */
-                       STAT(tcpstat.tcps_keepprobe++);
                        tcp_respond(tp, &tp->t_template, (struct mbuf *)NULL,
                            tp->rcv_nxt, tp->snd_una - 1, 0);
                        tp->t_timer[TCPT_KEEP] = TCPTV_KEEPINTVL;
@@ -294,7 +284,6 @@ tcp_timers(register struct tcpcb *tp, int timer)
                break;
 
        dropit:
-               STAT(tcpstat.tcps_keepdrops++);
                tp = tcp_drop(tp, 0);
                break;
        }
diff --git a/slirp/tcp_var.h b/slirp/tcp_var.h
index be5741f..db0a9c9 100644
--- a/slirp/tcp_var.h
+++ b/slirp/tcp_var.h
@@ -158,69 +158,6 @@ struct tcpcb {
 #define        TCP_REXMTVAL(tp) \
        (((tp)->t_srtt >> TCP_RTT_SHIFT) + (tp)->t_rttvar)
 
-#ifdef LOG_ENABLED
-/*
- * TCP statistics.
- * Many of these should be kept per connection,
- * but that's inconvenient at the moment.
- */
-struct tcpstat {
-       u_long  tcps_connattempt;       /* connections initiated */
-       u_long  tcps_accepts;           /* connections accepted */
-       u_long  tcps_connects;          /* connections established */
-       u_long  tcps_drops;             /* connections dropped */
-       u_long  tcps_conndrops;         /* embryonic connections dropped */
-       u_long  tcps_closed;            /* conn. closed (includes drops) */
-       u_long  tcps_segstimed;         /* segs where we tried to get rtt */
-       u_long  tcps_rttupdated;        /* times we succeeded */
-       u_long  tcps_delack;            /* delayed acks sent */
-       u_long  tcps_timeoutdrop;       /* conn. dropped in rxmt timeout */
-       u_long  tcps_rexmttimeo;        /* retransmit timeouts */
-       u_long  tcps_persisttimeo;      /* persist timeouts */
-       u_long  tcps_keeptimeo;         /* keepalive timeouts */
-       u_long  tcps_keepprobe;         /* keepalive probes sent */
-       u_long  tcps_keepdrops;         /* connections dropped in keepalive */
-
-       u_long  tcps_sndtotal;          /* total packets sent */
-       u_long  tcps_sndpack;           /* data packets sent */
-       u_long  tcps_sndbyte;           /* data bytes sent */
-       u_long  tcps_sndrexmitpack;     /* data packets retransmitted */
-       u_long  tcps_sndrexmitbyte;     /* data bytes retransmitted */
-       u_long  tcps_sndacks;           /* ack-only packets sent */
-       u_long  tcps_sndprobe;          /* window probes sent */
-       u_long  tcps_sndurg;            /* packets sent with URG only */
-       u_long  tcps_sndwinup;          /* window update-only packets sent */
-       u_long  tcps_sndctrl;           /* control (SYN|FIN|RST) packets sent */
-
-       u_long  tcps_rcvtotal;          /* total packets received */
-       u_long  tcps_rcvpack;           /* packets received in sequence */
-       u_long  tcps_rcvbyte;           /* bytes received in sequence */
-       u_long  tcps_rcvbadsum;         /* packets received with ccksum errs */
-       u_long  tcps_rcvbadoff;         /* packets received with bad offset */
-       u_long  tcps_rcvduppack;        /* duplicate-only packets received */
-       u_long  tcps_rcvdupbyte;        /* duplicate-only bytes received */
-       u_long  tcps_rcvpartduppack;    /* packets with some duplicate data */
-       u_long  tcps_rcvpartdupbyte;    /* dup. bytes in part-dup. packets */
-       u_long  tcps_rcvoopack;         /* out-of-order packets received */
-       u_long  tcps_rcvoobyte;         /* out-of-order bytes received */
-       u_long  tcps_rcvpackafterwin;   /* packets with data after window */
-       u_long  tcps_rcvbyteafterwin;   /* bytes rcvd after window */
-       u_long  tcps_rcvafterclose;     /* packets rcvd after "close" */
-       u_long  tcps_rcvwinprobe;       /* rcvd window probe packets */
-       u_long  tcps_rcvdupack;         /* rcvd duplicate acks */
-       u_long  tcps_rcvacktoomuch;     /* rcvd acks for unsent data */
-       u_long  tcps_rcvackpack;        /* rcvd ack packets */
-       u_long  tcps_rcvackbyte;        /* bytes acked by rcvd acks */
-       u_long  tcps_rcvwinupd;         /* rcvd window update packets */
-       u_long  tcps_predack;           /* times hdr predict ok for acks */
-       u_long  tcps_preddat;           /* times hdr predict ok for data pkts */
-       u_long  tcps_socachemiss;       /* tcp_last_so misses */
-       u_long  tcps_didnuttin;         /* Times tcp_output didn't do anything 
XXX */
-};
-
-extern struct  tcpstat tcpstat;        /* tcp statistics */
-#endif
-
 extern u_int32_t       tcp_now;                /* for RFC 1323 timestamps */
 
 #endif
diff --git a/slirp/udp.c b/slirp/udp.c
index 3798e34..240e1bf 100644
--- a/slirp/udp.c
+++ b/slirp/udp.c
@@ -41,10 +41,6 @@
 #include <slirp.h>
 #include "ip_icmp.h"
 
-#ifdef LOG_ENABLED
-struct udpstat udpstat;
-#endif
-
 struct socket udb;
 
 static u_int8_t udp_tos(struct socket *so);
@@ -74,8 +70,6 @@ udp_input(register struct mbuf *m, int iphlen)
        DEBUG_ARG("m = %lx", (long)m);
        DEBUG_ARG("iphlen = %d", iphlen);
 
-       STAT(udpstat.udps_ipackets++);
-
        /*
         * Strip IP options, if any; should skip this,
         * make available to user, and use on returned packets,
@@ -101,7 +95,6 @@ udp_input(register struct mbuf *m, int iphlen)
 
        if (ip->ip_len != len) {
                if (len > ip->ip_len) {
-                       STAT(udpstat.udps_badlen++);
                        goto bad;
                }
                m_adj(m, len - ip->ip_len);
@@ -123,7 +116,6 @@ udp_input(register struct mbuf *m, int iphlen)
          ((struct ipovly *)ip)->ih_x1 = 0;
          ((struct ipovly *)ip)->ih_len = uh->uh_ulen;
          if(cksum(m, len + sizeof(struct ip))) {
-           STAT(udpstat.udps_badsum++);
            goto bad;
          }
        }
@@ -165,7 +157,6 @@ udp_input(register struct mbuf *m, int iphlen)
                if (tmp == &udb) {
                  so = NULL;
                } else {
-                 STAT(udpstat.udpps_pcbcachemiss++);
                  udp_last_so = so;
                }
        }
@@ -279,8 +270,6 @@ int udp_output2(struct socket *so, struct mbuf *m,
        ((struct ip *)ui)->ip_ttl = IPDEFTTL;
        ((struct ip *)ui)->ip_tos = iptos;
 
-       STAT(udpstat.udps_opackets++);
-
        error = ip_output(so, m);
 
        return (error);
diff --git a/slirp/udp.h b/slirp/udp.h
index d4c2bea..3eed14a 100644
--- a/slirp/udp.h
+++ b/slirp/udp.h
@@ -67,32 +67,12 @@ struct udpiphdr {
 #define ui_ulen         ui_u.uh_ulen
 #define ui_sum          ui_u.uh_sum
 
-#ifdef LOG_ENABLED
-struct udpstat {
-                                       /* input statistics: */
-               u_long  udps_ipackets;          /* total input packets */
-               u_long  udps_hdrops;            /* packet shorter than header */
-               u_long  udps_badsum;            /* checksum error */
-               u_long  udps_badlen;            /* data length larger than 
packet */
-               u_long  udps_noport;            /* no socket on port */
-               u_long  udps_noportbcast;       /* of above, arrived as 
broadcast */
-               u_long  udps_fullsock;          /* not delivered, input socket 
full */
-               u_long  udpps_pcbcachemiss;     /* input packets missing pcb 
cache */
-                                       /* output statistics: */
-               u_long  udps_opackets;          /* total output packets */
-};
-#endif
-
 /*
  * Names for UDP sysctl objects
  */
 #define UDPCTL_CHECKSUM         1       /* checksum UDP packets */
 #define UDPCTL_MAXID            2
 
-#ifdef LOG_ENABLED
-extern struct udpstat udpstat;
-#endif
-
 extern struct socket udb;
 struct mbuf;
 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]