@@ -126,6 +126,7 @@ void ndpi_analyze_payload(struct ndpi_flow_info *flow,
126
126
struct packet_id_stats * p ;
127
127
128
128
#ifdef DEBUG_PAYLOAD
129
+ u_int16_t i ;
129
130
for (i = 0 ; i < payload_len ; i ++ )
130
131
printf ("%c" , isprint (payload [i ]) ? payload [i ] : '.' );
131
132
printf ("\n" );
@@ -216,68 +217,68 @@ static int payload_stats_sort_asc(void *_a, void *_b) {
216
217
217
218
/* ***************************************************** */
218
219
219
- void print_payload_stat (struct payload_stats * p ) {
220
+ static void print_payload_stat (struct payload_stats * p , FILE * out ) {
220
221
u_int i ;
221
222
struct flow_id_stats * s , * tmp ;
222
223
struct packet_id_stats * s1 , * tmp1 ;
223
224
224
- printf ( "\t[" );
225
+ fprintf ( out , "\t[" );
225
226
226
227
for (i = 0 ; i < p -> pattern_len ; i ++ ) {
227
- printf ( "%c" , isprint (p -> pattern [i ]) ? p -> pattern [i ] : '.' );
228
+ fprintf ( out , "%c" , isprint (p -> pattern [i ]) ? p -> pattern [i ] : '.' );
228
229
}
229
230
230
- printf ( "]" );
231
- for (; i < 16 ; i ++ ) printf ( " " );
232
- printf ( "[" );
231
+ fprintf ( out , "]" );
232
+ for (; i < 16 ; i ++ ) fprintf ( out , " " );
233
+ fprintf ( out , "[" );
233
234
234
235
for (i = 0 ; i < p -> pattern_len ; i ++ ) {
235
- printf ( "%s%02X" , (i > 0 ) ? " " : "" , isprint (p -> pattern [i ]) ? p -> pattern [i ] : '.' );
236
+ fprintf ( out , "%s%02X" , (i > 0 ) ? " " : "" , isprint (p -> pattern [i ]) ? p -> pattern [i ] : '.' );
236
237
}
237
238
238
- printf ( "]" );
239
+ fprintf ( out , "]" );
239
240
240
- for (; i < 16 ; i ++ ) printf ( " " );
241
- for (i = p -> pattern_len ; i < max_pattern_len ; i ++ ) printf ( " " );
241
+ for (; i < 16 ; i ++ ) fprintf ( out , " " );
242
+ for (i = p -> pattern_len ; i < max_pattern_len ; i ++ ) fprintf ( out , " " );
242
243
243
- printf ( "[len: %u][num_occurrencies: %u][flowId: " ,
244
- p -> pattern_len , p -> num_occurrencies );
244
+ fprintf ( out , "[len: %u][num_occurrencies: %u][flowId: " ,
245
+ p -> pattern_len , p -> num_occurrencies );
245
246
246
247
i = 0 ;
247
248
HASH_ITER (hh , p -> flows , s , tmp ) {
248
- printf ( "%s%u" , (i > 0 ) ? " " : "" , s -> flow_id );
249
+ fprintf ( out , "%s%u" , (i > 0 ) ? " " : "" , s -> flow_id );
249
250
i ++ ;
250
251
}
251
252
252
- printf ( "][packetIds: " );
253
+ fprintf ( out , "][packetIds: " );
253
254
254
255
/* ******************************** */
255
256
256
257
i = 0 ;
257
258
HASH_ITER (hh , p -> packets , s1 , tmp1 ) {
258
- printf ( "%s%u" , (i > 0 ) ? " " : "" , s1 -> packet_id );
259
+ fprintf ( out , "%s%u" , (i > 0 ) ? " " : "" , s1 -> packet_id );
259
260
i ++ ;
260
261
}
261
262
262
- printf ( "]\n" );
263
+ fprintf ( out , "]\n" );
263
264
264
265
265
266
}
266
267
267
268
/* ***************************************************** */
268
269
269
- void ndpi_report_payload_stats (int print ) {
270
+ void ndpi_report_payload_stats (FILE * out ) {
270
271
struct payload_stats * p , * tmp ;
271
272
u_int num = 0 ;
272
273
273
- if (print )
274
- printf ( "\n\nPayload Analysis\n" );
274
+ if (out )
275
+ fprintf ( out , "\n\nPayload Analysis\n" );
275
276
276
277
HASH_SORT (pstats , payload_stats_sort_asc );
277
278
278
279
HASH_ITER (hh , pstats , p , tmp ) {
279
- if (print && num <= max_num_reported_top_payloads )
280
- print_payload_stat (p );
280
+ if (out && num <= max_num_reported_top_payloads )
281
+ print_payload_stat (p , out );
281
282
282
283
ndpi_free (p -> pattern );
283
284
@@ -711,20 +712,20 @@ ndpi_flow_update_byte_dist_mean_var(ndpi_flow_info_t *flow, const void *x,
711
712
712
713
/* ***************************************************** */
713
714
714
- float ndpi_flow_get_byte_count_entropy (const uint32_t byte_count [256 ],
715
+ double ndpi_flow_get_byte_count_entropy (const uint32_t byte_count [256 ],
715
716
unsigned int num_bytes )
716
717
{
717
718
int i ;
718
- float sum = 0.0 ;
719
+ double sum = 0.0 ;
719
720
720
721
for (i = 0 ; i < 256 ; i ++ ) {
721
- float tmp = (float ) byte_count [i ] / (float ) num_bytes ;
722
+ double tmp = (double ) byte_count [i ] / (double ) num_bytes ;
722
723
723
724
if (tmp > FLT_EPSILON ) {
724
725
sum -= tmp * logf (tmp );
725
726
}
726
727
}
727
- return (sum / logf (2.0 ));
728
+ return (sum / log (2.0 ));
728
729
}
729
730
730
731
/* ***************************************************** */
@@ -1584,15 +1585,15 @@ static struct ndpi_proto packet_processing(struct ndpi_workflow * workflow,
1584
1585
flow -> entropy -> score = ndpi_classify (flow -> entropy -> src2dst_pkt_len , flow -> entropy -> src2dst_pkt_time ,
1585
1586
flow -> entropy -> dst2src_pkt_len , flow -> entropy -> dst2src_pkt_time ,
1586
1587
flow -> entropy -> src2dst_start , flow -> entropy -> dst2src_start ,
1587
- max_num_packets_per_flow , flow -> src_port , flow -> dst_port ,
1588
+ max_num_packets_per_flow , ntohs ( flow -> src_port ), ntohs ( flow -> dst_port ) ,
1588
1589
flow -> src2dst_packets , flow -> dst2src_packets ,
1589
1590
flow -> entropy -> src2dst_opackets , flow -> entropy -> dst2src_opackets ,
1590
1591
flow -> entropy -> src2dst_l4_bytes , flow -> entropy -> dst2src_l4_bytes , 1 ,
1591
1592
flow -> entropy -> src2dst_byte_count , flow -> entropy -> dst2src_byte_count );
1592
1593
else
1593
1594
flow -> entropy -> score = ndpi_classify (flow -> entropy -> src2dst_pkt_len , flow -> entropy -> src2dst_pkt_time ,
1594
1595
NULL , NULL , flow -> entropy -> src2dst_start , flow -> entropy -> src2dst_start ,
1595
- max_num_packets_per_flow , flow -> src_port , flow -> dst_port ,
1596
+ max_num_packets_per_flow , ntohs ( flow -> src_port ), ntohs ( flow -> dst_port ) ,
1596
1597
flow -> src2dst_packets , 0 ,
1597
1598
flow -> entropy -> src2dst_opackets , 0 ,
1598
1599
flow -> entropy -> src2dst_l4_bytes , 0 , 1 ,
0 commit comments