-b Boot mode
[svn/Prometheus-QoS/.git] / parseiptables.c
index eca2ced6221c4af51d98be83b5a9c0adf9376c86..36859289e14a9d8a40b70a5346d72095674b194d 100644 (file)
@@ -3,7 +3,7 @@
 #include "cll1-0.6.2.h"\r
 #include "ipstruct.h"\r
 \r
-#define STRLEN 512\r
+#define STRLEN 256\r
 \r
 /* globals declared in prometheus.c */\r
 extern struct IP *ips, *ip, *sharedip;\r
@@ -13,35 +13,40 @@ extern int free_min;
 extern int free_max;\r
 extern int include_upload;\r
 \r
+int traffic_detected = 0;\r
+extern char *iptablesdump;\r
+\r
 /* ===================== traffic analyser - uses iptables  ================ */ \r
 \r
 void get_traffic_statistics(const char *whichiptables, int ipv6)\r
 {\r
  char *str,*cmd;\r
- int downloadflag=0;\r
-\r
- textfile(Pipe,str) *line,*lines=NULL;\r
- string(str,STRLEN);\r
+ int downloadflag = 0;\r
+ FILE *f;\r
  string(cmd,STRLEN);\r
 \r
- sprintf(cmd,"%s -L -v -x -n -t mangle", whichiptables);\r
- shell(cmd);\r
- input(str,STRLEN)\r
- {\r
-  create(line,Pipe);\r
-  line->str=str;\r
-  string(str,STRLEN);\r
-  append(line,lines);\r
- }\r
+ sprintf(cmd, "%s -L -v -x -n -t mangle>%s", whichiptables, iptablesdump);\r
+ /*-----------------------------------------------------------------*/\r
+ printf("Running %s ...\n", cmd);\r
+ /*-----------------------------------------------------------------*/\r
+ system(cmd);\r
+ /*-----------------------------------------------------------------*/\r
+ printf("Processing %s ...\n", iptablesdump);\r
+ /*-----------------------------------------------------------------*/\r
+ f = fopen(iptablesdump,"r");\r
+ if(!f)\r
+  perror(iptablesdump);\r
 \r
for_each(line,lines)\r
while(!feof(f))\r
  {\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
-  valid_columns(ptr, line->str, ' ', col)\r
+  string(str, STRLEN);\r
+  fgets(str, STRLEN, f);\r
+  valid_columns(ptr, str, ' ', col)\r
   if(valid) switch(col)\r
   { \r
    case 1: if(eq(ptr,"Chain"))\r
@@ -150,6 +155,7 @@ void get_traffic_statistics(const char *whichiptables, int ipv6)
     printf("(down) ");\r
    }\r
    \r
+   traffic_detected = 1;\r
    printf("%s %Lu MB (%ld pkts)\n", ipaddr, traffic, pkts);\r
 \r
    if_exists(ip, ips, eqi(ip->addr,ipaddr)); \r
@@ -178,6 +184,7 @@ void get_traffic_statistics(const char *whichiptables, int ipv6)
     else\r
     {*/\r
     ip->traffic += traffic;\r
+    ip->traffic_down += traffic;\r
 /*    } */\r
     ip->direct += traffic; /*-ip->proxy;*/\r
     ip->pktsdown += pkts;\r
@@ -185,6 +192,7 @@ void get_traffic_statistics(const char *whichiptables, int ipv6)
    else\r
    {\r
     ip->upload += traffic;\r
+    ip->traffic_up += traffic;\r
     ip->pktsup += pkts;\r
     if(include_upload)\r
     {\r
This page took 0.135177 seconds and 4 git commands to generate.