final bug fix - works now
[svn/Prometheus-QoS/.git] / prometheus.c
index d7dd2bef03684acaf48cac2c8a1f3936905eea18..a41ba723a92e71e37ba4a7cfbb1725036645737f 100644 (file)
@@ -558,7 +558,7 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
    interface->chain = "POSTROUTING";\r
    interface->idxprefix = "post";\r
    push(interface, interfaces);\r
-   printf("Upstream interface %s: medium %s capacity %ld kbps\n", interface->name, medium, interface->speed);\r
+   printf("Downstream interface %s: medium %s capacity %ld kbps\n", interface->name, medium, interface->speed);\r
   }\r
  }\r
  done; /* ugly macro end */\r
@@ -747,7 +747,7 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
   {\r
    for_each(interface, interfaces)\r
    {\r
-    sprintf(str,"-A %s -s %s -o %s -j ACCEPT", interface->chain, qos_free_zone, interface->name);\r
+    sprintf(str,"-A %s -%c %s -o %s -j ACCEPT", interface->chain, (interface->is_upstream?'d':'s'), qos_free_zone, interface->name);\r
     iptables_save_line(str, FALSE);\r
    }\r
   }\r
@@ -868,10 +868,12 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
       buf = interface->chain;\r
      }\r
 \r
-     sprintf(str,"-A %s -d %s/%d -o %s -j %s_%s", buf, subnet, idx->bitmask, interface->name, interface->idxprefix, idx->id);\r
+     sprintf(str, "-A %s -%c %s/%d -o %s -j %s_%s", \r
+                  buf, (interface->is_upstream?'s':'d'), subnet, idx->bitmask, interface->name, interface->idxprefix, idx->id);\r
      iptables_save_line(str, idx->ipv6);\r
 \r
-     sprintf(str,"-A %s -d %s/%d -o %s -j %s_common", buf, subnet, idx->bitmask, interface->name, interface->idxprefix);\r
+     sprintf(str, "-A %s -%c %s/%d -o %s -j %s_common",\r
+                  buf, (interface->is_upstream?'s':'d'), subnet, idx->bitmask, interface->name, interface->idxprefix);\r
      iptables_save_line(str, idx->ipv6);\r
     }\r
    }\r
@@ -1257,24 +1259,29 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
  #endif\r
 \r
    /* ------------------------------------------------ iptables classify */\r
-   sprintf(str, "-A %s -d %s/%d -o %s -j %s%d",\r
-                chain, ip->addr, ip->mask,\r
+   sprintf(str, "-A %s -%c %s/%d -o %s -j %s%d",\r
+                chain, (interface->is_upstream?'s':'d'), ip->addr, ip->mask,\r
                 interface->name, mark_iptables, ip->mark);\r
    iptables_save_line(str, ip->v6);\r
 \r
-   sprintf(str, "-A %s -d %s/%d -o %s %s-j ACCEPT",\r
-                chain, ip->addr, ip->mask, interface->name, limit_pkts);\r
-   iptables_save_line(str, ip->v6);\r
-\r
-   /* classify overlimit packets to separate overlimit class */\r
-   sprintf(str, "-A %s -d %s/%d -o %s -j %s%d",\r
-                chain, ip->addr, ip->mask,\r
-                interface->name, mark_iptables, OVERLIMIT_CLASS);\r
+   sprintf(str, "-A %s -%c %s/%d -o %s %s-j ACCEPT",\r
+                chain, (interface->is_upstream?'s':'d'),ip->addr, ip->mask,\r
+                interface->name, limit_pkts);\r
    iptables_save_line(str, ip->v6);\r
 \r
-   sprintf(str, "-A %s -d %s/%d -o %s -j ACCEPT",\r
-                chain, ip->addr, ip->mask, interface->name);\r
-   iptables_save_line(str, ip->v6);\r
+   if(limit_pkts)\r
+   {\r
+    /* classify overlimit packets to separate overlimit class */\r
+    sprintf(str, "-A %s -%c %s/%d -o %s -j %s%d",\r
+                 chain, (interface->is_upstream?'s':'d'), ip->addr, ip->mask,\r
+                 interface->name, mark_iptables, OVERLIMIT_CLASS);\r
+    iptables_save_line(str, ip->v6);\r
+\r
+    sprintf(str, "-A %s -%c %s/%d -o %s -j ACCEPT",\r
+                 chain, (interface->is_upstream?'s':'d'), ip->addr, ip->mask,\r
+                 interface->name);\r
+    iptables_save_line(str, ip->v6);\r
+   }\r
 \r
    if(ip->min)\r
    {\r
@@ -1369,14 +1376,13 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
    /* tc handle 1 fw flowid */\r
    sprintf(str,"%s filter add dev %s parent 1:0 protocol ip handle %d fw flowid 1:%d", tc, interface->name, FREE_CLASS, FREE_CLASS);\r
    safe_run(str);\r
-\r
-   /*-----------------------------------------------------------------*/\r
-   puts("Generating bandwith class for overlimit packets...");\r
-   /*-----------------------------------------------------------------*/\r
-   sprintf(str, "%s class add dev %s parent 1:%d classid 1:%d htb rate %dkbit ceil %dkbit burst %dk prio %d",\r
-                tc, interface->name, parent, OVERLIMIT_CLASS, overlimit_min, overlimit_max, burst, lowest_priority);\r
-   safe_run(str);\r
   }\r
+  /*-----------------------------------------------------------------*/\r
+  puts("Generating bandwith class for overlimit packets...");\r
+  /*-----------------------------------------------------------------*/\r
+  sprintf(str, "%s class add dev %s parent 1:%d classid 1:%d htb rate %dkbit ceil %dkbit burst %dk prio %d",\r
+               tc, interface->name, parent, OVERLIMIT_CLASS, overlimit_min, overlimit_max, burst, lowest_priority);\r
+  safe_run(str);\r
  } \r
  printf("Total IP count: %d\n", i);\r
  run_iptables_restore();\r
This page took 0.159295 seconds and 4 git commands to generate.