1BEGIN{
2    csnddt=0;
3    crcvdt=0;
4    csndnak=0;
5    crcvnak=0;
6    csndrefresh=0;
7    crcvrefresh=0;
8    csndret=0;
9    crcvret=0;
10    csimloss=0;
11    cldt=0;
12    clnak=0;
13    clref=0;
14    clret=0;
15    cpackets=0;
16    control=1;
17}
18{
19	if (control>7)
20	{
21	    if($2=="S"){
22            if ($3=="DT"){
23        	    csnddt++;
24        	    sdt[$6]++;
25             }
26             else if ($3=="NK"){
27        	    if ( NF >= 11 ){
28                    base_sn=$8;
29                    window_size=$9;
30                    hmask=$10;
31                    lmask=$11;
32
33                    i=0;
34
35                    while( int(lmask/2) > 0 ){
36
37                        if( (lmask%2)==1 )
38                            snak[base_sn + i + 1]++;
39
40                        lmask=int(lmask/2);
41                        i++;
42                    }
43
44                    if( (lmask%2)==1 )
45                        snak[base_sn + i + 1]++;
46
47                    i=0;
48
49                    while( int(hmask/2) > 0 ){
50
51                        if( (hmask%2)==1 )
52                            snak[(int(window_size/2)) + base_sn + i + 1]++;
53
54                        hmask=int(hmask/2);
55                        i++;
56                    }
57
58                    if( (hmask%2)==1 )
59                        snak[(int(window_size/2)) + base_sn + i + 1]++;
60                }
61                else{
62                    snak[$8]++;
63                }
64
65                csndnak++;
66            }
67            else if ($3=="RF") csndrefresh++;
68            else if ($3=="RT"){
69                sret[$8]++;
70                csndret++;
71            }
72        }
73        else if($2=="R"){
74            if (($3=="DT") && ($4==member_ip) && ($5==member_pid)){
75                crcvdt++;
76                rdt[$6]++;
77            }
78            else if (($3=="NK") && ($4==member_ip) && ($5==member_pid)){
79                if ( NF >= 11 ){
80                    base_sn=$8;
81                    window_size=$9;
82                    hmask=$10;
83                    lmask=$11;
84
85                    i=0;
86
87                    while( int(lmask/2) > 0 ){
88
89                        if( (lmask%2)==1 )
90                            rnak[base_sn + i + 1]++;
91
92                        lmask=int(lmask/2);
93                        i++;
94                    }
95                    if( (lmask%2)==1 )
96                           rnak[base_sn + i + 1]++;
97                    i=0;
98
99                    while( int(hmask/2) > 0 ){
100
101                        if( (hmask%2)==1 )
102                            rnak[(int(window_size/2)) + base_sn + i + 1]++;
103
104                        hmask=int(hmask/2);
105                        i++;
106                    }
107                    if( (hmask%2)==1 )
108                        rnak[(int(window_size/2)) + base_sn + i + 1]++;
109                }
110                else{
111                    rnak[$8]++;
112                }
113
114                crcvnak++;
115            }
116            else if ($3=="RF") crcvrefresh++;
117            else if (($3=="RT") && ($4==member_ip) && ($5==member_pid)){
118                rret[$8]++;
119                crcvret++;
120            }
121	    }
122	    else if($2=="L"){
123            csimloss++;
124        	if (($3=="DT") && ($4==member_ip) && ($5==member_pid)){
125        	    ldt[$6]++;
126        	    cldt++;
127        	}
128        	else if (($3=="NK") && ($4==member_ip) && ($5==member_pid)){
129                lnak[$8]++;
130                clnak++;
131            }
132        	else if (($3=="RF") && ($4==member_ip) && ($5==member_pid)){
133                lref[$6]++;
134                clref++;
135            }
136        	else if (($3=="RT") && ($4==member_ip) && ($5==member_pid)){
137                lret[$8]++;
138                clret++;
139            }
140	    }
141	    cpackets++;
142	}
143	control++;
144}
145END{
146    printf("--------------------------------------------------\n");
147    printf("  Data related to\n  %s -> %s:%d\n",f1,member_ip,member_pid);
148    printf("--------------------------------------------------\n");
149    printf("Data sent:    %d\n",csnddt);
150    printf("Data received from %s:%d   %d\n",member_ip,member_pid,crcvdt);
151    printf("NACKs sent:     %d\n",csndnak);
152    printf("NACKs received from %s:%d    %d\n",member_ip,member_pid,crcvnak);
153    printf("Refresh sent:  %d\n",csndrefresh);
154    printf("Refresh received from %s:%d %d\n",member_ip,member_pid,crcvrefresh);
155    printf("Retrans sent:  %d\n",csndret);
156    printf("Retrans received from %s:%d %d\n",member_ip,member_pid,crcvret);
157    printf("Total simulated loss:   %d\n",csimloss);
158    printf("Data loss with simulation from %s:%d    %d\n",member_ip,member_pid,cldt);
159    printf("NACKs lost by simulation from %s:%d    %d\n",member_ip,member_pid,clnak);
160    printf("Refresh lost by simulation from %s:%d    %d\n",member_ip,member_pid,clref);
161    printf("Retrans lost by simulation from %s:%d    %d\n",member_ip,member_pid,clret);
162    printf("Packets identified:  %d\n",cpackets);
163
164
165    naksenviados=sprintf("%s.naksenviados",f1);
166    naksrecebidos=sprintf("%s.naksrecebidos",f1);
167    retenviadas=sprintf("%s.retenviadas",f1);
168    retrecebidas=sprintf("%s.retrecebidas",f1);
169    dtperdidos=sprintf("%s.dtperdidos",f1);
170    nakperdidos=sprintf("%s.nakperdidos",f1);
171    retperdidos=sprintf("%s.retperdidas",f1);
172    refperdidos=sprintf("%s.refperdidos",f1);
173    dtenviados=sprintf("%s.dtenviados",f1);
174    dtrecebidos=sprintf("%s.dtrecebidos",f1);
175
176    print " "> naksenviados;
177    print " "> retenviadas;
178    print " "> naksrecebidos;
179    print " "> retrecebidas;
180    print " "> dtperdidos;
181    print " "> nakperdidos;
182    print " "> retperdidos;
183    print " "> refperdidos;
184    print " "> dtenviados;
185    print " "> dtrecebidos;
186
187
188    for( j = 0; j < maxsndpackets; j++ )
189    {
190        printf("%d %d\n",j,snak[j]) >> naksenviados;
191        printf("%d %d\n",j,sret[j]) >> retenviadas;
192        printf("%d %d\n",j,rnak[j]) >> naksrecebidos;
193        printf("%d %d\n",j,rret[j]) >> retrecebidas;
194        printf("%d %d\n",j,ldt[j]) >> dtperdidos;
195        printf("%d %d\n",j,lnak[j]) >> nakperdidos;
196        printf("%d %d\n",j,lret[j]) >> retperdidos;
197        printf("%d %d\n",j,lref[j]) >> refperdidos;
198        printf("%d %d\n",j,sdt[j]) >> dtenviados;
199        printf("%d %d\n",j,rdt[j]) >> dtrecebidos;
200    }
201
202    if( maxsndpackets > 0 )
203        printf("Loss: %.4f%% \n\n",(1 - (crcvdt/maxsndpackets)));
204
205    printf("--------------------------------------------------\n\n");
206}
207
208