X-Git-Url: http://git.onelab.eu/?p=distributedratelimiting.git;a=blobdiff_plain;f=drl%2Fstandard.c;h=5b860a31b0f48bd1d246408e44ead15f5acd562c;hp=93cb663e7c167835d2a2c7021b0278630257393b;hb=45c9f40d55411c898b9bb46d92335c298476a822;hpb=f54a05e4b5bef7c5c90663765656a9084d622e82 diff --git a/drl/standard.c b/drl/standard.c index 93cb663..5b860a3 100644 --- a/drl/standard.c +++ b/drl/standard.c @@ -171,7 +171,7 @@ void standard_table_remove(standard_flow_table table, standard_flow *flow) { //assert(current != NULL); if (current == NULL) { - printlog(LOG_WARN, "Flow %p disappeared?\n", current); + printlog(LOG_DEBUG, "Flow %p disappeared?\n", flow); } } @@ -244,6 +244,15 @@ void standard_table_update_flows(standard_flow_table table, struct timeval now, struct in_addr src, dst; char sip[22], dip[22]; + /* Reset statistics. */ + table->common->num_flows = 0; + table->common->num_flows_5k = 0; + table->common->num_flows_10k = 0; + table->common->num_flows_20k = 0; + table->common->num_flows_50k = 0; + table->common->avg_rate = 0; + /* End statistics. */ + time_delta = timeval_subtract(now, table->common->last_update); if (time_delta <= 0) { @@ -295,6 +304,28 @@ void standard_table_update_flows(standard_flow_table table, struct timeval now, maxflowrate = current->rate; } + if (current->rate > 51200) { + table->common->num_flows_50k += 1; + table->common->num_flows_20k += 1; + table->common->num_flows_10k += 1; + table->common->num_flows_5k += 1; + table->common->num_flows += 1; + } else if (current->rate > 20480) { + table->common->num_flows_20k += 1; + table->common->num_flows_10k += 1; + table->common->num_flows_5k += 1; + table->common->num_flows += 1; + } else if (current->rate > 10240) { + table->common->num_flows_10k += 1; + table->common->num_flows_5k += 1; + table->common->num_flows += 1; + } else if (current->rate > 5120) { + table->common->num_flows_5k += 1; + table->common->num_flows += 1; + } else { + table->common->num_flows += 1; + } + src.s_addr = ntohl(current->source_ip); dst.s_addr = ntohl(current->dest_ip); strcpy(sip, inet_ntoa(src)); @@ -305,6 +336,10 @@ void standard_table_update_flows(standard_flow_table table, struct timeval now, current->rate); } + if (table->common->num_flows > 0) { + table->common->avg_rate = table->common->rate / table->common->num_flows; + } + printlog(LOG_DEBUG, "FLOW:--\n--\n"); table->common->max_flow_rate = maxflowrate;