#include "cll1-0.6.2.h"\r
#include "ipstruct.h"\r
\r
-const char *version = "0.8.3-j";\r
+const char *version = "0.8.5-a";\r
\r
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
/* Versions: 0.8.3 is development release, 0.8.4 will be "stable" */\r
\r
char *config = "/etc/prometheus/prometheus.conf"; /* main configuration file */\r
char *hosts = "/etc/prometheus/hosts"; /* per-IP bandwidth definition file */\r
+char *macrosfile = "/etc/prometheus/prometheus.macros"; /* rewrite rules for most common tariffs */\r
char *iptablesfile = "/var/spool/prometheus.iptables"; /* temporary file for iptables-restore*/\r
char *ip6tablesfile = "/var/spool/prometheus.ip6tables"; /* temporary file for ip6tables-restore*/\r
char *credit = "/var/lib/misc/prometheus.credit"; /* credit log file */\r
\r
struct IP *ips = NULL, *networks = NULL, *ip, *sharedip;\r
struct Group *groups = NULL, *group;\r
-struct Keyword *keyword, *defaultkeyword=NULL, *keywords=NULL;\r
+struct Keyword *keyword, *defaultkeyword=NULL, *keywords = NULL;\r
+struct Macro *macro, *macros = NULL;\r
\r
#define FREE_CLASS 3\r
#define OVERLIMIT_CLASS 4\r
keyword->leaf_discipline = "";\r
keyword->allowed_avgmtu = 0;\r
\r
- push(keyword,keywords);\r
+ push(keyword, keywords);\r
if(!defaultkeyword)\r
{\r
defaultkeyword = keyword;\r
\r
char *parse_datafile_line(char *str)\r
{\r
- char *ptr=strchr(str,' ');\r
+ char *ptr = strchr(str,' ');\r
+ if(!ptr)\r
+ {\r
+ ptr = strchr(str,'\t');\r
+ }\r
\r
if(ptr)\r
{\r
- *ptr=0;\r
+ *ptr = 0;\r
ptr++;\r
+ while(*ptr == ' ' || *ptr == '\t')\r
+ {\r
+ ptr++;\r
+ }\r
return ptr;\r
} \r
else \r
/*-----------------------------------------------------------------*/\r
parse(credit)\r
{\r
- ptr=parse_datafile_line(_);\r
+ ptr = parse_datafile_line(_);\r
if(ptr)\r
{\r
if_exists(ip,ips,eq(ip->addr,_))\r
done; /* ugly macro end */\r
}\r
\r
+ if(enable_credit && just_flush<9)\r
+ {\r
+ /*-----------------------------------------------------------------*/\r
+ printf("Parsing macro definition file %s ...\n", macrosfile);\r
+ /*-----------------------------------------------------------------*/\r
+ parse(macrosfile)\r
+ {\r
+ ptr = parse_datafile_line(_);\r
+ if(ptr)\r
+ {\r
+ create(macro, Macro);\r
+ macro->rewrite_from = _;\r
+ macro->rewrite_to = ptr;\r
+ push(macro, macros);\r
+ printf("%s -> %s\n", macro->rewrite_from, macro->rewrite_to);\r
+ }\r
+ }\r
+ done; /* ugly macro end */\r
+ }\r
+\r
if(!just_preview)\r
{\r
/*-----------------------------------------------------------------*/\r