GIT.Harvie.CZ
/
svn
/
Prometheus-QoS
/
.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
more work on aggregation
[svn/Prometheus-QoS/.git]
/
parseiptables.c
diff --git
a/parseiptables.c
b/parseiptables.c
index e73632497340e0c5566d888f8f9ed8e3312f5ca1..8544df788461c6a0aa29d6a83a89b7e68876a8d0 100644
(file)
--- a/
parseiptables.c
+++ b/
parseiptables.c
@@
-1,4
+1,4
@@
-/* Modified by: xChaos, 2013
0115
*/
\r
+/* Modified by: xChaos, 2013
1208
*/
\r
\r
#include "cll1-0.6.2.h"
\r
#include "ipstruct.h"
\r
\r
#include "cll1-0.6.2.h"
\r
#include "ipstruct.h"
\r
@@
-8,14
+8,14
@@
/* globals declared in prometheus.c */
\r
extern struct IP *ips, *ip, *sharedip;
\r
extern char *mark;
\r
/* globals declared in prometheus.c */
\r
extern struct IP *ips, *ip, *sharedip;
\r
extern char *mark;
\r
-extern char *proxy_ip;
\r
+/* extern char *proxy_ip; */
\r
extern int free_min;
\r
extern int free_max;
\r
extern int include_upload;
\r
\r
/* ===================== traffic analyser - uses iptables ================ */
\r
\r
extern int free_min;
\r
extern int free_max;
\r
extern int include_upload;
\r
\r
/* ===================== traffic analyser - uses iptables ================ */
\r
\r
-void get_traffic_statistics(const char *whichiptables)
\r
+void get_traffic_statistics(const char *whichiptables
, int ipv6
)
\r
{
\r
char *str,*cmd;
\r
int downloadflag=0;
\r
{
\r
char *str,*cmd;
\r
int downloadflag=0;
\r
@@
-36,12
+36,12
@@
void get_traffic_statistics(const char *whichiptables)
\r
for_each(line,lines)
\r
{
\r
\r
for_each(line,lines)
\r
{
\r
- int col, accept = 0,
proxyflag = 0,
valid = 1, setchainname = 0, commonflag = 0;
\r
+ int col, accept = 0,
/*proxyflag = 0, */
valid = 1, setchainname = 0, commonflag = 0;
\r
unsigned long long traffic = 0;
\r
unsigned long pkts = 0;
\r
char *ipaddr = NULL,*ptr;
\r
\r
unsigned long long traffic = 0;
\r
unsigned long pkts = 0;
\r
char *ipaddr = NULL,*ptr;
\r
\r
- valid_columns(ptr, line->str, ' ', col)
\r
+ valid_columns(ptr, line->str, ' ', col)
\r
if(valid) switch(col)
\r
{
\r
case 1: if(eq(ptr,"Chain"))
\r
if(valid) switch(col)
\r
{
\r
case 1: if(eq(ptr,"Chain"))
\r
@@
-86,39
+86,76
@@
void get_traffic_statistics(const char *whichiptables)
{
\r
accept = eq(ptr,mark);
\r
}
\r
{
\r
accept = eq(ptr,mark);
\r
}
\r
- /*if(filter_type==1) accept=eq(ptr,"MARK"); else accept=eq(ptr,"CLASSIFY");*/
\r
break;
\r
break;
\r
- case 8: if(downloadflag)
\r
- {
\r
- if(strstr(proxy_ip,ptr))
\r
+ case 7: if(ipv6 && !downloadflag)
\r
+ {
\r
+ ipaddr = ptr;
\r
+ }
\r
+ break;
\r
+ case 8: if(ipv6 && downloadflag)
\r
+ {
\r
+ ipaddr = ptr;
\r
+ }
\r
+ else if(!ipv6)
\r
+ {
\r
+/* if(downloadflag)
\r
+ {
\r
+ if(strstr(proxy_ip,ptr))
\r
+ {
\r
+ proxyflag = 1;
\r
+ }
\r
+
\r
+ }
\r
+ else
\r
+ { */
\r
+ if(!downloadflag)
\r
{
\r
{
\r
-
proxyflag = 1
;
\r
+
ipaddr = ptr
;
\r
}
\r
}
\r
}
\r
}
\r
- else
\r
+ break;
\r
+ case 9: if(!ipv6 && downloadflag)
\r
{
\r
ipaddr = ptr;
\r
}
\r
break;
\r
{
\r
ipaddr = ptr;
\r
}
\r
break;
\r
- case 9: if(downloadflag)ipaddr = ptr;break;
\r
}
\r
\r
if(accept && traffic>0 && ipaddr)
\r
{
\r
}
\r
\r
if(accept && traffic>0 && ipaddr)
\r
{
\r
+ /* IPv6 subnet - /64 */
\r
+ char *isipv6 = strstr(ipaddr,"/64");
\r
+ if(ipv6 && isipv6)
\r
+ {
\r
+ *isipv6=0;
\r
+ printf("(IPv6) ");
\r
+ }
\r
+ else
\r
+ {
\r
+ printf("(IPv4) ");
\r
+ }
\r
+/*
\r
if(proxyflag)
\r
{
\r
printf("(proxy) ");
\r
}
\r
if(proxyflag)
\r
{
\r
printf("(proxy) ");
\r
}
\r
- else if(!downloadflag)
\r
+ else
\r
+*/
\r
+ if(!downloadflag)
\r
{
\r
{
\r
- printf("(up
load
) ");
\r
+ printf("(up) ");
\r
}
\r
}
\r
- printf("IP %s: %Lu MB (%ld pkts)\n", ipaddr, traffic, pkts);
\r
+ else
\r
+ {
\r
+ printf("(down) ");
\r
+ }
\r
+
\r
+ printf("%s %Lu MB (%ld pkts)\n", ipaddr, traffic, pkts);
\r
\r
\r
- if_exists(ip,
ips,eq
(ip->addr,ipaddr));
\r
+ if_exists(ip,
ips, eqi
(ip->addr,ipaddr));
\r
else
\r
{
\r
else
\r
{
\r
- TheIP(ipaddr);
\r
+ TheIP(ipaddr
, FALSE
);
\r
if(eq(ip->addr,"0.0.0.0/0"))
\r
{
\r
ip->name = "(unregistered)";
\r
if(eq(ip->addr,"0.0.0.0/0"))
\r
{
\r
ip->name = "(unregistered)";
\r
@@
-133,30
+170,33
@@
void get_traffic_statistics(const char *whichiptables)
\r
if(downloadflag)
\r
{
\r
\r
if(downloadflag)
\r
{
\r
+/*
\r
if(proxyflag)
\r
{
\r
ip->proxy = traffic;
\r
}
\r
else
\r
if(proxyflag)
\r
{
\r
ip->proxy = traffic;
\r
}
\r
else
\r
- {
\r
- ip->traffic += traffic;
\r
- }
\r
- ip->direct = ip->traffic-ip->upload-ip->proxy;
\r
- ip->pktsdown = pkts;
\r
+ {*/
\r
+ ip->traffic += traffic;
\r
+ ip->traffic_down += traffic;
\r
+/* } */
\r
+ ip->direct += traffic; /*-ip->proxy;*/
\r
+ ip->pktsdown += pkts;
\r
}
\r
else
\r
{
\r
}
\r
else
\r
{
\r
- ip->upload = traffic;
\r
- ip->pktsup = pkts;
\r
+ ip->upload += traffic;
\r
+ ip->traffic_up += traffic;
\r
+ ip->pktsup += pkts;
\r
if(include_upload)
\r
{
\r
ip->traffic += traffic;
\r
}
\r
else
\r
{
\r
if(include_upload)
\r
{
\r
ip->traffic += traffic;
\r
}
\r
else
\r
{
\r
- if(
traffic
> ip->traffic)
\r
+ if(
ip->upload
> ip->traffic)
\r
{
\r
{
\r
- ip->traffic =
traffic;
\r
+ ip->traffic =
ip->upload;
\r
}
\r
}
\r
}
\r
}
\r
}
\r
}
\r
This page took
0.175287 seconds
and
4
git commands to generate.