New flows now get the last table update time rather than the current time.
[distributedratelimiting.git] / drl / standard.c
index 5c6a6d8..f8f813c 100644 (file)
@@ -86,7 +86,7 @@ standard_flow *standard_table_lookup(standard_flow_table table, const key_flow *
         flow->source_port = key->source_port;
         flow->dest_port = key->dest_port;
         flow->last_packet = key->packet_time;
-        gettimeofday(&flow->last_update, NULL);
+        flow->last_update = table->common->last_update;
 
         /* Add the flow to the hash list. */
         flow->nexth = table->flows[hash];
@@ -242,6 +242,7 @@ void standard_table_update_flows(standard_flow_table table, struct timeval now,
     standard_flow *current;
     struct in_addr src, dst;
     char sip[22], dip[22];
+    key_flow largest_flow_info;
 
     /* Reset statistics. */
     table->common->num_flows = 0;
@@ -301,6 +302,11 @@ void standard_table_update_flows(standard_flow_table table, struct timeval now,
 
         if (current->rate > maxflowrate) {
             maxflowrate = current->rate;
+            largest_flow_info.source_ip = current->source_ip;
+            largest_flow_info.dest_ip = current->dest_ip;
+            largest_flow_info.source_port = current->source_port;
+            largest_flow_info.dest_port = current->dest_port;
+            largest_flow_info.protocol = current->protocol;
         }
 
         if (current->rate > 51200) {
@@ -342,4 +348,5 @@ void standard_table_update_flows(standard_flow_table table, struct timeval now,
     printlog(LOG_DEBUG, "FLOW:--\n--\n");
 
     table->common->max_flow_rate = maxflowrate;
+    table->common->max_flow_rate_flow_hash = table->hash_function(&largest_flow_info);
 }