GIT.Harvie.CZ
/
svn
/
Prometheus-QoS
/
.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
there seems to be hardcoded maximum limit 10000 packets/sec in iptables
[svn/Prometheus-QoS/.git]
/
prometheus.c
diff --git
a/prometheus.c
b/prometheus.c
index 3dfcc1a7ed8da2d7222cd64a1ef3d8a025a669dd..279da9b75d28b4fd245b28ed4e6165eaae86fc91 100644
(file)
--- a/
prometheus.c
+++ b/
prometheus.c
@@
-7,7
+7,7
@@
/* Credit: CZFree.Net,Martin Devera,Netdave,Aquarius,Gandalf */
\r
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
\r
\r
/* Credit: CZFree.Net,Martin Devera,Netdave,Aquarius,Gandalf */
\r
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
\r
\r
-/* Modified by: xChaos, 20131
029
\r
+/* Modified by: xChaos, 20131
118
\r
ludva, 20080415
\r
\r
Prometheus QoS is free software; you can redistribute it and/or
\r
ludva, 20080415
\r
\r
Prometheus QoS is free software; you can redistribute it and/or
\r
@@
-29,7
+29,7
@@
#include "cll1-0.6.2.h"
\r
#include "ipstruct.h"
\r
\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
\r
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
\r
/* Versions: 0.8.3 is development release, 0.8.4 will be "stable" */
\r
@@
-118,10
+118,6
@@
int magic_treshold = 8; /* reduce ceil by X*magic_treshhold kbps (hard shapi
int keywordcount = 0;
\r
int class_count = 0;
\r
int ip_count = 0;
\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
FILE *log_file = NULL;
\r
char *kwd = "via-prometheus"; /* /etc/hosts comment, eg. #qos-64-128 */
\r
\r
@@
-469,7
+465,7
@@
program
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
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
int parent = 1;
\r
int just_networks = FALSE;
\r
@@
-563,7
+559,8
@@
Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
/*-----------------------------------------------------------------*/
\r
/* cll1.h - let's allocate brand new character buffer... */
\r
/*-----------------------------------------------------------------*/
\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
\r
/*-----------------------------------------------------------------*/
\r
printf("Parsing class defintion file %s ...\n", hosts);
\r
@@
-586,6
+583,7
@@
Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
ip->traffic = 0;
\r
ip->mark = sharedip->mark;
\r
ip->lmsid = sharedip->lmsid;
\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
break;
\r
}
\r
if(not sharedip)
\r
@@
-1129,26
+1127,36
@@
Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
chain_postrouting="POSTROUTING";
\r
}
\r
\r
chain_postrouting="POSTROUTING";
\r
}
\r
\r
+ /* packet limits - this will be optional in future, hardcoded for now */
\r
+ if(ip->pps_limit)
\r
+ {
\r
+ sprintf(limit_pkts, "-m limit --limit %d/s ", ip->pps_limit);
\r
+ }
\r
+ else
\r
+ {
\r
+ *limit_pkts = 0;
\r
+ }
\r
+
\r
#ifdef DEBUG
\r
#ifdef DEBUG
\r
- printf("%-22s %-16s %04d
", ip->name, ip->addr, ip->mark
);
\r
+ printf("%-22s %-16s %04d
%d/s\n", ip->name, ip->addr, ip->mark, ip->pps_limit
);
\r
#endif
\r
\r
#endif
\r
\r
- /* -------------------------------------------------------- mark download */
\r
-
\r
+ /* -------------------------------------------------------- mark download */
\r
sprintf(str, "-A %s -d %s/%d -o %s -j %s%d",
\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
- /* -m limit --limit 1/s */
\r
+ chain_postrouting, ip->addr, 32*(1+ip->v6),
\r
+ lan, mark_iptables, ip->mark);
\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
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
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
+ 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
iptables_save_line(str, ip->v6);
\r
\r
/* -------------------------------------------------------- mark upload */
\r
@@
-1156,8
+1164,8
@@
Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
chain_forward, ip->addr, 32*(1+ip->v6), wan, mark_iptables, ip->mark);
\r
iptables_save_line(str, ip->v6);
\r
\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
iptables_save_line(str, ip->v6);
\r
\r
if(ip->min)
\r
@@
-1168,7
+1176,7
@@
Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
#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
#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
safe_run(str);
\r
\r
if(strcmpi(ip->keyword->leaf_discipline, "none"))
\r
This page took
0.132214 seconds
and
4
git commands to generate.