/* Credit: CZFree.Net,Martin Devera,Netdave,Aquarius,Gandalf */\r
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
\r
-/* Modified by: xChaos, 20131029\r
+/* Modified by: xChaos, 20131118\r
ludva, 20080415\r
\r
Prometheus QoS is free software; you can redistribute it and/or\r
#include "cll1-0.6.2.h"\r
#include "ipstruct.h"\r
\r
-const char *version = "0.8.3-i";\r
+const char *version = "0.8.3-j";\r
\r
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
/* Versions: 0.8.3 is development release, 0.8.4 will be "stable" */\r
int keywordcount = 0;\r
int class_count = 0;\r
int ip_count = 0;\r
-/* not yet implemented:\r
-int fixed_packets = 0; maximum number of pps per IP address (not class!) \r
-int packet_limit = 5; maximum number of pps to htn CEIL, not rate !!! \r
-*/\r
FILE *log_file = NULL;\r
char *kwd = "via-prometheus"; /* /etc/hosts comment, eg. #qos-64-128 */\r
\r
int i=0; /* just plain old Fortran style integer :-) */\r
FILE *f=NULL; /* everything is just stream of bytes... */\r
char *str, *ptr, *d; /* LET A$=B$ :-) */\r
- char *substring;\r
+ char *substring, *limit_pkts;\r
\r
int parent = 1;\r
int just_networks = FALSE; \r
/*-----------------------------------------------------------------*/\r
/* cll1.h - let's allocate brand new character buffer... */\r
/*-----------------------------------------------------------------*/\r
- string(str,STRLEN); \r
+ string(str, STRLEN); \r
+ string(limit_pkts, STRLEN);\r
\r
/*-----------------------------------------------------------------*/\r
printf("Parsing class defintion file %s ...\n", hosts);\r
ip->traffic = 0;\r
ip->mark = sharedip->mark; \r
ip->lmsid = sharedip->lmsid;\r
+ ip->pps_limit = sharedip->pps_limit; /* no other way to do this */\r
break;\r
}\r
if(not sharedip)\r
/* -------------------------------------------------------- mark download */\r
\r
sprintf(str, "-A %s -d %s/%d -o %s -j %s%d",\r
- chain_postrouting, ip->addr, 32*(1+ip->v6), lan, mark_iptables, ip->mark);\r
+ chain_postrouting, ip->addr, 32*(1+ip->v6),\r
+ lan, mark_iptables, ip->mark);\r
/* -m limit --limit 1/s */ \r
iptables_save_line(str, ip->v6);\r
\r
if(qos_proxy)\r
{\r
sprintf(str, "-A %s -s %s -p tcp --sport %d -d %s/%d -o %s -j %s%d",\r
- chain_postrouting, proxy_ip, proxy_port, ip->addr, 32*(1+ip->v6), lan, mark_iptables, ip->mark);\r
+ chain_postrouting, proxy_ip, proxy_port, ip->addr,\r
+ 32*(1+ip->v6), lan, mark_iptables, ip->mark);\r
iptables_save_line(str, ip->v6);\r
}\r
\r
- sprintf(str, "-A %s -d %s/%d -o %s -j ACCEPT",\r
- chain_postrouting, ip->addr, 32*(1+ip->v6), lan);\r
+ /* this will be optional in future - hardcoded for now*/\r
+ sprintf(limit_pkts,"-m limit --limit %d/s ", ip->pps_limit);\r
+\r
+ sprintf(str, "-A %s -d %s/%d -o %s %s-j ACCEPT",\r
+ chain_postrouting, ip->addr, 32*(1+ip->v6), lan, limit_pkts);\r
iptables_save_line(str, ip->v6);\r
\r
/* -------------------------------------------------------- mark upload */\r
chain_forward, ip->addr, 32*(1+ip->v6), wan, mark_iptables, ip->mark);\r
iptables_save_line(str, ip->v6);\r
\r
- sprintf(str, "-A %s -s %s/%d -o %s -j ACCEPT",\r
- chain_forward, ip->addr, 32*(1+ip->v6), wan);\r
+ sprintf(str, "-A %s -s %s/%d -o %s %s-j ACCEPT",\r
+ chain_forward, ip->addr, 32*(1+ip->v6), wan, limit_pkts);\r
iptables_save_line(str, ip->v6);\r
\r
if(ip->min)\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
+ tc, lan, ip->group, ip->mark, ip->min, ip->max, burst, ip->prio);\r
safe_run(str);\r
\r
if(strcmpi(ip->keyword->leaf_discipline, "none"))\r