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
);
88 case 3: if((strncmp(ptr
,"post_",5) && strncmp(ptr
,"forw_",5)) || commonflag
)
90 accept
= eq(ptr
,mark
);
93 case 7: if(ipv6
&& !downloadflag
)
98 case 8: if(ipv6
&& downloadflag
)
106 if(strstr(proxy_ip,ptr))
120 case 9: if(!ipv6
&& downloadflag
)
127 if(accept
&& traffic
>0 && ipaddr
)
129 /* IPv6 subnet - /64 */
130 char *isipv6
= strstr(ipaddr
,"/64");
156 traffic_detected
= 1;
157 printf("%s %Lu MB (%ld pkts)\n", ipaddr
, traffic
, pkts
);
159 if_exists(ip
, ips
, eqi(ip
->addr
,ipaddr
));
162 TheIP(ipaddr
, FALSE
);
163 if(eq(ip
->addr
,"0.0.0.0/0"))
165 ip
->name
= "(unregistered)";
167 ip
->max
= ip
->desired
=free_max
;
184 ip
->traffic
+= traffic
;
185 ip
->traffic_down
+= traffic
;
187 ip
->direct
+= traffic
; /*-ip->proxy;*/
188 ip
->pktsdown
+= pkts
;
192 ip
->upload
+= traffic
;
193 ip
->traffic_up
+= traffic
;
197 ip
->traffic
+= traffic
;
201 if(ip
->upload
> ip
->traffic
)
203 ip
->traffic
= ip
->upload
;
This page took 0.732875 seconds and 4 git commands to generate.