- char *buf;\r
- duplicate(ip->addr,buf);\r
- buf=index_id(ip->addr,32-idxtable_bitmask1); \r
- \r
- string(chain_forward,6+strlen(buf));\r
- strcpy(chain_forward,"forw_");\r
- strcat(chain_forward,buf);\r
-\r
- string(chain_postrouting,6+strlen(buf));\r
- strcpy(chain_postrouting,"post_");\r
- strcat(chain_postrouting,buf);\r
- \r
- free(buf);\r
- }\r
- else\r
- {\r
- chain_forward="FORWARD";\r
- chain_postrouting="POSTROUTING";\r
- }\r
-\r
-#ifdef DEBUG\r
- printf("%-22s %-16s %04d ", ip->name, ip->addr, ip->mark); \r
-#endif\r
-\r
- /* -------------------------------------------------------- mark download */\r
- \r
- sprintf(str, "-A %s -d %s/32 -o %s -j %s%d",\r
- chain_postrouting, ip->addr, lan, mark_iptables, ip->mark);\r
- /*sprintf(str,"-A %s -d %s/32 -o %s -j MARK --set-mark %d",chain_postrouting,ip->addr,lan,ip->mark);*/\r
- /* -m limit --limit 1/s */ \r
- save_line(str);\r
-\r
- if(qos_proxy)\r
- {\r
- sprintf(str, "-A %s -s %s -p tcp --sport %d -d %s/32 -o %s -j %s%d",\r
- chain_postrouting, proxy_ip, proxy_port, ip->addr, lan, mark_iptables, ip->mark);\r
- /*sprintf(str,"-A %s -s %s -p tcp --sport %d -d %s/32 -o %s -j MARK --set-mark %d",chain_postrouting,proxy_ip,proxy_port,ip->addr,lan,ip->mark);*/\r
- save_line(str);\r
- }\r
-\r
- sprintf(str, "-A %s -d %s/32 -o %s -j ACCEPT",\r
- chain_postrouting, ip->addr, lan);\r
- save_line(str);\r
-\r
- /* -------------------------------------------------------- mark upload */\r
- sprintf(str, "-A %s -s %s/32 -o %s -j %s%d", \r
- chain_forward, ip->addr, wan, mark_iptables, ip->mark);\r
- /* sprintf(str,"-A %s -s %s/32 -o %s -j MARK --set-mark %d",chain_forward,ip->addr,wan,ip->mark);*/\r
- save_line(str);\r
-\r
- sprintf(str, "-A %s -s %s/32 -o %s -j ACCEPT",\r
- chain_forward, ip->addr, wan);\r
- save_line(str);\r
-\r
- if(ip->min)\r
- {\r
- /* -------------------------------------------------------- download class */\r
-#ifdef DEBUG\r
- printf("(down: %dk-%dk ", ip->min, ip->max); \r
-#endif\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, lan, ip->group, ip->mark,ip->min,ip->max, burst, ip->prio);\r
- safe_run(str);\r