Commit 0fe6a7f28455cd003b2668e77d5bd1e1cf15309e
Committed by
Anthony Liguori
1 parent
0d62c4cf
slirp: Drop statistic code
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 <jan.kiszka@siemens.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Showing
21 changed files
with
6 additions
and
485 deletions
monitor.c
| ... | ... | @@ -1733,8 +1733,6 @@ static const mon_cmd_t info_cmds[] = { |
| 1733 | 1733 | "", "show CPU statistics", }, |
| 1734 | 1734 | #endif |
| 1735 | 1735 | #if defined(CONFIG_SLIRP) |
| 1736 | - { "slirp", "", do_info_slirp, | |
| 1737 | - "", "show SLIRP statistics", }, | |
| 1738 | 1736 | { "usernet", "", do_info_usernet, |
| 1739 | 1737 | "", "show user network stack connection states", }, |
| 1740 | 1738 | #endif | ... | ... |
net.c
| ... | ... | @@ -1112,11 +1112,6 @@ void net_slirp_smb(const char *exported_dir) |
| 1112 | 1112 | |
| 1113 | 1113 | #endif /* !defined(_WIN32) */ |
| 1114 | 1114 | |
| 1115 | -void do_info_slirp(Monitor *mon) | |
| 1116 | -{ | |
| 1117 | - slirp_stats(); | |
| 1118 | -} | |
| 1119 | - | |
| 1120 | 1115 | struct GuestFwd { |
| 1121 | 1116 | CharDriverState *hd; |
| 1122 | 1117 | struct in_addr server; | ... | ... |
qemu-monitor.hx
| ... | ... | @@ -85,8 +85,6 @@ show the current VM name |
| 85 | 85 | show the current VM UUID |
| 86 | 86 | @item info cpustats |
| 87 | 87 | show CPU statistics |
| 88 | -@item info slirp | |
| 89 | -show SLIRP statistics (if available) | |
| 90 | 88 | @item info usernet |
| 91 | 89 | show user network stack connection states |
| 92 | 90 | @item info migrate | ... | ... |
slirp/debug.c
| ... | ... | @@ -10,157 +10,3 @@ |
| 10 | 10 | |
| 11 | 11 | FILE *dfd = NULL; |
| 12 | 12 | int slirp_debug = 0; |
| 13 | - | |
| 14 | -#ifdef LOG_ENABLED | |
| 15 | -static void | |
| 16 | -ipstats(void) | |
| 17 | -{ | |
| 18 | - lprint(" \r\n"); | |
| 19 | - | |
| 20 | - lprint("IP stats:\r\n"); | |
| 21 | - lprint(" %6d total packets received (%d were unaligned)\r\n", | |
| 22 | - ipstat.ips_total, ipstat.ips_unaligned); | |
| 23 | - lprint(" %6d with incorrect version\r\n", ipstat.ips_badvers); | |
| 24 | - lprint(" %6d with bad header checksum\r\n", ipstat.ips_badsum); | |
| 25 | - lprint(" %6d with length too short (len < sizeof(iphdr))\r\n", ipstat.ips_tooshort); | |
| 26 | - lprint(" %6d with length too small (len < ip->len)\r\n", ipstat.ips_toosmall); | |
| 27 | - lprint(" %6d with bad header length\r\n", ipstat.ips_badhlen); | |
| 28 | - lprint(" %6d with bad packet length\r\n", ipstat.ips_badlen); | |
| 29 | - lprint(" %6d fragments received\r\n", ipstat.ips_fragments); | |
| 30 | - lprint(" %6d fragments dropped\r\n", ipstat.ips_fragdropped); | |
| 31 | - lprint(" %6d fragments timed out\r\n", ipstat.ips_fragtimeout); | |
| 32 | - lprint(" %6d packets reassembled ok\r\n", ipstat.ips_reassembled); | |
| 33 | - lprint(" %6d outgoing packets fragmented\r\n", ipstat.ips_fragmented); | |
| 34 | - lprint(" %6d total outgoing fragments\r\n", ipstat.ips_ofragments); | |
| 35 | - lprint(" %6d with bad protocol field\r\n", ipstat.ips_noproto); | |
| 36 | - lprint(" %6d total packets delivered\r\n", ipstat.ips_delivered); | |
| 37 | -} | |
| 38 | - | |
| 39 | -static void | |
| 40 | -tcpstats(void) | |
| 41 | -{ | |
| 42 | - lprint(" \r\n"); | |
| 43 | - | |
| 44 | - lprint("TCP stats:\r\n"); | |
| 45 | - | |
| 46 | - lprint(" %6d packets sent\r\n", tcpstat.tcps_sndtotal); | |
| 47 | - lprint(" %6d data packets (%d bytes)\r\n", | |
| 48 | - tcpstat.tcps_sndpack, tcpstat.tcps_sndbyte); | |
| 49 | - lprint(" %6d data packets retransmitted (%d bytes)\r\n", | |
| 50 | - tcpstat.tcps_sndrexmitpack, tcpstat.tcps_sndrexmitbyte); | |
| 51 | - lprint(" %6d ack-only packets (%d delayed)\r\n", | |
| 52 | - tcpstat.tcps_sndacks, tcpstat.tcps_delack); | |
| 53 | - lprint(" %6d URG only packets\r\n", tcpstat.tcps_sndurg); | |
| 54 | - lprint(" %6d window probe packets\r\n", tcpstat.tcps_sndprobe); | |
| 55 | - lprint(" %6d window update packets\r\n", tcpstat.tcps_sndwinup); | |
| 56 | - lprint(" %6d control (SYN/FIN/RST) packets\r\n", tcpstat.tcps_sndctrl); | |
| 57 | - lprint(" %6d times tcp_output did nothing\r\n", tcpstat.tcps_didnuttin); | |
| 58 | - | |
| 59 | - lprint(" %6d packets received\r\n", tcpstat.tcps_rcvtotal); | |
| 60 | - lprint(" %6d acks (for %d bytes)\r\n", | |
| 61 | - tcpstat.tcps_rcvackpack, tcpstat.tcps_rcvackbyte); | |
| 62 | - lprint(" %6d duplicate acks\r\n", tcpstat.tcps_rcvdupack); | |
| 63 | - lprint(" %6d acks for unsent data\r\n", tcpstat.tcps_rcvacktoomuch); | |
| 64 | - lprint(" %6d packets received in sequence (%d bytes)\r\n", | |
| 65 | - tcpstat.tcps_rcvpack, tcpstat.tcps_rcvbyte); | |
| 66 | - lprint(" %6d completely duplicate packets (%d bytes)\r\n", | |
| 67 | - tcpstat.tcps_rcvduppack, tcpstat.tcps_rcvdupbyte); | |
| 68 | - | |
| 69 | - lprint(" %6d packets with some duplicate data (%d bytes duped)\r\n", | |
| 70 | - tcpstat.tcps_rcvpartduppack, tcpstat.tcps_rcvpartdupbyte); | |
| 71 | - lprint(" %6d out-of-order packets (%d bytes)\r\n", | |
| 72 | - tcpstat.tcps_rcvoopack, tcpstat.tcps_rcvoobyte); | |
| 73 | - lprint(" %6d packets of data after window (%d bytes)\r\n", | |
| 74 | - tcpstat.tcps_rcvpackafterwin, tcpstat.tcps_rcvbyteafterwin); | |
| 75 | - lprint(" %6d window probes\r\n", tcpstat.tcps_rcvwinprobe); | |
| 76 | - lprint(" %6d window update packets\r\n", tcpstat.tcps_rcvwinupd); | |
| 77 | - lprint(" %6d packets received after close\r\n", tcpstat.tcps_rcvafterclose); | |
| 78 | - lprint(" %6d discarded for bad checksums\r\n", tcpstat.tcps_rcvbadsum); | |
| 79 | - lprint(" %6d discarded for bad header offset fields\r\n", | |
| 80 | - tcpstat.tcps_rcvbadoff); | |
| 81 | - | |
| 82 | - lprint(" %6d connection requests\r\n", tcpstat.tcps_connattempt); | |
| 83 | - lprint(" %6d connection accepts\r\n", tcpstat.tcps_accepts); | |
| 84 | - lprint(" %6d connections established (including accepts)\r\n", tcpstat.tcps_connects); | |
| 85 | - lprint(" %6d connections closed (including %d drop)\r\n", | |
| 86 | - tcpstat.tcps_closed, tcpstat.tcps_drops); | |
| 87 | - lprint(" %6d embryonic connections dropped\r\n", tcpstat.tcps_conndrops); | |
| 88 | - lprint(" %6d segments we tried to get rtt (%d succeeded)\r\n", | |
| 89 | - tcpstat.tcps_segstimed, tcpstat.tcps_rttupdated); | |
| 90 | - lprint(" %6d retransmit timeouts\r\n", tcpstat.tcps_rexmttimeo); | |
| 91 | - lprint(" %6d connections dropped by rxmt timeout\r\n", | |
| 92 | - tcpstat.tcps_timeoutdrop); | |
| 93 | - lprint(" %6d persist timeouts\r\n", tcpstat.tcps_persisttimeo); | |
| 94 | - lprint(" %6d keepalive timeouts\r\n", tcpstat.tcps_keeptimeo); | |
| 95 | - lprint(" %6d keepalive probes sent\r\n", tcpstat.tcps_keepprobe); | |
| 96 | - lprint(" %6d connections dropped by keepalive\r\n", tcpstat.tcps_keepdrops); | |
| 97 | - lprint(" %6d correct ACK header predictions\r\n", tcpstat.tcps_predack); | |
| 98 | - lprint(" %6d correct data packet header predictions\n", tcpstat.tcps_preddat); | |
| 99 | - lprint(" %6d TCP cache misses\r\n", tcpstat.tcps_socachemiss); | |
| 100 | -} | |
| 101 | - | |
| 102 | -static void | |
| 103 | -udpstats(void) | |
| 104 | -{ | |
| 105 | - lprint(" \r\n"); | |
| 106 | - | |
| 107 | - lprint("UDP stats:\r\n"); | |
| 108 | - lprint(" %6d datagrams received\r\n", udpstat.udps_ipackets); | |
| 109 | - lprint(" %6d with packets shorter than header\r\n", udpstat.udps_hdrops); | |
| 110 | - lprint(" %6d with bad checksums\r\n", udpstat.udps_badsum); | |
| 111 | - lprint(" %6d with data length larger than packet\r\n", udpstat.udps_badlen); | |
| 112 | - lprint(" %6d UDP socket cache misses\r\n", udpstat.udpps_pcbcachemiss); | |
| 113 | - lprint(" %6d datagrams sent\r\n", udpstat.udps_opackets); | |
| 114 | -} | |
| 115 | - | |
| 116 | -static void | |
| 117 | -icmpstats(void) | |
| 118 | -{ | |
| 119 | - lprint(" \r\n"); | |
| 120 | - lprint("ICMP stats:\r\n"); | |
| 121 | - lprint(" %6d ICMP packets received\r\n", icmpstat.icps_received); | |
| 122 | - lprint(" %6d were too short\r\n", icmpstat.icps_tooshort); | |
| 123 | - lprint(" %6d with bad checksums\r\n", icmpstat.icps_checksum); | |
| 124 | - lprint(" %6d with type not supported\r\n", icmpstat.icps_notsupp); | |
| 125 | - lprint(" %6d with bad type feilds\r\n", icmpstat.icps_badtype); | |
| 126 | - lprint(" %6d ICMP packets sent in reply\r\n", icmpstat.icps_reflect); | |
| 127 | -} | |
| 128 | - | |
| 129 | -static void | |
| 130 | -mbufstats(void) | |
| 131 | -{ | |
| 132 | - struct mbuf *m; | |
| 133 | - int i; | |
| 134 | - | |
| 135 | - lprint(" \r\n"); | |
| 136 | - | |
| 137 | - lprint("Mbuf stats:\r\n"); | |
| 138 | - | |
| 139 | - lprint(" %6d mbufs allocated (%d max)\r\n", mbuf_alloced, mbuf_max); | |
| 140 | - | |
| 141 | - i = 0; | |
| 142 | - for (m = m_freelist.m_next; m != &m_freelist; m = m->m_next) | |
| 143 | - i++; | |
| 144 | - lprint(" %6d mbufs on free list\r\n", i); | |
| 145 | - | |
| 146 | - i = 0; | |
| 147 | - for (m = m_usedlist.m_next; m != &m_usedlist; m = m->m_next) | |
| 148 | - i++; | |
| 149 | - lprint(" %6d mbufs on used list\r\n", i); | |
| 150 | - lprint(" %6d mbufs queued as packets\r\n\r\n", if_queued); | |
| 151 | -} | |
| 152 | -#endif | |
| 153 | - | |
| 154 | -void | |
| 155 | -slirp_stats(void) | |
| 156 | -{ | |
| 157 | -#ifdef LOG_ENABLED | |
| 158 | - ipstats(); | |
| 159 | - tcpstats(); | |
| 160 | - udpstats(); | |
| 161 | - icmpstats(); | |
| 162 | - mbufstats(); | |
| 163 | -#else | |
| 164 | - lprint("SLIRP statistics code not compiled.\n"); | |
| 165 | -#endif | |
| 166 | -} | ... | ... |
slirp/icmp_var.h
| ... | ... | @@ -34,20 +34,6 @@ |
| 34 | 34 | #define _NETINET_ICMP_VAR_H_ |
| 35 | 35 | |
| 36 | 36 | /* |
| 37 | - * Variables related to this implementation | |
| 38 | - * of the internet control message protocol. | |
| 39 | - */ | |
| 40 | -struct icmpstat { | |
| 41 | -/* statistics related to input messages processed */ | |
| 42 | - u_long icps_received; /* #ICMP packets received */ | |
| 43 | - u_long icps_tooshort; /* packet < ICMP_MINLEN */ | |
| 44 | - u_long icps_checksum; /* bad checksum */ | |
| 45 | - u_long icps_notsupp; /* #ICMP packets not supported */ | |
| 46 | - u_long icps_badtype; /* #with bad type feild */ | |
| 47 | - u_long icps_reflect; /* number of responses */ | |
| 48 | -}; | |
| 49 | - | |
| 50 | -/* | |
| 51 | 37 | * Names for ICMP sysctl objects |
| 52 | 38 | */ |
| 53 | 39 | #define ICMPCTL_MASKREPL 1 /* allow replies to netmask requests */ |
| ... | ... | @@ -60,8 +46,4 @@ struct icmpstat { |
| 60 | 46 | { "stats", CTLTYPE_STRUCT }, \ |
| 61 | 47 | } |
| 62 | 48 | |
| 63 | -#ifdef LOG_ENABLED | |
| 64 | -extern struct icmpstat icmpstat; | |
| 65 | -#endif | |
| 66 | - | |
| 67 | 49 | #endif | ... | ... |
slirp/if.h
| ... | ... | @@ -28,24 +28,4 @@ extern struct mbuf *next_m; |
| 28 | 28 | |
| 29 | 29 | #define ifs_init(ifm) ((ifm)->ifs_next = (ifm)->ifs_prev = (ifm)) |
| 30 | 30 | |
| 31 | -#ifdef LOG_ENABLED | |
| 32 | -/* Interface statistics */ | |
| 33 | -struct slirp_ifstats { | |
| 34 | - u_int out_pkts; /* Output packets */ | |
| 35 | - u_int out_bytes; /* Output bytes */ | |
| 36 | - u_int out_errpkts; /* Output Error Packets */ | |
| 37 | - u_int out_errbytes; /* Output Error Bytes */ | |
| 38 | - u_int in_pkts; /* Input packets */ | |
| 39 | - u_int in_bytes; /* Input bytes */ | |
| 40 | - u_int in_errpkts; /* Input Error Packets */ | |
| 41 | - u_int in_errbytes; /* Input Error Bytes */ | |
| 42 | - | |
| 43 | - u_int bytes_saved; /* Number of bytes that compression "saved" */ | |
| 44 | - /* ie: number of bytes that didn't need to be sent over the link | |
| 45 | - * because of compression */ | |
| 46 | - | |
| 47 | - u_int in_mbad; /* Bad incoming packets */ | |
| 48 | -}; | |
| 49 | -#endif | |
| 50 | - | |
| 51 | 31 | #endif | ... | ... |
slirp/ip.h
| ... | ... | @@ -250,43 +250,6 @@ struct ipoption { |
| 250 | 250 | int8_t ipopt_list[MAX_IPOPTLEN]; /* options proper */ |
| 251 | 251 | }; |
| 252 | 252 | |
| 253 | -#ifdef LOG_ENABLED | |
| 254 | -/* | |
| 255 | - * Structure attached to inpcb.ip_moptions and | |
| 256 | - * passed to ip_output when IP multicast options are in use. | |
| 257 | - */ | |
| 258 | - | |
| 259 | -struct ipstat { | |
| 260 | - u_long ips_total; /* total packets received */ | |
| 261 | - u_long ips_badsum; /* checksum bad */ | |
| 262 | - u_long ips_tooshort; /* packet too short */ | |
| 263 | - u_long ips_toosmall; /* not enough data */ | |
| 264 | - u_long ips_badhlen; /* ip header length < data size */ | |
| 265 | - u_long ips_badlen; /* ip length < ip header length */ | |
| 266 | - u_long ips_fragments; /* fragments received */ | |
| 267 | - u_long ips_fragdropped; /* frags dropped (dups, out of space) */ | |
| 268 | - u_long ips_fragtimeout; /* fragments timed out */ | |
| 269 | - u_long ips_forward; /* packets forwarded */ | |
| 270 | - u_long ips_cantforward; /* packets rcvd for unreachable dest */ | |
| 271 | - u_long ips_redirectsent; /* packets forwarded on same net */ | |
| 272 | - u_long ips_noproto; /* unknown or unsupported protocol */ | |
| 273 | - u_long ips_delivered; /* datagrams delivered to upper level*/ | |
| 274 | - u_long ips_localout; /* total ip packets generated here */ | |
| 275 | - u_long ips_odropped; /* lost packets due to nobufs, etc. */ | |
| 276 | - u_long ips_reassembled; /* total packets reassembled ok */ | |
| 277 | - u_long ips_fragmented; /* datagrams successfully fragmented */ | |
| 278 | - u_long ips_ofragments; /* output fragments created */ | |
| 279 | - u_long ips_cantfrag; /* don't fragment flag was set, etc. */ | |
| 280 | - u_long ips_badoptions; /* error in option processing */ | |
| 281 | - u_long ips_noroute; /* packets discarded due to no route */ | |
| 282 | - u_long ips_badvers; /* ip version != 4 */ | |
| 283 | - u_long ips_rawout; /* total raw ip packets generated */ | |
| 284 | - u_long ips_unaligned; /* times the ip packet was not aligned */ | |
| 285 | -}; | |
| 286 | - | |
| 287 | -extern struct ipstat ipstat; | |
| 288 | -#endif | |
| 289 | - | |
| 290 | 253 | extern struct ipq ipq; /* ip reass. queue */ |
| 291 | 254 | extern u_int16_t ip_id; /* ip packet ctr, for ids */ |
| 292 | 255 | ... | ... |
slirp/ip_icmp.c
| ... | ... | @@ -33,10 +33,6 @@ |
| 33 | 33 | #include "slirp.h" |
| 34 | 34 | #include "ip_icmp.h" |
| 35 | 35 | |
| 36 | -#ifdef LOG_ENABLED | |
| 37 | -struct icmpstat icmpstat; | |
| 38 | -#endif | |
| 39 | - | |
| 40 | 36 | /* The message sent when emulating PING */ |
| 41 | 37 | /* Be nice and tell them it's just a pseudo-ping packet */ |
| 42 | 38 | 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) |
| 78 | 74 | DEBUG_ARG("m = %lx", (long )m); |
| 79 | 75 | DEBUG_ARG("m_len = %d", m->m_len); |
| 80 | 76 | |
| 81 | - STAT(icmpstat.icps_received++); | |
| 82 | - | |
| 83 | 77 | /* |
| 84 | 78 | * Locate icmp structure in mbuf, and check |
| 85 | 79 | * that its not corrupted and of at least minimum length. |
| 86 | 80 | */ |
| 87 | 81 | if (icmplen < ICMP_MINLEN) { /* min 8 bytes payload */ |
| 88 | - STAT(icmpstat.icps_tooshort++); | |
| 89 | 82 | freeit: |
| 90 | 83 | m_freem(m); |
| 91 | 84 | goto end_error; |
| ... | ... | @@ -95,7 +88,6 @@ icmp_input(struct mbuf *m, int hlen) |
| 95 | 88 | m->m_data += hlen; |
| 96 | 89 | icp = mtod(m, struct icmp *); |
| 97 | 90 | if (cksum(m, icmplen)) { |
| 98 | - STAT(icmpstat.icps_checksum++); | |
| 99 | 91 | goto freeit; |
| 100 | 92 | } |
| 101 | 93 | m->m_len += hlen; |
| ... | ... | @@ -159,12 +151,10 @@ icmp_input(struct mbuf *m, int hlen) |
| 159 | 151 | case ICMP_TSTAMP: |
| 160 | 152 | case ICMP_MASKREQ: |
| 161 | 153 | case ICMP_REDIRECT: |
| 162 | - STAT(icmpstat.icps_notsupp++); | |
| 163 | 154 | m_freem(m); |
| 164 | 155 | break; |
| 165 | 156 | |
| 166 | 157 | default: |
| 167 | - STAT(icmpstat.icps_badtype++); | |
| 168 | 158 | m_freem(m); |
| 169 | 159 | } /* swith */ |
| 170 | 160 | |
| ... | ... | @@ -299,8 +289,6 @@ icmp_error(struct mbuf *msrc, u_char type, u_char code, int minsize, |
| 299 | 289 | |
| 300 | 290 | (void ) ip_output((struct socket *)NULL, m); |
| 301 | 291 | |
| 302 | - STAT(icmpstat.icps_reflect++); | |
| 303 | - | |
| 304 | 292 | end_error: |
| 305 | 293 | return; |
| 306 | 294 | } |
| ... | ... | @@ -354,6 +342,4 @@ icmp_reflect(struct mbuf *m) |
| 354 | 342 | } |
| 355 | 343 | |
| 356 | 344 | (void ) ip_output((struct socket *)NULL, m); |
| 357 | - | |
| 358 | - STAT(icmpstat.icps_reflect++); | |
| 359 | 345 | } | ... | ... |
slirp/ip_input.c
| ... | ... | @@ -42,10 +42,6 @@ |
| 42 | 42 | #include <osdep.h> |
| 43 | 43 | #include "ip_icmp.h" |
| 44 | 44 | |
| 45 | -#ifdef LOG_ENABLED | |
| 46 | -struct ipstat ipstat; | |
| 47 | -#endif | |
| 48 | - | |
| 49 | 45 | struct ipq ipq; |
| 50 | 46 | |
| 51 | 47 | static struct ip *ip_reass(register struct ip *ip, |
| ... | ... | @@ -82,24 +78,19 @@ ip_input(struct mbuf *m) |
| 82 | 78 | DEBUG_ARG("m = %lx", (long)m); |
| 83 | 79 | DEBUG_ARG("m_len = %d", m->m_len); |
| 84 | 80 | |
| 85 | - STAT(ipstat.ips_total++); | |
| 86 | - | |
| 87 | 81 | if (m->m_len < sizeof (struct ip)) { |
| 88 | - STAT(ipstat.ips_toosmall++); | |
| 89 | 82 | return; |
| 90 | 83 | } |
| 91 | 84 | |
| 92 | 85 | ip = mtod(m, struct ip *); |
| 93 | 86 | |
| 94 | 87 | if (ip->ip_v != IPVERSION) { |
| 95 | - STAT(ipstat.ips_badvers++); | |
| 96 | 88 | goto bad; |
| 97 | 89 | } |
| 98 | 90 | |
| 99 | 91 | hlen = ip->ip_hl << 2; |
| 100 | 92 | if (hlen<sizeof(struct ip ) || hlen>m->m_len) {/* min header length */ |
| 101 | - STAT(ipstat.ips_badhlen++); /* or packet too short */ | |
| 102 | - goto bad; | |
| 93 | + goto bad; /* or packet too short */ | |
| 103 | 94 | } |
| 104 | 95 | |
| 105 | 96 | /* keep ip header intact for ICMP reply |
| ... | ... | @@ -107,7 +98,6 @@ ip_input(struct mbuf *m) |
| 107 | 98 | * if (ip->ip_sum) { |
| 108 | 99 | */ |
| 109 | 100 | if(cksum(m,hlen)) { |
| 110 | - STAT(ipstat.ips_badsum++); | |
| 111 | 101 | goto bad; |
| 112 | 102 | } |
| 113 | 103 | |
| ... | ... | @@ -116,7 +106,6 @@ ip_input(struct mbuf *m) |
| 116 | 106 | */ |
| 117 | 107 | NTOHS(ip->ip_len); |
| 118 | 108 | if (ip->ip_len < hlen) { |
| 119 | - STAT(ipstat.ips_badlen++); | |
| 120 | 109 | goto bad; |
| 121 | 110 | } |
| 122 | 111 | NTOHS(ip->ip_id); |
| ... | ... | @@ -129,7 +118,6 @@ ip_input(struct mbuf *m) |
| 129 | 118 | * Drop packet if shorter than we expect. |
| 130 | 119 | */ |
| 131 | 120 | if (m->m_len < ip->ip_len) { |
| 132 | - STAT(ipstat.ips_tooshort++); | |
| 133 | 121 | goto bad; |
| 134 | 122 | } |
| 135 | 123 | |
| ... | ... | @@ -210,11 +198,9 @@ ip_input(struct mbuf *m) |
| 210 | 198 | * attempt reassembly; if it succeeds, proceed. |
| 211 | 199 | */ |
| 212 | 200 | if (ip->ip_tos & 1 || ip->ip_off) { |
| 213 | - STAT(ipstat.ips_fragments++); | |
| 214 | 201 | ip = ip_reass(ip, fp); |
| 215 | 202 | if (ip == NULL) |
| 216 | 203 | return; |
| 217 | - STAT(ipstat.ips_reassembled++); | |
| 218 | 204 | m = dtom(ip); |
| 219 | 205 | } else |
| 220 | 206 | if (fp) |
| ... | ... | @@ -226,7 +212,6 @@ ip_input(struct mbuf *m) |
| 226 | 212 | /* |
| 227 | 213 | * Switch out to protocol's input routine. |
| 228 | 214 | */ |
| 229 | - STAT(ipstat.ips_delivered++); | |
| 230 | 215 | switch (ip->ip_p) { |
| 231 | 216 | case IPPROTO_TCP: |
| 232 | 217 | tcp_input(m, hlen, (struct socket *)NULL); |
| ... | ... | @@ -238,7 +223,6 @@ ip_input(struct mbuf *m) |
| 238 | 223 | icmp_input(m, hlen); |
| 239 | 224 | break; |
| 240 | 225 | default: |
| 241 | - STAT(ipstat.ips_noproto++); | |
| 242 | 226 | m_free(m); |
| 243 | 227 | } |
| 244 | 228 | return; |
| ... | ... | @@ -399,7 +383,6 @@ insert: |
| 399 | 383 | return ip; |
| 400 | 384 | |
| 401 | 385 | dropfrag: |
| 402 | - STAT(ipstat.ips_fragdropped++); | |
| 403 | 386 | m_freem(m); |
| 404 | 387 | return NULL; |
| 405 | 388 | } |
| ... | ... | @@ -468,7 +451,6 @@ ip_slowtimo(void) |
| 468 | 451 | struct ipq *fp = container_of(l, struct ipq, ip_link); |
| 469 | 452 | l = l->next; |
| 470 | 453 | if (--fp->ipq_ttl == 0) { |
| 471 | - STAT(ipstat.ips_fragtimeout++); | |
| 472 | 454 | ip_freef(fp); |
| 473 | 455 | } |
| 474 | 456 | } |
| ... | ... | @@ -671,7 +653,6 @@ typedef u_int32_t n_time; |
| 671 | 653 | bad: |
| 672 | 654 | icmp_error(m, type, code, 0, 0); |
| 673 | 655 | |
| 674 | - STAT(ipstat.ips_badoptions++); | |
| 675 | 656 | return (1); |
| 676 | 657 | } |
| 677 | 658 | ... | ... |
slirp/ip_output.c
| ... | ... | @@ -72,7 +72,6 @@ ip_output(struct socket *so, struct mbuf *m0) |
| 72 | 72 | ip->ip_off &= IP_DF; |
| 73 | 73 | ip->ip_id = htons(ip_id++); |
| 74 | 74 | ip->ip_hl = hlen >> 2; |
| 75 | - STAT(ipstat.ips_localout++); | |
| 76 | 75 | |
| 77 | 76 | /* |
| 78 | 77 | * If small enough for interface, can just send directly. |
| ... | ... | @@ -93,7 +92,6 @@ ip_output(struct socket *so, struct mbuf *m0) |
| 93 | 92 | */ |
| 94 | 93 | if (ip->ip_off & IP_DF) { |
| 95 | 94 | error = -1; |
| 96 | - STAT(ipstat.ips_cantfrag++); | |
| 97 | 95 | goto bad; |
| 98 | 96 | } |
| 99 | 97 | |
| ... | ... | @@ -118,7 +116,6 @@ ip_output(struct socket *so, struct mbuf *m0) |
| 118 | 116 | m = m_get(); |
| 119 | 117 | if (m == NULL) { |
| 120 | 118 | error = -1; |
| 121 | - STAT(ipstat.ips_odropped++); | |
| 122 | 119 | goto sendorfree; |
| 123 | 120 | } |
| 124 | 121 | m->m_data += IF_MAXLINKHDR; |
| ... | ... | @@ -145,7 +142,6 @@ ip_output(struct socket *so, struct mbuf *m0) |
| 145 | 142 | mhip->ip_sum = cksum(m, mhlen); |
| 146 | 143 | *mnext = m; |
| 147 | 144 | mnext = &m->m_nextpkt; |
| 148 | - STAT(ipstat.ips_ofragments++); | |
| 149 | 145 | } |
| 150 | 146 | /* |
| 151 | 147 | * Update first fragment by trimming what's been copied out |
| ... | ... | @@ -166,9 +162,6 @@ sendorfree: |
| 166 | 162 | else |
| 167 | 163 | m_freem(m); |
| 168 | 164 | } |
| 169 | - | |
| 170 | - if (error == 0) | |
| 171 | - STAT(ipstat.ips_fragmented++); | |
| 172 | 165 | } |
| 173 | 166 | |
| 174 | 167 | done: | ... | ... |
slirp/libslirp.h
| ... | ... | @@ -26,7 +26,6 @@ int slirp_remove_hostfwd(int is_udp, struct in_addr host_addr, int host_port); |
| 26 | 26 | int slirp_add_exec(int do_pty, const void *args, struct in_addr guest_addr, |
| 27 | 27 | int guest_port); |
| 28 | 28 | |
| 29 | -void slirp_stats(void); | |
| 30 | 29 | void slirp_connection_info(Monitor *mon); |
| 31 | 30 | |
| 32 | 31 | void slirp_socket_recv(struct in_addr guest_addr, int guest_port, | ... | ... |
slirp/mbuf.c
| ... | ... | @@ -17,10 +17,9 @@ |
| 17 | 17 | |
| 18 | 18 | #include <slirp.h> |
| 19 | 19 | |
| 20 | -int mbuf_alloced = 0; | |
| 20 | +static int mbuf_alloced; | |
| 21 | 21 | struct mbuf m_freelist, m_usedlist; |
| 22 | 22 | #define MBUF_THRESH 30 |
| 23 | -int mbuf_max = 0; | |
| 24 | 23 | |
| 25 | 24 | /* |
| 26 | 25 | * Find a nice value for msize |
| ... | ... | @@ -57,8 +56,6 @@ m_get(void) |
| 57 | 56 | mbuf_alloced++; |
| 58 | 57 | if (mbuf_alloced > MBUF_THRESH) |
| 59 | 58 | flags = M_DOFREE; |
| 60 | - if (mbuf_alloced > mbuf_max) | |
| 61 | - mbuf_max = mbuf_alloced; | |
| 62 | 59 | } else { |
| 63 | 60 | m = m_freelist.m_next; |
| 64 | 61 | remque(m); | ... | ... |
slirp/mbuf.h
| ... | ... | @@ -114,19 +114,7 @@ struct mbuf { |
| 114 | 114 | #define M_DOFREE 0x08 /* when m_free is called on the mbuf, free() |
| 115 | 115 | * it rather than putting it on the free list */ |
| 116 | 116 | |
| 117 | -/* | |
| 118 | - * Mbuf statistics. XXX | |
| 119 | - */ | |
| 120 | - | |
| 121 | -struct mbstat { | |
| 122 | - int mbs_alloced; /* Number of mbufs allocated */ | |
| 123 | - | |
| 124 | -}; | |
| 125 | - | |
| 126 | -extern struct mbstat mbstat; | |
| 127 | -extern int mbuf_alloced; | |
| 128 | 117 | extern struct mbuf m_freelist, m_usedlist; |
| 129 | -extern int mbuf_max; | |
| 130 | 118 | |
| 131 | 119 | void m_init _P((void)); |
| 132 | 120 | struct mbuf * m_get _P((void)); | ... | ... |
slirp/slirp.h
| ... | ... | @@ -3,15 +3,6 @@ |
| 3 | 3 | |
| 4 | 4 | //#define DEBUG 1 |
| 5 | 5 | |
| 6 | -// Uncomment the following line to enable SLIRP statistics printing in Qemu | |
| 7 | -//#define LOG_ENABLED | |
| 8 | - | |
| 9 | -#ifdef LOG_ENABLED | |
| 10 | -#define STAT(expr) expr | |
| 11 | -#else | |
| 12 | -#define STAT(expr) do { } while(0) | |
| 13 | -#endif | |
| 14 | - | |
| 15 | 6 | #include "config-host.h" |
| 16 | 7 | #include "slirp_config.h" |
| 17 | 8 | ... | ... |
slirp/tcp_input.c
| ... | ... | @@ -75,8 +75,6 @@ tcp_seq tcp_iss; /* tcp initial send seq # */ |
| 75 | 75 | tp->t_flags |= TF_DELACK; \ |
| 76 | 76 | (tp)->rcv_nxt += (ti)->ti_len; \ |
| 77 | 77 | flags = (ti)->ti_flags & TH_FIN; \ |
| 78 | - STAT(tcpstat.tcps_rcvpack++); \ | |
| 79 | - STAT(tcpstat.tcps_rcvbyte += (ti)->ti_len); \ | |
| 80 | 78 | if (so->so_emu) { \ |
| 81 | 79 | if (tcp_emu((so),(m))) sbappend((so), (m)); \ |
| 82 | 80 | } else \ |
| ... | ... | @@ -94,8 +92,6 @@ tcp_seq tcp_iss; /* tcp initial send seq # */ |
| 94 | 92 | tp->t_flags |= TF_DELACK; \ |
| 95 | 93 | (tp)->rcv_nxt += (ti)->ti_len; \ |
| 96 | 94 | flags = (ti)->ti_flags & TH_FIN; \ |
| 97 | - STAT(tcpstat.tcps_rcvpack++); \ | |
| 98 | - STAT(tcpstat.tcps_rcvbyte += (ti)->ti_len); \ | |
| 99 | 95 | if (so->so_emu) { \ |
| 100 | 96 | if (tcp_emu((so),(m))) sbappend(so, (m)); \ |
| 101 | 97 | } else \ |
| ... | ... | @@ -145,8 +141,6 @@ tcp_reass(register struct tcpcb *tp, register struct tcpiphdr *ti, |
| 145 | 141 | i = q->ti_seq + q->ti_len - ti->ti_seq; |
| 146 | 142 | if (i > 0) { |
| 147 | 143 | if (i >= ti->ti_len) { |
| 148 | - STAT(tcpstat.tcps_rcvduppack++); | |
| 149 | - STAT(tcpstat.tcps_rcvdupbyte += ti->ti_len); | |
| 150 | 144 | m_freem(m); |
| 151 | 145 | /* |
| 152 | 146 | * Try to present any queued data |
| ... | ... | @@ -162,8 +156,6 @@ tcp_reass(register struct tcpcb *tp, register struct tcpiphdr *ti, |
| 162 | 156 | } |
| 163 | 157 | q = tcpiphdr_next(q); |
| 164 | 158 | } |
| 165 | - STAT(tcpstat.tcps_rcvoopack++); | |
| 166 | - STAT(tcpstat.tcps_rcvoobyte += ti->ti_len); | |
| 167 | 159 | ti->ti_mbuf = m; |
| 168 | 160 | |
| 169 | 161 | /* |
| ... | ... | @@ -263,8 +255,6 @@ tcp_input(struct mbuf *m, int iphlen, struct socket *inso) |
| 263 | 255 | goto cont_conn; |
| 264 | 256 | } |
| 265 | 257 | |
| 266 | - | |
| 267 | - STAT(tcpstat.tcps_rcvtotal++); | |
| 268 | 258 | /* |
| 269 | 259 | * Get IP and TCP header together in first mbuf. |
| 270 | 260 | * Note: IP leaves IP header in first mbuf. |
| ... | ... | @@ -295,7 +285,6 @@ tcp_input(struct mbuf *m, int iphlen, struct socket *inso) |
| 295 | 285 | ti->ti_len = htons((u_int16_t)tlen); |
| 296 | 286 | len = sizeof(struct ip ) + tlen; |
| 297 | 287 | if(cksum(m, len)) { |
| 298 | - STAT(tcpstat.tcps_rcvbadsum++); | |
| 299 | 288 | goto drop; |
| 300 | 289 | } |
| 301 | 290 | |
| ... | ... | @@ -305,7 +294,6 @@ tcp_input(struct mbuf *m, int iphlen, struct socket *inso) |
| 305 | 294 | */ |
| 306 | 295 | off = ti->ti_off << 2; |
| 307 | 296 | if (off < sizeof (struct tcphdr) || off > tlen) { |
| 308 | - STAT(tcpstat.tcps_rcvbadoff++); | |
| 309 | 297 | goto drop; |
| 310 | 298 | } |
| 311 | 299 | tlen -= off; |
| ... | ... | @@ -353,7 +341,6 @@ findso: |
| 353 | 341 | ti->ti_dst, ti->ti_dport); |
| 354 | 342 | if (so) |
| 355 | 343 | tcp_last_so = so; |
| 356 | - STAT(tcpstat.tcps_socachemiss++); | |
| 357 | 344 | } |
| 358 | 345 | |
| 359 | 346 | /* |
| ... | ... | @@ -460,13 +447,10 @@ findso: |
| 460 | 447 | /* |
| 461 | 448 | * this is a pure ack for outstanding data. |
| 462 | 449 | */ |
| 463 | - STAT(tcpstat.tcps_predack++); | |
| 464 | 450 | if (tp->t_rtt && |
| 465 | 451 | SEQ_GT(ti->ti_ack, tp->t_rtseq)) |
| 466 | 452 | tcp_xmit_timer(tp, tp->t_rtt); |
| 467 | 453 | acked = ti->ti_ack - tp->snd_una; |
| 468 | - STAT(tcpstat.tcps_rcvackpack++); | |
| 469 | - STAT(tcpstat.tcps_rcvackbyte += acked); | |
| 470 | 454 | sbdrop(&so->so_snd, acked); |
| 471 | 455 | tp->snd_una = ti->ti_ack; |
| 472 | 456 | m_freem(m); |
| ... | ... | @@ -503,10 +487,7 @@ findso: |
| 503 | 487 | * with nothing on the reassembly queue and |
| 504 | 488 | * we have enough buffer space to take it. |
| 505 | 489 | */ |
| 506 | - STAT(tcpstat.tcps_preddat++); | |
| 507 | 490 | tp->rcv_nxt += ti->ti_len; |
| 508 | - STAT(tcpstat.tcps_rcvpack++); | |
| 509 | - STAT(tcpstat.tcps_rcvbyte += ti->ti_len); | |
| 510 | 491 | /* |
| 511 | 492 | * Add data to socket buffer. |
| 512 | 493 | */ |
| ... | ... | @@ -658,7 +639,6 @@ findso: |
| 658 | 639 | tp->t_flags |= TF_ACKNOW; |
| 659 | 640 | tp->t_state = TCPS_SYN_RECEIVED; |
| 660 | 641 | tp->t_timer[TCPT_KEEP] = TCPTV_KEEP_INIT; |
| 661 | - STAT(tcpstat.tcps_accepts++); | |
| 662 | 642 | goto trimthenstep6; |
| 663 | 643 | } /* case TCPS_LISTEN */ |
| 664 | 644 | |
| ... | ... | @@ -699,7 +679,6 @@ findso: |
| 699 | 679 | tcp_rcvseqinit(tp); |
| 700 | 680 | tp->t_flags |= TF_ACKNOW; |
| 701 | 681 | if (tiflags & TH_ACK && SEQ_GT(tp->snd_una, tp->iss)) { |
| 702 | - STAT(tcpstat.tcps_connects++); | |
| 703 | 682 | soisfconnected(so); |
| 704 | 683 | tp->t_state = TCPS_ESTABLISHED; |
| 705 | 684 | |
| ... | ... | @@ -726,8 +705,6 @@ trimthenstep6: |
| 726 | 705 | m_adj(m, -todrop); |
| 727 | 706 | ti->ti_len = tp->rcv_wnd; |
| 728 | 707 | tiflags &= ~TH_FIN; |
| 729 | - STAT(tcpstat.tcps_rcvpackafterwin++); | |
| 730 | - STAT(tcpstat.tcps_rcvbyteafterwin += todrop); | |
| 731 | 708 | } |
| 732 | 709 | tp->snd_wl1 = ti->ti_seq - 1; |
| 733 | 710 | tp->rcv_up = ti->ti_seq; |
| ... | ... | @@ -768,11 +745,6 @@ trimthenstep6: |
| 768 | 745 | */ |
| 769 | 746 | tp->t_flags |= TF_ACKNOW; |
| 770 | 747 | todrop = ti->ti_len; |
| 771 | - STAT(tcpstat.tcps_rcvduppack++); | |
| 772 | - STAT(tcpstat.tcps_rcvdupbyte += todrop); | |
| 773 | - } else { | |
| 774 | - STAT(tcpstat.tcps_rcvpartduppack++); | |
| 775 | - STAT(tcpstat.tcps_rcvpartdupbyte += todrop); | |
| 776 | 748 | } |
| 777 | 749 | m_adj(m, todrop); |
| 778 | 750 | ti->ti_seq += todrop; |
| ... | ... | @@ -791,7 +763,6 @@ trimthenstep6: |
| 791 | 763 | if ((so->so_state & SS_NOFDREF) && |
| 792 | 764 | tp->t_state > TCPS_CLOSE_WAIT && ti->ti_len) { |
| 793 | 765 | tp = tcp_close(tp); |
| 794 | - STAT(tcpstat.tcps_rcvafterclose++); | |
| 795 | 766 | goto dropwithreset; |
| 796 | 767 | } |
| 797 | 768 | |
| ... | ... | @@ -801,9 +772,7 @@ trimthenstep6: |
| 801 | 772 | */ |
| 802 | 773 | todrop = (ti->ti_seq+ti->ti_len) - (tp->rcv_nxt+tp->rcv_wnd); |
| 803 | 774 | if (todrop > 0) { |
| 804 | - STAT(tcpstat.tcps_rcvpackafterwin++); | |
| 805 | 775 | if (todrop >= ti->ti_len) { |
| 806 | - STAT(tcpstat.tcps_rcvbyteafterwin += ti->ti_len); | |
| 807 | 776 | /* |
| 808 | 777 | * If a new connection request is received |
| 809 | 778 | * while in TIME_WAIT, drop the old connection |
| ... | ... | @@ -826,11 +795,10 @@ trimthenstep6: |
| 826 | 795 | */ |
| 827 | 796 | if (tp->rcv_wnd == 0 && ti->ti_seq == tp->rcv_nxt) { |
| 828 | 797 | tp->t_flags |= TF_ACKNOW; |
| 829 | - STAT(tcpstat.tcps_rcvwinprobe++); | |
| 830 | - } else | |
| 798 | + } else { | |
| 831 | 799 | goto dropafterack; |
| 832 | - } else | |
| 833 | - STAT(tcpstat.tcps_rcvbyteafterwin += todrop); | |
| 800 | + } | |
| 801 | + } | |
| 834 | 802 | m_adj(m, -todrop); |
| 835 | 803 | ti->ti_len -= todrop; |
| 836 | 804 | tiflags &= ~(TH_PUSH|TH_FIN); |
| ... | ... | @@ -854,7 +822,6 @@ trimthenstep6: |
| 854 | 822 | case TCPS_FIN_WAIT_2: |
| 855 | 823 | case TCPS_CLOSE_WAIT: |
| 856 | 824 | tp->t_state = TCPS_CLOSED; |
| 857 | - STAT(tcpstat.tcps_drops++); | |
| 858 | 825 | tp = tcp_close(tp); |
| 859 | 826 | goto drop; |
| 860 | 827 | |
| ... | ... | @@ -893,7 +860,6 @@ trimthenstep6: |
| 893 | 860 | if (SEQ_GT(tp->snd_una, ti->ti_ack) || |
| 894 | 861 | SEQ_GT(ti->ti_ack, tp->snd_max)) |
| 895 | 862 | goto dropwithreset; |
| 896 | - STAT(tcpstat.tcps_connects++); | |
| 897 | 863 | tp->t_state = TCPS_ESTABLISHED; |
| 898 | 864 | /* |
| 899 | 865 | * The sent SYN is ack'ed with our sequence number +1 |
| ... | ... | @@ -944,7 +910,6 @@ trimthenstep6: |
| 944 | 910 | |
| 945 | 911 | if (SEQ_LEQ(ti->ti_ack, tp->snd_una)) { |
| 946 | 912 | if (ti->ti_len == 0 && tiwin == tp->snd_wnd) { |
| 947 | - STAT(tcpstat.tcps_rcvdupack++); | |
| 948 | 913 | DEBUG_MISC((dfd," dup ack m = %lx so = %lx \n", |
| 949 | 914 | (long )m, (long )so)); |
| 950 | 915 | /* |
| ... | ... | @@ -1012,12 +977,9 @@ trimthenstep6: |
| 1012 | 977 | tp->snd_cwnd = tp->snd_ssthresh; |
| 1013 | 978 | tp->t_dupacks = 0; |
| 1014 | 979 | if (SEQ_GT(ti->ti_ack, tp->snd_max)) { |
| 1015 | - STAT(tcpstat.tcps_rcvacktoomuch++); | |
| 1016 | 980 | goto dropafterack; |
| 1017 | 981 | } |
| 1018 | 982 | acked = ti->ti_ack - tp->snd_una; |
| 1019 | - STAT(tcpstat.tcps_rcvackpack++); | |
| 1020 | - STAT(tcpstat.tcps_rcvackbyte += acked); | |
| 1021 | 983 | |
| 1022 | 984 | /* |
| 1023 | 985 | * If transmit timer is running and timed sequence |
| ... | ... | @@ -1138,10 +1100,6 @@ step6: |
| 1138 | 1100 | (SEQ_LT(tp->snd_wl1, ti->ti_seq) || |
| 1139 | 1101 | (tp->snd_wl1 == ti->ti_seq && (SEQ_LT(tp->snd_wl2, ti->ti_ack) || |
| 1140 | 1102 | (tp->snd_wl2 == ti->ti_ack && tiwin > tp->snd_wnd))))) { |
| 1141 | - /* keep track of pure window updates */ | |
| 1142 | - if (ti->ti_len == 0 && | |
| 1143 | - tp->snd_wl2 == ti->ti_ack && tiwin > tp->snd_wnd) | |
| 1144 | - STAT(tcpstat.tcps_rcvwinupd++); | |
| 1145 | 1103 | tp->snd_wnd = tiwin; |
| 1146 | 1104 | tp->snd_wl1 = ti->ti_seq; |
| 1147 | 1105 | tp->snd_wl2 = ti->ti_ack; |
| ... | ... | @@ -1425,7 +1383,6 @@ tcp_xmit_timer(register struct tcpcb *tp, int rtt) |
| 1425 | 1383 | DEBUG_ARG("tp = %lx", (long)tp); |
| 1426 | 1384 | DEBUG_ARG("rtt = %d", rtt); |
| 1427 | 1385 | |
| 1428 | - STAT(tcpstat.tcps_rttupdated++); | |
| 1429 | 1386 | if (tp->t_srtt != 0) { |
| 1430 | 1387 | /* |
| 1431 | 1388 | * srtt is stored as fixed point with 3 bits after the | ... | ... |
slirp/tcp_output.c
| ... | ... | @@ -247,8 +247,6 @@ again: |
| 247 | 247 | /* |
| 248 | 248 | * No reason to send a segment, just return. |
| 249 | 249 | */ |
| 250 | - STAT(tcpstat.tcps_didnuttin++); | |
| 251 | - | |
| 252 | 250 | return (0); |
| 253 | 251 | |
| 254 | 252 | send: |
| ... | ... | @@ -292,16 +290,6 @@ send: |
| 292 | 290 | * the template for sends on this connection. |
| 293 | 291 | */ |
| 294 | 292 | if (len) { |
| 295 | - if (tp->t_force && len == 1) | |
| 296 | - STAT(tcpstat.tcps_sndprobe++); | |
| 297 | - else if (SEQ_LT(tp->snd_nxt, tp->snd_max)) { | |
| 298 | - STAT(tcpstat.tcps_sndrexmitpack++); | |
| 299 | - STAT(tcpstat.tcps_sndrexmitbyte += len); | |
| 300 | - } else { | |
| 301 | - STAT(tcpstat.tcps_sndpack++); | |
| 302 | - STAT(tcpstat.tcps_sndbyte += len); | |
| 303 | - } | |
| 304 | - | |
| 305 | 293 | m = m_get(); |
| 306 | 294 | if (m == NULL) { |
| 307 | 295 | error = 1; |
| ... | ... | @@ -322,15 +310,6 @@ send: |
| 322 | 310 | if (off + len == so->so_snd.sb_cc) |
| 323 | 311 | flags |= TH_PUSH; |
| 324 | 312 | } else { |
| 325 | - if (tp->t_flags & TF_ACKNOW) | |
| 326 | - STAT(tcpstat.tcps_sndacks++); | |
| 327 | - else if (flags & (TH_SYN|TH_FIN|TH_RST)) | |
| 328 | - STAT(tcpstat.tcps_sndctrl++); | |
| 329 | - else if (SEQ_GT(tp->snd_up, tp->snd_una)) | |
| 330 | - STAT(tcpstat.tcps_sndurg++); | |
| 331 | - else | |
| 332 | - STAT(tcpstat.tcps_sndwinup++); | |
| 333 | - | |
| 334 | 313 | m = m_get(); |
| 335 | 314 | if (m == NULL) { |
| 336 | 315 | error = 1; |
| ... | ... | @@ -436,7 +415,6 @@ send: |
| 436 | 415 | if (tp->t_rtt == 0) { |
| 437 | 416 | tp->t_rtt = 1; |
| 438 | 417 | tp->t_rtseq = startseq; |
| 439 | - STAT(tcpstat.tcps_segstimed++); | |
| 440 | 418 | } |
| 441 | 419 | } |
| 442 | 420 | |
| ... | ... | @@ -481,7 +459,6 @@ send: |
| 481 | 459 | out: |
| 482 | 460 | return (error); |
| 483 | 461 | } |
| 484 | - STAT(tcpstat.tcps_sndtotal++); | |
| 485 | 462 | |
| 486 | 463 | /* |
| 487 | 464 | * Data sent (as far as we can tell). | ... | ... |
slirp/tcp_subr.c
| ... | ... | @@ -222,9 +222,7 @@ struct tcpcb *tcp_drop(struct tcpcb *tp, int err) |
| 222 | 222 | if (TCPS_HAVERCVDSYN(tp->t_state)) { |
| 223 | 223 | tp->t_state = TCPS_CLOSED; |
| 224 | 224 | (void) tcp_output(tp); |
| 225 | - STAT(tcpstat.tcps_drops++); | |
| 226 | - } else | |
| 227 | - STAT(tcpstat.tcps_conndrops++); | |
| 225 | + } | |
| 228 | 226 | return (tcp_close(tp)); |
| 229 | 227 | } |
| 230 | 228 | |
| ... | ... | @@ -261,7 +259,6 @@ tcp_close(struct tcpcb *tp) |
| 261 | 259 | sbfree(&so->so_rcv); |
| 262 | 260 | sbfree(&so->so_snd); |
| 263 | 261 | sofree(so); |
| 264 | - STAT(tcpstat.tcps_closed++); | |
| 265 | 262 | return ((struct tcpcb *)0); |
| 266 | 263 | } |
| 267 | 264 | |
| ... | ... | @@ -442,8 +439,6 @@ tcp_connect(struct socket *inso) |
| 442 | 439 | |
| 443 | 440 | tcp_template(tp); |
| 444 | 441 | |
| 445 | - STAT(tcpstat.tcps_connattempt++); | |
| 446 | - | |
| 447 | 442 | tp->t_state = TCPS_SYN_SENT; |
| 448 | 443 | tp->t_timer[TCPT_KEEP] = TCPTV_KEEP_INIT; |
| 449 | 444 | tp->iss = tcp_iss; | ... | ... |
slirp/tcp_timer.c
| ... | ... | @@ -32,10 +32,6 @@ |
| 32 | 32 | |
| 33 | 33 | #include <slirp.h> |
| 34 | 34 | |
| 35 | -#ifdef LOG_ENABLED | |
| 36 | -struct tcpstat tcpstat; /* tcp statistics */ | |
| 37 | -#endif | |
| 38 | - | |
| 39 | 35 | u_int32_t tcp_now; /* for RFC 1323 timestamps */ |
| 40 | 36 | |
| 41 | 37 | static struct tcpcb *tcp_timers(register struct tcpcb *tp, int timer); |
| ... | ... | @@ -58,7 +54,6 @@ tcp_fasttimo(void) |
| 58 | 54 | (tp->t_flags & TF_DELACK)) { |
| 59 | 55 | tp->t_flags &= ~TF_DELACK; |
| 60 | 56 | tp->t_flags |= TF_ACKNOW; |
| 61 | - STAT(tcpstat.tcps_delack++); | |
| 62 | 57 | (void) tcp_output(tp); |
| 63 | 58 | } |
| 64 | 59 | } |
| ... | ... | @@ -180,7 +175,6 @@ tcp_timers(register struct tcpcb *tp, int timer) |
| 180 | 175 | * We tried our best, now the connection must die! |
| 181 | 176 | */ |
| 182 | 177 | tp->t_rxtshift = TCP_MAXRXTSHIFT; |
| 183 | - STAT(tcpstat.tcps_timeoutdrop++); | |
| 184 | 178 | tp = tcp_drop(tp, tp->t_softerror); |
| 185 | 179 | /* tp->t_softerror : ETIMEDOUT); */ /* XXX */ |
| 186 | 180 | return (tp); /* XXX */ |
| ... | ... | @@ -192,7 +186,6 @@ tcp_timers(register struct tcpcb *tp, int timer) |
| 192 | 186 | */ |
| 193 | 187 | tp->t_rxtshift = 6; |
| 194 | 188 | } |
| 195 | - STAT(tcpstat.tcps_rexmttimeo++); | |
| 196 | 189 | rexmt = TCP_REXMTVAL(tp) * tcp_backoff[tp->t_rxtshift]; |
| 197 | 190 | TCPT_RANGESET(tp->t_rxtcur, rexmt, |
| 198 | 191 | (short)tp->t_rttmin, TCPTV_REXMTMAX); /* XXX */ |
| ... | ... | @@ -254,7 +247,6 @@ tcp_timers(register struct tcpcb *tp, int timer) |
| 254 | 247 | * Force a byte to be output, if possible. |
| 255 | 248 | */ |
| 256 | 249 | case TCPT_PERSIST: |
| 257 | - STAT(tcpstat.tcps_persisttimeo++); | |
| 258 | 250 | tcp_setpersist(tp); |
| 259 | 251 | tp->t_force = 1; |
| 260 | 252 | (void) tcp_output(tp); |
| ... | ... | @@ -266,7 +258,6 @@ tcp_timers(register struct tcpcb *tp, int timer) |
| 266 | 258 | * or drop connection if idle for too long. |
| 267 | 259 | */ |
| 268 | 260 | case TCPT_KEEP: |
| 269 | - STAT(tcpstat.tcps_keeptimeo++); | |
| 270 | 261 | if (tp->t_state < TCPS_ESTABLISHED) |
| 271 | 262 | goto dropit; |
| 272 | 263 | |
| ... | ... | @@ -285,7 +276,6 @@ tcp_timers(register struct tcpcb *tp, int timer) |
| 285 | 276 | * by the protocol spec, this requires the |
| 286 | 277 | * correspondent TCP to respond. |
| 287 | 278 | */ |
| 288 | - STAT(tcpstat.tcps_keepprobe++); | |
| 289 | 279 | tcp_respond(tp, &tp->t_template, (struct mbuf *)NULL, |
| 290 | 280 | tp->rcv_nxt, tp->snd_una - 1, 0); |
| 291 | 281 | tp->t_timer[TCPT_KEEP] = TCPTV_KEEPINTVL; |
| ... | ... | @@ -294,7 +284,6 @@ tcp_timers(register struct tcpcb *tp, int timer) |
| 294 | 284 | break; |
| 295 | 285 | |
| 296 | 286 | dropit: |
| 297 | - STAT(tcpstat.tcps_keepdrops++); | |
| 298 | 287 | tp = tcp_drop(tp, 0); |
| 299 | 288 | break; |
| 300 | 289 | } | ... | ... |
slirp/tcp_var.h
| ... | ... | @@ -158,69 +158,6 @@ struct tcpcb { |
| 158 | 158 | #define TCP_REXMTVAL(tp) \ |
| 159 | 159 | (((tp)->t_srtt >> TCP_RTT_SHIFT) + (tp)->t_rttvar) |
| 160 | 160 | |
| 161 | -#ifdef LOG_ENABLED | |
| 162 | -/* | |
| 163 | - * TCP statistics. | |
| 164 | - * Many of these should be kept per connection, | |
| 165 | - * but that's inconvenient at the moment. | |
| 166 | - */ | |
| 167 | -struct tcpstat { | |
| 168 | - u_long tcps_connattempt; /* connections initiated */ | |
| 169 | - u_long tcps_accepts; /* connections accepted */ | |
| 170 | - u_long tcps_connects; /* connections established */ | |
| 171 | - u_long tcps_drops; /* connections dropped */ | |
| 172 | - u_long tcps_conndrops; /* embryonic connections dropped */ | |
| 173 | - u_long tcps_closed; /* conn. closed (includes drops) */ | |
| 174 | - u_long tcps_segstimed; /* segs where we tried to get rtt */ | |
| 175 | - u_long tcps_rttupdated; /* times we succeeded */ | |
| 176 | - u_long tcps_delack; /* delayed acks sent */ | |
| 177 | - u_long tcps_timeoutdrop; /* conn. dropped in rxmt timeout */ | |
| 178 | - u_long tcps_rexmttimeo; /* retransmit timeouts */ | |
| 179 | - u_long tcps_persisttimeo; /* persist timeouts */ | |
| 180 | - u_long tcps_keeptimeo; /* keepalive timeouts */ | |
| 181 | - u_long tcps_keepprobe; /* keepalive probes sent */ | |
| 182 | - u_long tcps_keepdrops; /* connections dropped in keepalive */ | |
| 183 | - | |
| 184 | - u_long tcps_sndtotal; /* total packets sent */ | |
| 185 | - u_long tcps_sndpack; /* data packets sent */ | |
| 186 | - u_long tcps_sndbyte; /* data bytes sent */ | |
| 187 | - u_long tcps_sndrexmitpack; /* data packets retransmitted */ | |
| 188 | - u_long tcps_sndrexmitbyte; /* data bytes retransmitted */ | |
| 189 | - u_long tcps_sndacks; /* ack-only packets sent */ | |
| 190 | - u_long tcps_sndprobe; /* window probes sent */ | |
| 191 | - u_long tcps_sndurg; /* packets sent with URG only */ | |
| 192 | - u_long tcps_sndwinup; /* window update-only packets sent */ | |
| 193 | - u_long tcps_sndctrl; /* control (SYN|FIN|RST) packets sent */ | |
| 194 | - | |
| 195 | - u_long tcps_rcvtotal; /* total packets received */ | |
| 196 | - u_long tcps_rcvpack; /* packets received in sequence */ | |
| 197 | - u_long tcps_rcvbyte; /* bytes received in sequence */ | |
| 198 | - u_long tcps_rcvbadsum; /* packets received with ccksum errs */ | |
| 199 | - u_long tcps_rcvbadoff; /* packets received with bad offset */ | |
| 200 | - u_long tcps_rcvduppack; /* duplicate-only packets received */ | |
| 201 | - u_long tcps_rcvdupbyte; /* duplicate-only bytes received */ | |
| 202 | - u_long tcps_rcvpartduppack; /* packets with some duplicate data */ | |
| 203 | - u_long tcps_rcvpartdupbyte; /* dup. bytes in part-dup. packets */ | |
| 204 | - u_long tcps_rcvoopack; /* out-of-order packets received */ | |
| 205 | - u_long tcps_rcvoobyte; /* out-of-order bytes received */ | |
| 206 | - u_long tcps_rcvpackafterwin; /* packets with data after window */ | |
| 207 | - u_long tcps_rcvbyteafterwin; /* bytes rcvd after window */ | |
| 208 | - u_long tcps_rcvafterclose; /* packets rcvd after "close" */ | |
| 209 | - u_long tcps_rcvwinprobe; /* rcvd window probe packets */ | |
| 210 | - u_long tcps_rcvdupack; /* rcvd duplicate acks */ | |
| 211 | - u_long tcps_rcvacktoomuch; /* rcvd acks for unsent data */ | |
| 212 | - u_long tcps_rcvackpack; /* rcvd ack packets */ | |
| 213 | - u_long tcps_rcvackbyte; /* bytes acked by rcvd acks */ | |
| 214 | - u_long tcps_rcvwinupd; /* rcvd window update packets */ | |
| 215 | - u_long tcps_predack; /* times hdr predict ok for acks */ | |
| 216 | - u_long tcps_preddat; /* times hdr predict ok for data pkts */ | |
| 217 | - u_long tcps_socachemiss; /* tcp_last_so misses */ | |
| 218 | - u_long tcps_didnuttin; /* Times tcp_output didn't do anything XXX */ | |
| 219 | -}; | |
| 220 | - | |
| 221 | -extern struct tcpstat tcpstat; /* tcp statistics */ | |
| 222 | -#endif | |
| 223 | - | |
| 224 | 161 | extern u_int32_t tcp_now; /* for RFC 1323 timestamps */ |
| 225 | 162 | |
| 226 | 163 | #endif | ... | ... |
slirp/udp.c
| ... | ... | @@ -41,10 +41,6 @@ |
| 41 | 41 | #include <slirp.h> |
| 42 | 42 | #include "ip_icmp.h" |
| 43 | 43 | |
| 44 | -#ifdef LOG_ENABLED | |
| 45 | -struct udpstat udpstat; | |
| 46 | -#endif | |
| 47 | - | |
| 48 | 44 | struct socket udb; |
| 49 | 45 | |
| 50 | 46 | static u_int8_t udp_tos(struct socket *so); |
| ... | ... | @@ -74,8 +70,6 @@ udp_input(register struct mbuf *m, int iphlen) |
| 74 | 70 | DEBUG_ARG("m = %lx", (long)m); |
| 75 | 71 | DEBUG_ARG("iphlen = %d", iphlen); |
| 76 | 72 | |
| 77 | - STAT(udpstat.udps_ipackets++); | |
| 78 | - | |
| 79 | 73 | /* |
| 80 | 74 | * Strip IP options, if any; should skip this, |
| 81 | 75 | * make available to user, and use on returned packets, |
| ... | ... | @@ -101,7 +95,6 @@ udp_input(register struct mbuf *m, int iphlen) |
| 101 | 95 | |
| 102 | 96 | if (ip->ip_len != len) { |
| 103 | 97 | if (len > ip->ip_len) { |
| 104 | - STAT(udpstat.udps_badlen++); | |
| 105 | 98 | goto bad; |
| 106 | 99 | } |
| 107 | 100 | m_adj(m, len - ip->ip_len); |
| ... | ... | @@ -123,7 +116,6 @@ udp_input(register struct mbuf *m, int iphlen) |
| 123 | 116 | ((struct ipovly *)ip)->ih_x1 = 0; |
| 124 | 117 | ((struct ipovly *)ip)->ih_len = uh->uh_ulen; |
| 125 | 118 | if(cksum(m, len + sizeof(struct ip))) { |
| 126 | - STAT(udpstat.udps_badsum++); | |
| 127 | 119 | goto bad; |
| 128 | 120 | } |
| 129 | 121 | } |
| ... | ... | @@ -165,7 +157,6 @@ udp_input(register struct mbuf *m, int iphlen) |
| 165 | 157 | if (tmp == &udb) { |
| 166 | 158 | so = NULL; |
| 167 | 159 | } else { |
| 168 | - STAT(udpstat.udpps_pcbcachemiss++); | |
| 169 | 160 | udp_last_so = so; |
| 170 | 161 | } |
| 171 | 162 | } |
| ... | ... | @@ -279,8 +270,6 @@ int udp_output2(struct socket *so, struct mbuf *m, |
| 279 | 270 | ((struct ip *)ui)->ip_ttl = IPDEFTTL; |
| 280 | 271 | ((struct ip *)ui)->ip_tos = iptos; |
| 281 | 272 | |
| 282 | - STAT(udpstat.udps_opackets++); | |
| 283 | - | |
| 284 | 273 | error = ip_output(so, m); |
| 285 | 274 | |
| 286 | 275 | return (error); | ... | ... |
slirp/udp.h
| ... | ... | @@ -67,32 +67,12 @@ struct udpiphdr { |
| 67 | 67 | #define ui_ulen ui_u.uh_ulen |
| 68 | 68 | #define ui_sum ui_u.uh_sum |
| 69 | 69 | |
| 70 | -#ifdef LOG_ENABLED | |
| 71 | -struct udpstat { | |
| 72 | - /* input statistics: */ | |
| 73 | - u_long udps_ipackets; /* total input packets */ | |
| 74 | - u_long udps_hdrops; /* packet shorter than header */ | |
| 75 | - u_long udps_badsum; /* checksum error */ | |
| 76 | - u_long udps_badlen; /* data length larger than packet */ | |
| 77 | - u_long udps_noport; /* no socket on port */ | |
| 78 | - u_long udps_noportbcast; /* of above, arrived as broadcast */ | |
| 79 | - u_long udps_fullsock; /* not delivered, input socket full */ | |
| 80 | - u_long udpps_pcbcachemiss; /* input packets missing pcb cache */ | |
| 81 | - /* output statistics: */ | |
| 82 | - u_long udps_opackets; /* total output packets */ | |
| 83 | -}; | |
| 84 | -#endif | |
| 85 | - | |
| 86 | 70 | /* |
| 87 | 71 | * Names for UDP sysctl objects |
| 88 | 72 | */ |
| 89 | 73 | #define UDPCTL_CHECKSUM 1 /* checksum UDP packets */ |
| 90 | 74 | #define UDPCTL_MAXID 2 |
| 91 | 75 | |
| 92 | -#ifdef LOG_ENABLED | |
| 93 | -extern struct udpstat udpstat; | |
| 94 | -#endif | |
| 95 | - | |
| 96 | 76 | extern struct socket udb; |
| 97 | 77 | struct mbuf; |
| 98 | 78 | ... | ... |