+ if(start_shaping)\r
+ {\r
+ printf("Reading %s and applying Fair Use Policy rules ... \n", classmap);\r
+ parse(classmap)\r
+ {\r
+ ptr=strchr(_,' ');\r
+ if(ptr)\r
+ {\r
+ *ptr=0;\r
+ ptr++;\r
+ if_exists(ip,ips,eq(ip->addr,_))\r
+ {\r
+ ip->mark=atoi(ptr);\r
+ if(ip->max < ip->desired) /* apply FUP limit immediately.... */\r
+ {\r
+ printf("Applying limit for %-22s %-16s %04d ", ip->name, ip->addr, ip->mark); \r
+ printf("(down: %dk-%dk ", ip->min, ip->max); \r
+ sprintf(str, "%s class change 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
+ printf("up: %dk-%dk)\n", (int)((ip->min/ip->keyword->asymetry_ratio)-ip->keyword->asymetry_fixed), \r
+ (int)((ip->max/ip->keyword->asymetry_ratio)-ip->keyword->asymetry_fixed));\r
+ sprintf(str,"%s class change dev %s parent 1:%d classid 1:%d htb rate %dkbit ceil %dkbit burst %dk prio %d",\r
+ tc, wan, ip->group, ip->mark,\r
+ (int)((ip->min/ip->keyword->asymetry_ratio)-ip->keyword->asymetry_fixed),\r
+ (int)((ip->max/ip->keyword->asymetry_ratio)-ip->keyword->asymetry_fixed), burst, ip->prio);\r
+ safe_run(str);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ fail\r
+ { \r
+ perror(classmap);\r
+ puts("Warning - classmap file not fund, just generating preview ...");\r
+ start_shaping=FALSE;\r
+ }\r
+ done; /* ugly macro end */\r
+ }\r
+ html=preview;\r
+ json=json_preview;\r