X-Git-Url: https://git.harvie.cz/?a=blobdiff_plain;f=prometheus.c;h=40b886528d77a3d72fe97684faf1df1f7bdf9e2c;hb=b6fb849acbdcca50df04223a6f31336cc101de2e;hp=2aec7ffa0a75f720eaae440144edbe72f8f23cbc;hpb=6b39193dd108e6cf16ebcbed92cf698d367dca46;p=svn%2FPrometheus-QoS%2F.git
diff --git a/prometheus.c b/prometheus.c
index 2aec7ff..40b8865 100644
--- a/prometheus.c
+++ b/prometheus.c
@@ -7,7 +7,7 @@
/* Credit: CZFree.Net,Martin Devera,Netdave,Aquarius,Gandalf */
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
-/* Modified by: xChaos, 20121007
+/* Modified by: xChaos, 20121011
ludva, 20080415
Prometheus QoS is free software; you can redistribute it and/or
@@ -41,6 +41,29 @@ const char *version = "0.8.3-g";
const char *stats_html_signature = "Statistics generated by Prometheus QoS version %s
GPL+Copyright(C)2005-2012 Michael Polak, Arachne Labs\n";
+/* ======= Help screen is hopefuly self-documenting part of code :-) ======= */
+
+void help(void)
+{
+ puts("Command line switches:\n\
+\n\
+-d Dry run (preview tc and iptables commands on stdout)\n\
+-r Run (reset all statistics and start shaping - daily usage)\n\
+-p just generate Preview of data transfer statistics and exit (after -r)\n\
+-s start Shaping FUP limits (keeps data transfer stat like -p) (after -r)\n\
+-n run Now (like -r delay - overrides qos-free-delay keyword, after boot)\n\
+-f just Flush iptables and tc classes and exit (stop shaping, no QiS)\n\
+-9 emergency iptables flush (like -f, but dumps data transfer statistics)\n\
+\n\
+-c filename force alternative /etc/prometheus/prometheus.conf filename\n\
+-h filename force alternative /etc/hosts filename (overrides hosts keyword)\n\
+-l Mmm YYYY generate HTML summary of Logged traffic (Mmm=Jan-Dec) (and exit)\n\
+-m generate HTML summary of traffic for yesterday's Month (and exit)\n\
+-y generate HTML summary of traffic for yesterday's Year (and exit)\n\
+-? --help show this help scree (and exit)\n\
+-v --version show Version number of this utility (and exit)\n");
+}
+
/* ======= All path names are defined here (for RPM patch) ======= */
const char *tc = "/sbin/tc"; /* requires tc with HTB support */
@@ -68,50 +91,7 @@ char *jquery_url = "http://code.jquery.com/jquery-latest.js";
char *lms_url = "/lms/?m=customerinfo&id=";
int use_jquery_popups = 1;
int row_odd_even = 0; /*
*/
-
-
-void parse_ip_log(int argc, char **argv);
-/* implementid in parselog.c */
-
-void parse_hosts(char *hosts);
-/* implementid in parsehosts.c */
-
-const char *tr_odd_even(void)
-{
- row_odd_even = 1 - row_odd_even;
- if(row_odd_even)
- {
- return "
\n";
- }
- else
- {
- return "
\n";
- }
-}
-
-/* ======= Help screen is hopefuly self-documenting part of code :-) ======= */
-
-void help(void)
-{
- puts("Command line switches:\n\
-\n\
--d Dry run (preview tc and iptables commands on stdout)\n\
--r Run (reset all statistics and start shaping - daily usage)\n\
--p just generate Preview of data transfer statistics and exit (after -r)\n\
--s start Shaping FUP limits (keeps data transfer stat like -p) (after -r)\n\
--n run Now (like -r delay - overrides qos-free-delay keyword, after boot)\n\
--f just Flush iptables and tc classes and exit (stop shaping, no QiS)\n\
--9 emergency iptables flush (like -f, but dumps data transfer statistics)\n\
-\n\
--c filename force alternative /etc/prometheus/prometheus.conf filename\n\
--h filename force alternative /etc/hosts filename (overrides hosts keyword)\n\
--l Mmm YYYY generate HTML summary of Logged traffic (Mmm=Jan-Dec) (and exit)\n\
--m generate HTML summary of traffic for yesterday's Month (and exit)\n\
--y generate HTML summary of traffic for yesterday's Year (and exit)\n\
--? --help show this help scree (and exit)\n\
--v --version show Version number of this utility (and exit)\n");
-}
-
+
/* === Configuraration file values defaults - stored in global variables ==== */
int filter_type = 1; /*1 mark, 2 classify*/
@@ -168,6 +148,25 @@ struct IP *ips = NULL, *ip, *sharedip;
struct Group *groups = NULL, *group;
struct Keyword *keyword, *defaultkeyword=NULL, *keywords=NULL;
+void parse_ip_log(int argc, char **argv);
+/* implementid in parselog.c */
+
+void parse_hosts(char *hosts);
+/* implementid in parsehosts.c */
+
+const char *tr_odd_even(void)
+{
+ row_odd_even = 1 - row_odd_even;
+ if(row_odd_even)
+ {
+ return "
\n";
+ }
+ else
+ {
+ return "
\n";
+ }
+}
+
/* ==== This is C<<1 stuff - learn C<<1 first! https://dev.arachne.cz/svn/cll1h ==== */
struct Index
@@ -181,35 +180,12 @@ struct Index
} *idxs=NULL, *idx, *metaindex;
-/* Damned, this must be object oriented! This looks almost like constructor ;-) */
-
-void TheIP(void)
-{
- create(ip,IP);
- ip->name = "";
- ip->addr = "";
- ip->sharing = NULL;
- ip->prio = highest_priority+1;
- ip->lmsid = -1;
- ip->fixedprio = \
- ip->mark = \
- ip->min = \
- ip->max = \
- ip->desired = \
- ip->credit = \
- ip->upload = \
- ip->proxy = \
- ip->direct = \
- ip->traffic = \
- ip->pktsup = \
- ip->pktsdown = 0;
- ip->keyword = keywords;
- push(ip,ips);
-}
+void TheIP(void);
+/* function implemented in parsehosts.c */
/* ====== iptables indexes are used to reduce complexity to log8(N) ===== */
-char *very_ugly_ipv4_code(char *inip,int bitmask,int format_as_chainname)
+char *very_ugly_ipv4_code(char *inip, int bitmask, int format_as_chainname)
{
/* warning: this function was debugged only for bitmask values 20,24,28 !!!*/
int dot=0, n;
@@ -297,7 +273,7 @@ char *very_ugly_ipv4_code(char *inip,int bitmask,int format_as_chainname)
return outip;
}
-char *hash_id(char *ip,int bitmask)
+char *index_id(char *ip,int bitmask)
{
return very_ugly_ipv4_code(ip,bitmask,1);
}
@@ -912,7 +888,7 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
for_each(ip,ips) if(ip->addr && *(ip->addr) && !eq(ip->addr,"0.0.0.0/0"))
{
- buf=hash_id(ip->addr,bitmask);
+ buf=index_id(ip->addr,bitmask);
if_exists(idx,idxs,eq(idx->id,buf))
{
idx->children++;
@@ -938,7 +914,7 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
for_each(idx,idxs) if(idx->parent == NULL)
{
- buf=hash_id(idx->addr,bitmask);
+ buf=index_id(idx->addr,bitmask);
if_exists(metaindex,idxs,eq(metaindex->id,buf))
{
metaindex->children++;
@@ -1652,7 +1628,7 @@ Credit: CZFree.Net, Martin Devera, Netdave, Aquarius, Gandalf\n\n",version);
{
char *buf;
duplicate(ip->addr,buf);
- buf=hash_id(ip->addr,32-idxtable_bitmask1);
+ buf=index_id(ip->addr,32-idxtable_bitmask1);
string(chain_forward,6+strlen(buf));
strcpy(chain_forward,"forw_");