X-Git-Url: https://git.harvie.cz/?a=blobdiff_plain;f=parseiptables.c;h=5a2043f714f55025d92cc300b937f830baee59f8;hb=139fc8a0a7c49580783fb3c4b8050761e8bf021a;hp=946707d3bd084aa4fca852e241eb8723bb4998d3;hpb=af37be1dccdd5c9b86113a6e02ed794da3102ec4;p=svn%2FPrometheus-QoS%2F.git diff --git a/parseiptables.c b/parseiptables.c index 946707d..5a2043f 100644 --- a/parseiptables.c +++ b/parseiptables.c @@ -1,4 +1,4 @@ -/* Modified by: xChaos, 20130115 */ +/* Modified by: xChaos, 20131208 */ #include "cll1-0.6.2.h" #include "ipstruct.h" @@ -8,17 +8,20 @@ /* globals declared in prometheus.c */ extern struct IP *ips, *ip, *sharedip; extern char *mark; -extern char *proxy_ip; +/* extern char *proxy_ip; */ extern int free_min; extern int free_max; extern int include_upload; +int traffic_detected = 0; + /* ===================== traffic analyser - uses iptables ================ */ void get_traffic_statistics(const char *whichiptables, int ipv6) { char *str,*cmd; - int downloadflag=0; + int downloadflag = 0; + traffic_detected = 0; textfile(Pipe,str) *line,*lines=NULL; string(str,STRLEN); @@ -36,7 +39,7 @@ void get_traffic_statistics(const char *whichiptables, int ipv6) for_each(line,lines) { - int col, accept = 0, proxyflag = 0, valid = 1, setchainname = 0, commonflag = 0; + int col, accept = 0, /*proxyflag = 0, */valid = 1, setchainname = 0, commonflag = 0; unsigned long long traffic = 0; unsigned long pkts = 0; char *ipaddr = NULL,*ptr; @@ -78,6 +81,10 @@ void get_traffic_statistics(const char *whichiptables, int ipv6) else { sscanf(ptr,"%Lu",&traffic); + if(traffic) + { + traffic_detected = 1; + } traffic += (1<<19); traffic >>= 20; } @@ -98,14 +105,17 @@ void get_traffic_statistics(const char *whichiptables, int ipv6) } else if(!ipv6) { - if(downloadflag) +/* if(downloadflag) { if(strstr(proxy_ip,ptr)) { proxyflag = 1; } - } - else + + } + else + { */ + if(!downloadflag) { ipaddr = ptr; } @@ -131,12 +141,14 @@ void get_traffic_statistics(const char *whichiptables, int ipv6) { printf("(IPv4) "); } - +/* if(proxyflag) { printf("(proxy) "); } - else if(!downloadflag) + else +*/ + if(!downloadflag) { printf("(up) "); } @@ -165,30 +177,33 @@ void get_traffic_statistics(const char *whichiptables, int ipv6) if(downloadflag) { +/* if(proxyflag) { ip->proxy = traffic; } else - { - ip->traffic += traffic; - } - ip->direct = ip->traffic-ip->upload-ip->proxy; - ip->pktsdown = pkts; + {*/ + ip->traffic += traffic; + ip->traffic_down += traffic; +/* } */ + ip->direct += traffic; /*-ip->proxy;*/ + ip->pktsdown += pkts; } else { - ip->upload = traffic; - ip->pktsup = pkts; + ip->upload += traffic; + ip->traffic_up += traffic; + ip->pktsup += pkts; if(include_upload) { ip->traffic += traffic; } else { - if(traffic > ip->traffic) + if(ip->upload > ip->traffic) { - ip->traffic = traffic; + ip->traffic = ip->upload; } } }