more work on aggregation
[svn/Prometheus-QoS/.git] / prometheus.c
index 313941946142eb2cba45a134ae20ae66c507bff6..2b9b6052db88fb64b5cbf9bc44ace6d28850ca87 100644 (file)
@@ -7,7 +7,7 @@
 /* Credit: CZFree.Net,Martin Devera,Netdave,Aquarius,Gandalf  */\r
 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
 \r
-/* Modified by: xChaos, 20150315\r
+/* Modified by: xChaos, 20150331\r
                  ludva, 20080415\r
  \r
    Prometheus QoS is free software; you can redistribute it and/or\r
@@ -605,6 +605,8 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
   for_each(sharedip, ips) if(eq(sharedip->name, ip->sharing))\r
   {\r
    sharedip->traffic += ip->traffic;\r
+   sharedip->traffic_down += ip->direct;\r
+   sharedip->traffic_up += ip->upload;\r
    ip->traffic = 0;\r
    ip->mark = sharedip->mark; \r
    ip->lmsid = sharedip->lmsid;\r
@@ -1051,8 +1053,8 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
      if_exists(ip,ips,eq(ip->addr,_))\r
      {\r
       int unshape_this_ip = stop_shaping;\r
-      long avg_mbps_down = ip->direct * 8 / how_much_seconds;\r
-      long avg_mbps_up = ip->upload * 8 / how_much_seconds;\r
+      long avg_mbps_down = ip->traffic_down * 8 / how_much_seconds; \r
+      long avg_mbps_up = ip->traffic_up * 8 / how_much_seconds;\r
       int min_mbps = ip->min>>10;\r
       int agreg = 1, print_stats = 1;\r
       \r
@@ -1066,7 +1068,7 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
        if(min_mbps <= avg_mbps_down)\r
        {\r
         unshape_this_ip = 0;\r
-        agreg = (avg_mbps_down+1)/min_mbps;\r
+        agreg = (int)((float)(avg_mbps_down+1)/min_mbps+.5);\r
         ip->max /= agreg;\r
         printf("Download aggregation 1:%d for %s (min: %lu Mbps avg: %ld Mbps)\n", agreg, ip->name, min_mbps, avg_mbps_down);\r
        }\r
@@ -1080,7 +1082,7 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
        if(min_mbps <= avg_mbps_up)\r
        {\r
         unshape_this_ip = 0;\r
-        agreg = (avg_mbps_up+1)/min_mbps;\r
+        agreg = (int)((float)(avg_mbps_up+1)/min_mbps+.5);\r
         ip->max /= agreg;\r
         printf("Upload aggregation 1:%d for %s: (min: %lu Mbps avg: %ld Mbps)\n", agreg, ip->name, min_mbps, avg_mbps_up);\r
        }\r
@@ -1089,7 +1091,8 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
         unshape_this_ip = 1;\r
        }\r
       }\r
-      ip->mark=atoi(ptr);\r
+      ip->aggregated = agreg;      \r
+      ip->mark = atoi(ptr);\r
       if(ip->max < ip->desired || unshape_this_ip || reduce_ceil) /* apply or disable FUP limit immediately.... */\r
       {\r
        if(unshape_this_ip)\r
This page took 0.109111 seconds and 4 git commands to generate.