+ 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
+ int min_mbps = ip->min>>10;\r
+ int agreg = 1, print_stats = 1;\r
+ \r
+ if(min_mbps < 1)\r
+ {\r
+ min_mbps = 1;\r
+ }\r
+ \r
+ if(ip->keyword->download_aggregation)\r
+ {\r
+ if(min_mbps <= avg_mbps_down)\r
+ {\r
+ unshape_this_ip = 0;\r
+ agreg = (avg_mbps_down+1)/min_mbps;\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
+ else\r
+ {\r
+ unshape_this_ip = 1;\r
+ }\r
+ }\r
+ else if(ip->keyword->upload_aggregation)\r
+ {\r
+ if(min_mbps <= avg_mbps_up)\r
+ {\r
+ unshape_this_ip = 0;\r
+ agreg = (avg_mbps_up+1)/min_mbps;\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
+ else\r
+ {\r
+ unshape_this_ip = 1;\r
+ }\r
+ }\r