source: tools/tracereport/error_report.c @ 624c2da

4.0.1-hotfixescachetimestampsdevelopdpdk-ndagetsilivegetfragoffhelplibtrace4ndag_formatpfringrc-4.0.1rc-4.0.2rc-4.0.3rc-4.0.4ringdecrementfixringperformanceringtimestampfixes
Last change on this file since 624c2da was fbc4342, checked in by Perry Lorier <perry@…>, 14 years ago

Port tools over to using the new api's

  • Property mode set to 100644
File size: 1.2 KB
RevLine 
[d3ff1fb]1#include <netdb.h>
2#include <inttypes.h>
[e3b0188]3#include <lt_inttypes.h>
[d3ff1fb]4#include <stdio.h>
5#include "libtrace.h"
6#include "tracereport.h"
[466aed6]7#include "report.h"
[d3ff1fb]8
9static uint64_t rx_errors = 0;
10static uint64_t ip_errors = 0;
[49ce177]11static uint64_t tcp_errors = 0;
[d3ff1fb]12
13void error_per_packet(struct libtrace_packet_t *packet)
14{
15        struct libtrace_ip *ip = trace_get_ip(packet);
[49ce177]16        struct libtrace_tcp *tcp = trace_get_tcp(packet);
[fbc4342]17        void *link = trace_get_packet_buffer(packet,NULL,NULL);
[d3ff1fb]18        if (!link) {
19                ++rx_errors;
20        }
[a1b899f]21       
22        /* This isn't quite as simple as it seems.
23         *
24         * If the packets were captured via wdcap's anonymisation module,
[e991529]25         * the checksum is set to 0 when it is correct and 1 if incorrect.
[a1b899f]26         *
27         * If a different capture method is used, there's a good chance the
28         * checksum has not been altered
29         */
[d3ff1fb]30        if (ip) {
31                if (ntohs(ip->ip_sum)!=0)
32                        ++ip_errors;
33        }
[49ce177]34        if (tcp) {
35                if (ntohs(tcp->check)!=0)
36                        ++tcp_errors;
37        }
[d3ff1fb]38}
39
40void error_report(void)
41{
[bd4bec9]42        FILE *out = fopen("error.rpt", "w");
[e991529]43        if (!out) {
44                perror("fopen");
45                return;
46        }
47       
48        fprintf(out, "RX Errors: %" PRIu64 "\n",rx_errors);
49        fprintf(out, "IP Checksum errors: %" PRIu64 "\n",ip_errors);
[853603a]50        /*printf("TCP Checksum errors: %" PRIu64 "\n",tcp_errors); */
[e991529]51
52        fclose(out);
[d3ff1fb]53}
Note: See TracBrowser for help on using the repository browser.