5a2043f714f55025d92cc300b937f830baee59f8
1 /* Modified by: xChaos, 20131208 */
3 #include "cll1-0.6.2.h"
8 /* globals declared in prometheus.c */
9 extern struct IP
*ips
, *ip
, *sharedip
;
11 /* extern char *proxy_ip; */
14 extern int include_upload
;
16 int traffic_detected
= 0;
18 /* ===================== traffic analyser - uses iptables ================ */
20 void get_traffic_statistics(const char *whichiptables
, int ipv6
)
26 textfile(Pipe
,str
) *line
,*lines
=NULL
;
30 sprintf(cmd
,"%s -L -v -x -n -t mangle", whichiptables
);
42 int col
, accept
= 0, /*proxyflag = 0, */valid
= 1, setchainname
= 0, commonflag
= 0;
43 unsigned long long traffic
= 0;
44 unsigned long pkts
= 0;
45 char *ipaddr
= NULL
,*ptr
;
47 valid_columns(ptr
, line
->str
, ' ', col
)
50 case 1: if(eq(ptr
,"Chain"))
54 else if(eq(ptr
,"pkts"))
60 sscanf(ptr
,"%lu",&pkts
);
63 case 2: if(setchainname
)
65 if(!strncmp(ptr
,"post_",5) || eq(ptr
,"POSTROUTING"))
71 if(!strncmp(ptr
,"forw_",5) || eq(ptr
,"FORWARD"))
76 if(eq(ptr
,"post_common") || eq(ptr
,"forw_common"))
83 sscanf(ptr
,"%Lu",&traffic
);
92 case 3: if((strncmp(ptr
,"post_",5) && strncmp(ptr
,"forw_",5)) || commonflag
)
94 accept
= eq(ptr
,mark
);
97 case 7: if(ipv6
&& !downloadflag
)
102 case 8: if(ipv6
&& downloadflag
)
110 if(strstr(proxy_ip,ptr))
124 case 9: if(!ipv6
&& downloadflag
)
131 if(accept
&& traffic
>0 && ipaddr
)
133 /* IPv6 subnet - /64 */
134 char *isipv6
= strstr(ipaddr
,"/64");
160 printf("%s %Lu MB (%ld pkts)\n", ipaddr
, traffic
, pkts
);
162 if_exists(ip
, ips
, eqi(ip
->addr
,ipaddr
));
165 TheIP(ipaddr
, FALSE
);
166 if(eq(ip
->addr
,"0.0.0.0/0"))
168 ip
->name
= "(unregistered)";
170 ip
->max
= ip
->desired
=free_max
;
187 ip
->traffic
+= traffic
;
188 ip
->traffic_down
+= traffic
;
190 ip
->direct
+= traffic
; /*-ip->proxy;*/
191 ip
->pktsdown
+= pkts
;
195 ip
->upload
+= traffic
;
196 ip
->traffic_up
+= traffic
;
200 ip
->traffic
+= traffic
;
204 if(ip
->upload
> ip
->traffic
)
206 ip
->traffic
= ip
->upload
;
This page took 0.351103 seconds and 3 git commands to generate.