boha jeho...
authorxchaos <xchaos@251d49ef-1d17-4917-a970-b30cf55b089b>
Thu, 24 Jan 2013 09:41:39 +0000 (09:41 +0000)
committerxchaos <xchaos@251d49ef-1d17-4917-a970-b30cf55b089b>
Thu, 24 Jan 2013 09:41:39 +0000 (09:41 +0000)
git-svn-id: https://dev.arachne.cz/repos/prometheus/trunk@212 251d49ef-1d17-4917-a970-b30cf55b089b

cll1-0.6.2.h
parseiptables.c
prometheus.c

index 6b2214b..d3456ce 100644 (file)
@@ -74,6 +74,7 @@
 /* String macros & sequences, updated 2004-04-19 by xCh. */
 
 #define eq(A,B) ((A) && (B) && !strcmp(A,B))
+#define eqi(A,B) ((A) && (B) && !strcmpi(A,B))
 #define strcmpi(A,B) strcasecmp(A,B)
 #define strlwr(A) {char *_S=A; while(_&&*_S){*_S=tolower(*_S);_S++;}}
 #define strupr(A) {char *_S=A; while(_&&*_S){*_S=toupper(*_S);_S++;}}
index e736324..cc2daac 100644 (file)
@@ -15,7 +15,7 @@ extern int include_upload;
 \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
@@ -86,36 +86,64 @@ void get_traffic_statistics(const char *whichiptables)
            {\r
             accept = eq(ptr,mark);\r
            }\r
-            /*if(filter_type==1) accept=eq(ptr,"MARK"); else accept=eq(ptr,"CLASSIFY");*/\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
+            else\r
             {\r
-             proxyflag = 1;\r
+             ipaddr = ptr;\r
             }\r
            }\r
-           else\r
+           break;\r
+   case 9: if(!ipv6 && downloadflag)\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
+   /* IPv6 subnet - /64 */\r
+   char *isipv6 = strstr(ipaddr,"/64");\r
+   if(ipv6 && isipv6)\r
+   {\r
+    *isipv6=0;\r
+    printf("(IPv6) ");   \r
+   }\r
+   \r
    if(proxyflag)\r
    {\r
     printf("(proxy) ");\r
    }\r
    else if(!downloadflag)\r
    {\r
-    printf("(upload) ");\r
+    printf("(up) ");\r
    }\r
+   else\r
+   {\r
+    printf("(down) ");\r
+   }\r
+   \r
    printf("IP %s: %Lu MB (%ld pkts)\n", ipaddr, traffic, pkts);\r
 \r
-   if_exists(ip,ips,eq(ip->addr,ipaddr)); \r
+   if_exists(ip, ips, eqi(ip->addr,ipaddr)); \r
    else \r
    {\r
     TheIP(ipaddr);\r
index 62ebbc8..48384a6 100644 (file)
@@ -137,7 +137,7 @@ struct Keyword *keyword, *defaultkeyword=NULL, *keywords=NULL;
 void help(void);\r
 /* implemented in help.c */
 \r
-void get_traffic_statistics(const char *whichiptables);\r
+void get_traffic_statistics(const char *whichiptables, int ipv6);\r
 /* implemented in parseiptables.c */\r
 \r
 void parse_ip_log(int argc, char **argv);\r
@@ -537,13 +537,13 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
   /*-----------------------------------------------------------------*/\r
   puts("Parsing iptables verbose output ...");\r
   /*-----------------------------------------------------------------*/\r
-  get_traffic_statistics(iptables);\r
+  get_traffic_statistics(iptables, FALSE);\r
   if(ip6prefix)\r
   {\r
    /*-----------------------------------------------------------------*/\r
    puts("Parsing ip6tables verbose output ...");\r
    /*-----------------------------------------------------------------*/  \r
-   get_traffic_statistics(ip6tables);\r
+   get_traffic_statistics(ip6tables, TRUE);\r
   }\r
  }\r
 \r
This page took 0.207588 seconds and 4 git commands to generate.