IPv6 iptables exceptions (for OSPF)
[svn/Prometheus-QoS/.git] / prometheus.c
index 62ebbc8b3e2fa8eb94eeea1684096f9f0905d668..fb8fa4a55e47485a6f417d9876d882697fce7ad5 100644 (file)
@@ -83,6 +83,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 +138,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 +538,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
@@ -619,6 +620,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
@@ -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.101649 seconds and 4 git commands to generate.