should be completely fixed now
[svn/Prometheus-QoS/.git] / prometheus.c
index 62ebbc8b3e2fa8eb94eeea1684096f9f0905d668..503bbac068ccc51ae089671cb4709c7b50f9b319 100644 (file)
@@ -1,5 +1,6 @@
 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
-/* Prometheus QoS - you can "steal fire" from your ISP         *//* "fair-per-IP" quality of service (QoS) utility              */\r
+/* Prometheus QoS - you can "steal fire" from your ISP         */\r
+/* "fair-per-IP" quality of service (QoS) utility              */\r
 /* requires Linux 2.4.x or 2.6.x with HTB support              */\r
 /* Copyright(C) 2005-2013 Michael Polak, Arachne Aerospace     */\r
 /* iptables-restore support Copyright(C) 2007-2008 ludva       */\r
@@ -83,6 +84,7 @@ char             *mark = "MARK";
 char    *mark_iptables = "MARK --set-mark ";\r
 int            dry_run = FALSE; /* preview - use puts() instead of system() */\r
 char *iptablespreamble = "*mangle\n:PREROUTING ACCEPT [0:0]\n:POSTROUTING ACCEPT [0:0]\n:INPUT ACCEPT [0:0]\n:OUTPUT ACCEPT [0:0]\n:FORWARD ACCEPT [0:0]";\r
+char      *ip6preamble = "-A FORWARD -p ipv6-icmp -j ACCEPT\n-A POSTROUTING -p ipv6-icmp -j ACCEPT\n-A FORWARD -s fe80::/10 -j ACCEPT\n-A FORWARD -d ff00::/8 -j ACCEPT\n-A POSTROUTING -s fe80::/10 -j ACCEPT\n-A POSTROUTING -d ff00::/8 -j ACCEPT";\r
 FILE    *iptables_file = NULL;\r
 FILE   *ip6tables_file = NULL;\r
 int      enable_credit = TRUE; /* enable credit file */\r
@@ -137,7 +139,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 +539,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
@@ -562,12 +564,12 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
  /*-----------------------------------------------------------------*/\r
  for_each(ip,ips) if(ip->sharing)\r
  {\r
-  for_each(sharedip,ips) if(eq(sharedip->name,ip->sharing))\r
+  for_each(sharedip,ips) if(eq(sharedip->name, ip->sharing))\r
   {\r
-   sharedip->traffic+=ip->traffic;\r
-   ip->traffic=0;\r
-   ip->mark=sharedip->mark; \r
-   ip->lmsid=sharedip->lmsid;\r
+   sharedip->traffic += ip->traffic;\r
+   ip->traffic = 0;\r
+   ip->mark = sharedip->mark; \r
+   ip->lmsid = sharedip->lmsid;\r
    break;\r
   }\r
   if(not sharedip)\r
@@ -619,6 +621,7 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
      exit(-1);\r
    }\r
    iptables_save_line(iptablespreamble, TRUE);\r
+   iptables_save_line(ip6preamble, TRUE);\r
   }\r
 \r
   run_iptables_restore();\r
@@ -628,8 +631,7 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
   {\r
     perror(cmdlog);\r
     exit(-1);\r
-  }\r
-  \r
+  }  \r
   \r
   sprintf(str,"%s qdisc del dev %s root 2>/dev/null",tc,lan);\r
   safe_run(str);\r
@@ -643,6 +645,7 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
   {\r
    ip6tables_file=fopen(ip6tablesfile,"w");\r
    iptables_save_line(iptablespreamble, TRUE);\r
+   iptables_save_line(ip6preamble, TRUE);\r
   }\r
 \r
   if(qos_free_zone && *qos_free_zone!='0') /* this is currently supported only for IPv4 */\r
@@ -1046,7 +1049,7 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
  printf("%-22s %-15s mark\n","name","ip");\r
 #endif\r
 \r
- printf("Writing %s ... ", classmap); \r
+ printf("Writing %s", classmap); \r
  f = fopen(classmap, "w"); \r
  if(f < 0)\r
  {\r
@@ -1054,7 +1057,7 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
  }\r
 \r
  /*-----------------------------------------------------------------*/\r
- puts("Generating iptables and tc classes ... ");\r
+ printf(" + generating iptables and tc classes ... ");\r
  /*-----------------------------------------------------------------*/\r
 \r
  for_each(ip, ips) if(ip->mark > 0) /* works only for IPv4 so far */\r
This page took 0.124987 seconds and 4 git commands to generate.