source: tools/tracereport/nlp_report.c @ 051618c

4.0.1-hotfixescachetimestampsdevelopdpdk-ndagetsilivegetfragoffhelplibtrace4ndag_formatpfringrc-4.0.1rc-4.0.2rc-4.0.3rc-4.0.4ringdecrementfixringperformanceringtimestampfixes
Last change on this file since 051618c was b5dc60d, checked in by Josef Vodanovich <jjv4@…>, 14 years ago

Lots of minor changes to the reports to make it look a bit nicer and tcp ss should be working.

  • Property mode set to 100644
File size: 1.8 KB
RevLine 
[d4336d5]1#include <netdb.h>
2#include <inttypes.h>
3#include <lt_inttypes.h>
4#include <stdio.h>
5#include "libtrace.h"
6#include "tracereport.h"
7
[4eec8dc]8static stat_t nlp_stat[3][65536] = {{{0,0}}} ;
[d4336d5]9
10void nlp_per_packet(struct libtrace_packet_t *packet)
11{
[4eec8dc]12        char *link=(char *)trace_get_link(packet);
13        uint16_t type = htons(*(uint16_t*)(link+12));
14        libtrace_direction_t dir = trace_get_direction(packet);
[d4336d5]15
[4eec8dc]16        if (dir != TRACE_DIR_INCOMING && dir != TRACE_DIR_OUTGOING)
17                dir = TRACE_DIR_OTHER;
18       
19        nlp_stat[dir][type].count++;
20        nlp_stat[dir][type].bytes+=trace_get_wire_length(packet);
[d4336d5]21}
22
23void nlp_report(void){
24        int i,j;
25       
[4eec8dc]26        FILE *out = fopen("nlp.out", "w");
27        if (!out) {
28                perror("fopen");
29                return;
30        }
31       
32        /* Put some headings up for human-readability */
[b5dc60d]33        fprintf(out, "%-12s\t%10s\t%16s %16s\n",
[4eec8dc]34                        "NETWORK LAYER",
35                        "DIRECTION",
36                        "BYTES",
37                        "PACKETS");
[d4336d5]38        for(i = 0; i < 65536; i++){
39                if (nlp_stat[0][i].count==0 && 
40                        nlp_stat[1][i].count==0 && nlp_stat[2][i].count==0)
41                        continue;
42                switch(i){
43                        case 0x0800:
[4eec8dc]44                                fprintf(out, "%12s", "IPv4 |");
[d4336d5]45                                break;
46                        case 0x0806:
[4eec8dc]47                                fprintf(out, "%12s", "ARP |");
[d4336d5]48                                break;
[4eec8dc]49                        case 0x8137:
50                                fprintf(out, "%12s", "IPX |");
[d4336d5]51                                break;
52                        case 0x814C:
[4eec8dc]53                                fprintf(out, "%12s", "SNMP |");
[d4336d5]54                                break;
55                        case 0x86DD:
[4eec8dc]56                                fprintf(out, "%12s", "IPv6 |");
[d4336d5]57                                break;
58                        case 0x880B:
[4eec8dc]59                                fprintf(out, "%12s", "PPP |");
[d4336d5]60                                break;
61                        default:
[4eec8dc]62                                fprintf(out, "%10i |",i);
[d4336d5]63                }
[4eec8dc]64                for(j=0;j<3;j++){
65                        if (j != 0) {
66                                fprintf(out, "%12s", " |");
67                        }
68
69                        switch (j) {
70                                case 0:
[b5dc60d]71                                        fprintf(out, "\t%10s", "Outbound");
[4eec8dc]72                                        break;
73                                case 1:
[b5dc60d]74                                        fprintf(out, "\t%10s", "Inbound");
[4eec8dc]75                                        break;
76                                case 2:
[b5dc60d]77                                        fprintf(out, "\t%10s", "Unknown");
[4eec8dc]78                                        break;
[d4336d5]79                        }
[4eec8dc]80                       
[b5dc60d]81                        fprintf(out, "\t%16llu %16llu\n",
[d4336d5]82                                nlp_stat[j][i].bytes,
83                                nlp_stat[j][i].count);
84                }
85        }
[4eec8dc]86        fclose(out);
[d4336d5]87}
Note: See TracBrowser for help on using the repository browser.