X-Git-Url: https://git.harvie.cz/?p=svn%2FPrometheus-QoS%2F.git;a=blobdiff_plain;f=prometheus.c;h=a243c16242c3ad38625232e6110ea0d8e9c7dcd5;hp=c7f8013746c17d87e9996daf188b1d43a971ea1c;hb=3335365b0903d2b1baf7331d17203490cdee65ea;hpb=9de0d723a1874e8e7a264d34395d6fe208b3c833 diff --git a/prometheus.c b/prometheus.c index c7f8013..a243c16 100644 --- a/prometheus.c +++ b/prometheus.c @@ -1051,20 +1051,20 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version); ptr++; if_exists(ip,ips,eq(ip->addr,_)) { - int unshape_this_ip = stop_shaping; + int unshape_this_ip; long avg_mbps_down = ip->traffic_down * 8 / how_much_seconds; long avg_mbps_up = ip->traffic_up * 8 / how_much_seconds; - int min_mbps = ip->min>>10; int agreg = 1, print_stats = 1; - if(min_mbps < 1) - { - min_mbps = 1; - } - if(ip->keyword->download_aggregation) { - if(min_mbps/ip->keyword->download_aggregation <= avg_mbps_down) + int min_mbps = (ip->min/ip->keyword->download_aggregation)>>10; + if(min_mbps < 1) + { + min_mbps = 1; + } + + if(min_mbps <= avg_mbps_down) { unshape_this_ip = 0; agreg = (int)((float)(avg_mbps_down+1)/min_mbps+.5); @@ -1079,7 +1079,13 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version); } else if(ip->keyword->upload_aggregation) { - if(min_mbps/ip->keyword->upload_aggregation <= avg_mbps_up) + int min_mbps = (ip->min/ip->keyword->upload_aggregation)>>10; + if(min_mbps < 1) + { + min_mbps = 1; + } + + if(min_mbps <= avg_mbps_up) { unshape_this_ip = 0; agreg = (int)((float)(avg_mbps_up+1)/min_mbps+.5); @@ -1091,6 +1097,10 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version); unshape_this_ip = 1; } } + if(stop_shaping) + { + unshape_this_ip = 1; + } ip->aggregated = agreg; ip->mark = atoi(ptr); if(ip->max < ip->desired || unshape_this_ip || reduce_ceil) /* apply or disable FUP limit immediately.... */